mcu_hi3321_watch/tjd/ate/tp/tp_cmd_process.c
2025-05-26 20:15:20 +08:00

145 lines
3.6 KiB
C

#include "tp_cmd_process.h"
#include "ate_at_process.h"
#include "ate_cmd_manager.h"
#include "common_def.h"
#include "securec.h"
#include "soc_errno.h"
#include "soc_osal.h"
#include "tp_api.h"
#include "rtc.h"
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
tp_at_cmd_api *g_tp_process_api = NULL;
void tp_cmd_process_init(void)
{
if (g_tp_process_api == NULL) {
g_tp_process_api = (tp_at_cmd_api *)tjd_driver_tp_get_at_cmd_api();
}
}
result_t get_chipid(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
uint16_t chip_id;
result.code = g_tp_process_api->get_chipid(&chip_id);
if (result.code == EXT_ERR_SUCCESS) {
result.len = snprintf((char *)result.msg, ATE_MSG_MAX_LEN, "0x%x", chip_id);
}
return result;
}
result_t get_version(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
uint16_t version;
result.code = g_tp_process_api->get_version(&version);
if (result.code == EXT_ERR_SUCCESS) {
result.len = snprintf((char *)result.msg, ATE_MSG_MAX_LEN, "%d", version);
}
return result;
}
result_t get_rawdata(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
uint8_t rawdata;
result.code = g_tp_process_api->get_rawdata(&rawdata);
if (result.code == EXT_ERR_SUCCESS) {
result.len = snprintf((char *)result.msg, ATE_MSG_MAX_LEN, "0x%x", rawdata);
}
return result;
}
static void update_task(void *param)
{
result_t result = {0};
result.code = g_tp_process_api->fwupg_auto_upgrade();
process_at_cmd_ret(result);
}
result_t test_update(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
result.out_time = 5000;
result.callback = update_task;
return result;
}
result_t set_open(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
if (para_len < 1) {
result.code = EXT_ERR_INVALID_PARAM;
return result;
}
int32_t argc = 0;
uint8_t *argv[AT_MAX_PARAM_CNT];
convert_at_param(para, para_len, &argc, argv);
if (IS_ON(argv[0])) {
result.code = g_tp_process_api->set_open(true);
} else if (IS_OFF(argv[0])) {
result.code = g_tp_process_api->set_open(false);
} else {
result.code = EXT_ERR_INVALID_PARAM;
}
free_argv(argv, argc);
return result;
}
result_t test_touch(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
return result;
}
result_t set_power(uint8_t *para, uint32_t para_len)
{
unused(para);
unused(para_len);
result_t result = {0};
if (para_len < 1) {
result.code = EXT_ERR_INVALID_PARAM;
return result;
}
int32_t argc;
uint8_t *argv[AT_MAX_PARAM_CNT];
convert_at_param(para, para_len, &argc, argv);
if (strnlen((const char *)argv[0], 2) != 1) {
result.code = EXT_ERR_INVALID_PARAM;
return result;
}
switch (argv[0][0]) {
case '0': /*work*/
g_tp_process_api->set_power_mode(0);
break;
case '1': /*idle*/
g_tp_process_api->set_power_mode(1);
break;
case '2': /*sleep*/
g_tp_process_api->set_power_mode(2);
break;
default:
result.code = EXT_ERR_INVALID_PARAM;
break;
}
free_argv(argv, argc);
return result;
}