mirror of https://github.com/ARMmbed/mbed-os.git
thread-static-link-config paramter added
when false thread has empty link config must join the network by commissioningpull/3987/head
parent
cc58a7fb0c
commit
f359b60c2a
|
|
@ -12,6 +12,7 @@
|
|||
"6lowpan-nd-sec-level": 5,
|
||||
"6lowpan-nd-device-type": "NET_6LOWPAN_ROUTER",
|
||||
"thread-pskd": "\"abcdefghijklmno\"",
|
||||
"thread-static-link-config": true,
|
||||
"thread-config-channel-mask": "0x7fff800",
|
||||
"thread-config-channel-page": 0,
|
||||
"thread-config-channel": 22,
|
||||
|
|
|
|||
|
|
@ -145,6 +145,13 @@ extern "C" {
|
|||
#define MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME "Thread Network"
|
||||
#endif
|
||||
|
||||
// is static config used?
|
||||
#if defined MBED_CONF_MBED_MESH_API_THREAD_STATIC_LINK_CONFIG
|
||||
#define MBED_MESH_API_THREAD_STATIC_LINK_CONFIG MBED_CONF_MBED_MESH_API_THREAD_STATIC_LINK_CONFIG
|
||||
#else
|
||||
#define MBED_MESH_API_THREAD_STATIC_LINK_CONFIG 0X1
|
||||
#endif
|
||||
|
||||
// commissioning dataset timestamp
|
||||
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP
|
||||
#define MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP MBED_CONF_MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP
|
||||
|
|
|
|||
|
|
@ -209,6 +209,54 @@ void thread_tasklet_parse_network_event(arm_event_s *event)
|
|||
}
|
||||
}
|
||||
|
||||
void read_link_configuration() {
|
||||
|
||||
memcpy(thread_tasklet_data_ptr->link_config.name, "Arm Powered Core", 16);
|
||||
|
||||
thread_tasklet_data_ptr->link_config.panId = MBED_MESH_API_THREAD_CONFIG_PANID;
|
||||
TRACE_DETAIL("PANID %x", thread_tasklet_data_ptr->link_config.panId);
|
||||
|
||||
thread_tasklet_data_ptr->link_config.rfChannel = MBED_MESH_API_THREAD_CONFIG_CHANNEL;
|
||||
TRACE_DETAIL("channel: %d", thread_tasklet_data_ptr->link_config.rfChannel);
|
||||
|
||||
// Mesh prefix
|
||||
const uint8_t mesh_local_prefix[] = MBED_MESH_API_THREAD_CONFIG_ML_PREFIX;
|
||||
MBED_ASSERT(sizeof(mesh_local_prefix) == 8);
|
||||
|
||||
memcpy(thread_tasklet_data_ptr->link_config.mesh_local_ula_prefix, mesh_local_prefix, 8);
|
||||
TRACE_DETAIL("Mesh prefix: %s", trace_array(mesh_local_prefix, 8));
|
||||
|
||||
// Master Key
|
||||
const uint8_t master_key[] = MBED_MESH_API_THREAD_MASTER_KEY;
|
||||
MBED_ASSERT(sizeof(master_key) == 16);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.master_key, master_key, 16);
|
||||
|
||||
// PSKc
|
||||
const uint8_t PSKc[] = MBED_MESH_API_THREAD_CONFIG_PSKC;
|
||||
MBED_ASSERT(sizeof(PSKc) == 16);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.PSKc, PSKc, 16);
|
||||
|
||||
thread_tasklet_data_ptr->link_config.key_rotation = 3600;
|
||||
thread_tasklet_data_ptr->link_config.key_sequence = 0;
|
||||
|
||||
// Beacon data setting
|
||||
thread_tasklet_data_ptr->link_config.Protocol_id = 0x03;
|
||||
thread_tasklet_data_ptr->link_config.version = 1;
|
||||
memcpy(thread_tasklet_data_ptr->link_config.extended_random_mac, device_configuration.eui64, 8);
|
||||
thread_tasklet_data_ptr->link_config.extended_random_mac[0] |= 0x02;
|
||||
|
||||
// network name
|
||||
MBED_ASSERT(strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME) > 0 && strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME) < 17);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.name, MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME, strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME));
|
||||
|
||||
thread_tasklet_data_ptr->link_config.timestamp = MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP;
|
||||
|
||||
// extended pan-id
|
||||
const uint8_t extented_panid[] = MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID;
|
||||
MBED_ASSERT(sizeof(extented_panid) == 8);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.extented_pan_id, extented_panid, sizeof(extented_panid));
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Configure mesh network
|
||||
*
|
||||
|
|
@ -226,53 +274,14 @@ void thread_tasklet_configure_and_connect_to_network(void)
|
|||
arm_nwk_interface_configure_6lowpan_bootstrap_set(
|
||||
thread_tasklet_data_ptr->nwk_if_id,
|
||||
thread_tasklet_data_ptr->operating_mode,
|
||||
NET_6LOWPAN_THREAD);
|
||||
|
||||
// Link configuration
|
||||
thread_tasklet_data_ptr->link_config.panId = MBED_MESH_API_THREAD_CONFIG_PANID;
|
||||
TRACE_DETAIL("PANID %x", thread_tasklet_data_ptr->link_config.panId);
|
||||
|
||||
thread_tasklet_data_ptr->link_config.rfChannel = MBED_MESH_API_THREAD_CONFIG_CHANNEL;
|
||||
NET_6LOWPAN_THREAD);
|
||||
|
||||
thread_tasklet_data_ptr->channel_list.channel_page = (channel_page_e)MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE;
|
||||
thread_tasklet_data_ptr->channel_list.channel_mask[0] = MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK;
|
||||
TRACE_DETAIL("channel: %d", thread_tasklet_data_ptr->link_config.rfChannel);
|
||||
|
||||
TRACE_DETAIL("channel page: %d", thread_tasklet_data_ptr->channel_list.channel_page);
|
||||
TRACE_DETAIL("channel mask: %d", (int)thread_tasklet_data_ptr->channel_list.channel_mask[0]);
|
||||
|
||||
// Beacon data setting
|
||||
thread_tasklet_data_ptr->link_config.Protocol_id = 0x03;
|
||||
thread_tasklet_data_ptr->link_config.version = 1;
|
||||
memcpy(thread_tasklet_data_ptr->link_config.extended_random_mac, device_configuration.eui64, 8);
|
||||
thread_tasklet_data_ptr->link_config.extended_random_mac[0] |= 0x02;
|
||||
|
||||
// network name
|
||||
MBED_ASSERT(strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME) > 0 && strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME) < 17);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.name, MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME, strlen(MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME));
|
||||
|
||||
thread_tasklet_data_ptr->link_config.timestamp = MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP;
|
||||
|
||||
// extended pan-id
|
||||
const uint8_t extented_panid[] = MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID;
|
||||
MBED_ASSERT(sizeof(extented_panid) == 8);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.extented_pan_id, extented_panid, sizeof(extented_panid));
|
||||
|
||||
// Mesh prefix
|
||||
const uint8_t mesh_local_prefix[] = MBED_MESH_API_THREAD_CONFIG_ML_PREFIX;
|
||||
MBED_ASSERT(sizeof(mesh_local_prefix) == 8);
|
||||
|
||||
memcpy(thread_tasklet_data_ptr->link_config.mesh_local_ula_prefix, mesh_local_prefix, 8);
|
||||
TRACE_DETAIL("Mesh prefix: %s", trace_array(mesh_local_prefix, 8));
|
||||
|
||||
// Master Key
|
||||
const uint8_t master_key[] = MBED_MESH_API_THREAD_MASTER_KEY;
|
||||
MBED_ASSERT(sizeof(master_key) == 16);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.master_key, master_key, 16);
|
||||
|
||||
// PSKc
|
||||
const uint8_t PSKc[] = MBED_MESH_API_THREAD_CONFIG_PSKC;
|
||||
MBED_ASSERT(sizeof(PSKc) == 16);
|
||||
memcpy(thread_tasklet_data_ptr->link_config.PSKc, PSKc, 16);
|
||||
|
||||
TRACE_DETAIL("channel mask: %d", (int)thread_tasklet_data_ptr->channel_list.channel_mask[0]);
|
||||
|
||||
// PSKd
|
||||
const char PSKd[] = MBED_MESH_API_THREAD_PSKD;
|
||||
MBED_ASSERT(sizeof(PSKd) > 5 && sizeof(PSKd) < 33);
|
||||
|
|
@ -282,14 +291,23 @@ void thread_tasklet_configure_and_connect_to_network(void)
|
|||
ns_dyn_mem_free(device_configuration.PSKd_ptr);
|
||||
device_configuration.PSKd_ptr = (uint8_t*)dyn_buf;
|
||||
device_configuration.PSKd_len = sizeof(PSKd) - 1;
|
||||
|
||||
thread_tasklet_data_ptr->link_config.key_rotation = 3600;
|
||||
thread_tasklet_data_ptr->link_config.key_sequence = 0;
|
||||
|
||||
thread_management_node_init(thread_tasklet_data_ptr->nwk_if_id,
|
||||
|
||||
bool is_static_config = MBED_MESH_API_THREAD_STATIC_LINK_CONFIG;
|
||||
|
||||
if(is_static_config) {
|
||||
read_link_configuration();
|
||||
tr_info("using static link configuration");
|
||||
thread_management_node_init(thread_tasklet_data_ptr->nwk_if_id,
|
||||
&thread_tasklet_data_ptr->channel_list,
|
||||
&device_configuration,
|
||||
&thread_tasklet_data_ptr->link_config);
|
||||
}
|
||||
else {
|
||||
thread_management_node_init(thread_tasklet_data_ptr->nwk_if_id,
|
||||
&thread_tasklet_data_ptr->channel_list,
|
||||
&device_configuration,
|
||||
NULL);
|
||||
}
|
||||
|
||||
status = arm_nwk_interface_up(thread_tasklet_data_ptr->nwk_if_id);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue