From: snickersun@163.com Date: Thu, 18 Apr 2024 07:39:21 +0000 (+0000) Subject: Merge #43 into xts_origin from refs/changes/43/head X-Git-Tag: release_V1.2.70_20241020_135402~1172^2~2 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=c00b689cbc1fb022e20a700bca064d78af01cba1;p=mirrors%2FFD230.git Merge #43 into xts_origin from refs/changes/43/head Code review from snickersun@163.com * refs/changes/43/head: (2 commits squashed) - 添加custom_cmd_service task,解决cat1 开机后cat1 Vote 无法消除的问题。 - 修改acc 25Hz 让系统可以休眠 Signed-off-by: snickersun@163.com Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/43 --- diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c index fec0bbc7b..a98cd540a 100755 --- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c @@ -364,6 +364,7 @@ static void thread_main(const void *unused) slip_uart_init(); #endif + uapi_custom_cmd_service_init(); #ifdef ENABLE_CYWEE uapi_cywee_service_init(); diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index dfe1c9fdb..0aaa6e976 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -46,7 +46,7 @@ typedef struct * 其他cmd在Header里定义,对外开放 */ -#define CYWEE_CHECK_MS 20 +#define CYWEE_CHECK_MS 40 osTimerId_t g_cywee_service_timer = NULL; static bool g_batter_service_initialled = false; diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 4d8ad52b1..b38dd4ba0 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -750,11 +750,18 @@ int cywee_main_dml(int cmd) //设置acc gyro 相关参数 memset(&scl, 0, sizeof(scl)); scl.iData[0] = 1; + scl.iData[7] = 5; //轴向配置 + #if 0 scl.iData[3] = 2; scl.iData[4] = 2; //1 anytime 2 fifo scl.iData[6] = 5; //先設定5 - scl.iData[7] = 5; scl.iData[8] = 52; // for st sensor(52Hz) + #else + scl.iData[3] = 2; + scl.iData[4] = 2; //1 anytime 2 fifo + scl.iData[6] = 5; //fifocount 先設定5 + scl.iData[8] = 25; // for st sensor(52Hz) + #endif CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp index 4ff317831..984ee9c45 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp @@ -10,7 +10,7 @@ #include "voice_call_volte_sample_wrapper.h" #include "los_base.h" #include "wearable_log.h" - +#include "custom_utils.h" // int32_t VoiceCallVolteSample(int32_t argc, const char *argv[]) @@ -78,7 +78,7 @@ void uapi_cat1_stop_volte_voice(void) VoiceCallVolteSample(1,(const char**)argv); } -void uapi_cat1_remove_audio_vote(void) +void uapi_cat1_remove_cat1_vote(void) { uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1); if (cnt == 1) { @@ -88,7 +88,7 @@ void uapi_cat1_remove_audio_vote(void) } WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU SLEEP SUCCESS\r\n"); } -void uapi_cat1_add_audio_vote(void) +void uapi_cat1_add_cat1_vote(void) { uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1); if (cnt == 0) { @@ -103,8 +103,8 @@ extern void restart_sleep_cat1_timer(void); void cat1_ring_isr_callback(pin_t pin, uintptr_t param) { WEARABLE_LOGW(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1_ring_isr_callback %d 0x%X\n",pin,param); - uapi_cat1_add_audio_vote(); - restart_sleep_cat1_timer(); + uapi_cat1_add_cat1_vote(); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_REMOVE_CAT1VOTE); } void uapi_cat1_wakeup_cat1(uint8_t wakeup) diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h index 75406a5be..fdba58ea0 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h @@ -15,8 +15,8 @@ uint32_t uapi_cat1_reset(uint32_t pwron); void cat1_ring_isr_callback(pin_t pin, uintptr_t param); void uapi_cat1_start_volte_voice(void); void uapi_cat1_stop_volte_voice(void); -void uapi_cat1_remove_audio_vote(void); -void uapi_cat1_add_audio_vote(void); +void uapi_cat1_remove_cat1_vote(void); +void uapi_cat1_add_cat1_vote(void); void uapi_cat1_wakeup_cat1(uint8_t wakeup); bool uapi_cat1_get_power_stat(void); diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index 04f9297b5..eef29ad9c 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -47,7 +47,7 @@ extern "C" { #include "cat1_ctl.h" #include "tcxo.h" #include "custom_utils.h" -#include "cmsis_os2.h" +#include "cmsis_os.h" @@ -101,8 +101,8 @@ struct tcp_msg_t { static int g_listen_sock = 0; struct sockaddr_in sourceAddr = {0}; -osTimerId_t g_timer_time_sync = NULL; -osTimerId_t g_timer_cat1_sleep = NULL; +static osTimerId_t g_timer_time_sync = NULL; +static osTimerId_t g_timer_cat1_sleep = NULL; static uint8_t g_time_synced = 0; #define MAX_TIME_SYNC_RETRY_TIME 5 static uint8_t g_time_sync_retry_time = 0; @@ -143,10 +143,10 @@ static void udp_send_response(char *tx_buffer, char *head, char *content) if( len > 0 ) { err = sendto(g_listen_sock, tx_buffer, len, 0, (struct sockaddr *)&sourceAddr, sizeof(sourceAddr)); if (err < 0) { - printf("Error occured during sending: errno %d\n", errno); + PRINT("Error occured during sending: errno %d\n", errno); } } else { - printf("Error occured unkown send data\n"); + PRINT("Error occured unkown send data\n"); } } #include "uart_porting.h" @@ -155,7 +155,7 @@ void udp_send_msg_toCat1(char cmd,char *content) if (!uapi_cat1_get_power_stat()) { - printf("Error cat1 poweroff skipp send data\n"); + PRINT("Error cat1 poweroff skipp send data\n"); return ; } uapi_cat1_wakeup_cat1(1); @@ -204,7 +204,7 @@ void cat1_getsignal(void) } void cat1_gettime(void) { - printf("UDP_CMD_GET_TIME\n"); + PRINT("UDP_CMD_GET_TIME\n"); udp_send_msg_toCat1(UDP_CMD_GET_TIME,"0"); } @@ -326,26 +326,34 @@ int cat1_handle_timesync(struct tcp_msg_t *msg) static void timeout_handler_sleep_cat1(void) { - printf("sleep mcu\n"); - uapi_cat1_remove_audio_vote(); //接收到指令,让自己可以睡 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"sleep mcu\n"); // uapi_cat1_wakeup_cat1(0);// 反馈给cat1,它也可以自己睡 if(osTimerIsRunning(g_timer_cat1_sleep)==1 ) { - osTimerStop(g_timer_cat1_sleep); + osStatus_t ret = osTimerStop(g_timer_cat1_sleep); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStop g_timer_cat1_sleep ret %d\n",ret); } + uapi_cat1_remove_cat1_vote(); //接收到指令,让自己可以睡 + } //目前只在 被cat1唤醒的中断函数里执行, void restart_sleep_cat1_timer(void) { - if (g_timer_cat1_sleep == NULL) return ; + if (g_timer_cat1_sleep == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"g_timer_cat1_sleep is NULL \n"); + return ; + } if(osTimerIsRunning(g_timer_cat1_sleep)==1 ) { - osTimerStop(g_timer_cat1_sleep); + osStatus_t ret = osTimerStop(g_timer_cat1_sleep); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStop g_timer_cat1_sleep ret %d\n",ret); } if(osTimerIsRunning(g_timer_cat1_sleep)==0 ) { - // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"restart_sleep_cat1_timer \n"); - osTimerStart(g_timer_cat1_sleep,5000); //20秒后重试同步时间 + uint32_t tick = (uint32_t )osMs2Tick(5000); // 5 seconds + osStatus_t ret = osTimerStart(g_timer_cat1_sleep,tick); //5秒后重试同步时间 + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"osTimerStart g_timer_cat1_sleep ret %d\n",ret); } } @@ -353,20 +361,20 @@ void restart_sleep_cat1_timer(void) static void time_sync_func(void) { - printf("time_sync_func\n"); + PRINT("time_sync_func\n"); cat1_gettime(); if(osTimerIsRunning(g_timer_time_sync)==1 && g_time_synced == 1 ) { - osTimerStop(g_timer_time_sync); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer \n"); + osStatus_t ret = osTimerStop(g_timer_time_sync); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer , ret %d\n",ret); }else{ g_time_sync_retry_time ++; } if( g_time_sync_retry_time >= MAX_TIME_SYNC_RETRY_TIME) { - osTimerStop(g_timer_time_sync); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer \n",MAX_TIME_SYNC_RETRY_TIME); + osStatus_t ret = osTimerStop(g_timer_time_sync); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer ,ret %d\n",MAX_TIME_SYNC_RETRY_TIME,ret); } } @@ -378,8 +386,10 @@ void restart_time_sync(void) g_time_sync_retry_time = 0; if(osTimerIsRunning(g_timer_time_sync)==0 ) { - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer \n"); - osTimerStart(g_timer_time_sync,5000); //20秒后重试同步时间 + // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer \n"); + uint32_t tick = (uint32_t )osMs2Tick(5000); // 60000: seconds of a minute + osStatus_t ret = osTimerStart(g_timer_time_sync,tick); //5秒后重试同步时间 + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 restart_time_sync timer ret %d\n",ret); } } @@ -430,10 +440,10 @@ static int udp_packet_parse(char *rx_buffer, int len) index = cat1_handle_call_disconnected(msg); break; case UDP_CMD_CAT1_OTA_UPDATE: - printf("CAT1_OTA_UPDATE reply %s\n",msg->buffer); + PRINT("CAT1_OTA_UPDATE reply %s\n",msg->buffer); break; case UDP_MSG_REPLY: - printf("UDP_MSG_REPLY reply %s\n",msg->buffer); + PRINT("UDP_MSG_REPLY reply %s\n",msg->buffer); //"BOOTUP,pyVer,PY_SRV_V4,modemVer,EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312" if(strstr(msg->buffer,"BOOTUP")!=NULL) { @@ -447,14 +457,14 @@ static int udp_packet_parse(char *rx_buffer, int len) index = cat1_handle_networ_msg(msg); break; default: - printf("error message: %s\n", rx_buffer); + PRINT("error message: %s\n", rx_buffer); index = 1; break; } // if (index > 0) //需要反馈的指令才返回OK // udp_send_msg_toCat1( msg->head[1], "OK"); } else { - printf("wrong format msg and exit\n"); + PRINT("wrong format msg and exit\n"); index = 1; } @@ -479,14 +489,14 @@ static int udp_socket_init() int listen_sock = socket(addr_family, SOCK_DGRAM, ip_protocol); if (listen_sock < 0) { - printf("Unable to create socket: errno %d\n", errno); + PRINT("Unable to create socket: errno %d\n", errno); return -1; } setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); int err = bind(listen_sock, (struct sockaddr *)&destAddr, sizeof(destAddr)); if (err != 0) { - printf("Socket unable to bind: errno %d\n", errno); + PRINT("Socket unable to bind: errno %d\n", errno); return -1; } @@ -509,7 +519,7 @@ void cat1_server_task(void *pvParameters) if( g_listen_sock > 0 ) close(g_listen_sock); g_listen_sock = udp_socket_init(); if( g_listen_sock < 0 ) { - printf("socket init fail and retry\n"); + PRINT("socket init fail and retry\n"); // vTaskDelay(1000/portTICK_RATE_MS); cat1_msleep(1000); continue; @@ -522,15 +532,15 @@ void cat1_server_task(void *pvParameters) int len = recvfrom(g_listen_sock, rx_buffer, sizeof(rx_buffer) - 1, 0, (struct sockaddr *)&sourceAddr, &addrLen); // Error occured during receiving if (len < 0) { - printf("recv failed: errno %d\n", errno); + PRINT("recv failed: errno %d\n", errno); break; } else if (len == 0) { - printf("Connection closed\n"); + PRINT("Connection closed\n"); break; } // Data received rx_buffer[len] = '\0'; // Null-terminate whatever we received and treat like a string - printf("Received %d bytes, rx_buffer: %s\n", len, rx_buffer); + PRINT("Received %d bytes, rx_buffer: %s\n", len, rx_buffer); index = udp_packet_parse(rx_buffer, len); // if( index >= 0 ) { // udp_send_response(tx_buffer, rx_buffer, "OK"/* msg_wifi_resp[index]*/); @@ -552,7 +562,7 @@ void wifi_status() int index = resolve_msg_wifi_status(NULL); char *head = "FF"; int len = pack_tlv_format(tx_buffer, head, msg_wifi_status[index]); - printf("wifi_status len = %d, msg = [%s]\n",len, tx_buffer); + PRINT("wifi_status len = %d, msg = [%s]\n",len, tx_buffer); } #endif @@ -584,19 +594,15 @@ errcode_t cat1_server_init(void) } g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL); - - // if ( poweron_cat1_on_bootup_flag() ) - // { - // uapi_cat1_power_on(1); - // uapi_cat1_reset(0); - // } if (g_timer_time_sync == NULL) - printf("g_timer_time_sync create failed\n"); + PRINT("g_timer_time_sync create failed\n"); g_timer_cat1_sleep = osTimerNew((osTimerFunc_t)timeout_handler_sleep_cat1, osTimerPeriodic, NULL, NULL); if (g_timer_cat1_sleep == NULL) - printf("g_timer_cat1_sleep create failed\n"); - + PRINT("g_timer_cat1_sleep create failed\n"); + //第一次启动,要确保去除已经添加过的cat1 Vote + restart_sleep_cat1_timer(); + return ERRCODE_SUCC; } diff --git a/code/sdk/drivers/peripheral/utils/CMakeLists.txt b/code/sdk/drivers/peripheral/utils/CMakeLists.txt index 348ac28d3..1867dbdea 100644 --- a/code/sdk/drivers/peripheral/utils/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/utils/CMakeLists.txt @@ -7,6 +7,7 @@ set(COMPONENT_NAME "custom_utils") set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/custom_utils.c ${CMAKE_CURRENT_SOURCE_DIR}/custom_utils_at_cmd.c + ${CMAKE_CURRENT_SOURCE_DIR}/custom_cmd_service.c ) set(PUBLIC_HEADER diff --git a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c new file mode 100644 index 000000000..6574e81a8 --- /dev/null +++ b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c @@ -0,0 +1,147 @@ +/** + * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n + * + * Description: Test adc source \n + * Author: @CompanyNameTag \n + * History: \n + * 2022-08-16, Create file. \n + */ +#include "pinctrl.h" +#include "debug_print.h" +#include "soc_osal.h" +#include "tcxo.h" +#include "irmalloc.h" +#include "errcode.h" +#include "common_def.h" + +#include "chip_core_irq.h" +#include "chip_io.h" +#include "gpio.h" +#include "pm_veto.h" + +#include "rtc.h" +#include "timer.h" +#include "systick.h" + +#include "tcxo.h" + +#include "cmsis_os2.h" + +#include "los_printf.h" + +#include "custom_utils.h" + +typedef struct +{ + uint8_t cmd; + // uint8_t data[2]; +} custom_cmd_cmd_t; +/*** + * 其他cmd在Header里定义,对外开放 + */ + +static bool g_bat_timer_is_running = false; +static unsigned long g_custom_cmd_queue; + + + +static bool custom_cmd_service_running_stat = false; + +void do_custom_cmd_service_check_msg(int cmd) +{ + int ret; + + custom_cmd_cmd_t mail = {0}; + mail.cmd = cmd; + // mail.data[0] = data[0]; + // mail.data[1] = data[1]; + ret = osal_msg_queue_write_copy(g_custom_cmd_queue, (void *)&mail, sizeof(custom_cmd_cmd_t), 0); + if (ret != OSAL_SUCCESS) + { + PRINT("Error custom_cmd Check MSG 0x%02X send failed! err=0x%x! \r\n", cmd, ret); + } +} + +static void custom_cmd_service_check_task(void const *arg) +{ + unused(arg); + int32_t ret; + custom_cmd_cmd_t mail; + uint32_t msgsize = (uint32_t)sizeof(custom_cmd_cmd_t); + custom_cmd_service_running_stat = true; + + while (1) + { + ret = osal_msg_queue_read_copy(g_custom_cmd_queue, (void *)&mail, &msgsize, + OSAL_MSGQ_WAIT_FOREVER); + if (ret != OSAL_SUCCESS) + { + continue; + } + + if (mail.cmd == CUSTOM_CMD_MSG_TYPE_REMOVE_CAT1VOTE) + { + restart_sleep_cat1_timer(); + } + else + { + PRINT("unknown CUSTOM_CMD_MSG cmd 0x%2X \r\n",mail.cmd); + } + } +} +#define CUSTOM_CMD_APP_BOARD_MSG_COUNT 10 +#define CUSTOM_CMD_APP_BOARD_TASK_SIZE 0x800 +#define CUSTOM_CMD_BOARD_TASK_PRIO 7 +void create_custom_cmd_queue(void) +{ + if (osal_msg_queue_create("custom_cmd_service_queue", CUSTOM_CMD_APP_BOARD_MSG_COUNT, &g_custom_cmd_queue, + 0, sizeof(custom_cmd_cmd_t)) != ERRCODE_SUCC) + { + printf("[custom_cmd][service] app create mail fail\n"); + } +} +errcode_t uapi_custom_cmd_service_init(void) +{ + + PRINT("uapi_custom_cmd_service_init !\r\n"); + app_task_definition_t taskcfg = {0}; + taskcfg.create_queue_handle = create_custom_cmd_queue; + taskcfg.attr.name = "custom_cmd_service"; + taskcfg.attr.priority = osPriorityNormal; + taskcfg.attr.stack_size = CUSTOM_CMD_APP_BOARD_TASK_SIZE; + taskcfg.func = custom_cmd_service_check_task; + taskcfg.use_mem = USE_EXTEND_MEM; + + errcode_t ret = uapi_create_osThread_custom(&taskcfg); + if (ret != ERRCODE_SUCC) + { + PRINT("create custom_cmd_service failed %d!\r\n", ret); + return ERRCODE_FAIL; + } + + // g_custom_cmd_service_timer = osTimerNew((osTimerFunc_t)custom_cmd_service_check_timer_callback, osTimerPeriodic, NULL, NULL); + + // do_custom_cmd_service_check_msg(CUSTOM_CMD_SERVICE_CMD_START_CHECK, NULL); + + return ERRCODE_SUCC; +} + +// void custom_cmd_service_service_resume(void) +// { +// PRINT("custom_cmd_service_service resume!\r\n"); +// custom_cmd_service_check_timer_callback(0); +// } +// void custom_cmd_service_service_suspend(void) +// { +// PRINT("custom_cmd_service_service suspend!\r\n"); +// } + +// void custom_cmd_service_service_resume(void) +// { +// PRINT("custom_cmd_service_service resume!\r\n"); +// custom_cmd_service_check_timer_callback(0); +// } +// void custom_cmd_service_service_suspend(void) +// { +// PRINT("custom_cmd_service_service suspend!\r\n"); +// } \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index dfb437c0f..83f5c1d40 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -298,7 +298,7 @@ errcode_t uapi_get_timestampe_ms(uint64_t *tm) #define BITS_PER_BYTE 8 #define HEXADECIMAL 16 #define DECIMAL 10 -#define TIME_YEAR_OFFSET 70 +#define TIME_YEAR_OFFSET 123 #define TIME_ZONE_OFF (8 * 60) #define TIME_SECSPERMIN 60 /* second per minute */ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8_t *zone) @@ -324,7 +324,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8 // 年的计算需要减去1900 _tm.tm_year = strtol(ptr, NULL, DECIMAL) - 1900; if (_tm.tm_year < TIME_YEAR_OFFSET) { - printf("ERR!year num must bigger than 1970!"); + printf("ERR!year num must bigger than 2023!"); return 3; } ptr = tmp + 1; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index daa077c8a..606da3ab1 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -131,6 +131,11 @@ bool stop_alipay_ble_service(void); uint32_t uapi_calendar_recover_date(void); uint32_t uapi_calendar_store_date(void); + +#define CUSTOM_CMD_MSG_TYPE_REMOVE_CAT1VOTE 0x01 +errcode_t uapi_custom_cmd_service_init(void); +void do_custom_cmd_service_check_msg(int cmd); + #ifdef __cplusplus } #endif /* __cplusplus */