|
|
@ -498,26 +498,27 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ |
|
|
|
esp_ble_gatts_create_attr_tab(spp_gatt_db, gatts_if, SPP_IDX_NB, SPP_SVC_INST_ID); |
|
|
|
break; |
|
|
|
case ESP_GATTS_READ_EVT: |
|
|
|
res = find_char_and_desr_index(p_data->read.handle); |
|
|
|
if (res == SPP_IDX_SPP_STATUS_VAL) { |
|
|
|
// TODO:client read the status characteristic |
|
|
|
} |
|
|
|
// res = find_char_and_desr_index(p_data->read.handle); |
|
|
|
// if (res == SPP_IDX_SPP_STATUS_VAL) { |
|
|
|
// // TODO:client read the status characteristic |
|
|
|
// } |
|
|
|
break; |
|
|
|
case ESP_GATTS_WRITE_EVT: { |
|
|
|
res = find_char_and_desr_index(p_data->write.handle); |
|
|
|
if (p_data->write.is_prep == false) { |
|
|
|
ESP_LOGI(GATTS_TABLE_TAG, "ESP_GATTS_WRITE_EVT : handle = %d\n", res); |
|
|
|
if (res == SPP_IDX_SPP_COMMAND_VAL) { |
|
|
|
uint8_t *spp_cmd_buff = NULL; |
|
|
|
spp_cmd_buff = (uint8_t *)malloc((spp_mtu_size - 3) * sizeof(uint8_t)); |
|
|
|
if (spp_cmd_buff == NULL) { |
|
|
|
ESP_LOGE(GATTS_TABLE_TAG, "%s malloc failed\n", __func__); |
|
|
|
break; |
|
|
|
} |
|
|
|
memset(spp_cmd_buff, 0x0, (spp_mtu_size - 3)); |
|
|
|
memcpy(spp_cmd_buff, p_data->write.value, p_data->write.len); |
|
|
|
xQueueSend(cmd_cmd_queue, &spp_cmd_buff, 10 / portTICK_PERIOD_MS); |
|
|
|
} else if (res == SPP_IDX_SPP_DATA_NTF_CFG) { |
|
|
|
// if (res == SPP_IDX_SPP_COMMAND_VAL) { |
|
|
|
// uint8_t *spp_cmd_buff = NULL; |
|
|
|
// spp_cmd_buff = (uint8_t *)malloc((spp_mtu_size - 3) * sizeof(uint8_t)); |
|
|
|
// if (spp_cmd_buff == NULL) { |
|
|
|
// ESP_LOGE(GATTS_TABLE_TAG, "%s malloc failed\n", __func__); |
|
|
|
// break; |
|
|
|
// } |
|
|
|
// memset(spp_cmd_buff, 0x0, (spp_mtu_size - 3)); |
|
|
|
// memcpy(spp_cmd_buff, p_data->write.value, p_data->write.len); |
|
|
|
// xQueueSend(cmd_cmd_queue, &spp_cmd_buff, 10 / portTICK_PERIOD_MS); |
|
|
|
// } else if (res == SPP_IDX_SPP_DATA_NTF_CFG) { |
|
|
|
if (res == SPP_IDX_SPP_DATA_NTF_CFG) { |
|
|
|
if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x01) && (p_data->write.value[1] == 0x00)) { |
|
|
|
enable_data_ntf = true; |
|
|
|
} else if ((p_data->write.len == 2) && (p_data->write.value[0] == 0x00) && (p_data->write.value[1] == 0x00)) { |
|
|
|