From d1d9ebf6faee4e6d1dd0e86922712d161787626a Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Sat, 7 Sep 2024 14:39:18 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E7=9D=A1=E7=9C=A0=E6=95=B0?= =?utf8?q?=E6=8D=AE=E6=B8=85=E9=86=92=E6=97=B6=E9=97=B4=E6=88=B3=E8=AE=A1?= =?utf8?q?=E7=AE=97=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=BD=95=E9=9F=B3=E5=9B=9E?= =?utf8?q?=E7=8E=AF=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../application/audio/sample_ai/sample_ai.c | 20 ++-- .../producttest/src/testmicrophone.cpp | 67 ++++++----- .../nativeui/sleep/src/SleepModel.cpp | 15 ++- .../factorytest_protocol.c | 67 +++++------ .../drivers/peripheral/ppg/hx3695/hx3695.c | 2 +- .../drivers/peripheral/utils/CMakeLists.txt | 4 + .../drivers/peripheral/utils/custom_utils.c | 107 +++++++++++++++++- .../drivers/peripheral/utils/custom_utils.h | 4 +- 8 files changed, 209 insertions(+), 77 deletions(-) diff --git a/code/sdk/application/audio/sample_ai/sample_ai.c b/code/sdk/application/audio/sample_ai/sample_ai.c index a7551fb92..be43aaea1 100755 --- a/code/sdk/application/audio/sample_ai/sample_ai.c +++ b/code/sdk/application/audio/sample_ai/sample_ai.c @@ -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; diff --git a/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp b/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp index 2dcbb2f46..4c8b6419a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/producttest/src/testmicrophone.cpp @@ -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); - } + // } diff --git a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp index 43f2b15da..998a824f9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/sleep/src/SleepModel.cpp @@ -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) diff --git a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c index 5fdacdbaf..33e752a6a 100644 --- a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c +++ b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-06-17 14:31:08 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-08-13 09:47:02 + * @LastEditTime: 2024-09-07 12:28:55 * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c * @Description: * @@ -1649,7 +1649,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint { //开始录音 uint8_t send_data= 0; - uapi_microhone_switch(1); + uapi_start_audio_test(); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, 0x01, @@ -1660,42 +1660,43 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint { //停止录音 uint8_t send_data= 0; - uapi_microhone_switch(0); + uapi_stop_audio_test(); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, 0x02, &send_data, 1); - } else if(testitem == 0x03) - { - //播放录音 - uint8_t send_data= 0; - uapi_check_spk(1); - factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, - BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, - 0x03, - &send_data, - 1); - } else if(testitem == 0x04) - { - //停止播放 - uint8_t send_data= 0; - uapi_check_spk(0); - factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, - BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, - 0x04, - &send_data, - 1); - } else if(testitem == 0x05) - { - //删除录音 - uint8_t send_data = uapi_delete_files("/user/userdata/microphone.mp3"); - factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, - BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, - 0x05, - &send_data, - 1); - } + } + //else if(testitem == 0x03) + // { + // //播放录音 + // uint8_t send_data= 0; + // uapi_check_spk(1); + // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, + // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, + // 0x03, + // &send_data, + // 1); + // } else if(testitem == 0x04) + // { + // //停止播放 + // uint8_t send_data= 0; + // uapi_check_spk(0); + // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, + // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, + // 0x04, + // &send_data, + // 1); + // } else if(testitem == 0x05) + // { + // //删除录音 + // uint8_t send_data = uapi_delete_files("/user/userdata/microphone.mp3"); + // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, + // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_SPEAKER, + // 0x05, + // &send_data, + // 1); + //} break; default: diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c index af790887e..6c24c0f63 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c @@ -2885,7 +2885,7 @@ void hx3695_hrs_ppg_Int_handle(void) if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE) { - if(hrsresult.lastesthrs > 60 && hrsresult.lastesthrs < 220) + if(hrsresult.lastesthrs > 30 && hrsresult.lastesthrs < 220) get_avg_hrs(hrsresult.lastesthrs); hrsresult.wearstatus = MSG_HRS_WEAR; diff --git a/code/sdk/drivers/peripheral/utils/CMakeLists.txt b/code/sdk/drivers/peripheral/utils/CMakeLists.txt index ab3c7330e..66e88b4c8 100644 --- a/code/sdk/drivers/peripheral/utils/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/utils/CMakeLists.txt @@ -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/ ) diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index c992d7a02..73281dc70 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -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 diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 0171836ad..68945b504 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -271,8 +271,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); -- 2.17.1