summaryrefslogtreecommitdiff
path: root/cesar/mac/common/defs.h
blob: 867832e9512d6cea493043cedf7d9b480c5b7d4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#ifndef mac_common_defs_h
#define mac_common_defs_h
/* Cesar project {{{
 *
 * Copyright (C) 2007 Spidcom
 *
 * <<<Licence>>>
 *
 * }}} */
/**
 * \file    mac/common/defs.h
 * \brief   Mac common definitions.
 * \ingroup mac_common
 */

/** Number of usable bytes per PB520. */
#define MAC_PB520_BYTES 512

/** Number of usable bytes per PB136. */
#define MAC_PB136_BYTES 128

/** Maximum number of symbols per MPDU. */
#define MAC_MAX_SYMB_PER_MPDU 112

/** Maximum number of physical PHY blocks per MPDU. */
#define MAC_MAX_PB_PER_MPDU 236

/** Number of channel access priority. */
#define MAC_CAP_NB 4

/** Link identifiers. */
enum mac_lid_t
{
    MAC_LID_MIN = 0x00,
    MAC_PLID_MIN = 0x00,
    MAC_PLID_MAX = 0x03,
    MAC_PLID_NB = MAC_PLID_MAX - MAC_PLID_MIN + 1,
    MAC_LLID_MIN = 0x04,
    MAC_LLID_MAX = 0x7f,
    MAC_LLID_NB = MAC_LLID_MAX - MAC_LLID_MIN + 1,
    MAC_GLID_MIN = 0x80,
    MAC_GLID_MAX = 0xf7,
    MAC_GLID_NB = MAC_GLID_MAX - MAC_GLID_MIN + 1,
    MAC_LID_MAX = 0xf7,
    MAC_LID_NB = MAC_LID_MAX - MAC_LID_MIN + 1,
    MAC_LID_NONE = 0xf8,
    MAC_LID_NO_DATA = 0x02,
    MAC_LID_SPC_HOLE = 0x00,
    MAC_LID_SPC_BEACON_LISTEN = 0xf9,
    MAC_LID_SPC_PROXY = 0xfa,
    MAC_LID_SPC_CENTRAL = 0xfb,
    MAC_LID_CFPI = 0xfc,
    MAC_LID_DISCOVER = 0xfd,
    MAC_LID_BEACON_MIN = MAC_LID_SPC_BEACON_LISTEN,
    MAC_LID_BEACON_MAX = MAC_LID_DISCOVER,
    MAC_LID_SHARED_CSMA = 0xfe,
    MAC_LID_LOCAL_CSMA = 0xff
};

/** Test if a LID is a Priority LID (PLID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_PLID(lid) ((lid) < MAC_PLID_NB)

/** Test if a LID is a Local LID (LLID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_LLID(lid) ((lid) >= MAC_LLID_MIN && (lid) <= MAC_LLID_MAX)

/** Test if a LID is a Global LID (GLID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_GLID(lid) ((lid) >= MAC_GLID_MIN && (lid) <= MAC_GLID_MAX)

/** Test if a LID is a connection based link LID (LLID or GLID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_CLID(lid) ((lid) >= MAC_LLID_MIN && (lid) <= MAC_GLID_MAX)

/** Test if a LID is a regular LID (any of PLID, LLID or GLID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_XLID(lid) ((lid) < MAC_LID_NB)

/** Test if a LID is a beacon LID (vendor specific LID).
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_LID_IS_BEACON(lid) ((lid) >= MAC_LID_BEACON_MIN \
                                && (lid) <= MAC_LID_BEACON_MAX)

/** Terminal Equipment Identifier. */
enum mac_tei_t
{
    MAC_TEI_UNASSOCIATED = 0,
    MAC_TEI_STA_MIN = 1,
    MAC_TEI_STA_MAX = 0xfe,
    MAC_TEI_STA_NB = MAC_TEI_STA_MAX - MAC_TEI_STA_MIN + 1,
    MAC_TEI_BCAST = 0xff,
    /** Used to request unicast transmission to all stations in the AVLN. */
    MAC_TEI_MULTI_UNICAST = 0x100,
    /** Used for peers not present on the medium (HLE driver or other bridged
     * address). */
    MAC_TEI_FOREIGN = 0x200,
};

/** Test if a TEI is between STA_MIN and STA_MAX.
 * \warning This is a macro, the argument may be evaluated several time. */
#define MAC_TEI_IS_STA(tei) \
    ((tei) >= MAC_TEI_STA_MIN && (tei) <= MAC_TEI_STA_MAX)

/** Coexistence modes.
 * \warning Full Hybrid mode is also used in CSMA-Only with HomePlug 1.0
 * compatible frame length.  This maps directly to beacon HM field. */
enum mac_coexistence_mode_t
{
    MAC_COEXISTENCE_AV_ONLY_MODE,
    MAC_COEXISTENCE_SHARED_CSMA_HYBRID_MODE,
    MAC_COEXISTENCE_FULL_HYBRID_MODE,
    MAC_COEXISTENCE_HYBRID_DELIMITERS_MODE,
    MAC_COEXISTENCE_NB,
};
typedef enum mac_coexistence_mode_t mac_coexistence_mode_t;

/** Network modes. */
enum mac_network_mode_t
{
    MAC_NM_UNCOORDINATED,
    MAC_NM_COORDINATED,
    MAC_NM_CSMA_ONLY,
    MAC_NM_NB,
};
typedef enum mac_network_mode_t mac_network_mode_t;


/** Encryption Key Select. */
enum mac_eks_t
{
    MAC_EKS_MIN = 0,
    MAC_EKS_MAX = 7,
    MAC_EKS_NB = MAC_EKS_MAX - MAC_EKS_MIN + 1,
    MAC_EKS_CLEAR = 0xf,
};
typedef enum mac_eks_t mac_eks_t;

/** Number of NEK index handled */
#define MAC_NEK_INDEX_NB 2

#endif /* mac_common_defs_h */