Tl; dr
I tried to use OTA DFU with Public BLE Address, but I failed. Is this possible?
Details
Condition
I modified ble_app_hrs example like below (SDK11, pca10028, s130, armgcc).
static void gap_params_init(void)
{
... other codes ...
ble_gap_addr_t addr;
addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
memcpy(addr.addr, (uint8_t*) NRF_FICR->DEVICEADDR, 6);
err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE,
&addr);
APP_ERROR_CHECK(err_code);
}
I checked the status of bootloader by RTT with the iOS nrf toolbox app. I fixed some linker scripts and dfu_types.h to use RTT. No other any codes are modified.
Behaviour
-
When not public BLE address (no modified default one. I don't know which one is actually), the bootloader started direct advertising and connect to the iOS app soon.
-
When public BLE address, the bootloader started direct advertising and does not connect. Then the bootloader repeats direct advertising, then backs to hrs app after timeout.
-
When I tried to cancel the ota dfu from the iOS app while the bootlaoder is retrying, it cannot be canceled correctly and keep searching the device.
Questions
I guess that direct advertising or something does not work public address. Is this guess correct?