main/task_ble.c

Mon, 17 Apr 2023 14:54:35 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 17 Apr 2023 14:54:35 +0200
changeset 31
ec5c7794dcd6
permissions
-rw-r--r--

Added basic BLE code.

31
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /**
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * @file task_ble.c
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 * @brief BLE task. Secure GATT server.
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 */
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6 #include "config.h"
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9 static const char *TAG = "task_ble";
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 void task_ble( void * pvParameters )
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 esp_err_t ret;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
16
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
17 ESP_LOGI(TAG, "Starting BLE task");
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
18
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
19 /*
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
20 * Initialize Bluetooth
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
21 */
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
22 ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
23
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
24 esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
25 ret = esp_bt_controller_init(&bt_cfg);
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
26 if (ret) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
27 ESP_LOGE(TAG, "init controller failed: %s", esp_err_to_name(ret));
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
28 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
29 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
30
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
31 ret = esp_bt_controller_enable(ESP_BT_MODE_BLE);
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
32 if (ret) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
33 ESP_LOGE(TAG, "enable controller failed: %s", esp_err_to_name(ret));
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
34 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
35 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
36
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
37 ESP_LOGI(TAG, "init bluetooth");
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
38 ret = esp_bluedroid_init();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
39 if (ret) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
40 ESP_LOGE(TAG, "init bluetooth failed: %s", esp_err_to_name(ret));
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
41 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
42 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
43
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
44 ret = esp_bluedroid_enable();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
45 if (ret) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
46 ESP_LOGE(TAG, "enable bluetooth failed: %s", esp_err_to_name(ret));
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
47 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
48 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
49
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
50 ret = ble_balkon_gatts_register();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
51 if (ret)
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
52 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
53
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54 ble_balkon_gap_register();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 ret = ble_balkon_gatts_app_register();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57 if (ret)
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 ret = ble_balkon_gatts_set_mtu();
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61 if (ret)
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 goto deadend;
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64 ESP_LOGI(TAG, "Start BLE done, enter loop");
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 for(;;) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69 vTaskDelay(20 / portTICK_PERIOD_MS);
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70 } /* for(;;) */
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 /*
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
74 * Error point for init errors.
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
75 */
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
76 deadend:
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
77 ESP_LOGI(TAG, "Startup error loop");
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
78 for(;;) {
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
79 vTaskDelay(50 / portTICK_PERIOD_MS);
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
80 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
81 }
ec5c7794dcd6 Added basic BLE code.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
82

mercurial