From 840b0e73bfafb651711ad04bf44f842e3ae4e50a Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Thu, 18 Dec 2025 10:57:56 +0800 Subject: [PATCH] =?utf8?q?fd272xts=EF=BC=9Asn=E5=8F=B7=E5=86=99=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wstp/at_service/app/app_cmd_manager.c | 129 ++++++++++++++++++ .../battery/service/battery_service.cpp | 4 +- 2 files changed, 131 insertions(+), 2 deletions(-) diff --git a/code/sdk/application/wstp/at_service/app/app_cmd_manager.c b/code/sdk/application/wstp/at_service/app/app_cmd_manager.c index b73a973ca..15fc05732 100644 --- a/code/sdk/application/wstp/at_service/app/app_cmd_manager.c +++ b/code/sdk/application/wstp/at_service/app/app_cmd_manager.c @@ -33,6 +33,8 @@ #include "diag_msg.h" #include "chip_io.h" #include "chip_exception_utils.h" +#include +#include #define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0])) @@ -1126,6 +1128,130 @@ static uint32_t app_test_hard_fault_dog_error(uint8_t *para, uint32_t para_len, return ERRCODE_SUCC; } +#define CUSTOM_UTILS_MAX_ARGC 8 +#define CUSTOM_UTILS_MAX_ARGV_LEN 256 +#define CUSTOM_UTILS_SUCCESS 0 +#define CUSTOM_UTILS_FAILED (-1) +static int ConvertCmdToParam(uint8_t *para, uint32_t paraLen, + uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN], uint32_t* argc) +{ + uint32_t pos = 0; + *argc = 0; + + for (uint32_t i = 0; i < paraLen; i++) { + if ((para[i] == ' ' || para[i] == '\n') && pos != 0) { + argv[*argc][pos] = '\0'; + *argc += 1; + pos = 0; + if (*argc >= CUSTOM_UTILS_MAX_ARGC) { + return CUSTOM_UTILS_FAILED; + } + } else { + argv[*argc][pos] = para[i]; + pos++; + if (pos >= CUSTOM_UTILS_MAX_ARGV_LEN) { + return CUSTOM_UTILS_FAILED; + } + } + } + if (pos != 0) { + *argc += 1; + } + + return CUSTOM_UTILS_SUCCESS; +} + +static uint32_t zh_set_sn_(uint8_t *buf_sn, uint32_t len_sn) +{ + errcode_t nv_ret_value=0; +// #ifdef SUPPORT_NV + if( buf_sn == NULL || len_sn == 0) + return ERRCODE_FAIL; + + uint8_t *test_nv_value; /* 要写入的NV value保存在test_nv_value中 */ + + uint16_t key_len= sizeof(custom_key_sn_t); + uint8_t *write_value = malloc(key_len); + custom_key_sn_t *p_sn = (custom_key_sn_t*)write_value; + uint16_t len = 0; + if (len_sn > sizeof(p_sn->sn)) + { + len = sizeof(p_sn->sn); + }else{ + len = len_sn; + } + p_sn->size = len; + memcpy_s(p_sn->sn,sizeof(p_sn->sn),buf_sn,len); + nv_ret_value = uapi_nv_write(NV_ID_CUSTOM_KEY_SERIAL_NUM, write_value, key_len); + if (nv_ret_value != ERRCODE_SUCC) { + /* ERROR PROCESS */ + free(write_value); + return ERRCODE_FAIL; + } + /* APP PROCESS */ + free(write_value); + +// #endif + return nv_ret_value; + +} + +static uint32_t zh_get_sn_(uint8_t *buf_sn, uint32_t *len_sn) +{ + +// #ifdef SUPPORT_NV + if( buf_sn == NULL) + return ERRCODE_FAIL; + uint16_t len = 0; + custom_key_sn_t sn = {0}; + errcode_t nvRet = uapi_nv_read(NV_ID_CUSTOM_KEY_SERIAL_NUM, sizeof(custom_key_sn_t), &len, &sn); + if (nvRet != ERRCODE_SUCC) { + *len_sn = 0; + } + memcpy_s(buf_sn,sizeof(sn.sn),sn.sn,sn.size); + *len_sn = sn.size; + //PRINT("get sn len %d, ret %d , %s\r\n",sn.size,nvRet,sn.sn); +// #endif + return ERRCODE_SUCC; +} + +static uint32_t custom_utils_setsn(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + UNUSED(strCommonCmd); + uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 }; + uint32_t argc = 0; + + int ret = ConvertCmdToParam(para, paraLen, argv, &argc); + if (ret != CUSTOM_UTILS_SUCCESS) { + wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n"); + return ERRCODE_FAIL; + } + + if (argc != 1) { + wstp_print("CUSTOM_UTILSTEST ATCMD Set Parameter Failed argc %d\n",argc); + return ERRCODE_FAIL; + } + uint8_t *sn_buf = (uint8_t*)argv[0]; + uint16_t len = strlen((const char*)sn_buf); + uint32_t rret = zh_set_sn_(sn_buf,len); + wstp_print("set sn = %s , len = %d, ret 0x%X\r\n",sn_buf,len, rret); + + return 0; +} + +static uint32_t custom_utils_getsn(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + UNUSED(para); + UNUSED(paraLen); + UNUSED(strCommonCmd); + uint8_t sn_buf[CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 }; + uint32_t len = sizeof(sn_buf); + uint32_t rret = zh_get_sn_(sn_buf,&len); + wstp_print("get sn = %s , len = %d, ret 0x%X\r\n",sn_buf,len, rret); + return 0; +} + + static const at_cmd_table_t g_app_cmd[] = { /* 无参数无特殊处理AT命令 */ { "AT^TESTMCUBUS", app_test_mcu_bus_status, "" }, //测试总线状态 @@ -1156,6 +1282,9 @@ static const at_cmd_table_t g_app_cmd[] = { { "AT^TIMESET", app_time_set_handle, "" }, { "AT^TIMEGET", app_time_get_handle, "" }, + { (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" }, + { (char *)"AT^CUSTOM_SN_REQ", custom_utils_getsn, (char *)" " }, + { "AT^MMCSWITCHCMD", parse_emmc_switch_handle, "" }, // AT^MMCSWITCHCMD=0x031E0100 { "AT^MMCGETECSD", parse_emmc_get_ext_csd_handle, "" }, // AT^MMCGETECSD { "AT^MMCGETCID", parse_emmc_get_cid_handle, "" }, // AT^MMCGETCID diff --git a/code/sdk/zhihui/services/battery/service/battery_service.cpp b/code/sdk/zhihui/services/battery/service/battery_service.cpp index b740c61fa..f1671bff8 100644 --- a/code/sdk/zhihui/services/battery/service/battery_service.cpp +++ b/code/sdk/zhihui/services/battery/service/battery_service.cpp @@ -364,7 +364,7 @@ static void battery_check_chargement(void) batteryservice_get_battery_temp(&bat_temp); #ifdef DISABLE_VBUS_CHECK - PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE); + // PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE); /** * 如果充电过程中,电池温度>=BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE,则停止充电 * 否则按正常流程充电 @@ -404,7 +404,7 @@ static void battery_check_chargement(void) if(get_charge_stat() == 1) { - PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE); + // PRINT("charging enable charge ! bat-temp %.2f Vs highest temp value %.2f !\n",bat_temp,BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE); /** * 如果充电过程中,电池温度>=BATTERY_DISABLE_CHARGE_HI_TEMP_VALUE,则停止充电 * 否则按正常流程充电 -- 2.17.1