90 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			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
 |