优化蓝牙产测,添加老化测试,优化心率计算,添加静息心率,优化a5133驱动 587/1
authorpenglei <1624952103@qq.com>
Thu, 25 Jul 2024 10:46:21 +0000 (18:46 +0800)
committerpenglei <1624952103@qq.com>
Thu, 25 Jul 2024 10:46:21 +0000 (18:46 +0800)
27 files changed:
code/sdk/application/battery/service/battery_service.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/include/testmicrophoneC.h
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testLCD.cpp
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp
code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h
code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/application/wearable/service/msg_center/include/notify/findwatch_notification.h
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/service/msg_center/src/notify/findwatch_notification.cpp
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
code/sdk/drivers/peripheral/a5133/A5133Main.c
code/sdk/drivers/peripheral/a5133/A5133Uti.c
code/sdk/drivers/peripheral/a5133/A5133Uti.h
code/sdk/drivers/peripheral/a5133/service/a5133_service.cpp
code/sdk/drivers/peripheral/acc/service/acc_service.c
code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.h
code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp
code/sdk/drivers/peripheral/utils/custom_cmd_service.c
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c
code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp

index 771686b..2c645d4 100644 (file)
@@ -203,14 +203,14 @@ static void battery_check_chargement(void)
             {
                 PRINT("%d >= 90 percent , enable low current charge !\r\n",percent);
                 enable_charge(); 
-                enable_02c();
+                //enable_02c();
                 g_chargestatus = 1;
             }
             else 
             {
                 PRINT("%d < 90 percent , enable normal current charge !\r\n",percent);
                 enable_charge(); 
-                disable_02c();
+                //disable_02c();
                 g_chargestatus = 2;
             }
             // PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
@@ -243,13 +243,13 @@ static void battery_check_chargement(void)
                 if(percent >=90)
                 {
                     PRINT("%d >= 90 percent , enable low current charge !\r\n",percent);
-                    enable_02c();
+                    //enable_02c();
                     g_chargestatus = 1;
                 }
                 else 
                 {
                     PRINT("%d < 90 percent , enable normal current charge !\r\n",percent);
-                    disable_02c();
+                    //disable_02c();
                     g_chargestatus = 2;
                 }
                 // PRINT("%d\r\n",BATTERY_VOLTAGE_DEBOUNCE);
@@ -260,7 +260,7 @@ static void battery_check_chargement(void)
             PRINT("charger not plugged ,disable charge !\r\n");
 
             enable_charge(); //防漏电
-            enable_02c();   //防漏电
+            //enable_02c();   //防漏电
 
             g_chargestatus = 0;
             /**
index 05fb071..1dd336c 100644 (file)
@@ -746,7 +746,7 @@ int AlarmClockModel::AlarmPlayerStat()
         return OHOS_FAILURE;
     }
     playerCtr->SetAudioSessionId(sessionId);
-    playerCtr->SetVolume(amIntance.GetMaxVolume(AUDIO_STREAM_ALARM_CLOCK),amIntance.GetMaxVolume(AUDIO_STREAM_ALARM_CLOCK));
+    playerCtr->SetVolume(amIntance.GetMaxVolume(AUDIO_STREAM_MUSIC),amIntance.GetMaxVolume(AUDIO_STREAM_MUSIC));
     // 播放
     playerCtr->Play();
     return OHOS_SUCCESS;
index d7bf6e0..81c4cc0 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-06-07 11:18:25
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-06-08 17:28:26
+ * @LastEditTime: 2024-07-24 11:56:54
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/producttest/include/testmicrophoneC.h
  * @Description: 
  * 
@@ -17,7 +17,7 @@ extern "C"
 {
 #endif
 #endif
-    void microhone_switch(bool isopen);
+    int32_t microhone_switch(bool isopen);
     void check_spk(bool isopen);
 #ifdef __cplusplus
 #if __cplusplus
index ec816a7..123eb54 100644 (file)
@@ -209,7 +209,8 @@ extern "C"
     void factorytest_hide_test_lcd_button(void)
     {
         testLCDView::GetInstance()->LCDHideNextButton();
-        osTimerStop(MG_TEST_timer);
+        if(MG_TEST_timer)
+            osTimerStop(MG_TEST_timer);
     }
 
 #ifdef __cplusplus
index e018339..2dcbb2f 100644 (file)
@@ -6,6 +6,7 @@
 #include "cmsis_os2.h"
 #include "audio_capture_wrapper.h"
 #include "producttest/include/testView.h"
+#include "findwatch_notification.h"
 #ifdef __cplusplus
 #if __cplusplus
 extern "C"
@@ -241,7 +242,7 @@ extern "C"
 #endif /* __cplusplus */
 #endif /* __cplusplus */
 
-    void microhone_switch(bool isopen)
+    int32_t microhone_switch(bool isopen)
     {
         char *args[6] = {0};
         const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16","/user/userdata/microphone.mp3"}; // 默认参数数组
@@ -256,26 +257,27 @@ extern "C"
                 args[i] = (char *)malloc(64);        
                 sprintf(args[i], "%s", defaultArgs[i]);
             }
-            AudioCaptureSample(6, (const char **)args);
+            return AudioCaptureSample(6, (const char **)args);
         }
         else
         {
-            AudioCaptureSample(argc, (const char **)&argv);
-            FILE *file =fopen("/user/userdata/microphone.mp3","rb");
-            if(file==NULL)
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ffffffffffffffffsssssss");
-            }
-            fclose(file);
+            return AudioCaptureSample(argc, (const char **)&argv);
         }
     }
 
     void check_spk(bool isopen)
     {
         if(isopen)
-            AlarmClockModel::GetInstance()->testPlayerStart("/user/userdata/microphone.mp3");
+        {
+            // AlarmClockModel::GetInstance()->testPlayerStart("/user/userdata/microphone.mp3");
+            FindWatchViewEventListener::GetInstance().PopInterPlayMusic("/user/userdata/microphone.mp3");
+        }
         else
-            AlarmClockModel::GetInstance()->AlarmPlayerStop();
+        {
+            // AlarmClockModel::GetInstance()->AlarmPlayerStop();
+            FindWatchViewEventListener::GetInstance().PopInterCancelMusic();
+        }
+
     }
 
 #ifdef __cplusplus
index 1fdfd52..79371f8 100644 (file)
@@ -41,6 +41,7 @@ typedef enum {
     TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,
     TOPIC_EVENT_SHUTDOWN,
     TOPIC_EVENT_HEARTRATE_UPDATA,
+    TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,
     TOPIC_EVENT_HFP_INCOMMING,
     TOPIC_EVENT_HFP_PHONE_ACTIVE,
     TOPIC_EVENT_HFP_WATCH_ACTIVE,
index d39d907..0e1b011 100644 (file)
@@ -28,6 +28,7 @@ static const TopicToCore topicToCoreArray[] = {
     {TOPIC_EVENT_AR_ALERT_TYPE_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1},
     {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
+    {TOPIC_EVENT_STATIC_HEARTRATE_UPDATA, A_CORE_MASK, 1},
 #ifdef CYWEE_SPORT    
     {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
index fc1c54a..81a20fa 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-19 14:21:43\r
+ * @LastEditTime: 2024-07-24 09:39:01\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -718,7 +718,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
                 //退出表冠测试界面\r
                 uint8_t send_data = 0;\r
                 uint8_t cmd = 0;\r
-                do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_CROWN_TEST,&cmd,sizeof(cmd));\r
+                //do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_CROWN_TEST,&cmd,sizeof(cmd));\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY,\r
                         0x07,\r
index c946c57..3411969 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-25 17:31:19
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-26 18:03:13
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-07-24 11:16:31
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/include/notify/findwatch_notification.h
  */
 #ifndef FIND_WATCH_NOTIFICATION_H
@@ -67,10 +67,10 @@ namespace OHOS
     public:
         static FindWatchViewEventListener &GetInstance(void);
         void PopInterCancelMusic(void);
-        void PopInterPlayMusic(void);
+        void PopInterPlayMusic(const char *path);
         int FindWatchRingPlayStop(void);
-        int FindWatchRingPlayStart(void);
-        int FindWatchRingPlayerInit(char *RingMusicName);
+        int FindWatchRingPlayStart(const char *path);
+        int FindWatchRingPlayerInit(const char* path);
         int FindWatchRingPlayerStat(void);
         bool GetFindWatchNotifyFlag(void);
         void SetFindWatchNotifyFlag(bool flag);
@@ -89,7 +89,7 @@ namespace OHOS
         std::shared_ptr<FindWatchRingPlayerListener> playerInterruptListener{nullptr};
         AudioSession sessionId;
         AudioInterrupt interrupt;
-        char *RingMusicName = "findwatch.mp3";
+        const char *RingMusicName = "/music/ring/findwatch.mp3";
         bool FindWatchNotifyFlag{false}; // 判断是查找手表, 由notify生成界面
     };
 }
index 62cb6a4..22c9934 100644 (file)
@@ -101,6 +101,7 @@ const PriorityMapper PRI_MAPPER[] = {
 #ifdef SUPPORT_SPO2_NOTIFICATION
     {TOPIC_EVENT_SPO2_UPDATE, PRIORITY_TWO},
     {TOPIC_EVENT_HEARTRATE_UPDATA, PRIORITY_TWO},
+    {TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,PRIORITY_TWO},
     {TOPIC_EVENT_GRAYCARD_UPDATA, PRIORITY_TWO},
     {TOPIC_EVENT_LEAKLIGHT_UPDATA, PRIORITY_TWO},
 #endif
@@ -164,6 +165,7 @@ void MsgCenterSubscribe()
 #ifdef SUPPORT_SPO2_NOTIFICATION_TEST
     MsgCenterSubscribeTopic(TOPIC_EVENT_SPO2_UPDATE);
     MsgCenterSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
+    MsgCenterSubscribeTopic(TOPIC_EVENT_STATIC_HEARTRATE_UPDATA);
     MsgCenterSubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);
     MsgCenterSubscribeTopic(TOPIC_EVENT_GRAYCARD_UPDATA);
     MsgCenterSubscribeTopic(TOPIC_EVENT_LEAKLIGHT_UPDATA);
@@ -658,6 +660,12 @@ void MsgCenterNotifyHeartRateProc(const Topic topic, Request* req)
     }
 }
 
+//静息心率
+void MsgCenterNotifyStaticHeartRateProc(const Topic topic, Request* req)
+{
+    unused(topic);
+    unused(req);
+}
 
 //消息通知
 void MsgCenterNotifyMessageProc(const Topic topic, Request* req)
@@ -951,7 +959,7 @@ void MsgCenterNotifyFindWatchProc(const Topic topic, Request* req)
     unused(req);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyFindWatchProc !");
     FindWatchViewEventListener::GetInstance().SetFindWatchNotifyFlag(true);
-    FindWatchViewEventListener::GetInstance().PopInterPlayMusic();//播放铃声
+    FindWatchViewEventListener::GetInstance().PopInterPlayMusic(nullptr);//播放铃声
     NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_TWO);
     NotificationManager::GetInstance()->ShowNotify(showFindWatchNotify, (uint16_t)topic, true);
 }
@@ -1249,6 +1257,7 @@ static MsgCenterNotifyTable g_msgCenterNotifyTable[] = {
     {TOPIC_EVENT_SPO2_UPDATE,           MsgCenterNotifySPO2hProc},
     {TOPIC_EVENT_WEARSTATE_UPDATE,      MsgCenterNotifyWearStateProc},
     {TOPIC_EVENT_HEARTRATE_UPDATA,      MsgCenterNotifyHeartRateProc},
+    {TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,      MsgCenterNotifyStaticHeartRateProc},
     {TOPIC_EVENT_GRAYCARD_UPDATA,       MsgCenterNotifyCardProc},
     {TOPIC_EVENT_LEAKLIGHT_UPDATA,      MsgCenterNotifyleaklightProc},
 #endif
index 19bdd10..9444203 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-25 17:33:47
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-22 11:35:48
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-07-24 11:27:11
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/findwatch_notification.cpp
  * @details:实现查找手表的功能一般需要手表和智能手机之间的配合,通常是通过手机上的应用(App)或其他设备发送指令给手表,触发手表的查找功能。
  * 以下是基本的实现步骤:
@@ -58,9 +58,9 @@ namespace OHOS
         UNUSED(event);
         if (&view == FindWatchButton) // 手表已找到
         {
-            #ifdef SUPPORT_BLE_SERVICE
-            setFindWatchFlag(2);//表示已找到手表
-            #endif
+#ifdef SUPPORT_BLE_SERVICE
+            setFindWatchFlag(2); // 表示已找到手表
+#endif
             FindWatchRingPlayStop();
             NotificationManager::GetInstance()->StopNotify();
             SetFindWatchNotifyFlag(false);
@@ -83,14 +83,15 @@ namespace OHOS
      * @brief 初始化查找手表播放铃声的播放器
      * @param {char*} RingMusicName 铃声文件
      */
-    int FindWatchViewEventListener::FindWatchRingPlayerInit(char *RingMusicName)
+    int FindWatchViewEventListener::FindWatchRingPlayerInit(const char *path)
     {
         // 本地播放文件路径和状态
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RingPlayerInit start!");
-        std::string strSrcMusic("/music/ring");
-        std::string tempStr("/");
-        std::string strName = RingMusicName;
-        uri = strSrcMusic + tempStr + strName;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RingPlayerInit start!,%s",path);
+        // std::string strSrcMusic("/music/ring");
+        // std::string tempStr("/");
+        // std::string strName = RingMusicName;
+        // uri = strSrcMusic + tempStr + strName;
+        uri = path;
         // 创建 AM
         playerCtr = std::make_shared<Player>();
         if (playerCtr.get() == nullptr)
@@ -134,7 +135,7 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FindWatchRing Player url:%s", uri.c_str());
         playerCtr->SetSource(*source);
         /* --------------------------------- 4.配置播放器 -------------------------------- */
-        playerCtr->SetAudioStreamType(AUDIO_STREAM_ALARM_CLOCK); // 设置播放器的音频流类型为闹钟音乐。
+        playerCtr->SetAudioStreamType(AUDIO_STREAM_MUSIC); // 设置播放器的音频流类型为闹钟音乐。
         playerCtr->Prepare();                                    // 准备播放器对象以播放音频。
         /* -------------------------------- 5.请求音频焦点 -------------------------------- */
         AudioManager &amIntance = AudioManager::GetInstance();
@@ -152,14 +153,14 @@ namespace OHOS
             return OHOS_FAILURE;
         }
         playerInterruptListener->SetOwner(playerCtr);
-        interrupt = {AUDIO_STREAM_ALARM_CLOCK, sessionId, playerInterruptListener};
+        interrupt = {AUDIO_STREAM_MUSIC, sessionId, playerInterruptListener};
         // 激活音频中断 5s超时
         if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED)
         {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
             return OHOS_FAILURE;
         }
-        // playerCtr->SetVolume(50, 50); // 将左声道和右声道音量都设置为50
+        playerCtr->SetVolume(300, 300); // 将左声道和右声道音量都设置为50
         playerCtr->SetAudioSessionId(sessionId);
         // 播放
         playerCtr->Play();
@@ -192,9 +193,9 @@ namespace OHOS
     /*
      * @brief 开启查找手表铃声
      */
-    int FindWatchViewEventListener::FindWatchRingPlayStart(void)
+    int FindWatchViewEventListener::FindWatchRingPlayStart(const char *path)
     {
-        FindWatchRingPlayerInit(RingMusicName);
+        FindWatchRingPlayerInit(((path == nullptr) ? RingMusicName : path));
         FindWatchRingPlayerStat();
         return OHOS_SUCCESS;
     }
@@ -204,7 +205,7 @@ namespace OHOS
      */
     void FindWatchViewEventListener::PopInterCancelMusic(void)
     {
-        SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, NULL, 0);
+        SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, nullptr, 0);
         GraphicService::GetInstance()->PostGraphicEvent(
             std::bind(&FindWatchViewEventListener::FindWatchRingPlayStop, &FindWatchViewEventListener::GetInstance()));
     }
@@ -212,13 +213,13 @@ namespace OHOS
     /*
      * @brief 开始铃声播放的事件
      */
-    void FindWatchViewEventListener::PopInterPlayMusic(void)
+    void FindWatchViewEventListener::PopInterPlayMusic(const char *path)
     {
         int32_t timeout = -1;
         SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t)); // 亮屏操作
         // 将"开启查找手表铃声"任务发布到异步线程
         GraphicService::GetInstance()->PostGraphicEvent(
-            std::bind(&FindWatchViewEventListener::FindWatchRingPlayStart, &FindWatchViewEventListener::GetInstance()));
+            std::bind(&FindWatchViewEventListener::FindWatchRingPlayStart, &FindWatchViewEventListener::GetInstance(), path));
     }
 
     /*
@@ -321,7 +322,7 @@ namespace OHOS
 
     static void Start(void)
     {
-        FindWatchViewEventListener::GetInstance().PopInterPlayMusic();
+        FindWatchViewEventListener::GetInstance().PopInterPlayMusic(nullptr);
     }
 
     static void Stop(void)
@@ -368,7 +369,7 @@ namespace OHOS
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnPlaybackComplete");
         FindWatchViewEventListener::GetInstance().PopInterCancelMusic();
-        FindWatchViewEventListener::GetInstance().PopInterPlayMusic();
+        FindWatchViewEventListener::GetInstance().PopInterPlayMusic(nullptr);
     }
 
     void FindWatchRingPlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)
index 7c95dc6..d28642a 100755 (executable)
@@ -182,7 +182,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE },  // S_AGPIO_L19  G_INT2  //暂时不用 
 
 
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20  0.2C_CHRG
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_UP, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20  0.2C_CHRG
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },    // S_AGPIO_L21  NTC_VDD_ON 给低打开 NTC上拉电源
 #ifdef QSPI_DISPLAY
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },    // S_AGPIO_L22 QSPI TE
@@ -197,7 +197,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L29    charge done info 检测是否充满电
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L30   KP_MKIN1 唤醒 CAT1 ,输出
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L31    KP_MKOUIT1 唤醒 蓝牙 ,输入
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_L31    KP_MKOUIT1 唤醒 蓝牙 ,输入
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE },   // S_AGPIO_L32    NC
 
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_R0   PRG_LED_POWER ON  心率等电源控制脚
index 72e529f..0286212 100644 (file)
@@ -93,7 +93,7 @@ const Uint8 code PN9_Tab[]=
 *********************************************************************/\r
 void a5133_main(Uint8 Flag_MASTER,uint8_t channel)\r
 {\r
-       \r
+       a5133_power_on();\r
        if(RF_Init())/* init RF */\r
        {\r
        // Err_State();\r
index 5aa6bb0..d52c7a6 100644 (file)
@@ -264,15 +264,36 @@ errcode_t a5133_gpio_init(void)
        if (ret != ERRCODE_SUCC) {
         return ERRCODE_FAIL;
     }
+#endif
+       return ret;
+}
 
-       ret = a5133_gpio_set_direction(S_AGPIO_L30,1);
+errcode_t a5133_power_on(void)
+{
+       errcode_t ret = 0;
+       ret = uapi_pin_set_mode(S_AGPIO_L31, HAL_PIO_FUNC_GPIO);
+    if (ret != ERRCODE_SUCC) {
+        return ERRCODE_FAIL;
+    }
+       ret = a5133_gpio_set_direction(S_AGPIO_L31,1);
        if (ret != ERRCODE_SUCC) {
         return ERRCODE_FAIL;
     }
-#endif
-       return ret;
+       ret = uapi_gpio_set_val(S_AGPIO_L31, GPIO_LEVEL_HIGH);
+       if (ret != ERRCODE_SUCC) {
+        return ERRCODE_FAIL;
+    }
+       return ERRCODE_SUCC;
 }
 
+errcode_t a5133_power_off(void)
+{
+       errcode_t ret = uapi_gpio_set_val(S_AGPIO_L31, GPIO_LEVEL_LOW);
+       if (ret != ERRCODE_SUCC) {
+        return ERRCODE_FAIL;
+    }
+       return ERRCODE_SUCC;
+}
 
 // int test_gpio_toggle(pin_t pin, int level)
 // {
index 6bf40d5..e72a820 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com\r
  * @Date: 2024-07-20 10:36:21\r
  * @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-22 15:38:16\r
+ * @LastEditTime: 2024-07-25 10:00:59\r
  * @FilePath: /FD230/code/sdk/drivers/peripheral/a5133/A5133Uti.h\r
  * @Description: \r
  * \r
@@ -25,6 +25,8 @@ void Delay10us(Uint8);
 void Delay100us(Uint8);\r
 void Delay1ms(Uint8);\r
 void Delay10ms(Uint8);\r
+errcode_t a5133_power_on(void);\r
+errcode_t a5133_power_off(void);\r
 errcode_t a5133_gpio_init(void);\r
 uint8_t a5133_gpio_get_value(pin_t pin);\r
 errcode_t a5133_gpio_set_value(pin_t pin,uint8_t value);\r
index 5c87009..4829f95 100644 (file)
@@ -117,7 +117,7 @@ void send_a5133_cmd_msg(int cmd)
     ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
                                     sizeof(A5133_CMD_TYPE_T), 0);
     if (ret != OSAL_SUCCESS) {
-        PRINT_ERR("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+        PRINT_ERR("Error a5133 Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
     }
     
 }
@@ -140,26 +140,26 @@ static void a5133_service_check_task(void  *arg)
             continue;
         }
 
-        PRINT("A5133_SERVICE_CMD_TYPE_RUN \n");
-        a5133_service_timer_start_check(50);
-        a5133_main(SLAVE,mail);
+        // PRINT("A5133_SERVICE_CMD_TYPE_RUN \n");
+        // a5133_service_timer_start_check(50);
+        // a5133_main(SLAVE,mail);
 
 
-        // if (mail == A5133_SERVICE_CMD_TYPE_RUN_MASTER)
-        // {
-        //     PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER \n");
-        //     a5133_service_timer_start_check(50);
-        //     a5133_main(MASTER);
-        // }else if (mail == A5133_SERVICE_CMD_TYPE_RUN_SLAVE)
-        // {
+        if (mail == A5133_SERVICE_CMD_TYPE_RUN_MASTER)
+        {
+            PRINT("A5133_SERVICE_CMD_TYPE_RUN_MASTER \n");
+            a5133_service_timer_start_check(50);
+            a5133_main(MASTER,80);
+        }else if (mail == A5133_SERVICE_CMD_TYPE_RUN_SLAVE)
+        {
             
-        //     PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE \n");
-        //     a5133_service_timer_start_check(50);
-        //     a5133_main(SLAVE);
-        // }else if (mail == A5133_SERVICE_CMD_TYPE_TIMER_CHECK)
-        // {
+            PRINT("A5133_SERVICE_CMD_TYPE_RUN_SLAVE \n");
+            a5133_service_timer_start_check(50);
+            a5133_main(SLAVE,80);
+        }else if (mail == A5133_SERVICE_CMD_TYPE_TIMER_CHECK)
+        {
             
-        // }
+        }
     }
     a5133_server_break_flag = 0;
     a5133_service_running_stat = false;
index a9449c2..25a5d21 100644 (file)
@@ -98,7 +98,7 @@ void do_acc_service_check_msg(int cmd)
     ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
                                     sizeof(common_notify_mail_t), 0);
     if (ret != OSAL_SUCCESS) {
-        PRINT("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+        PRINT("Error acc Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
     }
     
 }
index 743aa27..aa30c6a 100644 (file)
@@ -561,7 +561,7 @@ void cywee_set_sedentary_switch(int cmd);
 void cywee_get_acc_switch(int cmd);
 void cywee_stop(void);
 uint8_t cywee_get_active_state(void);
-
+uint8_t cywee_get_static_state(void);
 extern uint8_t hrs_mode_state;
 
 #pragma pack()
index 0890994..aaddbde 100644 (file)
@@ -74,9 +74,16 @@ static int cywee_switch = 0;
 #endif
 static uint8_t cywee_is_active = 0;
 
+static uint8_t is_static_state = 0;
+
 int cm__hs1__init(void);
 int cm__hs1__deinit(void);
 
+uint8_t cywee_get_static_state(void)
+{
+    return is_static_state;
+}
+
 uint8_t cywee_get_active_state(void)
 {
     return cywee_is_active;
@@ -793,6 +800,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             }  
             break;
         case IDX_ALGO_ACTIVITY_OUTPUT:
+            is_static_state = 0;
             cywee_func = cywee_get_send_msg_callback_func();
             if((int)sensorEVT->fData[0] == 100)
             {
@@ -850,6 +858,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
 
             break;
         case IDX_ALGO_NO_MOTION:
+            is_static_state = 1;
             CWM_OS_dbgPrintf("IDX_ALGO_NO_MOTION\n");
             break;
         case IDX_ALGO_FALLING:
@@ -1146,7 +1155,7 @@ int cywee_main_dml(void)
     CWM_Sensor_Enable(IDX_ACCEL);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     // CWM_Sensor_Enable(IDX_GYRO);
-    //CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
+    CWM_Sensor_Enable(IDX_ALGO_NO_MOTION);
     //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
     // CWM_Sensor_Enable(IDX_ALGO_ANY_MOTIOIN);
     //CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC);
index 362bff8..e6647d4 100644 (file)
@@ -2667,6 +2667,50 @@ void hx3695_ppg_Int_handle(void)
 #endif\r
 }\r
 \r
+static uint8_t hrs_num = 0;\r
+static int32_t sum_hrs = 0;\r
+static int32_t hrs_data[7] = {0};\r
+static uint8_t left = 0;\r
+static uint8_t right = 0;\r
+static int32_t min_hrs = 0;\r
+static int32_t max_hrs = 0;\r
+\r
+static void get_avg_hrs(int32_t hrs)\r
+{\r
+    if(hrs_num == 7)\r
+    {\r
+        sum_hrs -= hrs_data[left];\r
+        hrs_data[left] = 0;\r
+        left++;\r
+        left = left % 7;\r
+        hrs_num--;\r
+    }\r
+    if(hrs_num == 0)\r
+    {\r
+        min_hrs = hrs;\r
+        max_hrs = hrs;\r
+    }\r
+    else\r
+    {\r
+      if (min_hrs > hrs)\r
+          min_hrs = hrs;\r
+      if (max_hrs < hrs)\r
+          max_hrs = hrs;\r
+    }\r
+    hrs_num++;\r
+    right++;\r
+    right = right % 7;\r
+    hrs_data[right] = hrs;\r
+    sum_hrs += hrs_data[right];   \r
+    if(hrs_num > 0)\r
+    {\r
+        if(hrs_num > 2)\r
+            hrs = (sum_hrs - max_hrs - min_hrs) / (hrs_num - 2);\r
+        else\r
+            hrs = sum_hrs / hrs_num;\r
+    }\r
+    PRINT("sum_hrs[%d], max_hrs[%d], min_hrs[%d], avg_hrs[%d] \n",sum_hrs,max_hrs,min_hrs,hrs);  \r
+}\r
 \r
 \r
 #ifdef HRS_ALG_LIB\r
@@ -2806,7 +2850,8 @@ void hx3695_hrs_ppg_Int_handle(void)
     hrsresult.hr_living = alg_results.living_status;\r
     hrsresult.hr_living_qu = alg_results.hr_result_qual;\r
     hrsresult.hr_living_std = alg_results.hr_result_std;\r
-               \r
+    if(hrsresult.lastesthrs > 50)\r
+                   get_avg_hrs((hrsresult.lastesthrs));\r
     //PRINT("hx3695 data_cnt: %d,  hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
                //alg_results.data_cnt,  hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r
 \r
@@ -2895,6 +2940,10 @@ void hx3695_hrs_ppg_Int_handle(void)
       hrsresult.wearstatus = hrs_wear_status;\r
       func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
       func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+      if(uapi_get_cywee_static_state())\r
+      {\r
+          func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+      }\r
     }\r
 \r
 #if HANKCREAT_APK\r
index fffa641..0f61427 100644 (file)
@@ -1,3 +1,13 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-06-07 11:18:26
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-07-25 18:14:12
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.h
+ * @Description: 
+ * 
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
+ */
 #ifndef HX_3695_H__
 #define HX_3695_H__
 #ifdef __cplusplus
@@ -18,6 +28,7 @@ typedef enum{
     HX3695_MSG_TYPE_LEAKLIGHT_UPDATE,
     HX3695_MSG_TYPE_GRAYCARD_UPDATE,
     HX3695_MSG_TYPE_WEARSTAT_UPDATE,
+    HX3695_MSG_TYPE_STATIC_HRS_UPDATE,
 } hx3695_msg_type_t;
 
 
index 9f7b9e3..202688d 100644 (file)
@@ -146,6 +146,19 @@ errcode_t update_wearstatus_event_sendmsg_toUI(int32_t wearstatus)
     return ERRCODE_SUCC;
 }
 
+//静息心率
+errcode_t update_static_hrs_event_notify(int32_t hrs)
+{
+    CustomEventPublish(TOPIC_EVENT_STATIC_HEARTRATE_UPDATA,(uint8_t*)&hrs,sizeof(hrs));
+    return 0;
+}
+errcode_t update_static_hrs_event_sendmsg_toUI(int32_t hrs)
+{
+    /**通过UI事件发送Notify*/
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(update_static_hrs_event_notify, hrs));
+    return ERRCODE_SUCC;
+}
+
 #include "hx3695_hal.h"
 #include "hx3695.h"
 void hx3695_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
@@ -195,6 +208,10 @@ void hx3695_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datale
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HX3695_MSG_TYPE_WEARSTATUS_UPDATE = %d", sensor_data.wearstatus);
             update_wearstatus_event_sendmsg_toUI(sensor_data.wearstatus);
             break;
+        case HX3695_MSG_TYPE_STATIC_HRS_UPDATE:
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HX3695_MSG_TYPE_STATIC_HRS_UPDATE = %d", sensor_data.lastesthrs);
+            update_static_hrs_event_sendmsg_toUI(sensor_data.lastesthrs);
+            break;
         default:
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Unknown sensor message type");
             break;
@@ -227,7 +244,7 @@ void send_ppg_cmd_msg(int cmd)
     ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
                                     sizeof(PPG_CMD_TYPE_T), 0);
     if (ret != OSAL_SUCCESS) {
-        PRINT_ERR("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+        PRINT_ERR("Error ppg Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
     }
     
 }
index 5618ec9..8353b9b 100644 (file)
@@ -132,6 +132,7 @@ static void custom_cmd_service_check_task(void const *arg)
         case CUSTOM_CMD_MSG_TYPE_LCD_TEST:
             if(mail.data[0] == 1)
             {
+                uapi_setScreenBrightness(255);
                 uapi_set_screen_on_api();
                 uapi_factorytest_enter_test_view(1);
                 uapi_factorytest_enter_test_lcd_view();
index dd5d7ae..9fb293e 100644 (file)
@@ -58,6 +58,7 @@
 #include "cywee_service.h"
 #include "microtar.h"
 #include "mag_service.h"
+#include "ppg_service.h"
 
 errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg)
 {
@@ -164,9 +165,19 @@ void uapi_reboot_device(void)
     mcu_os_sys_reset(NULL,NULL);
 }
 
-void shutdown_reboot_prejobs_task(void)
+
+void uapi_save_time_of_day(void)
 {
+    time_t rawtime;
+    struct tm* timeinfo;
+    time(&rawtime);
+    timeinfo = localtime(&rawtime);
+    uapi_save_file_data("user/userdata/timestamp_of_day.bin",&timeinfo->tm_mday,1);
+}
 
+void shutdown_reboot_prejobs_task(void)
+{
+    uapi_save_time_of_day();
     //保存步数
     do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SAVE_DATA,NULL);
 
@@ -290,6 +301,10 @@ bool stop_alipay_ble_service(void)
 }
 void startup_post_init_task(void)
 {
+    uint8_t day = 0;
+    time_t rawtime;
+    struct tm* timeinfo;
+
     PRINT("startup_post_init_task !\r\n");
 
     uapi_calendar_recover_date();
@@ -331,6 +346,14 @@ void startup_post_init_task(void)
         uapi_set4GCapability(false);
     }
     uapi_gei_btmac_and_chipinfo();
+
+    uapi_get_file_data("user/userdata/timestamp_of_day.bin",&day,1);
+    time(&rawtime);
+    timeinfo = localtime(&rawtime);
+    if(day > 0 && day != timeinfo->tm_mday)
+    {
+        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESET_DAILY_DATA,NULL);
+    }
 }
     
 void startup_post_init(void)
@@ -2245,10 +2268,10 @@ int custom_exit_lpm(void)
 }
 #endif
 
-void uapi_microhone_switch(bool isopen)
+int32_t uapi_microhone_switch(bool isopen)
 {
     #ifdef FD230
-        microhone_switch(isopen);
+        return microhone_switch(isopen);
     #endif
 }
 
@@ -2384,3 +2407,129 @@ uint8_t uapi_get_cywee_active_state(void)
 {
     return cywee_get_active_state();
 }
+
+void uapi_get_file_data(char *path,uint8_t *data,uint8_t len)
+{
+    FILE * fp = fopen(path,"rb");
+    if(fp==NULL)
+    {
+        PRINT("open %s failed\n",path);
+        return;
+    }
+    int ret = fread(data,1,len,fp);
+    if(ret != len)
+    {
+        PRINT("fread failed %d\n",ret);
+    }
+    fclose(fp);
+}
+
+void uapi_save_file_data(char *path,uint8_t *data,uint8_t len)
+{
+    FILE * fp = fopen(path,"wb");
+    if(fp==NULL)
+    {
+        PRINT("open %s failed\n",path);
+        return;
+    }
+    int ret = fwrite(data,1,len,fp);
+    if(ret != len)
+    {
+        PRINT("fwrite failed %d\n",ret);
+    }
+    fclose(fp);
+}
+
+void uapi_aging_test(uint32_t test_time)
+{
+    int32_t ret = 0;
+    uint32_t enter_age_time = 0;
+    uint32_t age_time = 0;
+    uint32_t display_error = 0;
+    uint32_t fail_num = 0;
+    uint32_t ppg_error = 0;
+    uint8_t ppg_id = 0;
+    uint32_t microhone_error = 0;
+    uint32_t msc = 0;
+    uint8_t cmd = 1;
+    uint32_t lcd_id = 0;
+    uint8_t aging_test_data[4] = {0};
+    uint32_t aging_time = test_time;
+    while(aging_time)
+    {
+        uapi_get_timestampe_ss(&msc);
+        enter_age_time = msc;
+
+        lcd_getid(&lcd_id);
+        if(lcd_id != 0x1133)
+        {
+            display_error++;
+            fail_num++;
+        }
+        PRINT("display_error[%d],fail_num[%d]\n",display_error,fail_num);
+        uapi_setScreenBrightness(255);
+        cmd = 1;
+        do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_TEST,&cmd,sizeof(cmd));
+        for(cmd = 1; cmd < 6 ; cmd++)
+        {
+            do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_COLOR_TEST,&cmd,sizeof(cmd));
+            LOS_Msleep(1000);
+        }
+        
+        for(cmd = 0; cmd < 6 ; cmd++)
+        {
+            uapi_vibrationModeSet(3);
+            LOS_Msleep(1000);
+        }
+        
+        ret = uapi_microhone_switch(1);
+        if(ret != 0)
+        {
+            microhone_error++;
+            fail_num++;
+        }
+        LOS_Msleep(6000);
+        ret = uapi_microhone_switch(0);
+        if(ret != 0)
+        {
+            microhone_error++;
+            fail_num++;
+        }
+        uapi_check_spk(1);
+        LOS_Msleep(6000);
+        uapi_check_spk(0);
+
+        send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
+        LOS_Msleep(6000);
+        send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+        uapi_ppg_get_id(&ppg_id);
+        //if(ft_result.gr_data_final < 10000 || ft_result.red_data_final < 10000 || ft_result.ir_data_final < 10000)
+        if(ppg_id != 0x65)
+        {
+            ppg_error++;
+            fail_num++;
+        }
+
+        uapi_get_timestampe_ss(&msc);
+        age_time = msc;
+        aging_time -= (age_time - enter_age_time);
+        PRINT("aging_time[%d]\n",aging_time);
+        if(aging_time <= 10)
+        {
+            cmd = 0;
+            do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_LCD_TEST,&cmd,sizeof(cmd));
+            aging_test_data[0] = fail_num;
+            aging_test_data[1] = display_error;
+            aging_test_data[2] = microhone_error;
+            aging_test_data[3] = ppg_error;
+            
+            uapi_save_file_data("user/userdata/aging_test.bin",aging_test_data,3);
+            return;
+        }
+    }
+}
+
+uint8_t uapi_get_cywee_static_state(void)
+{
+    return cywee_get_static_state();
+}
\ No newline at end of file
index 53c7e59..e9e5809 100644 (file)
@@ -222,7 +222,7 @@ void uapi_cywee_get_chipinfo(char *databuf,uint8_t len);
 void uapi_ppg_get_id(uint8_t *chip_id);
 
 
-void uapi_microhone_switch(bool isopen);
+int32_t uapi_microhone_switch(bool isopen);
 void uapi_check_spk(bool isopen);
 void uapi_factorytest_set_lcd_color(int color);
 void uapi_factorytest_enter_test_view(int cmd);
@@ -235,6 +235,9 @@ void uapi_efuse_test_write(uint8_t *data,uint32_t byte_number,uint8_t len);
 void uapi_efuse_test_read(uint32_t byte_number,uint8_t len);
 void uapi_gei_btmac_and_chipinfo(void);
 uint8_t uapi_get_cywee_active_state(void);
+void uapi_get_file_data(char *path,uint8_t *data,uint8_t len);
+void uapi_save_file_data(char *path,uint8_t *data,uint8_t len);
+uint8_t uapi_get_cywee_static_state(void);
 #include "custom_utilscpp.h"
 
 
index 24a66f2..21b44e9 100644 (file)
@@ -796,6 +796,43 @@ static uint32_t custom_get_cywee_active_state(uint8_t *para, uint32_t paraLen, c
         wstp_print("cywee is not active !!!\n");
     return ERRCODE_SUCC;
 }
+
+
+static uint32_t custom_aging_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    UNUSED(strCommonCmd);
+
+    uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+    uint32_t argc = 0;
+
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != CUSTOM_UTILS_SUCCESS) {
+        wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    if (argc != 1) {
+        wstp_print("CUSTOM_UTILSTEST power_test ATCMD Set Parameter Failed argc %d\r\n");
+        return ERRCODE_FAIL;
+    }
+    uint8_t aging_time = atol((char*)argv[0]);
+
+    uapi_aging_test(aging_time * 60 * 60);
+
+    return ERRCODE_SUCC;
+}
+
+static uint32_t custom_get_aging_data(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    UNUSED(strCommonCmd);
+
+    uint8_t aging_data[4] = {0};
+    uapi_get_file_data("user/userdata/aging_test.bin",aging_data,4);
+    wstp_print("aging_test fail_num[%d], display_error_num[%d] ,microhone_error_num[%d] ,ppg_error_num[%d] \n",aging_data[0],aging_data[1],aging_data[2],aging_data[3]);
+    return ERRCODE_SUCC;
+}
+
+
 #ifdef SUPPORT_A5133_SERVICE
 
 
@@ -893,10 +930,11 @@ static const at_cmd_table_t g_custom_utils_cmd[] = {
     {(char *)"AT^GETIMEI", custom_get_imei, (char *)" "},
     {(char *)"AT^GETCHIPINFO", custom_get_cywee_chip_info, (char *)" "},
     {(char *)"AT^GETCYWEEACTIVE", custom_get_cywee_active_state, (char *)" "},
+    {(char *)"AT^AGINGTEST", custom_aging_test, (char *)" "},
+    {(char *)"AT^GETAGING", custom_get_aging_data, (char *)" "},
 #ifdef SUPPORT_A5133_SERVICE
     {(char *)"AT^A5133SENDDATA", custom_a5133_send_msg, (char *)" "},
     {(char *)"AT^A5133RSSI", custom_a5133_rssi, (char *)" "},
-
     
 #endif
 };
index ec03994..09974b4 100644 (file)
@@ -123,7 +123,7 @@ void do_vibrator_cmd(vibrator_cmd_t cmd)
     ret = osal_msg_queue_write_copy(g_app_queue, (void *)&mail,
                                     sizeof(vibrator_cmd_t), 0);
     if (ret != OSAL_SUCCESS) {
-        PRINT("Error mag Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+        PRINT("Error vibrator Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
     }
     
 }