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/04 22:09:17 UTC

[2/2] incubator-mynewt-core git commit: libs/newtmgr -> mgmt/newtmgr, libs/newtmgr_oic -> mgmt/oicmgr.

libs/newtmgr -> mgmt/newtmgr, libs/newtmgr_oic -> mgmt/oicmgr.


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/b99324aa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/b99324aa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/b99324aa

Branch: refs/heads/develop
Commit: b99324aa649392c5bbb344d71431913e5f04897b
Parents: cf86002
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Tue Oct 4 15:01:44 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Tue Oct 4 15:01:44 2016 -0700

----------------------------------------------------------------------
 apps/bleprph/pkg.yml                            |   4 +-
 apps/bleuart/pkg.yml                            |   4 +-
 apps/slinky/pkg.yml                             |   2 +-
 apps/splitty/pkg.yml                            |   2 +-
 libs/newtmgr/include/newtmgr/newtmgr.h          | 137 ----
 libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h  |  44 --
 libs/newtmgr/nmgr_os/pkg.yml                    |  34 -
 libs/newtmgr/nmgr_os/src/newtmgr_os.c           | 326 ---------
 libs/newtmgr/pkg.yml                            |  42 --
 libs/newtmgr/src/newtmgr.c                      | 694 -------------------
 libs/newtmgr/syscfg.yml                         |  13 -
 .../transport/ble/include/nmgrble/newtmgr_ble.h |  42 --
 libs/newtmgr/transport/ble/pkg.yml              |  33 -
 libs/newtmgr/transport/ble/src/newtmgr_ble.c    | 261 -------
 libs/newtmgr_oic/include/newtmgr/newtmgr.h      | 120 ----
 libs/newtmgr_oic/pkg.yml                        |  40 --
 libs/newtmgr_oic/src/newtmgr.c                  | 500 -------------
 libs/newtmgr_oic/syscfg.yml                     |  10 -
 mgmt/mgmt/include/mgmt/mgmt.h                   |  63 ++
 mgmt/mgmt/pkg.yml                               |  30 +
 mgmt/mgmt/src/mgmt.c                            | 137 ++++
 mgmt/mgmt/syscfg.yml                            |  18 +
 mgmt/newtmgr/include/newtmgr/newtmgr.h          | 137 ++++
 mgmt/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h  |  44 ++
 mgmt/newtmgr/nmgr_os/pkg.yml                    |  34 +
 mgmt/newtmgr/nmgr_os/src/newtmgr_os.c           | 326 +++++++++
 mgmt/newtmgr/pkg.yml                            |  42 ++
 mgmt/newtmgr/src/newtmgr.c                      | 694 +++++++++++++++++++
 mgmt/newtmgr/syscfg.yml                         |  13 +
 .../transport/ble/include/nmgrble/newtmgr_ble.h |  42 ++
 mgmt/newtmgr/transport/ble/pkg.yml              |  33 +
 mgmt/newtmgr/transport/ble/src/newtmgr_ble.c    | 261 +++++++
 mgmt/oicmgr/include/newtmgr/newtmgr.h           | 120 ++++
 mgmt/oicmgr/pkg.yml                             |  40 ++
 mgmt/oicmgr/src/newtmgr.c                       | 500 +++++++++++++
 mgmt/oicmgr/syscfg.yml                          |  10 +
 test/crash_test/pkg.yml                         |   1 -
 37 files changed, 2550 insertions(+), 2303 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/apps/bleprph/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bleprph/pkg.yml b/apps/bleprph/pkg.yml
index 67db5c0..72b8b31 100644
--- a/apps/bleprph/pkg.yml
+++ b/apps/bleprph/pkg.yml
@@ -33,6 +33,6 @@ pkg.deps:
     - net/nimble/transport/ram
     - sys/console/full
     - libc/baselibc
-    - libs/newtmgr
-    - libs/newtmgr/transport/ble
+    - mgmt/newtmgr
+    - mgmt/newtmgr/transport/ble
     - sys/sysinit

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/apps/bleuart/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/bleuart/pkg.yml b/apps/bleuart/pkg.yml
index ddec57b..2b026de 100644
--- a/apps/bleuart/pkg.yml
+++ b/apps/bleuart/pkg.yml
@@ -33,6 +33,6 @@ pkg.deps:
     - net/nimble/transport/ram
     - sys/console/full
     - libc/baselibc
-    - libs/newtmgr
-    - libs/newtmgr/transport/ble
+    - mgmt/newtmgr
+    - mgmt/newtmgr/transport/ble
     - net/nimble/host/services/bleuart

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/apps/slinky/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/slinky/pkg.yml b/apps/slinky/pkg.yml
index 0e2faf7..0a0e65d 100644
--- a/apps/slinky/pkg.yml
+++ b/apps/slinky/pkg.yml
@@ -28,7 +28,7 @@ pkg.deps:
     - sys/console/full
     - test/flash_test
     - libs/imgmgr
-    - libs/newtmgr
+    - mgmt/newtmgr
     - kernel/os
     - boot/bootutil
     - sys/shell

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/apps/splitty/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/splitty/pkg.yml b/apps/splitty/pkg.yml
index 2746bf4..be359c1 100644
--- a/apps/splitty/pkg.yml
+++ b/apps/splitty/pkg.yml
@@ -28,7 +28,7 @@ pkg.deps:
     - fs/nffs
     - sys/console/full
     - libs/imgmgr
-    - libs/newtmgr
+    - mgmt/newtmgr
     - kernel/os
     - boot/bootutil
     - sys/shell

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/include/newtmgr/newtmgr.h
----------------------------------------------------------------------
diff --git a/libs/newtmgr/include/newtmgr/newtmgr.h b/libs/newtmgr/include/newtmgr/newtmgr.h
deleted file mode 100644
index 7b4f35f..0000000
--- a/libs/newtmgr/include/newtmgr/newtmgr.h
+++ /dev/null
@@ -1,137 +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)
-
-#define NMGR_F_JSON_RSP_COMPLETE     (0x0001)
-
-/**
- * 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;
-    struct os_mbuf *njb_in_m;
-    struct os_mbuf *njb_out_m;
-    struct nmgr_hdr *njb_hdr;
-    uint16_t njb_off;
-    uint16_t njb_end;
-};
-void 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)); 
-
-struct nmgr_transport;
-typedef int (*nmgr_transport_out_func_t)(struct nmgr_transport *nt, 
-        struct os_mbuf *m);
-typedef uint16_t (*nmgr_transport_get_mtu_func_t)(struct os_mbuf *m);
-
-struct nmgr_transport {
-    struct os_mqueue nt_imq;
-    nmgr_transport_out_func_t nt_output;
-    nmgr_transport_get_mtu_func_t nt_get_mtu;
-};
-
-
-int nmgr_task_init(void);
-int nmgr_transport_init(struct nmgr_transport *nt,
-        nmgr_transport_out_func_t output_func,
-        nmgr_transport_get_mtu_func_t get_mtu_func);
-int nmgr_rx_req(struct nmgr_transport *nt, struct os_mbuf *req);
-int nmgr_rsp_extend(struct nmgr_hdr *, struct os_mbuf *, void *data, uint16_t);
-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/b99324aa/libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
----------------------------------------------------------------------
diff --git a/libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h b/libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
deleted file mode 100644
index 5da2f6d..0000000
--- a/libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
+++ /dev/null
@@ -1,44 +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 _NMGR_OS_H_
-#define _NMGR_OS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Id's for OS group commands
- */
-#define NMGR_ID_ECHO            0
-#define NMGR_ID_CONS_ECHO_CTRL  1
-#define NMGR_ID_TASKSTATS       2
-#define NMGR_ID_MPSTATS         3
-#define NMGR_ID_DATETIME_STR    4
-#define NMGR_ID_RESET           5
-
-struct os_eventq;
-int nmgr_os_groups_register(struct os_eventq *nmgr_evq);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NMGR_OS_H_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/nmgr_os/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/nmgr_os/pkg.yml b/libs/newtmgr/nmgr_os/pkg.yml
deleted file mode 100644
index 22ecc3e..0000000
--- a/libs/newtmgr/nmgr_os/pkg.yml
+++ /dev/null
@@ -1,34 +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.
-#
-
-pkg.name: libs/newtmgr/nmgr_os
-pkg.description: Default newtmgr command.
-pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
-pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-
-pkg.deps:
-    - hw/hal
-    - kernel/os
-    - encoding/json
-    - libs/util
-    - sys/reboot
-
-pkg.req_apis:
-    - newtmgr

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/nmgr_os/src/newtmgr_os.c
----------------------------------------------------------------------
diff --git a/libs/newtmgr/nmgr_os/src/newtmgr_os.c b/libs/newtmgr/nmgr_os/src/newtmgr_os.c
deleted file mode 100644
index 6c1a12f..0000000
--- a/libs/newtmgr/nmgr_os/src/newtmgr_os.c
+++ /dev/null
@@ -1,326 +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.
- */
-
-#include <os/os.h>
-#include <os/endian.h>
-
-#include <assert.h>
-#include <string.h>
-
-#include <hal/hal_system.h>
-
-#include <newtmgr/newtmgr.h>
-
-#include <console/console.h>
-#include <util/datetime.h>
-#include <reboot/log_reboot.h>
-
-#include "nmgr_os/nmgr_os.h"
-
-static struct os_callout_func nmgr_reset_callout;
-
-static int nmgr_def_echo(struct nmgr_jbuf *);
-static int nmgr_def_console_echo(struct nmgr_jbuf *);
-static int nmgr_def_taskstat_read(struct nmgr_jbuf *njb);
-static int nmgr_def_mpstat_read(struct nmgr_jbuf *njb);
-static int nmgr_datetime_get(struct nmgr_jbuf *njb);
-static int nmgr_datetime_set(struct nmgr_jbuf *njb);
-static int nmgr_reset(struct nmgr_jbuf *njb);
-
-static const struct nmgr_handler nmgr_def_group_handlers[] = {
-    [NMGR_ID_ECHO] = {
-        nmgr_def_echo, nmgr_def_echo
-    },
-    [NMGR_ID_CONS_ECHO_CTRL] = {
-        nmgr_def_console_echo, nmgr_def_console_echo
-    },
-    [NMGR_ID_TASKSTATS] = {
-        nmgr_def_taskstat_read, NULL
-    },
-    [NMGR_ID_MPSTATS] = {
-        nmgr_def_mpstat_read, NULL
-    },
-    [NMGR_ID_DATETIME_STR] = {
-        nmgr_datetime_get, nmgr_datetime_set
-    },
-    [NMGR_ID_RESET] = {
-        NULL, nmgr_reset
-    },
-};
-
-#define NMGR_DEF_GROUP_SZ                                               \
-    (sizeof(nmgr_def_group_handlers) / sizeof(nmgr_def_group_handlers[0]))
-
-static struct nmgr_group nmgr_def_group = {
-    .ng_handlers = (struct nmgr_handler *)nmgr_def_group_handlers,
-    .ng_handlers_count = NMGR_DEF_GROUP_SZ,
-    .ng_group_id = NMGR_GROUP_ID_DEFAULT
-};
-
-static int
-nmgr_def_echo(struct nmgr_jbuf *njb)
-{
-    uint8_t echo_buf[128];
-    struct json_attr_t attrs[] = {
-        { "d", t_string, .addr.string = (char *) &echo_buf[0],
-            .len = sizeof(echo_buf) },
-        { NULL },
-    };
-    struct json_value jv;
-    int rc;
-
-    rc = json_read_object((struct json_buffer *) njb, attrs);
-    if (rc != 0) {
-        goto err;
-    }
-
-    json_encode_object_start(&njb->njb_enc);
-    JSON_VALUE_STRINGN(&jv, (char *) echo_buf, strlen((char *) echo_buf));
-    json_encode_object_entry(&njb->njb_enc, "r", &jv);
-    json_encode_object_finish(&njb->njb_enc);
-
-    return (0);
-err:
-    return (rc);
-}
-
-static int
-nmgr_def_console_echo(struct nmgr_jbuf *njb)
-{
-    long long int echo_on = 1;
-    int rc;
-    struct json_attr_t attrs[3] = {
-        [0] = {
-            .attribute = "echo",
-            .type = t_integer,
-            .addr.integer = &echo_on,
-            .nodefault = 1
-        },
-        [1] = {
-            .attribute = NULL
-        }
-    };
-
-    rc = json_read_object(&njb->njb_buf, attrs);
-    if (rc) {
-        return OS_EINVAL;
-    }
-
-    if (echo_on) {
-        console_echo(1);
-    } else {
-        console_echo(0);
-    }
-    return (0);
-}
-
-static int
-nmgr_def_taskstat_read(struct nmgr_jbuf *njb)
-{
-    struct os_task *prev_task;
-    struct os_task_info oti;
-    struct json_value jv;
-
-    json_encode_object_start(&njb->njb_enc);
-    JSON_VALUE_INT(&jv, NMGR_ERR_EOK);
-    json_encode_object_entry(&njb->njb_enc, "rc", &jv);
-
-    json_encode_object_key(&njb->njb_enc, "tasks");
-    json_encode_object_start(&njb->njb_enc);
-
-    prev_task = NULL;
-    while (1) {
-        prev_task = os_task_info_get_next(prev_task, &oti);
-        if (prev_task == NULL) {
-            break;
-        }
-
-        json_encode_object_key(&njb->njb_enc, oti.oti_name);
-
-        json_encode_object_start(&njb->njb_enc);
-        JSON_VALUE_UINT(&jv, oti.oti_prio);
-        json_encode_object_entry(&njb->njb_enc, "prio", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_taskid);
-        json_encode_object_entry(&njb->njb_enc, "tid", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_state);
-        json_encode_object_entry(&njb->njb_enc, "state", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_stkusage);
-        json_encode_object_entry(&njb->njb_enc, "stkuse", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_stksize);
-        json_encode_object_entry(&njb->njb_enc, "stksiz", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_cswcnt);
-        json_encode_object_entry(&njb->njb_enc, "cswcnt", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_runtime);
-        json_encode_object_entry(&njb->njb_enc, "runtime", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_last_checkin);
-        json_encode_object_entry(&njb->njb_enc, "last_checkin", &jv);
-        JSON_VALUE_UINT(&jv, oti.oti_next_checkin);
-        json_encode_object_entry(&njb->njb_enc, "next_checkin", &jv);
-        json_encode_object_finish(&njb->njb_enc);
-    }
-    json_encode_object_finish(&njb->njb_enc);
-    json_encode_object_finish(&njb->njb_enc);
-
-    return (0);
-}
-
-static int
-nmgr_def_mpstat_read(struct nmgr_jbuf *njb)
-{
-    struct os_mempool *prev_mp;
-    struct os_mempool_info omi;
-    struct json_value jv;
-
-    json_encode_object_start(&njb->njb_enc);
-    JSON_VALUE_INT(&jv, NMGR_ERR_EOK);
-    json_encode_object_entry(&njb->njb_enc, "rc", &jv);
-
-    json_encode_object_key(&njb->njb_enc, "mpools");
-    json_encode_object_start(&njb->njb_enc);
-
-    prev_mp = NULL;
-    while (1) {
-        prev_mp = os_mempool_info_get_next(prev_mp, &omi);
-        if (prev_mp == NULL) {
-            break;
-        }
-
-        json_encode_object_key(&njb->njb_enc, omi.omi_name);
-
-        json_encode_object_start(&njb->njb_enc);
-        JSON_VALUE_UINT(&jv, omi.omi_block_size);
-        json_encode_object_entry(&njb->njb_enc, "blksiz", &jv);
-        JSON_VALUE_UINT(&jv, omi.omi_num_blocks);
-        json_encode_object_entry(&njb->njb_enc, "nblks", &jv);
-        JSON_VALUE_UINT(&jv, omi.omi_num_free);
-        json_encode_object_entry(&njb->njb_enc, "nfree", &jv);
-        json_encode_object_finish(&njb->njb_enc);
-    }
-
-    json_encode_object_finish(&njb->njb_enc);
-    json_encode_object_finish(&njb->njb_enc);
-
-    return (0);
-}
-
-static int
-nmgr_datetime_get(struct nmgr_jbuf *njb)
-{
-    struct os_timeval tv;
-    struct os_timezone tz;
-    char buf[DATETIME_BUFSIZE];
-    struct json_value jv;
-    int rc;
-
-    json_encode_object_start(&njb->njb_enc);
-    JSON_VALUE_INT(&jv, NMGR_ERR_EOK);
-    json_encode_object_entry(&njb->njb_enc, "rc", &jv);
-
-    /* Display the current datetime */
-    rc = os_gettimeofday(&tv, &tz);
-    assert(rc == 0);
-    rc = format_datetime(&tv, &tz, buf, DATETIME_BUFSIZE);
-    if (rc) {
-        rc = OS_EINVAL;
-        goto err;
-    }
-
-    JSON_VALUE_STRING(&jv, buf)
-    json_encode_object_entry(&njb->njb_enc, "datetime", &jv);
-    json_encode_object_finish(&njb->njb_enc);
-
-    return OS_OK;
-err:
-    return (rc);
-}
-
-static int
-nmgr_datetime_set(struct nmgr_jbuf *njb)
-{
-    struct os_timeval tv;
-    struct os_timezone tz;
-    struct json_value jv;
-    char buf[DATETIME_BUFSIZE];
-    int rc = OS_OK;
-    const struct json_attr_t datetime_write_attr[2] = {
-        [0] = {
-            .attribute = "datetime",
-            .type = t_string,
-            .addr.string = buf,
-            .len = sizeof(buf),
-        },
-        [1] = {
-            .attribute = "rc",
-            .type = t_uinteger,
-
-        }
-    };
-
-    rc = json_read_object(&njb->njb_buf, datetime_write_attr);
-    if (rc) {
-        rc = OS_EINVAL;
-        goto out;
-    }
-
-    /* Set the current datetime */
-    rc = parse_datetime(buf, &tv, &tz);
-    if (!rc) {
-        rc = os_settimeofday(&tv, &tz);
-        if (rc) {
-          rc = OS_EINVAL;
-          goto out;
-        }
-    } else {
-        rc = OS_EINVAL;
-        goto out;
-    }
-
-out:
-    json_encode_object_start(&njb->njb_enc);
-    JSON_VALUE_INT(&jv, rc);
-    json_encode_object_entry(&njb->njb_enc, "rc", &jv);
-    json_encode_object_finish(&njb->njb_enc);
-    return OS_OK;
-}
-
-static void
-nmgr_reset_tmo(void *arg)
-{
-    system_reset();
-}
-
-static int
-nmgr_reset(struct nmgr_jbuf *njb)
-{
-    log_reboot(SOFT_REBOOT);
-    os_callout_reset(&nmgr_reset_callout.cf_c, OS_TICKS_PER_SEC / 4);
-
-    nmgr_jbuf_setoerr(njb, 0);
-
-    return OS_OK;
-}
-
-int
-nmgr_os_groups_register(struct os_eventq *nmgr_evq)
-{
-    os_callout_func_init(&nmgr_reset_callout, nmgr_evq, nmgr_reset_tmo, NULL);
-
-    return nmgr_group_register(&nmgr_def_group);
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/pkg.yml b/libs/newtmgr/pkg.yml
deleted file mode 100644
index 1bd817f..0000000
--- a/libs/newtmgr/pkg.yml
+++ /dev/null
@@ -1,42 +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.
-#
-
-pkg.name: libs/newtmgr
-pkg.description: Server-side newtmgr functionality.
-pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
-pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-
-pkg.deps:
-    - hw/hal
-    - kernel/os
-    - encoding/json
-    - libs/newtmgr/nmgr_os
-    - libs/util
-    - sys/shell
-    - sys/reboot
-
-pkg.deps.NEWTMGR_BLE_HOST:
-    - libs/newtmgr/transport/ble
-
-pkg.apis:
-    - newtmgr
-
-pkg.init_function: nmgr_pkg_init
-pkg.init_stage: 5

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/libs/newtmgr/src/newtmgr.c b/libs/newtmgr/src/newtmgr.c
deleted file mode 100644
index 9b90296..0000000
--- a/libs/newtmgr/src/newtmgr.c
+++ /dev/null
@@ -1,694 +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.
- */
-
-#include <assert.h>
-#include <string.h>
-
-#include "syscfg/syscfg.h"
-#include "sysinit/sysinit.h"
-#include "os/os.h"
-#include "os/endian.h"
-
-#include "shell/shell.h"
-#include "newtmgr/newtmgr.h"
-#include "nmgr_os/nmgr_os.h"
-
-os_stack_t newtmgr_stack[OS_STACK_ALIGN(MYNEWT_VAL(NEWTMGR_STACK_SIZE))];
-
-struct nmgr_transport g_nmgr_shell_transport;
-
-struct os_mutex g_nmgr_group_list_lock;
-
-static struct os_eventq g_nmgr_evq;
-static struct os_task g_nmgr_task;
-
-STAILQ_HEAD(, nmgr_group) g_nmgr_group_list =
-    STAILQ_HEAD_INITIALIZER(g_nmgr_group_list);
-
-/* JSON buffer for NMGR task
- */
-static struct nmgr_jbuf nmgr_task_jbuf;
-
-int
-nmgr_group_list_lock(void)
-{
-    int rc;
-
-    if (!os_started()) {
-        return (0);
-    }
-
-    rc = os_mutex_pend(&g_nmgr_group_list_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(&g_nmgr_group_list_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(&g_nmgr_group_list, 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, &g_nmgr_group_list, 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);
-}
-
-int
-nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, void *data,
-        uint16_t len)
-{
-    int rc;
-
-    rc = os_mbuf_append(rsp, data, len);
-    if (rc != 0) {
-        goto err;
-    }
-    hdr->nh_len += len;
-
-    return (0);
-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->njb_off + 1 > njb->njb_end) {
-        return '\0';
-    }
-
-    rc = os_mbuf_copydata(njb->njb_in_m, njb->njb_off, 1, &c);
-    if (rc == -1) {
-        c = '\0';
-    }
-    ++njb->njb_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->njb_off == 0) {
-        return '\0';
-    }
-
-    --njb->njb_off;
-    rc = os_mbuf_copydata(njb->njb_in_m, njb->njb_off, 1, &c);
-    if (rc == -1) {
-        c = '\0';
-    }
-
-    return (c);
-}
-
-static int
-nmgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
-{
-    struct nmgr_jbuf *njb;
-    int read;
-    int left;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    left = njb->njb_end - njb->njb_off;
-    read = size > left ? left : size;
-
-    rc = os_mbuf_copydata(njb->njb_in_m, njb->njb_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->njb_hdr, njb->njb_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)
-{
-    memset(njb, 0, sizeof(*njb));
-
-    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;
-
-    return (0);
-}
-
-static void
-nmgr_jbuf_setibuf(struct nmgr_jbuf *njb, struct os_mbuf *m,
-        uint16_t off, uint16_t len)
-{
-    njb->njb_off = off;
-    njb->njb_end = off + len;
-    njb->njb_in_m = m;
-    njb->njb_enc.je_wr_commas = 0;
-}
-
-static void
-nmgr_jbuf_setobuf(struct nmgr_jbuf *njb, struct nmgr_hdr *hdr,
-        struct os_mbuf *m)
-{
-    njb->njb_out_m = m;
-    njb->njb_hdr = hdr;
-}
-
-void
-nmgr_jbuf_setoerr(struct nmgr_jbuf *njb, int errcode)
-{
-    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);
-}
-
-static struct nmgr_hdr*
-nmgr_init_rsp(struct os_mbuf *m, struct nmgr_hdr *src)
-{
-    struct nmgr_hdr *hdr;
-
-    hdr = (struct nmgr_hdr *) os_mbuf_extend(m, sizeof(struct nmgr_hdr));
-    if (!hdr) {
-        return NULL;
-    }
-    memcpy(hdr, src, sizeof(*hdr));
-    hdr->nh_len = 0;
-    hdr->nh_flags = 0;
-    hdr->nh_op = (src->nh_op == NMGR_OP_READ) ? NMGR_OP_READ_RSP :
-      NMGR_OP_WRITE_RSP;
-    hdr->nh_group = src->nh_group;
-    hdr->nh_seq = src->nh_seq;
-    hdr->nh_id = src->nh_id;
-
-    nmgr_jbuf_setobuf(&nmgr_task_jbuf, hdr, m);
-
-    return hdr;
-}
-
-static void
-nmgr_send_err_rsp(struct nmgr_transport *nt, struct os_mbuf *m,
-  struct nmgr_hdr *hdr, int rc)
-{
-    hdr = nmgr_init_rsp(m, hdr);
-    if (!hdr) {
-        return;
-    }
-    nmgr_jbuf_setoerr(&nmgr_task_jbuf, rc);
-    hdr->nh_len = htons(hdr->nh_len);
-    hdr->nh_flags = NMGR_F_JSON_RSP_COMPLETE;
-    nt->nt_output(nt, nmgr_task_jbuf.njb_out_m);
-}
-
-static int
-nmgr_send_rspfrag(struct nmgr_transport *nt, struct nmgr_hdr *rsp_hdr,
-                  struct os_mbuf *rsp, struct os_mbuf *req, uint16_t len,
-                  uint16_t *offset) {
-
-    struct os_mbuf *rspfrag;
-    int rc;
-
-    rspfrag = NULL;
-
-    rspfrag = os_msys_get_pkthdr(len, OS_MBUF_USRHDR_LEN(req));
-    if (!rspfrag) {
-        rc = NMGR_ERR_ENOMEM;
-        goto err;
-    }
-
-    /* Copy the request packet header into the response. */
-    memcpy(OS_MBUF_USRHDR(rspfrag), OS_MBUF_USRHDR(req), OS_MBUF_USRHDR_LEN(req));
-
-    if (os_mbuf_append(rspfrag, rsp_hdr, sizeof(struct nmgr_hdr))) {
-        rc = NMGR_ERR_ENOMEM;
-        goto err;
-    }
-
-    if (os_mbuf_appendfrom(rspfrag, rsp, *offset, len)) {
-        rc = NMGR_ERR_ENOMEM;
-        goto err;
-    }
-
-    *offset += len;
-
-    len = htons(len);
-
-    if (os_mbuf_copyinto(rspfrag, offsetof(struct nmgr_hdr, nh_len), &len, sizeof(len))) {
-        rc = NMGR_ERR_ENOMEM;
-        goto err;
-    }
-
-    nt->nt_output(nt, rspfrag);
-
-    return NMGR_ERR_EOK;
-err:
-    if (rspfrag) {
-        os_mbuf_free_chain(rspfrag);
-    }
-    return rc;
-}
-
-static int
-nmgr_rsp_fragment(struct nmgr_transport *nt, struct nmgr_hdr *rsp_hdr,
-                  struct os_mbuf *rsp, struct os_mbuf *req) {
-
-    uint16_t offset;
-    uint16_t len;
-    uint16_t mtu;
-    int rc;
-
-    offset = sizeof(struct nmgr_hdr);
-    len = rsp_hdr->nh_len;
-
-    mtu = nt->nt_get_mtu(req) - sizeof(struct nmgr_hdr);
-
-    do {
-        if (len <= mtu) {
-            rsp_hdr->nh_flags |= NMGR_F_JSON_RSP_COMPLETE;
-        } else {
-            len = mtu;
-        }
-
-        rc = nmgr_send_rspfrag(nt, rsp_hdr, rsp, req, len, &offset);
-        if (rc) {
-            goto err;
-        }
-
-        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));
-
-    return NMGR_ERR_EOK;
-err:
-    return rc;
-}
-
-static void
-nmgr_handle_req(struct nmgr_transport *nt, struct os_mbuf *req)
-{
-    struct os_mbuf *rsp;
-    struct nmgr_handler *handler;
-    struct nmgr_hdr *rsp_hdr;
-    struct nmgr_hdr hdr;
-    int off;
-    uint16_t len;
-    int rc;
-
-    rsp_hdr = NULL;
-
-    rsp = os_msys_get_pkthdr(512, OS_MBUF_USRHDR_LEN(req));
-    if (!rsp) {
-        rc = os_mbuf_copydata(req, 0, sizeof(hdr), &hdr);
-        if (rc < 0) {
-            goto err_norsp;
-        }
-        rsp = req;
-        req = NULL;
-        goto err;
-    }
-
-    /* Copy the request packet header into the response. */
-    memcpy(OS_MBUF_USRHDR(rsp), OS_MBUF_USRHDR(req), OS_MBUF_USRHDR_LEN(req));
-
-    off = 0;
-    len = OS_MBUF_PKTHDR(req)->omp_len;
-
-    while (off < len) {
-        rc = os_mbuf_copydata(req, off, sizeof(hdr), &hdr);
-        if (rc < 0) {
-            rc = NMGR_ERR_EINVAL;
-            goto err_norsp;
-        }
-
-        hdr.nh_len = ntohs(hdr.nh_len);
-
-        handler = nmgr_find_handler(ntohs(hdr.nh_group), hdr.nh_id);
-        if (!handler) {
-            rc = NMGR_ERR_ENOENT;
-            goto err;
-        }
-
-        /* Build response header apriori.  Then pass to the handlers
-         * to fill out the response data, and adjust length & flags.
-         */
-        rsp_hdr = nmgr_init_rsp(rsp, &hdr);
-        if (!rsp_hdr) {
-            rc = NMGR_ERR_ENOMEM;
-            goto err_norsp;
-        }
-
-        /*
-         * Setup state for JSON encoding.
-         */
-        nmgr_jbuf_setibuf(&nmgr_task_jbuf, req, off + sizeof(hdr), hdr.nh_len);
-
-        if (hdr.nh_op == NMGR_OP_READ) {
-            if (handler->nh_read) {
-                rc = handler->nh_read(&nmgr_task_jbuf);
-            } else {
-                rc = NMGR_ERR_ENOENT;
-            }
-        } else if (hdr.nh_op == NMGR_OP_WRITE) {
-            if (handler->nh_write) {
-                rc = handler->nh_write(&nmgr_task_jbuf);
-            } else {
-                rc = NMGR_ERR_ENOENT;
-            }
-        } else {
-            rc = NMGR_ERR_EINVAL;
-        }
-
-        if (rc != 0) {
-            goto err;
-        }
-
-        off += sizeof(hdr) + OS_ALIGN(hdr.nh_len, 4);
-        rc = nmgr_rsp_fragment(nt, rsp_hdr, rsp, req);
-        if (rc) {
-            goto err;
-        }
-    }
-
-    os_mbuf_free_chain(rsp);
-    os_mbuf_free_chain(req);
-    return;
-err:
-    OS_MBUF_PKTHDR(rsp)->omp_len = rsp->om_len = 0;
-    nmgr_send_err_rsp(nt, rsp, &hdr, rc);
-    os_mbuf_free_chain(req);
-    return;
-err_norsp:
-    os_mbuf_free_chain(rsp);
-    os_mbuf_free_chain(req);
-    return;
-}
-
-
-void
-nmgr_process(struct nmgr_transport *nt)
-{
-    struct os_mbuf *m;
-
-    while (1) {
-        m = os_mqueue_get(&nt->nt_imq);
-        if (!m) {
-            break;
-        }
-
-        nmgr_handle_req(nt, m);
-    }
-}
-
-void
-nmgr_task(void *arg)
-{
-    struct nmgr_transport *nt;
-    struct os_event *ev;
-    struct os_callout_func *ocf;
-
-    nmgr_jbuf_init(&nmgr_task_jbuf);
-
-    while (1) {
-        ev = os_eventq_get(&g_nmgr_evq);
-        switch (ev->ev_type) {
-            case OS_EVENT_T_MQUEUE_DATA:
-                nt = (struct nmgr_transport *) ev->ev_arg;
-                nmgr_process(nt);
-                break;
-	    case OS_EVENT_T_TIMER:
-		ocf = (struct os_callout_func *)ev;
-		ocf->cf_func(CF_ARG(ocf));
-		break;
-        }
-    }
-}
-
-int
-nmgr_transport_init(struct nmgr_transport *nt,
-        nmgr_transport_out_func_t output_func,
-        nmgr_transport_get_mtu_func_t get_mtu_func)
-{
-    int rc;
-
-    nt->nt_output = output_func;
-    nt->nt_get_mtu = get_mtu_func;
-
-    rc = os_mqueue_init(&nt->nt_imq, nt);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-/**
- * Transfers an incoming request to the newtmgr task.  The caller relinquishes
- * ownership of the supplied mbuf upon calling this function, whether this
- * function succeeds or fails.
- *
- * @param nt                    The transport that the request was received
- *                                  over.
- * @param req                   An mbuf containing the newtmgr request.
- *
- * @return                      0 on success; nonzero on failure.
- */
-int
-nmgr_rx_req(struct nmgr_transport *nt, struct os_mbuf *req)
-{
-    int rc;
-
-    rc = os_mqueue_put(&nt->nt_imq, &g_nmgr_evq, req);
-    if (rc != 0) {
-        os_mbuf_free_chain(req);
-    }
-
-    return rc;
-}
-
-static uint16_t
-nmgr_shell_get_mtu(struct os_mbuf *m) {
-    return NMGR_MAX_MTU;
-}
-
-static int
-nmgr_shell_out(struct nmgr_transport *nt, struct os_mbuf *m)
-{
-    int rc;
-
-    rc = shell_nlip_output(m);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-static int
-nmgr_shell_in(struct os_mbuf *m, void *arg)
-{
-    struct nmgr_transport *nt;
-    int rc;
-
-    nt = (struct nmgr_transport *) arg;
-
-    rc = os_mqueue_put(&nt->nt_imq, &g_nmgr_evq, m);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-
-int
-nmgr_task_init(void)
-{
-    int rc;
-
-    os_eventq_init(&g_nmgr_evq);
-
-    rc = nmgr_transport_init(&g_nmgr_shell_transport, nmgr_shell_out,
-                             nmgr_shell_get_mtu);
-    if (rc != 0) {
-        goto err;
-    }
-
-    rc = shell_nlip_input_register(nmgr_shell_in,
-            (void *) &g_nmgr_shell_transport);
-    if (rc != 0) {
-        goto err;
-    }
-
-    rc = os_task_init(&g_nmgr_task, "newtmgr", nmgr_task, NULL,
-      MYNEWT_VAL(NEWTMGR_TASK_PRIO), OS_WAIT_FOREVER,
-      newtmgr_stack, OS_STACK_ALIGN(MYNEWT_VAL(NEWTMGR_STACK_SIZE)));
-    if (rc != 0) {
-        goto err;
-    }
-
-    rc = nmgr_os_groups_register(&g_nmgr_evq);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-void
-nmgr_pkg_init(void)
-{
-    int rc;
-
-    rc = nmgr_task_init();
-    SYSINIT_PANIC_ASSERT(rc == 0);
-}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/syscfg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/syscfg.yml b/libs/newtmgr/syscfg.yml
deleted file mode 100644
index ba394c6..0000000
--- a/libs/newtmgr/syscfg.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Package: libs/newtmgr
-
-syscfg.defs:
-    NEWTMGR_TASK_PRIO:
-        description: 'TBD'
-        type: 'task_priority'
-        value: 'any'
-    NEWTMGR_STACK_SIZE:
-        description: 'TBD'
-        value: 512
-    NEWTMGR_BLE_HOST:
-        description: 'TBD'
-        value: 0

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/transport/ble/include/nmgrble/newtmgr_ble.h
----------------------------------------------------------------------
diff --git a/libs/newtmgr/transport/ble/include/nmgrble/newtmgr_ble.h b/libs/newtmgr/transport/ble/include/nmgrble/newtmgr_ble.h
deleted file mode 100644
index 252cb5f..0000000
--- a/libs/newtmgr/transport/ble/include/nmgrble/newtmgr_ble.h
+++ /dev/null
@@ -1,42 +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_BLE_H_
-#define _NEWTMGR_BLE_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct nmgr_hdr;
-
-int
-nmgr_ble_proc_mq_evt(struct os_event *ev);
-
-int
-nmgr_ble_gatt_svr_init(void);
-
-void
-nmgr_ble_update_rsp_len(struct os_mbuf *req, uint16_t *len, uint8_t *flags);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NETMGR_H */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/transport/ble/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/transport/ble/pkg.yml b/libs/newtmgr/transport/ble/pkg.yml
deleted file mode 100644
index 7950fa7..0000000
--- a/libs/newtmgr/transport/ble/pkg.yml
+++ /dev/null
@@ -1,33 +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.
-#
-
-pkg.name: libs/newtmgr/transport/ble
-pkg.description: BLE transport newtmgr functionality.
-pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
-pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-    - ble
-    - bluetooth
-
-pkg.deps:
-    - kernel/os
-    - net/nimble/host
-
-pkg.init_function: newtmgr_ble_pkg_init
-pkg.init_stage: 5

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr/transport/ble/src/newtmgr_ble.c
----------------------------------------------------------------------
diff --git a/libs/newtmgr/transport/ble/src/newtmgr_ble.c b/libs/newtmgr/transport/ble/src/newtmgr_ble.c
deleted file mode 100644
index 817673d..0000000
--- a/libs/newtmgr/transport/ble/src/newtmgr_ble.c
+++ /dev/null
@@ -1,261 +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.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <string.h>
-#include "sysinit/sysinit.h"
-#include "host/ble_hs.h"
-#include "newtmgr/newtmgr.h"
-#include "os/endian.h"
-#include "console/console.h"
-
-/* nmgr ble mqueue */
-struct os_mqueue ble_nmgr_mq;
-
-/* ble nmgr transport */
-struct nmgr_transport ble_nt;
-
-/* ble nmgr attr handle */
-uint16_t g_ble_nmgr_attr_handle;
-
-/**
- * The vendor specific "newtmgr" service consists of one write no-rsp
- * characteristic for newtmgr requests: a single-byte characteristic that can
- * only accepts write-without-response commands.  The contents of each write
- * command contains an NMP request.  NMP responses are sent back in the form of
- * unsolicited notifications from the same characteristic.
- */
-
-/* {8D53DC1D-1DB7-4CD3-868B-8A527460AA84} */
-const uint8_t gatt_svr_svc_newtmgr[16] = {
-    0x84, 0xaa, 0x60, 0x74, 0x52, 0x8a, 0x8b, 0x86,
-    0xd3, 0x4c, 0xb7, 0x1d, 0x1d, 0xdc, 0x53, 0x8d
-};
-
-/* {DA2E7828-FBCE-4E01-AE9E-261174997C48} */
-const uint8_t gatt_svr_chr_newtmgr[16] = {
-    0x48, 0x7c, 0x99, 0x74, 0x11, 0x26, 0x9e, 0xae,
-    0x01, 0x4e, 0xce, 0xfb, 0x28, 0x78, 0x2e, 0xda
-};
-
-static int
-gatt_svr_chr_access_newtmgr(uint16_t conn_handle, uint16_t attr_handle,
-                            struct ble_gatt_access_ctxt *ctxt, void *arg);
-
-static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
-    {
-        /* Service: newtmgr */
-        .type = BLE_GATT_SVC_TYPE_PRIMARY,
-        .uuid128 = (void *)gatt_svr_svc_newtmgr,
-        .characteristics = (struct ble_gatt_chr_def[]) { {
-            /* Characteristic: Write No Rsp */
-            .uuid128 = (void *)gatt_svr_chr_newtmgr,
-            .access_cb = gatt_svr_chr_access_newtmgr,
-            .flags = BLE_GATT_CHR_F_WRITE_NO_RSP,
-            .val_handle = &g_ble_nmgr_attr_handle,
-        }, {
-            0, /* No more characteristics in this service */
-        } },
-    },
-
-    {
-        0, /* No more services */
-    },
-};
-
-static int
-gatt_svr_chr_access_newtmgr(uint16_t conn_handle, uint16_t attr_handle,
-                            struct ble_gatt_access_ctxt *ctxt, void *arg)
-{
-    int rc;
-    struct os_mbuf *m_req;
-
-    switch (ctxt->op) {
-        case BLE_GATT_ACCESS_OP_WRITE_CHR:
-            /* Try to reuse the BLE packet mbuf as the newtmgr request.  This
-             * requires a two-byte usrhdr to hold the BLE connection handle so
-             * that the newtmgr response can be sent to the correct peer.  If
-             * it is not possible to reuse the mbuf, then allocate a new one
-             * and copy the request contents.
-             */
-            if (OS_MBUF_USRHDR_LEN(ctxt->om) >= sizeof (conn_handle)) {
-                /* Sufficient usrhdr space already present. */
-                m_req = ctxt->om;
-                ctxt->om = NULL;
-            } else if (OS_MBUF_LEADINGSPACE(ctxt->om) >=
-                       sizeof (conn_handle)) {
-
-                /* Usrhdr isn't present, but there is enough leading space to
-                 * add one.
-                 */
-                m_req = ctxt->om;
-                ctxt->om = NULL;
-
-                m_req->om_pkthdr_len += sizeof (conn_handle);
-            } else {
-                /* The mbuf can't be reused.  Allocate a new one and perform a
-                 * copy.  Don't set ctxt->om to NULL; let the NimBLE host free
-                 * it.
-                 */
-                m_req = os_msys_get_pkthdr(OS_MBUF_PKTLEN(ctxt->om),
-                                           sizeof (conn_handle));
-                if (!m_req) {
-                    return BLE_ATT_ERR_INSUFFICIENT_RES;
-                }
-                rc = os_mbuf_appendfrom(m_req, ctxt->om, 0,
-                                        OS_MBUF_PKTLEN(ctxt->om));
-                if (rc) {
-                    return BLE_ATT_ERR_INSUFFICIENT_RES;
-                }
-            }
-
-            /* Write the connection handle to the newtmgr request usrhdr.  This
-             * is necessary so that we later know who to send the newtmgr
-             * response to.
-             */
-            memcpy(OS_MBUF_USRHDR(m_req), &conn_handle, sizeof(conn_handle));
-
-            rc = nmgr_rx_req(&ble_nt, m_req);
-            if (rc != 0) {
-                return BLE_ATT_ERR_UNLIKELY;
-            }
-            return 0;
-
-        default:
-            assert(0);
-            return BLE_ATT_ERR_UNLIKELY;
-    }
-}
-
-uint16_t
-nmgr_ble_get_mtu(struct os_mbuf *req) {
-
-    uint16_t conn_handle;
-    uint16_t mtu;
-
-    memcpy(&conn_handle, OS_MBUF_USRHDR(req), sizeof (conn_handle));
-    mtu = ble_att_mtu(conn_handle);
-    if (!mtu) {
-        assert(0);
-    }
-
-    /* 3 is the number of bytes for ATT notification base */
-    mtu = mtu - 3;
-
-    return (mtu);
-}
-
-/**
- * Nmgr ble process mqueue event
- * Gets an event from the nmgr mqueue and does a notify with the response
- *
- * @param eventq
- * @return 0 on success; non-zero on failure
- */
-
-int
-nmgr_ble_proc_mq_evt(struct os_event *ev)
-{
-    struct os_mbuf *m_resp;
-    uint16_t conn_handle;
-    int rc;
-
-    rc = 0;
-    switch (ev->ev_type) {
-        case OS_EVENT_T_MQUEUE_DATA:
-            if (ev->ev_arg != &ble_nmgr_mq) {
-                rc = -1;
-                goto done;
-            }
-
-            while (1) {
-                m_resp = os_mqueue_get(&ble_nmgr_mq);
-                if (!m_resp) {
-                    break;
-                }
-                assert(OS_MBUF_USRHDR_LEN(m_resp) >= sizeof (conn_handle));
-                memcpy(&conn_handle, OS_MBUF_USRHDR(m_resp),
-                       sizeof (conn_handle));
-                ble_gattc_notify_custom(conn_handle, g_ble_nmgr_attr_handle,
-                                        m_resp);
-            }
-            break;
-
-        default:
-            rc = -1;
-            goto done;
-    }
-
-done:
-    return rc;
-}
-
-static int
-nmgr_ble_out(struct nmgr_transport *nt, struct os_mbuf *m)
-{
-    int rc;
-
-    rc = os_mqueue_put(&ble_nmgr_mq, ble_hs_cfg.parent_evq, m);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}
-
-/**
- * Nmgr ble GATT server initialization
- *
- * @param eventq
- * @return 0 on success; non-zero on failure
- */
-int
-nmgr_ble_gatt_svr_init(void)
-{
-    int rc;
-
-    rc = ble_gatts_count_cfg(gatt_svr_svcs);
-    if (rc != 0) {
-        goto err;
-    }
-
-    rc = ble_gatts_add_svcs(gatt_svr_svcs);
-    if (rc != 0) {
-        return rc;
-    }
-
-    os_mqueue_init(&ble_nmgr_mq, &ble_nmgr_mq);
-
-    rc = nmgr_transport_init(&ble_nt, nmgr_ble_out, nmgr_ble_get_mtu);
-
-err:
-    return rc;
-}
-
-void
-newtmgr_ble_pkg_init(void)
-{
-    int rc;
-
-    rc = nmgr_ble_gatt_svr_init();
-    SYSINIT_PANIC_ASSERT(rc == 0);
-}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr_oic/include/newtmgr/newtmgr.h
----------------------------------------------------------------------
diff --git a/libs/newtmgr_oic/include/newtmgr/newtmgr.h b/libs/newtmgr_oic/include/newtmgr/newtmgr.h
deleted file mode 100644
index 32d16e5..0000000
--- a/libs/newtmgr_oic/include/newtmgr/newtmgr.h
+++ /dev/null
@@ -1,120 +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_oic_init(uint8_t, os_stack_t *, uint16_t);
-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/b99324aa/libs/newtmgr_oic/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr_oic/pkg.yml b/libs/newtmgr_oic/pkg.yml
deleted file mode 100644
index d2e4357..0000000
--- a/libs/newtmgr_oic/pkg.yml
+++ /dev/null
@@ -1,40 +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.
-#
-
-pkg.name: libs/newtmgr_oic
-pkg.description: Server-side newtmgr functionality for OIC
-pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
-pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-
-pkg.deps:
-    - kernel/os
-    - net/oic
-    - encoding/json
-    - libs/newtmgr/nmgr_os
-    - libs/util
-    - test/testutil
-    - sys/shell
-    - sys/reboot
-
-pkg.cflags:
-    - -DOC_SERVER
-
-pkg.apis:
-    - newtmgr

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr_oic/src/newtmgr.c
----------------------------------------------------------------------
diff --git a/libs/newtmgr_oic/src/newtmgr.c b/libs/newtmgr_oic/src/newtmgr.c
deleted file mode 100644
index 136545f..0000000
--- a/libs/newtmgr_oic/src/newtmgr.c
+++ /dev/null
@@ -1,500 +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.
- */
-
-#include <os/os.h>
-#include <os/endian.h>
-
-#include <assert.h>
-#include <string.h>
-
-#include <newtmgr/newtmgr.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)
-
-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];
-};
-
-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
-};
-
-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);
-}
-
-int
-nmgr_rsp_extend(struct nmgr_hdr *hdr, struct os_mbuf *rsp, void *data,
-        uint16_t len)
-{
-    int rc;
-
-    rc = os_mbuf_append(rsp, data, len);
-    if (rc != 0) {
-        goto err;
-    }
-    hdr->nh_len += len;
-
-    return (0);
-err:
-    return (rc);
-}
-
-static char
-nmgr_jbuf_read_next(struct json_buffer *jb)
-{
-    struct nmgr_jbuf *njb;
-    char c;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    if (njb->njb_in_off + 1 > njb->njb_in_end) {
-        return '\0';
-    }
-
-    c = njb->njb_in[njb->njb_in_off];
-    ++njb->njb_in_off;
-
-    return (c);
-}
-
-static char
-nmgr_jbuf_read_prev(struct json_buffer *jb)
-{
-    struct nmgr_jbuf *njb;
-    char c;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    if (njb->njb_in_off == 0) {
-        return '\0';
-    }
-
-    --njb->njb_in_off;
-    c = njb->njb_in[njb->njb_in_off];
-
-    return (c);
-}
-
-static int
-nmgr_jbuf_readn(struct json_buffer *jb, char *buf, int size)
-{
-    struct nmgr_jbuf *njb;
-    int read;
-    int left;
-
-    njb = (struct nmgr_jbuf *) jb;
-
-    left = njb->njb_in_end - njb->njb_in_off;
-    read = size > left ? left : size;
-
-    memcpy(buf, njb->njb_in + njb->njb_in_off, read);
-
-    return (read);
-}
-
-static int
-nmgr_jbuf_write(void *arg, char *data, int len)
-{
-    struct nmgr_jbuf *njb;
-    int rc;
-
-    njb = (struct nmgr_jbuf *) arg;
-
-    if (njb->njb_out_off + len >= njb->njb_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';
-
-    return (0);
-err:
-    return (rc);
-}
-
-static void
-nmgr_jbuf_init(struct nmgr_jbuf *njb)
-{
-    memset(njb, 0, sizeof(*njb));
-
-    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;
-}
-
-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;
-}
-
-static void
-nmgr_jbuf_setobuf(struct nmgr_jbuf *njb, char *ptr, uint16_t maxlen)
-{
-    njb->njb_out = ptr;
-    njb->njb_out_off = 0;
-    njb->njb_out_end = maxlen;
-    njb->njb_out[0] = '\0';
-}
-
-int
-nmgr_jbuf_setoerr(struct nmgr_jbuf *njb, int errcode)
-{
-    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);
-}
-
-static struct nmgr_handler *
-nmgr_oic_find_handler(const char *q, int qlen)
-{
-    int grp = -1;
-    int id = -1;
-    char *str;
-    char *eptr;
-    int slen;
-
-    slen = oc_ri_get_query_value(q, qlen, "gr", &str);
-    if (slen > 0) {
-        grp = strtoul(str, &eptr, 0);
-        if (*eptr != '\0' && *eptr != '&') {
-            return NULL;
-        }
-    }
-    slen = oc_ri_get_query_value(q, qlen, "id", &str);
-    if (slen > 0) {
-        id = strtoul(str, &eptr, 0);
-        if (*eptr != '\0' && *eptr != '&') {
-            return NULL;
-        }
-    }
-    return nmgr_find_handler(grp, id);
-}
-
-static void
-nmgr_oic_op(oc_request_t *req, oc_interface_mask_t mask, int isset)
-{
-    struct nmgr_state *ns = &nmgr_state;
-    struct nmgr_handler *handler;
-    oc_rep_t *data;
-    int rc;
-
-    if (!req->query_len) {
-        goto bad_req;
-    }
-
-    handler = nmgr_oic_find_handler(req->query, req->query_len);
-    if (!handler) {
-        goto bad_req;
-    }
-
-    /*
-     * Setup state for JSON encoding.
-     */
-    nmgr_jbuf_setobuf(&ns->ns_jbuf, ns->ns_rsp, sizeof(ns->ns_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),
-          oc_string_len(data->value_string));
-    } else {
-        nmgr_jbuf_setibuf(&ns->ns_jbuf, NULL, 0);
-    }
-
-    if (!isset) {
-        if (handler->nh_read) {
-            rc = handler->nh_read(&ns->ns_jbuf);
-        } else {
-            goto bad_req;
-        }
-    } else {
-        if (handler->nh_write) {
-            rc = handler->nh_write(&ns->ns_jbuf);
-        } else {
-            goto bad_req;
-        }
-    }
-    if (rc) {
-        goto bad_req;
-    }
-
-    oc_rep_start_root_object();
-    switch (mask) {
-    case OC_IF_BASELINE:
-        oc_process_baseline_interface(req->resource);
-    case OC_IF_RW:
-        oc_rep_set_text_string(root, "key", ns->ns_rsp);
-        break;
-    default:
-        break;
-    }
-    oc_rep_end_root_object();
-    oc_send_response(req, OC_STATUS_OK);
-
-    return;
-bad_req:
-    oc_send_response(req, OC_STATUS_BAD_REQUEST);
-}
-
-static void
-nmgr_oic_get(oc_request_t *req, oc_interface_mask_t mask)
-{
-    nmgr_oic_op(req, mask, 0);
-}
-
-static void
-nmgr_oic_put(oc_request_t *req, oc_interface_mask_t mask)
-{
-    nmgr_oic_op(req, mask, 1);
-}
-
-static void
-nmgr_app_init(void)
-{
-    oc_init_platform("MyNewt", NULL, NULL);
-    oc_add_device("/oic/d", "oic.d.light", "MynewtLed", "1.0", "1.0", NULL,
-      NULL);
-}
-
-static void
-nmgr_register_resources(void)
-{
-    uint8_t mode;
-    oc_resource_t *res = NULL;
-    char name[12];
-
-    snprintf(name, sizeof(name), "/nmgr");
-    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_add_resource(res);
-}
-
-static const oc_handler_t nmgr_oc_handler = {
-    .init = nmgr_app_init,
-    .register_resources = nmgr_register_resources
-};
-
-void
-oc_signal_main_loop(void)
-{
-    struct nmgr_state *ns = &nmgr_state;
-
-    os_eventq_put(&ns->ns_evq, &ns->ns_oc_event);
-}
-
-void
-nmgr_oic_task(void *arg)
-{
-    struct nmgr_state *ns = &nmgr_state;
-    struct os_event *ev;
-    struct os_callout_func *ocf;
-    os_time_t next_event;
-
-    nmgr_jbuf_init(&ns->ns_jbuf);
-
-    oc_main_init((oc_handler_t *)&nmgr_oc_handler);
-    while (1) {
-        ev = os_eventq_get(&ns->ns_evq);
-        switch (ev->ev_type) {
-        case NMGR_OC_EVENT:
-        case NMGR_OC_TIMER:
-            next_event = oc_main_poll();
-            if (next_event) {
-                os_callout_reset(&ns->ns_oc_timer, next_event - os_time_get());
-            } else {
-                os_callout_stop(&ns->ns_oc_timer);
-            }
-            break;
-        case OS_EVENT_T_TIMER:
-            ocf = (struct os_callout_func *)ev;
-            ocf->cf_func(CF_ARG(ocf));
-            break;
-        }
-    }
-}
-
-int
-nmgr_oic_init(uint8_t prio, os_stack_t *stack_ptr, uint16_t stack_len)
-{
-    struct nmgr_state *ns = &nmgr_state;
-    int rc;
-
-    os_eventq_init(&ns->ns_evq);
-
-    rc = os_task_init(&ns->ns_task, "newtmgr_oic", nmgr_oic_task, NULL, prio,
-            OS_WAIT_FOREVER, stack_ptr, stack_len);
-    if (rc != 0) {
-        goto err;
-    }
-
-    rc = nmgr_os_groups_register(&ns->ns_evq);
-    if (rc != 0) {
-        goto err;
-    }
-
-    return (0);
-err:
-    return (rc);
-}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/libs/newtmgr_oic/syscfg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr_oic/syscfg.yml b/libs/newtmgr_oic/syscfg.yml
deleted file mode 100644
index 40e300d..0000000
--- a/libs/newtmgr_oic/syscfg.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-# Package: libs/newtmgr_oic
-
-syscfg.defs:
-    ### These should be renamed with a proper prefix.
-    NEWTMGR:
-        description: 'TBD'
-        value: 1
-    OC_SERVER:
-        description: 'TBD'
-        value: 1

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/mgmt/include/mgmt/mgmt.h
----------------------------------------------------------------------
diff --git a/mgmt/mgmt/include/mgmt/mgmt.h b/mgmt/mgmt/include/mgmt/mgmt.h
new file mode 100644
index 0000000..3f4a1f6
--- /dev/null
+++ b/mgmt/mgmt/include/mgmt/mgmt.h
@@ -0,0 +1,63 @@
+/**
+ * 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 _MGMT_MGMT_H_
+#define _MGMT_MGMT_H_
+
+#include <inttypes.h>
+#include <json/json.h>
+
+/* First 64 groups are reserved for system level newtmgr commands.
+ * Per-user commands are then defined after group 64.
+ */
+#define MGMT_GROUP_ID_DEFAULT   (0)
+#define MGMT_GROUP_ID_IMAGE     (1)
+#define MGMT_GROUP_ID_STATS     (2)
+#define MGMT_GROUP_ID_CONFIG    (3)
+#define MGMT_GROUP_ID_LOGS      (4)
+#define MGMT_GROUP_ID_CRASH     (5)
+#define MGMT_GROUP_ID_SPLIT     (6)
+#define MGMT_GROUP_ID_PERUSER   (64)
+
+struct mgmt_jbuf {
+    /* json_buffer must be first element in the structure */
+    struct json_buffer mjb_buf;
+    struct json_encoder mjb_enc;
+    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 *);
+
+struct mgmt_handler {
+    mgmt_handler_func_t nh_read;
+    mgmt_handler_func_t nh_write;
+};
+
+struct mgmt_group {
+    struct mgmt_handler *mg_handlers;
+    uint16_t mg_handlers_count;
+    uint16_t mg_group_id;
+    STAILQ_ENTRY(mgmt_group) mg_next;
+};
+
+#endif /* _MGMT_MGMT_H_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/mgmt/pkg.yml
----------------------------------------------------------------------
diff --git a/mgmt/mgmt/pkg.yml b/mgmt/mgmt/pkg.yml
new file mode 100644
index 0000000..3ceb659
--- /dev/null
+++ b/mgmt/mgmt/pkg.yml
@@ -0,0 +1,30 @@
+#
+# 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.
+#
+
+pkg.name: mgmt/mgmt
+pkg.description: System-wide management interfaces.
+pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
+pkg.homepage: "http://mynewt.apache.org/"
+pkg.keywords:
+
+pkg.deps:
+    - kernel/os
+
+pkg.apis:
+    - newtmgr

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/mgmt/src/mgmt.c
----------------------------------------------------------------------
diff --git a/mgmt/mgmt/src/mgmt.c b/mgmt/mgmt/src/mgmt.c
new file mode 100644
index 0000000..82e698b
--- /dev/null
+++ b/mgmt/mgmt/src/mgmt.c
@@ -0,0 +1,137 @@
+/**
+ * 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.
+ */
+#include <os/os.h>
+
+#include "mgmt/mgmt.h"
+
+static struct os_mutex mgmt_group_lock;
+static STAILQ_HEAD(, mgmt_group) mgmt_group_list =
+    STAILQ_HEAD_INITIALIZER(mgmt_group_list);
+
+static int
+mgmt_group_list_lock(void)
+{
+    int rc;
+
+    if (!os_started()) {
+        return (0);
+    }
+
+    rc = os_mutex_pend(&mgmt_group_lock, OS_WAIT_FOREVER);
+    if (rc != 0) {
+        goto err;
+    }
+
+    return (0);
+err:
+    return (rc);
+}
+
+int
+mgmt_group_list_unlock(void)
+{
+    int rc;
+
+    if (!os_started()) {
+        return (0);
+    }
+
+    rc = os_mutex_release(&mgmt_group_lock);
+    if (rc != 0) {
+        goto err;
+    }
+
+    return (0);
+err:
+    return (rc);
+}
+
+
+int
+mgmt_group_register(struct mgmt_group *group)
+{
+    int rc;
+
+    rc = mgmt_group_list_lock();
+    if (rc != 0) {
+        goto err;
+    }
+
+    STAILQ_INSERT_TAIL(&mgmt_group_list, group, mg_next);
+
+    rc = mgmt_group_list_unlock();
+    if (rc != 0) {
+        goto err;
+    }
+
+    return (0);
+err:
+    return (rc);
+}
+
+static struct mgmt_group *
+mgmt_find_group(uint16_t group_id)
+{
+    struct mgmt_group *group;
+    int rc;
+
+    group = NULL;
+
+    rc = mgmt_group_list_lock();
+    if (rc != 0) {
+        goto err;
+    }
+
+    STAILQ_FOREACH(group, &mgmt_group_list, mg_next) {
+        if (group->mg_group_id == group_id) {
+            break;
+        }
+    }
+
+    rc = mgmt_group_list_unlock();
+    if (rc != 0) {
+        goto err;
+    }
+
+    return (group);
+err:
+    return (NULL);
+}
+
+struct mgmt_handler *
+mgmt_find_handler(uint16_t group_id, uint16_t handler_id)
+{
+    struct mgmt_group *group;
+    struct mgmt_handler *handler;
+
+    group = mgmt_find_group(group_id);
+    if (!group) {
+        goto err;
+    }
+
+    if (handler_id >= group->mg_handlers_count) {
+        goto err;
+    }
+
+    handler = &group->mg_handlers[handler_id];
+
+    return (handler);
+err:
+    return (NULL);
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/mgmt/syscfg.yml
----------------------------------------------------------------------
diff --git a/mgmt/mgmt/syscfg.yml b/mgmt/mgmt/syscfg.yml
new file mode 100644
index 0000000..30ccc02
--- /dev/null
+++ b/mgmt/mgmt/syscfg.yml
@@ -0,0 +1,18 @@
+#
+# 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.
+#

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/newtmgr/include/newtmgr/newtmgr.h
----------------------------------------------------------------------
diff --git a/mgmt/newtmgr/include/newtmgr/newtmgr.h b/mgmt/newtmgr/include/newtmgr/newtmgr.h
new file mode 100644
index 0000000..7b4f35f
--- /dev/null
+++ b/mgmt/newtmgr/include/newtmgr/newtmgr.h
@@ -0,0 +1,137 @@
+/**
+ * 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)
+
+#define NMGR_F_JSON_RSP_COMPLETE     (0x0001)
+
+/**
+ * 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;
+    struct os_mbuf *njb_in_m;
+    struct os_mbuf *njb_out_m;
+    struct nmgr_hdr *njb_hdr;
+    uint16_t njb_off;
+    uint16_t njb_end;
+};
+void 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)); 
+
+struct nmgr_transport;
+typedef int (*nmgr_transport_out_func_t)(struct nmgr_transport *nt, 
+        struct os_mbuf *m);
+typedef uint16_t (*nmgr_transport_get_mtu_func_t)(struct os_mbuf *m);
+
+struct nmgr_transport {
+    struct os_mqueue nt_imq;
+    nmgr_transport_out_func_t nt_output;
+    nmgr_transport_get_mtu_func_t nt_get_mtu;
+};
+
+
+int nmgr_task_init(void);
+int nmgr_transport_init(struct nmgr_transport *nt,
+        nmgr_transport_out_func_t output_func,
+        nmgr_transport_get_mtu_func_t get_mtu_func);
+int nmgr_rx_req(struct nmgr_transport *nt, struct os_mbuf *req);
+int nmgr_rsp_extend(struct nmgr_hdr *, struct os_mbuf *, void *data, uint16_t);
+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/b99324aa/mgmt/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
----------------------------------------------------------------------
diff --git a/mgmt/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h b/mgmt/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
new file mode 100644
index 0000000..5da2f6d
--- /dev/null
+++ b/mgmt/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
@@ -0,0 +1,44 @@
+/**
+ * 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 _NMGR_OS_H_
+#define _NMGR_OS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Id's for OS group commands
+ */
+#define NMGR_ID_ECHO            0
+#define NMGR_ID_CONS_ECHO_CTRL  1
+#define NMGR_ID_TASKSTATS       2
+#define NMGR_ID_MPSTATS         3
+#define NMGR_ID_DATETIME_STR    4
+#define NMGR_ID_RESET           5
+
+struct os_eventq;
+int nmgr_os_groups_register(struct os_eventq *nmgr_evq);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NMGR_OS_H_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/b99324aa/mgmt/newtmgr/nmgr_os/pkg.yml
----------------------------------------------------------------------
diff --git a/mgmt/newtmgr/nmgr_os/pkg.yml b/mgmt/newtmgr/nmgr_os/pkg.yml
new file mode 100644
index 0000000..fbed196
--- /dev/null
+++ b/mgmt/newtmgr/nmgr_os/pkg.yml
@@ -0,0 +1,34 @@
+#
+# 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.
+#
+
+pkg.name: mgmt/newtmgr/nmgr_os
+pkg.description: Default newtmgr command.
+pkg.author: "Apache Mynewt <de...@mynewt.incubator.apache.org>"
+pkg.homepage: "http://mynewt.apache.org/"
+pkg.keywords:
+
+pkg.deps:
+    - hw/hal
+    - kernel/os
+    - encoding/json
+    - libs/util
+    - sys/reboot
+
+pkg.req_apis:
+    - newtmgr