Hello,
I'm using a nrf51822 board as a DFU controller to update another board's application, the client board runs the bootloader secure example. When I write data to the control point characteristic, the client board does not generate any event. It should generate a BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event on the client board.
The function write data as fellows:
uint32_t ble_dfu_send_cmd(ble_dfu_target *p_ble_dfu_target, uint8_t *p_string, uint16_t length)
{
VERIFY_PARAM_NOT_NULL(p_ble_dfu_target);
if (length > 20)
{
return NRF_ERROR_INVALID_PARAM;
}
if ( p_ble_dfu_target->conn_handle == BLE_CONN_HANDLE_INVALID)
{
return NRF_ERROR_INVALID_STATE;
}
const ble_gattc_write_params_t write_params = {
.write_op = BLE_GATTS_OP_WRITE_CMD,
.flags = BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE,
.handle = p_ble_dfu_target->handles.dfu_ctrl_pt_handle,
.offset = 0,
.len = length,
.p_value = p_string
};
return sd_ble_gattc_write(p_ble_dfu_target->conn_handle, &write_params);
}
And I use 12.3.0 SDK and s130 softdevice