Browse Source

bugfixed 添加正在解析数据标志位

master
zwsd 3 years ago
parent
commit
4a300a0bc7
  1. 61
      main/gatts_demo.c

61
main/gatts_demo.c

@ -201,6 +201,7 @@ void example_exec_write_event_env(prepare_type_env_t *prepare_write_env, esp_ble
#define profile_b_buffer_size 100 #define profile_b_buffer_size 100
char bluetooth_rx_buffer[profile_b_buffer_size] = {0}; char bluetooth_rx_buffer[profile_b_buffer_size] = {0};
uint8_t bluetooth_rx_buffer_len = 0; uint8_t bluetooth_rx_buffer_len = 0;
bool bluetooth_rx_buffer_start_receving = false;
bool bluetooth_rx_buffer_processing = false; bool bluetooth_rx_buffer_processing = false;
bool flag = true; bool flag = true;
@ -711,7 +712,7 @@ static void gatts_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_t gatts_
***********************************************************************************************************************/ ***********************************************************************************************************************/
// static bool IRAM_ATTR timer_group_isr_callback(void *args) // static bool IRAM_ATTR timer_group_isr_callback(void *args)
// { // {
// bluetooth_rx_buffer_processing = true;
// bluetooth_rx_buffer_start_receving = true;
// return pdFALSE; // return pdFALSE;
// } // }
@ -873,24 +874,25 @@ void bluetooth_gatts_try_process_data()
cJSON *json_tmp; cJSON *json_tmp;
cJSON *ch; cJSON *ch;
// //
if (bluetooth_rx_buffer_processing)
if (bluetooth_rx_buffer_start_receving)
{ {
// //
port_timer_delay_ms(100);
port_timer_delay_ms(200);
bluetooth_rx_buffer_processing = true;
// //
ESP_LOGI(GATTS_TAG, "%s", &bluetooth_rx_buffer[0]); ESP_LOGI(GATTS_TAG, "%s", &bluetooth_rx_buffer[0]);
//
//
json_tmp = cJSON_Parse(&bluetooth_rx_buffer[0]); json_tmp = cJSON_Parse(&bluetooth_rx_buffer[0]);
//
if (json_tmp == NULL) if (json_tmp == NULL)
{ {
ESP_LOGE("ERROR", "json_tmp null"); ESP_LOGE("ERROR", "json_tmp null");
cJSON_Delete(json_tmp); cJSON_Delete(json_tmp);
buffer_all_init(); buffer_all_init();
bluetooth_rx_buffer_start_receving = false;
bluetooth_rx_buffer_processing = false; bluetooth_rx_buffer_processing = false;
while (1)
{
}
return; return;
} }
ch = json_tmp->child; ch = json_tmp->child;
@ -900,37 +902,33 @@ void bluetooth_gatts_try_process_data()
ESP_LOGI(GATTS_TAG, "%s", ch->string); ESP_LOGI(GATTS_TAG, "%s", ch->string);
if (strcmp(ch->string, "order") == 0) if (strcmp(ch->string, "order") == 0)
{ {
ESP_LOGI("!!!!!!!!", "##############");
ESP_LOGI("receve", "order");
}
if (strcmp(ch->string, "index") == 0)
{
ESP_LOGI("receve", "index");
}
if (strcmp(ch->string, "speedLevel") == 0)
{
ESP_LOGI("receve", "speedLevel");
}
if (strcmp(ch->string, "position") == 0)
{
ESP_LOGI("receve", "position");
}
if (strcmp(ch->string, "direction") == 0)
{
ESP_LOGI("receve", "direction");
} }
ch = ch->next; ch = ch->next;
} }
// if (validation_param(json_tmp, "order"))
// {
// ESP_LOGI("JSON", "order value:%s", cJSON_GetObjectItem(json_tmp, "order")->valuestring);
// }
// if (validation_param(json_tmp, "index"))
// {
// ESP_LOGI("JSON", "index value:%d", cJSON_GetObjectItem(json_tmp, "index")->valueint);
// }
// if (validation_param(json_tmp, "speedLevel"))
// {
// ESP_LOGI("JSON", "speedLevel value:%d", cJSON_GetObjectItem(json_tmp, "speedLevel")->valueint);
// }
// if (validation_param(json_tmp, "position"))
// {
// ESP_LOGI("JSON", "position value:%lf", cJSON_GetObjectItem(json_tmp, "position")->valuedouble);
// }
// if (validation_param(json_tmp, "direction"))
// {
// ESP_LOGI("JSON", "direction value:%d", cJSON_GetObjectItem(json_tmp, "direction")->valueint);
// }
// //
cJSON_Delete(json_tmp); cJSON_Delete(json_tmp);
// buffer置0 // buffer置0
buffer_all_init(); buffer_all_init();
// //
bluetooth_rx_buffer_start_receving = false;
bluetooth_rx_buffer_processing = false; bluetooth_rx_buffer_processing = false;
} }
} }
@ -951,7 +949,7 @@ void port_timer_delay_ms(uint64_t delay)
void start_receive_data_to_buffer(uint16_t length, uint8_t *value) void start_receive_data_to_buffer(uint16_t length, uint8_t *value)
{ {
bluetooth_rx_buffer_processing = true;
bluetooth_rx_buffer_start_receving = true;
timer_set_counter_value(TIMER_GROUP_0, TIMER_0, 0); timer_set_counter_value(TIMER_GROUP_0, TIMER_0, 0);
//buffer越界 //buffer越界
if ((length + bluetooth_rx_buffer_len) > profile_b_buffer_size) if ((length + bluetooth_rx_buffer_len) > profile_b_buffer_size)
@ -959,9 +957,12 @@ void start_receive_data_to_buffer(uint16_t length, uint8_t *value)
return; return;
} }
if (!bluetooth_rx_buffer_processing)
{
//buffer //buffer
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
{ {
bluetooth_rx_buffer[bluetooth_rx_buffer_len++] = value[i]; bluetooth_rx_buffer[bluetooth_rx_buffer_len++] = value[i];
} }
} }
}
Loading…
Cancel
Save