/**************************************************************************** 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_HOST_INTERFACE_H #define IOT_CLI_HOST_INTERFACE_H /* os shim includes */ #include "os_types.h" #include "os_task.h" #include "os_event.h" #include "os_timer_api.h" #include "iot_task.h" #include "iot_utils.h" #include "iot_queue.h" #include "iot_ipc_api.h" #include "iot_uart_h.h" #include "iot_cli_module_config.h" #include "iot_cli.h" #include "iot_cli_msg.h" #include "iot_cli_common.h" #ifdef __cplusplus extern "C" { #endif #pragma pack(push) /* save the pack status */ #pragma pack(1) /* 1 byte align */ typedef void(*HOST_SEND_PACKAGE_EVENT_CB) (uint32_t moduleid, uint32_t msgid, uint8_t *buffer, uint32_t length, uint16_t sn, uint8_t *src_mac); /* module id */ #define MODULEID_HOSTINTERFACE (2) /* request id */ #define CLI_HOST_USE_API_BY_PLCM (1) typedef struct _iot_cli_host_info_t { /* link id used for sending msdu */ uint8_t link_id; /* handle of task for this app */ os_task_h host_task_h; /* send ul package callback*/ HOST_SEND_PACKAGE_EVENT_CB pfunc_send_ul_package; /* mac address of local device */ uint8_t mac_addr[IOT_MAC_ADDR_LEN]; /* plc_mgr_state */ uint8_t host_app_state; /* plc mgr live flag */ uint8_t host_app_live; /* live query timer */ timer_id_t live_timer; /* log timer */ timer_id_t log_timer; /* is ready flag */ /* bit7: ctrl proto connect flag */ uint8_t is_ready; /* hplc link load, value: 0 - 100 */ uint8_t link_load; } iot_cli_host_info_t; typedef void(*CLI_MSG_HANDLER)(uint8_t *buffer, uint32_t len, uint8_t *src_mac); typedef struct _CLI_MSG_ENTRY { cli_moduleid_t module_id; uint32_t msg_id; CLI_MSG_HANDLER pFun; }*PCLI_MSG_ENTRY, CLI_MSG_ENTRY; uint8_t iot_cli_host_interface_init(HOST_SEND_PACKAGE_EVENT_CB cb, iot_task_h task_h); void iot_cli_host_interface_deinit(); uint8_t iot_cli_host_interface_handle_msg( cli_moduleid_t moduleid, uint32_t msgid, iot_cli_msg_t *msg); uint8_t iot_cli_host_interface_handle_task_msg( iot_cli_msg_t *cli_msg, uint16_t id); uint8_t iot_cli_host_interface_cancel_task_msg( iot_cli_msg_t *cli_msg, uint16_t id); void iot_cli_host_interface_init_uart( commnucator_t * com, uint8_t interface_type); uint8_t cli_execute_msg_entry( cli_moduleid_t moduleid, uint32_t msgid, CLI_MSG_ENTRY *msg_entry, iot_cli_msg_t *msg); // for cli module interface void iot_cli_module_init_uart( commnucator_t * com, uint8_t interface_type); uint8_t iot_cli_proto_module_init(); void iot_cli_proto_module_deinit(); uint8_t iot_cli_module_handle_msg( cli_moduleid_t moduleid, uint32_t msgid, iot_cli_msg_t *msg); uint8_t iot_cli_module_handle_task_msg( iot_cli_msg_t *cli_msg, uint16_t id); uint8_t iot_cli_module_cancel_task_msg( iot_cli_msg_t *cli_msg, uint16_t id); /** * @brief iot_cli_host_is_ctrl_connected - check is ctrl connected * @retval: 1 - is ctrl connected, 0 - is not. */ uint8_t iot_cli_host_is_ctrl_connected(); /** * @brief iot_cli_host_set_ctrl_connected - set ctrl connect * @param enable: 1 - set ctrl connected flag, 0 - clean ctrl connected * flag. */ void iot_cli_host_set_ctrl_connected(uint8_t setting); /** * @brief iot_cli_host_is_join_connected - check is join connected * @retval: 1 - is join connected, 0 - is not. */ uint8_t iot_cli_host_is_join_connected(); /** * @brief iot_cli_host_set_join_connected - set join connect * @param enable: 1 - set join connected flag, 0 - clean join connected * flag. */ void iot_cli_host_set_join_connected(uint8_t setting); #pragma pack(pop) /* restore the pack status */ #ifdef __cplusplus } #endif #endif /* IOT_CLI_HOST_INTERFACE_H */