1- What’s the point of having app_easy_gap_dev_config_get_active(void) to retrieve the value of set_dev_config_cmd if just after calling app_easy_gap_dev_config_create_msg() for setting set_dev_config_cmd, set_dev_config_cmd gets set to NULL? Won`t it always be NULL when calling app_easy_gap_dev_config_get_active(void)? Does it have something do with it being saved in retention_mem_area0? This same question goes for all the other xxxxx_get_active functions.
2- Why does app_easy_gap_directed_advertise_start (void) calls the function app_easy_gap_undirected_advertise_start_create_msg() which makes an undirected advertise instead of directed?
3- Is it possible to scan (and then connect to it) other devices (which has been disconnected due to distance) while being in a connected state with another device?
4- When defining a custom characteristics value , can I use any 128 UUID that comes to mind? I know that Service Declaration, Characteristic Declaration, etc have their own UUID...
5- Why does the database have to be enabled/disabled only after a connection/disconnection?
6- When creating a characteristics value and setting its Attribute permission to PERM(NTF, ENABLE), how does the value get notified? I know that the message ID CUSTS1_VAL_NTF_REQ needs to be sent via a kernel message and that it will be handled in custs1_val_ntf_req_handler which will update the database and send the new value through GATT to the peer. But my question is: how and where does the CUSTS1_VAL_NTF_REQ message gets created and sent?
Thank you for your time!!!
Hi Fernando Effting,
1. I dont see any set_dev_config_cmd = NULL; command in the app_easy_gap_dev_config_get_active() function.
2. Its a copy paste mistake and will be corrected in the next SDK release.
3. When the 580 operates as a peripheral it can support only one connection with a central, if the 580 operates as a central it can support up to 6 (580) or up to 8 (581) connections.
4. When you define a custom service and characteristic you can use your own UUID only as far as the value attribute is concerned, in any other case you have to use the standard UUIDs in order for the central device to recognize that the attribute is a characteristic declaration or a characteristic descriptor or a characteristic configuration, those UUIDs are standard. You can check the document AN-B029 that provides some info regarding the structure of a custom database.
5. When performing the enabling a profile most of the procedures has to do with security and service discovery, if the specified client has the appropriate security requirements in order to access the peripheral etc. In order to check if the client has all the predefined criteria there has to be a connection, so the enabling of the profile happens on connection. If you have a look at the RW specifications for all the profiles you will see that all the enable requests require the connection handle of a valid connection.
6. The notification message is generated when you want to sent a notification, in the app_ble_peripheral project the message is triggered via a BLE timer which uses the function app_adcvall_timer_cb_handler() as a handler. In that function the message gets allocated and sent.
Thanks MT_dialog
When will a new SDK be released?
你可以点我的函数app_adcvall_timer_cb_handler() is located? I could now find it in SDK5.
Thanks!
Hi Fernando,
We dont have a relase date for the updated SDK. The app_adcvall_timer_cb_handler() is a custom function located in the app_ble_peripheral project, please have a look at the user_custs1_impl.c file in line 142.
Thanks MT_dialog
Thank you! Now it makes more sense...
I need to send a value which is 16 bits wide, at a rate of about 100 Hz (which is the rate the value gets updated). Will there be any problem issuing that many notify messages? I mean, what happens if the radio cannot send the amount of data I'm requesting it to?
Hi Fernando,
如果你消费设备发送的消息(you are actually sending the messages to the client since there is a connection) your device will operate ok, in case you lose connection or the messages that you are allocating are more that your connection can handle (the connection intervals is large and you are allocating messages but not sending them) your messages will pile up and fill the heap, this will trigger the platform_reset function.
Thanks MT_dialog