159 lines
4.6 KiB
C
159 lines
4.6 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#include "iot_io.h"
|
|
#include "iot_utils_api.h"
|
|
#include "iot_system.h"
|
|
#include "iot_uart_h.h"
|
|
|
|
#include "iot_cli.h"
|
|
#include "iot_cli_host_interface.h"
|
|
#include "iot_cli_plc_module.h"
|
|
#include "iot_oem_api.h"
|
|
#include "iot_cli_tx_rx.h"
|
|
#include "iot_cli_basic_operation.h"
|
|
#include "iot_board_api.h"
|
|
#include "iot_version_api.h"
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
#include "simulator_txrx.h"
|
|
extern uint32_t g_ip_addr;
|
|
#else
|
|
#include "iot_log_api.h"
|
|
#endif
|
|
|
|
extern iot_cli_t cli;
|
|
extern uint32_t g_fw_mode;
|
|
extern iot_plc_host_config_t *host_config;
|
|
|
|
void cli_set_snr(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
(void)bufferlen;
|
|
(void)src_mac;
|
|
snr_hdr_t *hdr = (snr_hdr_t*)buffer;
|
|
uint8_t is_plc = 1;
|
|
if (sizeof(snr_hdr_t) > 8 && hdr->mode == 0) {
|
|
is_plc = 0;
|
|
}
|
|
uint32_t infonum = hdr->num;
|
|
uint8_t addr[52] = { 0 };
|
|
os_ntoa(hdr->dest_addr, addr);
|
|
if (hdr->dest_addr != g_ip_addr) {
|
|
return;
|
|
}
|
|
for (uint32_t i = 0; i < infonum; i++) {
|
|
memset(addr, 0, sizeof(addr));
|
|
snr_info_t *info =
|
|
(snr_info_t *)&buffer[sizeof(snr_hdr_t) + i*(sizeof(snr_info_t))];
|
|
if (info->ip_addr == 0) {
|
|
continue;
|
|
}
|
|
os_ntoa(info->ip_addr, addr);
|
|
iot_printf("set snr, ip:%s, sr:%d, phase:%d, src_phase:%d\n", addr,
|
|
info->snr, info->phase, info->src_phase);
|
|
if (is_plc) {
|
|
update_sr(
|
|
(char*)&addr[0], (uint8_t)info->snr,
|
|
info->phase, info->src_phase);
|
|
}
|
|
else {
|
|
update_rf_sr(
|
|
(char*)&addr[0], (uint8_t)info->snr);
|
|
}
|
|
}
|
|
#else
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
(void)src_mac;
|
|
#endif
|
|
}
|
|
|
|
void cli_force_crash(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)src_mac;
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
IOT_ASSERT(bufferlen == sizeof(uint32_t));
|
|
uint32_t* dest_addr = (uint32_t*)buffer;
|
|
uint8_t addr[52] = { 0 };
|
|
os_ntoa(*dest_addr, addr);
|
|
if (*dest_addr != g_ip_addr) {
|
|
return;
|
|
}
|
|
IOT_ASSERT(0);
|
|
#else
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
iot_printf("cli force crash\n");
|
|
IOT_ASSERT(0);
|
|
#endif
|
|
}
|
|
|
|
void cli_uart_test(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)src_mac;
|
|
iot_printf("cli uart loop back test, bufferlen:%d\n", bufferlen);
|
|
cli_send_module_msg(CLI_MODULEID_COMMUNICATION, CLI_MSGID_UART_TEST_RESP,
|
|
buffer, bufferlen);
|
|
}
|
|
|
|
void cli_set_baudrate(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)src_mac;
|
|
uint32_t baudrate = 0;
|
|
uint8_t set = 0;
|
|
|
|
if ((!buffer) || (bufferlen < sizeof(uint32_t))) {
|
|
return;
|
|
}
|
|
|
|
baudrate = *((uint32_t *)buffer);
|
|
|
|
if (g_fw_mode == FTM_MODE)
|
|
{
|
|
bool_t ret = false;
|
|
|
|
ret = iot_uart_set_config(cli.commu.uart_handle, baudrate,
|
|
CLI_FTM_PARITY, CLI_FTM_DATA_BITS, CLI_FTM_STOP_BITS);
|
|
|
|
if (ret)
|
|
{
|
|
set = 1;
|
|
}
|
|
|
|
iot_printf("cli_set_baudrate baud %d ret %d\n", baudrate, ret);
|
|
}
|
|
else {
|
|
iot_printf("cli_set_baudrate ignore, not in ftm mode\n");
|
|
}
|
|
|
|
iot_cli_send_to_host(
|
|
CLI_MSGID_SET_BAUD_RATE_ACK, &set, sizeof(set), src_mac);
|
|
}
|
|
void cli_get_local_info(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
local_info_t info;
|
|
|
|
info.role = host_config->dev_role;
|
|
info.ver_type = iot_version_type();
|
|
info.user_type = iot_oem_get_user_type();
|
|
iot_mac_addr_cpy(info.mac_addr, host_config->mac_addr);
|
|
info.hw_ver = iot_board_hw_version_hex();
|
|
info.sw_ver = iot_version_hex();
|
|
|
|
iot_cli_send_to_host(CLI_MSGID_GET_LOCAL_INFO_RESP, (uint8_t *)&info,
|
|
sizeof(info), src_mac);
|
|
}
|