static errcode_t save_package_sample(ble_read_data *buffer_handle,uint8_t *data, uint16_t event_size)\r
{\r
\r
- int cmp_len = 5;\r
- if (event_size < 5)\r
+ //保存前 4 bytes + 最后 1 byte\r
+ int save_len = 4;\r
+ uint8_t last_byte = calculate_lrc(data,event_size,0x00);\r
+ if (event_size < 4)\r
{\r
- cmp_len = event_size;\r
+ save_len = event_size;\r
}\r
memset(buffer_handle->last_data_sample,0,sizeof(buffer_handle->last_data_sample));\r
buffer_handle->last_data_size = event_size;\r
- memcpy_s(buffer_handle->last_data_sample,sizeof(buffer_handle->last_data_sample),data,cmp_len);\r
+ memcpy_s(buffer_handle->last_data_sample,sizeof(buffer_handle->last_data_sample),data,save_len);\r
+ buffer_handle->last_data_sample[4]=last_byte;\r
\r
return ERRCODE_SUCC;\r
}\r
static errcode_t check_package_same(uint8_t* lastdata,uint8_t *newdata , uint16_t cmp_size)\r
{\r
\r
- int cmp_len = 5;\r
- if (cmp_size < 5)\r
+\r
+ //对比前 4 bytes + 最后 1 byte \r
+ int save_len = 4;\r
+ uint8_t current_sample_data[5];\r
+ uint8_t last_byte = calculate_lrc(newdata,cmp_size,0x00);\r
+ if (cmp_size < 4)\r
{\r
- cmp_len = cmp_size;\r
+ save_len = cmp_size;\r
}\r
- if (memcmp(lastdata,newdata,cmp_len)==0)\r
+ memset(current_sample_data,0,sizeof(current_sample_data)); \r
+ memcpy_s(current_sample_data,sizeof(current_sample_data),newdata,save_len);\r
+ current_sample_data[4]=last_byte;\r
+ \r
+ if (memcmp(lastdata,newdata,5)==0)\r
{\r
return ERRCODE_SUCC;\r
}else{\r
{\r
if (check_package_same(buffer_handle->last_data_sample,data,event_size) == ERRCODE_SUCC)\r
{\r
+ printf("Error handle_recv_file recve same package header 0x%02X%02X%02X%02X end 0x%02X skip \n"\r
+ ,buffer_handle->last_data_sample[0]\r
+ ,buffer_handle->last_data_sample[1]\r
+ ,buffer_handle->last_data_sample[2]\r
+ ,buffer_handle->last_data_sample[3]\r
+ ,buffer_handle->last_data_sample[4]);\r
return ERRCODE_FAIL;\r
}\r
}\r