From 1a5acd02a5958b18a337cf6b0a980a0cf9d03d48 Mon Sep 17 00:00:00 2001 From: rbaron Date: Sun, 23 Jul 2023 18:10:28 +0200 Subject: [PATCH] [ble] __ASSERT initialization & sensor reading After we tracked down a rare, annoying bug for the zigbee sample in #150, this PR does something similar for the ble sample. If there's an error either initializing the board of reading the sensors, __ASSERT will reboot the system, instead of letting it hang forever. --- code/nrf-connect/samples/ble/prj.conf | 2 ++ code/nrf-connect/samples/ble/src/main.c | 26 ++++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/code/nrf-connect/samples/ble/prj.conf b/code/nrf-connect/samples/ble/prj.conf index fe96f3b..51d475d 100644 --- a/code/nrf-connect/samples/ble/prj.conf +++ b/code/nrf-connect/samples/ble/prj.conf @@ -19,6 +19,8 @@ CONFIG_USE_SEGGER_RTT=y CONFIG_NEWLIB_LIBC=y CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y +CONFIG_ASSERT=y + # Application config - see all options in Kconfig. # CONFIG_PRST_BLE_ENCODING_BTHOME_V2=y # CONFIG_PRST_SLEEP_DURATION_SEC=1 diff --git a/code/nrf-connect/samples/ble/src/main.c b/code/nrf-connect/samples/ble/src/main.c index 1557700..ad2539d 100644 --- a/code/nrf-connect/samples/ble/src/main.c +++ b/code/nrf-connect/samples/ble/src/main.c @@ -14,25 +14,29 @@ LOG_MODULE_REGISTER(main, LOG_LEVEL_DBG); -int main(void) { +int prst_init() { RET_IF_ERR(prst_adc_init()); RET_IF_ERR(prst_led_init()); RET_IF_ERR(prst_button_init()); RET_IF_ERR(prst_ble_init()); + return 0; +} - RET_IF_ERR(prst_led_flash(2)); +int prst_loop(prst_sensors_t *sensors) { + RET_IF_ERR(prst_sensors_read_all(sensors)); + RET_IF_ERR(prst_ble_adv_set_data(sensors)); + RET_IF_ERR(prst_ble_adv_start()); + k_sleep(K_SECONDS(CONFIG_PRST_BLE_ADV_DURATION_SEC)); + RET_IF_ERR(prst_ble_adv_stop()); + return 0; +} +int main(void) { + __ASSERT(!prst_init(), "Error in prst_init()"); + prst_led_flash(2); prst_sensors_t sensors; while (true) { - RET_IF_ERR(prst_sensors_read_all(&sensors)); - - RET_IF_ERR(prst_ble_adv_set_data(&sensors)); - RET_IF_ERR(prst_ble_adv_start()); - - k_sleep(K_SECONDS(CONFIG_PRST_BLE_ADV_DURATION_SEC)); - - RET_IF_ERR(prst_ble_adv_stop()); - + __ASSERT(!prst_loop(&sensors), "Error in prst_loop()"); k_sleep(K_SECONDS(CONFIG_PRST_SLEEP_DURATION_SEC)); } }