145 lines
3.6 KiB
C
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;
|
|
}
|