From 126c1f16c460e14cd4c2953f52a926a1c7ce4a8e Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Mon, 8 Jul 2024 09:54:38 +0800 Subject: [PATCH] =?utf8?q?=E6=96=87=E4=BB=B6=E6=8E=A5=E6=94=B6=E9=80=9A?= =?utf8?q?=E8=BF=87=E8=AE=B0=E5=BD=95=E5=89=8D=E5=9B=9B=E4=B8=AA=E5=AD=97?= =?utf8?q?=E8=8A=82=E5=92=8CCRC=E5=80=BC=E7=9A=84=E6=96=B9=E5=BC=8F?= =?utf8?q?=E5=88=A4=E5=AE=9A=E6=98=AF=E5=90=A6=E5=B7=B2=E9=87=8D=E5=A4=8D?= =?utf8?q?=E3=80=82=E8=A7=A3=E5=86=B3=E4=BC=A0=E8=BE=93=E6=95=B0=E6=8D=AE?= =?utf8?q?=E9=87=8D=E5=A4=8D=E9=80=A0=E6=88=90=E6=8E=A5=E6=94=B6=E6=96=87?= =?utf8?q?=E4=BB=B6=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../service/ble_service/bleservice/bleEvent.c | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 67a155547..30abfc8b4 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -6114,26 +6114,37 @@ void Set_OTA_recv_value() static errcode_t save_package_sample(ble_read_data *buffer_handle,uint8_t *data, uint16_t event_size) { - int cmp_len = 5; - if (event_size < 5) + //保存前 4 bytes + 最后 1 byte + int save_len = 4; + uint8_t last_byte = calculate_lrc(data,event_size,0x00); + if (event_size < 4) { - cmp_len = event_size; + save_len = event_size; } memset(buffer_handle->last_data_sample,0,sizeof(buffer_handle->last_data_sample)); buffer_handle->last_data_size = event_size; - memcpy_s(buffer_handle->last_data_sample,sizeof(buffer_handle->last_data_sample),data,cmp_len); + memcpy_s(buffer_handle->last_data_sample,sizeof(buffer_handle->last_data_sample),data,save_len); + buffer_handle->last_data_sample[4]=last_byte; return ERRCODE_SUCC; } static errcode_t check_package_same(uint8_t* lastdata,uint8_t *newdata , uint16_t cmp_size) { - int cmp_len = 5; - if (cmp_size < 5) + + //对比前 4 bytes + 最后 1 byte + int save_len = 4; + uint8_t current_sample_data[5]; + uint8_t last_byte = calculate_lrc(newdata,cmp_size,0x00); + if (cmp_size < 4) { - cmp_len = cmp_size; + save_len = cmp_size; } - if (memcmp(lastdata,newdata,cmp_len)==0) + memset(current_sample_data,0,sizeof(current_sample_data)); + memcpy_s(current_sample_data,sizeof(current_sample_data),newdata,save_len); + current_sample_data[4]=last_byte; + + if (memcmp(lastdata,newdata,5)==0) { return ERRCODE_SUCC; }else{ @@ -6149,6 +6160,12 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t { if (check_package_same(buffer_handle->last_data_sample,data,event_size) == ERRCODE_SUCC) { + printf("Error handle_recv_file recve same package header 0x%02X%02X%02X%02X end 0x%02X skip \n" + ,buffer_handle->last_data_sample[0] + ,buffer_handle->last_data_sample[1] + ,buffer_handle->last_data_sample[2] + ,buffer_handle->last_data_sample[3] + ,buffer_handle->last_data_sample[4]); return ERRCODE_FAIL; } } -- 2.17.1