From 4754064ecf62e8b2d9be139939d5eeef6d775a9e Mon Sep 17 00:00:00 2001 From: funshine Date: Thu, 5 Feb 2015 01:32:57 +0800 Subject: [PATCH 01/13] add coap module, see fragment.lua for usage --- app/Makefile | 2 + app/coap/LICENSE.txt | 20 ++ app/coap/Makefile | 45 +++ app/coap/coap.c | 555 +++++++++++++++++++++++++++++++ app/coap/coap.h | 186 +++++++++++ app/coap/coap_client.c | 67 ++++ app/coap/coap_client.h | 14 + app/coap/coap_io.c | 71 ++++ app/coap/coap_io.h | 20 ++ app/coap/coap_server.c | 53 +++ app/coap/coap_server.h | 14 + app/coap/coap_timer.c | 78 +++++ app/coap/coap_timer.h | 31 ++ app/coap/endpoints.c | 282 ++++++++++++++++ app/coap/hash.c | 30 ++ app/coap/hash.h | 23 ++ app/coap/node.c | 141 ++++++++ app/coap/node.h | 58 ++++ app/coap/pdu.c | 63 ++++ app/coap/pdu.h | 25 ++ app/coap/str.c | 28 ++ app/coap/str.h | 30 ++ app/coap/uri.c | 468 ++++++++++++++++++++++++++ app/coap/uri.h | 166 ++++++++++ app/include/user_config.h | 5 +- app/modules/Makefile | 1 + app/modules/auxmods.h | 3 + app/modules/coap.c | 667 ++++++++++++++++++++++++++++++++++++++ app/modules/modules.h | 11 +- examples/fragment.lua | 15 + ld/eagle.app.v6.ld | 2 +- 31 files changed, 3170 insertions(+), 4 deletions(-) create mode 100644 app/coap/LICENSE.txt create mode 100644 app/coap/Makefile create mode 100644 app/coap/coap.c create mode 100644 app/coap/coap.h create mode 100644 app/coap/coap_client.c create mode 100644 app/coap/coap_client.h create mode 100644 app/coap/coap_io.c create mode 100644 app/coap/coap_io.h create mode 100644 app/coap/coap_server.c create mode 100644 app/coap/coap_server.h create mode 100644 app/coap/coap_timer.c create mode 100644 app/coap/coap_timer.h create mode 100644 app/coap/endpoints.c create mode 100644 app/coap/hash.c create mode 100644 app/coap/hash.h create mode 100644 app/coap/node.c create mode 100644 app/coap/node.h create mode 100644 app/coap/pdu.c create mode 100644 app/coap/pdu.h create mode 100644 app/coap/str.c create mode 100644 app/coap/str.h create mode 100644 app/coap/uri.c create mode 100644 app/coap/uri.h create mode 100644 app/modules/coap.c diff --git a/app/Makefile b/app/Makefile index 15ff75c4..9f525686 100644 --- a/app/Makefile +++ b/app/Makefile @@ -30,6 +30,7 @@ SUBDIRS= \ platform \ libc \ lua \ + coap \ mqtt \ smart \ wofs \ @@ -76,6 +77,7 @@ COMPONENTS_eagle.app.v6 = \ platform/libplatform.a \ libc/liblibc.a \ lua/liblua.a \ + coap/coap.a \ mqtt/mqtt.a \ smart/smart.a \ wofs/wofs.a \ diff --git a/app/coap/LICENSE.txt b/app/coap/LICENSE.txt new file mode 100644 index 00000000..4dd7b4c1 --- /dev/null +++ b/app/coap/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2013 Toby Jaffey + 2015 Zeroday Hong nodemcu.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/app/coap/Makefile b/app/coap/Makefile new file mode 100644 index 00000000..3947069c --- /dev/null +++ b/app/coap/Makefile @@ -0,0 +1,45 @@ + +############################################################# +# Required variables for each makefile +# Discard this section from all parent makefiles +# Expected variables (with automatic defaults): +# CSRCS (all "C" files in the dir) +# SUBDIRS (all subdirs with a Makefile) +# GEN_LIBS - list of libs to be generated () +# GEN_IMAGES - list of images to be generated () +# COMPONENTS_xxx - a list of libs/objs in the form +# subdir/lib to be extracted and rolled up into +# a generated lib/image xxx.a () +# +ifndef PDIR +GEN_LIBS = coap.a +endif + +############################################################# +# Configuration i.e. compile options etc. +# Target specific stuff (defines etc.) goes in here! +# Generally values applying to a tree are captured in the +# makefile at its root level - these are then overridden +# for a subtree within the makefile rooted therein +# +#DEFINES += + +############################################################# +# Recursion Magic - Don't touch this!! +# +# Each subtree potentially has an include directory +# corresponding to the common APIs applicable to modules +# rooted at that subtree. Accordingly, the INCLUDE PATH +# of a module can only contain the include directories up +# its parent path, and not its siblings +# +# Required for each makefile to inherit from the parent +# + +INCLUDES := $(INCLUDES) -I $(PDIR)include +INCLUDES += -I ./ +INCLUDES += -I ../libc +INCLUDES += -I ../lua +PDIR := ../$(PDIR) +sinclude $(PDIR)Makefile + diff --git a/app/coap/coap.c b/app/coap/coap.c new file mode 100644 index 00000000..6dded680 --- /dev/null +++ b/app/coap/coap.c @@ -0,0 +1,555 @@ +#include "user_config.h" +#include "c_stdio.h" +#include "c_string.h" +#include "coap.h" +#include "uri.h" + +extern void endpoint_setup(void); +extern const coap_endpoint_t endpoints[]; + +#ifdef COAP_DEBUG +void coap_dumpHeader(coap_header_t *hdr) +{ + c_printf("Header:\n"); + c_printf(" ver 0x%02X\n", hdr->ver); + c_printf(" t 0x%02X\n", hdr->ver); + c_printf(" tkl 0x%02X\n", hdr->tkl); + c_printf(" code 0x%02X\n", hdr->code); + c_printf(" id 0x%02X%02X\n", hdr->id[0], hdr->id[1]); +} + +void coap_dump(const uint8_t *buf, size_t buflen, bool bare) +{ + if (bare) + { + while(buflen--) + c_printf("%02X%s", *buf++, (buflen > 0) ? " " : ""); + } + else + { + c_printf("Dump: "); + while(buflen--) + c_printf("%02X%s", *buf++, (buflen > 0) ? " " : ""); + c_printf("\n"); + } +} +#endif + +int coap_parseHeader(coap_header_t *hdr, const uint8_t *buf, size_t buflen) +{ + if (buflen < 4) + return COAP_ERR_HEADER_TOO_SHORT; + hdr->ver = (buf[0] & 0xC0) >> 6; + if (hdr->ver != 1) + return COAP_ERR_VERSION_NOT_1; + hdr->t = (buf[0] & 0x30) >> 4; + hdr->tkl = buf[0] & 0x0F; + hdr->code = buf[1]; + hdr->id[0] = buf[2]; + hdr->id[1] = buf[3]; + return 0; +} + +int coap_buildHeader(const coap_header_t *hdr, uint8_t *buf, size_t buflen) +{ + // build header + if (buflen < 4) + return COAP_ERR_BUFFER_TOO_SMALL; + + buf[0] = (hdr->ver & 0x03) << 6; + buf[0] |= (hdr->t & 0x03) << 4; + buf[0] |= (hdr->tkl & 0x0F); + buf[1] = hdr->code; + buf[2] = hdr->id[0]; + buf[3] = hdr->id[1]; + return 4; +} + +int coap_parseToken(coap_buffer_t *tokbuf, const coap_header_t *hdr, const uint8_t *buf, size_t buflen) +{ + if (hdr->tkl == 0) + { + tokbuf->p = NULL; + tokbuf->len = 0; + return 0; + } + else + if (hdr->tkl <= 8) + { + if (4 + hdr->tkl > buflen) + return COAP_ERR_TOKEN_TOO_SHORT; // tok bigger than packet + tokbuf->p = buf+4; // past header + tokbuf->len = hdr->tkl; + return 0; + } + else + { + // invalid size + return COAP_ERR_TOKEN_TOO_SHORT; + } +} + +int coap_buildToken(const coap_buffer_t *tokbuf, const coap_header_t *hdr, uint8_t *buf, size_t buflen) +{ + // inject token + uint8_t *p; + if (buflen < 4 + hdr->tkl) + return COAP_ERR_BUFFER_TOO_SMALL; + p = buf + 4; + if ((hdr->tkl > 0) && (hdr->tkl != tokbuf->len)) + return COAP_ERR_UNSUPPORTED; + + if (hdr->tkl > 0) + c_memcpy(p, tokbuf->p, hdr->tkl); + + // http://tools.ietf.org/html/draft-ietf-core-coap-18#section-3.1 + // inject options + return hdr->tkl; +} + +// advances p +int coap_parseOption(coap_option_t *option, uint16_t *running_delta, const uint8_t **buf, size_t buflen) +{ + const uint8_t *p = *buf; + uint16_t len, delta; + uint8_t headlen = 1; + + if (buflen < headlen) // too small + return COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER; + + delta = (p[0] & 0xF0) >> 4; + len = p[0] & 0x0F; + + // These are untested and may be buggy + if (delta == 13) + { + headlen++; + if (buflen < headlen) + return COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER; + delta = p[1] + 13; + p++; + } + else + if (delta == 14) + { + headlen += 2; + if (buflen < headlen) + return COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER; + delta = ((p[1] << 8) | p[2]) + 269; + p+=2; + } + else + if (delta == 15) + return COAP_ERR_OPTION_DELTA_INVALID; + + if (len == 13) + { + headlen++; + if (buflen < headlen) + return COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER; + len = p[1] + 13; + p++; + } + else + if (len == 14) + { + headlen += 2; + if (buflen < headlen) + return COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER; + len = ((p[1] << 8) | p[2]) + 269; + p+=2; + } + else + if (len == 15) + return COAP_ERR_OPTION_LEN_INVALID; + + if ((p + 1 + len) > (*buf + buflen)) + return COAP_ERR_OPTION_TOO_BIG; + + //printf("option num=%d\n", delta + *running_delta); + option->num = delta + *running_delta; + option->buf.p = p+1; + option->buf.len = len; + //coap_dump(p+1, len, false); + + // advance buf + *buf = p + 1 + len; + *running_delta += delta; + + return 0; +} + +// http://tools.ietf.org/html/draft-ietf-core-coap-18#section-3.1 +int coap_parseOptionsAndPayload(coap_option_t *options, uint8_t *numOptions, coap_buffer_t *payload, const coap_header_t *hdr, const uint8_t *buf, size_t buflen) +{ + size_t optionIndex = 0; + const uint8_t *p = buf + 4 + hdr->tkl; + const uint8_t *end = buf + buflen; + int rc; + uint16_t delta = 0; + if (p > end) + return COAP_ERR_OPTION_OVERRUNS_PACKET; // out of bounds + + //coap_dump(p, end - p); + + // 0xFF is payload marker + while((optionIndex < *numOptions) && (p < end) && (*p != 0xFF)) + { + if (0 != (rc = coap_parseOption(&options[optionIndex], &delta, &p, end-p))) + return rc; + optionIndex++; + } + *numOptions = optionIndex; + + if (p+1 < end && *p == 0xFF) // payload marker + { + payload->p = p+1; + payload->len = end-(p+1); + } + else + { + payload->p = NULL; + payload->len = 0; + } + + return 0; +} + +int coap_buildOptionHeader(unsigned short optDelta, size_t length, uint8_t *buf, size_t buflen) +{ + int n = 0; + uint8_t *p = buf; + uint8_t len, delta = 0; + + if (buflen < 5) + return COAP_ERR_BUFFER_TOO_SMALL; + + coap_option_nibble(optDelta, &delta); + coap_option_nibble(length, &len); + + *p++ = (0xFF & (delta << 4 | len)); + n++; + if (delta == 13) + { + *p++ = (optDelta - 13); + n++; + } + else + if (delta == 14) + { + *p++ = ((optDelta-269) >> 8); + *p++ = (0xFF & (optDelta-269)); + n+=2; + } + if (len == 13) + { + *p++ = (length - 13); + n++; + } + else + if (len == 14) + { + *p++ = (length >> 8); + *p++ = (0xFF & (length-269)); + n+=2; + } + return n; +} + +#ifdef COAP_DEBUG +void coap_dumpOptions(coap_option_t *opts, size_t numopt) +{ + size_t i; + c_printf(" Options:\n"); + for (i=0;ihdr); + coap_dumpOptions(pkt->opts, pkt->numopts); + c_printf("Payload: "); + coap_dump(pkt->payload.p, pkt->payload.len, true); + c_printf("\n"); +} +#endif + +int coap_parse(coap_packet_t *pkt, const uint8_t *buf, size_t buflen) +{ + int rc; + + // coap_dump(buf, buflen, false); + + if (0 != (rc = coap_parseHeader(&pkt->hdr, buf, buflen))) + return rc; +// coap_dumpHeader(&hdr); + if (0 != (rc = coap_parseToken(&pkt->tok, &pkt->hdr, buf, buflen))) + return rc; + pkt->numopts = MAXOPT; + if (0 != (rc = coap_parseOptionsAndPayload(pkt->opts, &(pkt->numopts), &(pkt->payload), &pkt->hdr, buf, buflen))) + return rc; +// coap_dumpOptions(opts, numopt); + return 0; +} + +// options are always stored consecutively, so can return a block with same option num +const coap_option_t * coap_findOptions(const coap_packet_t *pkt, uint8_t num, uint8_t *count) +{ + // FIXME, options is always sorted, can find faster than this + size_t i; + const coap_option_t *first = NULL; + *count = 0; + for (i=0;inumopts;i++) + { + if (pkt->opts[i].num == num) + { + if (NULL == first) + first = &pkt->opts[i]; + (*count)++; + } + else + { + if (NULL != first) + break; + } + } + return first; +} + +int coap_buffer_to_string(char *strbuf, size_t strbuflen, const coap_buffer_t *buf) +{ + if (buf->len+1 > strbuflen) + return COAP_ERR_BUFFER_TOO_SMALL; + c_memcpy(strbuf, buf->p, buf->len); + strbuf[buf->len] = 0; + return 0; +} + +int coap_build(uint8_t *buf, size_t *buflen, const coap_packet_t *pkt) +{ + size_t opts_len = 0, hdr_len = 0, tok_len = 0; + size_t i; + uint8_t *p = buf; + size_t left = *buflen; + uint16_t running_delta = 0; + + hdr_len = coap_buildHeader(&(pkt->hdr), buf, *buflen); + p += hdr_len; + left -= hdr_len; + + tok_len = coap_buildToken(&(pkt->tok), &(pkt->hdr), buf, *buflen); + p += tok_len; + left -= tok_len; + + for (i=0;inumopts;i++) + { + uint8_t len, delta = 0; + uint16_t optDelta = 0; + int rc = 0; + + if (p-buf > *buflen) + return COAP_ERR_BUFFER_TOO_SMALL; + optDelta = pkt->opts[i].num - running_delta; + + rc = coap_buildOptionHeader(optDelta, pkt->opts[i].buf.len, p, left); + p += rc; + left -= rc; + + c_memcpy(p, pkt->opts[i].buf.p, pkt->opts[i].buf.len); + p += pkt->opts[i].buf.len; + left -= pkt->opts[i].buf.len; + running_delta = pkt->opts[i].num; + } + + opts_len = (p - buf) - 4; // number of bytes used by options + + if (pkt->payload.len > 0) + { + if (*buflen < 4 + 1 + pkt->payload.len + opts_len) + return COAP_ERR_BUFFER_TOO_SMALL; + buf[4 + opts_len] = 0xFF; // payload marker + c_memcpy(buf+5 + opts_len, pkt->payload.p, pkt->payload.len); + *buflen = opts_len + 5 + pkt->payload.len; + } + else + *buflen = opts_len + 4; + return 0; +} + +void coap_option_nibble(uint16_t value, uint8_t *nibble) +{ + if (value<13) + { + *nibble = (0xFF & value); + } + else + if (((uint32_t)value)<=0xFF+13) + { + *nibble = 13; + } else if (((uint32_t)value) -269 <=0xFFFF) + { + *nibble = 14; + } +} + +int coap_make_response(coap_rw_buffer_t *scratch, coap_packet_t *pkt, const uint8_t *content, size_t content_len, uint8_t msgid_hi, uint8_t msgid_lo, const coap_buffer_t* tok, coap_responsecode_t rspcode, coap_content_type_t content_type) +{ + pkt->hdr.ver = 0x01; + pkt->hdr.t = COAP_TYPE_ACK; + pkt->hdr.tkl = 0; + pkt->hdr.code = rspcode; + pkt->hdr.id[0] = msgid_hi; + pkt->hdr.id[1] = msgid_lo; + pkt->numopts = 0; + + // need token in response + if (tok) { + pkt->hdr.tkl = tok->len; + pkt->tok = *tok; + } + + // safe because 1 < MAXOPT + pkt->opts[0].num = COAP_OPTION_CONTENT_FORMAT; + pkt->opts[0].buf.p = scratch->p; + if (scratch->len < 2) + return COAP_ERR_BUFFER_TOO_SMALL; + scratch->p[0] = ((uint16_t)content_type & 0xFF00) >> 8; + scratch->p[1] = ((uint16_t)content_type & 0x00FF); + pkt->opts[0].buf.len = 2; + pkt->payload.p = content; + pkt->payload.len = content_len; + return 0; +} + + +unsigned int coap_encode_var_bytes(unsigned char *buf, unsigned int val) { + unsigned int n, i; + + for (n = 0, i = val; i && n < sizeof(val); ++n) + i >>= 8; + + i = n; + while (i--) { + buf[i] = val & 0xff; + val >>= 8; + } + + return n; +} + +static uint8_t _token_data[4]={'n','o','d','e'}; +coap_buffer_t the_token = { _token_data, 4 }; +static unsigned short message_id; + +int coap_make_request(coap_rw_buffer_t *scratch, coap_packet_t *pkt, coap_msgtype_t t, coap_method_t m, coap_uri_t *uri, const uint8_t *payload, size_t payload_len) +{ + int res; + pkt->hdr.ver = 0x01; + pkt->hdr.t = t; + pkt->hdr.tkl = 0; + pkt->hdr.code = m; + pkt->hdr.id[0] = (message_id >> 8) & 0xFF; //msgid_hi; + pkt->hdr.id[1] = message_id & 0xFF; //msgid_lo; + message_id++; + NODE_DBG("message_id: %d.\n", message_id); + pkt->numopts = 0; + + if (the_token.len) { + pkt->hdr.tkl = the_token.len; + pkt->tok = the_token; + } + + if (scratch->len < 2) // TBD... + return COAP_ERR_BUFFER_TOO_SMALL; + + uint8_t *saved = scratch->p; + + /* split arg into Uri-* options */ + // const char *addr = uri->host.s; + // if(uri->host.length && (c_strlen(addr) != uri->host.length || c_memcmp(addr, uri->host.s, uri->host.length) != 0)){ + if(uri->host.length){ + /* add Uri-Host */ + // addr is destination address + pkt->opts[pkt->numopts].num = COAP_OPTION_URI_HOST; + pkt->opts[pkt->numopts].buf.p = uri->host.s; + pkt->opts[pkt->numopts].buf.len = uri->host.length; + pkt->numopts++; + } + + if (uri->port != COAP_DEFAULT_PORT) { + pkt->opts[pkt->numopts].num = COAP_OPTION_URI_PORT; + res = coap_encode_var_bytes(scratch->p, uri->port); + pkt->opts[pkt->numopts].buf.len = res; + pkt->opts[pkt->numopts].buf.p = scratch->p; + scratch->p += res; + scratch->len -= res; + pkt->numopts++; + } + + if (uri->path.length) { + res = coap_split_path(scratch, pkt, uri->path.s, uri->path.length); + } + + if (uri->query.length) { + res = coap_split_query(scratch, pkt, uri->query.s, uri->query.length); + } + + pkt->payload.p = payload; + pkt->payload.len = payload_len; + scratch->p = saved; // save back the pointer. + return 0; +} + +// FIXME, if this looked in the table at the path before the method then +// it could more easily return 405 errors +int coap_handle_req(coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt) +{ + const coap_option_t *opt; + int i; + uint8_t count; + const coap_endpoint_t *ep = endpoints; + + while(NULL != ep->handler) + { + if (ep->method != inpkt->hdr.code) + goto next; + if (NULL != (opt = coap_findOptions(inpkt, COAP_OPTION_URI_PATH, &count))) + { + // if (count != ep->path->count) + if ((count != ep->path->count ) && (count != ep->path->count + 1)) // +1 for /f/[function], /v/[variable] + goto next; + for (i=0;ipath->count;i++) + { + if (opt[i].buf.len != c_strlen(ep->path->elems[i])) + goto next; + if (0 != c_memcmp(ep->path->elems[i], opt[i].buf.p, opt[i].buf.len)) + goto next; + } + // pre-path match! + if (count==ep->path->count+1 && ep->user_entry == NULL) + goto next; + return ep->handler(ep, scratch, inpkt, outpkt, inpkt->hdr.id[0], inpkt->hdr.id[1]); + } +next: + ep++; + } + + coap_make_response(scratch, outpkt, NULL, 0, inpkt->hdr.id[0], inpkt->hdr.id[1], &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + + return 0; +} + +void coap_setup(void) +{ + message_id = (unsigned short)rand(); // calculate only once +} + +inline int +check_token(coap_packet_t *pkt) { + return pkt->tok.len == the_token.len && c_memcmp(pkt->tok.p, the_token.p, the_token.len) == 0; +} diff --git a/app/coap/coap.h b/app/coap/coap.h new file mode 100644 index 00000000..1c8827a6 --- /dev/null +++ b/app/coap/coap.h @@ -0,0 +1,186 @@ +#ifndef COAP_H +#define COAP_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "c_stdint.h" +#include "c_stddef.h" +#include "lualib.h" +#include "lauxlib.h" + +#define MAXOPT 16 +#define MAX_MESSAGE_SIZE 1152 +#define MAX_PAYLOAD_SIZE 1024 +#define MAX_REQUEST_SIZE 576 +#define MAX_REQ_SCRATCH_SIZE 60 + +#define COAP_RESPONSE_CLASS(C) (((C) >> 5) & 0xFF) + +// http://tools.ietf.org/html/draft-ietf-core-coap-18#section-3 +typedef struct +{ + uint8_t ver; + uint8_t t; + uint8_t tkl; + uint8_t code; + uint8_t id[2]; +} coap_header_t; + +typedef struct +{ + const uint8_t *p; + size_t len; +} coap_buffer_t; + +typedef struct +{ + uint8_t *p; + size_t len; +} coap_rw_buffer_t; + +typedef struct +{ + uint8_t num; + coap_buffer_t buf; +} coap_option_t; + +typedef struct +{ + coap_header_t hdr; + coap_buffer_t tok; + uint8_t numopts; + coap_option_t opts[MAXOPT]; + coap_buffer_t payload; + coap_rw_buffer_t scratch; // scratch->p = malloc(...) , and free it when done. +} coap_packet_t; + +///////////////////////////////////////// + +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-12.2 +typedef enum +{ + COAP_OPTION_IF_MATCH = 1, + COAP_OPTION_URI_HOST = 3, + COAP_OPTION_ETAG = 4, + COAP_OPTION_IF_NONE_MATCH = 5, + COAP_OPTION_OBSERVE = 6, + COAP_OPTION_URI_PORT = 7, + COAP_OPTION_LOCATION_PATH = 8, + COAP_OPTION_URI_PATH = 11, + COAP_OPTION_CONTENT_FORMAT = 12, + COAP_OPTION_MAX_AGE = 14, + COAP_OPTION_URI_QUERY = 15, + COAP_OPTION_ACCEPT = 17, + COAP_OPTION_LOCATION_QUERY = 20, + COAP_OPTION_PROXY_URI = 35, + COAP_OPTION_PROXY_SCHEME = 39 +} coap_option_num_t; + +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-12.1.1 +typedef enum +{ + COAP_METHOD_GET = 1, + COAP_METHOD_POST = 2, + COAP_METHOD_PUT = 3, + COAP_METHOD_DELETE = 4 +} coap_method_t; + +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-12.1.1 +typedef enum +{ + COAP_TYPE_CON = 0, + COAP_TYPE_NONCON = 1, + COAP_TYPE_ACK = 2, + COAP_TYPE_RESET = 3 +} coap_msgtype_t; + +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-5.2 +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-12.1.2 +#define MAKE_RSPCODE(clas, det) ((clas << 5) | (det)) +typedef enum +{ + COAP_RSPCODE_CONTENT = MAKE_RSPCODE(2, 5), + COAP_RSPCODE_NOT_FOUND = MAKE_RSPCODE(4, 4), + COAP_RSPCODE_BAD_REQUEST = MAKE_RSPCODE(4, 0), + COAP_RSPCODE_CHANGED = MAKE_RSPCODE(2, 4) +} coap_responsecode_t; + +//http://tools.ietf.org/html/draft-ietf-core-coap-18#section-12.3 +typedef enum +{ + COAP_CONTENTTYPE_NONE = -1, // bodge to allow us not to send option block + COAP_CONTENTTYPE_TEXT_PLAIN = 0, + COAP_CONTENTTYPE_APPLICATION_LINKFORMAT = 40, +} coap_content_type_t; + +/////////////////////// + +typedef enum +{ + COAP_ERR_NONE = 0, + COAP_ERR_HEADER_TOO_SHORT = 1, + COAP_ERR_VERSION_NOT_1 = 2, + COAP_ERR_TOKEN_TOO_SHORT = 3, + COAP_ERR_OPTION_TOO_SHORT_FOR_HEADER = 4, + COAP_ERR_OPTION_TOO_SHORT = 5, + COAP_ERR_OPTION_OVERRUNS_PACKET = 6, + COAP_ERR_OPTION_TOO_BIG = 7, + COAP_ERR_OPTION_LEN_INVALID = 8, + COAP_ERR_BUFFER_TOO_SMALL = 9, + COAP_ERR_UNSUPPORTED = 10, + COAP_ERR_OPTION_DELTA_INVALID = 11, +} coap_error_t; + +/////////////////////// +typedef struct coap_endpoint_t coap_endpoint_t; + +typedef int (*coap_endpoint_func)(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo); +#define MAX_SEGMENTS 3 // 2 = /foo/bar, 3 = /foo/bar/baz +#define MAX_SEGMENTS_SIZE 16 +typedef struct +{ + int count; + const char *elems[MAX_SEGMENTS]; +} coap_endpoint_path_t; + +typedef struct coap_luser_entry coap_luser_entry; + +struct coap_luser_entry{ + lua_State *L; + // int ref; + // char name[MAX_SEGMENTS_SIZE+1]; // +1 for string '\0' + const char *name; + coap_luser_entry *next; +}; + +struct coap_endpoint_t +{ + coap_method_t method; + coap_endpoint_func handler; + const coap_endpoint_path_t *path; + const char *core_attr; + coap_luser_entry *user_entry; +}; + +/////////////////////// +void coap_dumpPacket(coap_packet_t *pkt); +int coap_parse(coap_packet_t *pkt, const uint8_t *buf, size_t buflen); +int coap_buffer_to_string(char *strbuf, size_t strbuflen, const coap_buffer_t *buf); +const coap_option_t *coap_findOptions(const coap_packet_t *pkt, uint8_t num, uint8_t *count); +int coap_build(uint8_t *buf, size_t *buflen, const coap_packet_t *pkt); +void coap_dump(const uint8_t *buf, size_t buflen, bool bare); +int coap_make_response(coap_rw_buffer_t *scratch, coap_packet_t *pkt, const uint8_t *content, size_t content_len, uint8_t msgid_hi, uint8_t msgid_lo, const coap_buffer_t* tok, coap_responsecode_t rspcode, coap_content_type_t content_type); +int coap_handle_req(coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt); +void coap_option_nibble(uint16_t value, uint8_t *nibble); +void coap_setup(void); +void endpoint_setup(void); + +int coap_buildOptionHeader(unsigned short optDelta, size_t length, uint8_t *buf, size_t buflen); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/coap_client.c b/app/coap/coap_client.c new file mode 100644 index 00000000..e6ea0295 --- /dev/null +++ b/app/coap/coap_client.c @@ -0,0 +1,67 @@ +#include "user_config.h" +#include "c_types.h" + +#include "coap.h" +#include "hash.h" +#include "node.h" + +extern coap_queue_t *gQueue; + +void coap_client_response_handler(char *data, unsigned short len, unsigned short size, const uint32_t ip, const uint32_t port) +{ + NODE_DBG("coap_client_response_handler is called.\n"); + coap_packet_t pkt; + int rc; + + if (0 != (rc = coap_parse(&pkt, data, len))){ + NODE_DBG("Bad packet rc=%d\n", rc); + } + else + { +#ifdef COAP_DEBUG + coap_dumpPacket(&pkt); +#endif + /* check if this is a response to our original request */ + if (!check_token(&pkt)) { + /* drop if this was just some message, or send RST in case of notification */ + if (pkt.hdr.t == COAP_TYPE_CON || pkt.hdr.t == COAP_TYPE_NONCON){ + // coap_send_rst(pkt); // send RST response + // or, just ignore it. + } + goto end; + } + + if (pkt.hdr.t == COAP_TYPE_RESET) { + NODE_DBG("got RST\n"); + goto end; + } + + coap_tid_t id = COAP_INVALID_TID; + coap_transaction_id(ip, port, &pkt, &id); + /* transaction done, remove the node from queue */ + // stop timer + coap_timer_stop(); + // remove the node + coap_remove_node(&gQueue, id); + // calculate time elapsed + coap_timer_update(&gQueue); + coap_timer_start(&gQueue); + + if (COAP_RESPONSE_CLASS(pkt.hdr.code) == 2) + { + /* There is no block option set, just read the data and we are done. */ + NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); + NODE_DBG(pkt.payload.p); + } + else if (COAP_RESPONSE_CLASS(pkt.hdr.code) >= 4) + { + NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); + NODE_DBG(pkt.payload.p); + } + } + +end: + if(!gQueue){ // if there is no node pending in the queue, disconnect from host. + + } +} diff --git a/app/coap/coap_client.h b/app/coap/coap_client.h new file mode 100644 index 00000000..5559adfe --- /dev/null +++ b/app/coap/coap_client.h @@ -0,0 +1,14 @@ +#ifndef _COAP_SERVER_H +#define _COAP_SERVER_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +size_t coap_server_respond(char *data, unsigned short len, unsigned short size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/coap_io.c b/app/coap/coap_io.c new file mode 100644 index 00000000..4b93356c --- /dev/null +++ b/app/coap/coap_io.c @@ -0,0 +1,71 @@ +#include "c_string.h" +#include "coap_io.h" +#include "node.h" +#include "espconn.h" +#include "coap_timer.h" + +extern coap_queue_t *gQueue; + +/* releases space allocated by PDU if free_pdu is set */ +coap_tid_t coap_send(struct espconn *pesp_conn, coap_pdu_t *pdu) { + coap_tid_t id = COAP_INVALID_TID; + uint32_t ip = 0, port = 0; + if ( !pesp_conn || !pdu ) + return id; + + espconn_sent(pesp_conn, (unsigned char *)(pdu->msg.p), pdu->msg.len); + + if(pesp_conn->type == ESPCONN_TCP){ + c_memcpy(&ip, pesp_conn->proto.tcp->remote_ip, sizeof(ip)); + port = pesp_conn->proto.tcp->remote_port; + }else{ + c_memcpy(&ip, pesp_conn->proto.udp->remote_ip, sizeof(ip)); + port = pesp_conn->proto.udp->remote_port; + } + coap_transaction_id(ip, port, pdu->pkt, &id); + return id; +} + +coap_tid_t coap_send_confirmed(struct espconn *pesp_conn, coap_pdu_t *pdu) { + coap_queue_t *node; + coap_tick_t diff; + uint32_t r; + + node = coap_new_node(); + if (!node) { + NODE_DBG("coap_send_confirmed: insufficient memory\n"); + return COAP_INVALID_TID; + } + + node->retransmit_cnt = 0; + node->id = coap_send(pesp_conn, pdu); + if (COAP_INVALID_TID == node->id) { + NODE_DBG("coap_send_confirmed: error sending pdu\n"); + coap_free_node(node); + return COAP_INVALID_TID; + } + r = rand(); + + /* add randomized RESPONSE_TIMEOUT to determine retransmission timeout */ + node->timeout = COAP_DEFAULT_RESPONSE_TIMEOUT * COAP_TICKS_PER_SECOND + + (COAP_DEFAULT_RESPONSE_TIMEOUT >> 1) * + ((COAP_TICKS_PER_SECOND * (r & 0xFF)) >> 8); + + node->pconn = pesp_conn; + node->pdu = pdu; + + /* Set timer for pdu retransmission. If this is the first element in + * the retransmission queue, the base time is set to the current + * time and the retransmission time is node->timeout. If there is + * already an entry in the sendqueue, we must check if this node is + * to be retransmitted earlier. Therefore, node->timeout is first + * normalized to the timeout and then inserted into the queue with + * an adjusted relative time. + */ + coap_timer_stop(); + coap_timer_update(&gQueue); + node->t = node->timeout; + coap_insert_node(&gQueue, node); + coap_timer_start(&gQueue); + return node->id; +} diff --git a/app/coap/coap_io.h b/app/coap/coap_io.h new file mode 100644 index 00000000..801b7328 --- /dev/null +++ b/app/coap/coap_io.h @@ -0,0 +1,20 @@ +#ifndef _COAP_IO_H +#define _COAP_IO_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "espconn.h" +#include "pdu.h" +#include "hash.h" + +coap_tid_t coap_send(struct espconn *pesp_conn, coap_pdu_t *pdu); + +coap_tid_t coap_send_confirmed(struct espconn *pesp_conn, coap_pdu_t *pdu); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/coap_server.c b/app/coap/coap_server.c new file mode 100644 index 00000000..d87bd8f7 --- /dev/null +++ b/app/coap/coap_server.c @@ -0,0 +1,53 @@ +#include "user_config.h" +#include "c_types.h" + +#include "coap.h" + +size_t coap_server_respond(char *data, unsigned short len, unsigned short size) +{ + NODE_DBG("coap_server_respond is called.\n"); + if(len>size){ + NODE_DBG("len:%d, size:%d\n",len,size); + return 0; + } + size_t rsplen = size; + coap_packet_t pkt; + uint8_t scratch_raw[4]; + coap_rw_buffer_t scratch_buf = {scratch_raw, sizeof(scratch_raw)}; + int rc; + +#ifdef COAP_DEBUG + NODE_DBG("Received: "); + coap_dump(data, len, true); + NODE_DBG("\n"); +#endif + + if (0 != (rc = coap_parse(&pkt, data, len))){ + NODE_DBG("Bad packet rc=%d\n", rc); + return 0; + } + else + { + coap_packet_t rsppkt; +#ifdef COAP_DEBUG + coap_dumpPacket(&pkt); +#endif + coap_handle_req(&scratch_buf, &pkt, &rsppkt); + if (0 != (rc = coap_build(data, &rsplen, &rsppkt))){ + NODE_DBG("coap_build failed rc=%d\n", rc); + return 0; + } + else + { +#ifdef COAP_DEBUG + NODE_DBG("Responding: "); + coap_dump(data, rsplen, true); + NODE_DBG("\n"); +#endif +#ifdef COAP_DEBUG + coap_dumpPacket(&rsppkt); +#endif + } + return rsplen; + } +} diff --git a/app/coap/coap_server.h b/app/coap/coap_server.h new file mode 100644 index 00000000..5559adfe --- /dev/null +++ b/app/coap/coap_server.h @@ -0,0 +1,14 @@ +#ifndef _COAP_SERVER_H +#define _COAP_SERVER_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +size_t coap_server_respond(char *data, unsigned short len, unsigned short size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/coap_timer.c b/app/coap/coap_timer.c new file mode 100644 index 00000000..9856ef83 --- /dev/null +++ b/app/coap/coap_timer.c @@ -0,0 +1,78 @@ +#include "node.h" +#include "coap_timer.h" +#include "os_type.h" + +static os_timer_t coap_timer; +static coap_tick_t basetime = 0; + +void coap_timer_elapsed(coap_tick_t *diff){ + coap_tick_t now = system_get_time() / 1000; // coap_tick_t is in ms. also sys_timer + if(now>=basetime){ + *diff = now-basetime; + } else { + *diff = now + SYS_TIME_MAX -basetime; + } + basetime = now; +} + +void coap_timer_tick(void *arg){ + if( !arg ) + return; + coap_queue_t **queue = (coap_queue_t **)arg; + if( !(*queue) ) + return; + + coap_queue_t *node = coap_pop_next( queue ); + /* re-initialize timeout when maximum number of retransmissions are not reached yet */ + if (node->retransmit_cnt < COAP_DEFAULT_MAX_RETRANSMIT) { + node->retransmit_cnt++; + node->t = node->timeout << node->retransmit_cnt; + + NODE_DBG("** retransmission #%d of transaction %d\n", + node->retransmit_cnt, (((uint16_t)(node->pdu->pkt->hdr.id[0]))<<8)+node->pdu->pkt->hdr.id[1]); + node->id = coap_send(node->pconn, node->pdu); + if (COAP_INVALID_TID == node->id) { + NODE_DBG("retransmission: error sending pdu\n"); + coap_delete_node(node); + } else { + coap_insert_node(queue, node); + } + } else { + /* And finally delete the node */ + coap_delete_node( node ); + } + + coap_timer_start(queue); +} + +void coap_timer_setup(coap_queue_t ** queue, coap_tick_t t){ + os_timer_disarm(&coap_timer); + os_timer_setfn(&coap_timer, (os_timer_func_t *)coap_timer_tick, queue); + os_timer_arm(&coap_timer, t, 0); // no repeat +} + +void coap_timer_stop(void){ + os_timer_disarm(&coap_timer); +} + +void coap_timer_update(coap_queue_t ** queue){ + if (!queue) + return; + coap_tick_t diff = 0; + coap_queue_t *first = *queue; + coap_timer_elapsed(&diff); // update: basetime = now, diff = now - oldbase, means time elapsed + if (first) { + // diff ms time is elapsed, re-calculate the first node->t + if (first->t >= diff){ + first->t -= diff; + } else { + first->t = 0; // when timer enabled, time out almost immediately + } + } +} + +void coap_timer_start(coap_queue_t ** queue){ + if(*queue){ // if there is node in the queue, set timeout to its ->t. + coap_timer_setup(queue, (*queue)->t); + } +} diff --git a/app/coap/coap_timer.h b/app/coap/coap_timer.h new file mode 100644 index 00000000..7f14a527 --- /dev/null +++ b/app/coap/coap_timer.h @@ -0,0 +1,31 @@ +#ifndef _COAP_TIMER_H +#define _COAP_TIMER_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "node.h" + +#define SYS_TIME_MAX (0xFFFFFFFF / 1000) + +#define COAP_DEFAULT_RESPONSE_TIMEOUT 2 /* response timeout in seconds */ +#define COAP_DEFAULT_MAX_RETRANSMIT 4 /* max number of retransmissions */ +#define COAP_TICKS_PER_SECOND 1000 // ms +#define DEFAULT_MAX_TRANSMIT_WAIT 90 + +void coap_timer_elapsed(coap_tick_t *diff); + +void coap_timer_setup(coap_queue_t ** queue, coap_tick_t t); + +void coap_timer_stop(void); + +void coap_timer_update(coap_queue_t ** queue); + +void coap_timer_start(coap_queue_t ** queue); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/endpoints.c b/app/coap/endpoints.c new file mode 100644 index 00000000..4fd4da48 --- /dev/null +++ b/app/coap/endpoints.c @@ -0,0 +1,282 @@ +#include "c_stdio.h" +#include "c_string.h" +#include "coap.h" + +#include "lua.h" +#include "lauxlib.h" +#include "lualib.h" + +#include "os_type.h" + +static char rsp[MAX_PAYLOAD_SIZE] = ""; +const uint16_t rsplen = MAX_PAYLOAD_SIZE; +void build_well_known_rsp(void); + +void endpoint_setup(void) +{ + coap_setup(); + build_well_known_rsp(); +} + +static const coap_endpoint_path_t path_well_known_core = {2, {".well-known", "core"}}; +static int handle_get_well_known_core(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo) +{ + return coap_make_response(scratch, outpkt, (const uint8_t *)rsp, c_strlen(rsp), id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_APPLICATION_LINKFORMAT); +} + +static const coap_endpoint_path_t path_variable = {2, {"v1", "v"}}; +static int handle_get_variable(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo) +{ + const coap_option_t *opt; + uint8_t count; + if (NULL != (opt = coap_findOptions(inpkt, COAP_OPTION_URI_PATH, &count))) + { + if ((count != ep->path->count ) && (count != ep->path->count + 1)) // +1 for /f/[function], /v/[variable] + { + NODE_DBG("should never happen.\n"); + goto end; + } + if (count == ep->path->count + 1) + { + coap_luser_entry *h = ep->user_entry->next; // ->next: skip the first entry(head) + while(NULL != h){ + if (opt[count-1].buf.len != c_strlen(h->name)) + { + h = h->next; + continue; + } + if (0 == c_memcmp(h->name, opt[count-1].buf.p, opt[count-1].buf.len)) + { + NODE_DBG("/v1/v/"); + NODE_DBG(h->name); + NODE_DBG(" match.\n"); + if(h->L == NULL) + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + if(c_strlen(h->name)) + { + lua_getglobal(h->L, h->name); + if (!lua_isnumber(h->L, -1)) { + NODE_DBG ("should be a number.\n"); + lua_pop(h->L, 1); + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + } else { + const char *res = lua_tostring(h->L,-1); + lua_pop(h->L, 1); + return coap_make_response(scratch, outpkt, (const uint8_t *)res, c_strlen(res), id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); + } + } + } else { + h = h->next; + } + } + }else{ + NODE_DBG("/v1/v match.\n"); + goto end; + } + } + NODE_DBG("none match.\n"); +end: + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); +} + +static const coap_endpoint_path_t path_function = {2, {"v1", "f"}}; +static int handle_post_function(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo) +{ + const coap_option_t *opt; + uint8_t count; + if (NULL != (opt = coap_findOptions(inpkt, COAP_OPTION_URI_PATH, &count))) + { + if ((count != ep->path->count ) && (count != ep->path->count + 1)) // +1 for /f/[function], /v/[variable] + { + NODE_DBG("should never happen.\n"); + goto end; + } + if (count == ep->path->count + 1) + { + coap_luser_entry *h = ep->user_entry->next; // ->next: skip the first entry(head) + while(NULL != h){ + if (opt[count-1].buf.len != c_strlen(h->name)) + { + h = h->next; + continue; + } + if (0 == c_memcmp(h->name, opt[count-1].buf.p, opt[count-1].buf.len)) + { + NODE_DBG("/v1/f/"); + NODE_DBG(h->name); + NODE_DBG(" match.\n"); + + if(h->L == NULL) + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + + if(c_strlen(h->name)) + { + lua_getglobal(h->L, h->name); + if (lua_type(h->L, -1) != LUA_TFUNCTION) { + NODE_DBG ("should be a function\n"); + lua_pop(h->L, 1); + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + } else { + lua_pushlstring(h->L, inpkt->payload.p, inpkt->payload.len); // make sure payload.p is filled with '\0' after payload.len, or use lua_pushlstring + lua_call(h->L, 1, 1); + if (!lua_isnil(h->L, -1)){ /* get return? */ + if( lua_isstring(h->L, -1) ) // deal with the return string + { + size_t len = 0; + const char *ret = luaL_checklstring( h->L, -1, &len ); + if(len > MAX_PAYLOAD_SIZE){ + luaL_error( h->L, "return string:tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); + } + NODE_DBG(ret); + NODE_DBG("\n"); + return coap_make_response(scratch, outpkt, ret, len, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); + } + } else { + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); + } + } + } + } else { + h = h->next; + } + } + }else{ + NODE_DBG("/v1/f match.\n"); + goto end; + } + } + NODE_DBG("none match.\n"); +end: + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); +} + +extern lua_Load gLoad; +extern os_timer_t lua_timer; +extern void dojob(lua_Load *load); +static const coap_endpoint_path_t path_command = {2, {"v1", "c"}}; +static int handle_post_command(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo) +{ + if (inpkt->payload.len == 0) + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_BAD_REQUEST, COAP_CONTENTTYPE_TEXT_PLAIN); + if (inpkt->payload.len > 0) + { + lua_Load *load = &gLoad; + if(load->line_position == 0){ + coap_buffer_to_string(load->line, load->len,&inpkt->payload); + load->line_position = c_strlen(load->line)+1; + // load->line[load->line_position-1] = '\n'; + // load->line[load->line_position] = 0; + // load->line_position++; + load->done = 1; + NODE_DBG("Get command:\n"); + NODE_DBG(load->line); // buggy here + NODE_DBG("\nResult(if any):\n"); + os_timer_disarm(&lua_timer); + os_timer_setfn(&lua_timer, (os_timer_func_t *)dojob, load); + os_timer_arm(&lua_timer, READLINE_INTERVAL, 0); // no repeat + } + return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); + } +} + +static uint32_t id = 0; +static const coap_endpoint_path_t path_id = {2, {"v1", "id"}}; +static int handle_get_id(const coap_endpoint_t *ep, coap_rw_buffer_t *scratch, const coap_packet_t *inpkt, coap_packet_t *outpkt, uint8_t id_hi, uint8_t id_lo) +{ + id = system_get_chip_id(); + return coap_make_response(scratch, outpkt, (const uint8_t *)(&id), sizeof(uint32_t), id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); +} + +coap_luser_entry var_head = {NULL,NULL,NULL}; +coap_luser_entry *variable_entry = &var_head; + +coap_luser_entry func_head = {NULL,NULL,NULL}; +coap_luser_entry *function_entry = &func_head; + +const coap_endpoint_t endpoints[] = +{ + {COAP_METHOD_GET, handle_get_well_known_core, &path_well_known_core, "ct=40", NULL}, + {COAP_METHOD_GET, handle_get_variable, &path_variable, "ct=0", &var_head}, + {COAP_METHOD_POST, handle_post_function, &path_function, NULL, &func_head}, + {COAP_METHOD_POST, handle_post_command, &path_command, NULL, NULL}, + {COAP_METHOD_GET, handle_get_id, &path_id, "ct=0", NULL}, + {(coap_method_t)0, NULL, NULL, NULL, NULL} +}; + +void build_well_known_rsp(void) +{ + const coap_endpoint_t *ep = endpoints; + int i; + uint16_t len = rsplen; + + c_memset(rsp, 0, sizeof(rsp)); + + len--; // Null-terminated string + + while(NULL != ep->handler) + { + if (NULL == ep->core_attr) { + ep++; + continue; + } + if (NULL == ep->user_entry){ + if (0 < c_strlen(rsp)) { + c_strncat(rsp, ",", len); + len--; + } + + c_strncat(rsp, "<", len); + len--; + + for (i = 0; i < ep->path->count; i++) { + c_strncat(rsp, "/", len); + len--; + + c_strncat(rsp, ep->path->elems[i], len); + len -= c_strlen(ep->path->elems[i]); + } + + c_strncat(rsp, ">;", len); + len -= 2; + + c_strncat(rsp, ep->core_attr, len); + len -= c_strlen(ep->core_attr); + } else { + coap_luser_entry *h = ep->user_entry->next; // ->next: skip the first entry(head) + while(NULL != h){ + if (0 < c_strlen(rsp)) { + c_strncat(rsp, ",", len); + len--; + } + + c_strncat(rsp, "<", len); + len--; + + for (i = 0; i < ep->path->count; i++) { + c_strncat(rsp, "/", len); + len--; + + c_strncat(rsp, ep->path->elems[i], len); + len -= c_strlen(ep->path->elems[i]); + } + + c_strncat(rsp, "/", len); + len--; + + c_strncat(rsp, h->name, len); + len -= c_strlen(h->name); + + c_strncat(rsp, ">;", len); + len -= 2; + + c_strncat(rsp, ep->core_attr, len); + len -= c_strlen(ep->core_attr); + + h = h->next; + } + } + ep++; + } +} + diff --git a/app/coap/hash.c b/app/coap/hash.c new file mode 100644 index 00000000..6e6c3a24 --- /dev/null +++ b/app/coap/hash.c @@ -0,0 +1,30 @@ +#include "hash.h" +#include "c_string.h" +/* Caution: When changing this, update COAP_DEFAULT_WKC_HASHKEY + * accordingly (see int coap_hash_path()); + */ +void coap_hash(const unsigned char *s, unsigned int len, coap_key_t h) { + size_t j; + + while (len--) { + j = sizeof(coap_key_t)-1; + + while (j) { + h[j] = ((h[j] << 7) | (h[j-1] >> 1)) + h[j]; + --j; + } + + h[0] = (h[0] << 7) + h[0] + *s++; + } +} + +void coap_transaction_id(const uint32_t ip, const uint32_t port, const coap_packet_t *pkt, coap_tid_t *id) { + coap_key_t h; + c_memset(h, 0, sizeof(coap_key_t)); + + /* Compare the transport address. */ + coap_hash((const unsigned char *)&(port), sizeof(port), h); + coap_hash((const unsigned char *)&(ip), sizeof(ip), h); + coap_hash((const unsigned char *)(pkt->hdr.id), sizeof(pkt->hdr.id), h); + *id = ((h[0] << 8) | h[1]) ^ ((h[2] << 8) | h[3]); +} diff --git a/app/coap/hash.h b/app/coap/hash.h new file mode 100644 index 00000000..3980089d --- /dev/null +++ b/app/coap/hash.h @@ -0,0 +1,23 @@ +#ifndef _HASH_H +#define _HASH_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "coap.h" + +typedef unsigned char coap_key_t[4]; + +/* CoAP transaction id */ +/*typedef unsigned short coap_tid_t; */ +typedef int coap_tid_t; +#define COAP_INVALID_TID -1 + +void coap_transaction_id(const uint32_t ip, const uint32_t port, const coap_packet_t *pkt, coap_tid_t *id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/node.c b/app/coap/node.c new file mode 100644 index 00000000..5eeb7269 --- /dev/null +++ b/app/coap/node.c @@ -0,0 +1,141 @@ +#include "c_string.h" +#include "c_stdlib.h" +#include "node.h" + +static inline coap_queue_t * +coap_malloc_node(void) { + return (coap_queue_t *)c_zalloc(sizeof(coap_queue_t)); +} + +void coap_free_node(coap_queue_t *node) { + c_free(node); +} + +int coap_insert_node(coap_queue_t **queue, coap_queue_t *node) { + coap_queue_t *p, *q; + if ( !queue || !node ) + return 0; + + /* set queue head if empty */ + if ( !*queue ) { + *queue = node; + return 1; + } + + /* replace queue head if PDU's time is less than head's time */ + q = *queue; + if (node->t < q->t) { + node->next = q; + *queue = node; + q->t -= node->t; /* make q->t relative to node->t */ + return 1; + } + + /* search for right place to insert */ + do { + node->t -= q->t; /* make node-> relative to q->t */ + p = q; + q = q->next; + } while (q && q->t <= node->t); + + /* insert new item */ + if (q) { + q->t -= node->t; /* make q->t relative to node->t */ + } + node->next = q; + p->next = node; + return 1; +} + +int coap_delete_node(coap_queue_t *node) { + if ( !node ) + return 0; + + coap_delete_pdu(node->pdu); + coap_free_node(node); + + return 1; +} + +void coap_delete_all(coap_queue_t *queue) { + if ( !queue ) + return; + + coap_delete_all( queue->next ); + coap_delete_node( queue ); +} + +coap_queue_t * coap_new_node(void) { + coap_queue_t *node; + node = coap_malloc_node(); + + if ( ! node ) { + return NULL; + } + + c_memset(node, 0, sizeof(*node)); + return node; +} + +coap_queue_t * coap_peek_next( coap_queue_t *queue ) { + if ( !queue ) + return NULL; + + return queue; +} + +coap_queue_t * coap_pop_next( coap_queue_t **queue ) { // this function is called inside timeout callback only. + coap_queue_t *next; + + if ( !(*queue) ) + return NULL; + + next = *queue; + *queue = (*queue)->next; + // if (queue) { + // queue->t += next->t; + // } + next->next = NULL; + return next; +} + +int coap_remove_node( coap_queue_t **queue, const coap_tid_t id){ + coap_queue_t *p, *q, *node; + if ( !queue ) + return 0; + if ( !*queue ) // if empty + return 0; + + q = *queue; + if (q->id == id) { + node = q; + *queue = q->next; + node->next = NULL; + if(*queue){ + (*queue)->t += node->t; + } + coap_delete_node(node); + return 1; + } + + /* search for right node to remove */ + while (q && q->id != id) { + p = q; + q = q->next; + } + + /* find the node */ + if (q) { + node = q; /* save the node */ + p->next = q->next; /* remove the node */ + q = q->next; + node->next = NULL; + if (q) // add node->t to the node after. + { + q->t += node->t; + } + coap_delete_node(node); + return 1; + } + return 0; +} diff --git a/app/coap/node.h b/app/coap/node.h new file mode 100644 index 00000000..af06ee10 --- /dev/null +++ b/app/coap/node.h @@ -0,0 +1,58 @@ +#ifndef _NODE_H +#define _NODE_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "hash.h" +#include "pdu.h" + +struct coap_queue_t; +typedef uint32_t coap_tick_t; + +/* +1. queue(first)->t store when to send PDU for the next time, it's a base(absolute) time +2. queue->next->t store the delta between time and base-time. queue->next->t = timeout + now - basetime +3. node->next->t store the delta between time and previous->t. node->next->t = timeout + now - node->t - basetime +4. time to fire: 10, 15, 18, 25 + node->t: 10, 5, 3, 7 +*/ + +typedef struct coap_queue_t { + struct coap_queue_t *next; + + coap_tick_t t; /**< when to send PDU for the next time */ + unsigned char retransmit_cnt; /**< retransmission counter, will be removed when zero */ + unsigned int timeout; /**< the randomized timeout value */ + + coap_tid_t id; /**< unique transaction id */ + + // coap_packet_t *pkt; + coap_pdu_t *pdu; /**< the CoAP PDU to send */ + struct espconn *pconn; +} coap_queue_t; + +void coap_free_node(coap_queue_t *node); + +/** Adds node to given queue, ordered by node->t. */ +int coap_insert_node(coap_queue_t **queue, coap_queue_t *node); + +/** Destroys specified node. */ +int coap_delete_node(coap_queue_t *node); + +/** Removes all items from given queue and frees the allocated storage. */ +void coap_delete_all(coap_queue_t *queue); + +/** Creates a new node suitable for adding to the CoAP sendqueue. */ +coap_queue_t *coap_new_node(void); + +coap_queue_t *coap_pop_next( coap_queue_t **queue ); + +int coap_remove_node( coap_queue_t **queue, const coap_tid_t id); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/pdu.c b/app/coap/pdu.c new file mode 100644 index 00000000..8313146c --- /dev/null +++ b/app/coap/pdu.c @@ -0,0 +1,63 @@ +#include "c_stdlib.h" +#include "pdu.h" + +coap_pdu_t * coap_new_pdu(void) { + coap_pdu_t *pdu = NULL; + pdu = (coap_pdu_t *)c_zalloc(sizeof(coap_pdu_t)); + if(!pdu){ + NODE_DBG("coap_new_pdu malloc error.\n"); + return NULL; + } + + pdu->scratch.p = (uint8_t *)c_zalloc(MAX_REQ_SCRATCH_SIZE); + if(!pdu->scratch.p){ + NODE_DBG("coap_new_pdu malloc error.\n"); + c_free(pdu); + return NULL; + } + pdu->scratch.len = MAX_REQ_SCRATCH_SIZE; + + pdu->pkt = (coap_packet_t *)c_zalloc(sizeof(coap_packet_t)); + if(!pdu->pkt){ + NODE_DBG("coap_new_pdu malloc error.\n"); + c_free(pdu->scratch.p); + c_free(pdu); + return NULL; + } + + pdu->msg.p = (uint8_t *)c_zalloc(MAX_REQUEST_SIZE+1); // +1 for string '\0' + if(!pdu->msg.p){ + NODE_DBG("coap_new_pdu malloc error.\n"); + c_free(pdu->pkt); + c_free(pdu->scratch.p); + c_free(pdu); + return NULL; + } + pdu->msg.len = MAX_REQUEST_SIZE; + return pdu; +} + +void coap_delete_pdu(coap_pdu_t *pdu){ + if(!pdu) + return; + + if(pdu->scratch.p){ + c_free(pdu->scratch.p); + pdu->scratch.p = NULL; + pdu->scratch.len = 0; + } + + if(pdu->pkt){ + c_free(pdu->pkt); + pdu->pkt = NULL; + } + + if(pdu->msg.p){ + c_free(pdu->msg.p); + pdu->msg.p = NULL; + pdu->msg.len = 0; + } + + c_free(pdu); + pdu = NULL; +} diff --git a/app/coap/pdu.h b/app/coap/pdu.h new file mode 100644 index 00000000..cd5154da --- /dev/null +++ b/app/coap/pdu.h @@ -0,0 +1,25 @@ +#ifndef _PDU_H +#define _PDU_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include "coap.h" + +/** Header structure for CoAP PDUs */ +typedef struct { + coap_rw_buffer_t scratch; + coap_packet_t *pkt; + coap_rw_buffer_t msg; /**< the CoAP msg to send */ +} coap_pdu_t; + +coap_pdu_t *coap_new_pdu(void); + +void coap_delete_pdu(coap_pdu_t *pdu); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/app/coap/str.c b/app/coap/str.c new file mode 100644 index 00000000..df2f84be --- /dev/null +++ b/app/coap/str.c @@ -0,0 +1,28 @@ +/* str.c -- strings to be used in the CoAP library + * + * Copyright (C) 2010,2011 Olaf Bergmann + * + * This file is part of the CoAP library libcoap. Please see + * README for terms of use. + */ + +#include "c_stdlib.h" +#include "c_types.h" + +#include "str.h" + +str * coap_new_string(size_t size) { + str *s = (str *)c_malloc(sizeof(str) + size + 1); + if ( !s ) { + return NULL; + } + + c_memset(s, 0, sizeof(str)); + s->s = ((unsigned char *)s) + sizeof(str); + return s; +} + +void coap_delete_string(str *s) { + c_free(s); +} + diff --git a/app/coap/str.h b/app/coap/str.h new file mode 100644 index 00000000..c33045b3 --- /dev/null +++ b/app/coap/str.h @@ -0,0 +1,30 @@ +/* str.h -- strings to be used in the CoAP library + * + * Copyright (C) 2010,2011 Olaf Bergmann + * + * This file is part of the CoAP library libcoap. Please see + * README for terms of use. + */ + +#ifndef _COAP_STR_H_ +#define _COAP_STR_H_ + +#include "c_string.h" + +typedef struct { + size_t length; /* length of string */ + unsigned char *s; /* string data */ +} str; + +#define COAP_SET_STR(st,l,v) { (st)->length = (l), (st)->s = (v); } + +/** + * Returns a new string object with at least size bytes storage + * allocated. The string must be released using coap_delete_string(); + */ +str *coap_new_string(size_t size); + +/** Deletes the given string and releases any memory allocated. */ +void coap_delete_string(str *); + +#endif /* _COAP_STR_H_ */ diff --git a/app/coap/uri.c b/app/coap/uri.c new file mode 100644 index 00000000..d93cf4dc --- /dev/null +++ b/app/coap/uri.c @@ -0,0 +1,468 @@ +/* uri.c -- helper functions for URI treatment + */ + +#include "c_stdio.h" +#include "c_stdlib.h" +#include "c_string.h" +#include "c_ctype.h" + +#include "coap.h" +#include "uri.h" + +#ifndef assert +// #warning "assertions are disabled" +# define assert(x) do { \ + if(!x) NODE_ERR("uri.c assert!\n"); \ + } while (0) +#endif + + +/** + * A length-safe version of strchr(). This function returns a pointer + * to the first occurrence of @p c in @p s, or @c NULL if not found. + * + * @param s The string to search for @p c. + * @param len The length of @p s. + * @param c The character to search. + * + * @return A pointer to the first occurence of @p c, or @c NULL + * if not found. + */ +static inline unsigned char * +strnchr(unsigned char *s, size_t len, unsigned char c) { + while (len && *s++ != c) + --len; + + return len ? s : NULL; +} + +int coap_split_uri(unsigned char *str_var, size_t len, coap_uri_t *uri) { + unsigned char *p, *q; + int secure = 0, res = 0; + + if (!str_var || !uri) + return -1; + + c_memset(uri, 0, sizeof(coap_uri_t)); + uri->port = COAP_DEFAULT_PORT; + + /* search for scheme */ + p = str_var; + if (*p == '/') { + q = p; + goto path; + } + + q = (unsigned char *)COAP_DEFAULT_SCHEME; + while (len && *q && tolower(*p) == *q) { + ++p; ++q; --len; + } + + /* If q does not point to the string end marker '\0', the schema + * identifier is wrong. */ + if (*q) { + res = -1; + goto error; + } + + /* There might be an additional 's', indicating the secure version: */ + if (len && (secure = tolower(*p) == 's')) { + ++p; --len; + } + + q = (unsigned char *)"://"; + while (len && *q && tolower(*p) == *q) { + ++p; ++q; --len; + } + + if (*q) { + res = -2; + goto error; + } + + /* p points to beginning of Uri-Host */ + q = p; + if (len && *p == '[') { /* IPv6 address reference */ + ++p; + + while (len && *q != ']') { + ++q; --len; + } + + if (!len || *q != ']' || p == q) { + res = -3; + goto error; + } + + COAP_SET_STR(&uri->host, q - p, p); + ++q; --len; + } else { /* IPv4 address or FQDN */ + while (len && *q != ':' && *q != '/' && *q != '?') { + *q = tolower(*q); + ++q; + --len; + } + + if (p == q) { + res = -3; + goto error; + } + + COAP_SET_STR(&uri->host, q - p, p); + } + + /* check for Uri-Port */ + if (len && *q == ':') { + p = ++q; + --len; + + while (len && isdigit(*q)) { + ++q; + --len; + } + + if (p < q) { /* explicit port number given */ + int uri_port = 0; + + while (p < q) + uri_port = uri_port * 10 + (*p++ - '0'); + + uri->port = uri_port; + } + } + + path: /* at this point, p must point to an absolute path */ + + if (!len) + goto end; + + if (*q == '/') { + p = ++q; + --len; + + while (len && *q != '?') { + ++q; + --len; + } + + if (p < q) { + COAP_SET_STR(&uri->path, q - p, p); + p = q; + } + } + + /* Uri_Query */ + if (len && *p == '?') { + ++p; + --len; + COAP_SET_STR(&uri->query, len, p); + len = 0; + } + + end: + return len ? -1 : 0; + + error: + return res; +} + +/** + * Calculates decimal value from hexadecimal ASCII character given in + * @p c. The caller must ensure that @p c actually represents a valid + * heaxdecimal character, e.g. with isxdigit(3). + * + * @hideinitializer + */ +#define hexchar_to_dec(c) ((c) & 0x40 ? ((c) & 0x0F) + 9 : ((c) & 0x0F)) + +/** + * Decodes percent-encoded characters while copying the string @p seg + * of size @p length to @p buf. The caller of this function must + * ensure that the percent-encodings are correct (i.e. the character + * '%' is always followed by two hex digits. and that @p buf provides + * sufficient space to hold the result. This function is supposed to + * be called by make_decoded_option() only. + * + * @param seg The segment to decode and copy. + * @param length Length of @p seg. + * @param buf The result buffer. + */ +void decode_segment(const unsigned char *seg, size_t length, unsigned char *buf) { + + while (length--) { + + if (*seg == '%') { + *buf = (hexchar_to_dec(seg[1]) << 4) + hexchar_to_dec(seg[2]); + + seg += 2; length -= 2; + } else { + *buf = *seg; + } + + ++buf; ++seg; + } +} + +/** + * Runs through the given path (or query) segment and checks if + * percent-encodings are correct. This function returns @c -1 on error + * or the length of @p s when decoded. + */ +int check_segment(const unsigned char *s, size_t length) { + + size_t n = 0; + + while (length) { + if (*s == '%') { + if (length < 2 || !(isxdigit(s[1]) && isxdigit(s[2]))) + return -1; + + s += 2; + length -= 2; + } + + ++s; ++n; --length; + } + + return n; +} + +/** + * Writes a coap option from given string @p s to @p buf. @p s should + * point to a (percent-encoded) path or query segment of a coap_uri_t + * object. The created option will have type @c 0, and the length + * parameter will be set according to the size of the decoded string. + * On success, this function returns the option's size, or a value + * less than zero on error. This function must be called from + * coap_split_path_impl() only. + * + * @param s The string to decode. + * @param length The size of the percent-encoded string @p s. + * @param buf The buffer to store the new coap option. + * @param buflen The maximum size of @p buf. + * + * @return The option's size, or @c -1 on error. + * + * @bug This function does not split segments that are bigger than 270 + * bytes. + */ +int make_decoded_option(const unsigned char *s, size_t length, + unsigned char *buf, size_t buflen) { + int res; + size_t written; + + if (!buflen) { + NODE_DBG("make_decoded_option(): buflen is 0!\n"); + return -1; + } + + res = check_segment(s, length); + if (res < 0) + return -1; + + /* write option header using delta 0 and length res */ + // written = coap_opt_setheader(buf, buflen, 0, res); + written = coap_buildOptionHeader(0, res, buf, buflen); + + assert(written <= buflen); + + if (!written) /* encoding error */ + return -1; + + buf += written; /* advance past option type/length */ + buflen -= written; + + if (buflen < (size_t)res) { + NODE_DBG("buffer too small for option\n"); + return -1; + } + + decode_segment(s, length, buf); + + return written + res; +} + + +#ifndef min +#define min(a,b) ((a) < (b) ? (a) : (b)) +#endif + +typedef void (*segment_handler_t)(unsigned char *, size_t, void *); + +/** + * Splits the given string into segments. You should call one of the + * macros coap_split_path() or coap_split_query() instead. + * + * @param parse_iter The iterator used for tokenizing. + * @param h A handler that is called with every token. + * @param data Opaque data that is passed to @p h when called. + * + * @return The number of characters that have been parsed from @p s. + */ +size_t coap_split_path_impl(coap_parse_iterator_t *parse_iter, + segment_handler_t h, void *data) { + unsigned char *seg; + size_t length; + + assert(parse_iter); + assert(h); + + length = parse_iter->n; + + while ( (seg = coap_parse_next(parse_iter)) ) { + + /* any valid path segment is handled here: */ + h(seg, parse_iter->segment_length, data); + } + + return length - (parse_iter->n - parse_iter->segment_length); +} + +struct pkt_scr { + coap_packet_t *pkt; + coap_rw_buffer_t *scratch; + int n; +}; + +void write_option(unsigned char *s, size_t len, void *data) { + struct pkt_scr *state = (struct pkt_scr *)data; + int res; + assert(state); + + /* skip empty segments and those that consist of only one or two dots */ + if (memcmp(s, "..", min(len,2)) == 0) + return; + + res = check_segment(s, len); + if (res < 0){ + NODE_DBG("not a valid segment\n"); + return; + } + + if (state->scratch->len < (size_t)res) { + NODE_DBG("buffer too small for option\n"); + return; + } + + decode_segment(s, len, state->scratch->p); + + if (res > 0) { + state->pkt->opts[state->pkt->numopts].buf.p = state->scratch->p; + state->pkt->opts[state->pkt->numopts].buf.len = res; + state->scratch->p += res; + state->scratch->len -= res; + state->pkt->numopts++; + state->n++; + } +} + +int coap_split_path(coap_rw_buffer_t *scratch, coap_packet_t *pkt, const unsigned char *s, size_t length) { + struct pkt_scr tmp = { pkt, scratch, 0 }; + coap_parse_iterator_t pi; + + coap_parse_iterator_init((unsigned char *)s, length, + '/', (unsigned char *)"?#", 2, &pi); + coap_split_path_impl(&pi, write_option, &tmp); + + int i; + for(i=0;iopts[pkt->numopts - i - 1].num = COAP_OPTION_URI_PATH; + } + + return tmp.n; +} + +int coap_split_query(coap_rw_buffer_t *scratch, coap_packet_t *pkt, const unsigned char *s, size_t length) { + struct pkt_scr tmp = { pkt, scratch, 0 }; + coap_parse_iterator_t pi; + + coap_parse_iterator_init((unsigned char *)s, length, + '&', (unsigned char *)"#", 1, &pi); + + coap_split_path_impl(&pi, write_option, &tmp); + + int i; + for(i=0;iopts[pkt->numopts - i - 1].num = COAP_OPTION_URI_QUERY; + } + + return tmp.n; +} + +#define URI_DATA(uriobj) ((unsigned char *)(uriobj) + sizeof(coap_uri_t)) + +coap_uri_t * coap_new_uri(const unsigned char *uri, unsigned int length) { + unsigned char *result; + + result = (unsigned char *)c_malloc(length + 1 + sizeof(coap_uri_t)); + + if (!result) + return NULL; + + c_memcpy(URI_DATA(result), uri, length); + URI_DATA(result)[length] = '\0'; /* make it zero-terminated */ + + if (coap_split_uri(URI_DATA(result), length, (coap_uri_t *)result) < 0) { + c_free(result); + return NULL; + } + return (coap_uri_t *)result; +} + +/* iterator functions */ + +coap_parse_iterator_t * coap_parse_iterator_init(unsigned char *s, size_t n, + unsigned char separator, + unsigned char *delim, size_t dlen, + coap_parse_iterator_t *pi) { + assert(pi); + assert(separator); + + pi->separator = separator; + pi->delim = delim; + pi->dlen = dlen; + pi->pos = s; + pi->n = n; + pi->segment_length = 0; + + return pi; +} + +unsigned char * coap_parse_next(coap_parse_iterator_t *pi) { + unsigned char *p; + + if (!pi) + return NULL; + + /* proceed to the next segment */ + pi->n -= pi->segment_length; + pi->pos += pi->segment_length; + pi->segment_length = 0; + + /* last segment? */ + if (!pi->n || strnchr(pi->delim, pi->dlen, *pi->pos)) { + pi->pos = NULL; + return NULL; + } + + /* skip following separator (the first segment might not have one) */ + if (*pi->pos == pi->separator) { + ++pi->pos; + --pi->n; + } + + p = pi->pos; + + while (pi->segment_length < pi->n && *p != pi->separator && + !strnchr(pi->delim, pi->dlen, *p)) { + ++p; + ++pi->segment_length; + } + + if (!pi->n) { + pi->pos = NULL; + pi->segment_length = 0; + } + + return pi->pos; +} diff --git a/app/coap/uri.h b/app/coap/uri.h new file mode 100644 index 00000000..da1ef28a --- /dev/null +++ b/app/coap/uri.h @@ -0,0 +1,166 @@ +/* uri.h -- helper functions for URI treatment + * + * Copyright (C) 2010,2011 Olaf Bergmann + * + * This file is part of the CoAP library libcoap. Please see + * README for terms of use. + */ + +#ifndef _COAP_URI_H_ +#define _COAP_URI_H_ + +#define COAP_DEFAULT_SCHEME "coap" /* the default scheme for CoAP URIs */ +#define COAP_DEFAULT_PORT 5683 + +#include "str.h" + +/** Representation of parsed URI. Components may be filled from a + * string with coap_split_uri() and can be used as input for + * option-creation functions. */ +typedef struct { + str host; /**< host part of the URI */ + unsigned short port; /**< The port in host byte order */ + str path; /**< Beginning of the first path segment. + Use coap_split_path() to create Uri-Path options */ + str query; /**< The query part if present */ +} coap_uri_t; + +/** + * Creates a new coap_uri_t object from the specified URI. Returns the new + * object or NULL on error. The memory allocated by the new coap_uri_t + * must be released using coap_free(). + * @param uri The URI path to copy. + * @para length The length of uri. + * + * @return New URI object or NULL on error. + */ +coap_uri_t *coap_new_uri(const unsigned char *uri, unsigned int length); + +/** + * @defgroup uri_parse URI Parsing Functions + * + * CoAP PDUs contain normalized URIs with their path and query split into + * multiple segments. The functions in this module help splitting strings. + * @{ + */ + +/** + * Iterator to for tokenizing a URI path or query. This structure must + * be initialized with coap_parse_iterator_init(). Call + * coap_parse_next() to walk through the tokens. + * + * @code + * unsigned char *token; + * coap_parse_iterator_t pi; + * coap_parse_iterator_init(uri.path.s, uri.path.length, '/', "?#", 2, &pi); + * + * while ((token = coap_parse_next(&pi))) { + * ... do something with token ... + * } + * @endcode + */ +typedef struct { + size_t n; /**< number of remaining characters in buffer */ + unsigned char separator; /**< segment separators */ + unsigned char *delim; /**< delimiters where to split the string */ + size_t dlen; /**< length of separator */ + unsigned char *pos; /**< current position in buffer */ + size_t segment_length; /**< length of current segment */ +} coap_parse_iterator_t; + +/** + * Initializes the given iterator @p pi. + * + * @param s The string to tokenize. + * @param n The length of @p s. + * @param separator The separator character that delimits tokens. + * @param delim A set of characters that delimit @s. + * @param dlen The length of @p delim. + * @param pi The iterator object to initialize. + * + * @return The initialized iterator object @p pi. + */ +coap_parse_iterator_t * +coap_parse_iterator_init(unsigned char *s, size_t n, + unsigned char separator, + unsigned char *delim, size_t dlen, + coap_parse_iterator_t *pi); + +/** + * Updates the iterator @p pi to point to the next token. This + * function returns a pointer to that token or @c NULL if no more + * tokens exist. The contents of @p pi will be updated. In particular, + * @c pi->segment_length specifies the length of the current token, @c + * pi->pos points to its beginning. + * + * @param pi The iterator to update. + * + * @return The next token or @c NULL if no more tokens exist. + */ +unsigned char *coap_parse_next(coap_parse_iterator_t *pi); + +/** + * Parses a given string into URI components. The identified syntactic + * components are stored in the result parameter @p uri. Optional URI + * components that are not specified will be set to { 0, 0 }, except + * for the port which is set to @c COAP_DEFAULT_PORT. This function + * returns @p 0 if parsing succeeded, a value less than zero + * otherwise. + * + * @param str_var The string to split up. + * @param len The actual length of @p str_var + * @param uri The coap_uri_t object to store the result. + * @return @c 0 on success, or < 0 on error. + * + * @note The host name part will be converted to lower case by this + * function. + */ +int +coap_split_uri(unsigned char *str_var, size_t len, coap_uri_t *uri); + +/** + * Splits the given URI path into segments. Each segment is preceded + * by an option pseudo-header with delta-value 0 and the actual length + * of the respective segment after percent-decoding. + * + * @param s The path string to split. + * @param length The actual length of @p s. + * @param buf Result buffer for parsed segments. + * @param buflen Maximum length of @p buf. Will be set to the actual number + * of bytes written into buf on success. + * + * @return The number of segments created or @c -1 on error. + */ +#if 0 +int coap_split_path(const unsigned char *s, size_t length, + unsigned char *buf, size_t *buflen); +#else +int +coap_split_path(coap_rw_buffer_t *scratch, coap_packet_t *pkt, + const unsigned char *s, size_t length); +#endif +/** + * Splits the given URI query into segments. Each segment is preceded + * by an option pseudo-header with delta-value 0 and the actual length + * of the respective query term. + * + * @param s The query string to split. + * @param length The actual length of @p s. + * @param buf Result buffer for parsed segments. + * @param buflen Maximum length of @p buf. Will be set to the actual number + * of bytes written into buf on success. + * + * @return The number of segments created or @c -1 on error. + * + * @bug This function does not reserve additional space for delta > 12. + */ +#if 0 +int coap_split_query(const unsigned char *s, size_t length, + unsigned char *buf, size_t *buflen); +#else +int coap_split_query(coap_rw_buffer_t *scratch, coap_packet_t *pkt, + const unsigned char *s, size_t length); +#endif +/** @} */ + +#endif /* _COAP_URI_H_ */ diff --git a/app/include/user_config.h b/app/include/user_config.h index c812f2fa..253a8fc7 100644 --- a/app/include/user_config.h +++ b/app/include/user_config.h @@ -17,11 +17,11 @@ // #define DEVELOP_VERSION #define FULL_VERSION_FOR_USER -#ifdef DEVELOP_VERSION - #define USE_OPTIMIZE_PRINTF +#ifdef DEVELOP_VERSION #define NODE_DEBUG +#define COAP_DEBUG #endif /* DEVELOP_VERSION */ #define NODE_ERROR @@ -65,6 +65,7 @@ #define LUA_USE_MODULES_OW #define LUA_USE_MODULES_BIT #define LUA_USE_MODULES_MQTT +#define LUA_USE_MODULES_COAP #endif /* LUA_USE_MODULES */ // #define LUA_NUMBER_INTEGRAL diff --git a/app/modules/Makefile b/app/modules/Makefile index fb170792..dbbc1f87 100644 --- a/app/modules/Makefile +++ b/app/modules/Makefile @@ -39,6 +39,7 @@ endif INCLUDES := $(INCLUDES) -I $(PDIR)include INCLUDES += -I ./ INCLUDES += -I ../libc +INCLUDES += -I ../coap INCLUDES += -I ../mqtt INCLUDES += -I ../lua INCLUDES += -I ../platform diff --git a/app/modules/auxmods.h b/app/modules/auxmods.h index 6ab6ef46..f885682c 100644 --- a/app/modules/auxmods.h +++ b/app/modules/auxmods.h @@ -61,6 +61,9 @@ LUALIB_API int ( luaopen_i2c )( lua_State *L ); #define AUXLIB_WIFI "wifi" LUALIB_API int ( luaopen_wifi )( lua_State *L ); +#define AUXLIB_COAP "coap" +LUALIB_API int ( luaopen_coap )( lua_State *L ); + #define AUXLIB_MQTT "mqtt" LUALIB_API int ( luaopen_mqtt )( lua_State *L ); diff --git a/app/modules/coap.c b/app/modules/coap.c new file mode 100644 index 00000000..2e394cff --- /dev/null +++ b/app/modules/coap.c @@ -0,0 +1,667 @@ +// Module for coapwork + +//#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +#include "platform.h" +#include "auxmods.h" +#include "lrotable.h" + +#include "c_string.h" +#include "c_stdlib.h" + +#include "c_types.h" +#include "mem.h" +#include "espconn.h" +#include "driver/uart.h" + +#include "coap.h" +#include "uri.h" +#include "node.h" +#include "coap_timer.h" +#include "coap_io.h" +#include "coap_server.h" + +coap_queue_t *gQueue = NULL; + +typedef struct lcoap_userdata +{ + lua_State *L; + struct espconn *pesp_conn; + int self_ref; +}lcoap_userdata; + +static void coap_received(void *arg, char *pdata, unsigned short len) +{ + NODE_DBG("coap_received is called.\n"); + struct espconn *pesp_conn = arg; + lcoap_userdata *cud = (lcoap_userdata *)pesp_conn->reverse; + + static uint8_t buf[MAX_MESSAGE_SIZE+1] = {0}; // +1 for string '\0' + c_memset(buf, 0, sizeof(buf)); // wipe prev data + + if (len > MAX_MESSAGE_SIZE) { + NODE_DBG("Request Entity Too Large.\n"); // NOTE: should response 4.13 to client... + return; + } else { + c_memcpy(buf, pdata, len); + } + + size_t rsplen = coap_server_respond(buf, len, MAX_MESSAGE_SIZE+1); + espconn_sent(pesp_conn, (unsigned char *)buf, rsplen); + + c_memset(buf, 0, sizeof(buf)); +} + +static void ICACHE_FLASH_ATTR +coap_sent(void *arg) +{ + NODE_DBG("coap_sent is called.\n"); +} + +// Lua: s = coap.create(function(conn)) +static int ICACHE_FLASH_ATTR +coap_create( lua_State* L, const char* mt ) +{ + struct espconn *pesp_conn = NULL; + lcoap_userdata *cud; + unsigned type; + int stack = 1; + + // create a object + cud = (lcoap_userdata *)lua_newuserdata(L, sizeof(lcoap_userdata)); + // pre-initialize it, in case of errors + cud->self_ref = LUA_NOREF; + cud->pesp_conn = NULL; + + // set its metatable + luaL_getmetatable(L, mt); + lua_setmetatable(L, -2); + + // create the espconn struct + pesp_conn = (struct espconn *)c_zalloc(sizeof(struct espconn)); + if(!pesp_conn) + return luaL_error(L, "not enough memory"); + + cud->pesp_conn = pesp_conn; + + pesp_conn->type = ESPCONN_UDP; + pesp_conn->proto.tcp = NULL; + pesp_conn->proto.udp = NULL; + + pesp_conn->proto.udp = (esp_udp *)c_zalloc(sizeof(esp_udp)); + if(!pesp_conn->proto.udp){ + c_free(pesp_conn); + cud->pesp_conn = pesp_conn = NULL; + return luaL_error(L, "not enough memory"); + } + pesp_conn->state = ESPCONN_NONE; + NODE_DBG("UDP server/client is set.\n"); + + cud->L = L; + pesp_conn->reverse = cud; + + NODE_DBG("coap_create is called.\n"); + return 1; +} + +// Lua: server:delete() +static int ICACHE_FLASH_ATTR +coap_delete( lua_State* L, const char* mt ) +{ + struct espconn *pesp_conn = NULL; + lcoap_userdata *cud; + + cud = (lcoap_userdata *)luaL_checkudata(L, 1, mt); + luaL_argcheck(L, cud, 1, "Server/Client expected"); + if(cud==NULL){ + NODE_DBG("userdata is nil.\n"); + return 0; + } + + // free (unref) callback ref + if(LUA_NOREF!=cud->self_ref){ + luaL_unref(L, LUA_REGISTRYINDEX, cud->self_ref); + cud->self_ref = LUA_NOREF; + } + + cud->L = NULL; + if(cud->pesp_conn) + { + if(cud->pesp_conn->proto.udp->remote_port || cud->pesp_conn->proto.udp->local_port) + espconn_delete(cud->pesp_conn); + c_free(cud->pesp_conn->proto.udp); + cud->pesp_conn->proto.udp = NULL; + c_free(cud->pesp_conn); + cud->pesp_conn = NULL; + } + + NODE_DBG("coap_delete is called.\n"); + return 0; +} + +// Lua: server:listen( port, ip ) +static int ICACHE_FLASH_ATTR +coap_start( lua_State* L, const char* mt ) +{ + struct espconn *pesp_conn = NULL; + lcoap_userdata *cud; + unsigned port; + size_t il; + ip_addr_t ipaddr; + + cud = (lcoap_userdata *)luaL_checkudata(L, 1, mt); + luaL_argcheck(L, cud, 1, "Server/Client expected"); + if(cud==NULL){ + NODE_DBG("userdata is nil.\n"); + return 0; + } + + pesp_conn = cud->pesp_conn; + port = luaL_checkinteger( L, 2 ); + pesp_conn->proto.udp->local_port = port; + NODE_DBG("UDP port is set: %d.\n", port); + + if( lua_isstring(L,3) ) // deal with the ip string + { + const char *ip = luaL_checklstring( L, 3, &il ); + if (ip == NULL) + { + ip = "0.0.0.0"; + } + ipaddr.addr = ipaddr_addr(ip); + c_memcpy(pesp_conn->proto.udp->local_ip, &ipaddr.addr, 4); + NODE_DBG("UDP ip is set: "); + NODE_DBG(IPSTR, IP2STR(&ipaddr.addr)); + NODE_DBG("\n"); + } + + if(LUA_NOREF==cud->self_ref){ + lua_pushvalue(L, 1); // copy to the top of stack + cud->self_ref = luaL_ref(L, LUA_REGISTRYINDEX); + } + + espconn_regist_recvcb(pesp_conn, coap_received); + espconn_regist_sentcb(pesp_conn, coap_sent); + espconn_create(pesp_conn); + + NODE_DBG("Coap Server started on port: %d\n", port); + NODE_DBG("coap_start is called.\n"); + return 0; +} + +// Lua: server:close() +static int ICACHE_FLASH_ATTR +coap_close( lua_State* L, const char* mt ) +{ + struct espconn *pesp_conn = NULL; + lcoap_userdata *cud; + + cud = (lcoap_userdata *)luaL_checkudata(L, 1, mt); + luaL_argcheck(L, cud, 1, "Server/Client expected"); + if(cud==NULL){ + NODE_DBG("userdata is nil.\n"); + return 0; + } + + if(cud->pesp_conn) + { + if(cud->pesp_conn->proto.udp->remote_port || cud->pesp_conn->proto.udp->local_port) + espconn_delete(cud->pesp_conn); + } + + if(LUA_NOREF!=cud->self_ref){ + luaL_unref(L, LUA_REGISTRYINDEX, cud->self_ref); + cud->self_ref = LUA_NOREF; + } + + NODE_DBG("coap_close is called.\n"); + return 0; +} + +// Lua: server/client:on( "method", function(s) ) +static int ICACHE_FLASH_ATTR +coap_on( lua_State* L, const char* mt ) +{ + NODE_DBG("coap_on is called.\n"); + return 0; +} + +static void ICACHE_FLASH_ATTR +coap_response_handler(void *arg, char *pdata, unsigned short len) +{ + NODE_DBG("coap_response_handler is called.\n"); + struct espconn *pesp_conn = arg; + + coap_packet_t pkt; + static uint8_t buf[MAX_MESSAGE_SIZE+1] = {0}; // +1 for string '\0' + c_memset(buf, 0, sizeof(buf)); // wipe prev data + static int n = 0; + + int rc; + if ((len == 1460) && (1460 <= MAX_MESSAGE_SIZE)){ + c_memcpy(buf, pdata, len); // max length is 1460, another part of data is coming in next callback + n = len; + return; + } else { + if( len > MAX_MESSAGE_SIZE ) + { + NODE_DBG("Request Entity Too Large.\n"); // NOTE: should response 4.13 to client... + c_memset(buf, 0, sizeof(buf)); // wipe prev data + n = 0; + return; + } + c_memcpy(buf + n, pdata, len); + len += n; // more than 1460 + } + + if (0 != (rc = coap_parse(&pkt, buf, len))){ + NODE_DBG("Bad packet rc=%d\n", rc); + } + else + { +#ifdef COAP_DEBUG + coap_dumpPacket(&pkt); +#endif + /* check if this is a response to our original request */ + if (!check_token(&pkt)) { + /* drop if this was just some message, or send RST in case of notification */ + if (pkt.hdr.t == COAP_TYPE_CON || pkt.hdr.t == COAP_TYPE_NONCON){ + // coap_send_rst(pkt); // send RST response + // or, just ignore it. + } + goto end; + } + + if (pkt.hdr.t == COAP_TYPE_RESET) { + NODE_DBG("got RST\n"); + goto end; + } + + uint32_t ip = 0, port = 0; + coap_tid_t id = COAP_INVALID_TID; + + c_memcpy(&ip, pesp_conn->proto.udp->remote_ip, sizeof(ip)); + port = pesp_conn->proto.udp->remote_port; + + coap_transaction_id(ip, port, &pkt, &id); + + /* transaction done, remove the node from queue */ + // stop timer + coap_timer_stop(); + // remove the node + coap_remove_node(&gQueue, id); + // calculate time elapsed + coap_timer_update(&gQueue); + coap_timer_start(&gQueue); + + if (COAP_RESPONSE_CLASS(pkt.hdr.code) == 2) + { + /* There is no block option set, just read the data and we are done. */ + NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); + NODE_DBG(pkt.payload.p); + } + else if (COAP_RESPONSE_CLASS(pkt.hdr.code) >= 4) + { + NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); + NODE_DBG(pkt.payload.p); + } + } + +end: + if(!gQueue){ // if there is no node pending in the queue, disconnect from host. + if(pesp_conn->proto.udp->remote_port || pesp_conn->proto.udp->local_port) + espconn_delete(pesp_conn); + } + c_memset(buf, 0, sizeof(buf)); + n = 0; +} + +// Lua: client:request( [CON], uri, [payload] ) +static int ICACHE_FLASH_ATTR +coap_request( lua_State* L, coap_method_t m ) +{ + struct espconn *pesp_conn = NULL; + lcoap_userdata *cud; + int stack = 1; + + cud = (lcoap_userdata *)luaL_checkudata(L, stack, "coap_client"); + luaL_argcheck(L, cud, stack, "Server/Client expected"); + if(cud==NULL){ + NODE_DBG("userdata is nil.\n"); + return 0; + } + + stack++; + pesp_conn = cud->pesp_conn; + ip_addr_t ipaddr; + uint8_t host[32]; + + unsigned t; + if ( lua_isnumber(L, stack) ) + { + t = lua_tointeger(L, stack); + stack++; + if ( t != COAP_TYPE_CON && t != COAP_TYPE_NONCON ) + return luaL_error( L, "wrong arg type" ); + } else { + t = COAP_TYPE_CON; // default to CON + } + + size_t l; + const char *url = luaL_checklstring( L, stack, &l ); + stack++; + if (url == NULL) + return luaL_error( L, "wrong arg type" ); + + coap_uri_t *uri = coap_new_uri(url, l); // should call free(uri) somewhere + if (uri == NULL) + return luaL_error( L, "uri wrong format." ); + + pesp_conn->proto.udp->remote_port = uri->port; + NODE_DBG("UDP port is set: %d.\n", uri->port); + pesp_conn->proto.udp->local_port = espconn_port(); + + if(uri->host.length){ + c_memcpy(host, uri->host.s, uri->host.length); + host[uri->host.length] = '\0'; + + ipaddr.addr = ipaddr_addr(host); + NODE_DBG("Host len(%d):", uri->host.length); + NODE_DBG(host); + NODE_DBG("\n"); + + c_memcpy(pesp_conn->proto.udp->remote_ip, &ipaddr.addr, 4); + NODE_DBG("UDP ip is set: "); + NODE_DBG(IPSTR, IP2STR(&ipaddr.addr)); + NODE_DBG("\n"); + } + + coap_pdu_t *pdu = coap_new_pdu(); // should call coap_delete_pdu() somewhere + if(!pdu){ + if(uri) + c_free(uri); + return; + } + + const char *payload = NULL; + l = 0; + if( lua_isstring(L, stack) ){ + payload = luaL_checklstring( L, stack, &l ); + if (payload == NULL) + l = 0; + } + + coap_make_request(&(pdu->scratch), pdu->pkt, t, m, uri, payload, l); + +#ifdef COAP_DEBUG + coap_dumpPacket(pdu->pkt); +#endif + + int rc; + if (0 != (rc = coap_build(pdu->msg.p, &(pdu->msg.len), pdu->pkt))){ + NODE_DBG("coap_build failed rc=%d\n", rc); + } + else + { +#ifdef COAP_DEBUG + NODE_DBG("Sending: "); + coap_dump(pdu->msg.p, pdu->msg.len, true); + NODE_DBG("\n"); +#endif + espconn_regist_recvcb(pesp_conn, coap_response_handler); + sint8_t con = espconn_create(pesp_conn); + if( ESPCONN_OK != con){ + NODE_DBG("Connect to host. code:%d\n", con); + // coap_delete_pdu(pdu); + } + // else + { + coap_tid_t tid = COAP_INVALID_TID; + if (pdu->pkt->hdr.t == COAP_TYPE_CON){ + tid = coap_send_confirmed(pesp_conn, pdu); + } + else { + tid = coap_send(pesp_conn, pdu); + } + if (pdu->pkt->hdr.t != COAP_TYPE_CON || tid == COAP_INVALID_TID){ + coap_delete_pdu(pdu); + } + } + } + + if(uri) + c_free((void *)uri); + + NODE_DBG("coap_request is called.\n"); + return 0; +} + +extern coap_luser_entry *variable_entry; +extern coap_luser_entry *function_entry; +extern void build_well_known_rsp(void); +// Lua: coap:var/func( string ) +static int ICACHE_FLASH_ATTR +coap_regist( lua_State* L, const char* mt, int isvar ) +{ + size_t l; + const char *name = luaL_checklstring( L, 2, &l ); + if (name == NULL) + return luaL_error( L, "name must be set." ); + + coap_luser_entry *h = NULL; + // if(lua_isstring(L, 3)) + if(isvar) + h = variable_entry; + else + h = function_entry; + + while(NULL!=h->next){ // goto the end of the list + if(h->name!= NULL && c_strcmp(h->name, name)==0) // key exist, override it + break; + h = h->next; + } + + if(h->name==NULL || c_strcmp(h->name, name)!=0){ // not exists. make a new one. + h->next = (coap_luser_entry *)c_zalloc(sizeof(coap_luser_entry)); + h = h->next; + if(h == NULL) + return luaL_error(L, "not enough memory"); + h->next = NULL; + h->name = NULL; + h->L = NULL; + } + + h->L = L; + h->name = name; + + build_well_known_rsp(); // rebuild .well-known + + NODE_DBG("coap_regist is called.\n"); + return 0; +} + +// Lua: s = coap.createServer(function(conn)) +static int ICACHE_FLASH_ATTR coap_createServer( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_create(L, mt); +} + +// Lua: server:delete() +static int ICACHE_FLASH_ATTR +coap_server_delete( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_delete(L, mt); +} + +// Lua: server:listen( port, ip, function(err) ) +static int ICACHE_FLASH_ATTR +coap_server_listen( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_start(L, mt); +} + +// Lua: server:close() +static int ICACHE_FLASH_ATTR +coap_server_close( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_close(L, mt); +} + +// Lua: server:on( "method", function(server) ) +static int ICACHE_FLASH_ATTR +coap_server_on( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_on(L, mt); +} + +// Lua: server:var( "name" ) +static int ICACHE_FLASH_ATTR +coap_server_var( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_regist(L, mt, 1); +} + +// Lua: server:func( "name" ) +static int ICACHE_FLASH_ATTR +coap_server_func( lua_State* L ) +{ + const char *mt = "coap_server"; + return coap_regist(L, mt, 0); +} + +// Lua: s = coap.createClient(function(conn)) +static int ICACHE_FLASH_ATTR +coap_createClient( lua_State* L ) +{ + const char *mt = "coap_client"; + return coap_create(L, mt); +} + +// Lua: client:gcdelete() +static int ICACHE_FLASH_ATTR +coap_client_gcdelete( lua_State* L ) +{ + const char *mt = "coap_client"; + return coap_delete(L, mt); +} + +// client:get( string, function(sent) ) +static int ICACHE_FLASH_ATTR +coap_client_get( lua_State* L ) +{ + return coap_request(L, COAP_METHOD_GET); +} + +// client:post( string, function(sent) ) +static int ICACHE_FLASH_ATTR +coap_client_post( lua_State* L ) +{ + return coap_request(L, COAP_METHOD_POST); +} + +// client:put( string, function(sent) ) +static int ICACHE_FLASH_ATTR +coap_client_put( lua_State* L ) +{ + return coap_request(L, COAP_METHOD_PUT); +} + +// client:delete( string, function(sent) ) +static int ICACHE_FLASH_ATTR +coap_client_delete( lua_State* L ) +{ + return coap_request(L, COAP_METHOD_DELETE); +} + +// Module function map +#define MIN_OPT_LEVEL 2 +#include "lrodefs.h" +static const LUA_REG_TYPE coap_server_map[] = +{ + { LSTRKEY( "listen" ), LFUNCVAL ( coap_server_listen ) }, + { LSTRKEY( "close" ), LFUNCVAL ( coap_server_close ) }, + { LSTRKEY( "var" ), LFUNCVAL ( coap_server_var ) }, + { LSTRKEY( "func" ), LFUNCVAL ( coap_server_func ) }, + { LSTRKEY( "__gc" ), LFUNCVAL ( coap_server_delete ) }, +#if LUA_OPTIMIZE_MEMORY > 0 + { LSTRKEY( "__index" ), LROVAL ( coap_server_map ) }, +#endif + { LNILKEY, LNILVAL } +}; + +static const LUA_REG_TYPE coap_client_map[] = +{ + { LSTRKEY( "get" ), LFUNCVAL ( coap_client_get ) }, + { LSTRKEY( "post" ), LFUNCVAL ( coap_client_post ) }, + { LSTRKEY( "put" ), LFUNCVAL ( coap_client_put ) }, + { LSTRKEY( "delete" ), LFUNCVAL ( coap_client_delete ) }, + { LSTRKEY( "__gc" ), LFUNCVAL ( coap_client_gcdelete ) }, +#if LUA_OPTIMIZE_MEMORY > 0 + { LSTRKEY( "__index" ), LROVAL ( coap_client_map ) }, +#endif + { LNILKEY, LNILVAL } +}; + +const LUA_REG_TYPE coap_map[] = +{ + { LSTRKEY( "Server" ), LFUNCVAL ( coap_createServer ) }, + { LSTRKEY( "Client" ), LFUNCVAL ( coap_createClient ) }, +#if LUA_OPTIMIZE_MEMORY > 0 + { LSTRKEY( "CON" ), LNUMVAL( COAP_TYPE_CON ) }, + { LSTRKEY( "NON" ), LNUMVAL( COAP_TYPE_NONCON ) }, + + { LSTRKEY( "__metatable" ), LROVAL( coap_map ) }, +#endif + { LNILKEY, LNILVAL } +}; + +LUALIB_API int ICACHE_FLASH_ATTR luaopen_coap( lua_State *L ) +{ + endpoint_setup(); +#if LUA_OPTIMIZE_MEMORY > 0 + luaL_rometatable(L, "coap_server", (void *)coap_server_map); // create metatable for coap_server + luaL_rometatable(L, "coap_client", (void *)coap_client_map); // create metatable for coap_client + return 0; +#else // #if LUA_OPTIMIZE_MEMORY > 0 + int n; + luaL_register( L, AUXLIB_COAP, coap_map ); + + // Set it as its own metatable + lua_pushvalue( L, -1 ); + lua_setmetatable( L, -2 ); + + // Module constants + MOD_REG_NUMBER( L, "CON", COAP_TYPE_CON ); + MOD_REG_NUMBER( L, "NON", COAP_TYPE_NONCON ); + + n = lua_gettop(L); + + // create metatable + luaL_newmetatable(L, "coap_server"); + // metatable.__index = metatable + lua_pushliteral(L, "__index"); + lua_pushvalue(L,-2); + lua_rawset(L,-3); + // Setup the methods inside metatable + luaL_register( L, NULL, coap_server_map ); + + lua_settop(L, n); + // create metatable + luaL_newmetatable(L, "coap_client"); + // metatable.__index = metatable + lua_pushliteral(L, "__index"); + lua_pushvalue(L,-2); + lua_rawset(L,-3); + // Setup the methods inside metatable + luaL_register( L, NULL, coap_client_map ); + + return 1; +#endif // #if LUA_OPTIMIZE_MEMORY > 0 +} diff --git a/app/modules/modules.h b/app/modules/modules.h index f28775d5..6ee3ef23 100644 --- a/app/modules/modules.h +++ b/app/modules/modules.h @@ -37,6 +37,14 @@ #define ROM_MODULES_NET #endif +#if defined(LUA_USE_MODULES_COAP) +#define MODULES_COAP "coap" +#define ROM_MODULES_COAP \ + _ROM(MODULES_COAP, luaopen_coap, coap_map) +#else +#define ROM_MODULES_COAP +#endif + #if defined(LUA_USE_MODULES_MQTT) #define MODULES_MQTT "mqtt" #define ROM_MODULES_MQTT \ @@ -121,7 +129,8 @@ ROM_MODULES_GPIO \ ROM_MODULES_PWM \ ROM_MODULES_WIFI \ - ROM_MODULES_MQTT \ + ROM_MODULES_COAP \ + ROM_MODULES_MQTT \ ROM_MODULES_I2C \ ROM_MODULES_SPI \ ROM_MODULES_TMR \ diff --git a/examples/fragment.lua b/examples/fragment.lua index b4fb10dd..bcba8893 100644 --- a/examples/fragment.lua +++ b/examples/fragment.lua @@ -339,3 +339,18 @@ uart.on("data",4, function(data) end end, 0) +-- use copper addon for firefox +cs=coap.Server() +cs:listen(5683) + +myvar=1 +cs:var("myvar") -- get coap://192.168.18.103:5683/v1/v/myvar will return the value of myvar: 1 + +function myfun() + print("myfun called") +end +cs:func("myfun") -- post coap://192.168.18.103:5683/v1/f/myfun will call myfun + +cc = coap.Client() +cc:get(coap.CON, "coap://192.168.18.100:5683/.well-known/core") +cc:post(coap.NON, "coap://192.168.18.100:5683/", "Hello") diff --git a/ld/eagle.app.v6.ld b/ld/eagle.app.v6.ld index 3234dc02..48928643 100644 --- a/ld/eagle.app.v6.ld +++ b/ld/eagle.app.v6.ld @@ -5,7 +5,7 @@ MEMORY dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40210000, len = 0x51000 + irom0_0_seg : org = 0x40210000, len = 0x54000 } PHDRS From 3077990a662988f5ea92225256280bb234a1c956 Mon Sep 17 00:00:00 2001 From: funshine Date: Thu, 5 Feb 2015 01:58:47 +0800 Subject: [PATCH 02/13] remove FLASH_ATTR --- app/modules/coap.c | 67 ++++++++++++++++------------------------------ app/modules/mqtt.c | 2 +- 2 files changed, 24 insertions(+), 45 deletions(-) diff --git a/app/modules/coap.c b/app/modules/coap.c index 2e394cff..ef6c72a5 100644 --- a/app/modules/coap.c +++ b/app/modules/coap.c @@ -53,15 +53,13 @@ static void coap_received(void *arg, char *pdata, unsigned short len) c_memset(buf, 0, sizeof(buf)); } -static void ICACHE_FLASH_ATTR -coap_sent(void *arg) +static void coap_sent(void *arg) { NODE_DBG("coap_sent is called.\n"); } // Lua: s = coap.create(function(conn)) -static int ICACHE_FLASH_ATTR -coap_create( lua_State* L, const char* mt ) +static int coap_create( lua_State* L, const char* mt ) { struct espconn *pesp_conn = NULL; lcoap_userdata *cud; @@ -106,8 +104,7 @@ coap_create( lua_State* L, const char* mt ) } // Lua: server:delete() -static int ICACHE_FLASH_ATTR -coap_delete( lua_State* L, const char* mt ) +static int coap_delete( lua_State* L, const char* mt ) { struct espconn *pesp_conn = NULL; lcoap_userdata *cud; @@ -141,8 +138,7 @@ coap_delete( lua_State* L, const char* mt ) } // Lua: server:listen( port, ip ) -static int ICACHE_FLASH_ATTR -coap_start( lua_State* L, const char* mt ) +static int coap_start( lua_State* L, const char* mt ) { struct espconn *pesp_conn = NULL; lcoap_userdata *cud; @@ -191,8 +187,7 @@ coap_start( lua_State* L, const char* mt ) } // Lua: server:close() -static int ICACHE_FLASH_ATTR -coap_close( lua_State* L, const char* mt ) +static int coap_close( lua_State* L, const char* mt ) { struct espconn *pesp_conn = NULL; lcoap_userdata *cud; @@ -220,15 +215,13 @@ coap_close( lua_State* L, const char* mt ) } // Lua: server/client:on( "method", function(s) ) -static int ICACHE_FLASH_ATTR -coap_on( lua_State* L, const char* mt ) +static int coap_on( lua_State* L, const char* mt ) { NODE_DBG("coap_on is called.\n"); return 0; } -static void ICACHE_FLASH_ATTR -coap_response_handler(void *arg, char *pdata, unsigned short len) +static void coap_response_handler(void *arg, char *pdata, unsigned short len) { NODE_DBG("coap_response_handler is called.\n"); struct espconn *pesp_conn = arg; @@ -318,8 +311,7 @@ end: } // Lua: client:request( [CON], uri, [payload] ) -static int ICACHE_FLASH_ATTR -coap_request( lua_State* L, coap_method_t m ) +static int coap_request( lua_State* L, coap_method_t m ) { struct espconn *pesp_conn = NULL; lcoap_userdata *cud; @@ -441,8 +433,7 @@ extern coap_luser_entry *variable_entry; extern coap_luser_entry *function_entry; extern void build_well_known_rsp(void); // Lua: coap:var/func( string ) -static int ICACHE_FLASH_ATTR -coap_regist( lua_State* L, const char* mt, int isvar ) +static int coap_regist( lua_State* L, const char* mt, int isvar ) { size_t l; const char *name = luaL_checklstring( L, 2, &l ); @@ -482,100 +473,88 @@ coap_regist( lua_State* L, const char* mt, int isvar ) } // Lua: s = coap.createServer(function(conn)) -static int ICACHE_FLASH_ATTR coap_createServer( lua_State* L ) +static int coap_createServer( lua_State* L ) { const char *mt = "coap_server"; return coap_create(L, mt); } // Lua: server:delete() -static int ICACHE_FLASH_ATTR -coap_server_delete( lua_State* L ) +static int coap_server_delete( lua_State* L ) { const char *mt = "coap_server"; return coap_delete(L, mt); } // Lua: server:listen( port, ip, function(err) ) -static int ICACHE_FLASH_ATTR -coap_server_listen( lua_State* L ) +static int coap_server_listen( lua_State* L ) { const char *mt = "coap_server"; return coap_start(L, mt); } // Lua: server:close() -static int ICACHE_FLASH_ATTR -coap_server_close( lua_State* L ) +static int coap_server_close( lua_State* L ) { const char *mt = "coap_server"; return coap_close(L, mt); } // Lua: server:on( "method", function(server) ) -static int ICACHE_FLASH_ATTR -coap_server_on( lua_State* L ) +static int coap_server_on( lua_State* L ) { const char *mt = "coap_server"; return coap_on(L, mt); } // Lua: server:var( "name" ) -static int ICACHE_FLASH_ATTR -coap_server_var( lua_State* L ) +static int coap_server_var( lua_State* L ) { const char *mt = "coap_server"; return coap_regist(L, mt, 1); } // Lua: server:func( "name" ) -static int ICACHE_FLASH_ATTR -coap_server_func( lua_State* L ) +static int coap_server_func( lua_State* L ) { const char *mt = "coap_server"; return coap_regist(L, mt, 0); } // Lua: s = coap.createClient(function(conn)) -static int ICACHE_FLASH_ATTR -coap_createClient( lua_State* L ) +static int coap_createClient( lua_State* L ) { const char *mt = "coap_client"; return coap_create(L, mt); } // Lua: client:gcdelete() -static int ICACHE_FLASH_ATTR -coap_client_gcdelete( lua_State* L ) +static int coap_client_gcdelete( lua_State* L ) { const char *mt = "coap_client"; return coap_delete(L, mt); } // client:get( string, function(sent) ) -static int ICACHE_FLASH_ATTR -coap_client_get( lua_State* L ) +static int coap_client_get( lua_State* L ) { return coap_request(L, COAP_METHOD_GET); } // client:post( string, function(sent) ) -static int ICACHE_FLASH_ATTR -coap_client_post( lua_State* L ) +static int coap_client_post( lua_State* L ) { return coap_request(L, COAP_METHOD_POST); } // client:put( string, function(sent) ) -static int ICACHE_FLASH_ATTR -coap_client_put( lua_State* L ) +static int coap_client_put( lua_State* L ) { return coap_request(L, COAP_METHOD_PUT); } // client:delete( string, function(sent) ) -static int ICACHE_FLASH_ATTR -coap_client_delete( lua_State* L ) +static int coap_client_delete( lua_State* L ) { return coap_request(L, COAP_METHOD_DELETE); } @@ -622,7 +601,7 @@ const LUA_REG_TYPE coap_map[] = { LNILKEY, LNILVAL } }; -LUALIB_API int ICACHE_FLASH_ATTR luaopen_coap( lua_State *L ) +LUALIB_API int luaopen_coap( lua_State *L ) { endpoint_setup(); #if LUA_OPTIMIZE_MEMORY > 0 diff --git a/app/modules/mqtt.c b/app/modules/mqtt.c index a37974ec..9e4360e4 100644 --- a/app/modules/mqtt.c +++ b/app/modules/mqtt.c @@ -1095,7 +1095,7 @@ const LUA_REG_TYPE mqtt_map[] = { LNILKEY, LNILVAL } }; -LUALIB_API int ICACHE_FLASH_ATTR luaopen_mqtt( lua_State *L ) +LUALIB_API int luaopen_mqtt( lua_State *L ) { #if LUA_OPTIMIZE_MEMORY > 0 luaL_rometatable(L, "mqtt.socket", (void *)mqtt_socket_map); // create metatable for mqtt.socket From c529d56a8f8163ef57d00e9d6a7b3cd19a6fb154 Mon Sep 17 00:00:00 2001 From: funshine Date: Sat, 7 Feb 2015 23:08:25 +0800 Subject: [PATCH 03/13] minor fix to debug mode --- app/coap/coap_client.c | 4 ++-- app/coap/endpoints.c | 6 +++--- app/modules/coap.c | 4 ++-- ld/eagle.app.v6.ld | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/coap/coap_client.c b/app/coap/coap_client.c index e6ea0295..37a1a5f0 100644 --- a/app/coap/coap_client.c +++ b/app/coap/coap_client.c @@ -51,12 +51,12 @@ void coap_client_response_handler(char *data, unsigned short len, unsigned short { /* There is no block option set, just read the data and we are done. */ NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); - NODE_DBG(pkt.payload.p); + NODE_DBG((char *)(pkt.payload.p)); } else if (COAP_RESPONSE_CLASS(pkt.hdr.code) >= 4) { NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); - NODE_DBG(pkt.payload.p); + NODE_DBG((char *)(pkt.payload.p)); } } diff --git a/app/coap/endpoints.c b/app/coap/endpoints.c index 4fd4da48..a3d2d9d6 100644 --- a/app/coap/endpoints.c +++ b/app/coap/endpoints.c @@ -48,7 +48,7 @@ static int handle_get_variable(const coap_endpoint_t *ep, coap_rw_buffer_t *scra if (0 == c_memcmp(h->name, opt[count-1].buf.p, opt[count-1].buf.len)) { NODE_DBG("/v1/v/"); - NODE_DBG(h->name); + NODE_DBG((char *)h->name); NODE_DBG(" match.\n"); if(h->L == NULL) return coap_make_response(scratch, outpkt, NULL, 0, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); @@ -103,7 +103,7 @@ static int handle_post_function(const coap_endpoint_t *ep, coap_rw_buffer_t *scr if (0 == c_memcmp(h->name, opt[count-1].buf.p, opt[count-1].buf.len)) { NODE_DBG("/v1/f/"); - NODE_DBG(h->name); + NODE_DBG((char *)h->name); NODE_DBG(" match.\n"); if(h->L == NULL) @@ -128,7 +128,7 @@ static int handle_post_function(const coap_endpoint_t *ep, coap_rw_buffer_t *scr luaL_error( h->L, "return string:tok, COAP_RSPCODE_NOT_FOUND, COAP_CONTENTTYPE_NONE); } - NODE_DBG(ret); + NODE_DBG((char *)ret); NODE_DBG("\n"); return coap_make_response(scratch, outpkt, ret, len, id_hi, id_lo, &inpkt->tok, COAP_RSPCODE_CONTENT, COAP_CONTENTTYPE_TEXT_PLAIN); } diff --git a/app/modules/coap.c b/app/modules/coap.c index ef6c72a5..2afb9b54 100644 --- a/app/modules/coap.c +++ b/app/modules/coap.c @@ -292,12 +292,12 @@ static void coap_response_handler(void *arg, char *pdata, unsigned short len) { /* There is no block option set, just read the data and we are done. */ NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); - NODE_DBG(pkt.payload.p); + NODE_DBG((char *)pkt.payload.p); } else if (COAP_RESPONSE_CLASS(pkt.hdr.code) >= 4) { NODE_DBG("%d.%02d\t", (pkt.hdr.code >> 5), pkt.hdr.code & 0x1F); - NODE_DBG(pkt.payload.p); + NODE_DBG((char *)pkt.payload.p); } } diff --git a/ld/eagle.app.v6.ld b/ld/eagle.app.v6.ld index 48928643..2069ee91 100644 --- a/ld/eagle.app.v6.ld +++ b/ld/eagle.app.v6.ld @@ -5,7 +5,7 @@ MEMORY dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40210000, len = 0x54000 + irom0_0_seg : org = 0x40210000, len = 0x60000 } PHDRS From 1a390faef1bc1cfc3ae1d8c36d7c34de72e2f050 Mon Sep 17 00:00:00 2001 From: George Hahn Date: Wed, 4 Mar 2015 20:22:02 -0500 Subject: [PATCH 04/13] Add TravisCI build status --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index dbf3cace..75a21312 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # **NodeMcu** # version 0.9.5 + +[![Build Status](https://travis-ci.org/nodemcu/nodemcu-firmware.svg)](https://travis-ci.org/nodemcu/nodemcu-firmware) + ###A lua based firmware for wifi-soc esp8266 Build on [ESP8266 sdk 0.9.5](http://bbs.espressif.com/viewtopic.php?f=5&t=154)
Lua core based on [eLua project](http://www.eluaproject.net/)
From fbf42d5472afd5447cea133ceaae866054d6d984 Mon Sep 17 00:00:00 2001 From: George Hahn Date: Wed, 4 Mar 2015 21:15:27 -0500 Subject: [PATCH 05/13] Add basic .travis.yml --- .travis.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..2f5eedfc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +language: cpp +before_install: +- sudo apt-get install -y python-serial srecord +install: +- wget https://github.com/GeorgeHahn/nodemcu-firmware/blob/travis/tools/esp-open-sdk.tar.gz -O tools/esp-open-sdk.tar.gz +- tar -zxvf tools/esp-open-sdk.tar.gz +- export PATH=$PATH:$PWD/esp-open-sdk/sdk:$PWD/esp-open-sdk/xtensa-lx106-elf/bin +script: +- make all +- cd bin/ +- file_name="nodemcu-firmware_v${TRAVIS_TAG}.${TRAVIS_BUILD_NUMBER}.bin" +- srec_cat -output ${file_name} -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000 +#deploy: +# provider: releases +# api_key: "${GITHUB_OAUTH}" +# file: "$TRAVIS_BUILD_DIR/bin/${file_name}" +# skip_cleanup: true +# on: +# tags: true +#env: +# global: +# - secure: OVFK1zFj8VFVITWIGR2UlinVoTFNjlcQZeFt4xpn+B0wLz1mAWnR//F49qLkAcZt2ca8ogbQwEyDenFfkcSKOkUpvivyDatkHEt4WAhdXeg2y3zdHjX7NntscQBpTUmwjhV/0OA0qV9sNLK5r1t45oDh2NVcpfEQTJP5oYKfe6I= From 86a408d3e092967ac4ac00b9da44da2018647903 Mon Sep 17 00:00:00 2001 From: George Hahn Date: Wed, 4 Mar 2015 21:19:54 -0500 Subject: [PATCH 06/13] Fix toolchain URL --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2f5eedfc..67e4771b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: cpp before_install: - sudo apt-get install -y python-serial srecord install: -- wget https://github.com/GeorgeHahn/nodemcu-firmware/blob/travis/tools/esp-open-sdk.tar.gz -O tools/esp-open-sdk.tar.gz +- wget https://github.com/GeorgeHahn/nodemcu-firmware/raw/travis/tools/esp-open-sdk.tar.gz -O tools/esp-open-sdk.tar.gz - tar -zxvf tools/esp-open-sdk.tar.gz - export PATH=$PATH:$PWD/esp-open-sdk/sdk:$PWD/esp-open-sdk/xtensa-lx106-elf/bin script: From 6986d9e5aa2de1b90840bb182aef716c4dbe18f8 Mon Sep 17 00:00:00 2001 From: funshine Date: Thu, 5 Mar 2015 11:36:37 +0800 Subject: [PATCH 07/13] update travis.yml --- .travis.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 67e4771b..45aedeab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,12 @@ script: - cd bin/ - file_name="nodemcu-firmware_v${TRAVIS_TAG}.${TRAVIS_BUILD_NUMBER}.bin" - srec_cat -output ${file_name} -binary 0x00000.bin -binary -fill 0xff 0x00000 0x10000 0x10000.bin -binary -offset 0x10000 -#deploy: -# provider: releases -# api_key: "${GITHUB_OAUTH}" -# file: "$TRAVIS_BUILD_DIR/bin/${file_name}" -# skip_cleanup: true -# on: -# tags: true -#env: -# global: -# - secure: OVFK1zFj8VFVITWIGR2UlinVoTFNjlcQZeFt4xpn+B0wLz1mAWnR//F49qLkAcZt2ca8ogbQwEyDenFfkcSKOkUpvivyDatkHEt4WAhdXeg2y3zdHjX7NntscQBpTUmwjhV/0OA0qV9sNLK5r1t45oDh2NVcpfEQTJP5oYKfe6I= +deploy: + provider: releases + api_key: + secure: Swecz5lWvsuSbchSbVQ1rmCPN9nQIN5p/HlZNIEdEgAgnoLcJxRV4P8poVTB37jiA8Pck+8x2nWXpg74Rqik0i3KlPNvDfg5o4rIazWLNs4bc1Tbcpt44XAzFKKLYnDnWQUGcqjk7BcAXuNAF2X/fPBCVhFbHVg3Z7cDb32RsNw= + file: "$TRAVIS_BUILD_DIR/bin/${file_name}" + skip_cleanup: true + on: + tags: true + repo: nodemcu/nodemcu-firmware From bbef457e506d1608237b7847dd3430e4ef80d9cf Mon Sep 17 00:00:00 2001 From: funshine Date: Fri, 6 Mar 2015 11:59:04 +0800 Subject: [PATCH 08/13] seperate user_config.h to speed-up compile when modules disabled/enabled --- app/.gitignore | 1 + app/include/user_config.h | 36 ------------------------------------ app/include/user_modules.h | 25 +++++++++++++++++++++++++ app/include/user_version.h | 12 ++++++++++++ app/lua/lua.c | 1 + app/{lua => modules}/linit.c | 2 ++ app/modules/node.c | 1 + 7 files changed, 42 insertions(+), 36 deletions(-) create mode 100644 app/include/user_modules.h create mode 100644 app/include/user_version.h rename app/{lua => modules}/linit.c (98%) diff --git a/app/.gitignore b/app/.gitignore index 2e2287fd..c6d8ed75 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1,2 +1,3 @@ *.output* +mapfile !.gitignore diff --git a/app/include/user_config.h b/app/include/user_config.h index f3f36494..818a84c5 100644 --- a/app/include/user_config.h +++ b/app/include/user_config.h @@ -1,14 +1,6 @@ #ifndef __USER_CONFIG_H__ #define __USER_CONFIG_H__ -#define NODE_VERSION_MAJOR 0U -#define NODE_VERSION_MINOR 9U -#define NODE_VERSION_REVISION 5U -#define NODE_VERSION_INTERNAL 0U - -#define NODE_VERSION "NodeMCU 0.9.5" -#define BUILD_DATE "build 20150214" - // #define DEVKIT_VERSION_0_9 1 // define this only if you use NodeMCU devkit v0.9 // #define FLASH_512K @@ -51,33 +43,6 @@ // #define BUILD_WOFS 1 #define BUILD_SPIFFS 1 -#define LUA_USE_MODULES - -#ifdef LUA_USE_MODULES -#define LUA_USE_MODULES_NODE -#define LUA_USE_MODULES_FILE -#define LUA_USE_MODULES_GPIO -#define LUA_USE_MODULES_WIFI -#define LUA_USE_MODULES_NET -#define LUA_USE_MODULES_PWM -#define LUA_USE_MODULES_I2C -#define LUA_USE_MODULES_SPI -#define LUA_USE_MODULES_TMR -#define LUA_USE_MODULES_ADC -#define LUA_USE_MODULES_UART -#define LUA_USE_MODULES_OW -#define LUA_USE_MODULES_BIT -#define LUA_USE_MODULES_U8G -#define LUA_USE_MODULES_MQTT -#define LUA_USE_MODULES_WS2812 // TODO: put this device specific module to device driver section. -#endif /* LUA_USE_MODULES */ - -// TODO: put device specific module to device driver section. -#ifdef LUA_USE_DEVICE_DRIVER -#define LUA_USE_DEVICE_WS2812 -#endif /* LUA_USE_DEVICE_DRIVER */ - - // #define LUA_NUMBER_INTEGRAL #define LUA_OPTRAM @@ -99,7 +64,6 @@ #define LED_LOW_COUNT_DEFAULT 0 #endif - // Configure U8glib fonts // add a U8G_FONT_TABLE_ENTRY for each font you want to compile into the image #define U8G_FONT_TABLE_ENTRY(font) diff --git a/app/include/user_modules.h b/app/include/user_modules.h new file mode 100644 index 00000000..7c71b11b --- /dev/null +++ b/app/include/user_modules.h @@ -0,0 +1,25 @@ +#ifndef __USER_MODULES_H__ +#define __USER_MODULES_H__ + +#define LUA_USE_MODULES + +#ifdef LUA_USE_MODULES +#define LUA_USE_MODULES_NODE +#define LUA_USE_MODULES_FILE +#define LUA_USE_MODULES_GPIO +#define LUA_USE_MODULES_WIFI +#define LUA_USE_MODULES_NET +#define LUA_USE_MODULES_PWM +#define LUA_USE_MODULES_I2C +#define LUA_USE_MODULES_SPI +#define LUA_USE_MODULES_TMR +#define LUA_USE_MODULES_ADC +#define LUA_USE_MODULES_UART +#define LUA_USE_MODULES_OW +#define LUA_USE_MODULES_BIT +#define LUA_USE_MODULES_U8G +#define LUA_USE_MODULES_MQTT +#define LUA_USE_MODULES_WS2812 +#endif /* LUA_USE_MODULES */ + +#endif /* __USER_MODULES_H__ */ diff --git a/app/include/user_version.h b/app/include/user_version.h new file mode 100644 index 00000000..c1144958 --- /dev/null +++ b/app/include/user_version.h @@ -0,0 +1,12 @@ +#ifndef __USER_VERSION_H__ +#define __USER_VERSION_H__ + +#define NODE_VERSION_MAJOR 0U +#define NODE_VERSION_MINOR 9U +#define NODE_VERSION_REVISION 5U +#define NODE_VERSION_INTERNAL 0U + +#define NODE_VERSION "NodeMCU 0.9.5" +#define BUILD_DATE "build 20150306" + +#endif /* __USER_VERSION_H__ */ diff --git a/app/lua/lua.c b/app/lua/lua.c index 27bb3b4b..d7d14f40 100644 --- a/app/lua/lua.c +++ b/app/lua/lua.c @@ -10,6 +10,7 @@ #include "c_stdlib.h" #include "c_string.h" #include "flash_fs.h" +#include "user_version.h" #define lua_c diff --git a/app/lua/linit.c b/app/modules/linit.c similarity index 98% rename from app/lua/linit.c rename to app/modules/linit.c index 872321ef..a182a853 100644 --- a/app/lua/linit.c +++ b/app/modules/linit.c @@ -15,6 +15,8 @@ #include "lrotable.h" #include "luaconf.h" +#include "user_modules.h" + #if defined(LUA_USE_MODULES) #include "modules.h" #endif diff --git a/app/modules/node.c b/app/modules/node.c index 90dd0d96..0384d798 100644 --- a/app/modules/node.c +++ b/app/modules/node.c @@ -23,6 +23,7 @@ #include "user_interface.h" #include "flash_api.h" #include "flash_fs.h" +#include "user_version.h" // Lua: restart() static int node_restart( lua_State* L ) From 13b08cdacf8f60fc2254e128730d696382500a84 Mon Sep 17 00:00:00 2001 From: funshine Date: Fri, 6 Mar 2015 15:55:24 +0800 Subject: [PATCH 09/13] add macro to control built-in lib for lua, add libm.a --- app/Makefile | 3 +- app/include/user_modules.h | 9 +++++ app/lua/lmathlib.c | 38 ++++++++++----------- app/lua/lualib.h | 12 +++---- app/modules/linit.c | 67 ++++++++++++++++++++++++++++++++----- ld/eagle.app.v6.ld | 2 +- lib/libm.a | Bin 0 -> 1410244 bytes 7 files changed, 96 insertions(+), 35 deletions(-) create mode 100644 lib/libm.a diff --git a/app/Makefile b/app/Makefile index 0f318cea..3b39ffe0 100644 --- a/app/Makefile +++ b/app/Makefile @@ -106,7 +106,8 @@ LINKFLAGS_eagle.app.v6 = \ -lsmartconfig \ -lssl \ $(DEP_LIBS_eagle.app.v6) \ - -Wl,--end-group + -Wl,--end-group \ + -lm DEPENDS_eagle.app.v6 = \ $(LD_FILE) \ diff --git a/app/include/user_modules.h b/app/include/user_modules.h index 7c71b11b..04138bcf 100644 --- a/app/include/user_modules.h +++ b/app/include/user_modules.h @@ -1,6 +1,15 @@ #ifndef __USER_MODULES_H__ #define __USER_MODULES_H__ +#define LUA_USE_BUILTIN_STRING // for string.xxx() +#define LUA_USE_BUILTIN_TABLE // for table.xxx() +#define LUA_USE_BUILTIN_COROUTINE // for coroutine.xxx() +// #define LUA_USE_BUILTIN_MATH // for math.xxx(), partially work +// #define LUA_USE_BUILTIN_IO // for io.xxx(), partially work + +// #define LUA_USE_BUILTIN_OS // for os.xxx(), not work +// #define LUA_USE_BUILTIN_DEBUG // for debug.xxx(), not work + #define LUA_USE_MODULES #ifdef LUA_USE_MODULES diff --git a/app/lua/lmathlib.c b/app/lua/lmathlib.c index d9630518..a9f553bf 100644 --- a/app/lua/lmathlib.c +++ b/app/lua/lmathlib.c @@ -324,36 +324,36 @@ const LUA_REG_TYPE math_map[] = { #endif #else {LSTRKEY("abs"), LFUNCVAL(math_abs)}, - {LSTRKEY("acos"), LFUNCVAL(math_acos)}, - {LSTRKEY("asin"), LFUNCVAL(math_asin)}, - {LSTRKEY("atan2"), LFUNCVAL(math_atan2)}, - {LSTRKEY("atan"), LFUNCVAL(math_atan)}, + // {LSTRKEY("acos"), LFUNCVAL(math_acos)}, + // {LSTRKEY("asin"), LFUNCVAL(math_asin)}, + // {LSTRKEY("atan2"), LFUNCVAL(math_atan2)}, + // {LSTRKEY("atan"), LFUNCVAL(math_atan)}, {LSTRKEY("ceil"), LFUNCVAL(math_ceil)}, - {LSTRKEY("cosh"), LFUNCVAL(math_cosh)}, - {LSTRKEY("cos"), LFUNCVAL(math_cos)}, - {LSTRKEY("deg"), LFUNCVAL(math_deg)}, - {LSTRKEY("exp"), LFUNCVAL(math_exp)}, + // {LSTRKEY("cosh"), LFUNCVAL(math_cosh)}, + // {LSTRKEY("cos"), LFUNCVAL(math_cos)}, + // {LSTRKEY("deg"), LFUNCVAL(math_deg)}, + // {LSTRKEY("exp"), LFUNCVAL(math_exp)}, {LSTRKEY("floor"), LFUNCVAL(math_floor)}, - {LSTRKEY("fmod"), LFUNCVAL(math_fmod)}, + // {LSTRKEY("fmod"), LFUNCVAL(math_fmod)}, #if LUA_OPTIMIZE_MEMORY > 0 && defined(LUA_COMPAT_MOD) {LSTRKEY("mod"), LFUNCVAL(math_fmod)}, #endif - {LSTRKEY("frexp"), LFUNCVAL(math_frexp)}, - {LSTRKEY("ldexp"), LFUNCVAL(math_ldexp)}, - {LSTRKEY("log10"), LFUNCVAL(math_log10)}, - {LSTRKEY("log"), LFUNCVAL(math_log)}, + // {LSTRKEY("frexp"), LFUNCVAL(math_frexp)}, + // {LSTRKEY("ldexp"), LFUNCVAL(math_ldexp)}, + // {LSTRKEY("log10"), LFUNCVAL(math_log10)}, + // {LSTRKEY("log"), LFUNCVAL(math_log)}, {LSTRKEY("max"), LFUNCVAL(math_max)}, {LSTRKEY("min"), LFUNCVAL(math_min)}, - {LSTRKEY("modf"), LFUNCVAL(math_modf)}, + // {LSTRKEY("modf"), LFUNCVAL(math_modf)}, {LSTRKEY("pow"), LFUNCVAL(math_pow)}, - {LSTRKEY("rad"), LFUNCVAL(math_rad)}, + // {LSTRKEY("rad"), LFUNCVAL(math_rad)}, {LSTRKEY("random"), LFUNCVAL(math_random)}, {LSTRKEY("randomseed"), LFUNCVAL(math_randomseed)}, - {LSTRKEY("sinh"), LFUNCVAL(math_sinh)}, - {LSTRKEY("sin"), LFUNCVAL(math_sin)}, + // {LSTRKEY("sinh"), LFUNCVAL(math_sinh)}, + // {LSTRKEY("sin"), LFUNCVAL(math_sin)}, {LSTRKEY("sqrt"), LFUNCVAL(math_sqrt)}, - {LSTRKEY("tanh"), LFUNCVAL(math_tanh)}, - {LSTRKEY("tan"), LFUNCVAL(math_tan)}, + // {LSTRKEY("tanh"), LFUNCVAL(math_tanh)}, + // {LSTRKEY("tan"), LFUNCVAL(math_tan)}, #if LUA_OPTIMIZE_MEMORY > 0 {LSTRKEY("pi"), LNUMVAL(PI)}, {LSTRKEY("huge"), LNUMVAL(HUGE_VAL)}, diff --git a/app/lua/lualib.h b/app/lua/lualib.h index a475d887..9e4e7aea 100644 --- a/app/lua/lualib.h +++ b/app/lua/lualib.h @@ -24,17 +24,17 @@ LUALIB_API int (luaopen_table) (lua_State *L); #define LUA_IOLIBNAME "io" LUALIB_API int (luaopen_io) (lua_State *L); -// #define LUA_OSLIBNAME "os" -// LUALIB_API int (luaopen_os) (lua_State *L); +#define LUA_OSLIBNAME "os" +LUALIB_API int (luaopen_os) (lua_State *L); #define LUA_STRLIBNAME "string" LUALIB_API int (luaopen_string) (lua_State *L); -// #define LUA_MATHLIBNAME "math" -// LUALIB_API int (luaopen_math) (lua_State *L); +#define LUA_MATHLIBNAME "math" +LUALIB_API int (luaopen_math) (lua_State *L); -// #define LUA_DBLIBNAME "debug" -// LUALIB_API int (luaopen_debug) (lua_State *L); +#define LUA_DBLIBNAME "debug" +LUALIB_API int (luaopen_debug) (lua_State *L); #define LUA_LOADLIBNAME "package" LUALIB_API int (luaopen_package) (lua_State *L); diff --git a/app/modules/linit.c b/app/modules/linit.c index a182a853..8bdbedfe 100644 --- a/app/modules/linit.c +++ b/app/modules/linit.c @@ -30,12 +30,26 @@ LUA_MODULES_ROM static const luaL_Reg lualibs[] = { {"", luaopen_base}, {LUA_LOADLIBNAME, luaopen_package}, - // {LUA_IOLIBNAME, luaopen_io}, - {LUA_STRLIBNAME, luaopen_string}, +#if defined(LUA_USE_BUILTIN_IO) + {LUA_IOLIBNAME, luaopen_io}, +#endif + +#if defined(LUA_USE_BUILTIN_STRING) + {LUA_STRLIBNAME, luaopen_string}, +#endif + #if LUA_OPTIMIZE_MEMORY == 0 - // {LUA_MATHLIBNAME, luaopen_math}, + #if defined(LUA_USE_BUILTIN_MATH) + {LUA_MATHLIBNAME, luaopen_math}, + #endif + + #if defined(LUA_USE_BUILTIN_TABLE) {LUA_TABLIBNAME, luaopen_table}, - // {LUA_DBLIBNAME, luaopen_debug}, + #endif + + #if defined(LUA_USE_BUILTIN_DEBUG) + {LUA_DBLIBNAME, luaopen_debug}, + #endif #endif #if defined(LUA_MODULES_ROM) #undef _ROM @@ -45,12 +59,30 @@ static const luaL_Reg lualibs[] = { {NULL, NULL} }; +#if defined(LUA_USE_BUILTIN_STRING) extern const luaR_entry strlib[]; +#endif + +#if defined(LUA_USE_BUILTIN_OS) extern const luaR_entry syslib[]; +#endif + +#if defined(LUA_USE_BUILTIN_TABLE) extern const luaR_entry tab_funcs[]; -// extern const luaR_entry dblib[]; +#endif + +#if defined(LUA_USE_BUILTIN_DEBUG) +extern const luaR_entry dblib[]; +#endif + +#if defined(LUA_USE_BUILTIN_COROUTINE) extern const luaR_entry co_funcs[]; -// extern const luaR_entry math_map[]; +#endif + +#if defined(LUA_USE_BUILTIN_MATH) +extern const luaR_entry math_map[]; +#endif + #if defined(LUA_MODULES_ROM) && LUA_OPTIMIZE_MEMORY == 2 #undef _ROM #define _ROM( name, openf, table ) extern const luaR_entry table[]; @@ -59,11 +91,30 @@ LUA_MODULES_ROM const luaR_table lua_rotable[] = { #if LUA_OPTIMIZE_MEMORY > 0 + #if defined(LUA_USE_BUILTIN_STRING) {LUA_STRLIBNAME, strlib}, + #endif + + #if defined(LUA_USE_BUILTIN_TABLE) {LUA_TABLIBNAME, tab_funcs}, - // {LUA_DBLIBNAME, dblib}, + #endif + + #if defined(LUA_USE_BUILTIN_DEBUG) + {LUA_DBLIBNAME, dblib}, + #endif + + #if defined(LUA_USE_BUILTIN_COROUTINE) {LUA_COLIBNAME, co_funcs}, - // {LUA_MATHLIBNAME, math_map}, + #endif + + #if defined(LUA_USE_BUILTIN_MATH) + {LUA_MATHLIBNAME, math_map}, + #endif + + #if defined(LUA_USE_BUILTIN_OS) + {LUA_OSLIBNAME, syslib}, + #endif + #if defined(LUA_MODULES_ROM) && LUA_OPTIMIZE_MEMORY == 2 #undef _ROM #define _ROM( name, openf, table ) { name, table }, diff --git a/ld/eagle.app.v6.ld b/ld/eagle.app.v6.ld index d6e37116..d3875f65 100644 --- a/ld/eagle.app.v6.ld +++ b/ld/eagle.app.v6.ld @@ -5,7 +5,7 @@ MEMORY dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x14000 iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40210000, len = 0x55000 + irom0_0_seg : org = 0x40210000, len = 0x56000 } PHDRS diff --git a/lib/libm.a b/lib/libm.a new file mode 100644 index 0000000000000000000000000000000000000000..bf04ff1118fb4835ce4546e5e202fa88d41528ba GIT binary patch literal 1410244 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

>Sonz$H*u3iww)lD+)XJ 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ν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 *a-s$CVwwr!E66x}DZ^9Rb+#Big&)$I1 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 Date: Fri, 6 Mar 2015 16:34:24 +0800 Subject: [PATCH 10/13] update readme --- README.md | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4cbeae63..8e4b7c9d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# **NodeMcu** # +# **NodeMCU** # version 0.9.5 [![Build Status](https://travis-ci.org/nodemcu/nodemcu-firmware.svg)](https://travis-ci.org/nodemcu/nodemcu-firmware) @@ -10,24 +10,26 @@ File system based on [spiffs](https://github.com/pellepl/spiffs)
Open source development kit for NodeMCU [nodemcu-devkit](https://github.com/nodemcu/nodemcu-devkit)
Flash tool for NodeMCU [nodemcu-flasher](https://github.com/nodemcu/nodemcu-flasher)
-wiki: [nodemcu wiki](https://github.com/nodemcu/nodemcu-firmware/wiki)
-api: [nodemcu api](https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en)
+wiki: [NodeMCU wiki](https://github.com/nodemcu/nodemcu-firmware/wiki)
+api: [NodeMCU api](https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en)
home: [nodemcu.com](http://www.nodemcu.com)
bbs: [Chinese bbs](http://bbs.nodemcu.com)
+docs: [NodeMCU docs](http://www.nodemcu.com/docs/) Tencent QQ group: 309957875
# Summary - Easy to access wireless router -- Based on Lua 5.1.4 (without *io, math, debug, os* module.) +- Based on Lua 5.1.4 (without *debug, os* module.) - Event-Drive programming preferred. -- Build-in file, timer, pwm, i2c, spi, 1-wire, net, mqtt, gpio, wifi, adc, uart and system api. +- Build-in file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart and system api. - GPIO pin re-mapped, use the index to access gpio, i2c, pwm. # To Do List (pull requests are very welcomed) +- loadable c module - fix wifi smart connect - add spi module (done) - add mqtt module (done) -- add coap module (in coap branch) +- add coap module (done) - cross compiler (done) # Change log @@ -101,15 +103,19 @@ build pre_build bin. #### [*] D0(GPIO16) can only be used as gpio read/write. no interrupt supported. no pwm/i2c/ow supported. #Build option -####file ./app/include/user_config.h +####file ./app/include/user_modules.h ```c -// #define FLASH_512K -// #define FLASH_1M -// #define FLASH_2M -// #define FLASH_4M -#define FLASH_AUTOSIZE -... +#define LUA_USE_BUILTIN_STRING // for string.xxx() +#define LUA_USE_BUILTIN_TABLE // for table.xxx() +#define LUA_USE_BUILTIN_COROUTINE // for coroutine.xxx() +#define LUA_USE_BUILTIN_MATH // for math.xxx(), partially work +// #define LUA_USE_BUILTIN_IO // for io.xxx(), partially work + +// #define LUA_USE_BUILTIN_OS // for os.xxx(), not work +// #define LUA_USE_BUILTIN_DEBUG // for debug.xxx(), not work + #define LUA_USE_MODULES + #ifdef LUA_USE_MODULES #define LUA_USE_MODULES_NODE #define LUA_USE_MODULES_FILE @@ -118,15 +124,17 @@ build pre_build bin. #define LUA_USE_MODULES_NET #define LUA_USE_MODULES_PWM #define LUA_USE_MODULES_I2C +#define LUA_USE_MODULES_SPI #define LUA_USE_MODULES_TMR #define LUA_USE_MODULES_ADC #define LUA_USE_MODULES_UART #define LUA_USE_MODULES_OW #define LUA_USE_MODULES_BIT +#define LUA_USE_MODULES_MQTT +// #define LUA_USE_MODULES_COAP // need about 4k more ram for now +#define LUA_USE_MODULES_U8G #define LUA_USE_MODULES_WS2812 #endif /* LUA_USE_MODULES */ -... -// LUA_NUMBER_INTEGRAL ``` #Flash the firmware From feeeeef0b8742067b05df5a3051378b8bc465180 Mon Sep 17 00:00:00 2001 From: funshine Date: Fri, 6 Mar 2015 16:38:28 +0800 Subject: [PATCH 11/13] fix readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e4b7c9d..43980e13 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ wiki: [NodeMCU wiki](https://github.com/nodemcu/nodemcu-firmware/wiki)
api: [NodeMCU api](https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en)
home: [nodemcu.com](http://www.nodemcu.com)
bbs: [Chinese bbs](http://bbs.nodemcu.com)
-docs: [NodeMCU docs](http://www.nodemcu.com/docs/) +docs: [NodeMCU docs](http://www.nodemcu.com/docs/)
Tencent QQ group: 309957875
# Summary From 9f7a2554f5d492bc93b94b0117e0a470f7209add Mon Sep 17 00:00:00 2001 From: ftruzzi Date: Sat, 7 Mar 2015 03:11:17 +0100 Subject: [PATCH 12/13] First release of HDC1000 module. A module for the HDC1000 temperature and humidity sensor. --- lua_modules/hdc1000/HDC1000-example.lua | 12 +++ lua_modules/hdc1000/HDC1000.lua | 99 +++++++++++++++++++++++++ lua_modules/hdc1000/README.md | 39 ++++++++++ 3 files changed, 150 insertions(+) create mode 100644 lua_modules/hdc1000/HDC1000-example.lua create mode 100644 lua_modules/hdc1000/HDC1000.lua create mode 100644 lua_modules/hdc1000/README.md diff --git a/lua_modules/hdc1000/HDC1000-example.lua b/lua_modules/hdc1000/HDC1000-example.lua new file mode 100644 index 00000000..df7dbd27 --- /dev/null +++ b/lua_modules/hdc1000/HDC1000-example.lua @@ -0,0 +1,12 @@ +HDC1000 = require("HDC1000") + +sda = 1 +scl = 2 + +HDC1000.init(sda, scl) +HDC1000.config() -- default values are used if called with no arguments. prototype is config(address, resolution, heater) + +print(string.format("Temperature: %.2f °C\nHumidity: %.2f %%", HDC1000.getTemp(), HDC1000.getHumi())) + +HDC1000 = nil +package.loaded["HDC1000"]=nil \ No newline at end of file diff --git a/lua_modules/hdc1000/HDC1000.lua b/lua_modules/hdc1000/HDC1000.lua new file mode 100644 index 00000000..80f7e499 --- /dev/null +++ b/lua_modules/hdc1000/HDC1000.lua @@ -0,0 +1,99 @@ +------------------------------------------------------- + +-- This library was written for the Texas Instruments +-- HDC1000 temperature and humidity sensor. +-- It should work for the HDC1008 too. +-- Written by Francesco Truzzi (francesco@truzzi.me) +-- Released under GNU GPL v2.0 license. + +------------------------------------------------------- + +-------------- NON-DEFAULT CONFIG VALUES -------------- +------------- config() optional arguments ------------- + +-- HDC1000_HEAT_OFF 0x00 (heater) +-- HDC1000_TEMP_11BIT 0x40 (resolution) +-- HDC1000_HUMI_11BIT 0x01 (resolution) +-- HDC1000_HUMI_8BIT 0x20 (resolution) + +------------------------------------------------------- + +local modname = ... +local M = {} +_G[modname] = M + +local id = 0 +local i2c = i2c +local delay = 20000 + +local HDC1000_ADDR = 0x40 + +local HDC1000_TEMP = 0x00 +local HDC1000_HUMI = 0x01 +local HDC1000_CONFIG = 0x02 + +local HDC1000_HEAT_ON = 0x20 +local HDC1000_TEMP_HUMI_14BIT = 0x00 + +-- reads 16bits from the sensor +local function read16() + i2c.start(id) + i2c.address(id, HDC1000_ADDR, i2c.RECEIVER) + data_temp = i2c.read(0, 2) + i2c.stop(id) + data = bit.lshift(string.byte(data_temp, 1, 1), 8) + string.byte(data_temp, 2, 2) + return data +end + +-- sets the register to read next +local function setReadRegister(register) + i2c.start(id) + i2c.address(id, HDC1000_ADDR, i2c.TRANSMITTER) + i2c.write(id, register) + i2c.stop(id) +end + +-- writes the 2 configuration bytes +local function writeConfig(config) + i2c.start(id) + i2c.address(id, HDC1000_ADDR, i2c.TRANSMITTER) + i2c.write(id, HDC1000_CONFIG, config, 0x00) + i2c.stop(id) +end + +-- returns true if battery voltage is < 2.7V, false otherwise +function M.batteryDead() + setReadRegister(HDC1000_CONFIG) + return(bit.isset(read16(), 11)) + +end + +-- initalize i2c +function M.init(sda, scl) + i2c.setup(id, sda, scl, i2c.SLOW) +end + +function M.config(addr, resolution, heater) + -- default values are set if the function is called with no arguments + HDC1000_ADDR = addr or HDC1000_ADDR + resolution = resolution or HDC1000_TEMP_HUMI_14BIT + heater = heater or HDC1000_HEAT_ON + writeConfig(bit.bor(resolution, heater)) +end + +-- outputs temperature in Celsius degrees +function M.getHumi() + setReadRegister(HDC1000_HUMI) + tmr.delay(delay) + return(read16()/65535.0*100) +end + +-- outputs humidity in %RH +function M.getTemp() + setReadRegister(HDC1000_TEMP) + tmr.delay(delay) + return(read16()/65535.0*165-40) +end + +return M + diff --git a/lua_modules/hdc1000/README.md b/lua_modules/hdc1000/README.md new file mode 100644 index 00000000..40a52c4b --- /dev/null +++ b/lua_modules/hdc1000/README.md @@ -0,0 +1,39 @@ +HDC1000 NodeMCU Library +======================= + +Here's my NodeMCU library for the TI HDC1000 temperature and humidity sensor. It should work with the HDC1008 too but I haven't tested it. + +### Setup your sensor: +First, require it: + +`hdc1000 = require("hdc1000")` + +Then, initialize it: + +`hdc1000.init(sda, scl)` + +Configure it: + +`hdc1000.config()` + +Default options set the address to 0x40 and enable both temperature and humidity readings at 14-bit resolution, with the integrated heater on. You can change them by initializing your sensor like this: + +`mySensor.begin(address, resolution, heater);` + +"resolution" can be set to 14 bits for both temperature and humidity (0x00 - default) 11 bits for temperature (0x40), 11 bits for humidity (0x01), 8 bits for humidity (0x20) +"heater" can be set to ON (0x20 - default) or OFF (0x00) + +### Read some values +You can read temperature and humidity by using the following commands: + +`temperature = hdc1000.getTemp()` in Celsius degrees. + +`humidity = hdc1000.getHumi()` in % + +### Check your battery + +The following code returns true if the battery voltage is <2.8V, false otherwise. + +`isDead = hdc1000.batteryDead();` + +Happy making! Also, check out my Breakout Board and Arduino library for this chip: http://b.truzzi.me/hdc1000-temperature-and-humidity-sensor-breakout-with-arduino-library/. From be93fe5e146351f60c6ca2c1aa0088e1aa5e81c7 Mon Sep 17 00:00:00 2001 From: Francesco Truzzi Date: Sat, 7 Mar 2015 03:14:52 +0100 Subject: [PATCH 13/13] Update README.md --- lua_modules/hdc1000/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lua_modules/hdc1000/README.md b/lua_modules/hdc1000/README.md index 40a52c4b..398cccee 100644 --- a/lua_modules/hdc1000/README.md +++ b/lua_modules/hdc1000/README.md @@ -1,24 +1,24 @@ -HDC1000 NodeMCU Library +HDC1000 NodeMCU module ======================= -Here's my NodeMCU library for the TI HDC1000 temperature and humidity sensor. It should work with the HDC1008 too but I haven't tested it. +Here's my NodeMCU module for the TI HDC1000 temperature and humidity sensor. It should work with the HDC1008 too but I haven't tested it. ### Setup your sensor: First, require it: -`hdc1000 = require("hdc1000")` +`HDC1000 = require("HDC1000")` Then, initialize it: -`hdc1000.init(sda, scl)` +`HDC1000.init(sda, scl)` Configure it: -`hdc1000.config()` +`HDC1000.config()` Default options set the address to 0x40 and enable both temperature and humidity readings at 14-bit resolution, with the integrated heater on. You can change them by initializing your sensor like this: -`mySensor.begin(address, resolution, heater);` +`HDC1000.config(address, resolution, heater);` "resolution" can be set to 14 bits for both temperature and humidity (0x00 - default) 11 bits for temperature (0x40), 11 bits for humidity (0x01), 8 bits for humidity (0x20) "heater" can be set to ON (0x20 - default) or OFF (0x00) @@ -26,14 +26,14 @@ Default options set the address to 0x40 and enable both temperature and humidity ### Read some values You can read temperature and humidity by using the following commands: -`temperature = hdc1000.getTemp()` in Celsius degrees. +`temperature = HDC1000.getTemp()` in Celsius degrees. -`humidity = hdc1000.getHumi()` in % +`humidity = HDC1000.getHumi()` in % ### Check your battery The following code returns true if the battery voltage is <2.8V, false otherwise. -`isDead = hdc1000.batteryDead();` +`isDead = HDC1000.batteryDead();` Happy making! Also, check out my Breakout Board and Arduino library for this chip: http://b.truzzi.me/hdc1000-temperature-and-humidity-sensor-breakout-with-arduino-library/.