This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Write data to control point characteristic failed

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

Parents Reply Children
Related