190 lines
6.1 KiB
C
190 lines
6.1 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.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef IOT_CLI_H
|
|
#define IOT_CLI_H
|
|
|
|
/* os shim includes */
|
|
#include "os_types.h"
|
|
#include "os_lock.h"
|
|
#include "os_task.h"
|
|
#include "os_event.h"
|
|
|
|
#include "iot_config.h"
|
|
#include "iot_queue.h"
|
|
#include "iot_mem_pool.h"
|
|
#include "iot_task.h"
|
|
#include "iot_dbglog.h"
|
|
#include "iot_pkt_api.h"
|
|
|
|
#include "communicator.h"
|
|
|
|
#include "iot_cli_type_definition.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct _cli_mini_mode_data
|
|
{
|
|
void *buffer;
|
|
uint32_t len;
|
|
} cli_mini_mode_data;
|
|
|
|
typedef struct _cli_cvg_inf
|
|
{
|
|
uint8_t cvg_role; //the role of the cvg
|
|
} cli_cvg_info_t;
|
|
|
|
typedef struct _iot_cli_entry
|
|
{
|
|
commnucator_t commu;
|
|
dbglog_info_t *dbglog;
|
|
iot_task_h cli_task_h;
|
|
cli_cvg_info_t local_info;
|
|
uint8_t need_download_cli_to_flash : 1,
|
|
/* enable commnucator */
|
|
enable_commu : 1,
|
|
/* reserved for further use */
|
|
rsvd : 6;
|
|
} iot_cli_t;
|
|
|
|
iot_task_msg_t *iot_cli_create_cli_msg(
|
|
uint16_t id, iot_pkt_t *pkt);
|
|
|
|
uint32_t iot_cli_init(uint8_t interface_type, uint8_t ftm_mode);
|
|
|
|
/* pack for the structures in the whole file */
|
|
#pragma pack(push) // save the pack status
|
|
#pragma pack(1) // 1 byte align
|
|
#if HW_PLATFORM == HW_PLATFORM_SIMU
|
|
|
|
typedef struct _snr_info
|
|
{
|
|
uint32_t ip_addr;
|
|
uint32_t snr;
|
|
uint32_t phase;
|
|
uint32_t src_phase;
|
|
} snr_info_t;
|
|
|
|
typedef struct _snr_hdr
|
|
{
|
|
uint32_t dest_addr;
|
|
uint32_t num;
|
|
uint32_t mode; //0:rf, 1:plc
|
|
}snr_hdr_t;
|
|
#endif
|
|
|
|
/*
|
|
*the buffer is alloced by cli mode, and consided that some up-level mode need
|
|
*access the buffer at another task, so give a param to tell if cli need free
|
|
*the buffer or not, if need cli free the iot_pkt, please set the need_free
|
|
* to true, by default the value of bool param is true
|
|
*/
|
|
typedef void(*FTM_MSG_HANDLER)(int msgid, iot_pkt_t* buffer, bool_t* need_free);
|
|
|
|
typedef void(*PT_BOARD_MSG_HANDLER)(int msgid, iot_pkt_t* buffer);
|
|
|
|
typedef void(*IC_TOOL_MSG_HANDLER)(int msgid, iot_pkt_t* buffer, uint32_t len);
|
|
|
|
typedef void(*CLI_REGULAR_LOG)();
|
|
|
|
void register_regular_log(CLI_REGULAR_LOG cb);
|
|
|
|
void register_ftm_recv_cb(FTM_MSG_HANDLER cb);
|
|
|
|
void register_pd_board_recv_cb(PT_BOARD_MSG_HANDLER cb);
|
|
|
|
void register_ic_tool_recv_cb(IC_TOOL_MSG_HANDLER cb);
|
|
|
|
void register_ic_rf_tool_recv_cb(IC_TOOL_MSG_HANDLER cb);
|
|
|
|
void cli_send_module_msg_with_sn(uint32_t moduleid, uint32_t msgid,
|
|
uint8_t *buffer, uint32_t bufferlen, uint16_t sn, uint8_t *src_mac);
|
|
void cli_send_module_msg(uint32_t moduleid, uint32_t msgid,
|
|
uint8_t *buffer, uint32_t bufferlen);
|
|
|
|
/**
|
|
* @brief iot_cli_pre_handle_data() - cli module pre handle communicator data.
|
|
* @param buffer: communicator received data ptr.
|
|
* @param len: data length.
|
|
* @param type: communicator type , see - COMMUNICATOR_XXX.
|
|
* @retval: ERR_OK - handle is ok.
|
|
* others - handle is fail.
|
|
*/
|
|
uint32_t iot_cli_pre_handle_data(void *buffer, uint32_t len,
|
|
interface_type_t type);
|
|
|
|
#define IOT_CLI_MSG_TYPE 1
|
|
|
|
#define IOT_CLI_SEND_MSG 1 /* send messages */
|
|
#define IOT_CLI_REV_MSG 3 /* cli rx msg */
|
|
#define IOT_CLI_HOST_MSG 4 /* cli host msg */
|
|
#define IOT_CLI_LOG_TIMER 5 /* cli log timer */
|
|
#define IOT_CLI_UPGRADE_TIMER 6 /* cli upgrade timer */
|
|
#define IOT_CLI_SG_MSG 7 /* cli and smart grid msg */
|
|
#define IOT_CLI_RATE_TEST_TIMER 8 /* cli rate test timer */
|
|
#define IOT_CLI_SET_TIMER 9 /* cli set timer */
|
|
#define IOT_CLI_ALIVE_TIMER 10 /* cli alive timer */
|
|
#define IOT_CLI_ADA_MSG 11 /* cli ada msg */
|
|
#define IOT_CLI_TPUT_MSG 12 /* cli handle tput msg */
|
|
#define IOT_CLI_DUMP_TIMER 13 /* cli dump timer */
|
|
#define IOT_CLI_UL_BUF_TIMER 14 /* cli ul buf timer */
|
|
#define IOT_CLI_QUERY_HW_TIMER 15 /* cli query hw ver timer */
|
|
#define IOT_CLI_MINI_UART_RECV 16 /* cli mini uart recv */
|
|
#define IOT_CLI_RPT_TOPO_TIMER 17 /* cli rpt topo data timer */
|
|
#define IOT_CLI_RX_APP_DATA_MSG 18 /* cli received data from app */
|
|
#define IOT_CLI_BCAST_TX_DONE 19 /* cli upgrade bcast tx done */
|
|
|
|
#define IOT_CLI_QUEUE_TX 0
|
|
#define IOT_CLI_QUEUE_RX 1
|
|
#define IOT_CLI_QUEUE_HOST 2
|
|
#define IOT_CLI_QUEUE_TIMER 3
|
|
|
|
#define MAC_IS_EMPTY(mac) \
|
|
((!mac[0]) && (!mac[1]) && (!mac[2]) && \
|
|
(!mac[3]) && (!mac[4]) && (!mac[5]))
|
|
|
|
#pragma pack(pop) // restore the pack status
|
|
|
|
/* iot_cli_queue_data - post a msg to iot_cli task with these data
|
|
* @buffer: buffer containing data
|
|
* @len: length of the buffer
|
|
*/
|
|
void iot_cli_queue_data(void *buffer, uint32_t len);
|
|
|
|
void send_tx_msg_to_cli_task(iot_pkt_t* data);
|
|
|
|
/**
|
|
* @brief cli_add_msg_header() - fillwith cli packet.
|
|
* @param input_buffer: src cli data ptr.
|
|
* @param buffer_len: src cli data length.
|
|
* @param moduleid: cli hdr moduleid.
|
|
* @param msgid: cli hdr msgid.
|
|
* @param sn: cli hdr sn.
|
|
* @param output_buffer: desc cli data ptr.
|
|
* @param out_len: fillwithed cli data total length.
|
|
* @param src_mac: cli src mac.
|
|
*/
|
|
void cli_add_msg_header(void* input_buffer, uint32_t buffer_len,
|
|
uint32_t moduleid, uint32_t msgid, uint16_t sn,
|
|
uint8_t** output_buffer, uint32_t *out_len, uint8_t *src_mac);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|