This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

struct bt_conn issue, how to include conn_internal.h

1.) I used the sample code for BLE peripheral uart as template for my own project and modified it. I removed the nordic uart service "nus" and replaced it with a custom service "cus" - with a different UUID. My code compiles with warnings, in my custom.h file I have this:

struct bt_cus_cb
{
  void (*received)(struct bt_conn* conn, const uint8_t* const data, uint16_t len);
  void (*sent)(struct bt_conn* conn);
  void (*send_enabled)(enum bt_cus_send_status status);
};

the compiler complains : 'struct bt_conn' declared inside parameter list will not be visible outside of this definition or declaration

I found the declaration of bt_conn in conn_internal.h - but I'm not able to #include this file : whatever I tried, the compiler always says : conn_internal.h : no such file or directory - does anyone know how to do this ?

2.) I connected the Nordic serial RX/TX lines to a Raspberry PI in order to test my custom service. I'm using nRF connect for desktop together with a nRF52840 dongle. I can scan for the nordic chip and connect. Any data sent from the central (dongle) to the Nordic works well and is display on the Raspberry minicom console. The other direction, Raspberry => Nordic => custom service => Central usually works once, with the second attempt to send data it crashes like this:

[00:00:06.673,004] [0m<inf> fs_nvs: 6 Sectors of 4096 bytes[0m
[00:00:06.673,004] [0m<inf> fs_nvs: alloc wra: 0, fb8[0m
[00:00:06.673,034] [0m<inf> fs_nvs: data wra: 0, 4c[0m
[00:00:06.673,248] [0m<inf> sdc_hci_driver: SoftDevice Controller build revision:
                                         0e e7 c5 66 67 18 3c ac  b3 d2 cc 81 a3 dc f1 c0 |...fg.<. ........
                                         c0 36 02 22                                      |.6."             [0m
[00:00:06.680,694] [0m<inf> bt_hci_core: No ID address. App must call settings_load()[0m
[00:00:06.680,694] [0m<inf> peripheral_uart: Bluetooth initialized[0m
[00:00:06.697,845] [0m<inf> peripheral_uart: Connected C9:80:ED:68:20:3E (random)[0m
[00:00:21.930,725] [0m<inf> peripheral_uart: Sent data...[0m
[00:00:21.960,327] [0m<inf> peripheral_uart: Sent data...[0m
[00:00:24.900,451] [1;31m<err> os: r0/a1:  0x00000004  r1/a2:  0x000000a3  r2/a3:  0x2000363e[0m
[00:00:24.900,451] [1;31m<err> os: r3/a4:  0x00027f87 r12/ip:  0x00000000 r14/lr:  0x000118b1[0m
[00:00:24.900,451] [1;31m<err> os:  xpsr:  0x41000000[0m
[00:00:24.900,482] [1;31m<err> os: Faulting instruction address (r15/pc): 0x0002610e[0m
[00:00:24.900,482] [1;31m<err> os: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0[0m
[00:00:24.900,482] [1;31m<err> os: Current thread: 0x200016a8 (unknown)[0m
[00:00:25.205,841] [1;31m<err> fatal_error: Resetting system

Maybe these 2 issues are related ? any ideas how to troubleshoot this ?
thanks, Matthias

Parents
  • 1.) I think I found a solution for the #include issue - I found a comment in ncs\v1.9.1\zephyr\subsys\bluetooth\audio\otc.c, it says

    #include "../host/conn_internal.h"  /* To avoid build errors on use of struct bt_conn" */

    so in may case I use now this to get rid of the warnings

    // this is necessary for struct bt_conn
    #include <bluetooth/buf.h>
    #include <../subsys/bluetooth/host/conn_internal.h>

    2.) but unfortunately it wont fix the crash issue ....

Reply
  • 1.) I think I found a solution for the #include issue - I found a comment in ncs\v1.9.1\zephyr\subsys\bluetooth\audio\otc.c, it says

    #include "../host/conn_internal.h"  /* To avoid build errors on use of struct bt_conn" */

    so in may case I use now this to get rid of the warnings

    // this is necessary for struct bt_conn
    #include <bluetooth/buf.h>
    #include <../subsys/bluetooth/host/conn_internal.h>

    2.) but unfortunately it wont fix the crash issue ....

Children
No Data
Related