Merge #905 into sdk602patch0626 from refs/changes/905/head
author彭磊 <1624952103@qq.com>
Sat, 7 Sep 2024 08:37:31 +0000 (08:37 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Sat, 7 Sep 2024 08:37:31 +0000 (08:37 +0000)
Code review from 彭磊

* refs/changes/905/head: (7 commits squashed)

  - 修复睡眠数据存储bug

  - 优化睡眠模式参数初始化过程
    修复运动模式卡路里不增加的BUG

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 更新dsp_overlay.bin 解决音量问题

  - Merge branch &#39;sdk602patch0626&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 优化睡眠数据清醒时间戳计算,添加录音回环测试

Signed-off-by: aliyun6865282430 <1624952103@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/905
code/sdk/application/audio/sample_ai/sample_ai.c
code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp
code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/utils/CMakeLists.txt
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index a7551fb..be43aae 100755 (executable)
@@ -80,7 +80,7 @@ static inline td_bool ai_check_volume_adjust_support(uapi_ai_port ai_port)
     return TD_FALSE;
 }
 
-static sample_ai_inst *sample_ai_alloc_inst(td_void)
+sample_ai_inst *sample_ai_alloc_inst(td_void)
 {
     sample_ai_inst *inst = (sample_ai_inst *)malloc(sizeof(sample_ai_inst));
     if (inst == TD_NULL) {
@@ -93,7 +93,7 @@ static sample_ai_inst *sample_ai_alloc_inst(td_void)
     return inst;
 }
 
-static td_void sample_ai_free_inst(sample_ai_inst *inst)
+td_void sample_ai_free_inst(sample_ai_inst *inst)
 {
     if (inst == TD_NULL) {
         return;
@@ -103,7 +103,7 @@ static td_void sample_ai_free_inst(sample_ai_inst *inst)
     free(inst);
 }
 
-static sample_ai_inst *sample_ai_get_inst(td_void)
+sample_ai_inst *sample_ai_get_inst(td_void)
 {
     if (osal_list_empty(&g_sample_ai_list) != TD_FALSE) {
         return TD_NULL;
@@ -508,14 +508,14 @@ static td_s32 sample_ai_inst_init(const sample_ai_arg *arg, sample_ai_inst *inst
     return EXT_SUCCESS;
 }
 
-static td_void sample_ai_close_inst(sample_ai_inst *inst)
+td_void sample_ai_close_inst(sample_ai_inst *inst)
 {
     sample_ai_close_ai(inst);
     sample_ai_close_adp(inst);
     sample_ai_sys_deinit();
 }
 
-static td_s32 sample_ai_open_inst(sample_ai_inst *inst)
+td_s32 sample_ai_open_inst(sample_ai_inst *inst)
 {
     td_s32 ret;
 
@@ -551,7 +551,7 @@ out0:
     return ret;
 }
 
-static td_void sample_ai_stop_inst(sample_ai_inst *inst)
+td_void sample_ai_stop_inst(sample_ai_inst *inst)
 {
     td_s32 ret;
 
@@ -704,7 +704,7 @@ static td_void sample_ai_ao_usage(const td_char *name)
     sap_printf("\n");
 }
 
-static td_void sample_ai_ao_parse_port(const td_char *port_name, sample_ai_inst *inst)
+td_void sample_ai_ao_parse_port(const td_char *port_name, sample_ai_inst *inst)
 {
     td_u32 i;
     const struct {
@@ -870,7 +870,7 @@ static td_s32 sample_ai_ao_parse_cmd_line(td_s32 argc, td_char *argv[], sample_a
     return EXT_SUCCESS;
 }
 
-static td_s32 sample_ai_ao_start_inst(sample_ai_inst *inst)
+td_s32 sample_ai_ao_start_inst(sample_ai_inst *inst)
 {
     td_s32 ret;
     athread_attr attr;
@@ -906,7 +906,7 @@ out:
     return ret;
 }
 
-static td_void sample_ai_ao_inst_init(sample_ai_inst *inst)
+td_void sample_ai_ao_inst_init(sample_ai_inst *inst)
 {
     inst->ai_port = sample_ai_get_test_port();
 
@@ -923,7 +923,7 @@ static td_void sample_ai_ao_inst_init(sample_ai_inst *inst)
 #endif
 }
 
-static td_s32 sample_ai_player_open(sample_ai_inst *inst)
+td_s32 sample_ai_player_open(sample_ai_inst *inst)
 {
     td_s32 ret;
     td_handle h_snd;
index 2dcbb2f..4c8b641 100644 (file)
@@ -115,43 +115,56 @@ namespace OHOS
     {
         if(button!=NULL)
         {
-           
+            errcode_t ret = 0;
             if(makphone_falg==0)
             {
-                char *args[6] = {0};
-                const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16","/user/userdata/microphone.mp3"}; // 默认参数数组
-
-                for (int i = 0; i < 6; ++i)
+                // char *args[6] = {0};
+                // const char *defaultArgs[6] = {"01", "mp3", "16000", "1", "16","/user/userdata/microphone.mp3"}; // 默认参数数组
+
+                // for (int i = 0; i < 6; ++i)
+                // {
+                //     args[i] = (char *)malloc(64);        
+                //     sprintf(args[i], "%s", defaultArgs[i]);
+                // }
+                // /* ---------------------------------- 开始录音 ---------------------------------- */
+                // AudioCaptureSample(6, (const char **)args);
+                ret = uapi_start_audio_test();
+                if(ret != ERRCODE_SUCC)
                 {
-                    args[i] = (char *)malloc(64);        
-                    sprintf(args[i], "%s", defaultArgs[i]);
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " uapi_start_audio_test failed ret : %d ",ret);
+                    uapi_stop_audio_test();
                 }
-                /* ---------------------------------- 开始录音 ---------------------------------- */
-                AudioCaptureSample(6, (const char **)args);
-                button->SetText("stop");
-                makphone_falg++;
-            }
-            else if(makphone_falg==1)
-            {
-                int32_t argc = 1;
-                uint8_t *argv = (uint8_t*)"stop";
-                AudioCaptureSample(argc, (const char **)&argv);
-                button->SetText("play");
-                makphone_falg++;
-
-                FILE *file =fopen("/user/userdata/microphone.mp3","rb");
-                if(file==NULL)
+                else
                 {
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ffffffffffffffffsssssss");
+                    button->SetText("stop");
+                    makphone_falg = 1;
                 }
-                fclose(file);
+
             }
-            else if(makphone_falg==2)
+            else if(makphone_falg==1)
             {
+                // int32_t argc = 1;
+                // uint8_t *argv = (uint8_t*)"stop";
+                // AudioCaptureSample(argc, (const char **)&argv);
+                // button->SetText("play");
+                // makphone_falg++;
+
+                // FILE *file =fopen("/user/userdata/microphone.mp3","rb");
+                // if(file==NULL)
+                // {
+                //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ffffffffffffffffsssssss");
+                // }
+                // fclose(file);
+                uapi_stop_audio_test();
+                button->SetText("start");
+                makphone_falg = 0;
+            }
+            // else if(makphone_falg==2)
+            // {
                 
-               AlarmClockModel::GetInstance()->testPlayerStart(Path);
+            //    AlarmClockModel::GetInstance()->testPlayerStart(Path);
                
-            }
+            // }
            
            
            
index 43f2b15..998a824 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: SLEPPNOTIFY24-06-26 19:36:48
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-09-06 09:25:33
+ * @LastEditTime: 2024-09-07 12:03:34
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp
  * @Description:
  *
@@ -138,7 +138,8 @@ namespace OHOS
     static char status_file_path[64] = {0};
 
     static uint32_t fall_asleep_timestamp = 0;
-    
+    static uint32_t history_wake_up_timestamp = 0;
+
     void clean_sleep_data(void)
     {
         total_time = 0;
@@ -250,10 +251,20 @@ namespace OHOS
             memset(status_file_path,0,sizeof(status_file_path));
             sprintf_s(status_file_path, 64, SLEEP_STATUS_PATH, day);
             fp = fopen(status_file_path, "wb+");
+
+            history_wake_up_timestamp = data->wake_up_timestamp;
         }
         else
         {        
             fp = fopen(status_file_path, "ab+");
+            if(history_wake_up_timestamp != data->wake_up_timestamp)
+            {
+                SLEEP_STATE_T sleep_status = {0,0};
+                sleep_status.stat = 3; //清醒状态
+                sleep_status.timestamp = history_wake_up_timestamp + 60; //时间戳为上一次的出睡时间 加 1分钟
+                history_wake_up_timestamp = data->wake_up_timestamp; //更新历史出睡时间戳
+                fwrite(&sleep_status, sizeof(SLEEP_STATE_T), 1, fp);
+            }
         }
 
         if (fp == NULL)
index 5fdacdb..33e752a 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-08-13 09:47:02\r
+ * @LastEditTime: 2024-09-07 12:28:55\r
  * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
  * @Description: \r
  * \r
@@ -1649,7 +1649,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //开始录音\r
                 uint8_t send_data= 0;\r
-                uapi_microhone_switch(1);\r
+                uapi_start_audio_test();\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
                         0x01,\r
@@ -1660,42 +1660,43 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             {\r
                 //停止录音\r
                 uint8_t send_data= 0;\r
-                uapi_microhone_switch(0);\r
+                uapi_stop_audio_test();\r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                         BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
                         0x02,\r
                         &send_data,\r
                         1);\r
-            } else if(testitem == 0x03)\r
-            {\r
-                //播放录音\r
-                uint8_t send_data= 0;\r
-                uapi_check_spk(1);\r
-                factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
-                        BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
-                        0x03,\r
-                        &send_data,\r
-                        1);\r
-            } else if(testitem == 0x04)\r
-            {\r
-                //停止播放\r
-                uint8_t send_data= 0;\r
-                uapi_check_spk(0);\r
-                factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
-                        BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
-                        0x04,\r
-                        &send_data,\r
-                        1);\r
-            } else if(testitem == 0x05)\r
-            {\r
-                //删除录音\r
-                uint8_t send_data = uapi_delete_files("/user/userdata/microphone.mp3");\r
-                factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
-                        BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
-                        0x05,\r
-                        &send_data,\r
-                        1);\r
-            }\r
+            } \r
+            //else if(testitem == 0x03)\r
+            // {\r
+            //     //播放录音\r
+            //     uint8_t send_data= 0;\r
+            //     uapi_check_spk(1);\r
+            //     factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+            //             BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
+            //             0x03,\r
+            //             &send_data,\r
+            //             1);\r
+            // } else if(testitem == 0x04)\r
+            // {\r
+            //     //停止播放\r
+            //     uint8_t send_data= 0;\r
+            //     uapi_check_spk(0);\r
+            //     factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+            //             BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
+            //             0x04,\r
+            //             &send_data,\r
+            //             1);\r
+            // } else if(testitem == 0x05)\r
+            // {\r
+            //     //删除录音\r
+            //     uint8_t send_data = uapi_delete_files("/user/userdata/microphone.mp3");\r
+            //     factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+            //             BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER,\r
+            //             0x05,\r
+            //             &send_data,\r
+            //             1);\r
+            //}\r
             break;\r
 \r
         default:\r
index af79088..6c24c0f 100644 (file)
@@ -2885,7 +2885,7 @@ void hx3695_hrs_ppg_Int_handle(void)
 \r
     if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
     {\r
-        if(hrsresult.lastesthrs > 60 && hrsresult.lastesthrs < 220)\r
+        if(hrsresult.lastesthrs > 30 && hrsresult.lastesthrs < 220)\r
                      get_avg_hrs(hrsresult.lastesthrs);\r
 \r
         hrsresult.wearstatus = MSG_HRS_WEAR;\r
index ab3c733..66e88b4 100644 (file)
@@ -17,6 +17,10 @@ set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${ROOT_DIR}/application/wearable/fd230app/nativeui/phoneservice/include
     ${ROOT_DIR}/application/wearable/fd230app/nativeui/uiservice/include
+    ${ROOT_DIR}/application/audio/thread/
+    ${ROOT_DIR}/application/audio
+    ${ROOT_DIR}/drivers/drivers/driver/audio/source/include
+    ${ROOT_DIR}/drivers/drivers/driver/audio/source/core/common/include/
     
 )
 
index 7a655d9..0dcc41e 100644 (file)
@@ -2881,8 +2881,8 @@ void uapi_analysis_sleep_data(char * timepath , char *statuspath)
     char wake_up_time_str[10] = {0};
     uapi_get_TIME_STR(wake_up_time,wake_up_time_str, '.', ':',DATE_H_M);
 
-    PRINT("入睡时间 : %s \n",asleep_time_str);
-    PRINT("出睡时间 : %s \n",wake_up_time_str);
+    PRINT("入睡时间 : %s %d \n",asleep_time_str,asleep_time);
+    PRINT("出睡时间 : %s %d \n",wake_up_time_str,wake_up_time);
     PRINT("总时长 : %d 分钟\n",total_time);
     PRINT("深睡时长 : %d 分钟\n",total_deep_sleep_time);
     PRINT("浅睡时长 : %d 分钟\n",total_mild_sleep_time);
@@ -2963,6 +2963,109 @@ void uapi_get_sleep_date_on_log(char *time)
 
 }
 
+#include "thread_os.h"
+#include "soc_uapi_ai.h"
+#include "sample_audio_api.h"
+typedef struct sample_ai_inst {
+    athread_handle task;
+    td_bool task_enable;
+    td_bool mute;
+
+    FILE *h_file;
+    td_u32 file_size;
+    td_u32 file_limit_size;
+    td_handle h_adp;
+    td_handle h_ai;
+    td_handle h_player;
+    td_u32 channel_type;
+    uapi_ai_port ai_port;
+    uapi_audio_pcm_format pcm_format;
+    uapi_ai_gain volume;
+
+    /* ao */
+    uapi_snd snd_id;
+    uapi_snd_out_port ao_port;
+
+    td_u32 (*save_frame)(struct sample_ai_inst *inst, const uapi_audio_frame *frame);
+    data_info write_data;
+    td_bool run_bt_loopback;
+    td_void (*sample_ai_process)(struct sample_ai_inst *inst, const uapi_audio_frame *frame);
+    struct osal_list_head node;
+} sample_ai_inst;
+
+
+
+errcode_t uapi_start_audio_test(void)
+{
+    errcode_t ret;
+    sample_ai_inst *inst = TD_NULL;
+
+    inst = sample_ai_alloc_inst();
+    if (inst == TD_NULL) {
+        PRINT("sample_ai_ao_alloc_inst failed\n");
+        return ERRCODE_FAIL;
+    }
+
+    sample_ai_ao_inst_init(inst);
+
+    // ret = sample_ai_ao_parse_cmd_line(argc, argv, inst);
+    // if (ret != EXT_SUCCESS) {
+    //     goto out0;
+    // }
+
+    inst->pcm_format.sample_rate = 16000;
+    inst->pcm_format.channels = 1;
+    inst->pcm_format.bit_depth = 16;
+    sample_ai_ao_parse_port("adc0", inst);
+    inst->volume.integer = 25;
+
+    ret = sample_ai_player_open(inst);
+    if (ret != ERRCODE_SUCC) {
+        PRINT("sample_ao_player_open error : %d\n", ret);
+        goto out0;
+    }
+
+    ret = sample_ai_open_inst(inst);
+    if (ret != ERRCODE_SUCC) {
+        PRINT("sample_ai_open_inst error : %d\n", ret);
+        goto out1;
+    }
+
+    ret = sample_ai_ao_start_inst(inst);
+    if (ret != ERRCODE_SUCC) {
+        PRINT("sample_ai_ao_start_inst error : %d\n", ret);
+        goto out2;
+    }
+
+    sap_alert_log_u32(inst->pcm_format.sample_rate);
+    sap_alert_log_u32(inst->pcm_format.channels);
+    sap_alert_log_u32(inst->pcm_format.bit_depth);
+
+    return ERRCODE_SUCC;
+out2:
+    sample_ai_close_inst(inst);
+out1:
+    sample_ao_player_close();
+out0:
+    sample_ai_free_inst(inst);
+    return ret;
+}
+
+errcode_t uapi_stop_audio_test(void)
+{
+    sample_ai_inst *inst = sample_ai_get_inst();
+
+    if (inst != NULL) {
+        sample_ai_stop_inst(inst);
+        sample_ai_close_inst(inst);
+        sample_ao_player_close();
+        sample_ai_free_inst(inst);
+    }
+
+    return ERRCODE_SUCC;
+}
+
+
 extern void save_file_main(void);
 
 #define SAVE_FILE_STACK_SIZE        0xC00
index 6322d89..5e49f17 100644 (file)
@@ -277,8 +277,8 @@ void uapi_get_a5133_rxdata_timestamp(uint32_t *timestamp);
 uint32_t uapi_get_a5133_update_state(void);
 uint32_t uapi_get_a5133_update_state1(void);
 
-
-
+errcode_t uapi_start_audio_test(void);
+errcode_t uapi_stop_audio_test(void);
 
 
 void start_save_file_thread(void);