diff --git a/core/net/mac/tsch/README.md b/core/net/mac/tsch/README.md index fc07f4007..143bc0482 100644 --- a/core/net/mac/tsch/README.md +++ b/core/net/mac/tsch/README.md @@ -42,6 +42,7 @@ It has been tested on the following platforms: * Zolertia Zoul (`zoul`, tested on hardware) * OpenMote-CC2538 (`openmote-cc2538`, tested on hardware) * CC2650 (`srf06-cc26xx`, tested on hardware) + * Cooja mote (`cooja`, tested with cooja) This implementation was present at the ETSI Plugtest event in Prague in July 2015, and did successfully inter-operate with all @@ -83,7 +84,7 @@ Orchestra is implemented in: A simple TSCH+RPL example is included under `examples/ipv6/rpl-tsch`. To use TSCH, first make sure your platform supports it. -Currently, `jn516x`, `sky`, `z1`, `cc2538dk`, `zoul`, `openmote-cc2538`, and `srf06-cc26xx` are the supported platforms. +Currently, `jn516x`, `sky`, `z1`, `cc2538dk`, `zoul`, `openmote-cc2538`, `srf06-cc26xx`, and `cooja` are the supported platforms. To add your own, we refer the reader to the next section. To add TSCH to your application, first include the TSCH module from your makefile with: @@ -179,7 +180,7 @@ Instead, TSCH will poll the driver for incoming packets, from interrupt, exactly TSCH will check when initializing (in `tsch_init`) that the radio driver supports all required features, namely: * get and set Rx mode (`RADIO_PARAM_RX_MODE`) as follows: - * enable address filtering with `RADIO_RX_MODE_ADDRESS_FILTER` + * disable address filtering with `RADIO_RX_MODE_ADDRESS_FILTER` * disable auto-ack with `RADIO_RX_MODE_AUTOACK` * enable poll mode with `RADIO_RX_MODE_POLL_MODE` * get and set Tx mode (`RADIO_PARAM_TX_MODE`) as follows: diff --git a/examples/ipv6/rpl-tsch/node.c b/examples/ipv6/rpl-tsch/node.c index a49540f7a..108308988 100644 --- a/examples/ipv6/rpl-tsch/node.c +++ b/examples/ipv6/rpl-tsch/node.c @@ -170,15 +170,21 @@ PROCESS_THREAD(node_process, ev, data) static enum { role_6ln, role_6dr, role_6dr_sec } node_role; node_role = role_6ln; + int coordinator_candidate = 0; + +#ifdef CONTIKI_TARGET_Z1 /* Set node with MAC address c1:0c:00:00:00:00:01 as coordinator, * convenient in cooja for regression tests using z1 nodes * */ - -#ifdef CONTIKI_TARGET_Z1 extern unsigned char node_mac[8]; unsigned char coordinator_mac[8] = { 0xc1, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; - if(memcmp(node_mac, coordinator_mac, 8) == 0) { + coordinator_candidate = (memcmp(node_mac, coordinator_mac, 8) == 0); +#elif CONTIKI_TARGET_COOJA + coordinator_candidate = (node_id == 1); +#endif + + if(coordinator_candidate) { if(LLSEC802154_ENABLED) { node_role = role_6dr_sec; } else { @@ -187,7 +193,6 @@ PROCESS_THREAD(node_process, ev, data) } else { node_role = role_6ln; } -#endif #if CONFIG_VIA_BUTTON { diff --git a/platform/cooja/rtimer-arch.h b/platform/cooja/rtimer-arch.h index 390e1ac56..ffd23c824 100644 --- a/platform/cooja/rtimer-arch.h +++ b/platform/cooja/rtimer-arch.h @@ -38,8 +38,9 @@ #define RTIMER_ARCH_SECOND UINT64_C(1000000) -#define US_TO_RTIMERTICKS(US) (US) -#define RTIMERTICKS_TO_US(T) (T) +#define US_TO_RTIMERTICKS(US) (US) +#define RTIMERTICKS_TO_US(T) (T) +#define RTIMERTICKS_TO_US_64(T) (T) rtimer_clock_t rtimer_arch_now(void); int rtimer_arch_check(void);