Skip to content

Commit 2fe2a6c

Browse files
author
Juha Heiskanen
committed
MAC update:
Added new extension for update device description table pan-id to new one Mac helper have a API for use new mac extension. Thread pending set activate use new Mac helper for update current neighbor list pan-id entries. Change-Id: I5496a26f97b2daba2cea11f43ef21042cd0e0b16
1 parent 6d288ce commit 2fe2a6c

File tree

9 files changed

+53
-0
lines changed

9 files changed

+53
-0
lines changed

nanostack/mlme.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ typedef enum {
264264
macAutoRequestKeyIndex = 0x7b, /*<The index of the key used for automatic data*/
265265
macDefaultKeySource = 0x7c, /*<Default key source*/
266266
//NON standard extension
267+
macDeviceDescriptionPanIDUpdate = 0xf7, /*<Thread pending link update case this will update device descrioton list pan-id to new one*/
267268
macTXPower = 0xf8, /*<TX output power*/
268269
macCCAThreshold = 0xf9, /*<CCA threshold*/
269270
macMultiCSMAParameters = 0xfa, /*<Multi CSMA parameters*/

source/6LoWPAN/MAC/mac_helper.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -929,3 +929,20 @@ int8_t mac_helper_mac_mlme_max_retry_set(int8_t interface_id, uint8_t mac_retry_
929929

930930
return 0;
931931
}
932+
933+
934+
int8_t mac_helper_mac_device_description_pan_id_update(int8_t interface_id, uint16_t pan_id)
935+
{
936+
protocol_interface_info_entry_t *cur;
937+
cur = protocol_stack_interface_info_get_by_id(interface_id);
938+
if (!cur || !cur->mac_api) {
939+
return -1;
940+
}
941+
mlme_set_t set_req;
942+
set_req.attr = macDeviceDescriptionPanIDUpdate;
943+
set_req.attr_index = 0;
944+
set_req.value_pointer = &pan_id;
945+
set_req.value_size = sizeof(pan_id);
946+
cur->mac_api->mlme_req(cur->mac_api, MLME_SET, &set_req);
947+
return 0;
948+
}

source/6LoWPAN/MAC/mac_helper.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,6 @@ void mac_helper_device_description_write(struct protocol_interface_info_entry *c
122122
void mac_helper_devicetable_set(const mlme_device_descriptor_t *device_dec, struct protocol_interface_info_entry *cur, uint8_t attribute_index, uint8_t keyID, bool force_set);
123123
int8_t mac_helper_mac_mlme_max_retry_set(int8_t interface_id, uint8_t mac_retry_set);
124124

125+
int8_t mac_helper_mac_device_description_pan_id_update(int8_t interface_id, uint16_t pan_id);
126+
125127
#endif // MAC_HELPER_H

source/6LoWPAN/Thread/thread_bootstrap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,8 @@ int thread_link_configuration_activate(protocol_interface_info_entry_t *cur, lin
755755
return -1;
756756
}
757757

758+
mac_helper_mac_device_description_pan_id_update(cur->id, linkConfiguration->panId);
759+
758760
thread_configuration_thread_activate(cur, linkConfiguration);
759761
thread_configuration_security_activate(cur, linkConfiguration);
760762
thread_configuration_6lowpan_activate(cur);

source/MAC/IEEE802_15_4/mac_mlme.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,9 @@ static int8_t mac_mlme_16bit_set(protocol_interface_rf_mac_setup_s *rf_mac_setup
542542
case macTransactionPersistenceTime:
543543
//TODO: check this also
544544
break;
545+
case macDeviceDescriptionPanIDUpdate:
546+
mac_sec_mib_device_description_pan_update(rf_mac_setup, value);
547+
break;
545548

546549
default:
547550
return -1;

source/MAC/IEEE802_15_4/mac_security_mib.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,22 @@ mlme_device_descriptor_t *mac_sec_mib_device_description_get_attribute_index(pro
367367
return rf_mac_setup->device_description_table + attribute_index;
368368
}
369369

370+
void mac_sec_mib_device_description_pan_update(protocol_interface_rf_mac_setup_s *rf_mac_setup, uint16_t pan_id)
371+
{
372+
mlme_device_descriptor_t *device_table = rf_mac_setup->device_description_table;
373+
if (!device_table) {
374+
return;
375+
}
376+
377+
for (int i = 0; i < rf_mac_setup->device_description_table_size; i++) {
378+
379+
device_table->PANId = pan_id;
380+
device_table++;
381+
}
382+
383+
}
384+
385+
370386
mlme_device_descriptor_t *mac_sec_mib_device_description_get(protocol_interface_rf_mac_setup_s *rf_mac_setup, const uint8_t *address, uint8_t type, uint16_t pan_id)
371387
{
372388
if (rf_mac_setup) {

source/MAC/IEEE802_15_4/mac_security_mib.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ mlme_device_descriptor_t *mac_sec_mib_device_description_get_attribute_index(str
5353

5454
mlme_device_descriptor_t *mac_sec_mib_device_description_get(struct protocol_interface_rf_mac_setup *rf_mac_setup, const uint8_t *address, uint8_t type, uint16_t pan_id);
5555

56+
void mac_sec_mib_device_description_pan_update(struct protocol_interface_rf_mac_setup *rf_mac_setup, uint16_t pan_id);
57+
5658
uint8_t mac_mib_device_descption_attribute_get_by_descriptor(struct protocol_interface_rf_mac_setup *rf_mac_setup, mlme_device_descriptor_t *descriptor);
5759

5860
mlme_key_descriptor_t *mac_sec_key_description_get(struct protocol_interface_rf_mac_setup *rf_mac_setup, mlme_security_t *key_source, uint8_t address_mode, uint8_t *address_ptr, uint16_t pan_id);

test/nanostack/unittest/stub/mac_helper_stub.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,3 +258,8 @@ int8_t mac_helper_mac_mlme_max_retry_set(int8_t interface_id, uint8_t mac_retry_
258258
{
259259

260260
}
261+
262+
int8_t mac_helper_mac_device_description_pan_id_update(int8_t interface_id, uint16_t pan_id)
263+
{
264+
265+
}

test/nanostack/unittest/stub/mac_security_mib_stub.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,9 @@ void mac_sec_mib_key_outgoing_frame_counter_set(struct protocol_interface_rf_mac
140140
mac_security_mib_stub.out_frame_cnt = value;
141141
}
142142

143+
void mac_sec_mib_device_description_pan_update(struct protocol_interface_rf_mac_setup *rf_mac_setup, uint16_t pan_id)
144+
{
145+
146+
}
147+
143148

0 commit comments

Comments
 (0)