You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by vi...@apache.org on 2016/10/10 19:26:18 UTC

[02/50] [abbrv] incubator-mynewt-core git commit: newtmgr/os is not a good name, newtmgr/nmgr_os is slightly better.

newtmgr/os is not a good name, newtmgr/nmgr_os is slightly better.


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

Branch: refs/heads/sterly_refactor
Commit: 5e925850fb477d3a6f2f11475b9b5f41cbdca7ea
Parents: 895d567
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Mon Sep 19 14:46:50 2016 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Mon Sep 19 14:46:50 2016 -0700

----------------------------------------------------------------------
 libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h |  35 +++
 libs/newtmgr/nmgr_os/pkg.yml                   |  36 +++
 libs/newtmgr/nmgr_os/src/newtmgr_os.c          | 329 ++++++++++++++++++++
 libs/newtmgr/os/include/nmgr_os/nmgr_os.h      |  35 ---
 libs/newtmgr/os/pkg.yml                        |  36 ---
 libs/newtmgr/os/src/newtmgr_os.c               | 329 --------------------
 libs/newtmgr/pkg.yml                           |   2 +-
 7 files changed, 401 insertions(+), 401 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/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
new file mode 100644
index 0000000..49b6725
--- /dev/null
+++ b/libs/newtmgr/nmgr_os/include/nmgr_os/nmgr_os.h
@@ -0,0 +1,35 @@
+/**
+ * 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_
+
+/*
+ * 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
+
+int nmgr_os_groups_register(void);
+
+#endif /* _NMGR_OS_H_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/libs/newtmgr/nmgr_os/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/nmgr_os/pkg.yml b/libs/newtmgr/nmgr_os/pkg.yml
new file mode 100644
index 0000000..d6610b2
--- /dev/null
+++ b/libs/newtmgr/nmgr_os/pkg.yml
@@ -0,0 +1,36 @@
+#
+# 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
+    - libs/os
+    - libs/json
+    - libs/util
+    - libs/testutil
+    - libs/newtmgr
+    - sys/reboot
+
+pkg.reqs:
+    - console

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/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
new file mode 100644
index 0000000..cab692b
--- /dev/null
+++ b/libs/newtmgr/nmgr_os/src/newtmgr_os.c
@@ -0,0 +1,329 @@
+/**
+ * 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 <newtmgr/newtmgr_priv.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)
+{
+    if (nmgr_reset_callout.cf_func == NULL) {
+        os_callout_func_init(&nmgr_reset_callout, &g_nmgr_evq,
+          nmgr_reset_tmo, NULL);
+    }
+    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(void)
+{
+    return nmgr_group_register(&nmgr_def_group);
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/libs/newtmgr/os/include/nmgr_os/nmgr_os.h
----------------------------------------------------------------------
diff --git a/libs/newtmgr/os/include/nmgr_os/nmgr_os.h b/libs/newtmgr/os/include/nmgr_os/nmgr_os.h
deleted file mode 100644
index 49b6725..0000000
--- a/libs/newtmgr/os/include/nmgr_os/nmgr_os.h
+++ /dev/null
@@ -1,35 +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_
-
-/*
- * 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
-
-int nmgr_os_groups_register(void);
-
-#endif /* _NMGR_OS_H_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/libs/newtmgr/os/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/os/pkg.yml b/libs/newtmgr/os/pkg.yml
deleted file mode 100644
index 4260849..0000000
--- a/libs/newtmgr/os/pkg.yml
+++ /dev/null
@@ -1,36 +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/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
-    - libs/os
-    - libs/json
-    - libs/util
-    - libs/testutil
-    - libs/newtmgr
-    - sys/reboot
-
-pkg.reqs:
-    - console

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/libs/newtmgr/os/src/newtmgr_os.c
----------------------------------------------------------------------
diff --git a/libs/newtmgr/os/src/newtmgr_os.c b/libs/newtmgr/os/src/newtmgr_os.c
deleted file mode 100644
index cab692b..0000000
--- a/libs/newtmgr/os/src/newtmgr_os.c
+++ /dev/null
@@ -1,329 +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 <newtmgr/newtmgr_priv.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)
-{
-    if (nmgr_reset_callout.cf_func == NULL) {
-        os_callout_func_init(&nmgr_reset_callout, &g_nmgr_evq,
-          nmgr_reset_tmo, NULL);
-    }
-    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(void)
-{
-    return nmgr_group_register(&nmgr_def_group);
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/5e925850/libs/newtmgr/pkg.yml
----------------------------------------------------------------------
diff --git a/libs/newtmgr/pkg.yml b/libs/newtmgr/pkg.yml
index 40301b7..b5643e3 100644
--- a/libs/newtmgr/pkg.yml
+++ b/libs/newtmgr/pkg.yml
@@ -27,7 +27,7 @@ pkg.deps:
     - hw/hal
     - libs/os
     - libs/json
-    - libs/newtmgr/os
+    - libs/newtmgr/nmgr_os
     - libs/util
     - libs/testutil
     - libs/shell