Skip to content

Commit f085132

Browse files
author
Mika Tervonen
committed
Made parent set size configuraple in RPL
Set default parent count in Wi-SUN to be 2
1 parent fd11ffa commit f085132

File tree

8 files changed

+24
-2
lines changed

8 files changed

+24
-2
lines changed

source/6LoWPAN/ws/ws_bootstrap.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2254,6 +2254,7 @@ static void ws_bootstrap_rpl_activate(protocol_interface_info_entry_t *cur)
22542254
rpl_control_set_dio_multicast_min_config_advertisment_count(WS_MIN_DIO_MULTICAST_CONFIG_ADVERTISMENT_COUNT);
22552255
rpl_control_set_dao_retry_count(WS_MAX_DAO_RETRIES);
22562256
rpl_control_set_initial_dao_ack_wait(WS_MAX_DAO_INITIAL_TIMEOUT);
2257+
rpl_control_set_mrhof_parent_set_size(WS_MAX_PARENT_SET_COUNT);
22572258

22582259
cur->ws_info->rpl_state = 0xff; // Set invalid state and learn from event
22592260
}

source/6LoWPAN/ws/ws_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ extern uint8_t DEVICE_MIN_SENS;
149149
#define WS_MAX_DAO_RETRIES 3 // With 40s, 80s, 160s, 320s, 640s
150150
#define WS_MAX_DAO_INITIAL_TIMEOUT 400 // With 40s initial value exponentially increasing
151151
#define WS_MIN_DIO_MULTICAST_CONFIG_ADVERTISMENT_COUNT 0xff // Advertisment config at every MC DIO
152+
#define WS_MAX_PARENT_SET_COUNT 2 // maximum amount of parents selected by node
152153

153154
/*
154155
* Candidate parent list parameters

source/RPL/rpl_control.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,10 @@ void rpl_control_set_initial_dao_ack_wait(uint16_t timeout_in_ms)
190190
{
191191
rpl_policy_set_initial_dao_ack_wait(timeout_in_ms);
192192
}
193+
void rpl_control_set_mrhof_parent_set_size(uint16_t parent_set_size)
194+
{
195+
rpl_policy_set_mrhof_parent_set_size(parent_set_size);
196+
}
193197

194198
/* Send address registration to either specified address, or to non-registered address */
195199
void rpl_control_register_address(protocol_interface_info_entry_t *interface, const uint8_t addr[16])

source/RPL/rpl_control.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ void rpl_control_request_parent_link_confirmation(bool requested);
168168
void rpl_control_set_dio_multicast_min_config_advertisment_count(uint8_t min_count);
169169
void rpl_control_set_dao_retry_count(uint8_t count);
170170
void rpl_control_set_initial_dao_ack_wait(uint16_t timeout_in_ms);
171+
void rpl_control_set_mrhof_parent_set_size(uint16_t parent_set_size);
171172
void rpl_control_register_address(struct protocol_interface_info_entry *interface, const uint8_t addr[16]);
172173
void rpl_control_address_register_done(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16], uint8_t status);
173174

@@ -195,6 +196,7 @@ uint8_t rpl_policy_mrhof_parent_set_size_get(const rpl_domain_t *domain);
195196
#define rpl_control_register_address(interface, addr) ((void) 0)
196197
#define rpl_control_address_register_done(interface, ll_addr, status) ((void) 0)
197198
#define rpl_policy_mrhof_parent_set_size_get(domain) (0)
199+
#define rpl_control_set_mrhof_parent_set_size(parent_set_size)
198200

199201
#endif /* HAVE_RPL */
200202

source/RPL/rpl_policy.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static int8_t rpl_policy_dao_retry_count_conf = 0;
3939
static int16_t rpl_policy_dao_initial_timeout_conf = 20; // Default is 2 seconds 100ms ticks
4040
static uint16_t rpl_policy_dio_validity_period_hysteresis = 0x0180; //Fixed Point 1.5
4141
static uint8_t rpl_policy_multicast_config_min_advertisment_count = 0;
42-
42+
static uint8_t rpl_policy_mrhof_parent_set_size_conf = 3; // default parent set size
4343

4444
/* TODO - application API to control when to join new instances / DODAGs
4545
*
@@ -326,11 +326,16 @@ uint_fast8_t rpl_policy_of0_max_backup_successors(const rpl_domain_t *domain)
326326
return 1;
327327
}
328328

329+
void rpl_policy_set_mrhof_parent_set_size(uint8_t parent_set_size)
330+
{
331+
rpl_policy_mrhof_parent_set_size_conf = parent_set_size;
332+
}
333+
329334
uint_fast8_t rpl_policy_mrhof_parent_set_size(const rpl_domain_t *domain)
330335
{
331336
(void)domain;
332337

333-
return 3;
338+
return rpl_policy_mrhof_parent_set_size_conf;
334339
}
335340

336341
uint16_t rpl_policy_mrhof_max_rank_stretch_for_extra_parents(const rpl_domain_t *domain)

source/RPL/rpl_policy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ uint_fast8_t rpl_policy_of0_rank_factor(const rpl_domain_t *domain);
5959
bool rpl_policy_of0_dodag_preference_supersedes_grounded(const rpl_domain_t *domain);
6060
uint_fast8_t rpl_policy_of0_max_backup_successors(const rpl_domain_t *domain);
6161

62+
void rpl_policy_set_mrhof_parent_set_size(uint8_t parent_set_size);
6263
uint_fast8_t rpl_policy_mrhof_parent_set_size(const rpl_domain_t *domain);
6364
uint16_t rpl_policy_mrhof_max_link_metric(const rpl_domain_t *domain);
6465
uint16_t rpl_policy_mrhof_parent_switch_threshold(const rpl_domain_t *domain);

test/nanostack/unittest/stub/rpl_control_stub.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ void rpl_control_set_initial_dao_ack_wait(uint16_t timeout_in_ms)
264264

265265
}
266266

267+
void rpl_control_set_parent_set_size(uint16_t parent_set_size)
268+
{
269+
}
270+
267271
bool rpl_control_probe_parent_candidate(protocol_interface_info_entry_t *interface, const uint8_t ll_addr[16])
268272
{
269273
return false;

test/nanostack/unittest/stub/rpl_policy_stub.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ uint_fast8_t rpl_policy_of0_max_backup_successors(const rpl_domain_t *domain)
158158
return 0;
159159
}
160160

161+
void rpl_policy_set_mrhof_parent_set_size(uint8_t parent_set_size)
162+
{
163+
}
164+
161165
uint_fast8_t rpl_policy_mrhof_parent_set_size(const rpl_domain_t *domain)
162166
{
163167
return 0;

0 commit comments

Comments
 (0)