mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-12-22 10:30:13 +00:00
Fixed bug in cc26xx-cc13xx rf-core. When running BLE in conjunction with ContikiMAC, oscillators were modified from an interrupt state causing occasional bus faults and infinite loops. We now check if BLE is active prior to modifiying the oscillators to avoid these conditions.
This commit is contained in:
parent
c9baf0cb57
commit
5d5544151f
@ -1048,12 +1048,6 @@ pending_packet(void)
|
||||
static int
|
||||
on(void)
|
||||
{
|
||||
/*
|
||||
* Request the HF XOSC as the source for the HF clock. Needed before we can
|
||||
* use the FS. This will only request, it will _not_ perform the switch.
|
||||
*/
|
||||
oscillators_request_hf_xosc();
|
||||
|
||||
/*
|
||||
* If we are in the middle of a BLE operation, we got called by ContikiMAC
|
||||
* from within an interrupt context. Abort, but pretend everything is OK.
|
||||
@ -1063,6 +1057,12 @@ on(void)
|
||||
return RF_CORE_CMD_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Request the HF XOSC as the source for the HF clock. Needed before we can
|
||||
* use the FS. This will only request, it will _not_ perform the switch.
|
||||
*/
|
||||
oscillators_request_hf_xosc();
|
||||
|
||||
if(rf_is_on()) {
|
||||
PRINTF("on: We were on. PD=%u, RX=0x%04x \n", rf_core_is_accessible(),
|
||||
RF_RADIO_OP_GET_STATUS(cmd_ieee_rx_buf));
|
||||
|
@ -893,12 +893,6 @@ pending_packet(void)
|
||||
static int
|
||||
on(void)
|
||||
{
|
||||
/*
|
||||
* Request the HF XOSC as the source for the HF clock. Needed before we can
|
||||
* use the FS. This will only request, it will _not_ perform the switch.
|
||||
*/
|
||||
oscillators_request_hf_xosc();
|
||||
|
||||
/*
|
||||
* If we are in the middle of a BLE operation, we got called by ContikiMAC
|
||||
* from within an interrupt context. Abort, but pretend everything is OK.
|
||||
@ -907,6 +901,12 @@ on(void)
|
||||
return RF_CORE_CMD_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Request the HF XOSC as the source for the HF clock. Needed before we can
|
||||
* use the FS. This will only request, it will _not_ perform the switch.
|
||||
*/
|
||||
oscillators_request_hf_xosc();
|
||||
|
||||
if(rf_is_on()) {
|
||||
PRINTF("on: We were on. PD=%u, RX=0x%04x \n", rf_core_is_accessible(),
|
||||
smartrf_settings_cmd_prop_rx_adv.status);
|
||||
|
Loading…
Reference in New Issue
Block a user