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

90 lines
3.2 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_MME_ROUTE_H
#define PLC_MME_ROUTE_H
/* os shim includes */
#include "os_types.h"
#include "plc_mme.h"
#include "plc_utils.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
/* no data in the path info array */
#define MME_RT_NO_DATA 0
/* path list data exist */
#define MME_RT_PATH_LIST 1
typedef struct _path_info_t {
tei_t sta;
uint8_t tf_sr; // traffic sr between STA and previous STA
int8_t ch_quality; // channel quality in signal noise ratio
} path_info_t;
typedef struct _mme_route_req {
uint8_t version; // version of route fixing algorithm
uint32_t rt_req_sn; // route request sequence number
uint8_t reserved : 3; // reserved according to spec
uint8_t path_opt_flag : 1; // path optimize flag
uint8_t data_type : 4; // if path_info containted in this packet
uint8_t data_len; // length of path_info
path_info_t path_info[0]; // path info
} mme_route_req_t;
typedef struct _mme_route_reply {
uint8_t version; // version of route fixing algorithm
uint32_t rt_req_sn; // route request sequence number
uint8_t reserved : 4; // reserved according to spec
uint8_t data_type : 4; // if path_info containted in this packet
uint8_t data_len; // length of path_info
path_info_t path_info[0]; // path info
} mme_route_reply_t;
typedef struct _mme_route_err {
uint8_t version; // version of route fixing algorithm
uint32_t rt_req_sn; // route request sequence number
uint8_t reserved; // reserved according to spec
uint8_t err_sta_cnt; // unreachable STA count
tei_t sta[0]; // teis of unreachable STAs
} mme_route_err_t;
typedef struct _mme_route_ack {
uint8_t version; // version of route fixing algorithm
uint8_t reserved[3];
uint32_t rt_req_sn; // route request sequence number
} mme_route_ack_t;
#pragma pack(pop) // restore the pack status
#ifdef __cplusplus
}
#endif
#endif // PLC_MME_ROUTE_H