From: SnickerSun Date: Tue, 19 Mar 2024 13:23:47 +0000 (+0800) Subject: 优化thread task内存,新建的thread 内存都从psram里取了。 X-Git-Tag: release_V1.2.70_20241020_135402~1294 X-Git-Url: http://git.snicker.com.cn/img/static/gitweb.css?a=commitdiff_plain;h=3886e871b70a2858799f565a4eb7c0e40a8d3303;p=mirrors%2FFD230.git 优化thread task内存,新建的thread 内存都从psram里取了。 --- diff --git a/code/sdk/application/battery/service/battery_service.cpp b/code/sdk/application/battery/service/battery_service.cpp index 82f0e8c47..15e1a43dd 100644 --- a/code/sdk/application/battery/service/battery_service.cpp +++ b/code/sdk/application/battery/service/battery_service.cpp @@ -40,6 +40,9 @@ extern "C" { #include "debug_print.h" + +#include "custom_utils.h" + #define batteryservice_VOLTAGE_MAX (4.2f) #define batteryservice_VOLTAGE_MIN (3.2f) @@ -163,7 +166,7 @@ static void battery_check_and_enable_charge(void) uapi_tcxo_delay_ms(20); enable_charge(); } -static void battery_check_task(void const *arg) +static void battery_check_task(void *arg) { unused(arg); int32_t ret; @@ -326,28 +329,36 @@ errcode_t battery_charger_plug_event_callback(uint8_t plugged) return ERRCODE_SUCC; } - -errcode_t uapi_battery_init(void) +void uapi_battery_create_queue(void) { - - // PRINT("uapi_battery_init !\r\n"); - if (osal_msg_queue_create("battery_queue", APP_BOARD_MSG_COUNT, &g_app_queue, 0, sizeof(common_notify_mail_t)) != ERRCODE_SUCC) { PRINT("[battery][service] app create mail fail\n"); - return ERRCODE_FAIL; + } +} +errcode_t uapi_battery_init(void) +{ - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)battery_check_task, NULL, - "battery_service", APP_BOARD_TASK_SIZE*2); - if (task_handle == NULL) { - osal_msg_queue_is_full(g_app_queue); - PRINT("create battery service thread fail!\r\n"); + + app_task_definition_t taskcfg={0}; + + PRINT("uapi_battery_init !\r\n"); + taskcfg.create_queue_handle = uapi_battery_create_queue; + taskcfg.attr.name="battery_service"; + taskcfg.attr.priority = TASK_PRIORITY_APP; + taskcfg.attr.stack_size = APP_BOARD_TASK_SIZE; + taskcfg.func = battery_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create battery_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - osal_kthread_set_priority(task_handle, APP_BOARD_TASK_PRIO); // osal_kthread_set_priority(task_handle, 10); g_battery_timer = osTimerNew((osTimerFunc_t)battery_check_timer_callback, osTimerPeriodic, NULL, NULL); diff --git a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c index 13f688a68..f0324faba 100755 --- a/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c +++ b/code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c @@ -43,7 +43,7 @@ void ohos_startup() { mbedtls_adapt_register(); - /* δ½Ólcdʱ²»Äܵ÷ÓÃͼÐÎÏà¹ØÀàµÄʵÀý */ + /* 未接lcd时不能调用图形相关类的实例 */ if (!uapi_is_lcd_connect()) { return; } diff --git a/code/sdk/application/wstp/at_service/app/app_at_process.c b/code/sdk/application/wstp/at_service/app/app_at_process.c index 36d0ef55c..47d45da16 100755 --- a/code/sdk/application/wstp/at_service/app/app_at_process.c +++ b/code/sdk/application/wstp/at_service/app/app_at_process.c @@ -440,7 +440,7 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len) TSK_INFO_S task_info; uint32_t taskId; - wstp_print("\r\n"); + wstp_print("\r\nOS_EXTEND_MEM_ADDR\r\n"); OsMemInfoPrint(OS_EXTEND_MEM_ADDR); wstp_print("\n\t\tstack name task id used size peak size\n"); for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) { @@ -451,7 +451,7 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len) wstp_print("%22s %-5d 0x%-8x 0x%-8x\n", task_info.acName, taskId, heapMan->stat.taskMemstats[taskId].memUsed, heapMan->stat.taskMemstats[taskId].memPeak); } - wstp_print("\r\n\r\n"); + wstp_print("\r\nOS_SYS_MEM_ADDR\r\n"); heapMan = (LosMemPoolInfo*)OS_SYS_MEM_ADDR; OsMemInfoPrint(OS_SYS_MEM_ADDR); @@ -466,6 +466,8 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len) } wstp_print("\r\n"); + + #endif #if defined __FREERTOS__ && defined FREERTOS_DEBUG freertos_heap_print(); @@ -481,17 +483,26 @@ uint32_t mcu_os_stack_info(uint8_t *para, uint32_t para_len) #if LOSCFG_MEM_TASK_STAT && defined __LITEOS__ TSK_INFO_S task_info; uint32_t taskId; + uint32_t total_size = 0; + uint32_t used_size = 0; + uint32_t peak_size = 0; - wstp_print("\n stack name task id prio status stack addr total size used size peak size\n" + wstp_print("\n stack name task id prio status stack addr total size used size peak size percentage\n" " -------------- ------- --- ------ --------- -------- -------- --------\n"); for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) { if (0 != LOS_TaskInfoGet(taskId, &task_info)) { continue; } - wstp_print("%22s %-5d %-2d %-2d %-10p 0x%-8x 0x%-8x 0x%-8x\n", task_info.acName, + wstp_print("%22s %-5d %-2d %-2d %-10p 0x%-8x 0x%-8x 0x%-8x %.02f\n", task_info.acName, task_info.uwTaskID, task_info.usTaskPrio, task_info.usTaskStatus, task_info.uwTopOfStack, - task_info.uwStackSize, task_info.uwCurrUsed, task_info.uwPeakUsed); + task_info.uwStackSize, task_info.uwCurrUsed, task_info.uwPeakUsed, (task_info.uwCurrUsed*1.0f/task_info.uwStackSize)); + total_size += task_info.uwStackSize; + used_size += task_info.uwCurrUsed; + peak_size += task_info.uwPeakUsed; } + wstp_print("\n total size(%d) used size(%d) peak size(%d)\n",total_size,used_size,peak_size); + + #endif #if defined __FREERTOS__ && defined FREERTOS_DEBUG diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h index dd90c18e4..7771f9149 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h @@ -11,10 +11,8 @@ #define CYWEE_SERVICE_H__ #ifdef __cplusplus -#if __cplusplus extern "C" { #endif /* __cplusplus */ -#endif /* __cplusplus */ #include "stdint.h" #include "errcode.h" @@ -25,8 +23,8 @@ extern "C" { #define CYWEE_SERVICE_CMD_STOP_CHECK 0x13 #define CYWEE_SERVICE_CMD_TEST 0x14 -errcode_t uapi_acc_service_init(void); -void uapi_acc_service_deinit(void); +errcode_t uapi_cywee_service_init(void); +void uapi_cywee_service_deinit(void); /** * 测试指令 参数cmd 选项: ACC_SERVICE_CMD_START_CHECK,ACC_SERVICE_CMD_STOP_CHECK */ @@ -35,9 +33,7 @@ void do_cywee_service_check_msg(int cmd); void do_cywee_service_check_msg(int cmd); #ifdef __cplusplus -#if __cplusplus } #endif /* __cplusplus */ -#endif /* __cplusplus */ #endif \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index 61e97ffd9..dc1b5a095 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -30,6 +30,7 @@ #include "cywee_service.h" #include "los_printf.h" +#include "custom_utils.h" typedef struct { uint8_t cmd; @@ -118,21 +119,22 @@ static void cywee_service_check_task(void const *arg) } if (mail.cmd == CYWEE_SERVICE_CMD_TIMER_CHECK) { - // cywee_int_handler(); - lis2doc_read_data(); - PRINT("CYWEE_SERVICE_CMD_TIMER_CHECK\r\n"); + cywee_int_handler(); + // lis2doc_read_data(); + // printf("CYWEE_SERVICE_CMD_TIMER_CHECK\r\n"); }else if (mail.cmd == CYWEE_SERVICE_CMD_TEST){ test_api(); }else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK){ cywee_service_running_stat = true; #ifdef TEST_CYWEE_LIB - SettingControl_t scl; - memset(&scl, 0, sizeof(scl)); - scl.iData[0] = 1; - CWM_SettingControl(SCL_GET_LIB_INFO, &scl); - + // SettingControl_t scl; + // memset(&scl, 0, sizeof(scl)); + // scl.iData[0] = 1; + // CWM_SettingControl(SCL_GET_LIB_INFO, &scl); + printf("CYWEE_SERVICE_CMD_START_CHECK \r\n"); + // CWM_lib_init(); #endif - // cywee_main_dml(); + cywee_main_dml(); cywee_service_timer_start_check(CYWEE_CHECK_MS); }else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK){ cywee_service_running_stat = false; @@ -142,28 +144,33 @@ static void cywee_service_check_task(void const *arg) } } #define CYWEE_APP_BOARD_MSG_COUNT 50 -#define CYWEE_APP_BOARD_TASK_SIZE 0x1C00 +#define CYWEE_APP_BOARD_TASK_SIZE 0x1100 #define CYWEE_BOARD_TASK_PRIO 7 -errcode_t uapi_cywee_service_init(void) +void create_cywee_queue(void) { - if (osal_msg_queue_create("cywee_service_queue", CYWEE_APP_BOARD_MSG_COUNT, &g_cywee_queue, 0, sizeof(cywee_cmd_t)) != ERRCODE_SUCC) { - PRINT("[cywee][service] app create mail fail\n"); - return ERRCODE_FAIL; + printf("[cywee][service] app create mail fail\n"); } +} +errcode_t uapi_cywee_service_init(void) +{ + PRINT("uapi_cywee_service_init !\r\n"); + app_task_definition_t taskcfg={0}; + taskcfg.create_queue_handle = create_cywee_queue; + taskcfg.attr.name="cywee_service"; + taskcfg.attr.priority = TASK_PRIORITY_APP; + taskcfg.attr.stack_size = CYWEE_APP_BOARD_TASK_SIZE; + taskcfg.func = cywee_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; - - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)cywee_service_check_task, NULL, - "cywee_service", CYWEE_APP_BOARD_TASK_SIZE); - if (task_handle == NULL) { - osal_msg_queue_is_full(g_cywee_queue); - PRINT("create cywee service thread fail!\r\n"); + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create cywee_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - - osal_kthread_set_priority(task_handle, CYWEE_BOARD_TASK_PRIO); g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL); diff --git a/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c b/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c index c47c115cf..164e25631 100644 --- a/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c +++ b/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c @@ -76,17 +76,17 @@ int gpio_int_pin_init(void) } -int CWM_enableGpioIRQ(uint16_t sensorType, uint16_t sensorPin, PFN_IRQHANDLE callback) -{ +// int CWM_enableGpioIRQ(uint16_t sensorType, uint16_t sensorPin, PFN_IRQHANDLE callback) +// { - return 1; -} +// return 1; +// } -int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin) -{ +// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin) +// { - return 1; -} +// return 1; +// } @@ -285,14 +285,14 @@ void CWM_OS_free(void *ptr) int CWM_OS_dbgOutput(const char * format) { - PRINT("%s", format); + printf("%s", format); return 0; } int CWM_OS_dbgOutput_checkLog(const char * format) { static int s_sn = 0; - PRINT("#_#|%d|%s", s_sn, format); + printf("#_#|%d|%s", s_sn, format); s_sn ++; return 0; } diff --git a/code/sdk/drivers/peripheral/cywee/src/main.c b/code/sdk/drivers/peripheral/cywee/src/main.c index 8705498e3..9fe398c2f 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main.c +++ b/code/sdk/drivers/peripheral/cywee/src/main.c @@ -1,6 +1,121 @@ /*********************/ /*** Include Files ***/ /*********************/ + + +#if 1 + +#include "cwm_lib.h" +#include "CWM_EventStructure.h" +#include "CWM_CustomDataStruct.h" +#include "os_api.h" +#include +#include +#include + +/*********************/ +/*** Macro Defines ***/ +/*********************/ + + +/*************************/ +/*** Variables Defines ***/ +/*************************/ + + +/************************/ +/*** Function Defines ***/ +/************************/ +extern int CWM_OS_dbgOutput(const char * format); +extern int CWM_OS_dbgPrintf(const char * format,...); +#define IDX_ALGO_ACTIVITY_OUTPUT 14 + +void CWM_AP_SensorListen(SensorEVT_t *sensorEVT) { + + switch (sensorEVT->sensorType) { + case 0: + // printf("IDX[%d]: %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f\n", sensorEVT->sensorType, + // sensorEVT->fData[0], + // sensorEVT->fData[1], + // sensorEVT->fData[2], + // sensorEVT->fData[3], + // sensorEVT->fData[4], + // sensorEVT->fData[5], + // sensorEVT->fData[6], + // sensorEVT->fData[7]); + break; + + case 1: + // printf("IDX[%d]: %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f\n", sensorEVT->sensorType, + // sensorEVT->fData[0], + // sensorEVT->fData[1], + // sensorEVT->fData[2], + // sensorEVT->fData[3], + // sensorEVT->fData[4], + // sensorEVT->fData[5], + // sensorEVT->fData[6], + // sensorEVT->fData[7]); + break; + + default: + printf("IDX[%d]: %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f, %.3f\n", sensorEVT->sensorType, + sensorEVT->fData[0], + sensorEVT->fData[1], + sensorEVT->fData[2], + sensorEVT->fData[3], + sensorEVT->fData[4], + sensorEVT->fData[5], + sensorEVT->fData[6], + sensorEVT->fData[7]); + } +} + +void CWM_lib_init(void) { + os_api api = { + .dbgOutput = CWM_OS_dbgOutput, + }; + CWM_LibPreInit(&api); + + + SettingControl_t scl; + + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + // scl.iData[3] = 1; + scl.iData[4] = 1 + 4; + CWM_SettingControl(SCL_LOG, &scl); + + + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + CWM_SettingControl(SCL_GET_LIB_INFO, &scl); + printf("version:%d.%d.%d.%d product:%d model:%d\n", scl.iData[1], scl.iData[2], scl.iData[3], scl.iData[4], scl.iData[5], scl.iData[6]); + + printf("[DBG] ach: %d\n", scl.iData[7]); + + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + scl.iData[1] = 2; //chip vendor, 0:defualt auto detect, 1:auto detect, 2:skip auto detect + CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl); + + CWM_LibPostInit(CWM_AP_SensorListen); + // CWM_LibPostInit(NULL); + + CWM_Sensor_Enable(IDX_REQUEST_SENSOR); + CWM_Sensor_Enable(IDX_ACCEL); + CWM_Sensor_Enable(IDX_GYRO); + CWM_Sensor_Enable(IDX_ALGO_ACTIVITY_OUTPUT); + + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + scl.iData[1] = 1001; + CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl); +} + + + +#else + #include #include #include @@ -10,17 +125,17 @@ #include "simulate_signal.h" #endif -/*********************/ -/*** Macro Defines ***/ -/*********************/ - /*************************/ /*** Variables Defines ***/ /*************************/ + + static const char* REQ_SENS_NAME[] = {"acc", "gyro", "mag", "baro", "temp", "hr", "gnss", "ob", "oc", "accany"}; static int m_req_sensor_state = 0; + + /************************/ /*** Function Defines ***/ /************************/ @@ -43,6 +158,8 @@ int getReqSensor(int index) { return 1; return 0; } + + /** * @brief Sensor listen callback, when you register sensor listen, * when sensor data is ready, sensor manager will call this function to send pSensorEVT_t. @@ -310,3 +427,5 @@ int cywee_main(void) CWM_process(); } } + +#endif diff --git a/code/sdk/drivers/peripheral/mag/service/mag_service.c b/code/sdk/drivers/peripheral/mag/service/mag_service.c index 5941b29e5..05a228a40 100644 --- a/code/sdk/drivers/peripheral/mag/service/mag_service.c +++ b/code/sdk/drivers/peripheral/mag/service/mag_service.c @@ -70,7 +70,7 @@ static bool g_batter_service_initialled = false; #include "mag_service.h" #include "mmc_customer.h" - +#include "custom_utils.h" /*** * 其他cmd在Header里定义,对外开放 */ @@ -171,27 +171,34 @@ static void mag_service_check_task(void const *arg) } } } - -errcode_t uapi_mag_service_init(void) +void create_mag_queue(void) { + if (osal_msg_queue_create("mag_service_queue", APP_BOARD_MSG_COUNT, &g_app_queue, 0, sizeof(common_notify_mail_t)) != ERRCODE_SUCC) { MMC_ERROR("[mag][service] app create mail fail\n"); - return ERRCODE_FAIL; } +} +errcode_t uapi_mag_service_init(void) +{ + - - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)mag_service_check_task, NULL, - "mag_service", APP_BOARD_TASK_SIZE*2); - if (task_handle == NULL) { - osal_msg_queue_is_full(g_app_queue); - MMC_ERROR("create mag service thread fail!\r\n"); + PRINT("uapi_mag_service_init !\r\n"); + app_task_definition_t taskcfg={0}; + taskcfg.create_queue_handle = create_mag_queue; + taskcfg.attr.name="mag_service"; + taskcfg.attr.priority = TASK_PRIORITY_APP; + taskcfg.attr.stack_size = APP_BOARD_TASK_SIZE; + taskcfg.func = mag_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create mag_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - osal_kthread_set_priority(task_handle, APP_BOARD_TASK_PRIO); - // osal_kthread_set_priority(task_handle, 10); - g_mag_service_timer = osTimerNew((osTimerFunc_t)mag_service_check_timer_callback, osTimerPeriodic, NULL, NULL); diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c index 2a67dee49..36de61416 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c @@ -171,7 +171,7 @@ uint8_t hx3695_read_reg(uint8_t addr) } // i2c 连读函数, 客户需填写 -bool hx3695_brust_read_reg(uint8_t addr, uint8_t *buf, uint8_t length) +bool hx3695_brust_read_reg(uint8_t addr, uint8_t *buf, uint16_t length) { //TYHX_LOG("brust read\r\n"); tyhx_read_regs(addr,buf,length); diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h index 7e911092b..0cdfc8535 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h @@ -27,7 +27,7 @@ NEW_GSEN_SCHME DEMO调试使用, 客户关闭 // #define HRV_ALG_LIB // #define CHECK_TOUCH_LIB //#define CHECK_LIVING_LIB -#define BP_CUSTDOWN_ALG_LIB +//#define BP_CUSTDOWN_ALG_LIB //**************** read_data_mode ******************// #define TIMMER_MODE //timmer read fifo @@ -53,7 +53,7 @@ NEW_GSEN_SCHME DEMO调试使用, 客户关闭 //****************** print_swi ********************// #define HRS_DEBUG -#define AGC_DEBUG +//#define AGC_DEBUG //**************************************************// #include "debug_print.h" @@ -186,6 +186,7 @@ typedef enum { FT_SINGLE_CHECK_MODE, FT_LED_OFF_MODE, FT_WEAR_MODE, + NEW_PPG_TEST_MODE, NULL_MODE, } WORK_MODE_T; @@ -247,7 +248,7 @@ void hx3695_delay_us(uint32_t us); void hx3695_delay_ms(uint32_t ms); bool hx3695_write_reg(uint8_t addr, uint8_t data); uint8_t hx3695_read_reg(uint8_t addr); -bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint8_t length); +bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint16_t length); bool hx3695_chip_check(void); uint8_t hx3695_read_fifo_size(void); uint16_t hx3695_read_fifo_data(int32_t *s_buf, uint8_t size, uint8_t phase_num); diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hrs_custom.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hrs_custom.c index 37e867d66..c63126f01 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hrs_custom.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hrs_custom.c @@ -89,7 +89,7 @@ uint32_t tyhx_write_reg(uint8_t reg_addr, uint8_t reg) return ERRCODE_SUCC; } -uint32_t tyhx_read_regs(uint8_t reg_addr, uint8_t *data_buf, uint8_t data_len) +uint32_t tyhx_read_regs(uint8_t reg_addr, uint8_t *data_buf, uint16_t data_len) { errcode_t ret; uint32_t retry; diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h b/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h index 00dfde028..3c27d4d48 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h +++ b/code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h @@ -57,7 +57,7 @@ void tyhx_delay_ms(uint32_t ms); uint32_t tyhx_write_reg( uint8_t reg_addr, uint8_t data); // i2c 读函数, 客户需填写 -uint32_t tyhx_read_regs( uint8_t reg_addr,uint8_t *readbuf,uint8_t readlen); +uint32_t tyhx_read_regs( uint8_t reg_addr,uint8_t *readbuf,uint16_t readlen); #define TYHX_TIMER_40MS 40 #define TYHX_TIMER_320MS 320 diff --git a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp index 3416de6e3..b1a3cbc06 100644 --- a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp +++ b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp @@ -44,7 +44,7 @@ extern "C" { #include "hx3695_hal.h" - +#include "custom_utils.h" static bool g_ppg_service_initialled = false; uint8_t card_databuf[64] = {0}; @@ -265,7 +265,7 @@ void send_ppg_cmd_msg(int cmd) } -static void ppg_service_check_task(void const *arg) +static void ppg_service_check_task(void *arg) { unused(arg); int32_t ret; @@ -326,26 +326,33 @@ static void ppg_service_check_task(void const *arg) } } - -errcode_t uapi_ppg_service_init(void) +void create_ppg_queue(void) { if (osal_msg_queue_create("ppg_service_queue", PPG_SERVICE_MSG_COUNT, &g_app_queue, 0, sizeof(PPG_CMD_TYPE_T)) != ERRCODE_SUCC) { PRINT_ERR("[ppg][service] app create mail fail\n"); - return ERRCODE_FAIL; } +} +errcode_t uapi_ppg_service_init(void) +{ + - - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)ppg_service_check_task, NULL, - "ppg_service", PPG_SERVICE_TASK_SIZE); - if (task_handle == NULL) { - osal_msg_queue_is_full(g_app_queue); - PRINT_ERR("create ppg service thread fail!\r\n"); + PRINT("uapi_ppg_service_init !\r\n"); + app_task_definition_t taskcfg={0}; + taskcfg.create_queue_handle = create_ppg_queue; + taskcfg.attr.name="ppg_service"; + taskcfg.attr.priority = TASK_PRIORITY_APP; + taskcfg.attr.stack_size = PPG_SERVICE_TASK_SIZE; + taskcfg.func = ppg_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create ppg_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - osal_kthread_set_priority(task_handle, PPG_SERVICE_TASK_PRIO); - return ERRCODE_SUCC; } diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index 55e29b55a..3e27dc358 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -468,7 +468,7 @@ static int udp_socket_init() #include "cmsis_os2.h" extern osStatus_t osDelay(uint32_t ticks); #define cat1_msleep(ms) osDelay(ms) /* osDelay(1) : 1ms */ -int cat1_server_task(void *pvParameters) +void cat1_server_task(void *pvParameters) { char rx_buffer[512]; char tx_buffer[256]; @@ -508,7 +508,7 @@ int cat1_server_task(void *pvParameters) } } - return 0; + } @@ -536,15 +536,21 @@ void wifi_status() errcode_t cat1_server_init(void) { - - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)cat1_server_task, NULL, - "cat1_service", CAT1_SERVICE_TASK_SIZE); - if (task_handle == NULL) { - PRINT_ERR("create cat1 service thread fail!\r\n"); + PRINT("cat1_server_init !\r\n"); + app_task_definition_t taskcfg={0}; + taskcfg.create_queue_handle = NULL; + taskcfg.attr.name="cat1_service"; + taskcfg.attr.priority = TASK_PRIORITY_APP; + taskcfg.attr.stack_size = CAT1_SERVICE_TASK_SIZE; + taskcfg.func = cat1_server_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create cat1_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - - osal_kthread_set_priority(task_handle, CAT1_SERVICE_TASK_PRIO); g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL); @@ -555,7 +561,6 @@ errcode_t cat1_server_init(void) g_timer_cat1_sleep = osTimerNew((osTimerFunc_t)timeout_handler_sleep_cat1, osTimerPeriodic, NULL, NULL); - return ERRCODE_SUCC; } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 0fccf6ce5..a1b526191 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -34,6 +34,27 @@ #include "sys/time.h" #include "time.h" +#include "custom_utils.h" + +errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg) +{ + if (task_cfg==NULL) + return ERRCODE_FAIL; + /* Create queues before tasks in case they are used during initialisation. */ + if (task_cfg->create_queue_handle) { + task_cfg->create_queue_handle(); + } + /* Create tasks */ + if (task_cfg->use_mem == USE_EXTEND_MEM) { + task_cfg->attr.stack_mem = memalign(16, task_cfg->attr.stack_size); // 16字节对齐 + } + task_cfg->task_handle = osThreadNew(task_cfg->func, NULL, &(task_cfg->attr)); + if (task_cfg->task_handle == NULL) { + return ERRCODE_FAIL; + } + return ERRCODE_SUCC; +} + uint32_t zh_get_sn(uint8_t *buf_sn, uint32_t *len_sn) { @@ -609,3 +630,4 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len) return ERRCODE_SUCC; } + diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index b9f1546af..b550e34da 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -6,19 +6,28 @@ * History: \n * 2023-02-24, Create file. \n */ -#ifndef BUTTON_H -#define BUTTON_H +#ifndef CUSTOM_UTILS_H +#define CUSTOM_UTILS_H + + + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ #include "hal_gpio.h" #include "soc_osal.h" #include "platform_core.h" #include +#include "thread_init.h" -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif /* __cplusplus */ -#endif /* __cplusplus */ +#define TASK_PRIORITY_APP (osPriority_t)(17) +#define TASK_PRIORITY_LOG (osPriority_t)(18) +#define TASK_PRIORITY_CMD (osPriority_t)(17) +#define TASK_PRIORITY_BRANDY_APP (osPriority_t)(15) +#define TASK_PRIORITY_SDK (osPriority_t)(31) +#define TASK_PRIORITY_DFX_MSG (osPriority_t)(18) +#define TASK_PRIORITY_TRANSMIT (osPriority_t)(20) uint32_t zh_get_sn(uint8_t *buf_sn, uint32_t *len_sn); uint32_t zh_set_sn(uint8_t *buf_sn, uint32_t len_sn); @@ -44,6 +53,7 @@ errcode_t uapi_get_btname(uint8_t *buf_btname, uint32_t *len_btname); errcode_t init_btaddr_btname(void); errcode_t disable_bt_service(void); +errcode_t uapi_create_osThread_custom(app_task_definition_t *task_cfg); errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len); /** @@ -51,9 +61,7 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len); */ #ifdef __cplusplus -#if __cplusplus } #endif /* __cplusplus */ -#endif /* __cplusplus */ #endif \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp b/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp index bfc84f2da..1e708f682 100644 --- a/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp +++ b/code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp @@ -47,7 +47,7 @@ static bool g_batter_service_initialled = false; #include "vibrator_service.h" #include "vibrator_hal.h" #include "vibrator.h" - +#include "custom_utils.h" void custom_VibratorFunc(OHOS::VibratorType vibratorType) { @@ -105,7 +105,7 @@ void do_vibrator_cmd(vibrator_cmd_t cmd) } -static void vibrator_service_check_task(void const *arg) +static void vibrator_service_check_task(void *arg) { unused(arg); int32_t ret; @@ -123,28 +123,31 @@ static void vibrator_service_check_task(void const *arg) } } - -errcode_t uapi_vibrator_service_init(void) +void create_vib_queue(void) { if (osal_msg_queue_create("vibrator_service_queue", APP_BOARD_MSG_COUNT, &g_app_queue, 0, sizeof(vibrator_cmd_t)) != ERRCODE_SUCC) { PRINT("[mag][service] app create mail fail\n"); - return ERRCODE_FAIL; } - - - osal_task *task_handle = osal_kthread_create((osal_kthread_handler)vibrator_service_check_task, NULL, - "vibrator_service", APP_BOARD_TASK_SIZE); - if (task_handle == NULL) { - osal_msg_queue_is_full(g_app_queue); - PRINT("create mag service thread fail!\r\n"); +} +errcode_t uapi_vibrator_service_init(void) +{ + PRINT("uapi_vibrator_service_init !\r\n"); + app_task_definition_t taskcfg={0}; + taskcfg.create_queue_handle = NULL; + taskcfg.attr.name="vib_service"; + taskcfg.attr.priority = TASK_PRIORITY_TRANSMIT; + taskcfg.attr.stack_size = APP_BOARD_TASK_SIZE; + taskcfg.func = vibrator_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret=uapi_create_osThread_custom(&taskcfg); + if(ret != ERRCODE_SUCC) + { + PRINT("create cat1_service failed %d!\r\n",ret); return ERRCODE_FAIL; } - osal_kthread_set_priority(task_handle, 10); - // osal_kthread_set_priority(task_handle, 10); - - OHOS::VibratorManager::GetInstance()->RegisterVibratorFunc(custom_VibratorFunc); return ERRCODE_SUCC; diff --git a/code/sdk/drivers/peripheral/vibrator/vibrator.h b/code/sdk/drivers/peripheral/vibrator/vibrator.h index 5ec1cf376..079391598 100644 --- a/code/sdk/drivers/peripheral/vibrator/vibrator.h +++ b/code/sdk/drivers/peripheral/vibrator/vibrator.h @@ -6,8 +6,8 @@ * History: \n * 2023-02-24, Create file. \n */ -#ifndef BUTTON_H -#define BUTTON_H +#ifndef VIBRATOR_H +#define VIBRATOR_H #include "hal_gpio.h" #include "soc_osal.h"