141 lines
4.5 KiB
C
141 lines
4.5 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 __PLC_CONN_LESS_H
|
|
#define __PLC_CONN_LESS_H
|
|
|
|
/* os shim includes */
|
|
#include "os_types.h"
|
|
|
|
#include "iot_config.h"
|
|
#include "iot_utils_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define PLC_CONN_LESS_APP_PORT 0x11
|
|
#define PLC_CONN_LESS_APP_ID_CONFIG_ACK 0xFF02
|
|
|
|
/* define the priority of configuring ack messages */
|
|
#define PLC_CONN_LESS_CONFIG_ACK_PRIO 3
|
|
/* define the retry cnt of configuring ack messages */
|
|
#define PLC_CONN_LESS_CONFIG_ACK_RETRY_CNT 5
|
|
|
|
/* defining function code */
|
|
#define PLC_CONN_LESS_FN_CTRL 10
|
|
#define PLC_CONN_LESS_FN_DATA_TRANS 11
|
|
|
|
|
|
/* defining the minimum duration of configuring connectionless mode,
|
|
* uint is 1s.
|
|
*/
|
|
#define PLC_CONN_LESS_MODE_DUR_MIN 30
|
|
|
|
/* defining the duration of clearing msdu cache in connectionless mode,
|
|
* uint is 1ms.
|
|
*/
|
|
#define PLC_CONN_LESS_MODE_CLEAR_MSDU_DUR (5 * 60 * 1000)
|
|
|
|
/* define target device type ID */
|
|
#define PLC_CONN_LESS_TARGET_ID_CCO 0
|
|
#define PLC_CONN_LESS_TARGET_ID_STA 1
|
|
|
|
/* defining target device type identifier mask */
|
|
#define PLC_CONN_LESS_TARGET_ID_MSK_CCO (1 << PLC_CONN_LESS_TARGET_ID_CCO)
|
|
#define PLC_CONN_LESS_TARGET_ID_MSK_STA (1 << PLC_CONN_LESS_TARGET_ID_STA)
|
|
|
|
/* pack for the structures in the whole file */
|
|
#pragma pack(push) /* save the pack status */
|
|
#pragma pack(1) /* 1 byte align */
|
|
|
|
/* connectionless data packet header */
|
|
typedef struct _plc_conn_less_hdr {
|
|
/* source address */
|
|
uint8_t src_mac[IOT_MAC_ADDR_LEN];
|
|
/* destination address */
|
|
uint8_t dst_mac[IOT_MAC_ADDR_LEN];
|
|
/* function code */
|
|
uint16_t fn :4,
|
|
/* payload length */
|
|
len :12;
|
|
/* payload label */
|
|
uint8_t data[0];
|
|
} plc_conn_less_hdr_t;
|
|
|
|
typedef struct _plc_conn_less_ext_config {
|
|
/* flag to mark if rf_option and rf_channel config is available */
|
|
uint8_t rf_valid :1,
|
|
/* flag to mark if rf_tx_power config is available */
|
|
rf_power_valid :1,
|
|
/* flag to mark if hplc_tx_power config is available */
|
|
hplc_power_valid :1,
|
|
/* rf tx only for app */
|
|
rf_tx_only :1,
|
|
/* reserved for future */
|
|
rsvd1 :4;
|
|
/* rf option, see IOT_PLC_RF_OPTION_XX */
|
|
uint8_t rf_option;
|
|
/* rf channel, see IOT_PLC_OPTION1_CHANNEL_ID_XX */
|
|
uint8_t rf_channel;
|
|
/* tx power of rf, unit is 1 dbm */
|
|
int8_t rf_tx_power;
|
|
/* tx power of hplc, unit is 1 dbuv */
|
|
uint8_t hplc_tx_power;
|
|
/* reserved for future */
|
|
uint8_t rsvd2[5];
|
|
} plc_conn_less_ext_config_t;
|
|
|
|
typedef struct _plc_conn_less_mode_config {
|
|
/* band ID to be configured, see BEACON_FREQ_BAND_ID_XXX */
|
|
uint8_t band_id;
|
|
/* configuring effective duration, uint is 1s */
|
|
uint8_t dur;
|
|
/* the target device ID group that needs to respond to this command.
|
|
* see PLC_CONN_LESS_TARGET_ID_MSK_XXX.
|
|
*/
|
|
uint32_t target_id_mask :2,
|
|
/* reserved for future */
|
|
reserved :29,
|
|
/* flag to mark if ext config is enabled.
|
|
* 1 means enable, 0 means disable
|
|
*/
|
|
ext_cfg_en :1;
|
|
/* ext configuration */
|
|
plc_conn_less_ext_config_t ext_cfg[0];
|
|
} plc_conn_less_mode_config_t;
|
|
|
|
/* connectionless application protocol frame header */
|
|
typedef struct _plc_conn_less_app_hdr {
|
|
uint8_t port;
|
|
uint16_t id;
|
|
uint8_t data[0];
|
|
} plc_conn_less_app_hdr_t;
|
|
|
|
/* configuration acknowledgement message */
|
|
typedef struct _plc_conn_less_app_config_ack {
|
|
/* current working band ID */
|
|
uint8_t band_id;
|
|
} plc_conn_less_app_config_ack_t;
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|