360 lines
9.9 KiB
C
360 lines
9.9 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 "os_utils_api.h"
|
|
#include "iot_io_api.h"
|
|
|
|
#include "iot_cli_host_interface.h"
|
|
#include "iot_cli_ckb.h"
|
|
#include "iot_cli_sg.h"
|
|
|
|
#if IOT_CLI_SUPPORT_WL_CMD
|
|
|
|
void cli_get_white_list_state(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
|
|
iot_sg_cli_query_wl_state(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_get_white_list(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_query_wl_t *cmd = (iot_cli_sg_query_wl_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_sg_cli_query_wl(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_add_white_list(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
uint16_t i;
|
|
uint32_t data_len = 0;
|
|
|
|
iot_cli_sg_add_wl_t *cmd = (iot_cli_sg_add_wl_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
data_len = sizeof(*cmd) +
|
|
(sizeof(cmd->node_info[0]) * cmd->count);
|
|
if (data_len > bufferlen) {
|
|
return;
|
|
}
|
|
|
|
iot_printf("cli add white list, count: %d,", cmd->count);
|
|
for (i = 0; i < cmd->count; i++) {
|
|
iot_printf(" proto_type: %d, mac:%x:%x:%x:%x:%x:%x ",
|
|
cmd->node_info[i].proto_type, cmd->node_info[i].mac[0],
|
|
cmd->node_info[i].mac[1], cmd->node_info[i].mac[2],
|
|
cmd->node_info[i].mac[3], cmd->node_info[i].mac[4],
|
|
cmd->node_info[i].mac[5]);
|
|
}
|
|
iot_printf("\n");
|
|
iot_sg_cli_add_wl(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_rm_white_list(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)src_mac;
|
|
uint16_t i;
|
|
uint32_t data_len = 0;
|
|
|
|
iot_cli_sg_rm_wl_t* cmd = (iot_cli_sg_rm_wl_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
data_len = sizeof(*cmd) +
|
|
(sizeof(cmd->mac_addr[0]) * cmd->count);
|
|
if (data_len > bufferlen) {
|
|
return;
|
|
}
|
|
|
|
iot_printf("cli rm white list, count: %d, mac:", cmd->count);
|
|
for (i = 0; i < cmd->count; i++) {
|
|
iot_printf(" %x:%x:%x:%x:%x:%x ", cmd->mac_addr[i][0],
|
|
cmd->mac_addr[i][1], cmd->mac_addr[i][2],
|
|
cmd->mac_addr[i][3], cmd->mac_addr[i][4],
|
|
cmd->mac_addr[i][5]);
|
|
}
|
|
iot_printf("\n");
|
|
|
|
iot_sg_cli_rm_wl(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_set_white_list_state(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_set_wl_state_t* cmd = (iot_cli_sg_set_wl_state_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_printf("cli set white list state: %d\n", cmd->state);
|
|
iot_sg_cli_set_wl_state(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
#endif /* IOT_CLI_SUPPORT_WL_CMD */
|
|
|
|
#if IOT_CLI_CKB_ADDR_MAPPING
|
|
|
|
void cli_set_mac(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)src_mac;
|
|
iot_cli_sg_set_mac_dl_t *cmd = (iot_cli_sg_set_mac_dl_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
iot_cli_sg_set_mac(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
#endif /* IOT_CLI_CKB_ADDR_MAPPING */
|
|
|
|
#if PLC_SUPPORT_CCO_ROLE
|
|
|
|
void cli_get_meter_data(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_get_meter_data(
|
|
add_addr_to_mapping_table(src_mac), buffer, bufferlen);
|
|
}
|
|
|
|
void cli_get_meter_rt_data(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_get_meter_rt_data(
|
|
add_addr_to_mapping_table(src_mac), buffer, bufferlen);
|
|
}
|
|
|
|
void cli_get_report_ack(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_get_report_ack(
|
|
add_addr_to_mapping_table(src_mac), buffer, bufferlen);
|
|
}
|
|
|
|
void cli_start_search_meter(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_start_sec_node_reg_dl_t *cmd =
|
|
(iot_cli_sg_start_sec_node_reg_dl_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_start_get_meter_list(
|
|
add_addr_to_mapping_table(src_mac), cmd->duration);
|
|
}
|
|
|
|
void cli_handle_user_data(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_handle_user_data(CLI_HOST_USE_API_BY_PLCM,
|
|
src_mac, buffer, bufferlen);
|
|
}
|
|
|
|
void cli_stop_search_meter(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
iot_sg_cli_stop_get_meter_list(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_get_meter_list(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_get_sec_node_info_dl_t *cmd = NULL;
|
|
cmd = (iot_cli_sg_get_sec_node_info_dl_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_sg_cli_get_meter_list(add_addr_to_mapping_table(src_mac),
|
|
cmd->sec_node_start_index, cmd->sec_node_count);
|
|
}
|
|
|
|
void cli_set_tsfm_detect_state(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_set_tsfm_detect_state_t *cmd =
|
|
(iot_cli_sg_set_tsfm_detect_state_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_printf("cli set tsfm detect detect state: %d, sta lock: %d\n",
|
|
cmd->tsfm_detect_state, cmd->sta_lock);
|
|
iot_sg_cli_set_tsfm_detect_state(add_addr_to_mapping_table(src_mac),
|
|
cmd);
|
|
}
|
|
|
|
void cli_get_tsfm_detect_state(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
|
|
iot_sg_cli_query_tsfm_detect_state(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_set_con_mr_param(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_con_mr_param_t *cmd = (iot_cli_sg_con_mr_param_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_printf("cli set con mr param, sec_node_monitor_timeout: %d, "
|
|
"max_bcast_con_count: %d\n", cmd->sec_node_monitor_timeout,
|
|
cmd->max_bcast_con_count);
|
|
iot_sg_cli_set_con_mr_param(add_addr_to_mapping_table(src_mac),
|
|
cmd);
|
|
}
|
|
|
|
void cli_get_con_mr_param(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
|
|
iot_sg_cli_query_con_mr_param(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_set_event_rpt_enabled(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_set_event_enabled_t *cmd =
|
|
(iot_cli_sg_set_event_enabled_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_set_event_rpt_enabled(add_addr_to_mapping_table(src_mac),
|
|
cmd);
|
|
}
|
|
|
|
void cli_set_cctt_data_enabled(
|
|
uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_set_cctt_data_enabled_t *cmd =
|
|
(iot_cli_sg_set_cctt_data_enabled_t*)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_set_cctt_data_enabled(add_addr_to_mapping_table(src_mac),
|
|
cmd);
|
|
}
|
|
|
|
void cli_bd_start(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_bd_start_t *cmd = (iot_cli_sg_bd_start_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_sg_cli_bd_start(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_bd_query_state(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
|
|
iot_sg_cli_bd_query_state(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_bd_query_result(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_bd_query_ret_t *cmd = (iot_cli_sg_bd_query_ret_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_sg_cli_bd_query_ret(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_set_esp(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_set_esp_t *cmd = (iot_cli_sg_set_esp_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_set_esp(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_query_esp(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac)
|
|
{
|
|
(void)buffer;
|
|
(void)bufferlen;
|
|
|
|
iot_cli_sg_query_esp(add_addr_to_mapping_table(src_mac));
|
|
}
|
|
|
|
void cli_query_node_info(uint8_t *buffer, uint32_t bufferlen,
|
|
uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_qr_node_info_dl_t *cmd = (iot_cli_sg_qr_node_info_dl_t *)buffer;
|
|
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd))) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_query_node_info(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_cco_send_broadcast_data(uint8_t *buffer, uint32_t bufferlen,
|
|
uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_send_broadcast_data_dl *cmd =
|
|
(iot_cli_sg_send_broadcast_data_dl *)buffer;
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd)) || (!cmd->len)) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_send_broadcast_data(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
void cli_trans_local_proto_data(uint8_t *buffer, uint32_t bufferlen,
|
|
uint8_t *src_mac)
|
|
{
|
|
iot_cli_sg_trans_local_proto_data_dl_t *cmd =
|
|
(iot_cli_sg_trans_local_proto_data_dl_t *)buffer;
|
|
if ((!cmd) || (bufferlen < sizeof(*cmd)) || (!cmd->data_len)) {
|
|
return;
|
|
}
|
|
|
|
iot_cli_sg_trans_local_proto_data(add_addr_to_mapping_table(src_mac), cmd);
|
|
}
|
|
|
|
#endif /* PLC_SUPPORT_CCO_ROLE */
|