Learn MoreFAQsTutorials

15 posts / 0 new
Last post
hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
BLE central write

Hello Team Dialog,

I have written a program based on the ble_central project, which finds BLE devices with a special name or MAC address.
If a device is found, I connect to it and then I write into a characteristic.
My problem is:
Every time I try to write to the peripheral, the status is 3 (ATT_ERROR_WRITE_NOT_PERMITTED) at the Write-Completed-Event.
When I try to do it with my mobile phone via nRF Connect App, I can read and write without any problems.
Tried out as a peripheral a Raspberry Pi, my mobile phone and also a Dialog 14680.
Every time the status is 3.

printf("start write\r\n"); uint16_t * mtu = 0; ble_gattc_get_mtu(evt->conn_idx, mtu); printf("MTU Rate: %u\r\n", *mtu); uint8_t test = 0x00; printf("uuid: %s\r\n",format_uuid(&charact[0].uuid)); printf("write\r\n"); ble_gattc_write(evt->conn_idx, charact[0].handle ,false , sizeof(test) ,&test);

charact[0] contains the handler from the Characteristic.

Many thanks for the effort in advance.

Best Regards

HDR

Keywords:
Device:
PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi hdr,

Hi hdr,

Thanks for your question on our public BLE forums. Could you please indicate what is the peripheral? Is another DA14682?

Thanks, PM_Dialog

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
I used a Raspberry Pi with

I used a Raspberry Pi with PyBluez as peripheral, my mobile phone with the above mentioned app and a Dialog 14680. I'm now trying a DA 14682 as I can't access the 14680 because the device is potted.

alex.jian
Offline
Last seen:2 months 3 weeks ago
Joined:2019-08-28 10:14
HI hdr

HI hdr

i have same request

can you tell me what is Write-Completed-Event and how to use??

thanks

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
If I understand this

If I understand this correctly, the Write_Completed_Event is called when I call a ble_gattc_write and it has been executed. In the event I get back the conn_idx, the handler and a status code. In my case the status code is 3, which stands for ATT_ERROR_WRITE_NOT_PERMITTED.

To describe how to use the event, I would refer to the ble_central example project.

alex.jian
Offline
Last seen:2 months 3 weeks ago
Joined:2019-08-28 10:14
HI hdr

HI hdr

i also use ble_gattc_write and i add Write_Completed_Event to app_task.c as below , Is this right when ble_gattc_write Completed??

static const struct ke_msg_handler app_gap_process_handlers[]=
{
{GAPM_DEVICE_READY_IND, (ke_msg_func_t)gapm_device_ready_ind_handler},
{GAPM_CMP_EVT, (ke_msg_func_t)gapm_cmp_evt_handler},
{GAPC_CMP_EVT, (ke_msg_func_t)gapc_cmp_evt_handler},
{GAPC_CONNECTION_REQ_IND, (ke_msg_func_t)gapc_connection_req_ind_handler},
{GAPC_DISCONNECT_IND, (ke_msg_func_t)gapc_disconnect_ind_handler},
{GAPC_GET_DEV_INFO_REQ_IND, (ke_msg_func_t)gapc_get_dev_info_req_ind_handler},
{GAPC_SET_DEV_INFO_REQ_IND, (ke_msg_func_t)gapc_set_dev_info_req_ind_handler},
{GAPM_PROFILE_ADDED_IND, (ke_msg_func_t)gapm_profile_added_ind_handler},
{GAPM_ADV_REPORT_IND, (ke_msg_func_t)gapm_adv_report_ind_handler},
{GAPC_PARAM_UPDATE_REQ_IND, (ke_msg_func_t)gapc_param_update_req_ind_handler},
{GAPC_LE_PKT_SIZE_IND, (ke_msg_func_t)gapc_le_pkt_size_ind_handler},
{GAPC_CON_RSSI_IND, (ke_msg_func_t)gapc_get_con_rssi_ind_handler}, //Alex Add 20191030
{GATTC_READ_IND, (ke_msg_func_t)app_read_ind_handler}, //alex test 2020 0710
{GATTC_SDP_SVC_IND, (ke_msg_func_t)app_disc_all_svc }, //alex test 2020 0710
{GATTC_CMP_EVT, (ke_msg_func_t)alex_gattc_cmp_evt_handler},//alex test 2020 0716
//{GAPC_PEER_ATT_INFO_IND, (ke_msg_func_t)app_read_dev_ver_ind_handler}, //alex test 2020 0710

#if (BLE_APP_SEC)
{GAPC_SECURITY_IND, (ke_msg_func_t)gapc_security_ind_handler},
#endif
};

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
I think you use another SDK

I think you use another SDK and Dialog-Chip.

PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi hdr,

Hi hdr,

Thanks for your detailed responses. According to Bluetooth LE specifications:

“If the attribute value cannot be written due to permissions then an Error Response shall be sent with the error code «Write Not Permitted». “

Could you please check if the characteristic ( in the Peripheral side ) has write permission? If yes, then I would suggest to double check if the Central (DA14682) writes to the correct handler (charact[0].handle).

此外,这将是非常有用的BLE sniffer log, so that we can understand what is happening over the air.

Thanks, PM_Dialog

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
Hello,

Hello,

The characteristic in the peripheral has the permission write and the handler should be the right one.

static void handle_evt_gattc_discover_char(ble_evt_gattc_discover_char_t *evt) { ... if(ble_uuid_equal(&evt->uuid, &list_uuid) || ble_uuid_equal(&evt->uuid, &list_uuid_nb)) { charact[0].handle = evt->handle; charact[0].uuid = evt->uuid; } ... }

Here is my Code from the Dialog 14682 Peripheral(same result status is 3):

ble_uuid_from_string("6e400002-b5a3-f393-e0a9-e50e24dcca9f", &uuid); ble_gatts_add_characteristic(&uuid,GATT_PROP_WRITE, ATT_PERM_RW, 1, 0, NULL, NULL);

With my mobile phone I can write in the characteristic.

PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi Alex,

Hi Alex,

谢谢你的评论,但请举起另一个forum thread. The specific forum topic is related with DA14682 and SDK1.0.14. As far as I know, you are using DA14585 and SDK6 in your design, so please create another ticket with your issue.

Thanks, PM_Dialog

PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi hdr,

Hi hdr,

Thansk fro gettign back. Could you please provide a BLE sniffer capture/

Thanks, PM_Dialog

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
Hello,

Hello,
unfortunately we have no possibility for BLE sniffing.
We will continue to search for the error and contact you if we find any new information.

PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi hdr,

Hi hdr,

Yes please, any further input would be very helpful.

Thanks, PM_Dialog

hdr
Offline
Last seen:2 months 3 weeks ago
Joined:2019-06-11 14:08
Hello,

Hello,
Thanks very much for the help. I found my mistake.
My handle was indeed wrong. I should have assigned evt->value_handle to the handle in the handle_evt_gattc_discover_char method.

Thank you very much

hdr

PM_Dialog
Offline
Last seen:6 hours 21 min ago
Staff
Joined:2018-02-08 11:03
Hi hdr,

Hi hdr,

Glad that you figured this out and thanks for your indication.

Thanks, PM_Dialog