GIGA: Enabling BT in Core fails to compile.
mjs513 opened this issue · 3 comments
Over the past day been trying to get BT working with the GIGA.
The following was added to the overlay
&uart7 {
pinctrl-0 = <&uart7_tx_pf7 &uart7_rx_pa8
&uart7_cts_pf9 &uart7_rts_pf8>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
hw-flow-control;
bt_hci_uart: bt_hci_uart {
compatible = "zephyr,bt-hci-uart";
status = "okay";
murata-1dx {
compatible = "infineon,cyw43xxx-bt-hci";
bt-reg-on-gpios = <&gpioa 10 GPIO_ACTIVE_HIGH>;
bt-host-wake-gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>;
bt-dev-wake-gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>;
fw-download-speed = <115200>;
};
};
};
serials = <&cdc_acm_uart0>, <&usart1>, <&usart2>, <&uart4>, <&usart6>, <&uart7>;
and to the gpio list.
<&gpioa 3 0>; /* bt_reg_on - 100 */
However if I add CONF_BT=y i get a series of errors
164/372] Building C object zephyr/drivers/bluetooth...les/drivers__bluetooth.dir/hci/h4_ifx_cyw43xxx.c.obj
FAILED: zephyr/drivers/bluetooth/CMakeFiles/drivers__bluetooth.dir/hci/h4_ifx_cyw43xxx.c.obj
ccache /home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc -DCORE_CM7 -DHSE_VALUE=16000000 -DKERNEL -DK_HEAP_MEM_POOL_SIZE=2048 -DPICOLIBC_DOUBLE_PRINTF_SCANF -DSTM32H747xx -DUSE_FULL_LL_DRIVER -DUSE_HAL_DRIVER -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR_SUPERVISOR__ -D__ZEPHYR__=1 -I/home/my_new_zephyr_folder/zephyr/subsys/bluetooth -I/home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated/zephyr -I/home/my_new_zephyr_folder/zephyr/include -I/home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated -I/home/my_new_zephyr_folder/zephyr/soc/st/stm32 -I/home/my_new_zephyr_folder/zephyr/lib/posix/options/getopt -I/home/my_new_zephyr_folder/zephyr/soc/st/stm32/common/. -I/home/my_new_zephyr_folder/zephyr/drivers -I/home/my_new_zephyr_folder/zephyr/soc/st/stm32/stm32h7x/. -I/home/my_new_zephyr_folder/zephyr/subsys/usb/device -I/home/my_new_zephyr_folder/zephyr/subsys/shell/modules/kernel_service/thread/.. -I/home/my_new_zephyr_folder/modules/hal/cmsis/CMSIS/Core/Include -I/home/my_new_zephyr_folder/zephyr/modules/cmsis/. -I/home/my_new_zephyr_folder/modules/hal/stm32/stm32cube/stm32h7xx/soc -I/home/my_new_zephyr_folder/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I/home/my_new_zephyr_folder/modules/hal/stm32/stm32cube/common_ll/include -isystem /home/my_new_zephyr_folder/zephyr/lib/libc/common/include -Wshadow -fno-strict-aliasing -Os -imacros /home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated/zephyr/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfpu=fpv5-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft --sysroot=/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/arm-zephyr-eabi -imacros /home/my_new_zephyr_folder/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fmacro-prefix-map=/home/my_new_zephyr_folder/ArduinoCore-zephyr/loader=CMAKE_SOURCE_DIR -fmacro-prefix-map=/home/my_new_zephyr_folder/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/home/my_new_zephyr_folder=WEST_TOPDIR -ffunction-sections -fdata-sections -specs=picolibc.specs -D_POSIX_THREADS -std=c99 -MD -MT zephyr/drivers/bluetooth/CMakeFiles/drivers__bluetooth.dir/hci/h4_ifx_cyw43xxx.c.obj -MF zephyr/drivers/bluetooth/CMakeFiles/drivers__bluetooth.dir/hci/h4_ifx_cyw43xxx.c.obj.d -o zephyr/drivers/bluetooth/CMakeFiles/drivers__bluetooth.dir/hci/h4_ifx_cyw43xxx.c.obj -c /home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_update_controller_baudrate':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:15: warning: implicit declaration of function 'bt_hci_cmd_create'; did you mean 'bt_id_create'? [-Wimplicit-function-declaration]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^~~~~~~~~~~~~~~~~
| bt_id_create
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:13: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:134:15: warning: implicit declaration of function 'bt_hci_cmd_send_sync' [-Wimplicit-function-declaration]
134 | err = bt_hci_cmd_send_sync(BT_HCI_VND_OP_UPDATE_BAUDRATE, buf, NULL);
| ^~~~~~~~~~~~~~~~~~~~
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_firmware_downloa':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:173:21: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
173 | buf = bt_hci_cmd_create(op_code, data_length);
| ^
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_h4_vnd_setup':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:253:36: error: 'BT_HCI_OP_RESET' undeclared (first use in this function)
253 | err = bt_hci_cmd_send_sync(BT_HCI_OP_RESET, NULL, NULL);
| ^~~~~~~~~~~~~~~
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:253:36: note: each undeclared identifier is reported only once for each function it appears in
[177/372] Building C object zephyr/drivers/i2c/CMakeFiles/drivers__i2c.dir/i2c_ll_stm32_v2.c.obj
ninja: build stopped: subcommand failed.
FATAL ERROR: command exited with status 1: /usr/bin/cmake --build /home/my_new_zephyr_folder/ArduinoCore-zephyr/build
(venv) root@DESKTOP-5R9LQSU:/home/my_new_zephyr_folder/ArduinoCore-zephyr#
Not sure what else needs to be done for this or wifi
@facchinm
This a bit more organized than what I deleted and makes more sense and documents the things I tried.
CONFIG_BT=y
-
CMake Warning at /home/my_new_zephyr_folder/zephyr/modules/mbedtls/CMakeLists.txt:11 (message):
No entropy device on the system, using fake entropy source! -
Errors
cyw43xxx.c.obj -c /home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_update_controller_baudrate':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:15: warning: implicit declaration of function 'bt_hci_cmd_create'; did you mean 'bt_id_create'? [-Wimplicit-function-declaration]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^~~~~~~~~~~~~~~~~
| bt_id_create
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:13: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:134:15: warning: implicit declaration of function 'bt_hci_cmd_send_sync' [-Wimplicit-function-declaration]
134 | err = bt_hci_cmd_send_sync(BT_HCI_VND_OP_UPDATE_BAUDRATE, buf, NULL);
| ^~~~~~~~~~~~~~~~~~~~
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_firmware_downloa':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:173:21: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
173 | buf = bt_hci_cmd_create(op_code, data_length);
| ^
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_h4_vnd_setup':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:253:36: error: 'BT_HCI_OP_RESET' undeclared (first use in this function)
253 | err = bt_hci_cmd_send_sync(BT_HCI_OP_RESET, NULL, NULL);
The one error is for BT_HCI_OP_RESET which is in hci_types.h which doesn't seem to get linked in. But is referenced in HCI.h.
- As a hack I added hci_types.h to bluetooth.h and did get a bit farther
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/mbedtls/libmbedTLSBase.a(zephyr_entropy.c.obj): in function `sys_rand_get':
/home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated/zephyr/syscalls/random.h:37: undefined reference to `z_impl_sys_rand_get'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_bt_conn_get_dst_+0x4): undefined reference to `bt_conn_get_dst'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_bt_buf_get_tx_+0x4): undefined reference to `bt_buf_get_tx'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_bt_hci_raw_set_mode_+0x4): undefined reference to `bt_hci_raw_set_mode'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_bt_enable_raw_+0x4): undefined reference to `bt_enable_raw'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_tls_credential_add_+0x4): undefined reference to `tls_credential_add'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
which implies those bt references in llext_exports.c no longer needed.
- Commenting them out:
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/mbedtls/libmbedTLSBase.a(zephyr_entropy.c.obj): in function `sys_rand_get':
/home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated/zephyr/syscalls/random.h:37: undefined reference to `z_impl_sys_rand_get'
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: app/libapp.a(llext_exports.c.obj):(._llext_const_symbol.static.__llext_sym_tls_credential_add_+0x4): undefined reference to `tls_credential_add'
- doing a CONFIG_MBEDTLS=y still gives the me the error on ttls so just commented it out. I am left without these warnings
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:15: warning: implicit declaration of function 'bt_hci_cmd_create'; did you mean 'bt_id_create'? [-Wimplicit-function-declaration]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^~~~~~~~~~~~~~~~~
| bt_id_create
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:123:13: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
123 | buf = bt_hci_cmd_create(BT_HCI_VND_OP_UPDATE_BAUDRATE,
| ^
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:134:15: warning: implicit declaration of function 'bt_hci_cmd_send_sync' [-Wimplicit-function-declaration]
134 | err = bt_hci_cmd_send_sync(BT_HCI_VND_OP_UPDATE_BAUDRATE, buf, NULL);
| ^~~~~~~~~~~~~~~~~~~~
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c: In function 'bt_firmware_downloa':
/home/my_new_zephyr_folder/zephyr/drivers/bluetooth/hci/h4_ifx_cyw43xxx.c:173:21: warning: assignment to 'struct net_buf *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
173 | buf = bt_hci_cmd_create(op_code, data_length);
and error on entropy
/home/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: modules/mbedtls/libmbedTLSBase.a(zephyr_entropy.c.obj): in function `sys_rand_get':
/home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/include/generated/zephyr/syscalls/random.h:37: undefined reference to `z_impl_sys_rand_get'
collect2: error: ld returned 1 exit status
I did add
&rng {
status = "okay";
};
but still get the error.
- Found this zephyr issue zephyrproject-rtos/zephyr#15565 which recommends adding the following to pjrf.conf file.
CONFIG_ENTROPY_GENERATOR=y
CONFIG_TEST_RANDOM_GENERATOR=y
doing that the core now compiles.
More on test case in next post
Since the ArduinoBLE lib has to have major changes to work with zephyr I tried this example:
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/hci.h>
#include <zephyr/bluetooth/conn.h>
#include <zephyr/bluetooth/uuid.h>
#include <zephyr/bluetooth/gatt.h>
#include <zephyr/bluetooth/services/bas.h>
#include <zephyr/bluetooth/services/hrs.h>
#include "LibPrintf.h"
static bool hrf_ntf_enabled;
#define CONFIG_BT_DEVICE_NAME "Heart rate sample"
static const struct bt_data ad[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
BT_DATA_BYTES(BT_DATA_UUID16_ALL,
BT_UUID_16_ENCODE(BT_UUID_HRS_VAL),
BT_UUID_16_ENCODE(BT_UUID_BAS_VAL),
BT_UUID_16_ENCODE(BT_UUID_DIS_VAL)),
#if defined(CONFIG_BT_EXT_ADV)
BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),
#endif /* CONFIG_BT_EXT_ADV */
};
#if !defined(CONFIG_BT_EXT_ADV)
static const struct bt_data sd[] = {
BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1),
};
#endif /* !CONFIG_BT_EXT_ADV */
/* Use atomic variable, 2 bits for connection and disconnection state */
static ATOMIC_DEFINE(state, 2U);
#define STATE_CONNECTED 1U
#define STATE_DISCONNECTED 2U
static void connected(struct bt_conn *conn, uint8_t err)
{
if (err) {
printf("Connection failed, err 0x%02x %s\n", err, bt_hci_err_to_str(err));
} else {
printf("Connected\n");
(void)atomic_set_bit(state, STATE_CONNECTED);
}
}
static void disconnected(struct bt_conn *conn, uint8_t reason)
{
printf("Disconnected, reason 0x%02x %s\n", reason, bt_hci_err_to_str(reason));
(void)atomic_set_bit(state, STATE_DISCONNECTED);
}
BT_CONN_CB_DEFINE(conn_callbacks) = {
.connected = connected,
.disconnected = disconnected,
};
static void hrs_ntf_changed(bool enabled)
{
hrf_ntf_enabled = enabled;
printf("HRS notification status changed: %s\n",
enabled ? "enabled" : "disabled");
}
static struct bt_hrs_cb hrs_cb = {
.ntf_changed = hrs_ntf_changed,
};
static void auth_cancel(struct bt_conn *conn)
{
char addr[BT_ADDR_LE_STR_LEN];
bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
printf("Pairing cancelled: %s\n", addr);
}
static struct bt_conn_auth_cb auth_cb_display = {
.cancel = auth_cancel,
};
static void bas_notify(void)
{
uint8_t battery_level = bt_bas_get_battery_level();
battery_level--;
if (!battery_level) {
battery_level = 100U;
}
bt_bas_set_battery_level(battery_level);
}
static void hrs_notify(void)
{
static uint8_t heartrate = 90U;
/* Heartrate measurements simulation */
heartrate++;
if (heartrate == 160U) {
heartrate = 90U;
}
if (hrf_ntf_enabled) {
bt_hrs_notify(heartrate);
}
}
#if defined(CONFIG_GPIO)
/* The devicetree node identifier for the "led0" alias. */
#define LED0_NODE DT_ALIAS(led0)
#if DT_NODE_HAS_STATUS_OKAY(LED0_NODE)
#include <zephyr/drivers/gpio.h>
#define HAS_LED 1
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
#define BLINK_ONOFF K_MSEC(500)
static struct k_work_delayable blink_work;
static bool led_is_on;
static void blink_timeout(struct k_work *work)
{
led_is_on = !led_is_on;
gpio_pin_set(led.port, led.pin, (int)led_is_on);
k_work_schedule(&blink_work, BLINK_ONOFF);
}
static int blink_setup(void)
{
int err;
printf("Checking LED device...");
if (!gpio_is_ready_dt(&led)) {
printf("failed.\n");
return -EIO;
}
printf("done.\n");
printf("Configuring GPIO pin...");
err = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (err) {
printf("failed.\n");
return -EIO;
}
printf("done.\n");
k_work_init_delayable(&blink_work, blink_timeout);
return 0;
}
static void blink_start(void)
{
printf("Start blinking LED...\n");
led_is_on = false;
gpio_pin_set(led.port, led.pin, (int)led_is_on);
k_work_schedule(&blink_work, BLINK_ONOFF);
}
static void blink_stop(void)
{
struct k_work_sync work_sync;
printf("Stop blinking LED.\n");
k_work_cancel_delayable_sync(&blink_work, &work_sync);
/* Keep LED on */
led_is_on = true;
gpio_pin_set(led.port, led.pin, (int)led_is_on);
}
#endif /* LED0_NODE */
#endif /* CONFIG_GPIO */
void setup() {
Serial.begin(9600);
delay(1000);
int err;
err = bt_enable(NULL);
if (err) {
printf("Bluetooth init failed (err %d)\n", err);
while(1);
}
printf("Bluetooth initialized\n");
bt_conn_auth_cb_register(&auth_cb_display);
bt_hrs_cb_register(&hrs_cb);
#if !defined(CONFIG_BT_EXT_ADV)
printf("Starting Legacy Advertising (connectable and scannable)\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));
if (err) {
printf("Advertising failed to start (err %d)\n", err);
while(1);
}
#else /* CONFIG_BT_EXT_ADV */
struct bt_le_adv_param adv_param = {
.id = BT_ID_DEFAULT,
.sid = 0U,
.secondary_max_skip = 0U,
.options = (BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_CODED),
.interval_min = BT_GAP_ADV_FAST_INT_MIN_2,
.interval_max = BT_GAP_ADV_FAST_INT_MAX_2,
.peer = NULL,
};
struct bt_le_ext_adv *adv;
printf("Creating a Coded PHY connectable non-scannable advertising set\n");
err = bt_le_ext_adv_create(&adv_param, NULL, &adv);
if (err) {
printf("Failed to create Coded PHY extended advertising set (err %d)\n", err);
printf("Creating a non-Coded PHY connectable non-scannable advertising set\n");
adv_param.options &= ~BT_LE_ADV_OPT_CODED;
err = bt_le_ext_adv_create(&adv_param, NULL, &adv);
if (err) {
printf("Failed to create extended advertising set (err %d)\n", err);
while(1);
}
}
printf("Setting extended advertising data\n");
err = bt_le_ext_adv_set_data(adv, ad, ARRAY_SIZE(ad), NULL, 0);
if (err) {
printf("Failed to set extended advertising data (err %d)\n", err);
while(1);
}
printf("Starting Extended Advertising (connectable non-scannable)\n");
err = bt_le_ext_adv_start(adv, BT_LE_EXT_ADV_START_DEFAULT);
if (err) {
printf("Failed to start extended advertising set (err %d)\n", err);
while(1);
}
#endif /* CONFIG_BT_EXT_ADV */
printf("Advertising successfully started\n");
#if defined(HAS_LED)
err = blink_setup();
if (err) {
while(1);
}
blink_start();
#endif /* HAS_LED */
/* Implement notification. */
while (1) {
k_sleep(K_SECONDS(1));
/* Heartrate measurements simulation */
hrs_notify();
/* Battery level simulation */
bas_notify();
if (atomic_test_and_clear_bit(state, STATE_CONNECTED)) {
/* Connected callback executed */
#if defined(HAS_LED)
blink_stop();
#endif /* HAS_LED */
} else if (atomic_test_and_clear_bit(state, STATE_DISCONNECTED)) {
#if !defined(CONFIG_BT_EXT_ADV)
printf("Starting Legacy Advertising (connectable and scannable)\n");
err = bt_le_adv_start(BT_LE_ADV_CONN_FAST_1, ad, ARRAY_SIZE(ad), sd,
ARRAY_SIZE(sd));
if (err) {
printf("Advertising failed to start (err %d)\n", err);
while(1);
}
#else /* CONFIG_BT_EXT_ADV */
printf("Starting Extended Advertising (connectable and non-scannable)\n");
err = bt_le_ext_adv_start(adv, BT_LE_EXT_ADV_START_DEFAULT);
if (err) {
printf("Failed to start extended advertising set (err %d)\n", err);
while(1);
}
#endif /* CONFIG_BT_EXT_ADV */
#if defined(HAS_LED)
blink_start();
#endif /* HAS_LED */
}
}
}
void loop() {
// put your main code here, to run repeatedly:
}
however I am back to the error:
�[1;32muart:~$ �[msketch
[00:00:18.826,000] �[1;31m<err> llext: Undefined symbol with no entry in symbol table bt_conn_get_dst, offset 292, link section 12�[0m
[00:00:18.826,000] �[1;31m<err> llext: Failed to link, ret -61�[0m
Failed to load sketch, rc -61
but if I add it in the core does not compile as I mentioned. Catch 22.
Saw this for the Nicola_vision:
if BT
choice AIROC_PART
default CYW4343W
endchoice
choice CYW4343W_MODULE
default CYW4343W_MURATA_1DX
endchoice
so how does that get incorporated for arduino_core?
PS Moved the entropy generator conf to the m7.conf file.
ANSWER:
#CONFIG_CYW4343W=y
CONFIG_CYW4343W_MURATA_1DX=y