diff --git a/Makefile.include b/Makefile.include index 19654883b..35503e66c 100644 --- a/Makefile.include +++ b/Makefile.include @@ -1,5 +1,5 @@ ifndef CONTIKI - ${error CONTIKI not defined! You must specify where CONTIKI resides!} + ${error CONTIKI not defined! You must specify where CONTIKI resides} endif OBJECTDIR = obj_$(TARGET) @@ -8,11 +8,8 @@ CFLAGS += -DCONTIKI_TARGET=$(TARGET) ifeq ($(TARGET),) -include Makefile.target ifeq ($(TARGET),) - ifeq ($(DEFAULT_TARGET),) - DEFAULT_TARGET=native - endif - ${info TARGET not defined, using target '$(DEFAULT_TARGET)'} - TARGET=$(DEFAULT_TARGET) + ${info TARGET not defined, using target 'native'} + TARGET=native else ${info using saved target '$(TARGET)'} endif @@ -47,20 +44,21 @@ endif include $(CONTIKI)/core/net/rime/Makefile.rime include $(CONTIKI)/core/net/mac/Makefile.mac +#include $(CONTIKI)/core/net/ipv6/Makefile.ipv6 SYSTEM = process.c procinit.c autostart.c elfloader.c profile.c timetable.c timetable-aggregate.c THREADS = mt.c -LIBS = timer.c etimer.c random.c memb.c list.c energest.c print-stats.c rtimer.c stimer.c -ifndef UIP_CONF_IPV6 -UIP = uip.c tcpip.c uip-split.c psock.c uip-udp-packet.c uip-over-mesh.c resolv.c hc.c tcpdump.c uiplib.c -else -UIP = uip6.c tcpip.c uip-split.c psock.c uip-udp-packet.c uip-over-mesh.c resolv.c hc.c tcpdump.c uiplib.c -endif -#rawpacket-udp.c -ifndef UIP_CONF_IPV6 -NET = $(UIP) uaodv.c uaodv-rt.c -else +LIBS = memb.c timer.c list.c etimer.c energest.c rtimer.c stimer.c \ + print-stats.c ifft.c crc16.c random.c +ifdef UIP_CONF_IPV6 +UIP = uip6.c tcpip.c psock.c uip-udp-packet.c uip-split.c \ + uip-over-mesh.c resolv.c hc.c tcpdump.c uiplib.c NET = $(UIP) uip-icmp6.c uip-nd6.c uip-nd6-io.c uip-netif.c sicslowpan.c -endif +else # UIP_CONF_IPV6 +UIP = uip.c uiplib.c resolv.c tcpip.c psock.c hc.c uip-split.c uip-fw.c \ + uip-fw-drv.c uip_arp.c tcpdump.c uip-neighbor.c uip-udp-packet.c \ + uip-over-mesh.c #rawpacket-udp.c +NET = $(UIP) uaodv.c uaodv-rt.c +endif # UIP_CONF_IPV6 CTK = ctk.c CTKVNC = $(CTK) ctk-vncserver.c libconio.c vnc-server.c vnc-out.c ctk-vncfont.c @@ -73,7 +71,7 @@ endif CONTIKI_SOURCEFILES += $(CONTIKIFILES) CONTIKIDIRS += ${addprefix $(CONTIKI)/core/,dev lib net net/mac net/rime sys \ - cfs ctk lib/ctk loader net/sicslow_interop . } + cfs ctk lib/ctk loader . } oname = ${patsubst %.c,%.o,${patsubst %.S,%.o,$(1)}} diff --git a/examples/ravenusbstick/Makefile.ravenusbstick b/examples/ravenusbstick/Makefile.ravenusbstick index 1d46169a2..11d554a58 100644 --- a/examples/ravenusbstick/Makefile.ravenusbstick +++ b/examples/ravenusbstick/Makefile.ravenusbstick @@ -3,6 +3,7 @@ DEFAULT_TARGET=avr-ravenusb CONTIKI_NO_NET=1 + CONTIKI = ../.. include $(CONTIKI)/Makefile.include diff --git a/platform/avr-ravenusb/fakeuip.c b/platform/avr-ravenusb/fakeuip.c new file mode 100644 index 000000000..5acaf966c --- /dev/null +++ b/platform/avr-ravenusb/fakeuip.c @@ -0,0 +1,110 @@ + +/* Various stub functions and uIP variables other code might need to + * compile. Allows you to save needing to compile all of uIP in just + * to get a few things */ + + +#include "uip.h" +#include + +#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN]) + +u8_t uip_buf[UIP_BUFSIZE + 2]; + +u16_t uip_len; + +struct uip_stats uip_stat; + +uip_lladdr_t uip_lladdr; + +u8_t (* tcpip_output)(uip_lladdr_t *); + +u16_t htons(u16_t val) { return HTONS(val);} + + +/********** UIP_NETIF.c **********/ + +void +uip_netif_addr_autoconf_set(uip_ipaddr_t *ipaddr, uip_lladdr_t *lladdr) +{ + /* We consider only links with IEEE EUI-64 identifier or + IEEE 48-bit MAC addresses */ +#if (UIP_LLADDR_LEN == 8) + memcpy(ipaddr->u8 + 8, lladdr, UIP_LLADDR_LEN); + ipaddr->u8[8] ^= 0x02; +#elif (UIP_LLADDR_LEN == 6) + memcpy(ipaddr->u8 + 8, lladdr, 3); + ipaddr->u8[11] = 0xff; + ipaddr->u8[12] = 0xfe; + memcpy(ipaddr->u8 + 13, lladdr + 3, 3); + ipaddr->u8[8] ^= 0x02; +#else + /* + UIP_LOG("CAN NOT BUIL INTERFACE IDENTIFIER"); + UIP_LOG("THE STACK IS GOING TO SHUT DOWN"); + UIP_LOG("THE HOST WILL BE UNREACHABLE"); + */ + exit(-1); +#endif +} + +/********** UIP.c ****************/ + +static u16_t +chksum(u16_t sum, const u8_t *data, u16_t len) +{ + u16_t t; + const u8_t *dataptr; + const u8_t *last_byte; + + dataptr = data; + last_byte = data + len - 1; + + while(dataptr < last_byte) { /* At least two more bytes */ + t = (dataptr[0] << 8) + dataptr[1]; + sum += t; + if(sum < t) { + sum++; /* carry */ + } + dataptr += 2; + } + + if(dataptr == last_byte) { + t = (dataptr[0] << 8) + 0; + sum += t; + if(sum < t) { + sum++; /* carry */ + } + } + + /* Return sum in host byte order. */ + return sum; +} + +static u16_t +upper_layer_chksum(u8_t proto) +{ + u16_t upper_layer_len; + u16_t sum; + + upper_layer_len = (((u16_t)(UIP_IP_BUF->len[0]) << 8) + UIP_IP_BUF->len[1]) ; + + /* First sum pseudoheader. */ + /* IP protocol and length fields. This addition cannot carry. */ + sum = upper_layer_len + proto; + /* Sum IP source and destination addresses. */ + sum = chksum(sum, (u8_t *)&UIP_IP_BUF->srcipaddr, 2 * sizeof(uip_ipaddr_t)); + + /* Sum TCP header and data. */ + sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN], + upper_layer_len); + + return (sum == 0) ? 0xffff : htons(sum); +} + +/*---------------------------------------------------------------------------*/ +u16_t +uip_icmp6chksum(void) +{ + return upper_layer_chksum(UIP_PROTO_ICMP6); +}