增加应用市场协议部分
authorhcj <1224667075@qq.com>
Mon, 19 May 2025 06:41:38 +0000 (14:41 +0800)
committerhcj <1224667075@qq.com>
Mon, 19 May 2025 06:41:38 +0000 (14:41 +0800)
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.cpp
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.c
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.h

index 2c85668..ecbebe9 100644 (file)
@@ -1235,7 +1235,7 @@ void ble_bin_install(void)
 }
 
 
-void ble_app_delete(char *data)
+bool ble_app_delete(char *data)
 {
      return bleInstruct_t.ble_app_delete(data);
 }
@@ -1246,6 +1246,11 @@ cJSON* ble_app_list(void)
     return bleInstruct_t.ble_app_list();
 }
 
+cJSON* ble_get_watch_msg(void)
+{
+    return bleInstruct_t.ble_get_watch_msg();
+}
+
 
 
 #endif
index 9865202..2ae025a 100644 (file)
@@ -633,10 +633,12 @@ typedef struct bleInstruct
 
     void (*ble_bin_install)(void);
 
-    void (*ble_app_delete)(char * data);
+    bool (*ble_app_delete)(char * data);
 
     cJSON* (*ble_app_list)(void);
 
+    cJSON* (*ble_get_watch_msg)(void);
+
 }  bleInstruct_t_;
 
 extern bleInstruct_t_ bleInstruct_t;
@@ -647,6 +649,10 @@ void ble_instruct_init(void);
 
 void ble_mp3_init(void);
 
+bool ble_app_delete(char *data);
+
+cJSON* ble_app_list(void);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index d745430..dd706a8 100644 (file)
@@ -483,6 +483,47 @@ void send_big_data(ble_data_type type,char *data, uint16 datalen)
     ym_free(buf); // 释放内存空间\r
 }\r
 \r
+void send_long_data(char *buf, uint32_t pack_size,uint8_t type,uint8_t id)\r
+{\r
+    uint32_t data_len = strlen(buf);\r
+    uint32_t surplus_len=data_len;\r
+    uint32_t pack;\r
+    if(data_len%pack_size==0)\r
+    {\r
+        pack=data_len/pack_size;\r
+    }\r
+    else\r
+    {   \r
+        pack=data_len/pack_size+1;\r
+    }\r
+    uint32_t pack_id=1;\r
+    uint32_t offset=0;\r
+    while (surplus_len!=0)\r
+    {\r
+        if(surplus_len>=pack_size)\r
+        {\r
+            surplus_len=surplus_len-pack_size;\r
+\r
+            ble_data_type type_={type,id,data_len,pack,pack_id};\r
+            send_big_data(type_,buf+offset,pack_size);\r
+\r
+            //send_big_data(1,json_format+offset,pack_size,data_len,pack_id,pack,id,1);\r
+            offset+=pack_size;\r
+        }\r
+        else\r
+        {\r
+            \r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%d %d %d %d\r\n",data_len,surplus_len,pack_id,pack);\r
+            ble_data_type type_={type,id,data_len,pack,pack_id};\r
+            send_big_data(type_,buf+offset,surplus_len);\r
+            //send_big_data(1,json_format+offset,surplus_len,data_len,pack_id,pack,id,1);\r
+            break;\r
+        }\r
+        pack_id++;\r
+    }\r
+}\r
+\r
+ \r
 \r
 bool is_free_ota_update(uint32_t size)\r
 {\r
@@ -7713,6 +7754,113 @@ bool Read_tar_file_buf_send_Data(uint16_t pack_size,uint8_t id)
 }\r
 \r
 \r
+void delete_app(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t crcvalue)\r
+{\r
+    \r
+       if(Check_CRC(data,len,crcvalue))\r
+       {\r
+        if(ble_app_delete(data))\r
+        {\r
+            ble_reply_cmd(cmd,1);\r
+        }\r
+        else\r
+        {\r
+            ble_reply_cmd(cmd,2);\r
+        }\r
+\r
+    }\r
+       else\r
+       {\r
+               ble_reply_cmd(cmd,0);\r
+    }\r
+    \r
+}\r
+\r
+void get_app_list(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t crcvalue)\r
+{\r
+    \r
+       if(Check_CRC(data,len,crcvalue))\r
+       {\r
+        cJSON *jdata=ble_app_list();\r
+\r
+        if(jdata)\r
+        {\r
+            \r
+            char *jsonString = cJSON_PrintUnformatted(jdata);\r
+            \r
+            if (jsonString == NULL) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error printing JSON to string\n");\r
+                cJSON_Delete(jdata);\r
+                return;\r
+            }\r
+            \r
+            uint32_t data_len = strlen(jsonString);\r
+            cJSON_Delete(jdata);\r
+            \r
+            if (data_len == 0) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: JSON string length is 0\n");\r
+                return;\r
+            }\r
+            int num=(ble_nus_max_data_len-18); \r
+            if(num>482)num=482;\r
+\r
+            send_long_data(jsonString,num,0x06,0x0E);\r
+\r
+            cJSON_free(jsonString);\r
+        }\r
+\r
+\r
+    }\r
+       else\r
+       {\r
+               ble_reply_cmd(cmd,0);\r
+    }\r
+    \r
+}\r
+\r
+void get_watch_msg(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t crcvalue)\r
+{\r
+    \r
+       if(Check_CRC(data,len,crcvalue))\r
+       {\r
+        cJSON *jdata=ble_get_watch_msg();\r
+\r
+        if(jdata)\r
+        {\r
+            \r
+            char *jsonString = cJSON_PrintUnformatted(jdata);\r
+            \r
+            if (jsonString == NULL) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error printing JSON to string\n");\r
+                cJSON_Delete(jdata);\r
+                return;\r
+            }\r
+            \r
+            uint32_t data_len = strlen(jsonString);\r
+            cJSON_Delete(jdata);\r
+            \r
+            if (data_len == 0) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: JSON string length is 0\n");\r
+                return;\r
+            }\r
+            int num=(ble_nus_max_data_len-18); \r
+            if(num>482)num=482;\r
+\r
+            send_long_data(jsonString,num,0x06,0x0E);\r
+\r
+            cJSON_free(jsonString);\r
+        }\r
+\r
+\r
+    }\r
+       else\r
+       {\r
+               ble_reply_cmd(cmd,0);\r
+    }\r
+    \r
+}\r
+\r
+\r
 bool read_dir_send_json()\r
 {\r
    \r
@@ -8195,7 +8343,21 @@ void type2AE6Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u
             break;\r
             \r
         case OTA_FILE_FAIL_CMD :\r
+\r
             break;\r
+\r
+       case APP_DELETE_CMD  :\r
+            delete_app( cmd, *data,datalen,crcvalue);\r
+            break;          \r
+        case GET_LIST_CMD :\r
+\r
+            get_app_list( cmd, *data,datalen,crcvalue);\r
+\r
+            break;          \r
+        case GET_APP_MSG_CMD:\r
+            get_watch_msg( cmd, *data,datalen,crcvalue);\r
+\r
+            break;         \r
         default:\r
             break;\r
     }\r
index 5265292..c003899 100644 (file)
@@ -869,6 +869,10 @@ uint8_t Calculate_CRC_Big(uint8_t *data,uint16_t len);//计算20byte
 #define FILE_CANCEL_TRANSFER    0x060B
 #define BIN_FILE_CMD            0x060C
 
+#define APP_DELETE_CMD            0x060D
+#define GET_LIST_CMD            0x060E
+#define GET_APP_MSG_CMD            0x060F
+
 #ifdef __cplusplus
 }
 #endif