Skip to content

Commit 7c13c3c

Browse files
commissioner updates. (ARMmbed#1812)
commissioner module dependency on thread interface removed.
1 parent 40b2eec commit 7c13c3c

File tree

8 files changed

+251
-68
lines changed

8 files changed

+251
-68
lines changed

nanostack/thread_commissioning_api.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,10 @@ void *thread_commission_device_get_next(void *ptr, int8_t interface_id, bool *sh
189189

190190
typedef struct thread_commissioning_link_configuration {
191191
uint8_t name[16]; /**< Name of the Thread network. utf8 string nul terminated if shorter than 16. */
192+
uint8_t destination_address[16]; /**<Border router destination address*/
192193
uint8_t extented_pan_id[8]; /**< Extended PAN ID. */
193194
uint16_t panId; /**< Network ID. */
195+
uint16_t destination_port; /**<destination port for commissioning*/
194196
uint8_t Protocol_id; /**< Current protocol ID. */
195197
uint8_t version; /**< Current protocol version. */
196198
uint8_t rfChannel; /**< Current RF channel. */
@@ -271,6 +273,18 @@ int thread_commissioning_native_commissioner_get_connection_info(int8_t interfac
271273
*/
272274
int8_t thread_commissioning_get_management_id(int8_t interface_id);
273275

276+
/**
277+
* \brief Attach native commissioner to destination address and port.
278+
*
279+
* \param interface_id Network interface ID.
280+
* \param destination_address Destination address pointer.
281+
* \param destination_port Commissioning port.
282+
*
283+
* \return 0 attach OK.
284+
* \return < 0 fail.
285+
*/
286+
int thread_commissioning_attach(int8_t interface_id, uint8_t *destination_address, uint16_t destination_port);
287+
274288
#ifdef __cplusplus
275289
}
276290
#endif

source/6LoWPAN/Thread/thread_bootstrap.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1984,6 +1984,10 @@ void thread_discover_native_commissioner_response(protocol_interface_info_entry_
19841984
config_ptr[n].rfChannel = cur_class->channel;
19851985
memcpy(config_ptr[n].name, cur_class->network_name, 16);
19861986
memcpy(config_ptr[n].extented_pan_id, cur_class->extented_pan_id, 8);
1987+
memcpy(config_ptr[n].destination_address, ADDR_LINK_LOCAL_PREFIX, 8);
1988+
memcpy(&config_ptr[n].destination_address[8], cur_class->extented_mac, 8);
1989+
config_ptr[n].destination_address[8] ^= 2;
1990+
config_ptr[n].destination_port = cur_class->commissioner_port;
19871991
n++;
19881992
}
19891993

source/6LoWPAN/Thread/thread_commissioning_api.c

Lines changed: 219 additions & 46 deletions
Large diffs are not rendered by default.

source/6LoWPAN/Thread/thread_leader_service.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ static int thread_leader_service_commissioner_register(int8_t interface_id, uint
305305
protocol_interface_info_entry_t *cur;
306306
link_configuration_s *linkConfiguration;
307307

308-
tr_debug("Register interface %d commissioner: %s", interface_id, trace_ipv6(border_router_address));
309308

310309
linkConfiguration = thread_joiner_application_get_config(interface_id);
311310
if (!linkConfiguration) {
@@ -341,6 +340,13 @@ static int thread_leader_service_commissioner_register(int8_t interface_id, uint
341340
*session_id = cur->thread_info->registered_commissioner.session_id;
342341
}
343342

343+
if (memcmp(border_router_address, linkConfiguration->mesh_local_ula_prefix, 8) == 0 &&
344+
memcmp(border_router_address + 8, ADDR_SHORT_ADR_SUFFIC, 6) == 0 &&
345+
border_router_address[14] == 0xfc) {
346+
// source address is ALOC
347+
common_write_16_bit(cur->thread_info->routerShortAddress, &border_router_address[14]);
348+
}
349+
tr_debug("Register interface %d commissioner: %s", interface_id, trace_ipv6(border_router_address));
344350
//SET Border Router Locator
345351
memcpy(cur->thread_info->registered_commissioner.border_router_address, border_router_address, 16);
346352
cur->thread_info->registered_commissioner.commissioner_valid = true;

source/6LoWPAN/Thread/thread_management_api.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,7 @@ int thread_management_register(int8_t interface_id)
285285
this->interface_id = interface_id;
286286
this->set_response_cb_ptr = NULL;
287287
this->get_response_cb_ptr = NULL;
288-
289-
if (thread_management_get_remote_addr(this)) {
290-
ns_dyn_mem_free(this);
291-
return -1;
292-
}
288+
thread_management_get_remote_addr(this);
293289

294290
ns_list_add_to_start(&instance_list, this);
295291
if(this->native_interface) {

test/nanostack/unittest/stub/thread_meshcop_lib_stub.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ thread_meshcop_lib_stub_def thread_meshcop_lib_stub;
2222

2323
uint8_t *thread_meshcop_tlv_data_write(uint8_t *ptr, uint8_t type, uint16_t length, const uint8_t *data)
2424
{
25-
return NULL;
25+
return ptr;
2626
}
2727

2828
uint8_t *thread_meshcop_tlv_data_write_header(uint8_t *ptr, uint8_t type, uint16_t length)

test/nanostack/unittest/thread/thread_commissioning_api/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ TEST_SRC_FILES = \
2323
../../stub/protocol_core_stub.c \
2424
../../stub/protocol_6lowpan_stub.c \
2525
../../stub/thread_common_stub.c \
26+
../../stub/address_stub.c \
27+
../../stub/randLIB_stub.c \
28+
../../stub/thread_meshcop_lib_stub.c \
29+
2630

2731
include ../../MakefileWorker.mk
2832

test/nanostack/unittest/thread/thread_commissioning_api/thread_commissioning_apitest.cpp

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,11 @@ TEST(thread_commissioning_api, test_commissioning_device_add_and_remove)
3838
TEST(thread_commissioning_api, test_commissioning_device_add)
3939
{
4040
CHECK(test_commissioning_device_add());
41-
}
41+
}
4242

4343
TEST(thread_commissioning_api, test_commissioning_device_delete)
4444
{
4545
CHECK(test_commissioning_device_delete());
46-
}
47-
48-
TEST(thread_commissioning_api, test_commissioning_register_twice)
49-
{
50-
CHECK(test_commissioning_register_twice());
5146
}
5247

5348
TEST(thread_commissioning_api, test_thread_commissioning_petition_start)
@@ -69,11 +64,6 @@ TEST(thread_commissioning_api, test_thread_commissioning_application_provision_c
6964
CHECK(test_thread_commissioning_application_provision_cb());
7065
}
7166

72-
TEST(thread_commissioning_api, test_thread_commissioning_finalisation_req_recv_cb)
73-
{
74-
CHECK(test_thread_commissioning_finalisation_req_recv_cb());
75-
}
76-
7767
TEST(thread_commissioning_api, test_thread_commissioning_rx_receive_cb)
7868
{
7969
CHECK(test_thread_commissioning_rx_receive_cb());
@@ -82,10 +72,6 @@ TEST(thread_commissioning_api, test_thread_commissioning_native_commissioner_sta
8272
{
8373
CHECK(test_thread_commissioning_native_commissioner_start());
8474
}
85-
TEST(thread_commissioning_api, test_thread_commissioning_native_commissioner_connect)
86-
{
87-
CHECK(test_thread_commissioning_native_commissioner_connect());
88-
}
8975

9076

9177

0 commit comments

Comments
 (0)