OTA cannot start with SD v6.1.0, but start without issue with 6.0.0

force ota for testing.
This commit is contained in:
hathach 2018-08-14 18:54:49 +07:00
parent 586679278e
commit ab8d24f935
2 changed files with 16 additions and 3 deletions

View File

@ -704,7 +704,8 @@ static void advertising_start(void)
APP_ERROR_CHECK( sd_ble_gap_adv_set_configure(&_adv_handle, &gap_adv, &m_adv_params) ); APP_ERROR_CHECK( sd_ble_gap_adv_set_configure(&_adv_handle, &gap_adv, &m_adv_params) );
// maximum power for nrf52832, nrf52840 max power is +8 // maximum power for nrf52832, nrf52840 max power is +8
APP_ERROR_CHECK( sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, _adv_handle, 4) ); APP_ERROR_CHECK( sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV, _adv_handle, 4) );
APP_ERROR_CHECK( sd_ble_gap_adv_start(_adv_handle, BLE_CONN_CFG_HIGH_BANDWIDTH) ); // APP_ERROR_CHECK( sd_ble_gap_adv_start(_adv_handle, BLE_CONN_CFG_HIGH_BANDWIDTH) );
APP_ERROR_CHECK( sd_ble_gap_adv_start(_adv_handle, BLE_CONN_CFG_TAG_DEFAULT) );
m_is_advertising = true; m_is_advertising = true;
} }

View File

@ -153,7 +153,7 @@ static uint32_t softdev_init(bool init_softdevice)
// Enable Softdevice // Enable Softdevice
nrf_clock_lf_cfg_t clock_cfg = nrf_clock_lf_cfg_t clock_cfg =
{ {
#ifdef NRF52840_XXAA // TODO use xtal source for feather52832 #if defined(NRF52840_XXAA) // TODO use xtal source for feather52832
.source = NRF_CLOCK_LF_SRC_XTAL, .source = NRF_CLOCK_LF_SRC_XTAL,
.rc_ctiv = 0, .rc_ctiv = 0,
.rc_temp_ctiv = 0, .rc_temp_ctiv = 0,
@ -173,10 +173,12 @@ static uint32_t softdev_init(bool init_softdevice)
extern uint32_t __data_start__[]; // defined in linker extern uint32_t __data_start__[]; // defined in linker
uint32_t ram_start = (uint32_t) __data_start__; uint32_t ram_start = (uint32_t) __data_start__;
#if 0
ble_cfg_t blecfg; ble_cfg_t blecfg;
// Configure the maximum number of connections. // Configure the maximum number of connections.
varclr(&blecfg); varclr(&blecfg);
blecfg.gap_cfg.role_count_cfg.adv_set_count = 1;
blecfg.gap_cfg.role_count_cfg.periph_role_count = 1; blecfg.gap_cfg.role_count_cfg.periph_role_count = 1;
blecfg.gap_cfg.role_count_cfg.central_role_count = 0; blecfg.gap_cfg.role_count_cfg.central_role_count = 0;
blecfg.gap_cfg.role_count_cfg.central_sec_count = 0; blecfg.gap_cfg.role_count_cfg.central_sec_count = 0;
@ -199,11 +201,19 @@ static uint32_t softdev_init(bool init_softdevice)
blecfg.conn_cfg.params.gap_conn_cfg.conn_count = 1; blecfg.conn_cfg.params.gap_conn_cfg.conn_count = 1;
blecfg.conn_cfg.params.gap_conn_cfg.event_length = BLEGAP_EVENT_LENGTH; blecfg.conn_cfg.params.gap_conn_cfg.event_length = BLEGAP_EVENT_LENGTH;
APP_ERROR_CHECK( sd_ble_cfg_set(BLE_CONN_CFG_GAP, &blecfg, ram_start) ); APP_ERROR_CHECK( sd_ble_cfg_set(BLE_CONN_CFG_GAP, &blecfg, ram_start) );
#endif
// Enable BLE stack. // Enable BLE stack.
// Note: Interrupt state (enabled, forwarding) is not work properly if not enable ble // Note: Interrupt state (enabled, forwarding) is not work properly if not enable ble
APP_ERROR_CHECK( sd_ble_enable(&ram_start) ); APP_ERROR_CHECK( sd_ble_enable(&ram_start) );
#if 0
ble_opt_t opt;
varclr(&opt);
opt.common_opt.conn_evt_ext.enable = 1; // enable Data Length Extension
APP_ERROR_CHECK( sd_ble_opt_set(BLE_COMMON_OPT_CONN_EVT_EXT, &opt) );
#endif
return NRF_SUCCESS; return NRF_SUCCESS;
} }
@ -216,6 +226,8 @@ int main(void)
_ota_update = (NRF_POWER->GPREGRET == BOOTLOADER_DFU_OTA_MAGIC) || _ota_update = (NRF_POWER->GPREGRET == BOOTLOADER_DFU_OTA_MAGIC) ||
(NRF_POWER->GPREGRET == BOOTLOADER_DFU_OTA_FULLRESET_MAGIC); (NRF_POWER->GPREGRET == BOOTLOADER_DFU_OTA_FULLRESET_MAGIC);
_ota_update = 1; // force OTA for testing
// start bootloader either serial or ble // start bootloader either serial or ble
bool dfu_start = _ota_update || (NRF_POWER->GPREGRET == BOOTLOADER_DFU_SERIAL_MAGIC); bool dfu_start = _ota_update || (NRF_POWER->GPREGRET == BOOTLOADER_DFU_SERIAL_MAGIC);
@ -342,7 +354,7 @@ void app_error_fault_handler(uint32_t id, uint32_t pc, uint32_t info)
void assert_nrf_callback(uint16_t line_num, const uint8_t * p_file_name) void assert_nrf_callback(uint16_t line_num, const uint8_t * p_file_name)
{ {
app_error_handler(0xDEADBEEF, line_num, p_file_name); app_error_fault_handler(0xDEADBEEF, 0, 0);
} }
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/