增加AI对话取消对话在蓝牙层级保护,避免出现误取消,以及未结束继续对话的情况
authorhcj <1224667075@qq.com>
Thu, 29 Aug 2024 02:11:25 +0000 (10:11 +0800)
committerhcj <1224667075@qq.com>
Thu, 29 Aug 2024 02:11:25 +0000 (10:11 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h

index 36dd7ad..67178c0 100644 (file)
@@ -467,18 +467,34 @@ void sendtraningdata(msg_get_train_data_info_t *data)
     \r
     cJSON_free(jsonString);\r
 }\r
+\r
+static uint8_t AI_is_end_state=0;\r
 //发送AI录音准备就绪国内/\r
 /*使用模型:\r
 0:文心一言\r
 1:ChatGPT\r
 2:KIMI\r
 3:豆包*/\r
-void send_AI_is_ready(uint8_t type)\r
+bool send_AI_is_ready(uint8_t type)\r
 {\r
+    \r
+    if(AI_is_end_state==0)\r
+    {  \r
+        printf("发送AI准备就绪\r\n");\r
+        ble_data_type type_={0x05,0x05,1,1,1};\r
+        send_big_data(type_,(char *)&type,1);\r
+        AI_is_end_state=1;\r
+        return true;\r
+\r
+    }\r
+    else\r
+    {\r
+        printf("发送AI准备就绪失败,没有正确回复结束\r\n");\r
+        return false;\r
+    }\r
   \r
-    printf("发送AI准备就绪\r\n");\r
-     ble_data_type type_={0x05,0x05,1,1,1};\r
-    send_big_data(type_,(char *)&type,1);\r
+\r
+\r
 \r
     //send_big_data(0, (char *)&type, 1, 1, 1, 1, 0x05, 5);\r
 }\r
@@ -499,11 +515,20 @@ void inquire_AI_is_ready(uint8_t type)
 \r
 void cancel_AI_cur_chat(void)\r
 {\r
-  \r
-    printf("取消当前AI对话\r\n");\r
-    uint8_t data=1;\r
-    ble_data_type type_={0x05,0x07,data_len,1,1};\r
-    send_big_data(type_,(char *)&data,data_len);\r
+    if(AI_is_end_state)\r
+    {\r
+        printf("取消当前AI对话\r\n");\r
+        uint8_t data=1;\r
+        ble_data_type type_={0x05,0x07,data_len,1,1};\r
+        send_big_data(type_,(char *)&data,data_len);\r
+        AI_is_end_state=0;\r
+        \r
+    }\r
+    else\r
+    {\r
+        printf("已经取消当前AI对话无需再次取消\r\n");\r
+    }\r
+    \r
 \r
     //send_big_data(0, (char *)&data, 1, 1, 1, 1, 0x07, 5);\r
 }\r
@@ -2351,6 +2376,11 @@ uint8_t binCheck_AI(uint8_t *buf,uint8_t *check,uint16_t len)//json 格式解析
 \r
         if(buf[offset]==4)\r
        {\r
+            printf("AI 结束\r\n");\r
+            if(AI_is_end_state)\r
+            {\r
+                AI_is_end_state=0;\r
+            }\r
             offset++;\r
             if(offset>=len)\r
             {\r
index 16a2514..c6220eb 100644 (file)
@@ -806,7 +806,7 @@ void message_data(int uid,int appid,char  *title,char  *msg,int hasCode);
 
 void CustomEventPublish_TOPIC_EVENT_MESSAGENOTE(void* data);
 
-void send_AI_is_ready(uint8_t type);
+bool send_AI_is_ready(uint8_t type);
 
 void inquire_AI_is_ready(uint8_t type);