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