170 lines
5.3 KiB
C
Executable File
170 lines
5.3 KiB
C
Executable File
/****************************************************************************
|
|
|
|
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_SG_EXT_API_H_
|
|
#define _IOT_SG_EXT_API_H_
|
|
|
|
#include "iot_uart_api.h"
|
|
#include "iot_utils_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define IOT_SG_EXT_PROTO_ID_645_97 1
|
|
#define IOT_SG_EXT_PROTO_ID_645_07 2
|
|
#define IOT_SG_EXT_PROTO_ID_69845 3
|
|
|
|
/** Invalid threshold flag. */
|
|
#define IOT_SG_EXT_INVALID_THRD (-1)
|
|
|
|
/* ext common command sub id */
|
|
#define IOT_SG_EXT_SID_DEFAULT (0x0)
|
|
/* sub_id of configuring a uart port. */
|
|
#define IOT_SG_EXT_SID_UART_CFG (0x1)
|
|
/* sub_id of configuring msdu enable. */
|
|
#define IOT_SG_EXT_SID_MSDU_FWD_ENABLE (0x2)
|
|
|
|
/* ext common message id */
|
|
#define IOT_SG_EXT_MID_UART_DATA_FROM_CUS (0x00)
|
|
#define IOT_SG_EXT_MID_UART_DATA_FROM_SG (0x01)
|
|
#define IOT_SG_EXT_MID_COMMAND (0x02)
|
|
#define IOT_SG_EXT_MID_TRANS_MSDU_FROM_SG (0x03)
|
|
#define IOT_SG_EXT_MID_TRANS_MSDU_FROM_CUS (0x04)
|
|
#define IOT_SG_EXT_MID_MSDU_SEND (0x05)
|
|
|
|
/* msdu send type */
|
|
/* unicast packet */
|
|
#define IOT_SG_EXT_CUS_TYPE_UNICAST (0x01)
|
|
/* proxy broadcast */
|
|
#define IOT_SG_EXT_CUS_TYPE_BCAST (0x03)
|
|
/* whole network broadcast */
|
|
#define IOT_SG_EXT_CUS_TYPE_BCAST_ALL (0x06)
|
|
|
|
/* priority definition */
|
|
#define IOT_SG_EXT_CUS_PRO_MAX (0x03)
|
|
|
|
/* local default retry count */
|
|
#define IOT_SG_EXT_CUS_LOCAL_RETRY_CNT (0)
|
|
/* whole network broadcast max retry count */
|
|
#define IOT_SG_EXT_CUS_BCAST_ALL_MAX_RETRY_CNT (3)
|
|
|
|
/* uart data channel, for local protocol */
|
|
#define IOT_SG_EXT_UART_DATA_CCTT (0x00)
|
|
#define IOT_SG_EXT_UART_DATA_CUS (0x03)
|
|
|
|
/* query command result */
|
|
#define IOT_SG_EXT_QRY_RESULT_SUCCESS (0)
|
|
#define IOT_SG_EXT_QRY_RESULT_FAIL (1)
|
|
|
|
/* uart data channel convert for cco*/
|
|
#define IOT_SG_EXT_UART_CHNN_SET(src, channel) \
|
|
do { \
|
|
(src) &= ~0x06; \
|
|
(src) |= (channel << 1); \
|
|
} while(0)
|
|
#define IOT_SG_EXT_UART_CHNN_GET(data) ((data & 0x06) >> 1)
|
|
|
|
/* uart data full frame convert */
|
|
#define IOT_SG_EXT_UART_FULL_FRAME_SET(src) (src |= 0x01)
|
|
#define IOT_SG_EXT_UART_FULL_FRAME_GET(src) (src &= 0x01)
|
|
|
|
/** Only cus-app -> sg-app need this. */
|
|
enum _iot_sg_ext_data_frame_status {
|
|
/** This packet of data is a part of a full frame. */
|
|
IOT_SG_EXT_DF_PART,
|
|
/** This packet of data is a full frame. */
|
|
IOT_SG_EXT_DF_FULL
|
|
};
|
|
|
|
#pragma pack(push) // save the pack status
|
|
#pragma pack(1) // 1 byte align
|
|
|
|
typedef struct _iot_sg_ext_header {
|
|
/** message id, enum iot_sg_message_id_e. */
|
|
uint8_t mid;
|
|
/**
|
|
* IOT_SG_EXT_MID_COMMAND:
|
|
* sub_id.
|
|
* IOT_SG_EXT_MID_UART_DATA_FROM_CUS:
|
|
* bit0 - ull_frame flag.
|
|
* bit1-bit2 - channel.
|
|
*/
|
|
uint8_t arg;
|
|
/** reserved bytes. */
|
|
uint8_t rsv[2];
|
|
/** data pointer */
|
|
uint8_t data[0];
|
|
} iot_sg_ext_header_t;
|
|
|
|
typedef struct _iot_sg_ext_uart {
|
|
/** baud rate */
|
|
uint32_t baudrate;
|
|
/**
|
|
* threshold for receive timeout.IOT_SG_EXT_INVALID_THRD means ignore this.
|
|
*/
|
|
uint32_t thd_rx_tm;
|
|
/**
|
|
* threshold for receive fifo full.IOT_SG_EXT_INVALID_THRD means
|
|
* ignore this.
|
|
*/
|
|
uint32_t thd_rx_ful;
|
|
/** parity. see IOT_UART_PARITY_XXX */
|
|
uint8_t parity;
|
|
/** length of data. see IOT_UART_DLEN_X_BITS */
|
|
uint8_t data;
|
|
/** stop bit. see IOT_UART_STOP_XX_BITS */
|
|
uint8_t stop;
|
|
/** stands for if 'fmt' valid. 1 : valid, 0 : invalid. */
|
|
uint8_t fmt_valid;
|
|
/** the format structure of the frame */
|
|
iot_frame_fmt fmt;
|
|
} iot_sg_ext_uart_t;
|
|
|
|
typedef struct _iot_sg_ext_cus_msdu_fwd_enable {
|
|
/* enable msdu handle */
|
|
uint8_t enable;
|
|
} iot_sg_ext_cus_msdu_fwd_enable_t;
|
|
|
|
typedef struct _iot_sg_ext_cus_msdu_send_data {
|
|
/* dest mac addr, big - endian */
|
|
uint8_t dest_mac[IOT_MAC_ADDR_LEN];
|
|
/* msg send type, see IOT_SG_EXT_CUS_TYPE_XXX */
|
|
uint8_t msg_type;
|
|
/* msg priority, see IOT_SG_EXT_CUS_PRO_XXX */
|
|
uint8_t pro;
|
|
/* msg retry count, see IOT_SG_EXT_CUS_XXX */
|
|
uint8_t retry_cnt;
|
|
/* msdu data length */
|
|
uint16_t len;
|
|
/* msdu data */
|
|
uint8_t data[0];
|
|
} iot_sg_ext_cus_msdu_send_data_t;
|
|
|
|
typedef struct _iot_sg_ext_rsp_result {
|
|
/* query command result, see IOT_SG_EXT_QRY_RESULT_XXX */
|
|
uint8_t result;
|
|
} iot_sg_ext_rsp_result_t;
|
|
|
|
#pragma pack(pop) // restore the pack status
|
|
|
|
/** 4 byte reserved for header. */
|
|
#define IOT_SG_EXT_HEADROOM (sizeof(iot_sg_ext_header_t) + 10)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _IOT_SG_EXT_API_H_ */
|