diff --git a/.gitignore b/.gitignore index 2f8a3d89e..43537b136 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ symbols.* Makefile.target doc/html patches-* +tools/tunslip tools/tunslip6 build tools/coffee-manager/build/ diff --git a/.travis.yml b/.travis.yml index 7994153e8..edd360a42 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,9 +17,8 @@ before_script: | tar xjf - -C /tmp/ && sudo cp -f -r /tmp/arm-2008q3/* /usr/ && rm -rf /tmp/arm-2008q3 && arm-none-eabi-gcc --version || true" ## Install RL78 GCC chain (following the instructions in platform/eval-adf7xxxmb4z/README.md) - - "sudo apt-get install git make gcc libc-dev multiarch-support libncurses5:i386 zlib1g:i386" - - "wget https://dl.dropboxusercontent.com/u/60522916/gnurl78-v13.02-elf_1-2_i386.deb" - - "sudo dpkg -i gnurl78*.deb" + - "sudo apt-get install libncurses5:i386 zlib1g:i386 || true" + - "wget http://adamdunkels.github.io/contiki-fork/gnurl78-v13.02-elf_1-2_i386.deb && sudo dpkg -i gnurl78*.deb || true" ## Install SDCC from a purpose-built bundle - "[ ${BUILD_ARCH:-0} = 8051 ] && curl -s \ diff --git a/Makefile.include b/Makefile.include index 014dbed41..4b1443a13 100644 --- a/Makefile.include +++ b/Makefile.include @@ -183,7 +183,7 @@ clean: -rm -rf $(OBJECTDIR) distclean: clean - -rm -rf $(CONTIKI_PROJECT).$(TARGET) + -rm -f ${addsuffix .$(TARGET),$(CONTIKI_PROJECT)} -include $(CONTIKI)/platform/$(TARGET)/Makefile.customrules-$(TARGET) diff --git a/core/cfs/cfs-coffee.c b/core/cfs/cfs-coffee.c index d760199a7..f4e7a26c1 100644 --- a/core/cfs/cfs-coffee.c +++ b/core/cfs/cfs-coffee.c @@ -651,7 +651,7 @@ reserve(const char *name, coffee_page_t pages, } memset(&hdr, 0, sizeof(hdr)); - memcpy(hdr.name, name, sizeof(hdr.name) - 1); + strncpy(hdr.name, name, sizeof(hdr.name) - 1); hdr.max_pages = pages; hdr.flags = HDR_FLAG_ALLOCATED | flags; write_header(&hdr, page); diff --git a/core/dev/leds.c b/core/dev/leds.c index 1f8dcfa34..c815e100d 100644 --- a/core/dev/leds.c +++ b/core/dev/leds.c @@ -34,54 +34,58 @@ #include "sys/clock.h" #include "sys/energest.h" -static unsigned char leds, invert; +static unsigned char leds; /*---------------------------------------------------------------------------*/ static void -show_leds(unsigned char changed) +show_leds(unsigned char new_leds) { + unsigned char changed; + changed = leds ^ new_leds; + leds = new_leds; + if(changed & LEDS_GREEN) { /* Green did change */ - if((invert ^ leds) & LEDS_GREEN) { + if(leds & LEDS_GREEN) { ENERGEST_ON(ENERGEST_TYPE_LED_GREEN); } else { ENERGEST_OFF(ENERGEST_TYPE_LED_GREEN); } } if(changed & LEDS_YELLOW) { - if((invert ^ leds) & LEDS_YELLOW) { + if(leds & LEDS_YELLOW) { ENERGEST_ON(ENERGEST_TYPE_LED_YELLOW); } else { ENERGEST_OFF(ENERGEST_TYPE_LED_YELLOW); } } if(changed & LEDS_RED) { - if((invert ^ leds) & LEDS_RED) { + if(leds & LEDS_RED) { ENERGEST_ON(ENERGEST_TYPE_LED_RED); } else { ENERGEST_OFF(ENERGEST_TYPE_LED_RED); } } - leds_arch_set(leds ^ invert); + leds_arch_set(leds); } /*---------------------------------------------------------------------------*/ void leds_init(void) { leds_arch_init(); - leds = invert = 0; + leds = 0; } /*---------------------------------------------------------------------------*/ void leds_blink(void) { - /* Blink all leds. */ - unsigned char inv; - inv = ~(leds ^ invert); - leds_invert(inv); + /* Blink all leds that were initially off. */ + unsigned char blink; + blink = ~leds; + leds_toggle(blink); clock_delay(400); - leds_invert(inv); + leds_toggle(blink); } /*---------------------------------------------------------------------------*/ unsigned char @@ -90,33 +94,26 @@ leds_get(void) { } /*---------------------------------------------------------------------------*/ void +leds_set(unsigned char ledv) +{ + show_leds(ledv); +} +/*---------------------------------------------------------------------------*/ +void leds_on(unsigned char ledv) { - unsigned char changed; - changed = (~leds) & ledv; - leds |= ledv; - show_leds(changed); + show_leds(leds | ledv); } /*---------------------------------------------------------------------------*/ void leds_off(unsigned char ledv) { - unsigned char changed; - changed = leds & ledv; - leds &= ~ledv; - show_leds(changed); + show_leds(leds & ~ledv); } /*---------------------------------------------------------------------------*/ void leds_toggle(unsigned char ledv) { - leds_invert(ledv); -} -/*---------------------------------------------------------------------------*/ -/* invert the invert register using the leds parameter */ -void -leds_invert(unsigned char ledv) { - invert = invert ^ ledv; - show_leds(ledv); + show_leds(leds ^ ledv); } /*---------------------------------------------------------------------------*/ diff --git a/core/dev/leds.h b/core/dev/leds.h index b3f2adf70..839852c41 100644 --- a/core/dev/leds.h +++ b/core/dev/leds.h @@ -77,13 +77,13 @@ void leds_blink(void); #endif /* LEDS_CONF_ALL */ /** - * Returns the current status of all leds (respects invert) + * Returns the current status of all leds */ unsigned char leds_get(void); +void leds_set(unsigned char leds); void leds_on(unsigned char leds); void leds_off(unsigned char leds); void leds_toggle(unsigned char leds); -void leds_invert(unsigned char leds); /** * Leds implementation diff --git a/core/lib/assert.h b/core/lib/assert.h index da9fd8f9b..3689a8b1d 100644 --- a/core/lib/assert.h +++ b/core/lib/assert.h @@ -28,9 +28,10 @@ * */ -#ifndef ASSERT_H -#define ASSERT_H +#ifndef ASSERT_H_ +#define ASSERT_H_ +#undef assert #ifdef NDEBUG #define assert(e) ((void)0) #else @@ -44,4 +45,4 @@ void _xassert(const char *, int); #define __CTASSERT(x, y) typedef char __assert ## y[(x) ? 1 : -1] #endif -#endif /* ASSERT_H */ +#endif /* ASSERT_H_ */ diff --git a/core/net/ipv6/sicslowpan.c b/core/net/ipv6/sicslowpan.c index cd55c7b51..e69bdd88b 100644 --- a/core/net/ipv6/sicslowpan.c +++ b/core/net/ipv6/sicslowpan.c @@ -1434,19 +1434,12 @@ output(const uip_lladdr_t *localdest) * needs to be fragmented or not. */ #define USE_FRAMER_HDRLEN 1 #if USE_FRAMER_HDRLEN - packetbuf_clear(); packetbuf_set_addr(PACKETBUF_ADDR_RECEIVER, &dest); - framer_hdrlen = NETSTACK_FRAMER.create(); + framer_hdrlen = NETSTACK_FRAMER.length(); if(framer_hdrlen < 0) { /* Framing failed, we assume the maximum header length */ framer_hdrlen = 21; } - packetbuf_clear(); - - /* We must set the max transmissions attribute again after clearing - the buffer. */ - packetbuf_set_attr(PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS, - SICSLOWPAN_MAX_MAC_TRANSMISSIONS); #else /* USE_FRAMER_HDRLEN */ framer_hdrlen = 21; #endif /* USE_FRAMER_HDRLEN */ diff --git a/core/net/mac/framer-802154.c b/core/net/mac/framer-802154.c index 47e53ec61..a0aea598b 100644 --- a/core/net/mac/framer-802154.c +++ b/core/net/mac/framer-802154.c @@ -87,7 +87,7 @@ is_broadcast_addr(uint8_t mode, uint8_t *addr) } /*---------------------------------------------------------------------------*/ static int -create(void) +create_frame(int type, int do_create) { frame802154_t params; int len; @@ -115,20 +115,24 @@ create(void) params.fcf.frame_version = FRAME802154_IEEE802154_2003; /* Increment and set the data sequence number. */ - if(packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO)) { + if(!do_create) { + /* Only length calculation - no sequence number is needed and + should not be consumed. */ + + } else if(packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO)) { params.seq = packetbuf_attr(PACKETBUF_ATTR_MAC_SEQNO); + } else { params.seq = mac_dsn++; packetbuf_set_attr(PACKETBUF_ATTR_MAC_SEQNO, params.seq); } -/* params.seq = packetbuf_attr(PACKETBUF_ATTR_PACKET_ID); */ /* Complete the addressing fields. */ /** \todo For phase 1 the addresses are all long. We'll need a mechanism in the rime attributes to tell the mac to use long or short for phase 2. */ - if(sizeof(linkaddr_t) == 2) { + if(LINKADDR_SIZE == 2) { /* Use short address mode if linkaddr size is short. */ params.fcf.src_addr_mode = FRAME802154_SHORTADDRMODE; } else { @@ -150,7 +154,7 @@ create(void) linkaddr_copy((linkaddr_t *)¶ms.dest_addr, packetbuf_addr(PACKETBUF_ADDR_RECEIVER)); /* Use short address mode if linkaddr size is small */ - if(sizeof(linkaddr_t) == 2) { + if(LINKADDR_SIZE == 2) { params.fcf.dest_addr_mode = FRAME802154_SHORTADDRMODE; } else { params.fcf.dest_addr_mode = FRAME802154_LONGADDRMODE; @@ -169,7 +173,11 @@ create(void) params.payload = packetbuf_dataptr(); params.payload_len = packetbuf_datalen(); len = frame802154_hdrlen(¶ms); - if(packetbuf_hdralloc(len)) { + if(!do_create) { + /* Only calculate header length */ + return len; + + } else if(packetbuf_hdralloc(len)) { frame802154_create(¶ms, packetbuf_hdrptr(), len); PRINTF("15.4-OUT: %2X", params.fcf.frame_type); @@ -184,6 +192,18 @@ create(void) } /*---------------------------------------------------------------------------*/ static int +hdr_length(void) +{ + return create_frame(FRAME802154_DATAFRAME, 0); +} +/*---------------------------------------------------------------------------*/ +static int +create(void) +{ + return create_frame(FRAME802154_DATAFRAME, 1); +} +/*---------------------------------------------------------------------------*/ +static int parse(void) { frame802154_t frame; @@ -218,5 +238,5 @@ parse(void) } /*---------------------------------------------------------------------------*/ const struct framer framer_802154 = { - create, parse + hdr_length, create, parse }; diff --git a/core/net/mac/framer-nullmac.c b/core/net/mac/framer-nullmac.c index b0af4b456..bec94eba5 100644 --- a/core/net/mac/framer-nullmac.c +++ b/core/net/mac/framer-nullmac.c @@ -55,6 +55,12 @@ struct nullmac_hdr { linkaddr_t sender; }; +/*---------------------------------------------------------------------------*/ +static int +hdr_length(void) +{ + return sizeof(struct nullmac_hdr); +} /*---------------------------------------------------------------------------*/ static int create(void) @@ -91,5 +97,5 @@ parse(void) } /*---------------------------------------------------------------------------*/ const struct framer framer_nullmac = { - create, parse + hdr_length, create, parse }; diff --git a/core/net/mac/framer.h b/core/net/mac/framer.h index 3204dc0c9..5ed419292 100644 --- a/core/net/mac/framer.h +++ b/core/net/mac/framer.h @@ -45,6 +45,7 @@ struct framer { + int (* length)(void); int (* create)(void); int (* parse)(void); diff --git a/core/net/packetbuf.h b/core/net/packetbuf.h index fe2c1dae3..ab84da8fe 100644 --- a/core/net/packetbuf.h +++ b/core/net/packetbuf.h @@ -434,7 +434,7 @@ void packetbuf_attr_copyfrom(struct packetbuf_attr *attrs, #define PACKETBUF_ATTR_BIT 1 #define PACKETBUF_ATTR_BYTE 8 -#define PACKETBUF_ADDRSIZE (sizeof(linkaddr_t) * PACKETBUF_ATTR_BYTE) +#define PACKETBUF_ADDRSIZE (LINKADDR_SIZE * PACKETBUF_ATTR_BYTE) struct packetbuf_attrlist { uint8_t type; diff --git a/core/net/rpl/rpl-conf.h b/core/net/rpl/rpl-conf.h index 0512591f5..3d6aa8b36 100644 --- a/core/net/rpl/rpl-conf.h +++ b/core/net/rpl/rpl-conf.h @@ -162,7 +162,7 @@ * Initial metric attributed to a link when the ETX is unknown */ #ifndef RPL_CONF_INIT_LINK_METRIC -#define RPL_INIT_LINK_METRIC 5 +#define RPL_INIT_LINK_METRIC 2 #else #define RPL_INIT_LINK_METRIC RPL_CONF_INIT_LINK_METRIC #endif diff --git a/cpu/avr/minileds.c b/cpu/avr/minileds.c index e708e6bbf..70694c5dc 100644 --- a/cpu/avr/minileds.c +++ b/cpu/avr/minileds.c @@ -58,8 +58,4 @@ leds_off(unsigned char leds) void leds_toggle(unsigned char leds) { - /* - * Synonym: void leds_invert(unsigned char leds); - */ - asm(".global leds_invert\nleds_invert:\n"); } diff --git a/cpu/cc2538/ieee-addr.c b/cpu/cc2538/ieee-addr.c index cb8c901bc..f45e4210d 100644 --- a/cpu/cc2538/ieee-addr.c +++ b/cpu/cc2538/ieee-addr.c @@ -49,10 +49,36 @@ ieee_addr_cpy_to(uint8_t *dst, uint8_t len) memcpy(dst, &ieee_addr_hc[8 - len], len); } else { - /* Reading from Info Page, we need to invert byte order */ + /* + * By default, we assume that the IEEE address is stored on flash using + * little-endian byte order. + * + * However, some SoCs ship with a different byte order, whereby the first + * four bytes are flipped with the four last ones. + * + * Using this address as an example: 00 12 4B 00 01 02 03 04 + * We expect it stored as: 04 03 02 01 00 4B 12 00 + * But it is also possible to encounter: 00 4B 12 00 04 03 02 01 + * + * Thus: read locations [3, 2, 1] and if we encounter the TI OUI, flip the + * order of the two 4-byte sequences. Each of the 4-byte sequences is still + * little-endian. + */ int i; - for(i = 0; i < len; i++) { - dst[i] = ((uint8_t *)IEEE_ADDR_LOCATION)[len - 1 - i]; + uint8_t oui_ti[3] = IEEE_ADDR_OUI_TI; + if(((uint8_t *)IEEE_ADDR_LOCATION)[3] == oui_ti[0] + && ((uint8_t *)IEEE_ADDR_LOCATION)[2] == oui_ti[1] + && ((uint8_t *)IEEE_ADDR_LOCATION)[1] == oui_ti[2]) { + for(i = 0; i < len / 2; i++) { + dst[i] = ((uint8_t *)IEEE_ADDR_LOCATION)[len / 2 - 1 - i]; + } + for(i = 0; i < len / 2; i++) { + dst[i + len / 2] = ((uint8_t *)IEEE_ADDR_LOCATION)[len - 1 - i]; + } + } else { + for(i = 0; i < len; i++) { + dst[i] = ((uint8_t *)IEEE_ADDR_LOCATION)[len - 1 - i]; + } } } diff --git a/cpu/cc2538/ieee-addr.h b/cpu/cc2538/ieee-addr.h index c7618c1e7..faeacdb8f 100644 --- a/cpu/cc2538/ieee-addr.h +++ b/cpu/cc2538/ieee-addr.h @@ -49,11 +49,27 @@ #include /*---------------------------------------------------------------------------*/ /** - * \name IEEE address locations + * \name TI OUI * @{ */ -#define IEEE_ADDR_LOCATION_PRIMARY 0x00280028 /**< IEEE address location */ -#define IEEE_ADDR_LOCATION_SECONDARY 0x0027FFCC /**< IEEE address location */ +#define IEEE_ADDR_OUI_TI { 0x00, 0x12, 0x4B } /**< TI OUI */ +/** @} */ +/*---------------------------------------------------------------------------*/ +/** + * \name IEEE address locations + * + * The address of the secondary location can be configured by the platform + * or example + * + * @{ + */ +#define IEEE_ADDR_LOCATION_PRIMARY 0x00280028 /**< Primary IEEE address location */ + +#ifdef IEEE_ADDR_CONF_LOCATION_SECONDARY +#define IEEE_ADDR_LOCATION_SECONDARY IEEE_ADDR_CONF_LOCATION_SECONDARY +#else +#define IEEE_ADDR_LOCATION_SECONDARY 0x0027FFCC /**< Secondary IEEE address location */ +#endif /** @} */ /*---------------------------------------------------------------------------*/ /** diff --git a/cpu/msp430/cc2420-arch-sfd.c b/cpu/msp430/cc2420-arch-sfd.c index 49c979ce2..f7535b276 100644 --- a/cpu/msp430/cc2420-arch-sfd.c +++ b/cpu/msp430/cc2420-arch-sfd.c @@ -59,7 +59,7 @@ void cc2420_arch_sfd_init(void) { /* Need to select the special function! */ - P4SEL = BV(CC2420_SFD_PIN); + CC2420_SFD_PORT(SEL) = BV(CC2420_SFD_PIN); /* start timer B - 32768 ticks per second */ TBCTL = TBSSEL_1 | TBCLR; diff --git a/cpu/msp430/cc2520-arch-sfd.c b/cpu/msp430/cc2520-arch-sfd.c index 5eb35cedb..bafa11b1c 100644 --- a/cpu/msp430/cc2520-arch-sfd.c +++ b/cpu/msp430/cc2520-arch-sfd.c @@ -58,7 +58,7 @@ void cc2520_arch_sfd_init(void) { /* Need to select the special function! */ - P4SEL = BV(CC2520_SFD_PIN); + CC2520_SFD_PORT(SEL) = BV(CC2520_SFD_PIN); /* start timer B - 32768 ticks per second */ TBCTL = TBSSEL_1 | TBCLR; diff --git a/cpu/msp430/minileds.c b/cpu/msp430/minileds.c index 3a2a6eabf..ce5f97392 100644 --- a/cpu/msp430/minileds.c +++ b/cpu/msp430/minileds.c @@ -74,10 +74,5 @@ leds_off(unsigned char leds) void leds_toggle(unsigned char leds) { - /* - * Synonym: void leds_invert(unsigned char leds); - */ - asm(".global leds_invert\nleds_invert:\n"); - LEDS_PxOUT ^= l2p[leds & LEDS_ALL]; } diff --git a/examples/er-rest-example/resources/res-toggle.c b/examples/er-rest-example/resources/res-toggle.c index a8ada909f..d8a773306 100644 --- a/examples/er-rest-example/resources/res-toggle.c +++ b/examples/er-rest-example/resources/res-toggle.c @@ -58,6 +58,6 @@ RESOURCE(res_toggle, static void res_post_handler(void *request, void *response, uint8_t *buffer, uint16_t preferred_size, int32_t *offset) { - leds_invert(LEDS_RED); + leds_toggle(LEDS_RED); } #endif /* PLATFORM_HAS_LEDS */ diff --git a/examples/ipv6/slip-radio/no-framer.c b/examples/ipv6/slip-radio/no-framer.c index afbaffb65..b6ca7d06a 100644 --- a/examples/ipv6/slip-radio/no-framer.c +++ b/examples/ipv6/slip-radio/no-framer.c @@ -76,6 +76,13 @@ is_broadcast_addr(uint8_t mode, uint8_t *addr) } /*---------------------------------------------------------------------------*/ static int +hdr_length(void) +{ + /* never adds any header */ + return 0; +} +/*---------------------------------------------------------------------------*/ +static int create(void) { /* nothing extra... */ @@ -116,5 +123,5 @@ parse(void) } /*---------------------------------------------------------------------------*/ const struct framer no_framer = { - create, parse + hdr_length, create, parse }; diff --git a/platform/mbxxx/platform-conf.h b/platform/mbxxx/platform-conf.h index 5ed278687..cd316da82 100644 --- a/platform/mbxxx/platform-conf.h +++ b/platform/mbxxx/platform-conf.h @@ -85,7 +85,7 @@ typedef unsigned long clock_time_t; typedef unsigned long rtimer_clock_t; -#define RTIMER_CLOCK_LT(a,b) ((signed short)((a)-(b)) < 0) +#define RTIMER_CLOCK_LT(a,b) ((signed long)((a)-(b)) < 0) #define LEDS_CONF_RED_PIN boardDescription->io->leds[1].gpioPin #define LEDS_CONF_GREEN_PIN boardDescription->io->leds[0].gpioPin diff --git a/platform/native/contiki-main.c b/platform/native/contiki-main.c index e0e2f2012..0202fef73 100644 --- a/platform/native/contiki-main.c +++ b/platform/native/contiki-main.c @@ -35,6 +35,7 @@ #include #include #include +#include #ifdef __CYGWIN__ #include "net/wpcap-drv.h" @@ -190,6 +191,7 @@ main(int argc, char **argv) process_init(); process_start(&etimer_process, NULL); ctimer_init(); + rtimer_init(); #if WITH_GUI process_start(&ctk_process, NULL); @@ -197,12 +199,12 @@ main(int argc, char **argv) set_rime_addr(); - queuebuf_init(); - netstack_init(); printf("MAC %s RDC %s NETWORK %s\n", NETSTACK_MAC.name, NETSTACK_RDC.name, NETSTACK_NETWORK.name); #if WITH_UIP6 + queuebuf_init(); + memcpy(&uip_lladdr.addr, serial_id, sizeof(uip_lladdr.addr)); process_start(&tcpip_process, NULL); @@ -259,7 +261,9 @@ main(int argc, char **argv) retval = select(maxfd + 1, &fdr, &fdw, NULL, &tv); if(retval < 0) { - perror("select"); + if(errno != EINTR) { + perror("select"); + } } else if(retval > 0) { /* timeout => retval == 0 */ for(i = 0; i <= maxfd; i++) { diff --git a/platform/sky/contiki-sky-main.c b/platform/sky/contiki-sky-main.c index 646110b31..4df32e57e 100644 --- a/platform/sky/contiki-sky-main.c +++ b/platform/sky/contiki-sky-main.c @@ -338,7 +338,7 @@ main(int argc, char **argv) NETSTACK_MAC.name, NETSTACK_RDC.name, CLOCK_SECOND / (NETSTACK_RDC.channel_check_interval() == 0? 1: NETSTACK_RDC.channel_check_interval()), - CC2420_CONF_CCA_THRESH); + CC2420_CONF_CHANNEL); #endif /* WITH_UIP6 */ #if !WITH_UIP && !WITH_UIP6 diff --git a/tools/sky/uip6-bridge/uip6-bridge-tap.c b/tools/sky/uip6-bridge/uip6-bridge-tap.c index e0e413ffb..f1c5a0256 100644 --- a/tools/sky/uip6-bridge/uip6-bridge-tap.c +++ b/tools/sky/uip6-bridge/uip6-bridge-tap.c @@ -64,7 +64,7 @@ tcpip_output(const uip_lladdr_t *a) /* printf("pppp o %u tx %u rx %u\n", UIP_IP_BUF->proto, packetbuf_attr(PACKETBUF_ATTR_TRANSMIT_TIME), packetbuf_attr(PACKETBUF_ATTR_LISTEN_TIME));*/ - leds_invert(LEDS_GREEN); + leds_toggle(LEDS_GREEN); } return 0; } @@ -94,7 +94,7 @@ tcpip_input(void) packetbuf_attr(PACKETBUF_ATTR_TRANSMIT_TIME), packetbuf_attr(PACKETBUF_ATTR_LISTEN_TIME));*/ slip_write(uip_buf, uip_len); - leds_invert(LEDS_RED); + leds_toggle(LEDS_RED); uip_len = 0; } } @@ -112,7 +112,7 @@ slip_tcpip_input(void) static void slip_activity(void) { - leds_invert(LEDS_BLUE); + leds_toggle(LEDS_BLUE); } /*---------------------------------------------------------------------------*/ PROCESS_THREAD(uip6_bridge, ev, data) diff --git a/tools/stm32w/uip6_bridge/sicslow_ethernet.c b/tools/stm32w/uip6_bridge/sicslow_ethernet.c index 5c70bacaf..9bd68d0ad 100644 --- a/tools/stm32w/uip6_bridge/sicslow_ethernet.c +++ b/tools/stm32w/uip6_bridge/sicslow_ethernet.c @@ -968,7 +968,7 @@ void mac_802154raw(const struct radio_driver *radio) #endif slip_write(uip_buf, len); - leds_invert(LEDS_RED); + leds_toggle(LEDS_RED); //rndis_send(raw_buf, sendlen, 1); //rndis_stat.rxok++;