From 27a4c91ac58df0f54d05bafd85e79af4da6f57af Mon Sep 17 00:00:00 2001 From: Trond Einar Snekvik Date: Thu, 6 May 2021 10:02:21 +0200 Subject: [PATCH] samples: bbc_microbit: pong: Convert to new k_work API Converts the bbc_microbit pong sample to new k_work API. Signed-off-by: Trond Einar Snekvik --- samples/boards/bbc_microbit/pong/src/ble.c | 36 ++++++++++++---------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/samples/boards/bbc_microbit/pong/src/ble.c b/samples/boards/bbc_microbit/pong/src/ble.c index 881b265fc38..637716911f8 100644 --- a/samples/boards/bbc_microbit/pong/src/ble.c +++ b/samples/boards/bbc_microbit/pong/src/ble.c @@ -49,7 +49,7 @@ static uint16_t remote_handle; static bool remote_ready; static bool initiator; -static struct k_delayed_work ble_work; +static struct k_work_delayable ble_work; static bool connect_canceled; @@ -251,7 +251,7 @@ static void connected(struct bt_conn *conn, uint8_t err) printk("Connected\n"); ble_state = BLE_CONNECTED; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); } static void disconnected(struct bt_conn *conn, uint8_t reason) @@ -284,38 +284,40 @@ void ble_connect(void) } ble_state = BLE_SCAN_START; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); } void ble_cancel_connect(void) { printk("ble_cancel_connect()\n"); - k_delayed_work_cancel(&ble_work); - switch (ble_state) { - case BLE_DISCONNECTED: - break; case BLE_SCAN_START: ble_state = BLE_DISCONNECTED; + __fallthrough; + case BLE_DISCONNECTED: + /* If this fails, the handler will run without doing anything, + * as the switch case for BLE_DISCONNECTED is empty. + */ + k_work_cancel_delayable(&ble_work); break; case BLE_SCAN: connect_canceled = true; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_ADV_START: ble_state = BLE_DISCONNECTED; break; case BLE_ADVERTISING: connect_canceled = true; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_CONNECT_CREATE: ble_state = BLE_CONNECT_CANCEL; __fallthrough; case BLE_CONNECTED: connect_canceled = true; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_CONNECT_CANCEL: break; @@ -354,7 +356,7 @@ static void create_conn(const bt_addr_le_t *addr) } ble_state = BLE_CONNECT_CREATE; - k_delayed_work_submit(&ble_work, SCAN_TIMEOUT); + k_work_reschedule(&ble_work, SCAN_TIMEOUT); } static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type, @@ -449,20 +451,20 @@ static void ble_timeout(struct k_work *work) printk("Started scanning for devices\n"); ble_state = BLE_SCAN; - k_delayed_work_submit(&ble_work, SCAN_TIMEOUT); + k_work_reschedule(&ble_work, SCAN_TIMEOUT); break; case BLE_CONNECT_CREATE: printk("Connection attempt timed out\n"); bt_conn_disconnect(default_conn, BT_HCI_ERR_REMOTE_USER_TERM_CONN); ble_state = BLE_ADV_START; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_SCAN: printk("No devices found during scan\n"); bt_le_scan_stop(); ble_state = BLE_ADV_START; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_ADV_START: err = bt_le_adv_start(BT_LE_ADV_CONN_NAME, ad, ARRAY_SIZE(ad), @@ -474,13 +476,13 @@ static void ble_timeout(struct k_work *work) printk("Advertising successfully started\n"); ble_state = BLE_ADVERTISING; - k_delayed_work_submit(&ble_work, K_MSEC(adv_timeout())); + k_work_reschedule(&ble_work, K_MSEC(adv_timeout())); break; case BLE_ADVERTISING: printk("Timed out advertising\n"); bt_le_adv_stop(); ble_state = BLE_SCAN_START; - k_delayed_work_submit(&ble_work, K_NO_WAIT); + k_work_reschedule(&ble_work, K_NO_WAIT); break; case BLE_CONNECTED: discov_param.uuid = &pong_svc_uuid.uuid; @@ -530,7 +532,7 @@ void ble_init(void) return; } - k_delayed_work_init(&ble_work, ble_timeout); + k_work_init_delayable(&ble_work, ble_timeout); bt_conn_cb_register(&conn_callbacks);