diff --git a/main/gatts_demo.c b/main/gatts_demo.c index abbf5a2..9e5b982 100644 --- a/main/gatts_demo.c +++ b/main/gatts_demo.c @@ -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个 #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 flag = true; uint32_t total = 0; -#define timer_interval_num 2 +#define timer_interval_num 100 #define timer_interval_s (uint32_t)1000000 #define timer_interval_ms (uint32_t)1000 #define timer_interval_us (uint32_t)1 +void bluetooth_gatts_try_process_data(); + 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) @@ -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: { - // if ((gatts_profile_b_write_buffer_len+param->write.len > profile_b_buffer_size)) - // { - - // } - if (bluetooth_rx_off == false) { timer_set_pause_and_counter_zero(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); 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); break; } @@ -814,7 +804,7 @@ void app_main(void) { 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. ret = nvs_flash_init(); @@ -901,7 +891,20 @@ void app_main(void) void bluetooth_gatts_try_process_data() { + //接收完毕 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(); } } \ No newline at end of file