From bd45ee7aea622df39b64fa1e9face26ce51ebbb7 Mon Sep 17 00:00:00 2001 From: Harald Pichler Date: Tue, 20 Aug 2013 11:18:58 +0200 Subject: [PATCH] add coap 13 support --- examples/osd/pingtheplug/Makefile | 61 ++++++++++------- examples/osd/pingtheplug/er-example-server.c | 13 ++-- examples/osd/pingtheplug/project-conf.h | 72 +++++++++++++------- 3 files changed, 89 insertions(+), 57 deletions(-) diff --git a/examples/osd/pingtheplug/Makefile b/examples/osd/pingtheplug/Makefile index 9f5e50f5a..e3da53956 100644 --- a/examples/osd/pingtheplug/Makefile +++ b/examples/osd/pingtheplug/Makefile @@ -1,46 +1,57 @@ all: er-example-server -# Use this target explicitly if requried: er-plugtest-server +# use this target explicitly if requried: er-plugtest-server + + +# variable for this Makefile +# configure CoAP implementation (3|7|12|13) (er-coap-07 also supports CoAP draft 08) +WITH_COAP=13 + + +# variable for Makefile.include +WITH_UIP6=1 +# for some platforms +UIP_CONF_IPV6=1 +# IPv6 make config disappeared completely +CFLAGS += -DUIP_CONF_IPV6 +CFLAGS += -DUIP_CONF_IPV6_RPL CONTIKI=../../.. CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\" -# for static routing, if enabled -ifneq ($(TARGET), minimal-net) -ifneq ($(TARGET), native) -ifneq ($(findstring avr,$(TARGET)), avr) -PROJECT_SOURCEFILES += static-routing.c -endif -endif -endif # pcintkey PROJECT_SOURCEFILES += pcintkey.c -# variable for root Makefile.include -WITH_UIP6=1 -# for some platforms -UIP_CONF_IPV6=1 - -# variable for this Makefile -# configure CoAP implementation (3|7) (er-coap-07 also supports CoAP draft 08) -WITH_COAP=7 - -# new variable since slip-radio +# variable for Makefile.include ifneq ($(TARGET), minimal-net) -UIP_CONF_RPL=1 +CFLAGS += -DUIP_CONF_IPV6_RPL=1 else # minimal-net does not support RPL under Linux and is mostly used to test CoAP only ${info INFO: compiling without RPL} -UIP_CONF_RPL=0 -CFLAGS += -DUIP_CONF_ND6_DEF_MAXDADNS=0 +CFLAGS += -DUIP_CONF_IPV6_RPL=0 CFLAGS += -DHARD_CODED_ADDRESS=\"fdfd::10\" -CFLAGS += -DUIP_CONF_BUFFER_SIZE=1280 +${info INFO: compiling with large buffers} +CFLAGS += -DUIP_CONF_BUFFER_SIZE=2048 +CFLAGS += -DREST_MAX_CHUNK_SIZE=1024 +CFLAGS += -DCOAP_MAX_HEADER_SIZE=640 endif # linker optimizations SMALL=1 # REST framework, requires WITH_COAP -ifeq ($(WITH_COAP), 7) +ifeq ($(WITH_COAP), 13) +${info INFO: compiling with CoAP-13} +CFLAGS += -DWITH_COAP=13 +CFLAGS += -DREST=coap_rest_implementation +CFLAGS += -DUIP_CONF_TCP=0 +APPS += er-coap-13 +else ifeq ($(WITH_COAP), 12) +${info INFO: compiling with CoAP-12} +CFLAGS += -DWITH_COAP=12 +CFLAGS += -DREST=coap_rest_implementation +CFLAGS += -DUIP_CONF_TCP=0 +APPS += er-coap-12 +else ifeq ($(WITH_COAP), 7) ${info INFO: compiling with CoAP-08} CFLAGS += -DWITH_COAP=7 CFLAGS += -DREST=coap_rest_implementation @@ -86,5 +97,5 @@ connect-router: $(CONTIKI)/tools/tunslip6 connect-router-cooja: $(CONTIKI)/tools/tunslip6 sudo $(CONTIKI)/tools/tunslip6 -a 127.0.0.1 aaaa::1/64 -tap0up: +connect-minimal: sudo ip address add fdfd::1/64 dev tap0 diff --git a/examples/osd/pingtheplug/er-example-server.c b/examples/osd/pingtheplug/er-example-server.c index f69e7f8c1..c3a7bac07 100644 --- a/examples/osd/pingtheplug/er-example-server.c +++ b/examples/osd/pingtheplug/er-example-server.c @@ -53,11 +53,6 @@ #define REST_RES_TOGGLE 0 #define REST_RES_BATTERY 1 -#if !UIP_CONF_IPV6_RPL && !defined (CONTIKI_TARGET_MINIMAL_NET) && !defined (CONTIKI_TARGET_NATIVE) -#warning "Compiling with static routing!" -#include "static-routing.h" -#endif - #include "erbium.h" #include "pcintkey.h" @@ -85,6 +80,10 @@ #include "er-coap-03.h" #elif WITH_COAP == 7 #include "er-coap-07.h" +#elif WITH_COAP == 12 +#include "er-coap-12.h" +#elif WITH_COAP == 13 +#include "er-coap-13.h" #else #warning "Erbium example without CoAP-specifc functionality" #endif /* CoAP-specific example */ @@ -431,7 +430,7 @@ temperature_handler(void* request, void* response, uint8_t *buffer, uint16_t pre } else { - REST.set_response_status(response, REST.status.UNSUPPORTED_MADIA_TYPE); + REST.set_response_status(response, REST.status.NOT_ACCEPTABLE); const char *msg = "Supporting content-types text/plain and application/json"; REST.set_response_payload(response, msg, strlen(msg)); } @@ -466,7 +465,7 @@ battery_handler(void* request, void* response, uint8_t *buffer, uint16_t preferr } else { - REST.set_response_status(response, REST.status.UNSUPPORTED_MADIA_TYPE); + REST.set_response_status(response, REST.status.NOT_ACCEPTABLE); const char *msg = "Supporting content-types text/plain and application/json"; REST.set_response_payload(response, msg, strlen(msg)); } diff --git a/examples/osd/pingtheplug/project-conf.h b/examples/osd/pingtheplug/project-conf.h index 54f947d7e..a6836b39e 100644 --- a/examples/osd/pingtheplug/project-conf.h +++ b/examples/osd/pingtheplug/project-conf.h @@ -38,40 +38,62 @@ #define PLATFORM_HAS_TEMPERATURE 1 #define PLATFORM_HAS_BATTERY 1 -#define SICSLOWPAN_CONF_FRAG 1 - -/* For Debug: Dont allow MCU sleeping between channel checks */ -//#undef RDC_CONF_MCU_SLEEP -//#define RDC_CONF_MCU_SLEEP 0 +/* Some platforms have weird includes. */ +#undef IEEE802154_CONF_PANID /* Disabling RDC for demo purposes. Core updates often require more memory. */ /* For projects, optimize memory and enable RDC again. */ -//#undef NETSTACK_CONF_RDC +// #undef NETSTACK_CONF_RDC //#define NETSTACK_CONF_RDC nullrdc_driver -/* Save some memory for the sky platform. */ -#undef UIP_CONF_DS6_NBR_NBU -#define UIP_CONF_DS6_NBR_NBU 10 -#undef UIP_CONF_DS6_ROUTE_NBU -#define UIP_CONF_DS6_ROUTE_NBU 10 - -/* Increase rpl-border-router IP-buffer when using 128. */ -#ifndef REST_MAX_CHUNK_SIZE +/* Increase rpl-border-router IP-buffer when using more than 64. */ +#undef REST_MAX_CHUNK_SIZE #define REST_MAX_CHUNK_SIZE 64 -#endif + +/* Estimate your header size, especially when using Proxy-Uri. */ +/* +#undef COAP_MAX_HEADER_SIZE +#define COAP_MAX_HEADER_SIZE 70 +*/ + +/* The IP buffer size must fit all other hops, in particular the border router. */ + +#undef UIP_CONF_BUFFER_SIZE +#define UIP_CONF_BUFFER_SIZE 640 + /* Multiplies with chunk size, be aware of memory constraints. */ -#ifndef COAP_MAX_OPEN_TRANSACTIONS -#define COAP_MAX_OPEN_TRANSACTIONS 2 -#endif +#undef COAP_MAX_OPEN_TRANSACTIONS +#define COAP_MAX_OPEN_TRANSACTIONS 4 + +/* Must be <= open transaction number, default is COAP_MAX_OPEN_TRANSACTIONS-1. */ +/* +#undef COAP_MAX_OBSERVERS +#define COAP_MAX_OBSERVERS 2 +*/ + +/* Filtering .well-known/core per query can be disabled to save space. */ +/* +#undef COAP_LINK_FORMAT_FILTERING +#define COAP_LINK_FORMAT_FILTERING 0 +*/ + +/* Save some memory for the sky platform. */ + +#undef UIP_CONF_DS6_NBR_NBU +#define UIP_CONF_DS6_NBR_NBU 10 +#undef UIP_CONF_MAX_ROUTES +#define UIP_CONF_MAX_ROUTES 10 -/* Must be <= open transaction number. */ -#ifndef COAP_MAX_OBSERVERS -#define COAP_MAX_OBSERVERS COAP_MAX_OPEN_TRANSACTIONS-1 -#endif /* Reduce 802.15.4 frame queue to save RAM. */ -#undef QUEUEBUF_CONF_NUM -#define QUEUEBUF_CONF_NUM 4 -#endif /* __PROJECT_RPL_WEB_CONF_H__ */ +#undef QUEUEBUF_CONF_NUM +#define QUEUEBUF_CONF_NUM 8 + + +/* +#undef SICSLOWPAN_CONF_FRAG +#define SICSLOWPAN_CONF_FRAG 1 +*/ +#endif /* __PROJECT_ERBIUM_CONF_H__ */