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 */
 |