BOZHENG001 opened a new issue, #1788: URL: https://github.com/apache/mynewt-nimble/issues/1788
Hi NimBLE developers, Through this post, I would like to share some issues I am facing now and ask for some feedback/help if possible. **Laptop OS: Ubuntu 22.04 Real-time operating system (RTOS): RIOT OS (newest) Bluetooth Low Energy (BLE) stack: NimBLE in RIOT OS Development boards: 2 feather-nrf52840-sense boards (1 central + 1 peripheral) Examples/Apps used: NimBLE "central" and "peripheral" implemented in RIOT OS** As shown above, I am currently developing some BLE applications based on NimBLE and RIOT OS. However, some issues showed up while playing with BLE parameters, i.e., connection interval and notification interval. The applications implemented on the 2 feather boards are the NimBLE "central" and "peripheral" examples. Some further codes are added to the two examples to achieve notification (battery service and characteristic) between the central and peripheral devices. A notification interval is defined in the peripheral application to periodically notify the central application about the battery level (The battery level is a number generated by code instead of real measurement.). The interesting thing is there is no failed assertion when the connection interval is much smaller than the notification interval, e.g. connection interval = 10 ms and notification interval = 100 ms. However, the failed assertion starts to show up when the connection interval is closer to, equal to, or larger than the notification interval, e.g., connection interval = 80 / 100 / 200 ms and notification interval = 100 ms. I expect no failed assertion when the connection interval is equal to the notification interval at least, since it suggests each connection interval/event has one notification. I further looked into the assertion failure and tried to trace it. The following path is found: 1. `ble_gatts_notify_custom()` in `main.c` 2. `ble_att_clt_tx_notify` in `ble_gattc.c` 3. `ble_att_cmd_get()` in `ble_alt_clt.c` 4. `ble_hs_mbuf_l2cap_pkt()` in `ble_att_cmd.c` 5. `ble_hs_mbuf_gen_pkt()` in `ble_hs_mbuf.c` 6. `os_msys_get_pkthdr()` in `ble_hs_mbuf.c` 7. `os_mbuf_get()` in `os_mbuf.c` Then I lost in the definition of function `os_mbuf_get()` in `os_mempool.c`. May I kindly ask for some help here to check what can be the issue/cause of the failed assertion? Maybe I did something wrong in my applications? Or is it a limitation of NimBLE? What can I do to solve this problem? Thanks in advance for any possible reply and help. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
