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 <Trond.Einar.Snekvik@nordicsemi.no>
This commit is contained in:
Trond Einar Snekvik 2021-05-06 10:02:21 +02:00 committed by Kumar Gala
commit 27a4c91ac5

View file

@ -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);