Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Commit 93f0ed7

Browse files
Juha Heiskanenjuhhei01
authored andcommitted
MAC ie library update:
Added new discover function for discover mac_ie_header_sub_id_discover(). Function compare standard header id and first byte from content.
1 parent b2198b3 commit 93f0ed7

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

source/6LoWPAN/MAC/mac_ie_lib.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,25 @@ uint8_t mac_ie_header_discover(uint8_t *header_ptr, uint16_t length, mac_header_
9494
}
9595
return 0;
9696
}
97+
98+
uint8_t mac_ie_header_sub_id_discover(uint8_t *header_ptr, uint16_t length, mac_header_IE_t * header_ie, uint8_t sub_id)
99+
{
100+
mac_header_IE_t ie_element;
101+
uint8_t *sub_id_ptr;
102+
while (length > 2) {
103+
mac_ie_header_parse(&ie_element, header_ptr);
104+
sub_id_ptr = ie_element.content_ptr;
105+
if (ie_element.length && header_ie->id == ie_element.id && *sub_id_ptr == sub_id) {
106+
sub_id_ptr++;
107+
ie_element.length--;
108+
header_ie->content_ptr = sub_id_ptr;
109+
header_ie->length = ie_element.length;
110+
return ie_element.length;
111+
}
112+
113+
length -= ie_element.length +2;
114+
115+
header_ptr += ie_element.length + 2;
116+
}
117+
return 0;
118+
}

source/6LoWPAN/MAC/mac_ie_lib.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ uint8_t *mac_ie_header_base_write(uint8_t *ptr, uint8_t type, uint16_t length);
2525
uint8_t *mac_ie_payload_base_write(uint8_t *ptr, uint8_t type, uint16_t length);
2626
uint16_t mac_ie_payload_discover(uint8_t *payload_ptr, uint16_t length, struct mac_payload_IE_s * payload_ie);
2727
uint8_t mac_ie_header_discover(uint8_t *header_ptr, uint16_t length, struct mac_header_IE_s * header_ie);
28+
uint8_t mac_ie_header_sub_id_discover(uint8_t *header_ptr, uint16_t length, mac_header_IE_t * header_ie, uint8_t sub_id);
2829

2930
#endif /* MAC_IE_LIB_H_ */

test/nanostack/unittest/stub/mac_ie_lib_stub.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,10 @@ uint8_t mac_ie_header_discover(uint8_t *header_ptr, uint16_t length, mac_header_
4545
header_ie->content_ptr = payload_ptr;
4646
return mac_ie_lib_stub_def.value_uint8;
4747
}
48+
49+
50+
uint8_t mac_ie_header_sub_id_discover(uint8_t *header_ptr, uint16_t length, mac_header_IE_t * header_ie, uint8_t sub_id)
51+
{
52+
header_ie->content_ptr = payload_ptr;
53+
return mac_ie_lib_stub_def.value_uint8;
54+
}

0 commit comments

Comments
 (0)