182 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
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_H
 | 
						|
#define PLC_MME_H
 | 
						|
 | 
						|
/* os shim includes */
 | 
						|
#include "os_types.h"
 | 
						|
 | 
						|
/* plc includes */
 | 
						|
#include "plc_fr.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
 | 
						|
 | 
						|
#define CANDIDATE_PROXY_COUNT   5
 | 
						|
 | 
						|
/* proxy structure */
 | 
						|
typedef struct _pco_link_info_t {
 | 
						|
    /* tei of proxy */
 | 
						|
    uint16_t    tei         :12,
 | 
						|
    /* link type between station and proxy, see PLC_LINK_TYPE_XXX */
 | 
						|
                link        :1,
 | 
						|
    /* reserved for future */
 | 
						|
                rsvd        :3;
 | 
						|
} pco_link_info_t;
 | 
						|
 | 
						|
#if SUPPORT_SMART_GRID
 | 
						|
/* mme type definition */
 | 
						|
#define MME_ASSOC_REQ                   0x0000  // associate request
 | 
						|
#define MME_ASSOC_CNF                   0x0001  // associate response
 | 
						|
#define MME_ASSOC_GATHER_IND            0x0002  // associate gather indication
 | 
						|
#define MME_CHANGE_PROXY_REQ            0x0003  // change proxy request
 | 
						|
#define MME_CHANGE_PROXY_CNF            0x0004  // change proxy confirm
 | 
						|
#define MME_CHANGE_PROXY_BITMAP_CNF     0x0005  // change proxy bitmap confirm
 | 
						|
#define MME_LEAVE_IND                   0x0006  // leave indication
 | 
						|
#define MME_HEART_BEAT_CHECK            0x0007  // heart beat check
 | 
						|
#define MME_DISCOVER_NODE_LIST          0x0008  // discover node list
 | 
						|
#define MME_SUCCESS_RATE_REPORT         0x0009  // success rate report
 | 
						|
#define MME_NETWORK_CONFLICT_REPORT     0x000A  // network conflict report
 | 
						|
#define MME_ZERO_CROSS_NTB_COLLECT_IND  0x000B  // zero cross NTB collect ind
 | 
						|
#define MME_ZERO_CROSS_NTB_IND          0x000C  // zero cross NTB indication
 | 
						|
 | 
						|
/* local bridge destination address table request */
 | 
						|
#define MME_LBDAT_REQ                   0x000D
 | 
						|
/* local bridge destination address table confirm */
 | 
						|
#define MME_LBDAT_CNF                   0x000E
 | 
						|
/* high-precision zero cross NTB area notify report */
 | 
						|
#define MME_AREA_NOTIFY_NTB_REPORT      0x000F
 | 
						|
#define MME_SET_KEY_REQ                 0x000F  // set key request
 | 
						|
#define MME_SET_KEY_CNF                 0x0010  // set key confirm
 | 
						|
#define MME_GET_KEY_REQ                 0x0011  // get key request
 | 
						|
#define MME_GET_KEY_CNF                 0x0012  // get key confirm
 | 
						|
#define MME_AUTH_REQ                    0x0013  // authorize request
 | 
						|
#define MME_AUTH_CNF                    0x0014  // authorize confirm
 | 
						|
#define MME_ENCRYPTED_PAYLOAD_IND       0x0015  // encrypted payload indication
 | 
						|
#define MME_SET_AMP_MAP_REQ             0x0016  // set amplitude map request
 | 
						|
#define MME_SET_AMP_MAP_CNF             0x0017  // set amplitude map response
 | 
						|
 | 
						|
#define MME_DIAGNOSE                    0x004F  // network diagnose, vendor spec
 | 
						|
#define MME_ROUTE_REQ                   0x0050  // route request
 | 
						|
#define MME_ROUTE_REPLY                 0x0051  // route reply
 | 
						|
#define MME_ROUTE_ERROR                 0x0052  // route error
 | 
						|
#define MME_ROUTE_ACK                   0x0053  // route ack
 | 
						|
#define MME_LINK_CFM_REQ                0x0054  // link confirm request
 | 
						|
#define MME_LINK_CFM_RSP                0x0055  // link confirm response
 | 
						|
 | 
						|
#define MME_CEK_REQ                     0x0060  // cek request
 | 
						|
#define MME_CEK_CNF                     0x0061  // cek response
 | 
						|
#define MME_CEK_UPDATE                  0x0062  // cek update
 | 
						|
 | 
						|
#define MME_RF_CONFLICT_REPORT          0x0080  // rf channel conflict report
 | 
						|
 | 
						|
/* define priority of each MME frames */
 | 
						|
#define MME_ASSOC_REQ_PRIO                      3
 | 
						|
#define MME_ASSOC_CNF_PRIO                      3
 | 
						|
#define MME_ASSOC_GATHER_IND_PRIO               3
 | 
						|
#define MME_CHANGE_PROXY_REQ_PRIO               3
 | 
						|
#define MME_CHANGE_PROXY_CNF_PRIO               3
 | 
						|
#define MME_CHANGE_PROXY_BITMAP_CNF_PRIO        3
 | 
						|
#define MME_LEAVE_IND_PRIO                      3
 | 
						|
#define MME_CEK_REQ_PRIO                        3
 | 
						|
#define MME_CEK_CNF_PRIO                        3
 | 
						|
 | 
						|
#define MME_CEK_UPDATE_PRIO                     0
 | 
						|
#define MME_HEART_BEAT_CHECK_PRIO               0
 | 
						|
#define MME_DISCOVER_NODE_LIST_PRIO             0
 | 
						|
#define MME_SUCCESS_RATE_REPORT_PRIO            0
 | 
						|
#define MME_NETWORK_CONFLICT_REPORT_PRIO        0
 | 
						|
#define MME_ZERO_CROSS_NTB_COLLECT_IND_PRIO     0
 | 
						|
#define MME_ZERO_CROSS_NTB_IND_PRIO             0
 | 
						|
#define MME_ZERO_CROSS_AREA_NOTIFY_PRIO         0
 | 
						|
#define MME_DIAGNOSE_PRIO                       0
 | 
						|
 | 
						|
#define MME_ROUTE_REQ_PRIO                      0
 | 
						|
#define MME_ROUTE_REPLY_PRIO                    0
 | 
						|
#define MME_ROUTE_ERROR_PRIO                    0
 | 
						|
#define MME_ROUTE_ACK_PRIO                      0
 | 
						|
#define MME_LINK_CFM_REQ_PRIO                   0
 | 
						|
#define MME_LINK_CFM_RSP_PRIO                   0
 | 
						|
 | 
						|
typedef struct _mme_header {
 | 
						|
    uint16_t    mme_type;
 | 
						|
    uint16_t    reserved;
 | 
						|
} mme_header_t;
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#if SUPPORT_SOUTHERN_POWER_GRID
 | 
						|
 | 
						|
/* mme type definition */
 | 
						|
#define SPG_MME_ASSOC_REQ                   0x30  // associate request
 | 
						|
#define SPG_MME_ASSOC_CNF                   0x31  // associate response
 | 
						|
#define SPG_MME_ASSOC_IND                   0x34  // associate indication
 | 
						|
#define SPG_MME_ASSOC_GATHER_IND            0x3A  // associate gather indication
 | 
						|
#define SPG_MME_CHANGE_PROXY_REQ            0x32  // change proxy request
 | 
						|
#define SPG_MME_CHANGE_PROXY_CNF            0x37  // change proxy confirm
 | 
						|
#define SPG_MME_CHANGE_PROXY_BITMAP_CNF     0x3B  // change proxy bitmap confirm
 | 
						|
#define SPG_MME_LEAVE_IND                   0x49  // leave indication
 | 
						|
#define SPG_MME_HEART_BEAT_CHECK            0x51  // heart beat check
 | 
						|
#define SPG_MME_DISCOVER_NODE_LIST          0x55  // discover node list
 | 
						|
#define SPG_MME_DELAY_LEAVE_IND             0x5D  // delay leave indication
 | 
						|
#define SPG_MME_SUCCESS_RATE_REPORT         0x5E  // success rate report
 | 
						|
#define SPG_MME_NETWORK_CONFLICT_REPORT     0x5F  // network conflict report
 | 
						|
#define SPG_MME_ZERO_CROSS_NTB_COLLECT_IND  0x62  // zero cross NTB collect ind
 | 
						|
#define SPG_MME_ZERO_CROSS_NTB_RPT          0x63  // zero cross NTB indication
 | 
						|
#define SPG_MME_DIAGNOSE                    0x64  // network diagnose
 | 
						|
#define SPG_MME_RF_CONFLICT_REPORT          0x70  // rf channel conflict report
 | 
						|
#define SPG_MME_DIAGNOSE_V2                 0xE0  // network diagnose version 2
 | 
						|
 | 
						|
/* define priority of each MME frames */
 | 
						|
#define SPG_MME_ASSOC_REQ_PRIO                      3
 | 
						|
#define SPG_MME_ASSOC_CNF_PRIO                      3
 | 
						|
#define SPG_MME_ASSOC_IND_PRIO                      3
 | 
						|
#define SPG_MME_ASSOC_GATHER_IND_PRIO               3
 | 
						|
#define SPG_MME_CHANGE_PROXY_REQ_PRIO               3
 | 
						|
#define SPG_MME_CHANGE_PROXY_CNF_PRIO               3
 | 
						|
#define SPG_MME_CHANGE_PROXY_BITMAP_CNF_PRIO        3
 | 
						|
#define SPG_MME_LEAVE_IND_PRIO                      3
 | 
						|
#define SPG_MME_HEART_BEAT_CHECK_PRIO               0
 | 
						|
#define SPG_MME_DISCOVER_NODE_LIST_PRIO             0
 | 
						|
#define SPG_MME_SUCCESS_RATE_REPORT_PRIO            0
 | 
						|
#define SPG_MME_ZERO_CROSS_NTB_COLLECT_IND_PRIO     0
 | 
						|
#define SPG_MME_ZERO_CROSS_NTB_IND_PRIO             0
 | 
						|
#define SPG_MME_SUCCESS_RATE_REPORT_PRIO            0
 | 
						|
#define SPG_MME_NETWORK_CONFLICT_REPORT_PRIO        0
 | 
						|
#define SPG_MME_DIAGNOSE_PRIO                       0
 | 
						|
 | 
						|
typedef struct _spg_mme_header {
 | 
						|
    uint8_t   mme_version;
 | 
						|
    uint16_t  mme_type;
 | 
						|
    uint8_t   reserved[3];
 | 
						|
} spg_mme_header_t;
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#pragma pack(pop)	// restore the pack status
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif  /* PLC_MME_H */
 |