http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/mgmt/newtmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/mgmt/newtmgr/src/newtmgr.c b/mgmt/newtmgr/src/newtmgr.c
index 6621b9b..ffecd4f 100644
--- a/mgmt/newtmgr/src/newtmgr.c
+++ b/mgmt/newtmgr/src/newtmgr.c
@@ -30,6 +30,10 @@
 #include "newtmgr/newtmgr.h"
 #include "nmgr_os/nmgr_os.h"
 
+#include <tinycbor/cbor.h>
+#include <tinycbor/cbor_mbuf_writer.h>
+#include <tinycbor/cbor_mbuf_reader.h>
+
 os_stack_t newtmgr_stack[OS_STACK_ALIGN(MYNEWT_VAL(NEWTMGR_STACK_SIZE))];
 
 static struct os_eventq nmgr_evq;
@@ -37,17 +41,23 @@ struct os_eventq *g_mgmt_evq = &nmgr_evq;
 static struct os_task g_nmgr_task;
 
 /*
- * JSON buffer for newtmgr
+ * cbor buffer for newtmgr
  */
-static struct nmgr_jbuf {
-    struct mgmt_jbuf n_b;
-    struct os_mbuf *n_in_m;
+static struct nmgr_cbuf {
+    struct mgmt_cbuf n_b;
+    struct CborMbufWriter writer;
+    struct CborMbufReader reader;
     struct os_mbuf *n_out_m;
+
+#if 0
+    struct os_mbuf *n_in_m;
     struct nmgr_hdr *n_hdr;
     uint16_t n_off;
     uint16_t n_end;
-} nmgr_task_jbuf;
+#endif
+} nmgr_task_cbuf;
 
+#if 0
 static int
 nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, void *data,
         uint16_t len)
@@ -64,128 +74,15 @@ nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, 
void *data,
 err:
     return (rc);
 }
-
-static char
-nmgr_jbuf_read_next(struct json_buffer *jb)
-{
-    struct nmgr_jbuf *njb;
-    char c;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    if (njb->n_off + 1 > njb->n_end) {
-        return '\0';
-    }
-
-    rc = os_mbuf_copydata(njb->n_in_m, njb->n_off, 1, &c);
-    if (rc == -1) {
-        c = '\0';
-    }
-    ++njb->n_off;
-
-    return (c);
-}
-
-static char
-nmgr_jbuf_read_prev(struct json_buffer *jb)
-{
-    struct nmgr_jbuf *njb;
-    char c;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    if (njb->n_off == 0) {
-        return '\0';
-    }
-
-    --njb->n_off;
-    rc = os_mbuf_copydata(njb->n_in_m, njb->n_off, 1, &c);
-    if (rc == -1) {
-        c = '\0';
-    }
-
-    return (c);
-}
+#endif
 
 static int
-nmgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
+nmgr_cbuf_init(struct nmgr_cbuf *njb)
 {
-    struct nmgr_jbuf *njb;
-    int read;
-    int left;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    left = njb->n_end - njb->n_off;
-    read = size > left ? left : size;
-
-    rc = os_mbuf_copydata(njb->n_in_m, njb->n_off, read, buf);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (read);
-err:
-    return (rc);
-}
-
-int
-nmgr_jbuf_write(void *arg, char *data, int len)
-{
-    struct nmgr_jbuf *njb;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) arg;
-
-    rc = nmgr_rsp_extend(njb->n_hdr, njb->n_out_m, data, len);
-    if (rc != 0) {
-        assert(0);
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-static int
-nmgr_jbuf_init(struct nmgr_jbuf *njb)
-{
-    struct mgmt_jbuf *mj;
-
     memset(njb, 0, sizeof(*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 nmgr_jbuf *njb, struct os_mbuf *m,
-        uint16_t off, uint16_t len)
-{
-    njb->n_in_m = m;
-    njb->n_off = off;
-    njb->n_end = off + len;
-}
-
-static void
-nmgr_jbuf_setobuf(struct nmgr_jbuf *njb, struct nmgr_hdr *hdr,
-        struct os_mbuf *m)
-{
-    njb->n_b.mjb_enc.je_wr_commas = 0;
-    njb->n_out_m = m;
-    njb->n_hdr = hdr;
-}
-
 static struct nmgr_hdr*
 nmgr_init_rsp(struct os_mbuf *m, struct nmgr_hdr *src)
 {
@@ -204,8 +101,10 @@ nmgr_init_rsp(struct os_mbuf *m, struct nmgr_hdr *src)
     hdr->nh_seq = src->nh_seq;
     hdr->nh_id = src->nh_id;
 
-    nmgr_jbuf_setobuf(&nmgr_task_jbuf, hdr, m);
-
+    /* setup state for cbor encoding */
+    cbor_mbuf_writer_init(&nmgr_task_cbuf.writer, m);
+    cbor_encoder_init(&nmgr_task_cbuf.n_b.encoder, &nmgr_task_cbuf.writer.enc, 
0);
+    nmgr_task_cbuf.n_out_m = m;
     return hdr;
 }
 
@@ -217,10 +116,12 @@ nmgr_send_err_rsp(struct nmgr_transport *nt, struct 
os_mbuf *m,
     if (!hdr) {
         return;
     }
+#if 0
     mgmt_jbuf_setoerr(&nmgr_task_jbuf.n_b, rc);
+#endif
     hdr->nh_len = htons(hdr->nh_len);
-    hdr->nh_flags = NMGR_F_JSON_RSP_COMPLETE;
-    nt->nt_output(nt, nmgr_task_jbuf.n_out_m);
+    hdr->nh_flags = NMGR_F_CBOR_RSP_COMPLETE;
+    nt->nt_output(nt, nmgr_task_cbuf.n_out_m);
 }
 
 static int
@@ -287,7 +188,7 @@ nmgr_rsp_fragment(struct nmgr_transport *nt, struct 
nmgr_hdr *rsp_hdr,
 
     do {
         if (len <= mtu) {
-            rsp_hdr->nh_flags |= NMGR_F_JSON_RSP_COMPLETE;
+            rsp_hdr->nh_flags |= NMGR_F_CBOR_RSP_COMPLETE;
         } else {
             len = mtu;
         }
@@ -299,8 +200,8 @@ nmgr_rsp_fragment(struct nmgr_transport *nt, struct 
nmgr_hdr *rsp_hdr,
 
         len = rsp_hdr->nh_len - offset + sizeof(struct nmgr_hdr);
 
-    } while (!((rsp_hdr->nh_flags & NMGR_F_JSON_RSP_COMPLETE) ==
-                NMGR_F_JSON_RSP_COMPLETE));
+    } while (!((rsp_hdr->nh_flags & NMGR_F_CBOR_RSP_COMPLETE) ==
+                NMGR_F_CBOR_RSP_COMPLETE));
 
     return MGMT_ERR_EOK;
 err:
@@ -361,20 +262,18 @@ nmgr_handle_req(struct nmgr_transport *nt, struct os_mbuf 
*req)
             goto err_norsp;
         }
 
-        /*
-         * Setup state for JSON encoding.
-         */
-        nmgr_jbuf_setibuf(&nmgr_task_jbuf, req, off + sizeof(hdr), hdr.nh_len);
+        cbor_mbuf_reader_init(&nmgr_task_cbuf.reader, req, sizeof(hdr));
+        cbor_parser_init(&nmgr_task_cbuf.reader.r, 0, 
&nmgr_task_cbuf.n_b.parser, &nmgr_task_cbuf.n_b.it);
 
         if (hdr.nh_op == NMGR_OP_READ) {
             if (handler->mh_read) {
-                rc = handler->mh_read(&nmgr_task_jbuf.n_b);
+                rc = handler->mh_read(&nmgr_task_cbuf.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.n_b);
+                rc = handler->mh_write(&nmgr_task_cbuf.n_b);
             } else {
                 rc = MGMT_ERR_ENOENT;
             }
@@ -386,6 +285,7 @@ nmgr_handle_req(struct nmgr_transport *nt, struct os_mbuf 
*req)
             goto err;
         }
 
+        rsp_hdr->nh_len += 
cbor_encode_bytes_written(&nmgr_task_cbuf.n_b.encoder);
         off += sizeof(hdr) + OS_ALIGN(hdr.nh_len, 4);
         rc = nmgr_rsp_fragment(nt, rsp_hdr, rsp, req);
         if (rc) {
@@ -431,7 +331,7 @@ nmgr_task(void *arg)
     struct os_callout_func *ocf;
     os_event_cb_func cb_func;
 
-    nmgr_jbuf_init(&nmgr_task_jbuf);
+    nmgr_cbuf_init(&nmgr_task_cbuf);
 
     while (1) {
         ev = os_eventq_get(&nmgr_evq);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/sys/config/src/config_json_line.c
----------------------------------------------------------------------
diff --git a/sys/config/src/config_json_line.c 
b/sys/config/src/config_json_line.c
index 219ca85..94d1290 100644
--- a/sys/config/src/config_json_line.c
+++ b/sys/config/src/config_json_line.c
@@ -23,22 +23,22 @@
 
 #include "config/config.h"
 #include "config_priv.h"
-#include "json/json.h"
+#include "cborattr/cborattr.h"
+#include "mgmt/mgmt.h"
 
 int
-conf_json_line(struct json_buffer *jb, char *name, int nlen, char *value,
-  int vlen)
+conf_cbor_line(struct mgmt_cbuf *cb, char *name, int nlen, char *value, int 
vlen)
 {
-    const struct json_attr_t val_attr[3] = {
+    const struct cbor_attr_t val_attr[3] = {
         [0] = {
             .attribute = "name",
-            .type = t_string,
+            .type = CborAttrTextStringType,
             .addr.string = name,
             .len = nlen
         },
         [1] = {
             .attribute = "val",
-            .type = t_string,
+            .type = CborAttrTextStringType,
             .addr.string = value,
             .len = vlen
         },
@@ -48,7 +48,7 @@ conf_json_line(struct json_buffer *jb, char *name, int nlen, 
char *value,
     };
     int rc;
 
-    rc = json_read_object(jb, val_attr);
+    rc = cbor_read_object(&cb->it, val_attr);
     if (rc) {
         return rc;
     }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/sys/config/src/config_nmgr.c
----------------------------------------------------------------------
diff --git a/sys/config/src/config_nmgr.c b/sys/config/src/config_nmgr.c
index 2cccbb6..562b951 100644
--- a/sys/config/src/config_nmgr.c
+++ b/sys/config/src/config_nmgr.c
@@ -24,13 +24,12 @@
 #include <string.h>
 
 #include "mgmt/mgmt.h"
-#include "json/json.h"
-
+#include "cborattr/cborattr.h"
 #include "config/config.h"
 #include "config_priv.h"
 
-static int conf_nmgr_read(struct mgmt_jbuf *);
-static int conf_nmgr_write(struct mgmt_jbuf *);
+static int conf_nmgr_read(struct mgmt_cbuf *);
+static int conf_nmgr_write(struct mgmt_cbuf *);
 
 static const struct mgmt_handler conf_nmgr_handlers[] = {
     [CONF_NMGR_OP] = { conf_nmgr_read, conf_nmgr_write}
@@ -43,17 +42,17 @@ static struct mgmt_group conf_nmgr_group = {
 };
 
 static int
-conf_nmgr_read(struct mgmt_jbuf *njb)
+conf_nmgr_read(struct mgmt_cbuf *cb)
 {
     int rc;
     char name_str[CONF_MAX_NAME_LEN];
     char val_str[CONF_MAX_VAL_LEN];
     char *val;
 
-    const struct json_attr_t attr[2] = {
+    const struct cbor_attr_t attr[2] = {
         [0] = {
             .attribute = "name",
-            .type = t_string,
+            .type = CborAttrTextStringType,
             .addr.string = name_str,
             .len = sizeof(name_str)
         },
@@ -61,9 +60,8 @@ conf_nmgr_read(struct mgmt_jbuf *njb)
             .attribute = NULL
         }
     };
-    struct json_value jv;
 
-    rc = json_read_object(&njb->mjb_buf, attr);
+    rc = cbor_read_object(&cb->it, attr);
     if (rc) {
         return MGMT_ERR_EINVAL;
     }
@@ -73,22 +71,26 @@ conf_nmgr_read(struct mgmt_jbuf *njb)
         return MGMT_ERR_EINVAL;
     }
 
-    json_encode_object_start(&njb->mjb_enc);
-    JSON_VALUE_STRING(&jv, val);
-    json_encode_object_entry(&njb->mjb_enc, "val", &jv);
-    json_encode_object_finish(&njb->mjb_enc);
+    {
+        CborError g_err = CborNoError;
+        CborEncoder rsp;
+        g_err |= cbor_encoder_create_map(&cb->encoder, &rsp, 
CborIndefiniteLength);
+        g_err |= cbor_encode_text_stringz(&rsp, "val");
+        g_err |= cbor_encode_text_stringz(&rsp, val);
+        g_err |= cbor_encoder_close_container(&cb->encoder, &rsp);
+    }
 
     return 0;
 }
 
 static int
-conf_nmgr_write(struct mgmt_jbuf *njb)
+conf_nmgr_write(struct mgmt_cbuf *cb)
 {
     int rc;
     char name_str[CONF_MAX_NAME_LEN];
     char val_str[CONF_MAX_VAL_LEN];
 
-    rc = conf_json_line(&njb->mjb_buf, name_str, sizeof(name_str), val_str,
+    rc = conf_cbor_line(cb, name_str, sizeof(name_str), val_str,
       sizeof(val_str));
     if (rc) {
         return MGMT_ERR_EINVAL;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/sys/config/src/config_priv.h
----------------------------------------------------------------------
diff --git a/sys/config/src/config_priv.h b/sys/config/src/config_priv.h
index 386e716..8a11ebb 100644
--- a/sys/config/src/config_priv.h
+++ b/sys/config/src/config_priv.h
@@ -27,9 +27,9 @@ extern "C" {
 int conf_cli_register(void);
 int conf_nmgr_register(void);
 
-struct json_buffer;
-int conf_json_line(struct json_buffer *jb, char *name, int nlen, char *value,
-  int vlen);
+struct mgmt_cbuf;
+int
+conf_cbor_line(struct mgmt_cbuf *cb, char *name, int nlen, char *value, int 
vlen);
 
 int conf_line_parse(char *buf, char **namep, char **valp);
 int conf_line_make(char *dst, int dlen, const char *name, const char *val);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/sys/log/src/log_nmgr.c
----------------------------------------------------------------------
diff --git a/sys/log/src/log_nmgr.c b/sys/log/src/log_nmgr.c
index 1bcef46..ede0ff4 100644
--- a/sys/log/src/log_nmgr.c
+++ b/sys/log/src/log_nmgr.c
@@ -26,18 +26,20 @@
 #if MYNEWT_VAL(LOG_NEWTMGR)
 
 #include "mgmt/mgmt.h"
-#include "json/json.h"
+#include "cborattr/cborattr.h"
+#include "tinycbor/cbor_cnt_writer.h"
 #include "log/log.h"
 
 /* Source code is only included if the newtmgr library is enabled.  Otherwise
  * this file is compiled out for code size.
  */
 
-static int log_nmgr_read(struct mgmt_jbuf *njb);
-static int log_nmgr_clear(struct mgmt_jbuf *njb);
-static int log_nmgr_module_list(struct mgmt_jbuf *njb);
-static int log_nmgr_level_list(struct mgmt_jbuf *njb);
-static int log_nmgr_logs_list(struct mgmt_jbuf *njb);
+
+static int log_nmgr_read(struct mgmt_cbuf *njb);
+static int log_nmgr_clear(struct mgmt_cbuf *njb);
+static int log_nmgr_module_list(struct mgmt_cbuf *njb);
+static int log_nmgr_level_list(struct mgmt_cbuf *njb);
+static int log_nmgr_logs_list(struct mgmt_cbuf *njb);
 static struct mgmt_group log_nmgr_group;
 
 
@@ -53,7 +55,7 @@ static struct mgmt_handler log_nmgr_group_handlers[] = {
 };
 
 struct encode_off {
-    struct json_encoder *eo_encoder;
+    CborEncoder *eo_encoder;
     int64_t eo_ts;
     uint8_t eo_index;
     uint32_t rsp_len;
@@ -71,9 +73,11 @@ log_nmgr_encode_entry(struct log *log, void *arg, void 
*dptr, uint16_t len)
     struct log_entry_hdr ueh;
     char data[128];
     int dlen;
-    struct json_value jv;
     int rc;
     int rsp_len;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = encode_off->eo_encoder;
+    CborEncoder rsp;
 
     rc = log_read(log, dptr, &ueh, 0, sizeof(ueh));
     if (rc != sizeof(ueh)) {
@@ -98,55 +102,49 @@ log_nmgr_encode_entry(struct log *log, void *arg, void 
*dptr, uint16_t len)
     }
     data[rc] = 0;
 
-    rsp_len = encode_off->rsp_len;
-    /* Calculating entry len */
-    rsp_len += strlen(data);
-
-    /* Pre calculating MAX length of the json string */
-    rsp_len += (sizeof(STR(INT64_MAX))  + sizeof("{,ts:")    +
-                sizeof(STR(UINT8_MAX))  + sizeof(",level:")  +
-                sizeof(STR(UINT32_MAX)) + sizeof(",index:")  +
-                sizeof(STR(UINT16_MAX)) + sizeof(",module:}"));
-
-    if (rsp_len > MGMT_MAX_MTU) {
-        rc = OS_ENOMEM;
-        goto err;
-    }
-
-    json_encode_object_start(encode_off->eo_encoder);
-
-    JSON_VALUE_STRINGN(&jv, data, rc);
-    rc = json_encode_object_entry(encode_off->eo_encoder, "msg", &jv);
-    if (rc) {
-        goto err;
-    }
-
-    JSON_VALUE_INT(&jv, ueh.ue_ts);
-    rc = json_encode_object_entry(encode_off->eo_encoder, "ts", &jv);
-    if (rc) {
-        goto err;
-    }
-
-    JSON_VALUE_UINT(&jv, ueh.ue_level);
-    rc = json_encode_object_entry(encode_off->eo_encoder, "level", &jv);
-    if (rc) {
-        goto err;
-    }
-
-    JSON_VALUE_UINT(&jv, ueh.ue_index);
-    rc = json_encode_object_entry(encode_off->eo_encoder, "index", &jv);
-    if (rc) {
-        goto err;
-    }
-
-    JSON_VALUE_UINT(&jv, ueh.ue_module);
-    rc = json_encode_object_entry(encode_off->eo_encoder, "module", &jv);
-    if (rc) {
-        goto err;
+    /*calculate whether this would fit */
+    {
+        /* create a counting encoder for cbor */
+        struct CborCntWriter cnt_writer;
+        CborEncoder cnt_encoder;
+        cbor_cnt_writer_init(&cnt_writer);
+        cbor_encoder_init(&cnt_encoder, &cnt_writer.enc, 0);
+
+        /* NOTE This code should exactly match what is below */
+        g_err |= cbor_encoder_create_map(&cnt_encoder, &rsp, 
CborIndefiniteLength);
+        g_err |= cbor_encode_text_stringz(&rsp, "msg");
+        g_err |= cbor_encode_text_stringz(&rsp, data);
+        g_err |= cbor_encode_text_stringz(&rsp, "ts");
+        g_err |= cbor_encode_int(&rsp, ueh.ue_ts);
+        g_err |= cbor_encode_text_stringz(&rsp, "level");
+        g_err |= cbor_encode_uint(&rsp, ueh.ue_level);
+        g_err |= cbor_encode_text_stringz(&rsp, "index");
+        g_err |= cbor_encode_uint(&rsp,  ueh.ue_index);
+        g_err |= cbor_encode_text_stringz(&rsp, "module");
+        g_err |= cbor_encode_uint(&rsp,  ueh.ue_module);
+        g_err |= cbor_encoder_close_container(&cnt_encoder, &rsp);
+        rsp_len = encode_off->rsp_len;
+        rsp_len += cbor_encode_bytes_written(&cnt_encoder);
+
+        if (rsp_len > MGMT_MAX_MTU) {
+            rc = OS_ENOMEM;
+            goto err;
+        }
+        encode_off->rsp_len = rsp_len;
     }
 
-    json_encode_object_finish(encode_off->eo_encoder);
-    encode_off->rsp_len += rsp_len;
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "msg");
+    g_err |= cbor_encode_text_stringz(&rsp, data);
+    g_err |= cbor_encode_text_stringz(&rsp, "ts");
+    g_err |= cbor_encode_int(&rsp, ueh.ue_ts);
+    g_err |= cbor_encode_text_stringz(&rsp, "level");
+    g_err |= cbor_encode_uint(&rsp, ueh.ue_level);
+    g_err |= cbor_encode_text_stringz(&rsp, "index");
+    g_err |= cbor_encode_uint(&rsp,  ueh.ue_index);
+    g_err |= cbor_encode_text_stringz(&rsp, "module");
+    g_err |= cbor_encode_uint(&rsp,  ueh.ue_module);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return (0);
 err:
@@ -159,36 +157,46 @@ err:
  * @return 0 on success; non-zero on failure
  */
 static int
-log_encode_entries(struct log *log, struct json_encoder *encoder,
+log_encode_entries(struct log *log, CborEncoder *cb,
                    int64_t ts, uint32_t index)
 {
     int rc;
     struct encode_off encode_off;
-    int rsp_len;
+    int rsp_len = 0;
+    CborEncoder entries;
+    CborError g_err = CborNoError;
 
     memset(&encode_off, 0, sizeof(encode_off));
-    /* Already encoded json string */
-    rsp_len = strlen(encoder->je_encode_buf);
-    /* Pre calculating json length */
-    rsp_len += (sizeof("entries") + 3);
-    rsp_len += encode_off.rsp_len;
-
-    if (rsp_len > MGMT_MAX_MTU) {
-        rc = OS_ENOMEM;
-        goto err;
+
+    {
+        /* this code counts how long the message would be if we encoded
+         * this outer structure using cbor. */
+        struct CborCntWriter cnt_writer;
+        CborEncoder cnt_encoder;
+        cbor_cnt_writer_init(&cnt_writer);
+        cbor_encoder_init(&cnt_encoder, &cnt_writer.enc, 0);
+        g_err |= cbor_encode_text_stringz(&cnt_encoder, "entries");
+        g_err |= cbor_encoder_create_array(&cnt_encoder, &entries, 
CborIndefiniteLength);
+        g_err |= cbor_encoder_close_container(&cnt_encoder, &entries);
+        rsp_len = cbor_encode_bytes_written(cb)
+                   + cbor_encode_bytes_written(&cnt_encoder);
+        if (rsp_len > MGMT_MAX_MTU) {
+            rc = OS_ENOMEM;
+            goto err;
+        }
     }
 
-    json_encode_array_name(encoder, "entries");
-    json_encode_array_start(encoder);
+    g_err |= cbor_encode_text_stringz(cb, "entries");
+    g_err |= cbor_encoder_create_array(cb, &entries, CborIndefiniteLength);
 
-    encode_off.eo_encoder  = encoder;
+    encode_off.eo_encoder  = &entries;
     encode_off.eo_index    = index;
     encode_off.eo_ts       = ts;
-
     encode_off.rsp_len = rsp_len;
 
     rc = log_walk(log, log_nmgr_encode_entry, &encode_off);
-    json_encode_array_finish(encoder);
+
+    g_err |= cbor_encoder_close_container(cb, &entries);
 
 err:
     return rc;
@@ -201,56 +209,58 @@ err:
  * @return 0 on success; non-zero on failure
  */
 static int
-log_encode(struct log *log, struct json_encoder *encoder,
-           struct json_value *jv, int64_t ts, uint32_t index)
+log_encode(struct log *log, CborEncoder *cb,
+            int64_t ts, uint32_t index)
 {
     int rc;
+    CborEncoder logs;
+    CborError g_err = CborNoError;
 
-    json_encode_object_start(encoder);
-    JSON_VALUE_STRING(jv, log->l_name);
-    json_encode_object_entry(encoder, "name", jv);
-
-    JSON_VALUE_UINT(jv, log->l_log->log_type);
-    json_encode_object_entry(encoder, "type", jv);
+    g_err |= cbor_encoder_create_map(cb, &logs, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&logs, "name");
+    g_err |= cbor_encode_text_stringz(&logs, log->l_name);
 
-    rc = log_encode_entries(log, encoder, ts, index);
-    json_encode_object_finish(encoder);
+    g_err |= cbor_encode_text_stringz(&logs, "type");
+    g_err |= cbor_encode_uint(&logs, log->l_log->log_type);
 
+    rc = log_encode_entries(log, &logs, ts, index);
+    g_err |= cbor_encoder_close_container(cb, &logs);
     return rc;
 }
 
 /**
  * Newtmgr Log read handler
- * @param nmgr json buffer
+ * @param cbor buffer
  * @return 0 on success; non-zero on failure
  */
 static int
-log_nmgr_read(struct mgmt_jbuf *njb)
+log_nmgr_read(struct mgmt_cbuf *cb)
 {
     struct log *log;
     int rc;
-    struct json_value jv;
-    struct json_encoder *encoder;
     char name[LOG_NAME_MAX_LEN] = {0};
     int name_len;
     int64_t ts;
     uint64_t index;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, logs;
 
-    const struct json_attr_t attr[4] = {
+    const struct cbor_attr_t attr[4] = {
         [0] = {
             .attribute = "log_name",
-            .type = t_string,
+            .type = CborAttrTextStringType,
             .addr.string = name,
             .len = sizeof(name)
         },
         [1] = {
             .attribute = "ts",
-            .type = t_integer,
+            .type = CborAttrIntegerType,
             .addr.integer = &ts
         },
         [2] = {
             .attribute = "index",
-            .type = t_uinteger,
+            .type = CborAttrUnsignedIntegerType,
             .addr.uinteger = &index
         },
         [3] = {
@@ -258,16 +268,16 @@ log_nmgr_read(struct mgmt_jbuf *njb)
         }
     };
 
-    rc = json_read_object(&njb->mjb_buf, attr);
+    rc = cbor_read_object(&cb->it, attr);
     if (rc) {
         return rc;
     }
 
-    encoder = (struct json_encoder *) &njb->mjb_enc;
 
-    json_encode_object_start(encoder);
-    json_encode_array_name(encoder, "logs");
-    json_encode_array_start(encoder);
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "logs");
+
+    g_err |= cbor_encoder_create_array(&rsp, &logs, CborIndefiniteLength);
 
     name_len = strlen(name);
     log = NULL;
@@ -286,7 +296,7 @@ log_nmgr_read(struct mgmt_jbuf *njb)
             continue;
         }
 
-        rc = log_encode(log, encoder, &jv, ts, index);
+        rc = log_encode(log, &logs, ts, index);
         if (rc) {
             goto err;
         }
@@ -304,10 +314,11 @@ log_nmgr_read(struct mgmt_jbuf *njb)
     }
 
 err:
-    json_encode_array_finish(encoder);
-    JSON_VALUE_INT(&jv, rc);
-    json_encode_object_entry(encoder, "rc", &jv);
-    json_encode_object_finish(encoder);
+    g_err |= cbor_encoder_close_container(&rsp, &logs);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, rc);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
+
     rc = 0;
     return (rc);
 }
@@ -318,20 +329,20 @@ err:
  * @return 0 on success; non-zero on failure
  */
 static int
-log_nmgr_module_list(struct mgmt_jbuf *njb)
+log_nmgr_module_list(struct mgmt_cbuf *cb)
 {
-    struct json_value jv;
-    struct json_encoder *encoder;
     int module;
     char *str;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, modules;
 
-    encoder = (struct json_encoder *) &njb->mjb_enc;
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, MGMT_ERR_EOK);
 
-    json_encode_object_start(encoder);
-    JSON_VALUE_INT(&jv, MGMT_ERR_EOK);
-    json_encode_object_entry(encoder, "rc", &jv);
-    json_encode_object_key(encoder, "module_map");
-    json_encode_object_start(encoder);
+    g_err |= cbor_encode_text_stringz(&rsp, "module_map");
+    g_err |= cbor_encoder_create_map(&rsp, &modules, CborIndefiniteLength);
 
     module = LOG_MODULE_DEFAULT;
     while (module < LOG_MODULE_MAX) {
@@ -341,15 +352,14 @@ log_nmgr_module_list(struct mgmt_jbuf *njb)
             continue;
         }
 
-        JSON_VALUE_UINT(&jv, module);
-        json_encode_object_entry(encoder, str, &jv);
-
+        g_err |= cbor_encode_text_stringz(&modules, str);
+        g_err |= cbor_encode_uint(&modules, module);
         module++;
     }
 
+    g_err |= cbor_encoder_close_container(&rsp, &modules);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
-    json_encode_object_finish(encoder);
-    json_encode_object_finish(encoder);
 
     return (0);
 }
@@ -360,19 +370,19 @@ log_nmgr_module_list(struct mgmt_jbuf *njb)
  * @return 0 on success; non-zero on failure
  */
 static int
-log_nmgr_logs_list(struct mgmt_jbuf *njb)
+log_nmgr_logs_list(struct mgmt_cbuf *cb)
 {
-    struct json_value jv;
-    struct json_encoder *encoder;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, log_list;
     struct log *log;
 
-    encoder = (struct json_encoder *) &njb->mjb_enc;
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, MGMT_ERR_EOK);
 
-    json_encode_object_start(encoder);
-    JSON_VALUE_INT(&jv, MGMT_ERR_EOK);
-    json_encode_object_entry(encoder, "rc", &jv);
-    json_encode_array_name(encoder, "log_list");
-    json_encode_array_start(encoder);
+    g_err |= cbor_encode_text_stringz(&rsp, "log_list");
+    g_err |= cbor_encoder_create_array(&rsp, &log_list, CborIndefiniteLength);
 
     log = NULL;
     while (1) {
@@ -385,12 +395,11 @@ log_nmgr_logs_list(struct mgmt_jbuf *njb)
             continue;
         }
 
-        JSON_VALUE_STRING(&jv, log->l_name);
-        json_encode_array_value(encoder, &jv);
+        g_err |= cbor_encode_text_stringz(&log_list, log->l_name);
     }
 
-    json_encode_array_finish(encoder);
-    json_encode_object_finish(encoder);
+    g_err |= cbor_encoder_close_container(&rsp, &log_list);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return (0);
 }
@@ -401,20 +410,20 @@ log_nmgr_logs_list(struct mgmt_jbuf *njb)
  * @return 0 on success; non-zero on failure
  */
 static int
-log_nmgr_level_list(struct mgmt_jbuf *njb)
+log_nmgr_level_list(struct mgmt_cbuf *cb)
 {
-    struct json_value jv;
-    struct json_encoder *encoder;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, level_map;
     int level;
     char *str;
 
-    encoder = (struct json_encoder *) &njb->mjb_enc;
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, MGMT_ERR_EOK);
 
-    json_encode_object_start(encoder);
-    JSON_VALUE_INT(&jv, MGMT_ERR_EOK);
-    json_encode_object_entry(encoder, "rc", &jv);
-    json_encode_object_key(encoder, "level_map");
-    json_encode_object_start(encoder);
+    g_err |= cbor_encode_text_stringz(&rsp, "level_map");
+    g_err |= cbor_encoder_create_map(&rsp, &level_map, CborIndefiniteLength);
 
     level = LOG_LEVEL_DEBUG;
     while (level < LOG_LEVEL_MAX) {
@@ -424,14 +433,13 @@ log_nmgr_level_list(struct mgmt_jbuf *njb)
             continue;
         }
 
-        JSON_VALUE_UINT(&jv, level);
-        json_encode_object_entry(encoder, str, &jv);
-
+        g_err |= cbor_encode_text_stringz(&level_map, str);
+        g_err |= cbor_encode_uint(&level_map, level);
         level++;
     }
 
-    json_encode_object_finish(encoder);
-    json_encode_object_finish(encoder);
+    g_err |= cbor_encoder_close_container(&rsp, &level_map);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return (0);
 }
@@ -442,11 +450,13 @@ log_nmgr_level_list(struct mgmt_jbuf *njb)
  * @return 0 on success; non-zero on failure
  */
 static int
-log_nmgr_clear(struct mgmt_jbuf *njb)
+log_nmgr_clear(struct mgmt_cbuf *cb)
 {
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp;
     struct log *log;
     int rc;
-    struct json_encoder *encoder;
 
     log = NULL;
     while (1) {
@@ -464,15 +474,12 @@ log_nmgr_clear(struct mgmt_jbuf *njb)
             goto err;
         }
     }
-
-    encoder = (struct json_encoder *) &njb->mjb_enc;
-
-    json_encode_object_start(encoder);
-    json_encode_object_finish(encoder);
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return 0;
 err:
-    mgmt_jbuf_setoerr(njb, rc);
+    mgmt_cbuf_setoerr(cb, rc);
     return (rc);
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/sys/stats/src/stats_nmgr.c
----------------------------------------------------------------------
diff --git a/sys/stats/src/stats_nmgr.c b/sys/stats/src/stats_nmgr.c
index 0b109f3..f5170ff 100644
--- a/sys/stats/src/stats_nmgr.c
+++ b/sys/stats/src/stats_nmgr.c
@@ -26,14 +26,14 @@
 
 #include "os/os.h"
 #include "mgmt/mgmt.h"
-#include "json/json.h"
+#include "cborattr/cborattr.h"
 #include "stats/stats.h"
 
 /* Source code is only included if the newtmgr library is enabled.  Otherwise
  * this file is compiled out for code size.
  */
-static int stats_nmgr_read(struct mgmt_jbuf *njb);
-static int stats_nmgr_list(struct mgmt_jbuf *njb);
+static int stats_nmgr_read(struct mgmt_cbuf *cb);
+static int stats_nmgr_list(struct mgmt_cbuf *cb);
 
 static struct mgmt_group shell_nmgr_group;
 
@@ -52,109 +52,106 @@ static int
 stats_nmgr_walk_func(struct stats_hdr *hdr, void *arg, char *sname,
         uint16_t stat_off)
 {
-    struct json_encoder *encoder;
-    struct json_value jv;
     void *stat_val;
-    int rc;
+    CborEncoder *penc = (CborEncoder *) arg;
+    CborError g_err = CborNoError;
 
     stat_val = (uint8_t *)hdr + stat_off;
 
-    encoder = (struct json_encoder *) arg;
+    g_err |= cbor_encode_text_stringz(penc, sname);
 
     switch (hdr->s_size) {
         case sizeof(uint16_t):
-            JSON_VALUE_UINT(&jv, *(uint16_t *) stat_val);
+            g_err |= cbor_encode_uint(penc, *(uint16_t *) stat_val);
             break;
         case sizeof(uint32_t):
-            JSON_VALUE_UINT(&jv, *(uint32_t *) stat_val);
+            g_err |= cbor_encode_uint(penc, *(uint32_t *) stat_val);
             break;
         case sizeof(uint64_t):
-            JSON_VALUE_UINT(&jv, *(uint64_t *) stat_val);
+            g_err |= cbor_encode_uint(penc, *(uint64_t *) stat_val);
             break;
     }
 
-    rc = json_encode_object_entry(encoder, sname, &jv);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
+    return (g_err);
 }
 
 static int
 stats_nmgr_encode_name(struct stats_hdr *hdr, void *arg)
 {
-    struct json_encoder *encoder;
-    struct json_value jv;
-
-    encoder = (struct json_encoder *)arg;
-    JSON_VALUE_STRING(&jv, hdr->s_name);
-    json_encode_array_value(encoder, &jv);
-
+    CborEncoder *penc = (CborEncoder *) arg;
+    CborError g_err = CborNoError;
+    g_err |= cbor_encode_text_stringz(penc, hdr->s_name);
     return (0);
 }
 
 static int
-stats_nmgr_read(struct mgmt_jbuf *njb)
+stats_nmgr_read(struct mgmt_cbuf *cb)
 {
     struct stats_hdr *hdr;
 #define STATS_NMGR_NAME_LEN (32)
     char stats_name[STATS_NMGR_NAME_LEN];
-    struct json_attr_t attrs[] = {
-        { "name", t_string, .addr.string = &stats_name[0],
+    struct cbor_attr_t attrs[] = {
+        { "name", CborAttrTextStringType, .addr.string = &stats_name[0],
             .len = sizeof(stats_name) },
         { NULL },
     };
-    struct json_value jv;
-    int rc;
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, stats;
 
-    rc = json_read_object((struct json_buffer *) njb, attrs);
-    if (rc != 0) {
-        rc = MGMT_ERR_EINVAL;
+    g_err = cbor_read_object(&cb->it, attrs);
+    if (g_err != 0) {
+        g_err = MGMT_ERR_EINVAL;
         goto err;
     }
 
     hdr = stats_group_find(stats_name);
     if (!hdr) {
-        rc = MGMT_ERR_EINVAL;
+        g_err = MGMT_ERR_EINVAL;
         goto err;
     }
 
-    json_encode_object_start(&njb->mjb_enc);
-    JSON_VALUE_INT(&jv, MGMT_ERR_EOK);
-    json_encode_object_entry(&njb->mjb_enc, "rc", &jv);
-    JSON_VALUE_STRINGN(&jv, stats_name, strlen(stats_name));
-    json_encode_object_entry(&njb->mjb_enc, "name", &jv);
-    JSON_VALUE_STRINGN(&jv, "sys", sizeof("sys")-1);
-    json_encode_object_entry(&njb->mjb_enc, "group", &jv);
-    json_encode_object_key(&njb->mjb_enc, "fields");
-    json_encode_object_start(&njb->mjb_enc);
-    stats_walk(hdr, stats_nmgr_walk_func, &njb->mjb_enc);
-    json_encode_object_finish(&njb->mjb_enc);
-    json_encode_object_finish(&njb->mjb_enc);
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, MGMT_ERR_EOK);
+
+    g_err |= cbor_encode_text_stringz(&rsp, "name");
+    g_err |= cbor_encode_text_stringz(&rsp, stats_name);
+
+    g_err |= cbor_encode_text_stringz(&rsp, "group");
+    g_err |= cbor_encode_text_string(&rsp, "sys", sizeof("sys")-1);
+
+    g_err |= cbor_encode_text_stringz(&rsp, "fields");
+
+    g_err |= cbor_encoder_create_map(&rsp, &stats, CborIndefiniteLength);
+
+    stats_walk(hdr, stats_nmgr_walk_func, &stats);
+
+    g_err |= cbor_encoder_close_container(&rsp, &stats);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return (0);
 err:
-    mgmt_jbuf_setoerr(njb, rc);
+    mgmt_cbuf_setoerr(cb, g_err);
 
     return (0);
 }
 
 static int
-stats_nmgr_list(struct mgmt_jbuf *njb)
+stats_nmgr_list(struct mgmt_cbuf *cb)
 {
-    struct json_value jv;
-
-    json_encode_object_start(&njb->mjb_enc);
-    JSON_VALUE_INT(&jv, MGMT_ERR_EOK);
-    json_encode_object_entry(&njb->mjb_enc, "rc", &jv);
-    json_encode_array_name(&njb->mjb_enc, "stat_list");
-    json_encode_array_start(&njb->mjb_enc);
-    stats_group_walk(stats_nmgr_encode_name, &njb->mjb_enc);
-    json_encode_array_finish(&njb->mjb_enc);
-    json_encode_object_finish(&njb->mjb_enc);
+    CborError g_err = CborNoError;
+    CborEncoder *penc = &cb->encoder;
+    CborEncoder rsp, stats;
+
+    g_err |= cbor_encoder_create_map(penc, &rsp, CborIndefiniteLength);
+    g_err |= cbor_encode_text_stringz(&rsp, "rc");
+    g_err |= cbor_encode_int(&rsp, MGMT_ERR_EOK);
+    g_err |= cbor_encode_text_stringz(&rsp, "stat_list");
+    g_err |= cbor_encoder_create_array(&rsp, &stats, CborIndefiniteLength);
+    stats_group_walk(stats_nmgr_encode_name, &stats);
+    g_err |= cbor_encoder_close_container(&rsp, &stats);
+    g_err |= cbor_encoder_close_container(penc, &rsp);
 
     return (0);
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/7f299efb/test/crash_test/src/crash_nmgr.c
----------------------------------------------------------------------
diff --git a/test/crash_test/src/crash_nmgr.c b/test/crash_test/src/crash_nmgr.c
index a388248..78aae20 100644
--- a/test/crash_test/src/crash_nmgr.c
+++ b/test/crash_test/src/crash_nmgr.c
@@ -24,13 +24,13 @@
 #include <string.h>
 
 #include "mgmt/mgmt.h"
-#include "json/json.h"
+#include "cborattr/cborattr.h"
 #include "console/console.h"
 
 #include "crash_test/crash_test.h"
 #include "crash_test_priv.h"
 
-static int crash_test_nmgr_write(struct mgmt_jbuf *);
+static int crash_test_nmgr_write(struct mgmt_cbuf *);
 
 static const struct mgmt_handler crash_test_nmgr_handler[] = {
     [0] = { crash_test_nmgr_write, crash_test_nmgr_write }
@@ -43,13 +43,13 @@ struct mgmt_group crash_test_nmgr_group = {
 };
 
 static int
-crash_test_nmgr_write(struct mgmt_jbuf *njb)
+crash_test_nmgr_write(struct mgmt_cbuf *cb)
 {
     char tmp_str[64];
-    const struct json_attr_t attr[2] = {
+    const struct cbor_attr_t attr[2] = {
         [0] = {
             .attribute = "t",
-            .type = t_string,
+            .type = CborAttrTextStringType,
             .addr.string = tmp_str,
             .len = sizeof(tmp_str)
         },
@@ -59,7 +59,7 @@ crash_test_nmgr_write(struct mgmt_jbuf *njb)
     };
     int rc;
 
-    rc = json_read_object(&njb->mjb_buf, attr);
+    rc = cbor_read_object(&cb->it, attr);
     if (rc) {
         rc = MGMT_ERR_EINVAL;
     } else {
@@ -68,7 +68,7 @@ crash_test_nmgr_write(struct mgmt_jbuf *njb)
             rc = MGMT_ERR_EINVAL;
         }
     }
-    mgmt_jbuf_setoerr(njb, rc);
+    mgmt_cbuf_setoerr(cb, rc);
     return 0;
 }
 

Reply via email to