From 490192e88fe3e34571df5065aace5c70bc98d9c7 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 23 Apr 2015 15:52:00 +0200 Subject: [PATCH 1/3] tests/driver_xbee: added output after init --- tests/driver_xbee/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/driver_xbee/main.c b/tests/driver_xbee/main.c index d1ee242c19..5f53d68335 100644 --- a/tests/driver_xbee/main.c +++ b/tests/driver_xbee/main.c @@ -111,6 +111,7 @@ int main(void) } /* start the shell */ + puts("Initialization OK, starting shell now"); shell_init(&shell, NULL, SHELL_BUFSIZE, shell_read, shell_put); shell_run(&shell); From 7b29947b6d65bd8cb4843155579f07322e1fdb29 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 23 Apr 2015 15:52:54 +0200 Subject: [PATCH 2/3] drivers/xbee: optimized addr generation from CPUID --- drivers/xbee/xbee.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/xbee/xbee.c b/drivers/xbee/xbee.c index 347119d950..6d1480c2cc 100644 --- a/drivers/xbee/xbee.c +++ b/drivers/xbee/xbee.c @@ -468,14 +468,10 @@ int xbee_init(xbee_t *dev, uart_t uart, uint32_t baudrate, /* get CPU ID */ uint8_t id[CPUID_ID_LEN]; cpuid_get(id); - /* compress to 2 byte */ + /* set address */ memset(dev->addr_short, 0, 2); - int i; - for (i = 0; i < (CPUID_ID_LEN / 2); i++) { - dev->addr_short[0] ^= id[i]; - } - for (; i < CPUID_ID_LEN; i++) { - dev->addr_short[1] ^= id[i]; + for (int i = 0; i < CPUID_ID_LEN; i++) { + dev->addr_short[i & 0x01] ^= id[i]; } #else dev->addr_short[0] = (uint8_t)(XBEE_DEFAULT_SHORT_ADDR >> 8); From b48561785ee2ba204d7fa68f855ee92f77ad4c2e Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 23 Apr 2015 16:30:07 +0200 Subject: [PATCH 3/3] drivers/xbee: added getter for addr_len and src_len --- drivers/xbee/xbee.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/xbee/xbee.c b/drivers/xbee/xbee.c index 6d1480c2cc..5c31f24e90 100644 --- a/drivers/xbee/xbee.c +++ b/drivers/xbee/xbee.c @@ -329,17 +329,6 @@ static int _set_channel(xbee_t *dev, uint8_t *val, size_t len) return -EINVAL; } -static int _get_max_packet_size(xbee_t *dev, uint16_t *val, size_t max) -{ - if (max < 2) { - return -EOVERFLOW; - } - - *val = XBEE_MAX_PAYLOAD_LENGTH; - - return 2; -} - static int _get_panid(xbee_t *dev, uint8_t *val, size_t max) { uint8_t cmd[2]; @@ -616,10 +605,21 @@ static int _get(ng_netdev_t *netdev, ng_netconf_opt_t opt, return _get_addr_short(dev, (uint8_t *)value, max_len); case NETCONF_OPT_ADDRESS_LONG: return _get_addr_long(dev, (uint8_t *)value, max_len); + case NETCONF_OPT_ADDR_LEN: + case NETCONF_OPT_SRC_LEN: + if (max_len < sizeof(uint16_t)) { + return -EOVERFLOW; + } + *((uint16_t *)value) = 2; + return sizeof(uint16_t); case NETCONF_OPT_CHANNEL: return _get_channel(dev, (uint8_t *)value, max_len); case NETCONF_OPT_MAX_PACKET_SIZE: - return _get_max_packet_size(dev, (uint16_t *)value, max_len); + if (max_len < sizeof(uint16_t)) { + return -EOVERFLOW; + } + *((uint16_t *)value) = XBEE_MAX_PAYLOAD_LENGTH; + return sizeof(uint16_t); case NETCONF_OPT_NID: return _get_panid(dev, (uint8_t *)value, max_len); case NETCONF_OPT_PROTO: