You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/10/05 21:56:00 UTC
[1/3] incubator-mynewt-core git commit: oicmgr;
fix uri parameter parsing.
Repository: incubator-mynewt-core
Updated Branches:
refs/heads/develop 6b802d653 -> c10e883c9
oicmgr; fix uri parameter parsing.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/c10e883c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/c10e883c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/c10e883c
Branch: refs/heads/develop
Commit: c10e883c9cf726bc0f70fabdc8e589668ea524a2
Parents: ba51dfd
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Wed Oct 5 14:51:48 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Wed Oct 5 14:53:03 2016 -0700
----------------------------------------------------------------------
mgmt/oicmgr/src/newtmgr.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c10e883c/mgmt/oicmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/mgmt/oicmgr/src/newtmgr.c b/mgmt/oicmgr/src/newtmgr.c
index 39d6cf8..0f426ac 100644
--- a/mgmt/oicmgr/src/newtmgr.c
+++ b/mgmt/oicmgr/src/newtmgr.c
@@ -36,7 +36,7 @@
#define OICMGR_STACK_SZ OS_STACK_ALIGN(MYNEWT_VAL(OICMGR_STACK_SIZE))
struct omgr_jbuf {
- struct mgmt_jbuf ob_m;
+ struct mgmt_jbuf ob_mj;
char *ob_in;
uint16_t ob_in_off;
uint16_t ob_in_end;
@@ -127,7 +127,7 @@ omgr_jbuf_write(void *arg, char *data, int len)
njb = (struct omgr_jbuf *)arg;
if (njb->ob_out_off + len >= njb->ob_out_end) {
- assert(0);
+ rc = -1;
goto err;
}
memcpy(njb->ob_out + njb->ob_out_off, data, len);
@@ -146,7 +146,7 @@ omgr_jbuf_init(struct omgr_jbuf *ob)
memset(ob, 0, sizeof(*ob));
- mjb = &ob->ob_m;
+ mjb = &ob->ob_mj;
mjb->mjb_buf.jb_read_next = omgr_jbuf_read_next;
mjb->mjb_buf.jb_read_prev = omgr_jbuf_read_prev;
mjb->mjb_buf.jb_readn = omgr_jbuf_readn;
@@ -169,12 +169,13 @@ omgr_jbuf_setobuf(struct omgr_jbuf *ob, char *ptr, uint16_t maxlen)
ob->ob_out_off = 0;
ob->ob_out_end = maxlen;
ob->ob_out[0] = '\0';
- ob->ob_m.mjb_enc.je_wr_commas = 0;
+ ob->ob_mj.mjb_enc.je_wr_commas = 0;
}
static struct mgmt_handler *
omgr_oic_find_handler(const char *q, int qlen)
{
+ char id_str[8];
int grp = -1;
int id = -1;
char *str;
@@ -182,16 +183,20 @@ omgr_oic_find_handler(const char *q, int qlen)
int slen;
slen = oc_ri_get_query_value(q, qlen, "gr", &str);
- if (slen > 0) {
- grp = strtoul(str, &eptr, 0);
- if (*eptr != '\0' && *eptr != '&') {
+ if (slen > 0 && slen < sizeof(id_str) - 1) {
+ memcpy(id_str, str, slen);
+ id_str[slen] = '\0';
+ grp = strtoul(id_str, &eptr, 0);
+ if (*eptr != '\0') {
return NULL;
}
}
slen = oc_ri_get_query_value(q, qlen, "id", &str);
- if (slen > 0) {
- id = strtoul(str, &eptr, 0);
- if (*eptr != '\0' && *eptr != '&') {
+ if (slen > 0 && slen < sizeof(id_str) - 1) {
+ memcpy(id_str, str, slen);
+ id_str[slen] = '\0';
+ id = strtoul(id_str, &eptr, 0);
+ if (*eptr != '\0') {
return NULL;
}
}
@@ -233,13 +238,13 @@ omgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
if (!isset) {
if (handler->mh_read) {
- rc = handler->mh_read(&o->os_jbuf.ob_m);
+ rc = handler->mh_read(&o->os_jbuf.ob_mj);
} else {
goto bad_req;
}
} else {
if (handler->mh_write) {
- rc = handler->mh_write(&o->os_jbuf.ob_m);
+ rc = handler->mh_write(&o->os_jbuf.ob_mj);
} else {
goto bad_req;
}
[2/3] incubator-mynewt-core git commit: oicmgr;
use the common mgmt code interface.
Posted by ma...@apache.org.
oicmgr; use the common mgmt code interface.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/ba51dfdb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/ba51dfdb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/ba51dfdb
Branch: refs/heads/develop
Commit: ba51dfdbcad7cc5dbfc4293d1a720852acebe3b6
Parents: 04a7e46
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Wed Oct 5 14:26:39 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Wed Oct 5 14:53:03 2016 -0700
----------------------------------------------------------------------
mgmt/oicmgr/include/newtmgr/newtmgr.h | 119 ----------
mgmt/oicmgr/src/newtmgr.c | 356 +++++++++--------------------
2 files changed, 112 insertions(+), 363 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/ba51dfdb/mgmt/oicmgr/include/newtmgr/newtmgr.h
----------------------------------------------------------------------
diff --git a/mgmt/oicmgr/include/newtmgr/newtmgr.h b/mgmt/oicmgr/include/newtmgr/newtmgr.h
deleted file mode 100644
index 30be98f..0000000
--- a/mgmt/oicmgr/include/newtmgr/newtmgr.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef _NEWTMGR_H_
-#define _NEWTMGR_H_
-
-#include <json/json.h>
-#include <inttypes.h>
-#include <os/os.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* MTU for newtmgr responses */
-#define NMGR_MAX_MTU 1024
-
-#ifndef STR
-/* Stringification of constants */
-#define STR(x) #x
-#endif
-
-/* First 64 groups are reserved for system level newtmgr commands.
- * Per-user commands are then defined after group 64.
- */
-#define NMGR_GROUP_ID_DEFAULT (0)
-#define NMGR_GROUP_ID_IMAGE (1)
-#define NMGR_GROUP_ID_STATS (2)
-#define NMGR_GROUP_ID_CONFIG (3)
-#define NMGR_GROUP_ID_LOGS (4)
-#define NMGR_GROUP_ID_CRASH (5)
-#define NMGR_GROUP_ID_SPLIT (6)
-#define NMGR_GROUP_ID_PERUSER (64)
-
-#define NMGR_OP_READ (0)
-#define NMGR_OP_READ_RSP (1)
-#define NMGR_OP_WRITE (2)
-#define NMGR_OP_WRITE_RSP (3)
-
-
-/**
- * Newtmgr JSON error codes
- */
-#define NMGR_ERR_EOK (0)
-#define NMGR_ERR_EUNKNOWN (1)
-#define NMGR_ERR_ENOMEM (2)
-#define NMGR_ERR_EINVAL (3)
-#define NMGR_ERR_ETIMEOUT (4)
-#define NMGR_ERR_ENOENT (5)
-#define NMGR_ERR_EPERUSER (256)
-
-struct nmgr_hdr {
- uint8_t nh_op; /* NMGR_OP_XXX */
- uint8_t nh_flags;
- uint16_t nh_len; /* length of the payload */
- uint16_t nh_group; /* NMGR_GROUP_XXX */
- uint8_t nh_seq; /* sequence number */
- uint8_t nh_id; /* message ID within group */
-};
-
-struct nmgr_jbuf {
- /* json_buffer must be first element in the structure */
- struct json_buffer njb_buf;
- struct json_encoder njb_enc;
- char *njb_in;
- uint16_t njb_in_off;
- uint16_t njb_in_end;
- char *njb_out;
- uint16_t njb_out_off;
- uint16_t njb_out_end;
-};
-int nmgr_jbuf_setoerr(struct nmgr_jbuf *njb, int errcode);
-
-typedef int (*nmgr_handler_func_t)(struct nmgr_jbuf *);
-
-#define NMGR_HANDLER_FUNC(__name) \
- int __name(struct nmgr_hdr *nmr, struct os_mbuf *req, uint16_t srcoff, \
- struct os_mbuf *rsp)
-
-struct nmgr_handler {
- nmgr_handler_func_t nh_read;
- nmgr_handler_func_t nh_write;
-};
-
-struct nmgr_group {
- struct nmgr_handler *ng_handlers;
- uint16_t ng_handlers_count;
- uint16_t ng_group_id;
- STAILQ_ENTRY(nmgr_group) ng_next;
-};
-
-#define NMGR_GROUP_SET_HANDLERS(__group, __handlers) \
- (__group)->ng_handlers = (__handlers); \
- (__group)->ng_handlers_count = (sizeof((__handlers)) / \
- sizeof(struct nmgr_handler));
-
-int nmgr_group_register(struct nmgr_group *group);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NETMGR_H */
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/ba51dfdb/mgmt/oicmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/mgmt/oicmgr/src/newtmgr.c b/mgmt/oicmgr/src/newtmgr.c
index 769f806..39d6cf8 100644
--- a/mgmt/oicmgr/src/newtmgr.c
+++ b/mgmt/oicmgr/src/newtmgr.c
@@ -26,235 +26,113 @@
#include <assert.h>
#include <string.h>
-#include <newtmgr/newtmgr.h>
+#include <mgmt/mgmt.h>
#include <nmgr_os/nmgr_os.h>
#include <oic/oc_api.h>
-#define NMGR_OC_EVENT (OS_EVENT_T_PERUSER)
-#define NMGR_OC_TIMER (OS_EVENT_T_PERUSER + 1)
+#define OMGR_OC_EVENT (OS_EVENT_T_PERUSER)
+#define OMGR_OC_TIMER (OS_EVENT_T_PERUSER + 1)
#define OICMGR_STACK_SZ OS_STACK_ALIGN(MYNEWT_VAL(OICMGR_STACK_SIZE))
-struct nmgr_state {
- struct os_mutex ns_group_lock;
- STAILQ_HEAD(, nmgr_group) ns_groups;
- struct os_eventq ns_evq;
- struct os_event ns_oc_event;
- struct os_callout ns_oc_timer;
- struct os_task ns_task;
- struct nmgr_jbuf ns_jbuf; /* JSON buffer for NMGR task */
- char ns_rsp[NMGR_MAX_MTU];
+struct omgr_jbuf {
+ struct mgmt_jbuf ob_m;
+ char *ob_in;
+ uint16_t ob_in_off;
+ uint16_t ob_in_end;
+ char *ob_out;
+ uint16_t ob_out_off;
+ uint16_t ob_out_end;
};
-static struct nmgr_state nmgr_state = {
- .ns_groups = STAILQ_HEAD_INITIALIZER(nmgr_state.ns_groups),
- .ns_oc_event.ev_type = NMGR_OC_EVENT,
- .ns_oc_timer.c_ev.ev_type = NMGR_OC_TIMER,
- .ns_oc_timer.c_evq = &nmgr_state.ns_evq
+struct omgr_state {
+ struct os_eventq os_evq;
+ struct os_event os_oc_event;
+ struct os_callout os_oc_timer;
+ struct os_task os_task;
+ struct omgr_jbuf os_jbuf; /* JSON buffer for NMGR task */
+ char os_rsp[MGMT_MAX_MTU];
};
-static os_stack_t oicmgr_stack[OICMGR_STACK_SZ];
-
-static void nmgr_oic_get(oc_request_t *request, oc_interface_mask_t interface);
-static void nmgr_oic_put(oc_request_t *request, oc_interface_mask_t interface);
-
-int
-nmgr_group_list_lock(void)
-{
- int rc;
-
- if (!os_started()) {
- return (0);
- }
-
- rc = os_mutex_pend(&nmgr_state.ns_group_lock, OS_WAIT_FOREVER);
- if (rc != 0) {
- goto err;
- }
-
- return (0);
-err:
- return (rc);
-}
-
-int
-nmgr_group_list_unlock(void)
-{
- int rc;
-
- if (!os_started()) {
- return (0);
- }
-
- rc = os_mutex_release(&nmgr_state.ns_group_lock);
- if (rc != 0) {
- goto err;
- }
-
- return (0);
-err:
- return (rc);
-}
-
-
-int
-nmgr_group_register(struct nmgr_group *group)
-{
- int rc;
-
- rc = nmgr_group_list_lock();
- if (rc != 0) {
- goto err;
- }
-
- STAILQ_INSERT_TAIL(&nmgr_state.ns_groups, group, ng_next);
-
- rc = nmgr_group_list_unlock();
- if (rc != 0) {
- goto err;
- }
-
- return (0);
-err:
- return (rc);
-}
-
-static struct nmgr_group *
-nmgr_find_group(uint16_t group_id)
-{
- struct nmgr_group *group;
- int rc;
-
- group = NULL;
-
- rc = nmgr_group_list_lock();
- if (rc != 0) {
- goto err;
- }
-
- STAILQ_FOREACH(group, &nmgr_state.ns_groups, ng_next) {
- if (group->ng_group_id == group_id) {
- break;
- }
- }
-
- rc = nmgr_group_list_unlock();
- if (rc != 0) {
- goto err;
- }
-
- return (group);
-err:
- return (NULL);
-}
-
-static struct nmgr_handler *
-nmgr_find_handler(uint16_t group_id, uint16_t handler_id)
-{
- struct nmgr_group *group;
- struct nmgr_handler *handler;
-
- group = nmgr_find_group(group_id);
- if (!group) {
- goto err;
- }
-
- if (handler_id >= group->ng_handlers_count) {
- goto err;
- }
-
- handler = &group->ng_handlers[handler_id];
-
- return (handler);
-err:
- return (NULL);
-}
+static struct omgr_state omgr_state = {
+ .os_oc_event.ev_type = OMGR_OC_EVENT,
+ .os_oc_timer.c_ev.ev_type = OMGR_OC_TIMER,
+ .os_oc_timer.c_evq = &omgr_state.os_evq
+};
-int
-nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, void *data,
- uint16_t len)
-{
- int rc;
+static os_stack_t oicmgr_stack[OICMGR_STACK_SZ];
- rc = os_mbuf_append(rsp, data, len);
- if (rc != 0) {
- goto err;
- }
- hdr->nh_len += len;
-
- return (0);
-err:
- return (rc);
-}
+static void omgr_oic_get(oc_request_t *request, oc_interface_mask_t interface);
+static void omgr_oic_put(oc_request_t *request, oc_interface_mask_t interface);
static char
-nmgr_jbuf_read_next(struct json_buffer *jb)
+omgr_jbuf_read_next(struct json_buffer *jb)
{
- struct nmgr_jbuf *njb;
+ struct omgr_jbuf *njb;
char c;
- njb = (struct nmgr_jbuf *) jb;
+ njb = (struct omgr_jbuf *) jb;
- if (njb->njb_in_off + 1 > njb->njb_in_end) {
+ if (njb->ob_in_off + 1 > njb->ob_in_end) {
return '\0';
}
- c = njb->njb_in[njb->njb_in_off];
- ++njb->njb_in_off;
+ c = njb->ob_in[njb->ob_in_off];
+ ++njb->ob_in_off;
return (c);
}
static char
-nmgr_jbuf_read_prev(struct json_buffer *jb)
+omgr_jbuf_read_prev(struct json_buffer *jb)
{
- struct nmgr_jbuf *njb;
+ struct omgr_jbuf *njb;
char c;
- njb = (struct nmgr_jbuf *) jb;
+ njb = (struct omgr_jbuf *) jb;
- if (njb->njb_in_off == 0) {
+ if (njb->ob_in_off == 0) {
return '\0';
}
- --njb->njb_in_off;
- c = njb->njb_in[njb->njb_in_off];
+ --njb->ob_in_off;
+ c = njb->ob_in[njb->ob_in_off];
return (c);
}
static int
-nmgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
+omgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
{
- struct nmgr_jbuf *njb;
+ struct omgr_jbuf *njb;
int read;
int left;
- njb = (struct nmgr_jbuf *) jb;
+ njb = (struct omgr_jbuf *)jb;
- left = njb->njb_in_end - njb->njb_in_off;
+ left = njb->ob_in_end - njb->ob_in_off;
read = size > left ? left : size;
- memcpy(buf, njb->njb_in + njb->njb_in_off, read);
+ memcpy(buf, njb->ob_in + njb->ob_in_off, read);
return (read);
}
static int
-nmgr_jbuf_write(void *arg, char *data, int len)
+omgr_jbuf_write(void *arg, char *data, int len)
{
- struct nmgr_jbuf *njb;
+ struct omgr_jbuf *njb;
int rc;
- njb = (struct nmgr_jbuf *) arg;
+ njb = (struct omgr_jbuf *)arg;
- if (njb->njb_out_off + len >= njb->njb_out_end) {
+ if (njb->ob_out_off + len >= njb->ob_out_end) {
assert(0);
goto err;
}
- memcpy(njb->njb_out + njb->njb_out_off, data, len);
- njb->njb_out_off += len;
- njb->njb_out[njb->njb_out_off] = '\0';
+ memcpy(njb->ob_out + njb->ob_out_off, data, len);
+ njb->ob_out_off += len;
+ njb->ob_out[njb->ob_out_off] = '\0';
return (0);
err:
@@ -262,50 +140,40 @@ err:
}
static void
-nmgr_jbuf_init(struct nmgr_jbuf *njb)
+omgr_jbuf_init(struct omgr_jbuf *ob)
{
- memset(njb, 0, sizeof(*njb));
+ struct mgmt_jbuf *mjb;
- njb->njb_buf.jb_read_next = nmgr_jbuf_read_next;
- njb->njb_buf.jb_read_prev = nmgr_jbuf_read_prev;
- njb->njb_buf.jb_readn = nmgr_jbuf_readn;
- njb->njb_enc.je_write = nmgr_jbuf_write;
- njb->njb_enc.je_arg = njb;
-}
+ memset(ob, 0, sizeof(*ob));
-static void
-nmgr_jbuf_setibuf(struct nmgr_jbuf *njb, char *ptr, uint16_t len)
-{
- njb->njb_in_off = 0;
- njb->njb_in_end = len;
- njb->njb_in = ptr;
- njb->njb_enc.je_wr_commas = 0;
+ mjb = &ob->ob_m;
+ mjb->mjb_buf.jb_read_next = omgr_jbuf_read_next;
+ mjb->mjb_buf.jb_read_prev = omgr_jbuf_read_prev;
+ mjb->mjb_buf.jb_readn = omgr_jbuf_readn;
+ mjb->mjb_enc.je_write = omgr_jbuf_write;
+ mjb->mjb_enc.je_arg = ob;
}
static void
-nmgr_jbuf_setobuf(struct nmgr_jbuf *njb, char *ptr, uint16_t maxlen)
+omgr_jbuf_setibuf(struct omgr_jbuf *ob, char *ptr, uint16_t len)
{
- njb->njb_out = ptr;
- njb->njb_out_off = 0;
- njb->njb_out_end = maxlen;
- njb->njb_out[0] = '\0';
+ ob->ob_in_off = 0;
+ ob->ob_in_end = len;
+ ob->ob_in = ptr;
}
-int
-nmgr_jbuf_setoerr(struct nmgr_jbuf *njb, int errcode)
+static void
+omgr_jbuf_setobuf(struct omgr_jbuf *ob, char *ptr, uint16_t maxlen)
{
- struct json_value jv;
-
- json_encode_object_start(&njb->njb_enc);
- JSON_VALUE_INT(&jv, errcode);
- json_encode_object_entry(&njb->njb_enc, "rc", &jv);
- json_encode_object_finish(&njb->njb_enc);
-
- return (0);
+ ob->ob_out = ptr;
+ ob->ob_out_off = 0;
+ ob->ob_out_end = maxlen;
+ ob->ob_out[0] = '\0';
+ ob->ob_m.mjb_enc.je_wr_commas = 0;
}
-static struct nmgr_handler *
-nmgr_oic_find_handler(const char *q, int qlen)
+static struct mgmt_handler *
+omgr_oic_find_handler(const char *q, int qlen)
{
int grp = -1;
int id = -1;
@@ -327,14 +195,14 @@ nmgr_oic_find_handler(const char *q, int qlen)
return NULL;
}
}
- return nmgr_find_handler(grp, id);
+ return mgmt_find_handler(grp, id);
}
static void
-nmgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
+omgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
{
- struct nmgr_state *ns = &nmgr_state;
- struct nmgr_handler *handler;
+ struct omgr_state *o = &omgr_state;
+ struct mgmt_handler *handler;
oc_rep_t *data;
int rc;
@@ -342,7 +210,7 @@ nmgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
goto bad_req;
}
- handler = nmgr_oic_find_handler(req->query, req->query_len);
+ handler = omgr_oic_find_handler(req->query, req->query_len);
if (!handler) {
goto bad_req;
}
@@ -350,28 +218,28 @@ nmgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
/*
* Setup state for JSON encoding.
*/
- nmgr_jbuf_setobuf(&ns->ns_jbuf, ns->ns_rsp, sizeof(ns->ns_rsp));
+ omgr_jbuf_setobuf(&o->os_jbuf, o->os_rsp, sizeof(o->os_rsp));
data = req->request_payload;
if (data) {
if (data->type != STRING) {
goto bad_req;
}
- nmgr_jbuf_setibuf(&ns->ns_jbuf, oc_string(data->value_string),
+ omgr_jbuf_setibuf(&o->os_jbuf, oc_string(data->value_string),
oc_string_len(data->value_string));
} else {
- nmgr_jbuf_setibuf(&ns->ns_jbuf, NULL, 0);
+ omgr_jbuf_setibuf(&o->os_jbuf, NULL, 0);
}
if (!isset) {
- if (handler->nh_read) {
- rc = handler->nh_read(&ns->ns_jbuf);
+ if (handler->mh_read) {
+ rc = handler->mh_read(&o->os_jbuf.ob_m);
} else {
goto bad_req;
}
} else {
- if (handler->nh_write) {
- rc = handler->nh_write(&ns->ns_jbuf);
+ if (handler->mh_write) {
+ rc = handler->mh_write(&o->os_jbuf.ob_m);
} else {
goto bad_req;
}
@@ -385,7 +253,7 @@ nmgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
case OC_IF_BASELINE:
oc_process_baseline_interface(req->resource);
case OC_IF_RW:
- oc_rep_set_text_string(root, "key", ns->ns_rsp);
+ oc_rep_set_text_string(root, "key", o->os_rsp);
break;
default:
break;
@@ -399,19 +267,19 @@ bad_req:
}
static void
-nmgr_oic_get(oc_request_t *req, oc_interface_mask_t mask)
+omgr_oic_get(oc_request_t *req, oc_interface_mask_t mask)
{
- nmgr_oic_op(req, mask, 0);
+ omgr_oic_op(req, mask, 0);
}
static void
-nmgr_oic_put(oc_request_t *req, oc_interface_mask_t mask)
+omgr_oic_put(oc_request_t *req, oc_interface_mask_t mask)
{
- nmgr_oic_op(req, mask, 1);
+ omgr_oic_op(req, mask, 1);
}
static void
-nmgr_app_init(void)
+omgr_app_init(void)
{
oc_init_platform("MyNewt", NULL, NULL);
oc_add_device("/oic/d", "oic.d.light", "MynewtLed", "1.0", "1.0", NULL,
@@ -419,58 +287,58 @@ nmgr_app_init(void)
}
static void
-nmgr_register_resources(void)
+omgr_register_resources(void)
{
uint8_t mode;
oc_resource_t *res = NULL;
char name[12];
- snprintf(name, sizeof(name), "/nmgr");
+ snprintf(name, sizeof(name), "/omgr");
res = oc_new_resource(name, 1, 0);
oc_resource_bind_resource_type(res, "x.mynewt.nmgr");
mode = OC_IF_RW;
oc_resource_bind_resource_interface(res, mode);
oc_resource_set_default_interface(res, mode);
oc_resource_set_discoverable(res);
- oc_resource_set_request_handler(res, OC_GET, nmgr_oic_get);
- oc_resource_set_request_handler(res, OC_PUT, nmgr_oic_put);
+ oc_resource_set_request_handler(res, OC_GET, omgr_oic_get);
+ oc_resource_set_request_handler(res, OC_PUT, omgr_oic_put);
oc_add_resource(res);
}
-static const oc_handler_t nmgr_oc_handler = {
- .init = nmgr_app_init,
- .register_resources = nmgr_register_resources
+static const oc_handler_t omgr_oc_handler = {
+ .init = omgr_app_init,
+ .register_resources = omgr_register_resources
};
void
oc_signal_main_loop(void)
{
- struct nmgr_state *ns = &nmgr_state;
+ struct omgr_state *o = &omgr_state;
- os_eventq_put(&ns->ns_evq, &ns->ns_oc_event);
+ os_eventq_put(&o->os_evq, &o->os_oc_event);
}
void
-nmgr_oic_task(void *arg)
+omgr_oic_task(void *arg)
{
- struct nmgr_state *ns = &nmgr_state;
+ struct omgr_state *o = &omgr_state;
struct os_event *ev;
struct os_callout_func *ocf;
os_time_t next_event;
- nmgr_jbuf_init(&ns->ns_jbuf);
+ omgr_jbuf_init(&o->os_jbuf);
- oc_main_init((oc_handler_t *)&nmgr_oc_handler);
+ oc_main_init((oc_handler_t *)&omgr_oc_handler);
while (1) {
- ev = os_eventq_get(&ns->ns_evq);
+ ev = os_eventq_get(&o->os_evq);
switch (ev->ev_type) {
- case NMGR_OC_EVENT:
- case NMGR_OC_TIMER:
+ case OMGR_OC_EVENT:
+ case OMGR_OC_TIMER:
next_event = oc_main_poll();
if (next_event) {
- os_callout_reset(&ns->ns_oc_timer, next_event - os_time_get());
+ os_callout_reset(&o->os_oc_timer, next_event - os_time_get());
} else {
- os_callout_stop(&ns->ns_oc_timer);
+ os_callout_stop(&o->os_oc_timer);
}
break;
case OS_EVENT_T_TIMER:
@@ -484,19 +352,19 @@ nmgr_oic_task(void *arg)
int
oicmgr_init(void)
{
- struct nmgr_state *ns = &nmgr_state;
+ struct omgr_state *o = &omgr_state;
int rc;
- os_eventq_init(&ns->ns_evq);
+ os_eventq_init(&o->os_evq);
- rc = os_task_init(&ns->ns_task, "newtmgr_oic", nmgr_oic_task, NULL,
+ rc = os_task_init(&o->os_task, "newtmgr_oic", omgr_oic_task, NULL,
MYNEWT_VAL(OICMGR_TASK_PRIO), OS_WAIT_FOREVER,
oicmgr_stack, OICMGR_STACK_SZ);
if (rc != 0) {
goto err;
}
- rc = nmgr_os_groups_register(&ns->ns_evq);
+ rc = nmgr_os_groups_register(&o->os_evq);
if (rc != 0) {
goto err;
}
[3/3] incubator-mynewt-core git commit: newtmgr, mgmt;
move newtmgr specific components out of mgmt_jbuf.
Posted by ma...@apache.org.
newtmgr, mgmt; move newtmgr specific components out of mgmt_jbuf.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/04a7e46f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/04a7e46f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/04a7e46f
Branch: refs/heads/develop
Commit: 04a7e46f6ed5b979eb8edc79743a7e20544a059e
Parents: 6b802d6
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Wed Oct 5 13:03:13 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Wed Oct 5 14:53:03 2016 -0700
----------------------------------------------------------------------
mgmt/mgmt/include/mgmt/mgmt.h | 7 +---
mgmt/newtmgr/src/newtmgr.c | 85 +++++++++++++++++++++-----------------
2 files changed, 48 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/04a7e46f/mgmt/mgmt/include/mgmt/mgmt.h
----------------------------------------------------------------------
diff --git a/mgmt/mgmt/include/mgmt/mgmt.h b/mgmt/mgmt/include/mgmt/mgmt.h
index 01e1da5..d176127 100644
--- a/mgmt/mgmt/include/mgmt/mgmt.h
+++ b/mgmt/mgmt/include/mgmt/mgmt.h
@@ -63,13 +63,10 @@ extern "C" {
struct mgmt_jbuf {
/* json_buffer must be first element in the structure */
- struct json_buffer mjb_buf;
- struct json_encoder mjb_enc;
+ struct json_buffer mjb_buf; /* for input */
+ struct json_encoder mjb_enc; /* for output */
struct os_mbuf *mjb_in_m;
struct os_mbuf *mjb_out_m;
- void *mjb_arg;
- uint16_t mjb_off;
- uint16_t mjb_end;
};
typedef int (*mgmt_handler_func_t)(struct mgmt_jbuf *);
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/04a7e46f/mgmt/newtmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/mgmt/newtmgr/src/newtmgr.c b/mgmt/newtmgr/src/newtmgr.c
index 83ada60..feae036 100644
--- a/mgmt/newtmgr/src/newtmgr.c
+++ b/mgmt/newtmgr/src/newtmgr.c
@@ -35,9 +35,15 @@ os_stack_t newtmgr_stack[OS_STACK_ALIGN(MYNEWT_VAL(NEWTMGR_STACK_SIZE))];
static struct os_eventq g_nmgr_evq;
static struct os_task g_nmgr_task;
-/* JSON buffer for NMGR task
+/*
+ * JSON buffer for newtmgr
*/
-static struct mgmt_jbuf nmgr_task_jbuf;
+static struct nmgr_jbuf {
+ struct mgmt_jbuf n_b;
+ struct nmgr_hdr *n_hdr;
+ uint16_t n_off;
+ uint16_t n_end;
+} nmgr_task_jbuf;
static int
nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, void *data,
@@ -59,21 +65,21 @@ err:
static char
nmgr_jbuf_read_next(struct json_buffer *jb)
{
- struct mgmt_jbuf *njb;
+ struct nmgr_jbuf *njb;
char c;
int rc;
- njb = (struct mgmt_jbuf *) jb;
+ njb = (struct nmgr_jbuf *) jb;
- if (njb->mjb_off + 1 > njb->mjb_end) {
+ if (njb->n_off + 1 > njb->n_end) {
return '\0';
}
- rc = os_mbuf_copydata(njb->mjb_in_m, njb->mjb_off, 1, &c);
+ rc = os_mbuf_copydata(njb->n_b.mjb_in_m, njb->n_off, 1, &c);
if (rc == -1) {
c = '\0';
}
- ++njb->mjb_off;
+ ++njb->n_off;
return (c);
}
@@ -81,18 +87,18 @@ nmgr_jbuf_read_next(struct json_buffer *jb)
static char
nmgr_jbuf_read_prev(struct json_buffer *jb)
{
- struct mgmt_jbuf *njb;
+ struct nmgr_jbuf *njb;
char c;
int rc;
- njb = (struct mgmt_jbuf *) jb;
+ njb = (struct nmgr_jbuf *) jb;
- if (njb->mjb_off == 0) {
+ if (njb->n_off == 0) {
return '\0';
}
- --njb->mjb_off;
- rc = os_mbuf_copydata(njb->mjb_in_m, njb->mjb_off, 1, &c);
+ --njb->n_off;
+ rc = os_mbuf_copydata(njb->n_b.mjb_in_m, njb->n_off, 1, &c);
if (rc == -1) {
c = '\0';
}
@@ -103,17 +109,17 @@ nmgr_jbuf_read_prev(struct json_buffer *jb)
static int
nmgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
{
- struct mgmt_jbuf *njb;
+ struct nmgr_jbuf *njb;
int read;
int left;
int rc;
- njb = (struct mgmt_jbuf *) jb;
+ njb = (struct nmgr_jbuf *) jb;
- left = njb->mjb_end - njb->mjb_off;
+ left = njb->n_end - njb->n_off;
read = size > left ? left : size;
- rc = os_mbuf_copydata(njb->mjb_in_m, njb->mjb_off, read, buf);
+ rc = os_mbuf_copydata(njb->n_b.mjb_in_m, njb->n_off, read, buf);
if (rc != 0) {
goto err;
}
@@ -126,14 +132,12 @@ err:
int
nmgr_jbuf_write(void *arg, char *data, int len)
{
- struct mgmt_jbuf *njb;
- struct nmgr_hdr *hdr;
+ struct nmgr_jbuf *njb;
int rc;
- njb = (struct mgmt_jbuf *) arg;
- hdr = (struct nmgr_hdr *)njb->mjb_arg;
+ njb = (struct nmgr_jbuf *) arg;
- rc = nmgr_rsp_extend(hdr, njb->mjb_out_m, data, len);
+ rc = nmgr_rsp_extend(njb->n_hdr, njb->n_b.mjb_out_m, data, len);
if (rc != 0) {
assert(0);
goto err;
@@ -145,35 +149,38 @@ err:
}
static int
-nmgr_jbuf_init(struct mgmt_jbuf *njb)
+nmgr_jbuf_init(struct nmgr_jbuf *njb)
{
+ struct mgmt_jbuf *mj;
+
memset(njb, 0, sizeof(*njb));
- njb->mjb_buf.jb_read_next = nmgr_jbuf_read_next;
- njb->mjb_buf.jb_read_prev = nmgr_jbuf_read_prev;
- njb->mjb_buf.jb_readn = nmgr_jbuf_readn;
- njb->mjb_enc.je_write = nmgr_jbuf_write;
- njb->mjb_enc.je_arg = njb;
+ mj = &njb->n_b;
+ mj->mjb_buf.jb_read_next = nmgr_jbuf_read_next;
+ mj->mjb_buf.jb_read_prev = nmgr_jbuf_read_prev;
+ mj->mjb_buf.jb_readn = nmgr_jbuf_readn;
+ mj->mjb_enc.je_write = nmgr_jbuf_write;
+ mj->mjb_enc.je_arg = njb;
return (0);
}
static void
-nmgr_jbuf_setibuf(struct mgmt_jbuf *njb, struct os_mbuf *m,
+nmgr_jbuf_setibuf(struct nmgr_jbuf *njb, struct os_mbuf *m,
uint16_t off, uint16_t len)
{
- njb->mjb_off = off;
- njb->mjb_end = off + len;
- njb->mjb_in_m = m;
- njb->mjb_enc.je_wr_commas = 0;
+ njb->n_b.mjb_in_m = m;
+ njb->n_off = off;
+ njb->n_end = off + len;
}
static void
-nmgr_jbuf_setobuf(struct mgmt_jbuf *njb, struct nmgr_hdr *hdr,
+nmgr_jbuf_setobuf(struct nmgr_jbuf *njb, struct nmgr_hdr *hdr,
struct os_mbuf *m)
{
- njb->mjb_out_m = m;
- njb->mjb_arg = hdr;
+ njb->n_b.mjb_out_m = m;
+ njb->n_b.mjb_enc.je_wr_commas = 0;
+ njb->n_hdr = hdr;
}
static struct nmgr_hdr*
@@ -207,10 +214,10 @@ nmgr_send_err_rsp(struct nmgr_transport *nt, struct os_mbuf *m,
if (!hdr) {
return;
}
- mgmt_jbuf_setoerr(&nmgr_task_jbuf, rc);
+ mgmt_jbuf_setoerr(&nmgr_task_jbuf.n_b, rc);
hdr->nh_len = htons(hdr->nh_len);
hdr->nh_flags = NMGR_F_JSON_RSP_COMPLETE;
- nt->nt_output(nt, nmgr_task_jbuf.mjb_out_m);
+ nt->nt_output(nt, nmgr_task_jbuf.n_b.mjb_out_m);
}
static int
@@ -358,13 +365,13 @@ nmgr_handle_req(struct nmgr_transport *nt, struct os_mbuf *req)
if (hdr.nh_op == NMGR_OP_READ) {
if (handler->mh_read) {
- rc = handler->mh_read(&nmgr_task_jbuf);
+ rc = handler->mh_read(&nmgr_task_jbuf.n_b);
} else {
rc = MGMT_ERR_ENOENT;
}
} else if (hdr.nh_op == NMGR_OP_WRITE) {
if (handler->mh_write) {
- rc = handler->mh_write(&nmgr_task_jbuf);
+ rc = handler->mh_write(&nmgr_task_jbuf.n_b);
} else {
rc = MGMT_ERR_ENOENT;
}