Merge pull request #3736 from karsev/thread_config_update

Thread config update
pull/3833/head
Sam Grove 2017-02-23 10:18:48 -06:00 committed by GitHub
commit 3642c3b226
3 changed files with 78 additions and 101 deletions

View File

@ -11,14 +11,17 @@
"6lowpan-nd-psk-key": "{0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}",
"6lowpan-nd-sec-level": 5,
"6lowpan-nd-device-type": "NET_6LOWPAN_ROUTER",
"thread-pskd": "\"Secret password\"",
"thread-pskd": "\"abcdefghijklmno\"",
"thread-config-channel-mask": "0x7fff800",
"thread-config-channel-page": 0,
"thread-config-channel": 12,
"thread-config-panid": "0xDEFA",
"thread-master-key": "{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}",
"thread-config-ml-prefix": "{0xfd, 0x00, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00}",
"thread-config-pskc": "{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}",
"thread-config-channel": 22,
"thread-config-panid": "0x0700",
"thread-config-network-name": "\"Thread Network\"",
"thread-config-commissioning-dataset-timestamp": "0x00010000",
"thread-config-extended-panid": "{0xf1, 0xb5, 0xa1, 0xb2,0xc4, 0xd5, 0xa1, 0xbd }",
"thread-master-key": "{0x10, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}",
"thread-config-ml-prefix": "{0xfd, 0x0, 0x0d, 0xb8, 0x0, 0x0, 0x0, 0x0}",
"thread-config-pskc": "{0xc8, 0xa6, 0x2e, 0xae, 0xf3, 0x68, 0xf3, 0x46, 0xa9, 0x9e, 0x57, 0x85, 0x98, 0x9d, 0x1c, 0xd0}",
"thread-device-type": "MESH_DEVICE_TYPE_THREAD_ROUTER"
}
}

View File

@ -22,9 +22,7 @@
extern "C" {
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_HEAP_SIZE
#define MBED_MESH_API_HEAP_SIZE YOTTA_CFG_MBED_MESH_API_HEAP_SIZE
#elif defined MBED_CONF_MBED_MESH_API_HEAP_SIZE
#if defined MBED_CONF_MBED_MESH_API_HEAP_SIZE
#define MBED_MESH_API_HEAP_SIZE MBED_CONF_MBED_MESH_API_HEAP_SIZE
#else
#define MBED_MESH_API_HEAP_SIZE 32500
@ -42,59 +40,45 @@ extern "C" {
* Possible channels are 0,1,2,3,4,5,6,9,10, see arm_hal_phy.h for details
*/
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE
#else
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_PAGE 0
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL
#else
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL 0
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK MBED_CONF_MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK
#elif defined MBED_MESH_API_6LOWPAN_ND_CHANNEL
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK (1<<MBED_MESH_API_6LOWPAN_ND_CHANNEL)
#else
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK (1<<12) // Why 12? Why not default channel value?
#define MBED_MESH_API_6LOWPAN_ND_CHANNEL_MASK (1<<12)
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE
#define MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE
#define MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE
#else
#define MBED_MESH_API_6LOWPAN_ND_SECURITY_MODE NONE
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID
#else
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY_ID 1
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_PSK_KEY
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_PSK_KEY
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY MBED_CONF_MBED_MESH_API_6LOWPAN_ND_PSK_KEY
#else
#define MBED_MESH_API_6LOWPAN_ND_PSK_KEY {0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL
#define MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL YOTTA_CFG_MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL
#elif defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL
#if defined MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL
#define MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL MBED_CONF_MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL
#else
#define MBED_MESH_API_6LOWPAN_ND_SEC_LEVEL 5
@ -108,82 +92,86 @@ extern "C" {
/* Thread configuration */
// PSKd, must be longer than 6
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_PSKD
#define MBED_MESH_API_THREAD_PSKD YOTTA_CFG_MBED_MESH_API_THREAD_PSKD
#elif defined MBED_CONF_MBED_MESH_API_THREAD_PSKD
#if defined MBED_CONF_MBED_MESH_API_THREAD_PSKD
#define MBED_MESH_API_THREAD_PSKD MBED_CONF_MBED_MESH_API_THREAD_PSKD
#else
#define MBED_MESH_API_THREAD_PSKD "Secret password"
#define MBED_MESH_API_THREAD_PSKD "abcdefghijklmno"
#endif
// Operating mode, values: Router, SED
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_DEVICE_TYPE
#define MBED_MESH_API_THREAD_DEVICE_TYPE YOTTA_CFG_MBED_MESH_API_THREAD_DEVICE_TYPE
#elif defined MBED_CONF_MBED_MESH_API_THREAD_DEVICE_TYPE
#if defined MBED_CONF_MBED_MESH_API_THREAD_DEVICE_TYPE
#define MBED_MESH_API_THREAD_DEVICE_TYPE MBED_CONF_MBED_MESH_API_THREAD_DEVICE_TYPE
#else
#define MBED_MESH_API_THREAD_DEVICE_TYPE MESH_DEVICE_TYPE_THREAD_ROUTER
#endif
// channel mask, enable all channels
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK
#else
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_MASK 0x07fff800
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE
#else
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL_PAGE 0
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_CHANNEL
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL MBED_CONF_MBED_MESH_API_THREAD_CONFIG_CHANNEL
#else
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL 12
#define MBED_MESH_API_THREAD_CONFIG_CHANNEL 22
#endif
// Default PANID
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_PANID
#define MBED_MESH_API_THREAD_CONFIG_PANID YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_PANID
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PANID
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PANID
#define MBED_MESH_API_THREAD_CONFIG_PANID MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PANID
#else
#define MBED_MESH_API_THREAD_CONFIG_PANID 0xDEFA // 57082
#define MBED_MESH_API_THREAD_CONFIG_PANID 0x0700
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_MASTER_KEY
#define MBED_MESH_API_THREAD_MASTER_KEY YOTTA_CFG_MBED_MESH_API_THREAD_MASTER_KEY
#elif defined MBED_CONF_MBED_MESH_API_THREAD_MASTER_KEY
// extended PANID
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID
#define MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID MBED_CONF_MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID
#else
#define MBED_MESH_API_THREAD_CONFIG_EXTENDED_PANID {0xf1, 0xb5, 0xa1, 0xb2,0xc4, 0xd5, 0xa1, 0xbd }
#endif
// network name
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME
#define MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME MBED_CONF_MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME
#else
#define MBED_MESH_API_THREAD_CONFIG_NETWORK_NAME "Thread Network"
#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
#else
#define MBED_MESH_API_THREAD_CONFIG_COMMISSIONING_DATASET_TIMESTAMP 0X1
#endif
#if defined MBED_CONF_MBED_MESH_API_THREAD_MASTER_KEY
#define MBED_MESH_API_THREAD_MASTER_KEY MBED_CONF_MBED_MESH_API_THREAD_MASTER_KEY
#else
#define MBED_MESH_API_THREAD_MASTER_KEY {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}
#define MBED_MESH_API_THREAD_MASTER_KEY {0x10, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_ML_PREFIX
#define MBED_MESH_API_THREAD_CONFIG_ML_PREFIX YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_ML_PREFIX
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_ML_PREFIX
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_ML_PREFIX
#define MBED_MESH_API_THREAD_CONFIG_ML_PREFIX MBED_CONF_MBED_MESH_API_THREAD_CONFIG_ML_PREFIX
#else
#define MBED_MESH_API_THREAD_CONFIG_ML_PREFIX {0xfd, 0x00, 0x0d, 0xb8, 0x00, 0x00, 0x00, 0x00}
#define MBED_MESH_API_THREAD_CONFIG_ML_PREFIX {0xfd, 0x0, 0x0d, 0xb8, 0x0, 0x0, 0x0, 0x0}
#endif
#ifdef YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_PSKC
#define MBED_MESH_API_THREAD_CONFIG_PSKC YOTTA_CFG_MBED_MESH_API_THREAD_CONFIG_PSKC
#elif defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PSKC
#if defined MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PSKC
#define MBED_MESH_API_THREAD_CONFIG_PSKC MBED_CONF_MBED_MESH_API_THREAD_CONFIG_PSKC
#else
#define MBED_MESH_API_THREAD_CONFIG_PSKC {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}
#define MBED_MESH_API_THREAD_CONFIG_PSKC {0xc8, 0xa6, 0x2e, 0xae, 0xf3, 0x68, 0xf3, 0x46, 0xa9, 0x9e, 0x57, 0x85, 0x98, 0x9d, 0x1c, 0xd0}
#endif
#ifdef __cplusplus
}
#endif
#endif /* __INCLUDE_STATIC_CONFIG__ */
#endif /* __INCLUDE_STATIC_CONFIG__ */

View File

@ -25,6 +25,7 @@
#include "include/thread_tasklet.h"
#include "include/static_config.h"
#include "include/mesh_system.h"
#include <mbed_assert.h>
#include "ns_event_loop.h"
// For tracing we need to define flag, have include and define group
@ -228,74 +229,59 @@ void thread_tasklet_configure_and_connect_to_network(void)
NET_6LOWPAN_THREAD);
// 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);
// channel
if (MBED_MESH_API_THREAD_CONFIG_CHANNEL > 27) {
tr_error("Bad channel %d", MBED_MESH_API_THREAD_CONFIG_CHANNEL);
return;
}
thread_tasklet_data_ptr->link_config.rfChannel = MBED_MESH_API_THREAD_CONFIG_CHANNEL;
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;
if (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));
} else {
tr_error("Mesh prefix, must be 8 hex chars: %s", mesh_local_prefix);
return;
}
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;
if (sizeof(master_key) == 16) {
memcpy(thread_tasklet_data_ptr->link_config.master_key, master_key, 16);
TRACE_DETAIL("Master key: %s", trace_array(master_key, 16));
} else {
tr_error("Master key must be 16 hex chars: %s", master_key);
return;
}
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;
if (sizeof(PSKc) == 16) {
memcpy(thread_tasklet_data_ptr->link_config.PSKc, PSKc, 16);
TRACE_DETAIL("PSKc: %s", trace_array(PSKc, 16));
} else {
tr_error("PSKc must be 16 hex chars: %s", PSKc);
return;
}
MBED_ASSERT(sizeof(PSKc) == 16);
memcpy(thread_tasklet_data_ptr->link_config.PSKc, PSKc, 16);
// PSKd
const char PSKd[] = MBED_MESH_API_THREAD_PSKD;
if (sizeof(PSKd) < 7) {
tr_error("PSKd length must be > 6: %s", PSKd);
return;
}
MBED_ASSERT(sizeof(PSKd) > 5 && sizeof(PSKd) < 33);
char *dyn_buf = ns_dyn_mem_alloc(sizeof(PSKd));
strcpy(dyn_buf, PSKd);
ns_dyn_mem_free(device_configuration.PSKd_ptr);
device_configuration.PSKd_ptr = (uint8_t*)dyn_buf;
device_configuration.PSKd_len = sizeof(PSKd) - 1;
TRACE_DETAIL("PSKd: %s", device_configuration.PSKd_ptr);
thread_tasklet_data_ptr->link_config.key_rotation = 3600;
thread_tasklet_data_ptr->link_config.key_sequence = 0;