Skip to content

Commit 7400c8b

Browse files
author
Jarkko Paso
authored
CFG: API for PHY mode id and channel plan id get & validate (ARMmbed#2564)
1 parent 2832fe8 commit 7400c8b

File tree

4 files changed

+186
-1
lines changed

4 files changed

+186
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
### Changes
1111
* Added throttling of number of simultaneous EAPOL authentications based on Border Router TX queue size
12+
* Get and validate API for PHY mode ID and Channel plan ID.
1213

1314
### Bugfix
1415
*

nanostack/ws_management_api.h

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,40 @@ int ws_management_phy_mode_id_set(
244244
int8_t interface_id,
245245
uint8_t phy_mode_id);
246246

247+
/**
248+
* Get PHY mode ID of Wi-SUN stack.
249+
*
250+
* \param interface_id Network interface ID.
251+
* \param phy_mode_id PHY mode ID.
252+
*
253+
* \return 0, OK.
254+
* \return <0 Fail.
255+
*/
256+
int ws_management_phy_mode_id_get(
257+
int8_t interface_id,
258+
uint8_t *phy_mode_id);
259+
260+
/**
261+
* Validate PHY mode ID of Wi-SUN stack.
262+
*
263+
* \param interface_id Network interface ID.
264+
* \param phy_mode_id PHY mode ID.
265+
*
266+
* \return 0, OK.
267+
* \return <0 Fail.
268+
*/
269+
int ws_management_phy_mode_id_validate(
270+
int8_t interface_id,
271+
uint8_t phy_mode_id);
272+
247273
/**
248274
* Configure Channel plan ID of Wi-SUN stack as defined by Wi-SUN FAN 1.1.
249275
*
250276
* Change the default channel configuration for Wi-SUN.
251277
*
252-
* Supported values: TBD
278+
* Supported values:
279+
* North America (NA): (1), (2), (5)
280+
* Brazil (BZ): (1), (2), (5)
253281
*
254282
* if value of 255 is given then previous value is used.
255283
*
@@ -263,6 +291,32 @@ int ws_management_channel_plan_id_set(
263291
int8_t interface_id,
264292
uint8_t channel_plan_id);
265293

294+
/**
295+
* Get Channel plan ID of Wi-SUN stack.
296+
*
297+
* \param interface_id Network interface ID.
298+
* \param channel_plan_id Channel plan ID.
299+
*
300+
* \return 0, OK.
301+
* \return <0 Fail.
302+
*/
303+
int ws_management_channel_plan_id_get(
304+
int8_t interface_id,
305+
uint8_t *channel_plan_id);
306+
307+
/**
308+
* Validate Channel plan ID of Wi-SUN stack.
309+
*
310+
* \param interface_id Network interface ID.
311+
* \param channel_plan_id Channel plan ID.
312+
*
313+
* \return 0, OK.
314+
* \return <0 Fail.
315+
*/
316+
int ws_management_channel_plan_id_validate(
317+
int8_t interface_id,
318+
uint8_t channel_plan_id);
319+
266320
/**
267321
* Configure regulatory domain of Wi-SUN stack.
268322
*

source/6LoWPAN/ws/ws_empty_functions.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,24 @@ int ws_management_phy_mode_id_set(
7777
return -1;
7878
}
7979

80+
int ws_management_phy_mode_id_get(
81+
int8_t interface_id,
82+
uint8_t *phy_mode_id)
83+
{
84+
(void)interface_id;
85+
(void)phy_mode_id;
86+
return -1;
87+
}
88+
89+
int ws_management_phy_mode_id_validate(
90+
int8_t interface_id,
91+
uint8_t phy_mode_id)
92+
{
93+
(void)interface_id;
94+
(void)phy_mode_id;
95+
return -1;
96+
}
97+
8098
int ws_management_channel_plan_id_set(
8199
int8_t interface_id,
82100
uint8_t channel_plan_id)
@@ -86,6 +104,24 @@ int ws_management_channel_plan_id_set(
86104
return -1;
87105
}
88106

107+
int ws_management_channel_plan_id_get(
108+
int8_t interface_id,
109+
uint8_t *channel_plan_id)
110+
{
111+
(void)interface_id;
112+
(void)channel_plan_id;
113+
return -1;
114+
}
115+
116+
int ws_management_channel_plan_id_validate(
117+
int8_t interface_id,
118+
uint8_t channel_plan_id)
119+
{
120+
(void)interface_id;
121+
(void)channel_plan_id;
122+
return -1;
123+
}
124+
89125
int ws_management_regulatory_domain_set(
90126
int8_t interface_id,
91127
uint8_t regulatory_domain,

source/6LoWPAN/ws/ws_management_api.c

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,53 @@ int ws_management_phy_mode_id_set(
190190
return 0;
191191
}
192192

193+
int ws_management_phy_mode_id_get(
194+
int8_t interface_id,
195+
uint8_t *phy_mode_id)
196+
{
197+
protocol_interface_info_entry_t *cur;
198+
cur = protocol_stack_interface_info_get_by_id(interface_id);
199+
if (interface_id >= 0 && (!cur || !ws_info(cur))) {
200+
return -1;
201+
}
202+
if (!phy_mode_id) {
203+
return -2;
204+
}
205+
206+
ws_phy_cfg_t cfg;
207+
if (ws_cfg_phy_get(&cfg, NULL) < 0) {
208+
return -3;
209+
}
210+
211+
*phy_mode_id = cfg.phy_mode_id;
212+
213+
return 0;
214+
}
215+
216+
int ws_management_phy_mode_id_validate(
217+
int8_t interface_id,
218+
uint8_t phy_mode_id)
219+
{
220+
protocol_interface_info_entry_t *cur;
221+
cur = protocol_stack_interface_info_get_by_id(interface_id);
222+
if (interface_id >= 0 && (!cur || !ws_info(cur))) {
223+
return -1;
224+
}
225+
226+
ws_phy_cfg_t cfg;
227+
if (ws_cfg_phy_get(&cfg, NULL) < 0) {
228+
return -3;
229+
}
230+
231+
cfg.phy_mode_id = phy_mode_id;
232+
233+
if (ws_cfg_phy_validate(NULL, &cfg) < 0) {
234+
return -4;
235+
}
236+
237+
return 0;
238+
}
239+
193240
int ws_management_channel_plan_id_set(
194241
int8_t interface_id,
195242
uint8_t channel_plan_id)
@@ -224,6 +271,53 @@ int ws_management_channel_plan_id_set(
224271
return 0;
225272
}
226273

274+
int ws_management_channel_plan_id_get(
275+
int8_t interface_id,
276+
uint8_t *channel_plan_id)
277+
{
278+
protocol_interface_info_entry_t *cur;
279+
cur = protocol_stack_interface_info_get_by_id(interface_id);
280+
if (interface_id >= 0 && (!cur || !ws_info(cur))) {
281+
return -1;
282+
}
283+
if (!channel_plan_id) {
284+
return -2;
285+
}
286+
287+
ws_phy_cfg_t cfg;
288+
if (ws_cfg_phy_get(&cfg, NULL) < 0) {
289+
return -3;
290+
}
291+
292+
*channel_plan_id = cfg.channel_plan_id;
293+
294+
return 0;
295+
}
296+
297+
int ws_management_channel_plan_id_validate(
298+
int8_t interface_id,
299+
uint8_t channel_plan_id)
300+
{
301+
protocol_interface_info_entry_t *cur;
302+
cur = protocol_stack_interface_info_get_by_id(interface_id);
303+
if (interface_id >= 0 && (!cur || !ws_info(cur))) {
304+
return -1;
305+
}
306+
307+
ws_phy_cfg_t cfg;
308+
if (ws_cfg_phy_get(&cfg, NULL) < 0) {
309+
return -3;
310+
}
311+
312+
cfg.channel_plan_id = channel_plan_id;
313+
314+
if (ws_cfg_phy_validate(NULL, &cfg) < 0) {
315+
return -4;
316+
}
317+
318+
return 0;
319+
}
320+
227321
int ws_management_regulatory_domain_set(
228322
int8_t interface_id,
229323
uint8_t regulatory_domain,

0 commit comments

Comments
 (0)