对接文件读写锁 1085/1
authorhcj <1224667075@qq.com>
Thu, 3 Oct 2024 08:38:13 +0000 (16:38 +0800)
committerhcj <1224667075@qq.com>
Thu, 3 Oct 2024 08:38:13 +0000 (16:38 +0800)
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/utils/custom_runtime.c
code/sdk/drivers/peripheral/utils/custom_runtime.h

index c6b1df0..a030b10 100644 (file)
@@ -341,7 +341,6 @@ errcode_t sendBleData(uint8_t *buf,uint16_t len)
     #ifdef BLE_LOG\r
         printf("bigDataBufState:%d and  sendbigDataBufState %d\r\n",bigDataBufState,sendbigDataBufState);\r
     #endif\r
-    if(bigDataBufState == true || sendbigDataBufState == true)return ERRCODE_FAIL; //在手表发送分包数据时 手表不允许发指令给app\r
     if(Bleconnect == true )\r
     {\r
         ret = svr_ble_bt_gatts_noyify(buf,len);\r
@@ -2273,7 +2272,7 @@ void SYN_train_heart_datatCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *t
                 int num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
 \r
-                int num_check=file_size%6;\r
+                int num_check=file_size%5;\r
                 if(num_check!=0)\r
                 {\r
                     printf("数据有误 %d \r\n",cmd);\r
@@ -3303,7 +3302,7 @@ bool bin_Check_sos(uint8_t *data,uint16_t len)
     {\r
         free(name);\r
     }\r
-    \r
+\r
     ble_sos_data_save();\r
 \r
     return true;\r
@@ -6344,10 +6343,7 @@ void Read_BIN_file_buf_send_bin_Data(uint8_t day,uint32_t pack_size,uint16_t id)
 //手机app下发读设备数据指令\r
 void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
 {\r
-    // if()\r
-    // {\r
-\r
-    // }\r
+   \r
     uint8_t sendBuf[19];\r
     memset(sendBuf,0,19);\r
     uint8_t type = cmd/256;\r
@@ -6375,80 +6371,144 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u
         switch (bleSendTypeID)\r
         {\r
             case 0x40://同步心率历史数据\r
-\r
+                if(!uapi_dev_runtime_get_heartrate_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_HEART_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
 \r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
                 #ifdef BLE_LOG\r
                 printf("同步心率数据,每包最多:%d 数据 data:%d %d\r\n",num,data[0],len);\r
                 #endif\r
+                uapi_dev_runtime_set_heartrate_storage_status(1);\r
                 if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x40))\r
                 {\r
                     ble_data_type type_={0x01,0x40,0,1,1};\r
                     send_big_data(type_,NULL,0);\r
                 }\r
+                uapi_dev_runtime_set_heartrate_storage_status(0);\r
                 //send_big_data(1,NULL,0,0,1,1,0x40,1);\r
 \r
                 break;\r
             case 0x41://同步血氧历史数据\r
+                if(!uapi_dev_runtime_get_bloodoxygen_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_SPO2_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
 \r
 \r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
+                 uapi_dev_runtime_set_bloodoxygen_storage_status(1);\r
                 if(!Read_Health_BIN_file_buf_send_bin_Data(data[0],num,0x41))\r
                 {\r
                     ble_data_type type_={0x01,0x41,0,1,1};\r
                     send_big_data(type_,NULL,0);\r
                 }\r
+                 uapi_dev_runtime_set_bloodoxygen_storage_status(0);\r
 \r
                 break;\r
             case 0x43: //同步步数历史数据\r
+\r
+                if(uapi_dev_runtime_get_goal_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_STEP_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
             \r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
-                \r
+                 uapi_dev_runtime_set_goal_storage_status(1);\r
                  Read_BIN_file_buf_send_bin_Data(data[0],num,0x43);\r
+                  uapi_dev_runtime_set_goal_storage_status(0);\r
 \r
                 break;\r
             case 0x44://同步燃脂时间数据\r
+\r
+                if(uapi_dev_runtime_get_goal_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_FAT_BURN_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
+                 uapi_dev_runtime_set_goal_storage_status(1);\r
                  Read_BIN_file_buf_send_bin_Data(data[0],num,0x44);\r
+                  uapi_dev_runtime_set_goal_storage_status(0);\r
                 break;\r
             case 0x45://同步站立历史数据\r
 \r
+                if(uapi_dev_runtime_get_goal_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_STAND_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
+\r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)\r
                 {\r
                     num=482;\r
                 }\r
+                 uapi_dev_runtime_set_goal_storage_status(1);\r
                  Read_BIN_file_buf_send_bin_Data(data[0],num,0x45);\r
+                  uapi_dev_runtime_set_goal_storage_status(0);\r
 \r
                 break;\r
             case 0x46://同步卡路里历史数据\r
+                 if(uapi_dev_runtime_get_goal_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_KCAL_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)\r
                 {\r
                     num=482;\r
                 }\r
+                 uapi_dev_runtime_set_goal_storage_status(1);\r
                 Read_BIN_file_buf_send_bin_Data(data[0],num,0x46);\r
+                 uapi_dev_runtime_set_goal_storage_status(0);\r
                 break;\r
             case 0x47://同步距离历史数据\r
+\r
+                if(uapi_dev_runtime_get_goal_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_DIS_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
                  num=(ble_nus_max_data_len-18);\r
                 if(num>482)\r
                 {\r
                     num=482;\r
                 }\r
+                 uapi_dev_runtime_set_goal_storage_status(1);\r
                 Read_BIN_file_buf_send_bin_Data(data[0],num,0x47);\r
+                 uapi_dev_runtime_set_goal_storage_status(0);\r
                 break;\r
             case 0x49://同步基础训练历史数据\r
+\r
+                if(uapi_dev_runtime_get_train_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_BASIC_TRANIN_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)\r
                 {\r
                     num=482;\r
                 }\r
+                 uapi_dev_runtime_set_train_storage_status(1);\r
                 Send_json_Data_Cmd(data[0],num,0x49);\r
+                 uapi_dev_runtime_set_train_storage_status(0);\r
                 break;\r
             case 0x01://同步闹钟\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
@@ -6460,10 +6520,19 @@ void readDevDataBle(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,u
                 Send_json_Data_Cmd(data[0],num,0x01);\r
                 break;\r
             case 0x4b://睡眠历史数据\r
+\r
+                if(uapi_dev_runtime_get_sleep_storage_status())\r
+                {\r
+                    ble_reply_cmdarr(SYN_SLEEP_HISTORY_DATA_CMD,NULL,0);\r
+                    return;\r
+                }\r
+\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
                 num=(ble_nus_max_data_len-18);\r
                 if(num>482)num=482;\r
+                 uapi_dev_runtime_set_sleep_storage_status(1);\r
                 Send_Sleep_Bin_Data(data[0],num);\r
+                 uapi_dev_runtime_set_sleep_storage_status(0);\r
                 break;\r
             case 0x21://文件目录\r
                 EACH_DATA_LEN = DIS_DATA_LEN;\r
index e46f192..204c994 100644 (file)
@@ -84,6 +84,7 @@ void cameram_send_data(void);
 #define GET_PASSWORD_CMD 0x012F //app获取手机密码
 #define ENTER_FACTORY_TEST_CMD 0x0130 //进入工厂测试模式
 #define GET_SEDENT_CMD 0x0131 //获取久坐提醒设置
+//需要加锁数据
 #define SYN_HEART_HISTORY_DATA_CMD 0x0140 //同步心率历史数据
 #define SYN_SPO2_HISTORY_DATA_CMD 0x0141 //同步血氧历史数据
 #define SYN_STRESS_HISTORY_DATA_CMD 0x0142 //同步压力历史数据
@@ -94,6 +95,7 @@ void cameram_send_data(void);
 #define SYN_DIS_HISTORY_DATA_CMD 0x0147 //同步距离历史数据
 #define SYN_BASIC_TRANIN_HISTORY_DATA_CMD 0x0149 //同步基础训练历史数据basic training
 #define SYN_SLEEP_HISTORY_DATA_CMD 0x014B //同步睡眠历史数据
+
 #define SYN_GET_MSG_CONFIG_CMD 0x0133 //获取消息开关
 #define APP_GET_AI_PCM_DATA_CMD 0x0134 //APP获取录音文件
 #define APP_GET_SOS_DATA_CMD 0x0136 //APP获取SOS信息
index 1fe6fac..5c3bc81 100644 (file)
@@ -333,7 +333,13 @@ void MsgCenterNotifyONtimeProc(const Topic topic, Request* req)
     unused(req);
    // The alarm notification is not displayed if the incoming call notification is already being processed
    // cywee_save_data();
-   do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
+   if(uapi_dev_runtime_get_goal_storage_status()==0)
+   {
+    uapi_dev_runtime_set_goal_storage_status(1);
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
+    uapi_dev_runtime_set_goal_storage_status(0);
+   }
+   
 
    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "保存每小时步数");
    step_history_save();
index 9b86a82..097a931 100644 (file)
@@ -192,6 +192,8 @@ void cywee_get_version(char *databuf,uint8_t len)
 
 void cywee_save_data(void)
 {
+    uapi_dev_runtime_set_goal_storage_status(1);
+   
     int step=history_step+stepcount;
     CWM_OS_saveData(&step,sizeof(int),CYWEE_SAVE_DATA_STEP);
     CWM_OS_OneHourAgo_saveData(&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP);
@@ -208,6 +210,8 @@ void cywee_save_data(void)
     int fat=history_fat+new_fat;
     CWM_OS_saveData(&fat,sizeof(int),CYWEE_SAVE_DATA_FAT);
     CWM_OS_OneHourAgo_saveData(&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT);
+
+    uapi_dev_runtime_set_goal_storage_status(0);
 }
 
 void cywee_restoreData(void)
index 35e0d6a..253e341 100644 (file)
@@ -94,6 +94,8 @@ typedef struct
     uint8_t lock_flag_blood;//血氧
     uint8_t lock_flag_sleep;//睡眠
 
+    uint8_t lock_flag_goal;//每日目标数据 5个数据一起锁
+
 } runtime_status_t;
 
 
@@ -516,6 +518,16 @@ uint8_t uapi_dev_runtime_get_sleep_storage_status(void)
 {
     return g_runtime.lock_flag_sleep;
 }
+
+//设置目标数据存储
+void uapi_dev_runtime_set_goal_storage_status(uint8_t status)
+{
+    g_runtime.lock_flag_goal = status;
+}
+uint8_t uapi_dev_runtime_get_goal_storage_status(void)
+{
+    return g_runtime.lock_flag_goal;
+}
 //后续还需要补充。。。
 
 // 设置被动心率检测状态
index 6e71c8f..0360c8e 100644 (file)
@@ -149,6 +149,15 @@ uint8_t uapi_dev_runtime_get_bloodoxygen_storage_status(void);
 void uapi_dev_runtime_set_sleep_storage_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_sleep_storage_status(void);
 
+/*
+    每日目标数据存储
+    0 未存储
+    1 正在存储
+*/
+void uapi_dev_runtime_set_goal_storage_status(uint8_t status);
+
+uint8_t uapi_dev_runtime_get_goal_storage_status(void);
+
 /*运动识别*/
 void uapi_dev_runtime_set_motion_recognition_status(uint8_t status);
 uint8_t uapi_dev_runtime_get_motion_recognition_status(void);