/**************************************************************************** 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