diff --git a/epicardium/ble/ble.c b/epicardium/ble/ble.c index 51c01d34e8c7fa20a2028d48aaca58464f877355..a7f10ea50aa207903bf09dce56e91e117afddd59 100644 --- a/epicardium/ble/ble.c +++ b/epicardium/ble/ble.c @@ -161,12 +161,17 @@ void WsfTimerNotify(void) //printf("WsfTimerNotify\n"); // TODO: Can we do this without waking up the task? // xTimerChangePeriodFromISR exists - notify(); + NVIC->STIR = RSV11_IRQn; } /*************************************************************************************************/ void wsf_ble_signal_event(void) { //printf("wsf_ble_signal_event\n"); + NVIC->STIR = RSV11_IRQn; +} +/*************************************************************************************************/ +void RSV11_IRQHandler(void) +{ notify(); } /*************************************************************************************************/ @@ -243,6 +248,12 @@ void vBleTask(void *pvParameters) */ vTaskDelay(pdMS_TO_TICKS(500)); + /* We are going to execute FreeRTOS functions from callbacks + * coming from this interrupt. Its priority needs to be + * reduced to allow this. */ + NVIC_SetPriority(RSV11_IRQn, 2); + NVIC_EnableIRQ(RSV11_IRQn); + WsfInit(); taskENTER_CRITICAL(); /* Critical section to prevent a loop in iq_capture2 / meas_freq in @@ -253,12 +264,6 @@ void vBleTask(void *pvParameters) BbBleDrvSetTxPower(0); setAddress(); - /* We are going to execute FreeRTOS functions from callbacks - * coming from these interrupts. Their priority needs to be - * reduced to allow this. */ - NVIC_SetPriority(BTLE_SFD_TO_IRQn, 2); - NVIC_SetPriority(BTLE_TX_DONE_IRQn, 2); - NVIC_SetPriority(BTLE_RX_RCVD_IRQn, 2); AppInit(); BleStart(); AttsDynInit(); diff --git a/epicardium/modules/hardware.c b/epicardium/modules/hardware.c index aeb77c3a9f423b7ee54f62b8228b70d575b2ad32..800cb9c65d0334939a319f66af82af895512dd01 100644 --- a/epicardium/modules/hardware.c +++ b/epicardium/modules/hardware.c @@ -194,6 +194,9 @@ int hardware_early_init(void) */ max30001_mutex_init(); + /* Allow user space to trigger interrupts. + * Used for BLE, not sure if needed. */ + SCB->CCR |= SCB_CCR_USERSETMPEND_Msk; return 0; } diff --git a/lib/sdk/Libraries/BTLE/cordio-phy.a b/lib/sdk/Libraries/BTLE/cordio-phy.a index 177273f66c6cf5addcadef8e209e05a03e10f116..8f9f4ab9bb78e988cc25274536c992ca7d59f6d9 100644 Binary files a/lib/sdk/Libraries/BTLE/cordio-phy.a and b/lib/sdk/Libraries/BTLE/cordio-phy.a differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/afe_modulation.o b/lib/sdk/Libraries/BTLE/cordio-phy/afe_modulation.o new file mode 100644 index 0000000000000000000000000000000000000000..bb6020aa519601252503a527f96a35ec23b66306 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/afe_modulation.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/agc_control.o b/lib/sdk/Libraries/BTLE/cordio-phy/agc_control.o new file mode 100644 index 0000000000000000000000000000000000000000..5a0699e80d122a26d9f3581e0bf1b5c9d44a2200 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/agc_control.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_api.o b/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_api.o new file mode 100644 index 0000000000000000000000000000000000000000..e61c4ea743931ad9e05bee9ec0d5cc597e4ad83b Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_api.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_drv.o b/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_drv.o new file mode 100644 index 0000000000000000000000000000000000000000..19f3f7c1fa5460708f8ca1671638855f64d85f01 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/bb_ble_drv.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/bb_drv.o b/lib/sdk/Libraries/BTLE/cordio-phy/bb_drv.o new file mode 100644 index 0000000000000000000000000000000000000000..a4e372b7d8ca58b3725b3691bd886ba875109e33 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/bb_drv.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_ctrl.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_ctrl.o new file mode 100644 index 0000000000000000000000000000000000000000..a39406c0b4ea59b5e13e6a2fe620b91b8eb997f6 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_ctrl.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_init.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_init.o new file mode 100644 index 0000000000000000000000000000000000000000..b8b179454fac839542062bcd0b61b74b12fe683d Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_init.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_trx.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_trx.o new file mode 100644 index 0000000000000000000000000000000000000000..5cdeff7472b951b990d1aa561f840999058f22cd Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_prot_trx.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_rx_setup.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_rx_setup.o new file mode 100644 index 0000000000000000000000000000000000000000..d4625b5b2cf10ba320e068923407d2eeb02feff5 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_rx_setup.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_time_corr.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_time_corr.o new file mode 100644 index 0000000000000000000000000000000000000000..a73c047cc9f04cb76e63d387459bbac865d321f8 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_time_corr.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ble_tx_setup.o b/lib/sdk/Libraries/BTLE/cordio-phy/ble_tx_setup.o new file mode 100644 index 0000000000000000000000000000000000000000..2a3abd71d9c57a1b178479a0f29b9ed1074c8f30 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ble_tx_setup.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/board_config.o b/lib/sdk/Libraries/BTLE/cordio-phy/board_config.o new file mode 100644 index 0000000000000000000000000000000000000000..3f327cb876ce59e88a4b4fe15ba0a9f673f70464 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/board_config.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_cmu.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_cmu.o new file mode 100644 index 0000000000000000000000000000000000000000..eec3132f3622bcc2b94a167c2344bae81e6819f4 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_cmu.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_crypto.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_crypto.o new file mode 100644 index 0000000000000000000000000000000000000000..18161206a90b359ddf3791664e3f7c98dd0d3e8c Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_crypto.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_event.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_event.o new file mode 100644 index 0000000000000000000000000000000000000000..6c0f52b1d460f61fbe755d4879b6ef243ccb0082 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_event.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_intc.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_intc.o new file mode 100644 index 0000000000000000000000000000000000000000..915d5cd98ea803488cbd3a872822a41e7379ae7f Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_intc.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_pmu.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_pmu.o new file mode 100644 index 0000000000000000000000000000000000000000..a6bf33e334957503aa02f969a745cbdab7959638 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_pmu.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_spim.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_spim.o new file mode 100644 index 0000000000000000000000000000000000000000..32ba938d8202baa9ba982f295983b744fa90ef92 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_spim.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/dbb_trx_timers.o b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_trx_timers.o new file mode 100644 index 0000000000000000000000000000000000000000..f4846c2871f888745ec65c466b4b2c0ad1b29709 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/dbb_trx_timers.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ll_dbg_pin.o b/lib/sdk/Libraries/BTLE/cordio-phy/ll_dbg_pin.o new file mode 100644 index 0000000000000000000000000000000000000000..4d30c637fec91d2d07420e761c1208d5e2cef64a Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ll_dbg_pin.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/ll_debug.o b/lib/sdk/Libraries/BTLE/cordio-phy/ll_debug.o new file mode 100644 index 0000000000000000000000000000000000000000..4d30c637fec91d2d07420e761c1208d5e2cef64a Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/ll_debug.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_ble.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_ble.o new file mode 100644 index 0000000000000000000000000000000000000000..3f9df66c071a6387322354c0f5c354a28d39dc9f Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_ble.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_crypto.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_crypto.o new file mode 100644 index 0000000000000000000000000000000000000000..8579a1dabb62e9cbf79b2b916aa5bf67c01ad5e5 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_crypto.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_rx.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_rx.o new file mode 100644 index 0000000000000000000000000000000000000000..47939a6d0056aba0b708fecc7b6641ce4e4346a5 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_rx.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_setup.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_setup.o new file mode 100644 index 0000000000000000000000000000000000000000..64a2bed00892dfa0ac02ef04a735e9615326280b Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_setup.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timer.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timer.o new file mode 100644 index 0000000000000000000000000000000000000000..1a08cfa9e3907921afebca0e341526504bed896b Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timer.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timestamp.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timestamp.o new file mode 100644 index 0000000000000000000000000000000000000000..50bc1aeb821377bc1a0085ee51994e8151f028fe Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_timestamp.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_tx.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_tx.o new file mode 100644 index 0000000000000000000000000000000000000000..ed0f595fae359128f1661f5c45adf28a66f1d45b Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_api_tx.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_int_handlers.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_int_handlers.o new file mode 100644 index 0000000000000000000000000000000000000000..5dc2342a02e89e6cd9183eda3ee2ed5e168b7790 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_int_handlers.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/llc_util.o b/lib/sdk/Libraries/BTLE/cordio-phy/llc_util.o new file mode 100644 index 0000000000000000000000000000000000000000..eea2e238648005037f381ba57a2be640db958ac9 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/llc_util.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/pan2g_config.o b/lib/sdk/Libraries/BTLE/cordio-phy/pan2g_config.o new file mode 100644 index 0000000000000000000000000000000000000000..f3e396fd49bf8fdd8a44c914511a20bad966035b Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/pan2g_config.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/rffe_config.o b/lib/sdk/Libraries/BTLE/cordio-phy/rffe_config.o new file mode 100644 index 0000000000000000000000000000000000000000..f85751ee8404042b32f113a15f6c74d313e918c3 Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/rffe_config.o differ diff --git a/lib/sdk/Libraries/BTLE/cordio-phy/sequencer_ext.o b/lib/sdk/Libraries/BTLE/cordio-phy/sequencer_ext.o new file mode 100644 index 0000000000000000000000000000000000000000..4f4bb9f847ecf2c6fe9c91b337ae04f8146b12dc Binary files /dev/null and b/lib/sdk/Libraries/BTLE/cordio-phy/sequencer_ext.o differ diff --git a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c index 55cb910926fee6db1c93233b664882a11cebe5dc..ce3334e782fdacc1ca7c8bc57a72ab49ac2b1539 100644 --- a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c +++ b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c @@ -217,6 +217,15 @@ void lctrConnStatelessEventHandler(lctrConnCtx_t *pCtx, uint8_t event) { case LCTR_CONN_TERMINATED: LL_TRACE_INFO2("lctrConnStatelessEventHandler: handle=%u, state=%u, event=TERMINATED", LCTR_GET_CONN_HANDLE(pCtx), pCtx->state); + + /* card10 HACK: + * After an encrypted connection is closed, the stack does not instruct the radio to turn off encryption again. + * There is no direct interface to this either. lctrCalcSessionKey() does transfer the flag though. */ + lctrDisableTxDataEnc(pCtx); + lctrDisableRxDataEnc(pCtx); + lctrCalcSessionKey(pCtx); + /*END card10 HACK */ + lctrNotifyHostDisconnectInd(pCtx); lctrFreeConnCtx(pCtx); break;