优化天线蓝牙产测,优化久坐提醒闹钟,添加extra info数据 468/1 468/head
authorpenglei <1624952103@qq.com>
Fri, 5 Jul 2024 12:50:26 +0000 (20:50 +0800)
committerpenglei <1624952103@qq.com>
Fri, 5 Jul 2024 12:50:26 +0000 (20:50 +0800)
12 files changed:
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h
code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c

index 8aa3e0a..8d4b4bd 100644 (file)
@@ -283,22 +283,18 @@ extern "C"
                 // 设置状态为小睡\r
                 OHOS::SleepModel::GetInstance().set_sleep_state(OHOS::SLEEPSTATE::WAKE);\r
                 LOS_Msleep(1000);\r
-                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_MODE, NULL);\r
+                do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
             }\r
 \r
             if(sedentary_switch)\r
             {\r
                 if (curTime.tm_hour == ((sedentary_time & 0XFF000000) >> 24) && curTime.tm_min == ((sedentary_time & 0X00FF0000) >> 16) && curTime.tm_sec == 0)\r
                 {\r
-                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
-                    LOS_Msleep(1000);\r
-                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL);\r
+                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_SEDENTARY, NULL);\r
                 }\r
                 else if (curTime.tm_hour == ((sedentary_time & 0X0000FF00) >> 8) && curTime.tm_min == (sedentary_time & 0X000000FF) && curTime.tm_sec == 0)\r
                 {\r
-                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_GET_SLEEP_DATA, NULL);\r
-                    LOS_Msleep(1000);\r
-                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_MODE, NULL);\r
+                    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_SEDENTARY, NULL);\r
                 }\r
             }\r
         }\r
index 58ac873..a9b70a9 100644 (file)
@@ -183,6 +183,11 @@ namespace OHOS
         Exercisetype sportType;   // 训练类型(0:健身类 1:跳舞类 2:休闲运动 3:球类 4:水上运动:5:冰上运动:6:极限运动:7:其他)
         UIResourceTextId sportId; // 训练Id
         ExerciseTag sportTagType; // 训练目标类型(0: 距离 1:时长 2:卡路里 3:步数)
+        int apc;                  //平均配速
+        int fpc;                  //最快配速
+        int spc;                  //最慢配速
+        int cdc;                  //步频
+        int std;                  //步幅
 
         void Initialize()
         {
@@ -238,6 +243,8 @@ namespace OHOS
         ExerciseState GetSportState();
         /*解析传输过来的数据*/
         void AnalysisData(cywee_activity_result_t *cyweeInfo);
+        /*解析运动额外数据*/
+        void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo);
         /*获取训练数据*/
         SportData *GetSportdata();
         /*设置训练数据[为训练记录准备]*/
index 30e3e8c..f272e6c 100644 (file)
@@ -151,6 +151,20 @@ extern "C"
             TraingModel::GetInstance()->AnalysisData(cyweeInfo);
             delete cyweeInfo; // 释放内存
         }
+        if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE)
+        {
+            cywee_activity_result_extre_info_t *cyweeInfo = new cywee_activity_result_extre_info_t();
+            int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_extre_info_t), (cywee_activity_result_extre_info_t *)request->data, request->len);
+            if (rets != EOK)
+            {
+                delete cyweeInfo; // 处理内存分配失败的情况
+                cyweeInfo = NULL;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_extre_info_t fail ret = %d", rets);
+                return;
+            }
+            TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo);
+            delete cyweeInfo; // 释放内存
+        }
         if (request->msgId == TOPIC_EVENT_BLE_TRAINING)
         {
             training_ble *traingbleInfo = new training_ble();
@@ -312,7 +326,20 @@ namespace OHOS
         ExerciseClass type = GetSportId();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " AnalysisData %d", type);
         // 通用数据
+
+        sportdata->steps = cyweeInfo->steps;
+        sportdata->distance = cyweeInfo->distance;
         sportdata->calories = cyweeInfo->calories;
+        sportdata->cdc = cyweeInfo->step_frequency;
+        sportdata->std = cyweeInfo->step_length;
+        sportdata->pc = cyweeInfo->pace;
+        sportdata->distance = cyweeInfo->distance;
+
+        if (sportdata->spc == 0 || sportdata->spc > sportdata->pc)
+        {
+            sportdata->spc = sportdata->pc;
+        }
+
         sportdata->heart = cyweeInfo->hrs;
         SetIntensity(sportdata->heart); // 设置训练强度
         if (sportdata->heart > 50)
@@ -358,6 +385,24 @@ namespace OHOS
             }
         }
     }
+
+    // int avg_step_freq;//平均步频
+    // int avg_step_len;//平均步长
+    // int avg_pace;//平均配速
+    // int max_step_freq;//最大步频
+    // int max_pace;//最大配速
+    // int activity_zone;//活动程度区间 0低度 1中度 2高度
+    // int ativity_zone_moderate_duration;//中度活动时间
+    // int ativity_zone_high_duration;//高度活动时间
+    // int MHR_zone;//心率区间
+    // int distance_motion;//体感距离
+
+    /*分析activity extra info数据*/
+    void TraingModel::AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo)
+    {
+        sportdata->apc = cyweeInfo->avg_pace;
+        sportdata->fpc = cyweeInfo->max_pace;
+    }
     /*打印函数*/
 
     void TraingModel::printf_data(SportData *data)
@@ -399,6 +444,11 @@ namespace OHOS
             sportdata->avgheart = data->avgheart;
             sportdata->steps = data->steps;
             sportdata->intensity = data->intensity;
+            sportdata->apc = data->apc;
+            sportdata->fpc = data->fpc;
+            sportdata->spc = data->spc;
+            sportdata->std = data->std;
+            sportdata->cdc = data->cdc;
         }
         printf_data(data);
     }
@@ -722,11 +772,11 @@ namespace OHOS
         data.cir = 0;
         data.alt = 0;
         /*配速相关还未处理 暂时保存0*/
-        data.apc = 0;
-        data.fpc = 0;
-        data.spc = 0;
-        data.std = 0;
-        data.cdc = 0;
+        data.apc = static_cast<uint32_t>(sportdata->apc);
+        data.fpc = static_cast<uint32_t>(sportdata->fpc);
+        data.spc = static_cast<uint32_t>(sportdata->spc);
+        data.std = static_cast<uint32_t>(sportdata->std);
+        data.cdc = static_cast<uint32_t>(sportdata->cdc);
 
         // 保存数据到bin
         if (write_Trainingdata_data(data) != 1)
index 698408c..de96d09 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-06-17 14:31:08\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-04 17:33:35\r
+ * @LastEditTime: 2024-07-05 19:00:56\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -84,7 +84,6 @@ static uint32_t aging_time = 0;
 static uint8_t pwr_button_result = 0;\r
 static uint8_t func_button_result = 1;\r
 \r
-static uint8_t hx3695_chip_id = 0;\r
 \r
 static int CRC16_XMODEM(uint8_t *bytes,uint16_t length) {\r
     int crc = 0x0000;          // initial value\r
@@ -1140,14 +1139,13 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //获取 ppg_id\r
                 uint8_t ppg_id;\r
-                uapi_ppg_get_id(&ppg_id);\r
-                if(ppg_id == 0x65)\r
-                    hx3695_chip_id = ppg_id;\r
+                hx3695_get_id(&ppg_id);\r
+\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
                         0x01,\r
-                        &hx3695_chip_id,\r
-                        sizeof(hx3695_chip_id));\r
+                        &ppg_id,\r
+                        1);\r
 \r
             } else if(testitem == 0x02)\r
             {\r
@@ -1545,7 +1543,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
                 cat1_at_cmd("at*mrd_cdf=Q,LteCalData.nvm");\r
                 LOS_Msleep(500);\r
                 ble_get_cat1_at_msg((char *)&send_data,1);\r
-                if(atol(send_data) == 1)\r
+                if(send_data == '1')\r
                     send_data = 1;\r
                 else\r
                     send_data = 0;\r
@@ -1574,15 +1572,16 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //查询信号值\r
                 char buf[20] = {0};\r
+                uint8_t send_data[2] = {0};\r
                 cat1_at_cmd("AT+QRXFTM=\"LTE BAND1\",300,\"on\",75");\r
                 LOS_Msleep(500);\r
                 ble_get_cat1_at_msg(buf,20);\r
-                PRINT("AT+QRXFTM buf : %s \r\n",buf);\r
+                sscanf(buf, "+QRXFTM: -%d,-%d", (int *)&send_data[0], (int *)&send_data[1]);\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
                         0x12,\r
-                        (uint8_t *)buf,\r
-                        strlen(buf));\r
+                        send_data,\r
+                        2);\r
             } else if(testitem == 0x13)\r
             {\r
                 //关闭强接受\r
index 36fdcb6..43db0c2 100644 (file)
@@ -547,6 +547,7 @@ void set_fat_time_data(void);
 
 void cywee_get_chipinfo(char *databuf,uint8_t len);
 void cywee_set_sedentary_interval(int time);
+void cywee_set_sedentary_switch(int cmd);
 void cywee_get_acc_switch(int cmd);
 void cywee_stop(void);
 
index 121a973..04227ab 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-26 20:29:58
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-06-28 18:00:01
+ * @LastEditTime: 2024-07-05 18:11:57
  * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
  * @Description: 
  * 
@@ -89,6 +89,10 @@ extern "C" {
 
 #define CYWEE_SERVICE_CMD_STOP_ACC 0x31
 
+#define CYWEE_SERVICE_CMD_OPEN_SEDENTARY 0x33
+
+#define CYWEE_SERVICE_CMD_CLOSE_SEDENTARY 0x34
+
 errcode_t uapi_cywee_service_init(void);
 void uapi_cywee_service_deinit(void);
 
index 0d8b927..efe40b3 100644 (file)
@@ -400,6 +400,16 @@ static void cywee_service_check_task(void const *arg)
 
             case CYWEE_SERVICE_CMD_STOP_ACC:
                 cywee_stop();
+            break;
+
+            case CYWEE_SERVICE_CMD_OPEN_SEDENTARY:
+                cywee_set_sedentary_switch(1);
+            break;
+
+            case CYWEE_SERVICE_CMD_CLOSE_SEDENTARY:
+                cywee_set_sedentary_switch(0);
+            break;
+            
             default:
                 PRINT("unkonw cmd \r\n");
                 break;
index ca6f5be..e73443d 100644 (file)
@@ -86,6 +86,15 @@ void cywee_get_acc_switch(int cmd)
     get_acc_swtich = cmd;
 }
 
+void cywee_set_sedentary_switch(int cmd)
+{
+    //设置久坐 0关,1开
+    memset(&scl, 0, sizeof(scl));
+    scl.iData[0] = 1;
+    scl.iData[2] = cmd;
+    CWM_SettingControl(SCL_SEDENTARY, &scl);
+}
+
 void cywee_set_sedentary_interval(int time)
 {
     sedentary_interval = time;
@@ -1020,7 +1029,7 @@ int cywee_main_dml(void)
     //设置久坐
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
-    scl.iData[2] = 1;
+    scl.iData[2] = 0;
     CWM_SettingControl(SCL_SEDENTARY, &scl);   
 
     //设置静态模式
@@ -1072,7 +1081,7 @@ int cywee_main_dml(void)
 
     cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
     
-    cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
+    cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
 
     //cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
 
index b73fa06..2a23769 100644 (file)
@@ -381,6 +381,25 @@ bool hx3695_chip_check(void)
     return false;\r
 }\r
 \r
+void hx3695_get_id(uint8_t *ppg_id)\r
+{\r
+    uint8_t i = 0;\r
+    uint8_t chip_id = 0;\r
+    for(i=0; i<5; i++)\r
+    {\r
+        hx3695_ppg_on();\r
+        hx3695_delay_ms(5);\r
+        chip_id = hx3695_read_reg(0x00);\r
+\r
+        if (chip_id == 0x65)\r
+        {\r
+            *ppg_id = chip_id;\r
+            break;\r
+        }\r
+    }\r
+    hx3695_ppg_off();\r
+}\r
+\r
 uint8_t hx3695_read_fifo_size(void)\r
 {\r
           uint8_t  data_len_h,data_len_l;\r
index 8eb2b29..8fcc766 100644 (file)
@@ -246,6 +246,7 @@ bool hx3695_write_reg(uint8_t addr, uint8_t data);
 uint8_t hx3695_read_reg(uint8_t addr); \r
 bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint16_t length);\r
 bool hx3695_chip_check(void);\r
+void hx3695_get_id(uint8_t *ppg_id);\r
 uint8_t hx3695_read_fifo_size(void);\r
 uint16_t hx3695_read_fifo_data(int32_t *s_buf, uint8_t size, uint8_t phase_num);\r
 void hx3695_ppg_off(void);\r
index 63edbb4..ff3d988 100644 (file)
@@ -1885,15 +1885,11 @@ void test_bandy_time(uint32_t timestamp)
     get_current_time(&tv, &tm);
 }
 
-
-#include "tyhx_hrs_custom.h"
-
 void uapi_ppg_get_id(uint8_t *chip_id)
 {
-    custom_i2c_read_regs(HX3695_I2C_DEV_8ADDR,0x00,1,chip_id,1,I2C_BUS_2);
+    hx3695_get_id(chip_id);
 }
 
-
 #include "hal_i2c.h"
 #include "i2c.h"
 #define CUSTOM_I2C_TIME_MAX 3
index 63696a7..90044dc 100644 (file)
@@ -400,9 +400,9 @@ static uint32_t custom_get_ppg_id(uint8_t *para, uint32_t paraLen, char *strComm
 {
 
     UNUSED(strCommonCmd);
-    uint8_t chip_id;
+    uint8_t chip_id = 0;
     uapi_ppg_get_id(&chip_id);
-
+    PRINT("ppg_id[%x]\n",chip_id);
     return ERRCODE_SUCC;
 }