Skip to content

Commit feab5ca

Browse files
committed
ble_app: update gatts profiles
1 parent 5f49f62 commit feab5ca

File tree

4 files changed

+50
-44
lines changed

4 files changed

+50
-44
lines changed

main/inc/user/ble_app.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
#ifndef INC_USER_BLE_APP_H_
99
#define INC_USER_BLE_APP_H_
1010

11-
#include "esp_gap_ble_api.h"
12-
13-
extern esp_ble_adv_params_t *ble_app_get_adv_params(void);
11+
extern void *ble_app_get_adv_params(void);
12+
extern void ble_app_config_adv_data(void);
1413

1514
extern void ble_app_init(void);
1615

main/inc/user/ble_gatts.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
enum gatts_profile_idx {
1414
PROFILE_IDX_OTA = 0x00,
15-
PROFILE_IDX_VFX = 0x01,
15+
PROFILE_IDX_CFG = 0x01,
1616

1717
PROFILE_IDX_MAX
1818
};

main/src/user/ble_app.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
#include "core/os.h"
1717
#include "chip/bt.h"
1818

19+
#include "user/ble_app.h"
1920
#include "user/ble_gatts.h"
2021

2122
#define BLE_APP_TAG "ble_app"
2223
#define BLE_GAP_TAG "ble_gap"
2324

25+
#ifdef CONFIG_ENABLE_BLE_CONTROL_IF
2426
static uint8_t adv_data_raw[5 + sizeof(CONFIG_BLE_NAME)] = {
2527
2,
2628
ESP_BT_EIR_TYPE_FLAGS,
@@ -54,32 +56,37 @@ static void ble_gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_p
5456
ESP_LOGE(BLE_GAP_TAG, "failed to stop advertising");
5557
}
5658
break;
57-
case ESP_GAP_BLE_SET_LOCAL_PRIVACY_COMPLETE_EVT:
58-
strcpy((char *)adv_data_raw + 5, CONFIG_BLE_NAME);
59-
esp_ble_gap_config_adv_data_raw(adv_data_raw, sizeof(adv_data_raw));
60-
break;
6159
default:
6260
break;
6361
}
6462
}
6563

66-
esp_ble_adv_params_t *ble_app_get_adv_params(void)
64+
void *ble_app_get_adv_params(void)
6765
{
6866
return &adv_params;
6967
}
7068

69+
void ble_app_config_adv_data(void)
70+
{
71+
strcpy((char *)adv_data_raw + 5, CONFIG_BLE_NAME);
72+
esp_ble_gap_config_adv_data_raw(adv_data_raw, sizeof(adv_data_raw));
73+
}
74+
7175
void ble_app_init(void)
7276
{
7377
xEventGroupSetBits(user_event_group, BLE_GATTS_IDLE_BIT);
7478

7579
esp_ble_gap_register_callback(ble_gap_event_handler);
76-
esp_ble_gap_config_local_privacy(true);
80+
esp_ble_gap_set_rand_addr(ble_get_mac_address());
81+
82+
ble_app_config_adv_data();
7783

7884
esp_ble_gatts_register_callback(ble_gatts_event_handler);
7985
esp_ble_gatts_app_register(PROFILE_IDX_OTA);
80-
esp_ble_gatts_app_register(PROFILE_IDX_VFX);
86+
esp_ble_gatts_app_register(PROFILE_IDX_CFG);
8187

8288
esp_ble_gatt_set_local_mtu(ESP_GATT_MAX_MTU_SIZE);
8389

8490
ESP_LOGI(BLE_APP_TAG, "started.");
8591
}
92+
#endif

main/src/user/ble_gatts.c

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,27 @@
2525
#define BLE_GATTS_TAG "ble_gatts"
2626

2727
#define GATTS_OTA_TAG "gatts_ota"
28-
#define GATTS_VFX_TAG "gatts_vfx"
28+
#define GATTS_CFG_TAG "gatts_cfg"
2929

3030
#define GATTS_SRV_UUID_OTA 0xFF52
3131
#define GATTS_CHAR_UUID_OTA 0x5201
3232
#define GATTS_NUM_HANDLE_OTA 4
3333

34-
#define GATTS_SRV_UUID_VFX 0xFF53
35-
#define GATTS_CHAR_UUID_VFX 0x5301
36-
#define GATTS_NUM_HANDLE_VFX 4
34+
#define GATTS_SRV_UUID_CFG 0xFF53
35+
#define GATTS_CHAR_UUID_CFG 0x5301
36+
#define GATTS_NUM_HANDLE_CFG 4
3737

3838
static uint16_t desc_val_ota = 0x0000;
3939
static uint16_t desc_val_vfx = 0x0000;
4040

4141
static const char *s_gatts_conn_state_str[] = {"disconnected", "connected"};
4242

4343
static void profile_ota_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param);
44-
static void profile_vfx_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param);
44+
static void profile_cfg_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param);
4545

4646
gatts_profile_inst_t gatts_profile_tbl[PROFILE_IDX_MAX] = {
4747
[PROFILE_IDX_OTA] = { .gatts_cb = profile_ota_event_handler, .gatts_if = ESP_GATT_IF_NONE },
48-
[PROFILE_IDX_VFX] = { .gatts_cb = profile_vfx_event_handler, .gatts_if = ESP_GATT_IF_NONE }
48+
[PROFILE_IDX_CFG] = { .gatts_cb = profile_cfg_event_handler, .gatts_if = ESP_GATT_IF_NONE }
4949
};
5050

5151
static void profile_ota_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param)
@@ -161,22 +161,22 @@ static void profile_ota_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t
161161
}
162162
}
163163

164-
static void profile_vfx_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param)
164+
static void profile_cfg_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_if, esp_ble_gatts_cb_param_t *param)
165165
{
166166
switch (event) {
167167
case ESP_GATTS_REG_EVT:
168-
gatts_profile_tbl[PROFILE_IDX_VFX].service_id.is_primary = true;
169-
gatts_profile_tbl[PROFILE_IDX_VFX].service_id.id.inst_id = 0x00;
170-
gatts_profile_tbl[PROFILE_IDX_VFX].service_id.id.uuid.len = ESP_UUID_LEN_16;
171-
gatts_profile_tbl[PROFILE_IDX_VFX].service_id.id.uuid.uuid.uuid16 = GATTS_SRV_UUID_VFX;
168+
gatts_profile_tbl[PROFILE_IDX_CFG].service_id.is_primary = true;
169+
gatts_profile_tbl[PROFILE_IDX_CFG].service_id.id.inst_id = 0x00;
170+
gatts_profile_tbl[PROFILE_IDX_CFG].service_id.id.uuid.len = ESP_UUID_LEN_16;
171+
gatts_profile_tbl[PROFILE_IDX_CFG].service_id.id.uuid.uuid.uuid16 = GATTS_SRV_UUID_CFG;
172172

173-
esp_ble_gatts_create_service(gatts_if, &gatts_profile_tbl[PROFILE_IDX_VFX].service_id, GATTS_NUM_HANDLE_VFX);
173+
esp_ble_gatts_create_service(gatts_if, &gatts_profile_tbl[PROFILE_IDX_CFG].service_id, GATTS_NUM_HANDLE_CFG);
174174

175175
break;
176176
case ESP_GATTS_READ_EVT: {
177177
esp_gatt_rsp_t rsp = {0};
178178

179-
if (param->read.handle == gatts_profile_tbl[PROFILE_IDX_VFX].descr_handle) {
179+
if (param->read.handle == gatts_profile_tbl[PROFILE_IDX_CFG].descr_handle) {
180180
rsp.attr_value.len = 2;
181181
memcpy(rsp.attr_value.value, &desc_val_vfx, sizeof(desc_val_vfx));
182182
} else {
@@ -225,7 +225,7 @@ static void profile_vfx_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t
225225
}
226226
case ESP_GATTS_WRITE_EVT:
227227
if (!param->write.is_prep) {
228-
if (param->write.handle == gatts_profile_tbl[PROFILE_IDX_VFX].descr_handle) {
228+
if (param->write.handle == gatts_profile_tbl[PROFILE_IDX_CFG].descr_handle) {
229229
desc_val_vfx = param->write.value[1] << 8 | param->write.value[0];
230230
#ifdef CONFIG_ENABLE_VFX
231231
} else {
@@ -260,11 +260,11 @@ static void profile_vfx_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t
260260
app_setenv("AIN_INIT_CFG", &ain_mode, sizeof(ain_mode_t));
261261
#endif
262262
} else {
263-
ESP_LOGE(GATTS_VFX_TAG, "invalid command: 0x%02X", param->write.value[0]);
263+
ESP_LOGE(GATTS_CFG_TAG, "invalid command: 0x%02X", param->write.value[0]);
264264
}
265265
break;
266266
default:
267-
ESP_LOGW(GATTS_VFX_TAG, "unknown command: 0x%02X", param->write.value[0]);
267+
ESP_LOGW(GATTS_CFG_TAG, "unknown command: 0x%02X", param->write.value[0]);
268268
break;
269269
}
270270
#endif
@@ -277,53 +277,53 @@ static void profile_vfx_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t
277277

278278
break;
279279
case ESP_GATTS_CREATE_EVT:
280-
gatts_profile_tbl[PROFILE_IDX_VFX].service_handle = param->create.service_handle;
281-
gatts_profile_tbl[PROFILE_IDX_VFX].char_uuid.len = ESP_UUID_LEN_16;
282-
gatts_profile_tbl[PROFILE_IDX_VFX].char_uuid.uuid.uuid16 = GATTS_CHAR_UUID_VFX;
280+
gatts_profile_tbl[PROFILE_IDX_CFG].service_handle = param->create.service_handle;
281+
gatts_profile_tbl[PROFILE_IDX_CFG].char_uuid.len = ESP_UUID_LEN_16;
282+
gatts_profile_tbl[PROFILE_IDX_CFG].char_uuid.uuid.uuid16 = GATTS_CHAR_UUID_CFG;
283283

284-
esp_ble_gatts_start_service(gatts_profile_tbl[PROFILE_IDX_VFX].service_handle);
284+
esp_ble_gatts_start_service(gatts_profile_tbl[PROFILE_IDX_CFG].service_handle);
285285

286-
esp_err_t add_char_ret = esp_ble_gatts_add_char(gatts_profile_tbl[PROFILE_IDX_VFX].service_handle,
287-
&gatts_profile_tbl[PROFILE_IDX_VFX].char_uuid,
286+
esp_err_t add_char_ret = esp_ble_gatts_add_char(gatts_profile_tbl[PROFILE_IDX_CFG].service_handle,
287+
&gatts_profile_tbl[PROFILE_IDX_CFG].char_uuid,
288288
ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
289289
ESP_GATT_CHAR_PROP_BIT_READ | ESP_GATT_CHAR_PROP_BIT_WRITE,
290290
NULL,
291291
NULL);
292292
if (add_char_ret) {
293-
ESP_LOGE(GATTS_VFX_TAG, "failed to add char: %d", add_char_ret);
293+
ESP_LOGE(GATTS_CFG_TAG, "failed to add char: %d", add_char_ret);
294294
}
295295

296296
break;
297297
case ESP_GATTS_ADD_CHAR_EVT:
298-
gatts_profile_tbl[PROFILE_IDX_VFX].char_handle = param->add_char.attr_handle;
299-
gatts_profile_tbl[PROFILE_IDX_VFX].descr_uuid.len = ESP_UUID_LEN_16;
300-
gatts_profile_tbl[PROFILE_IDX_VFX].descr_uuid.uuid.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG;
298+
gatts_profile_tbl[PROFILE_IDX_CFG].char_handle = param->add_char.attr_handle;
299+
gatts_profile_tbl[PROFILE_IDX_CFG].descr_uuid.len = ESP_UUID_LEN_16;
300+
gatts_profile_tbl[PROFILE_IDX_CFG].descr_uuid.uuid.uuid16 = ESP_GATT_UUID_CHAR_CLIENT_CONFIG;
301301

302-
esp_err_t add_descr_ret = esp_ble_gatts_add_char_descr(gatts_profile_tbl[PROFILE_IDX_VFX].service_handle,
303-
&gatts_profile_tbl[PROFILE_IDX_VFX].descr_uuid,
302+
esp_err_t add_descr_ret = esp_ble_gatts_add_char_descr(gatts_profile_tbl[PROFILE_IDX_CFG].service_handle,
303+
&gatts_profile_tbl[PROFILE_IDX_CFG].descr_uuid,
304304
ESP_GATT_PERM_READ | ESP_GATT_PERM_WRITE,
305305
NULL,
306306
NULL);
307307
if (add_descr_ret) {
308-
ESP_LOGE(GATTS_VFX_TAG, "failed to add char descr: %d", add_descr_ret);
308+
ESP_LOGE(GATTS_CFG_TAG, "failed to add char descr: %d", add_descr_ret);
309309
}
310310

311311
break;
312312
case ESP_GATTS_ADD_CHAR_DESCR_EVT:
313-
gatts_profile_tbl[PROFILE_IDX_VFX].descr_handle = param->add_char_descr.attr_handle;
313+
gatts_profile_tbl[PROFILE_IDX_CFG].descr_handle = param->add_char_descr.attr_handle;
314314
break;
315315
case ESP_GATTS_CONNECT_EVT:
316-
ESP_LOGI(GATTS_VFX_TAG, "connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
316+
ESP_LOGI(GATTS_CFG_TAG, "connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
317317
s_gatts_conn_state_str[1],
318318
param->connect.remote_bda[0], param->connect.remote_bda[1],
319319
param->connect.remote_bda[2], param->connect.remote_bda[3],
320320
param->connect.remote_bda[4], param->connect.remote_bda[5]);
321321

322-
gatts_profile_tbl[PROFILE_IDX_VFX].conn_id = param->connect.conn_id;
322+
gatts_profile_tbl[PROFILE_IDX_CFG].conn_id = param->connect.conn_id;
323323

324324
break;
325325
case ESP_GATTS_DISCONNECT_EVT:
326-
ESP_LOGI(GATTS_VFX_TAG, "connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
326+
ESP_LOGI(GATTS_CFG_TAG, "connection state: %s, [%02x:%02x:%02x:%02x:%02x:%02x]",
327327
s_gatts_conn_state_str[0],
328328
param->connect.remote_bda[0], param->connect.remote_bda[1],
329329
param->connect.remote_bda[2], param->connect.remote_bda[3],

0 commit comments

Comments
 (0)