优化thread task内存,新建的thread 内存都从psram里取了。
authorSnickerSun <snickersun@163.com>
Tue, 19 Mar 2024 13:23:47 +0000 (21:23 +0800)
committerSnickerSun <snickersun@163.com>
Tue, 19 Mar 2024 13:23:47 +0000 (21:23 +0800)
18 files changed:
code/sdk/application/battery/service/battery_service.cpp
code/sdk/application/wearable/ohos_startup/ohosfwk_startup.c
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/board_yh601s.c
code/sdk/drivers/peripheral/cywee/src/main.c
code/sdk/drivers/peripheral/mag/service/mag_service.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hrs_custom.c
code/sdk/drivers/peripheral/ppg/hx3695/tyhx_hrs_custom.h
code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/drivers/peripheral/vibrator/service/vibrator_service.cpp
code/sdk/drivers/peripheral/vibrator/vibrator.h

index 82f0e8c..15e1a43 100644 (file)
@@ -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);
 
index 13f688a..f0324fa 100755 (executable)
@@ -43,7 +43,7 @@ void ohos_startup()
 {
     mbedtls_adapt_register();
 
-    /* Î´½Ólcdʱ²»Äܵ÷ÓÃͼÐÎÏà¹ØÀàµÄʵÀý */
+    /* 未接lcd时不能调用图形相关类的实例 */
     if (!uapi_is_lcd_connect()) {
         return;
     }
index 36d0ef5..47d45da 100755 (executable)
@@ -440,7 +440,7 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len)
     TSK_INFO_S task_info;\r
     uint32_t taskId;\r
 \r
-    wstp_print("\r\n");\r
+    wstp_print("\r\nOS_EXTEND_MEM_ADDR\r\n");\r
     OsMemInfoPrint(OS_EXTEND_MEM_ADDR);\r
     wstp_print("\n\t\tstack name  task id  used size  peak size\n");\r
     for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) {\r
@@ -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,\r
             heapMan->stat.taskMemstats[taskId].memUsed, heapMan->stat.taskMemstats[taskId].memPeak);\r
     }\r
-    wstp_print("\r\n\r\n");\r
+    wstp_print("\r\nOS_SYS_MEM_ADDR\r\n");\r
 \r
     heapMan = (LosMemPoolInfo*)OS_SYS_MEM_ADDR;\r
     OsMemInfoPrint(OS_SYS_MEM_ADDR);\r
@@ -466,6 +466,8 @@ uint32_t mcu_os_heap_info(uint8_t *para, uint32_t para_len)
     }\r
     wstp_print("\r\n");\r
 \r
+\r
+\r
 #endif\r
 #if defined __FREERTOS__ && defined FREERTOS_DEBUG\r
     freertos_heap_print();\r
@@ -481,17 +483,26 @@ uint32_t mcu_os_stack_info(uint8_t *para, uint32_t para_len)
 #if LOSCFG_MEM_TASK_STAT && defined __LITEOS__\r
     TSK_INFO_S task_info;\r
     uint32_t taskId;\r
+    uint32_t total_size = 0;\r
+    uint32_t used_size = 0;\r
+    uint32_t peak_size = 0;\r
 \r
-    wstp_print("\n      stack name      task id    prio  status    stack addr     total size   used size   peak size\n"\r
+    wstp_print("\n      stack name      task id    prio  status    stack addr     total size   used size   peak size   percentage\n"\r
         "     --------------   -------    ---   ------    ---------      --------     --------    --------\n");\r
     for (taskId = 0; taskId <= LOSCFG_BASE_CORE_TSK_LIMIT; taskId++) {\r
         if (0 != LOS_TaskInfoGet(taskId, &task_info)) {\r
             continue;\r
         }\r
-        wstp_print("%22s      %-5d   %-2d      %-2d      %-10p    0x%-8x   0x%-8x   0x%-8x\n", task_info.acName,\r
+        wstp_print("%22s      %-5d   %-2d      %-2d      %-10p    0x%-8x   0x%-8x   0x%-8x   %.02f\n", task_info.acName,\r
             task_info.uwTaskID, task_info.usTaskPrio, task_info.usTaskStatus, task_info.uwTopOfStack,\r
-            task_info.uwStackSize, task_info.uwCurrUsed, task_info.uwPeakUsed);\r
+            task_info.uwStackSize, task_info.uwCurrUsed, task_info.uwPeakUsed, (task_info.uwCurrUsed*1.0f/task_info.uwStackSize));\r
+        total_size += task_info.uwStackSize;\r
+        used_size += task_info.uwCurrUsed;\r
+        peak_size += task_info.uwPeakUsed;\r
     }\r
+    wstp_print("\n total size(%d)   used size(%d)   peak size(%d)\n",total_size,used_size,peak_size);\r
+   \r
+\r
 #endif\r
 \r
 #if defined __FREERTOS__ && defined FREERTOS_DEBUG\r
index dd90c18..7771f91 100644 (file)
 #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
index 61e97ff..dc1b5a0 100644 (file)
@@ -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);
   
index c47c115..164e256 100644 (file)
@@ -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;
 }
index 8705498..9fe398c 100644 (file)
@@ -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 <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+/*********************/
+/*** 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 <stdlib.h>
 #include <stdint.h>
 #include <string.h>
 #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
index 5941b29..05a228a 100644 (file)
@@ -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);
   
 
index 2a67dee..36de614 100644 (file)
@@ -171,7 +171,7 @@ uint8_t hx3695_read_reg(uint8_t addr)
 }\r
 \r
 // i2c 连读函数, 客户需填写\r
-bool hx3695_brust_read_reg(uint8_t addr, uint8_t *buf, uint8_t length)\r
+bool hx3695_brust_read_reg(uint8_t addr, uint8_t *buf, uint16_t length)\r
 {\r
     //TYHX_LOG("brust read\r\n");\r
     tyhx_read_regs(addr,buf,length);\r
index 7e91109..0cdfc85 100644 (file)
@@ -27,7 +27,7 @@ NEW_GSEN_SCHME     DEMO调试使用, 客户关闭
 // #define HRV_ALG_LIB\r
 // #define CHECK_TOUCH_LIB\r
 //#define CHECK_LIVING_LIB\r
-#define BP_CUSTDOWN_ALG_LIB\r
+//#define BP_CUSTDOWN_ALG_LIB\r
 \r
 //**************** read_data_mode ******************//\r
 #define TIMMER_MODE           //timmer read fifo\r
@@ -53,7 +53,7 @@ NEW_GSEN_SCHME     DEMO调试使用, 客户关闭
 \r
 //****************** print_swi ********************//\r
 #define HRS_DEBUG\r
-#define AGC_DEBUG\r
+//#define AGC_DEBUG\r
 \r
 //**************************************************//\r
 #include "debug_print.h"\r
@@ -186,6 +186,7 @@ typedef enum {
        FT_SINGLE_CHECK_MODE,\r
   FT_LED_OFF_MODE,\r
   FT_WEAR_MODE,\r
+    NEW_PPG_TEST_MODE,\r
   NULL_MODE,\r
 } WORK_MODE_T;\r
 \r
@@ -247,7 +248,7 @@ void hx3695_delay_us(uint32_t us);
 void hx3695_delay_ms(uint32_t ms);\r
 bool hx3695_write_reg(uint8_t addr, uint8_t data); \r
 uint8_t hx3695_read_reg(uint8_t addr); \r
-bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint8_t length);\r
+bool hx3695_brust_read_reg(uint8_t addr , uint8_t *buf, uint16_t length);\r
 bool hx3695_chip_check(void);\r
 uint8_t hx3695_read_fifo_size(void);\r
 uint16_t hx3695_read_fifo_data(int32_t *s_buf, uint8_t size, uint8_t phase_num);\r
index 37e867d..c63126f 100644 (file)
@@ -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;
index 00dfde0..3c27d4d 100644 (file)
@@ -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
index 3416de6..b1a3cbc 100644 (file)
@@ -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;
 }
 
index 55e29b5..3e27dc3 100644 (file)
@@ -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;
 }
 
index 0fccf6c..a1b5261 100644 (file)
 #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;
 }
 
+
index b9f1546..b550e34 100644 (file)
@@ -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 <errcode.h>
+#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
index bfc84f2..1e708f6 100644 (file)
@@ -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;
index 5ec1cf3..0793915 100644 (file)
@@ -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"