summaryrefslogtreecommitdiff
path: root/cesar/cp2/mme.h
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/cp2/mme.h')
-rw-r--r--cesar/cp2/mme.h229
1 files changed, 229 insertions, 0 deletions
diff --git a/cesar/cp2/mme.h b/cesar/cp2/mme.h
new file mode 100644
index 0000000000..47f4573f40
--- /dev/null
+++ b/cesar/cp2/mme.h
@@ -0,0 +1,229 @@
+#ifndef MME_H_
+#define MME_H_
+/* Cesar project {{{
+ *
+ * Copyright (C) 2008 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file Cesare/cp/mme.h
+ * \brief definition of the mme types
+ * \ingroup cp/
+ *
+ */
+
+
+
+// MMTYPE base-values for DRV-MME messages
+#define DRV_STA_SET_MAC_ADDR 0xA000
+#define DRV_STA_SET_CCO_PREF 0xA004
+#define DRV_STA_SET_WAS_CCO 0xA008
+#define DRV_STA_SET_NPW 0xA00C
+#define DRV_STA_SET_DPW 0xA010
+#define DRV_STA_SET_SL 0xA014
+#define DRV_STA_SET_M_STA_HFID 0xA018
+#define DRV_STA_SET_U_STA_HFID 0xA01C
+#define DRV_STA_SET_AVLN_HFID 0xA020
+#define DRV_STA_SET_TONEMASK 0xA024
+#define DRV_STA_START 0xA028
+#define DRV_STA_STOP 0xA02C
+
+// MMTYPE sub-values for MMEs (REQ, CNF, IND or RSP)
+#define REQ 0x00
+#define CNF 0x01
+#define IND 0x02
+#define RSP 0x03
+/*
+ * mm type constants
+ * take care of the following :
+ * according to Intellon technical reference manual of Homeplug AV firmware p9,
+ * the two LSB value of messages should be :
+ * 0b00 for REQ
+ * 0b01 for CNF
+ * 0b10 for IND
+ * 0b11 for RSP
+ * this is very unclear in the Homeplug AV specification v1.0.10
+ */
+typedef enum cp_mmtype_t
+{
+ CC_CCO_APPOINT_REQ = 0x0000,
+ CC_CCO_APPOINT_CNF = 0x0001,
+ CC_BACKUP_APPOINT_REQ = 0x0004,
+ CC_BACKUP_APPOINT_CNF = 0x0005,
+ CC_LINK_INFO_REQ = 0x0008,
+ CC_LINK_INFO_CNF = 0x0009,
+ CC_LINK_INFO_IND = 0x000A,
+ CC_LINK_INFO_RSP = 0x000B,
+ CC_HANDOVER_REQ = 0x000C,
+ CC_HANDOVER_CNF = 0x000D,
+ CC_HANDOVER_INFO_IND = 0x0012,
+ CC_HANDOVER_INFO_RSP = 0x0013,
+ CC_DISCOVER_LIST_REQ = 0x0014,
+ CC_DISCOVER_LIST_CNF = 0x0015,
+ CC_DISCOVER_LIST_IND = 0x0016,
+ CC_LINK_NEW_REQ = 0x0018,
+ CC_LINK_NEW_CNF = 0x0019,
+ CC_LINK_MOD_REQ = 0x001C,
+ CC_LINK_MOD_CNF = 0x001D,
+ CC_LINK_SQZ_REQ = 0x0020,
+ CC_LINK_SQZ_CNF = 0x0021,
+ CC_LINK_REL_REQ = 0x0024,
+ CC_LINK_REL_IND = 0x0025,
+ CC_DETECT_REPORT_REQ = 0x0028,
+ CC_DETECT_REPORT_CNF = 0x0029,
+ CC_WHO_RU_REQ = 0x002C,
+ CC_WHO_RU_CNF = 0x002D,
+ CC_ASSOC_REQ = 0x0030,
+ CC_ASSOC_CNF = 0x0031,
+ CC_LEAVE_REQ = 0x0034,
+ CC_LEAVE_CNF = 0x0035,
+ CC_LEAVE_IND = 0x0036,
+ CC_LEAVE_RSP = 0x0037,
+ CC_SET_TEI_MAP_REQ = 0x0038,
+ CC_SET_TEI_MAP_IND = 0x0039,
+ CC_RELAY_REQ = 0x003C,
+ CC_RELAY_IND = 0x003D,
+ CC_BEACON_RELIABILITY_REQ = 0x0040,
+ CC_BEACON_RELIABILITY_CNF = 0x0041,
+ CC_ALLOC_MOVE_REQ = 0x0044,
+ CC_ALLOC_MOVE_CNF = 0x0045,
+ CC_ACCESS_NEW_REQ = 0x0048,
+ CC_ACCESS_NEW_CNF = 0x0049,
+ CC_ACCESS_NEW_IND = 0x004A,
+ CC_ACCESS_NEW_RSP = 0x004B,
+ CC_ACCESS_REL_REQ = 0x004C,
+ CC_ACCESS_REL_CNF = 0x004D,
+ CC_ACCESS_REL_IND = 0x004E,
+ CC_ACCESS_REL_RSP = 0x004F,
+ CC_DCPPC_IND = 0x0052,
+ CC_DCPPC_RSP = 0x0053,
+ CC_HP1_DET_REQ = 0x0054,
+ CC_HP1_DET_CNF = 0x0055,
+ CC_BLE_UPDATE_IND = 0x005A,
+
+ CP_PROXY_APPOINT_REQ = 0x2000,
+ CP_PROXY_APPOINT_CNF = 0x2001,
+ PH_PROXY_APPOINT_IND = 0x2006,
+ CP_PROXY_WAKE_REQ = 0x2008,
+
+ NN_INL_REQ = 0x4000,
+ NN_INL_CNF = 0x4001,
+ NN_NEW_REQ = 0x4004,
+ NN_NEW_CNF = 0x4005,
+ NN_NEW_IND = 0x4006,
+ NN_ADD_ALLOC_REQ = 0x4008,
+ NN_ADD_ALLOC_CNF = 0x4009,
+ NN_ADD_ALLOC_IND = 0x400A,
+ NN_REL_ALLOC_REQ = 0x400C,
+ NN_REL_ALLOC_CNF = 0x400D,
+ NN_REL_NET_IND = 0x4012,
+
+ CM_UNASSOCIATED_STA_IND = 0x6002,
+ CM_ENCRYPTED_PAYLOAD_IND = 0x6006,
+ CM_ENCRYPTED_PAYLOAD_RSP = 0x6007,
+ CM_SET_KEY_REQ = 0x6008,
+ CM_SET_KEY_CNF = 0x6009,
+ CM_GET_KEY_REQ = 0x600C,
+ CM_GET_KEY_CNF = 0x600D,
+ CM_SC_JOIN_REQ = 0x6010,
+ CM_SC_JOIN_CNF = 0x6011,
+ CM_CHAN_EST_IND = 0x6016,
+ CM_TM_UPDATE_IND = 0x601A,
+ CM_AMP_MAP_REQ = 0x601C,
+ CM_AMP_MAP_CNF = 0x601D,
+ CM_BRG_INFO_REQ = 0x6020,
+ CM_BRG_INFO_CNF = 0x6021,
+ CM_CONN_NEW_REQ = 0x6024,
+ CM_CONN_NEW_CNF = 0x6025,
+ CM_CONN_REL_IND = 0x602A,
+ CM_CONN_REL_RSP = 0x602B,
+ CM_CONN_MOD_REQ = 0x602C,
+ CM_CONN_MOD_CNF = 0x602D,
+ CM_CONN_INFO_REQ = 0x6030,
+ CM_CONN_INFO_CNF = 0x6031,
+ CM_STA_CAP_REQ = 0x6034,
+ CM_STA_CAP_CNF = 0x6035,
+ CM_NW_INFO_REQ = 0x6038,
+ CM_NW_INFO_CNF = 0x6039,
+ CM_GET_BEACON_REQ = 0x603C,
+ CM_GET_BEACON_CNF = 0x603D,
+ CM_HFID_REQ = 0x6040,
+ CM_HFID_CNF = 0x6041,
+ CM_MME_ERROR_IND = 0x6046,
+ CM_NW_STATS_REQ = 0x6048,
+ CM_NW_STATS_CNF = 0x6049,
+ CM_LINK_STATS_REQ = 0x604C,
+ CM_LINK_STATS_CNF = 0x604D,
+
+ DRV_STA_SET_MAC_ADDR_REQ = DRV_STA_SET_MAC_ADDR + REQ,
+ DRV_STA_SET_MAC_ADDR_CNF = DRV_STA_SET_MAC_ADDR + CNF,
+ DRV_STA_SET_CCO_PREF_REQ = DRV_STA_SET_CCO_PREF + REQ,
+ DRV_STA_SET_CCO_PREF_CNF = DRV_STA_SET_CCO_PREF + CNF,
+ DRV_STA_SET_WAS_CCO_REQ = DRV_STA_SET_WAS_CCO + REQ,
+ DRV_STA_SET_WAS_CCO_CNF = DRV_STA_SET_WAS_CCO + CNF,
+ DRV_STA_SET_WAS_CCO_IND = DRV_STA_SET_WAS_CCO + IND,
+ DRV_STA_SET_WAS_CCO_RSP = DRV_STA_SET_WAS_CCO + RSP,
+ DRV_STA_SET_NPW_REQ = DRV_STA_SET_NPW + REQ,
+ DRV_STA_SET_NPW_CNF = DRV_STA_SET_NPW + CNF,
+ DRV_STA_SET_DPW_REQ = DRV_STA_SET_DPW + REQ,
+ DRV_STA_SET_DPW_CNF = DRV_STA_SET_DPW + CNF,
+ DRV_STA_SET_SL_REQ = DRV_STA_SET_SL + REQ,
+ DRV_STA_SET_SL_CNF = DRV_STA_SET_SL + CNF,
+ DRV_STA_SET_M_STA_HFID_REQ = DRV_STA_SET_M_STA_HFID + REQ,
+ DRV_STA_SET_M_STA_HFID_CNF = DRV_STA_SET_M_STA_HFID + CNF,
+ DRV_STA_SET_U_STA_HFID_REQ = DRV_STA_SET_U_STA_HFID + REQ,
+ DRV_STA_SET_U_STA_HFID_CNF = DRV_STA_SET_U_STA_HFID + CNF,
+ DRV_STA_SET_AVLN_HFID_REQ = DRV_STA_SET_AVLN_HFID + REQ,
+ DRV_STA_SET_AVLN_HFID_CNF = DRV_STA_SET_AVLN_HFID + CNF,
+ DRV_STA_SET_TONEMASK_REQ = DRV_STA_SET_TONEMASK + REQ,
+ DRV_STA_SET_TONEMASK_CNF = DRV_STA_SET_TONEMASK + CNF,
+ DRV_STA_START_REQ = DRV_STA_START + REQ,
+ DRV_STA_START_CNF = DRV_STA_START + CNF,
+ DRV_STA_STOP_REQ = DRV_STA_STOP + REQ,
+ DRV_STA_STOP_CNF = DRV_STA_STOP + CNF,
+
+ TEST_MSG_NUM,
+ MSG_UNKNOW = 0xFFFF
+} cp_mmtype_t;
+
+
+typedef struct cp_mme_header_t // Table 11-178
+{
+ mac_address_t oda; // original destination adress
+ mac_address_t osa; // original source adress
+ u32 v_lan_tag; // ieee 802.1 tag (optional)
+ u16 m_type; // const = 0x88E1
+ u8 mmv; // management message version
+ cp_mmtype_t mmtype; // management message type
+ u8 nf_mi; // Number of fragments for message
+ u8 fn_mi; // fragment number
+ u8 fmsn; // fragmentation message sequence number
+} cp_mme_header_t;
+
+
+typedef struct cp_mme_rx_t
+{
+ char *p_mme; // pointer to the received MME
+ blk_t *p_frag; // pointer to the mme's fragments
+ uint length; // size of the mme (including header)
+ mfs_t mfs; // pointer to the rx mfs
+ tei_t s_tei; // source tei
+ cp_mme_header_t header; // readen header
+ // todo : add bitstream context
+} cp_mme_rx_t;
+
+typedef struct cp_mme_tx_t
+{
+ char *p_mme; // pointer to the Tx buffer
+ uint length; // size of the mme (including header)
+ mfs_t mfs; // pointer to the rx mfs
+ tei_t d_tei; // destination tei
+ bool relay; // true if the message is encapsulated in cc_relay
+ cp_mme_header_t header; // readen header
+ // todo : add bitstream context
+} cp_mme_tx_t;
+
+
+#endif /*MME_H_*/