Mbed Cloud example program for workshop in W27 2018.

Dependencies:   MMA7660 LM75B

Committer:
MACRUM
Date:
Sat Jun 30 01:40:30 2018 +0000
Revision:
0:119624335925
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:119624335925 1 #include "mbed.h"
MACRUM 0:119624335925 2 #include "mbed_cloud_client_resource.h"
MACRUM 0:119624335925 3 #include "simple-mbed-cloud-client.h"
MACRUM 0:119624335925 4
MACRUM 0:119624335925 5 void path_to_ids(const char* path, unsigned int *object_id,
MACRUM 0:119624335925 6 unsigned int *instance_id, unsigned int *resource_id) {
MACRUM 0:119624335925 7 int len = strlen(path);
MACRUM 0:119624335925 8 char *buffer = new char[len + 1];
MACRUM 0:119624335925 9 buffer[len] = '\0';
MACRUM 0:119624335925 10 strncpy(buffer, path, len);
MACRUM 0:119624335925 11 unsigned int index = 0;
MACRUM 0:119624335925 12 char * pch = strtok (buffer, "/");
MACRUM 0:119624335925 13
MACRUM 0:119624335925 14 unsigned int *ptr;
MACRUM 0:119624335925 15 while (pch != NULL && index < 3) {
MACRUM 0:119624335925 16 switch (index) {
MACRUM 0:119624335925 17 case 0:
MACRUM 0:119624335925 18 ptr = object_id;
MACRUM 0:119624335925 19 break;
MACRUM 0:119624335925 20
MACRUM 0:119624335925 21 case 1:
MACRUM 0:119624335925 22 ptr = instance_id;
MACRUM 0:119624335925 23 break;
MACRUM 0:119624335925 24
MACRUM 0:119624335925 25 case 2:
MACRUM 0:119624335925 26 ptr = resource_id;
MACRUM 0:119624335925 27 break;
MACRUM 0:119624335925 28 }
MACRUM 0:119624335925 29
MACRUM 0:119624335925 30 *ptr = atoi(pch);
MACRUM 0:119624335925 31 pch = strtok (NULL, "/");
MACRUM 0:119624335925 32 index++;
MACRUM 0:119624335925 33 }
MACRUM 0:119624335925 34
MACRUM 0:119624335925 35 delete[] buffer;
MACRUM 0:119624335925 36 }
MACRUM 0:119624335925 37
MACRUM 0:119624335925 38 MbedCloudClientResource::MbedCloudClientResource(SimpleMbedCloudClient *client, const char *path, const char *name)
MACRUM 0:119624335925 39 : client(client), resource(NULL), path(path), name(name), putCallback(NULL),
MACRUM 0:119624335925 40 postCallback(NULL), notificationCallback(NULL) {
MACRUM 0:119624335925 41 }
MACRUM 0:119624335925 42
MACRUM 0:119624335925 43 void MbedCloudClientResource::observable(bool observable) {
MACRUM 0:119624335925 44 this->isObservable = observable;
MACRUM 0:119624335925 45 }
MACRUM 0:119624335925 46
MACRUM 0:119624335925 47 void MbedCloudClientResource::methods(unsigned int methodMask) {
MACRUM 0:119624335925 48 this->methodMask = methodMask;
MACRUM 0:119624335925 49 }
MACRUM 0:119624335925 50
MACRUM 0:119624335925 51 void MbedCloudClientResource::attach_put_callback(Callback<void(const char*)> callback) {
MACRUM 0:119624335925 52 this->putCallback = callback;
MACRUM 0:119624335925 53 }
MACRUM 0:119624335925 54
MACRUM 0:119624335925 55 void MbedCloudClientResource::attach_post_callback(Callback<void(void*)> callback) {
MACRUM 0:119624335925 56 this->postCallback = callback;
MACRUM 0:119624335925 57 }
MACRUM 0:119624335925 58
MACRUM 0:119624335925 59 void MbedCloudClientResource::attach_notification_callback(Callback<void(const M2MBase&, const NoticationDeliveryStatus)> callback) {
MACRUM 0:119624335925 60 this->notificationCallback = callback;
MACRUM 0:119624335925 61 }
MACRUM 0:119624335925 62
MACRUM 0:119624335925 63 void MbedCloudClientResource::detach_put_callback() {
MACRUM 0:119624335925 64 this->putCallback = NULL;
MACRUM 0:119624335925 65 }
MACRUM 0:119624335925 66
MACRUM 0:119624335925 67 void MbedCloudClientResource::detach_post_callback() {
MACRUM 0:119624335925 68 this->postCallback = NULL;
MACRUM 0:119624335925 69 }
MACRUM 0:119624335925 70
MACRUM 0:119624335925 71 void MbedCloudClientResource::detach_notification_callback() {
MACRUM 0:119624335925 72 this->notificationCallback = NULL;
MACRUM 0:119624335925 73 }
MACRUM 0:119624335925 74
MACRUM 0:119624335925 75 void MbedCloudClientResource::set_value(int value) {
MACRUM 0:119624335925 76 this->value = "";
MACRUM 0:119624335925 77 this->value.append_int(value);
MACRUM 0:119624335925 78
MACRUM 0:119624335925 79 if (this->resource) {
MACRUM 0:119624335925 80 this->resource->set_value((uint8_t*)this->value.c_str(), this->value.size());
MACRUM 0:119624335925 81 }
MACRUM 0:119624335925 82 }
MACRUM 0:119624335925 83
MACRUM 0:119624335925 84 void MbedCloudClientResource::set_value(char *value) {
MACRUM 0:119624335925 85 this->value = value;
MACRUM 0:119624335925 86
MACRUM 0:119624335925 87 if (this->resource) {
MACRUM 0:119624335925 88 this->resource->set_value((uint8_t*)this->value.c_str(), strlen(value));
MACRUM 0:119624335925 89 }
MACRUM 0:119624335925 90 }
MACRUM 0:119624335925 91
MACRUM 0:119624335925 92 String MbedCloudClientResource::get_value() {
MACRUM 0:119624335925 93 if (this->resource) {
MACRUM 0:119624335925 94 return this->resource->get_value_string();
MACRUM 0:119624335925 95 } else {
MACRUM 0:119624335925 96 return this->value;
MACRUM 0:119624335925 97 }
MACRUM 0:119624335925 98 }
MACRUM 0:119624335925 99
MACRUM 0:119624335925 100 void MbedCloudClientResource::get_data(mcc_resource_def *resourceDef) {
MACRUM 0:119624335925 101 path_to_ids(this->path.c_str(), &(resourceDef->object_id), &(resourceDef->instance_id), &(resourceDef->resource_id));
MACRUM 0:119624335925 102 resourceDef->name = this->name;
MACRUM 0:119624335925 103 resourceDef->method_mask = this->methodMask;
MACRUM 0:119624335925 104 resourceDef->observable = this->isObservable;
MACRUM 0:119624335925 105 resourceDef->value = this->get_value();
MACRUM 0:119624335925 106 resourceDef->put_callback = &(this->putCallback);
MACRUM 0:119624335925 107 resourceDef->post_callback = &(this->postCallback);
MACRUM 0:119624335925 108 resourceDef->notification_callback = &(this->notificationCallback);
MACRUM 0:119624335925 109 }
MACRUM 0:119624335925 110
MACRUM 0:119624335925 111 void MbedCloudClientResource::set_resource(M2MResource *res) {
MACRUM 0:119624335925 112 this->resource = res;
MACRUM 0:119624335925 113 }