|
@ -557,21 +557,23 @@ static void gatts_profile_a_event_handler(esp_gatts_cb_event_t event, esp_gatt_i |
|
|
|
|
|
|
|
|
//实际只让接收profile_b_buffer_size-1个 |
|
|
//实际只让接收profile_b_buffer_size-1个 |
|
|
#define profile_b_buffer_size 100 |
|
|
#define profile_b_buffer_size 100 |
|
|
char gatts_profile_b_write_buffer[profile_b_buffer_size] = {0}; |
|
|
|
|
|
uint8_t gatts_profile_b_write_buffer_len = 0; |
|
|
|
|
|
|
|
|
char bluetooth_rx_buffer[profile_b_buffer_size] = {0}; |
|
|
|
|
|
uint8_t bluetooth_rx_buffer_len = 0; |
|
|
bool bluetooth_rx_off = false; |
|
|
bool bluetooth_rx_off = false; |
|
|
|
|
|
|
|
|
bool flag = true; |
|
|
bool flag = true; |
|
|
uint32_t total = 0; |
|
|
uint32_t total = 0; |
|
|
#define timer_interval_num 2 |
|
|
|
|
|
|
|
|
#define timer_interval_num 100 |
|
|
#define timer_interval_s (uint32_t)1000000 |
|
|
#define timer_interval_s (uint32_t)1000000 |
|
|
#define timer_interval_ms (uint32_t)1000 |
|
|
#define timer_interval_ms (uint32_t)1000 |
|
|
#define timer_interval_us (uint32_t)1 |
|
|
#define timer_interval_us (uint32_t)1 |
|
|
|
|
|
|
|
|
|
|
|
void bluetooth_gatts_try_process_data(); |
|
|
|
|
|
|
|
|
void buffer_all_init() |
|
|
void buffer_all_init() |
|
|
{ |
|
|
{ |
|
|
gatts_profile_b_write_buffer_len = 0; |
|
|
|
|
|
memset(gatts_profile_b_write_buffer, 0, profile_b_buffer_size); |
|
|
|
|
|
|
|
|
bluetooth_rx_buffer_len = 0; |
|
|
|
|
|
memset(bluetooth_rx_buffer, 0, profile_b_buffer_size); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void timer_set_pause_and_counter_zero(int group, int timer) |
|
|
void timer_set_pause_and_counter_zero(int group, int timer) |
|
@ -612,38 +614,26 @@ static void gatts_profile_b_event_handler(esp_gatts_cb_event_t event, esp_gatt_i |
|
|
} |
|
|
} |
|
|
case ESP_GATTS_WRITE_EVT: |
|
|
case ESP_GATTS_WRITE_EVT: |
|
|
{ |
|
|
{ |
|
|
// if ((gatts_profile_b_write_buffer_len+param->write.len > profile_b_buffer_size)) |
|
|
|
|
|
// { |
|
|
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
if (bluetooth_rx_off == false) |
|
|
if (bluetooth_rx_off == false) |
|
|
{ |
|
|
{ |
|
|
timer_set_pause_and_counter_zero(TIMER_GROUP_0, TIMER_0); |
|
|
timer_set_pause_and_counter_zero(TIMER_GROUP_0, TIMER_0); |
|
|
timer_start(TIMER_GROUP_0, TIMER_0); |
|
|
timer_start(TIMER_GROUP_0, TIMER_0); |
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
ESP_LOGI("!!!", "%s", &gatts_profile_b_write_buffer[0]); |
|
|
|
|
|
bluetooth_rx_off = false; |
|
|
|
|
|
timer_set_pause_and_counter_zero(TIMER_GROUP_0, TIMER_0); |
|
|
|
|
|
buffer_all_init(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, conn_id %d, trans_id %d, handle %d\n", param->write.conn_id, param->write.trans_id, param->write.handle); |
|
|
|
|
|
if (!param->write.is_prep) |
|
|
|
|
|
{ |
|
|
|
|
|
ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, value len %d, value :", param->write.len); |
|
|
|
|
|
esp_log_buffer_hex(GATTS_TAG, param->write.value, param->write.len); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < param->write.len; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
bluetooth_rx_buffer[bluetooth_rx_buffer_len++] = param->write.value[i]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
example_write_event_env(gatts_if, &b_prepare_write_env, param); |
|
|
example_write_event_env(gatts_if, &b_prepare_write_env, param); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, conn_id %d, trans_id %d, handle %d\n", param->write.conn_id, param->write.trans_id, param->write.handle); |
|
|
|
|
|
if (!param->write.is_prep) |
|
|
|
|
|
{ |
|
|
|
|
|
ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, value len %d, value :", param->write.len); |
|
|
|
|
|
esp_log_buffer_hex(GATTS_TAG, param->write.value, param->write.len); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < param->write.len; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
gatts_profile_b_write_buffer[gatts_profile_b_write_buffer_len++] = param->write.value[i]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
example_write_event_env(gatts_if, &b_prepare_write_env, param); |
|
|
example_write_event_env(gatts_if, &b_prepare_write_env, param); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
@ -814,7 +804,7 @@ void app_main(void) |
|
|
{ |
|
|
{ |
|
|
esp_err_t ret; |
|
|
esp_err_t ret; |
|
|
|
|
|
|
|
|
timer_group_init(TIMER_GROUP_0, TIMER_0, true, timer_interval_num, timer_interval_s); |
|
|
|
|
|
|
|
|
timer_group_init(TIMER_GROUP_0, TIMER_0, true, timer_interval_num, timer_interval_ms); |
|
|
|
|
|
|
|
|
// Initialize NVS. |
|
|
// Initialize NVS. |
|
|
ret = nvs_flash_init(); |
|
|
ret = nvs_flash_init(); |
|
@ -901,7 +891,20 @@ void app_main(void) |
|
|
|
|
|
|
|
|
void bluetooth_gatts_try_process_data() |
|
|
void bluetooth_gatts_try_process_data() |
|
|
{ |
|
|
{ |
|
|
|
|
|
//接收完毕 |
|
|
if (bluetooth_rx_off) |
|
|
if (bluetooth_rx_off) |
|
|
{ |
|
|
{ |
|
|
|
|
|
//关闭定时器 |
|
|
|
|
|
timer_set_pause_and_counter_zero(TIMER_GROUP_0, TIMER_0); |
|
|
|
|
|
//打印输出 |
|
|
|
|
|
ESP_LOGI(GATTS_TAG, "%s", &bluetooth_rx_buffer[0]); |
|
|
|
|
|
//验证数据 |
|
|
|
|
|
|
|
|
|
|
|
//处理数据 |
|
|
|
|
|
|
|
|
|
|
|
//接收标志位设为未接收 |
|
|
|
|
|
bluetooth_rx_off = false; |
|
|
|
|
|
//buffer置0 |
|
|
|
|
|
buffer_all_init(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |