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