241 lines
7.9 KiB
C
241 lines
7.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.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef IOT_SWC_MSG_API_H
|
|
#define IOT_SWC_MSG_API_H
|
|
|
|
#include "os_types_api.h"
|
|
#include "iot_utils_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* pack for the structures in the whole file */
|
|
#pragma pack(push) // save the pack status
|
|
#pragma pack(1) // 1 byte align
|
|
|
|
/** app request succeed */
|
|
#define IOT_SWC_SUCCESS (0x0)
|
|
/** app request failed */
|
|
#define IOT_SWC_FAILED (0x1)
|
|
|
|
/** whitelist and blacklist operation */
|
|
#define IOT_SWC_WL_DISABLE (0x0)
|
|
#define IOT_SWC_WL_ADD (0x1)
|
|
#define IOT_SWC_WL_DEL (0x2)
|
|
#define IOT_SWC_WL_ENABLE (0x3)
|
|
#define IOT_SWC_BL_DISABLE (0x4)
|
|
#define IOT_SWC_BL_ADD (0x5)
|
|
#define IOT_SWC_BL_DEL (0x6)
|
|
#define IOT_SWC_BL_ENABLE (0x7)
|
|
|
|
/** common SWC message id definitions shared between CCO and STA device */
|
|
#define IOT_SWC_MSG_CFG_SET_REQ 0x80
|
|
#define IOT_SWC_MSG_CFG_SET_CONF 0x81
|
|
#define IOT_SWC_MSG_MSDU_SEND 0x82
|
|
#define IOT_SWC_MSG_MSDU_RECV 0x83
|
|
#define IOT_SWC_MSG_NW_WL_QUERY 0x84
|
|
#define IOT_SWC_MSG_NW_WL_RPT 0x85
|
|
#define IOT_SWC_MSG_NW_WL_SET 0x86
|
|
#define IOT_SWC_MSG_NW_WL_SET_RPT 0x87
|
|
#define IOT_SWC_MSG_NW_BL_QUERY 0x88
|
|
#define IOT_SWC_MSG_NW_BL_RPT 0x89
|
|
#define IOT_SWC_MSG_NW_BL_SET 0x8A
|
|
#define IOT_SWC_MSG_NW_BL_SET_RPT 0x8B
|
|
#define IOT_SWC_MSG_KEEP_ALIVE 0x8C
|
|
|
|
/** packet send type */
|
|
#define IOT_SWC_MSG_TYPE_INVALID 0x00
|
|
/** unicast packet */
|
|
#define IOT_SWC_MSG_TYPE_UNICAST 0x01
|
|
/** broadcast packet */
|
|
#define IOT_SWC_MSG_TYPE_BCAST 0x02
|
|
|
|
/** SWC device type */
|
|
#define IOT_SWC_DEV_TYPE_METER_CONTROLLER 1
|
|
#define IOT_SWC_DEV_TYPE_CONCENTRATOR 2
|
|
#define IOT_SWC_DEV_TYPE_POWER_METER 3
|
|
#define IOT_SWC_DEV_TYPE_REPEATER 4
|
|
#define IOT_SWC_DEV_TYPE_COLLECTOR_2 5
|
|
#define IOT_SWC_DEV_TYPE_COLLECTOR_1 6
|
|
#define IOT_SWC_DEV_TYPE_INVAL 0xFF
|
|
|
|
/* default request id */
|
|
#define IOT_SWC_API_REQ_ID_DEFAULT 0
|
|
|
|
/** swc message header */
|
|
typedef struct _iot_swc_msg_header {
|
|
/** msg id */
|
|
uint8_t msg_id;
|
|
/** request id */
|
|
uint8_t req_id;
|
|
/** reserved for future */
|
|
uint16_t rsvd;
|
|
} iot_swc_msg_header_t;
|
|
|
|
/** IOT_SWC_MSG_CFG_SET_REQ format */
|
|
typedef struct _iot_swc_cfg_set_req {
|
|
/** type of local device. see IOT_SWC_DEV_TYPE_XXX */
|
|
uint8_t dev_type;
|
|
/** if reset lower layer to apply the configuration */
|
|
uint8_t reset;
|
|
/** software version */
|
|
uint16_t sw_ver;
|
|
/** mac address of local device */
|
|
uint8_t addr[IOT_MAC_ADDR_LEN];
|
|
} iot_swc_cfg_set_req_t;
|
|
|
|
/** IOT_SWC_MSG_CFG_SET_CONF format */
|
|
typedef struct _iot_swc_cfg_set_conf {
|
|
/** result of the request */
|
|
uint8_t result;
|
|
/** error number */
|
|
uint8_t err_no;
|
|
} iot_swc_cfg_set_conf_t;
|
|
|
|
/** IOT_SWC_MSG_MSDU_SEND format */
|
|
typedef struct _iot_swc_msdu_send {
|
|
/** type of the message. see IOT_SWC_MSG_TYPE_XXX */
|
|
uint8_t msg_type;
|
|
/** link id */
|
|
uint8_t lid;
|
|
/** payload length */
|
|
uint16_t len;
|
|
/** final destion mac address */
|
|
uint8_t dst[IOT_MAC_ADDR_LEN];
|
|
/** original source mac address */
|
|
uint8_t src[IOT_MAC_ADDR_LEN];
|
|
/** msdu data payload */
|
|
uint8_t data[0];
|
|
} iot_swc_msdu_send_t;
|
|
|
|
/** IOT_SWC_MSG_MSDU_RECV format */
|
|
typedef struct _iot_swc_msdu_recv {
|
|
/** payload length */
|
|
uint16_t len;
|
|
/** final destion mac address */
|
|
uint8_t dst[IOT_MAC_ADDR_LEN];
|
|
/** original source mac address */
|
|
uint8_t src[IOT_MAC_ADDR_LEN];
|
|
/** msdu data payload */
|
|
uint8_t data[0];
|
|
} iot_swc_msdu_recv_t;
|
|
|
|
/** IOT_SWC_MSG_NW_WL_QUERY format */
|
|
typedef struct _iot_swc_wl_query {
|
|
/** start entry index in whitelist */
|
|
uint16_t start;
|
|
/** maximum number of whitelist entry to return for this request */
|
|
uint16_t count;
|
|
} iot_swc_wl_query_t;
|
|
|
|
/** IOT_SWC_MSG_NW_BL_QUERY format */
|
|
typedef struct _iot_swc_bl_query {
|
|
/** start entry index in blacklist */
|
|
uint16_t start;
|
|
/** maximum number of blacklist entry to return for this request */
|
|
uint16_t count;
|
|
} iot_swc_bl_query_t;
|
|
|
|
/** IOT_SWC_MSG_NW_WL_RPT format */
|
|
typedef struct _iot_swc_wl_rpt {
|
|
/** total count of whitelist entries */
|
|
uint16_t total_count;
|
|
/** count of entries contained in this reply packet */
|
|
uint16_t count;
|
|
/** report done */
|
|
uint16_t done :1,
|
|
/** reserved for future */
|
|
rsvd :15;
|
|
/** whitelist entries */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} iot_swc_wl_rpt_t;
|
|
|
|
/** IOT_SWC_MSG_NW_BL_RPT format */
|
|
typedef struct _iot_swc_bl_rpt {
|
|
/** total count of blacklist entries */
|
|
uint16_t total_count;
|
|
/** count of entries contained in this reply packet */
|
|
uint16_t count;
|
|
/** report done */
|
|
uint16_t done :1,
|
|
/** reserved for future */
|
|
rsvd :15;
|
|
/** blacklist entries */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} iot_swc_bl_rpt_t;
|
|
|
|
/** IOT_SWC_MSG_NW_WL_SET format */
|
|
typedef struct _iot_swc_wl_set_req {
|
|
/** action to perform: DISABLE / ADD / DELETE whitelist entries. see
|
|
* IOT_SWC_WL_XXX.
|
|
*/
|
|
uint8_t action;
|
|
/** count of whitelist entries to operate on */
|
|
uint16_t count;
|
|
/** whitelist entries */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} iot_swc_wl_set_req_t;
|
|
|
|
/** IOT_SWC_MSG_NW_BL_SET format */
|
|
typedef struct _iot_swc_bl_set_req {
|
|
/** action to perform: DISABLE / ADD / DELETE blacklist entries. see
|
|
* IOT_SWC_BL.
|
|
*/
|
|
uint8_t action;
|
|
/** count of blacklist entries to operate on */
|
|
uint16_t count;
|
|
/** blacklist entries */
|
|
uint8_t mac_addr[0][IOT_MAC_ADDR_LEN];
|
|
} iot_swc_bl_set_req_t;
|
|
|
|
/** IOT_SWC_MSG_NW_WL_SET_RPT format */
|
|
typedef struct _iot_swc_wl_set_rpt {
|
|
/** result of the whitelist set request */
|
|
uint8_t result;
|
|
/** error number */
|
|
uint8_t err_no;
|
|
} iot_swc_wl_set_rpt_t;
|
|
|
|
/** IOT_SWC_MSG_NW_BL_SET_RPT format */
|
|
typedef struct _iot_swc_bl_set_rpt {
|
|
/** result of the blacklist set request */
|
|
uint8_t result;
|
|
/** error number */
|
|
uint8_t err_no;
|
|
} iot_swc_bl_set_rpt_t;
|
|
|
|
/** IOT_SWC_MSG_KEEP_ALIVE format */
|
|
typedef struct _iot_swc_keep_alive {
|
|
/** flag to mark if SWC MAC is waiting for configuration from APP to
|
|
* start network formation.
|
|
*/
|
|
uint8_t wait_for_cfg :1,
|
|
/** reserved for future */
|
|
rsvd :7;
|
|
} iot_swc_keep_alive_t;
|
|
|
|
/* callback type definition. */
|
|
typedef void(*iot_swc_lib_cb_t)(iot_pkt_t *pkt);
|
|
|
|
#pragma pack(pop) /* restore the pack status */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* IOT_SWC_MSG_API_H */ |