From fc7d693be43f1514f950bbb28924feeb0b29864e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E4=BC=A0=E5=86=9B?= <1224667075@qq.com> Date: Fri, 12 Jul 2024 11:18:48 +0000 Subject: [PATCH] Merge #514 into sdk602patch0626 from refs/changes/514/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 增加ai数据字符长度 * refs/changes/514/head: (2 commits squashed) - 增加ai数据字符长度 - 修复AI数据bug 增加超时下载对文件操作 Signed-off-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/514 --- .../service/ble_service/bleservice/bleEvent.c | 69 ++++++++++++++----- 1 file changed, 50 insertions(+), 19 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 879b667db..92af0fb98 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -48,6 +48,8 @@ extern "C" { #define JSON_CHECK_OK 1 //json解析成功 #define JSON_CHECK_ERR 2 //json解析失败 +#define AI_TXT_BUF_MAX_LEN 1024*3 //json解析失败 + uint8_t *bigDataBuf = NULL;//大数据buf uint8_t bigDataBufLen=0; bool sendbigDataBufState = false;//发送大数据表示不要被其他指令打断 @@ -1995,7 +1997,7 @@ uint8_t binCheck_AI(uint8_t *buf,uint8_t *check,uint16_t len)//json 格式解析 { uint8_t flag = 0; // printf("jsonCheck_weather:len: json:%f jsonlen:%d\r\n",0.011,strlen((char *)json)); - #if 1 + #if 0 FILE *fp=fopen("user/AI.txt","wb+"); printf("binCheck_AI len %d\r\n",len); fwrite((void*)buf,1,len,fp); @@ -2014,13 +2016,15 @@ uint8_t binCheck_AI(uint8_t *buf,uint8_t *check,uint16_t len)//json 格式解析 memcpy_s(&txt_len,2,&buf[offset],2); offset+=2; - char txt_buf[128]={0}; - memcpy_s(txt_buf,128,&buf[offset],txt_len); - printf("binCheck_AI txtbuf:%s %d\r\n",txt_buf,txt_len); + char txt_buf[256]={0}; + memcpy_s(txt_buf,256,&buf[offset],txt_len); + printf("binCheck_AI Question txtbuf:%s %d\r\n",txt_buf,txt_len); ble_set_ai_Question_str(txt_buf); offset+=txt_len; //offset+=1; } + if(offset>=len)break; + if(buf[offset]==2) { offset++; @@ -2029,24 +2033,35 @@ uint8_t binCheck_AI(uint8_t *buf,uint8_t *check,uint16_t len)//json 格式解析 offset+=2; - char txt_buf[128]={0}; - memcpy_s(txt_buf,128,&buf[offset],txt_len); - printf("binCheck_AI txtbuf %s %d\r\n",txt_buf,txt_len); + if(txt_len>=AI_TXT_BUF_MAX_LEN) + txt_len=AI_TXT_BUF_MAX_LEN; + + char *txt_buf=(char*)malloc(txt_len+1); + if(txt_buf==NULL) + { + printf("binCheck_AI txtbuf malloc fail\r\n"); + ble_set_ai_Answer_str("手表缓存不足"); + return 0; + } + + txt_buf[txt_len]=0; + memcpy_s((char *)txt_buf,1024*3,&buf[offset],txt_len); + + printf("binCheck_AI txtbuf Answer %s %d\r\n",txt_buf,txt_len); ble_set_ai_Answer_str(txt_buf); + free(txt_buf); + offset+=txt_len; //offset+=1; } - if(offset>=len) - { - break; - } + if(offset>=len)break; if(buf[offset]==0) { printf("AI 解析失败\r\n"); - offset++; - break; } - offset++; + + if(offset>=len)break; + offset++; } *check = 1; @@ -6045,6 +6060,7 @@ errcode_t cancel_recv_file(ble_read_data *buffer_handle) static uint8_t timer_flie_type=0; static uint32_t timer_flie_flag=0; +ble_read_data* ble_read_timer_p=NULL; static void ble_transfer_Timer_CallBack(int data) { timer_flie_flag--; @@ -6063,6 +6079,23 @@ static void ble_transfer_Timer_CallBack(int data) { TRANSMIT_DATA=TRANS_FREE; } + if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。 + { + + if (ble_read_timer_p->file_recv_stat.file!=NULL) + { + fclose(ble_read_timer_p->file_recv_stat.file); + ble_read_timer_p->file_recv_stat.file = NULL; + } + if (ble_read_timer_p->file_recv_stat.file_name != NULL) + { + free(ble_read_timer_p->file_recv_stat.file_name); + ble_read_timer_p->file_recv_stat.file_name=NULL; + } + ble_read_timer_p->file_recv_stat.recv_file_stat = -1; + + ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败 + } CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1); if(BR_TRANSFER_timer) { @@ -6183,7 +6216,8 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t BR_TRANSFER_timer = NULL; } timer_flie_type=buffer_handle->file_recv_stat.file_type; - timer_flie_flag=3; + ble_read_timer_p=buffer_handle; + timer_flie_flag=10; BR_TRANSFER_timer = osTimerNew((osTimerFunc_t)ble_transfer_Timer_CallBack, osTimerPeriodic, NULL, NULL); tick =1000;// osMs2Tick(1000); @@ -6195,10 +6229,7 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t return ERRCODE_FAIL; } /////////////////////////////////////////////////////////// - - } - if (buffer_handle->file_recv_stat.file == NULL) { printf("6194 buffer_handle->file_recv_stat.file \n"); @@ -6222,7 +6253,7 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t } //检查文件是否写完 - if(buffer_handle->file_recv_stat.file_size == buffer_handle->file_recv_stat.received_size ) + if(buffer_handle->file_recv_stat.file_size == buffer_handle->file_recv_stat.received_size) { if (buffer_handle->file_recv_stat.file!=NULL) { -- 2.17.1