Files
kunlun/plc/inc/plc_conn_less.h
2024-09-28 14:24:04 +08:00

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