|
|
|
1 |
|
2 |
#include "lr-wpan-capability-information.h" |
3 |
|
4 |
namespace ns3 { |
5 |
|
6 |
//NS_OBJECT_ENSURE_REGISTERED (LrWpanCapabilityInformation); |
7 |
|
8 |
|
9 |
LrWpanCapabilityInformation::LrWpanCapabilityInformation () |
10 |
{ |
11 |
SetNoAltrPanCoord (); // Assume the device can't become a PAN coordinator |
12 |
SetNoFfdDevType (); // Assume the Device is RFD |
13 |
SetNoPwrSrc (); // Assume the device don't receive power from the alternating current mains |
14 |
SetRcvOnWhenIdleDisable (); // Assume the receiver is disable during idle periods |
15 |
SetCapRes (0); // Initialize the 2reserved bits to 0 |
16 |
SetNoSecCap (); // Assume the device isn't capable of sending or receiving protected MAC frames |
17 |
SetNoAllocAddr (); // Allocate a 64-bit extended address |
18 |
|
19 |
}; |
20 |
|
21 |
LrWpanCapabilityInformation::~LrWpanCapabilityInformation () |
22 |
{ |
23 |
} |
24 |
|
25 |
|
26 |
uint16_t LrWpanCapabilityInformation::GetCapability (void) const |
27 |
{ |
28 |
uint16_t val; |
29 |
val = m_capInfAltPanCoord & 0x01; // Bit 0 |
30 |
val |= (m_capInfDevType << 1) & (0x01 << 1); // Bit 1 |
31 |
val |= (m_capInfPwrSrc<< 2) & (0x01 << 2); // Bit 2 |
32 |
val |= (m_capInfRcvOnWhenIdle << 3) & (0x01 << 3); // Bit 3 |
33 |
val |= (m_capInfReserved << 4) & (0x03 << 3); // Bit 4-5 |
34 |
val |= (m_capInfSecCap << 6) & (0x01 << 6); // Bit 6 |
35 |
val |= (m_capInfAllocAddr << 7) & (0x01 << 7); // Bit 7 |
36 |
return val; |
37 |
} |
38 |
|
39 |
bool |
40 |
LrWpanCapabilityInformation::IsAltrPanCoord (void) const |
41 |
{ |
42 |
return (m_capInfAltPanCoord == 1); |
43 |
} |
44 |
|
45 |
bool |
46 |
LrWpanCapabilityInformation::IsNoAltrPanCoord (void) const |
47 |
{ |
48 |
return (m_capInfAltPanCoord == 0); |
49 |
} |
50 |
|
51 |
bool |
52 |
LrWpanCapabilityInformation::IsFfdDevType (void) const |
53 |
{ |
54 |
return (m_capInfDevType == 1); |
55 |
} |
56 |
|
57 |
bool |
58 |
LrWpanCapabilityInformation::IsNoFfdDevType (void) const |
59 |
{ |
60 |
return (m_capInfDevType == 0); |
61 |
} |
62 |
|
63 |
bool |
64 |
LrWpanCapabilityInformation::IsPwrSrc (void) const |
65 |
{ |
66 |
return (m_capInfPwrSrc == 1); |
67 |
} |
68 |
|
69 |
bool |
70 |
LrWpanCapabilityInformation::IsNoPwrSrc (void) const |
71 |
{ |
72 |
return (m_capInfPwrSrc == 0); |
73 |
} |
74 |
|
75 |
bool |
76 |
LrWpanCapabilityInformation::IsRcvOnWhenIdleEnable (void) const |
77 |
{ |
78 |
return (m_capInfRcvOnWhenIdle == 1); |
79 |
} |
80 |
|
81 |
bool |
82 |
LrWpanCapabilityInformation::IsRcvOnWhenIdleDisable (void) const |
83 |
{ |
84 |
return (m_capInfRcvOnWhenIdle == 0); |
85 |
} |
86 |
|
87 |
bool |
88 |
LrWpanCapabilityInformation::IsSecCap (void) const |
89 |
{ |
90 |
return (m_capInfSecCap == 1); |
91 |
} |
92 |
|
93 |
bool |
94 |
LrWpanCapabilityInformation::IsNoSecCap (void) const |
95 |
{ |
96 |
return (m_capInfSecCap == 0); |
97 |
} |
98 |
|
99 |
bool |
100 |
LrWpanCapabilityInformation::IsAllocAddr (void) const |
101 |
{ |
102 |
return (m_capInfAllocAddr == 1); |
103 |
} |
104 |
|
105 |
bool |
106 |
LrWpanCapabilityInformation::IsNoAllocAddr (void) const |
107 |
{ |
108 |
return (m_capInfAllocAddr == 0); |
109 |
} |
110 |
|
111 |
void |
112 |
LrWpanCapabilityInformation::SetCapability (uint16_t Capability) |
113 |
{ |
114 |
m_capInfAltPanCoord = Capability & 0x01; // Bit 0 |
115 |
m_capInfDevType |= (Capability >> 1) & (0x01); // Bit 1 |
116 |
m_capInfPwrSrc |= (Capability >> 2) & (0x01); // Bit 2 |
117 |
m_capInfRcvOnWhenIdle |= (Capability >> 3) & (0x01); // Bit 3 |
118 |
m_capInfReserved |= (Capability >> 4) & (0x03); // Bit 4-5 |
119 |
m_capInfSecCap |= (Capability >> 6) & (0x01); // Bit 6 |
120 |
m_capInfAllocAddr |= (Capability >> 7) & (0x01); // Bit 7 |
121 |
} |
122 |
|
123 |
void |
124 |
LrWpanCapabilityInformation::SetAltrPanCoord (void) |
125 |
{ |
126 |
m_capInfAltPanCoord = 1; |
127 |
} |
128 |
|
129 |
void |
130 |
LrWpanCapabilityInformation::SetNoAltrPanCoord (void) |
131 |
{ |
132 |
m_capInfAltPanCoord = 0; |
133 |
} |
134 |
|
135 |
void |
136 |
LrWpanCapabilityInformation::SetFfdDevType (void) |
137 |
{ |
138 |
m_capInfDevType = 1; |
139 |
} |
140 |
|
141 |
void |
142 |
LrWpanCapabilityInformation::SetNoFfdDevType (void) |
143 |
{ |
144 |
m_capInfDevType = 0; |
145 |
} |
146 |
|
147 |
void |
148 |
LrWpanCapabilityInformation::SetPwrSrc (void) |
149 |
{ |
150 |
m_capInfPwrSrc = 1; |
151 |
} |
152 |
|
153 |
void |
154 |
LrWpanCapabilityInformation::SetNoPwrSrc (void) |
155 |
{ |
156 |
m_capInfPwrSrc = 0; |
157 |
} |
158 |
|
159 |
void |
160 |
LrWpanCapabilityInformation::SetRcvOnWhenIdleEnable (void) |
161 |
{ |
162 |
m_capInfRcvOnWhenIdle = 1; |
163 |
} |
164 |
|
165 |
void |
166 |
LrWpanCapabilityInformation::SetRcvOnWhenIdleDisable (void) |
167 |
{ |
168 |
m_capInfRcvOnWhenIdle = 0; |
169 |
} |
170 |
|
171 |
void |
172 |
LrWpanCapabilityInformation::SetCapRes (uint8_t res) |
173 |
{ |
174 |
m_capInfReserved = res; |
175 |
} |
176 |
|
177 |
void |
178 |
LrWpanCapabilityInformation::SetSecCap (void) |
179 |
{ |
180 |
m_capInfSecCap = 1; |
181 |
} |
182 |
|
183 |
void |
184 |
LrWpanCapabilityInformation::SetNoSecCap (void) |
185 |
{ |
186 |
m_capInfSecCap = 0; |
187 |
} |
188 |
|
189 |
void |
190 |
LrWpanCapabilityInformation::SetAllocAddr (void) |
191 |
{ |
192 |
m_capInfAllocAddr = 1; |
193 |
} |
194 |
|
195 |
void |
196 |
LrWpanCapabilityInformation::SetNoAllocAddr (void) |
197 |
{ |
198 |
m_capInfAllocAddr = 0; |
199 |
} |
200 |
|
201 |
} // namespace ns3 |