You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by st...@apache.org on 2016/12/18 21:57:01 UTC

[33/50] incubator-mynewt-core git commit: ocf_sample; use cbor_read_flat_attrs() to read in payload from put light request.

ocf_sample; use cbor_read_flat_attrs() to read in payload from
put light request.


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

Branch: refs/heads/sensors_branch
Commit: 0a07efd4882bd50dd1cd892d1324286cc7c9451c
Parents: 9cafdcd
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Tue Dec 13 10:08:45 2016 -0800
Committer: Sterling Hughes <st...@apache.org>
Committed: Sun Dec 18 13:56:16 2016 -0800

----------------------------------------------------------------------
 apps/ocf_sample/pkg.yml    |  1 +
 apps/ocf_sample/src/main.c | 54 +++++++++++++++++++++++------------------
 2 files changed, 31 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0a07efd4/apps/ocf_sample/pkg.yml
----------------------------------------------------------------------
diff --git a/apps/ocf_sample/pkg.yml b/apps/ocf_sample/pkg.yml
index c18f2eb..7cf3510 100644
--- a/apps/ocf_sample/pkg.yml
+++ b/apps/ocf_sample/pkg.yml
@@ -28,6 +28,7 @@ pkg.deps:
     - kernel/os
     - sys/log
     - net/oic
+    - encoding/cborattr
     - sys/console/full
 
 pkg.deps.OC_TRANSPORT_SERIAL:

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0a07efd4/apps/ocf_sample/src/main.c
----------------------------------------------------------------------
diff --git a/apps/ocf_sample/src/main.c b/apps/ocf_sample/src/main.c
index bd6d7e1..a68c5ff 100644
--- a/apps/ocf_sample/src/main.c
+++ b/apps/ocf_sample/src/main.c
@@ -23,6 +23,7 @@
 #include <bsp/bsp.h>
 #include <log/log.h>
 #include <oic/oc_api.h>
+#include <cborattr/cborattr.h>
 #if (MYNEWT_VAL(OC_TRANSPORT_SERIAL) == 1)
 #include <console/console.h>
 #include <console/prompt.h>
@@ -54,13 +55,13 @@ get_light(oc_request_t *request, oc_interface_mask_t interface)
     printf("GET_light:\n");
     oc_rep_start_root_object();
     switch (interface) {
-        case OC_IF_BASELINE:
-            oc_process_baseline_interface(request->resource);
-        case OC_IF_RW:
-            oc_rep_set_boolean(root, state, light_state);
-            break;
-        default:
-            break;
+    case OC_IF_BASELINE:
+        oc_process_baseline_interface(request->resource);
+    case OC_IF_RW:
+        oc_rep_set_boolean(root, state, light_state);
+        break;
+    default:
+        break;
     }
     oc_rep_end_root_object();
     oc_send_response(request, OC_STATUS_OK);
@@ -70,25 +71,30 @@ get_light(oc_request_t *request, oc_interface_mask_t interface)
 static void
 put_light(oc_request_t *request, oc_interface_mask_t interface)
 {
-    printf("PUT_light:\n");
-    bool state = false;
-    oc_rep_t *rep = request->request_payload;
-    while (rep != NULL) {
-        printf("key: %s ", oc_string(rep->name));
-        switch (rep->type) {
-            case BOOL:
-                state = rep->value_boolean;
-                printf("value: %d\n", state);
-                break;
-            default:
-                oc_send_response(request, OC_STATUS_BAD_REQUEST);
-                return;
-                break;
+    bool state;
+    int len;
+    const uint8_t *data;
+    struct cbor_attr_t attrs[] = {
+        [0] = {
+            .attribute = "state",
+            .type = CborAttrBooleanType,
+            .addr.boolean = &state,
+            .dflt.boolean = false
+        },
+        [1] = {
         }
-        rep = rep->next;
+    };
+
+    printf("PUT_light:\n");
+
+    len = coap_get_payload(request->packet, &data);
+    if (cbor_read_flat_attrs(data, len, attrs)) {
+        oc_send_response(request, OC_STATUS_BAD_REQUEST);
+    } else {
+        printf("value: %d\n", state);
+        light_state = state;
+        oc_send_response(request, OC_STATUS_CHANGED);
     }
-    oc_send_response(request, OC_STATUS_CHANGED);
-    light_state = state;
 }
 
 static void