Sample program showing how to connect GR-PEACH into Watson IoT through mbed Connector and Watson's Connector Bridge

Dependencies:   AsciiFont DisplayApp GR-PEACH_video LCD_shield_config LWIPBP3595Interface_STA_for_mbed-os USBDevice

Overview

This sample program shows how to connect GR-PEACH into Watson IoT through mbed Connector and Watson's Connector Bridge. Note that this program is derived from https://github.com/ARMmbed/mbed-ethernet-sample-techcon2016.

In this program, at first, the barcode data input from camera is decoded on GR-PEACH using ZXing which is an open-source, multi-format 1D/2D barcode image processing library. Then, the decoded string is sent to Watson IoT via mbed Device Connector and Watson's Connector Bridge. At last, the delivered string is confirmed via NodeRED flow.

Required hardware

Application setup

  1. Select the connection type. For details, please refer to the following wiki:
    https://developer.mbed.org/teams/Renesas/code/mbed-os_Watson-IoT_ZXing_sample/wiki/Connection-type.
  2. Set the client credentials. For details, please refer to the following wiki:
    https://developer.mbed.org/teams/Renesas/code/mbed-os_Watson-IoT_ZXing_sample/wiki/Client-credentials.
  3. Change Ethernet settings. For details, please refer to the following wiki:
    https://developer.mbed.org/teams/Renesas/code/mbed-os_Watson-IoT_ZXing_sample/wiki/Ethernet-settings.
  4. Change Wifi settings. For details, please refer to the following wiki:
    https://developer.mbed.org/teams/Renesas/code/mbed-os_Watson-IoT_ZXing_sample/wiki/Wifi-settings.

Building this sample program

  1. Import this sample program onto mbed Compiler.
  2. Configure this sample program in accordance with Application setup.
  3. Compile the example on mbed Compiler and download the resultant binary file.
  4. Plug the Ethernet cable into GR-PEACH if you are using Ethernet mode. /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen7.png
  5. Plug the micro-USB cable into the OpenSDA port with lies on the next to the RESET button.
  6. Copy the binary previously downloaded to your PC to GR-PEACH to flash this sample program. When the copy is successfully completed, the board is ready to work.
  7. Press the RESET button on the board to run this sample program.
  8. For verification, please refer to the following wiki:
    https://developer.mbed.org/teams/Renesas/code/mbed-os_Watson-IoT_ZXing_sample/wiki/Monitoring-the-application.

Application resources

This sample program exposes two resources listed below:

  1. /311/0/5850 : Trigger to toggle LED on GR-PEACH (PUT). When "1" is sent to this resource by PUT method, LED should be turned off. Otherwise, LED should be turned on.
  2. /888/0/7700: Decode result of barcode data input from camera (GET)

Setup of Watson IoT

  1. You should create Watson IoT Instance by the following procedure:
    • Login IBM Bluemix from https://console.ng.bluemix.net/ and login it.
    • Select Services as follows: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen6.png
    • Select Internet of Things" as follows: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen7_1.png
    • Press Get Started as follows: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen8.png
    • Configure Watson IoT Instance
      • Leave unbound /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen9.png
      • Select the Free plan, then click Create /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen10.png

  2. You should create Watson IoT Application Credentials Once you successfully create Watson IoT Instance, you should see the following Watson IoT dashboard: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen11.png
    • On dashboard, launch the Connect your devices dashboard /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen12.png
    • Click APPS /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen13.png
    • Click Generate API Key /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen14_1.png
    • Record the API Key and Authenticatoin Token. Then click Generate after adding a comment /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen15.png Note that these two values will be needed in the later step.
  3. Watson IoT NodeRED Application should be created in accordance with the following procedure:
    • Go back to your Bluemix Dashboard: https://console.ng.bluemix.net
    • Click Create Application /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen16.png
    • Select Node-RED Starter /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen17.png
    • Enter a unique App name and Click Create /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen18.png
    • Application will Stage after a few minutes
    • Application will report app is running when the staging has completed
  4. Watson NodeRED Application should be binded to Watson IoT instance
    • You can now see the dashboard below: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen19.png
    • Click Connections. Then, press Connect Existing /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen20.png
    • Click on Watson IoT Instance badge. Then, press Connect /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen21.png
    • NodeRED application will restage. This will take a while. Please wait for Your app is running state /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen22.png /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen23.png
  5. You should acquire mbed Device Connector DOMAIN value
    • Go to the mbed Device Connector Dashboard: https://connector.mbed.com and log in /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen41.png
    • Select Access Key in order to create a new token /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen42.png
    • Click CREATE NEW ACCESS KEY and enter a unique name. Then, push ADD bution /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen43.png
    • an API token is generated. Need to save the generated string for later steps /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen44.png
  1. You should configure Watson IoT ARM mbed Connector Bridge
    • Go back to the Watson IoT Dashboard and select Extensions /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen24.png
    • Press Add Extension /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen25.png
    • Add ARM mbed Connector /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen26_1.png
    • Setup the bridge /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen27.png
    • Enter your Connector API Token to Access Key and MBED_DOMAIN to Domain Id, respectively. Then, click Check Connection /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen28.png
    • If the connection is successfully established, you can see Connection Established. Then, press Done /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen29.png
  2. NodeRED Flow Example should be imported
    • Open NODEFLOW_GR-PEACH.txt
    • Navigate to the URL that you recorded earlier for your Watson IoT NodeRED Application (i.e. http://<app name>.mybluemix.net) and Select Go to your NodeRED flow editor /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen30.png
    • Select menu, Import and Clipboard /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen31.png
    • Paste the entire contents of JSON code described in NODEFLOW_GR-PEACH.txt and click Import /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen32.png
  3. Watson IoT Application Node Flow should be configured
    • Double-click input node and link them to your Watson IoT instance. /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen33.png
    • Click on the edit button /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen34.png
    • First enter arbitrary name. Then, Watson API Key and Watson Auth Token previously acquired. Finally, press Add to save /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen35.png
    • Enter MBED_ENDPOINT_NAME in security.h as Device ID. Then, press Done to save /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen36.png
    • Double-click output node /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen37.png
    • Edit API Key and Device Id in the same manner as that for input node
    • Click LED OFF and LED ON node and replace MBED_ENDPOINT_NAME_GOES_HERE with MBED_ENDPOINT_NAME as shown below: /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen38.png
    • Click Deproy to deploy NodeRED application /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen39.png
  4. Invoke sample program
    • Press the reset button on GR-PEACH
    • The decode result of barcode data should be shown in debug window /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen40_1.png
    • Also, you can toggle LED by clicking Turn LED OFF and Turn LED ON injection node /media/uploads/HinoNaka/mbed-os_watson-iot_zxing_sample_screen40_2.png
Committer:
Osamu Nakamura
Date:
Thu Nov 24 13:59:16 2016 +0900
Revision:
0:ad834d403a8c
Initial Commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osamu Nakamura 0:ad834d403a8c 1 /**
Osamu Nakamura 0:ad834d403a8c 2 * @file DynamicResource.h
Osamu Nakamura 0:ad834d403a8c 3 * @brief mbed CoAP Endpoint Dynamic Resource class
Osamu Nakamura 0:ad834d403a8c 4 * @author Doug Anson/Chris Paola
Osamu Nakamura 0:ad834d403a8c 5 * @version 1.0
Osamu Nakamura 0:ad834d403a8c 6 * @see
Osamu Nakamura 0:ad834d403a8c 7 *
Osamu Nakamura 0:ad834d403a8c 8 * Copyright (c) 2014
Osamu Nakamura 0:ad834d403a8c 9 *
Osamu Nakamura 0:ad834d403a8c 10 * Licensed under the Apache License, Version 2.0 (the "License");
Osamu Nakamura 0:ad834d403a8c 11 * you may not use this file except in compliance with the License.
Osamu Nakamura 0:ad834d403a8c 12 * You may obtain a copy of the License at
Osamu Nakamura 0:ad834d403a8c 13 *
Osamu Nakamura 0:ad834d403a8c 14 * http://www.apache.org/licenses/LICENSE-2.0
Osamu Nakamura 0:ad834d403a8c 15 *
Osamu Nakamura 0:ad834d403a8c 16 * Unless required by applicable law or agreed to in writing, software
Osamu Nakamura 0:ad834d403a8c 17 * distributed under the License is distributed on an "AS IS" BASIS,
Osamu Nakamura 0:ad834d403a8c 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Osamu Nakamura 0:ad834d403a8c 19 * See the License for the specific language governing permissions and
Osamu Nakamura 0:ad834d403a8c 20 * limitations under the License.
Osamu Nakamura 0:ad834d403a8c 21 */
Osamu Nakamura 0:ad834d403a8c 22
Osamu Nakamura 0:ad834d403a8c 23 #ifndef __DYNAMIC_RESOURCE_H__
Osamu Nakamura 0:ad834d403a8c 24 #define __DYNAMIC_RESOURCE_H__
Osamu Nakamura 0:ad834d403a8c 25
Osamu Nakamura 0:ad834d403a8c 26 // Base Class
Osamu Nakamura 0:ad834d403a8c 27 #include "mbed-connector-interface/Resource.h"
Osamu Nakamura 0:ad834d403a8c 28
Osamu Nakamura 0:ad834d403a8c 29 // DataWrapper support
Osamu Nakamura 0:ad834d403a8c 30 #include "mbed-connector-interface/DataWrapper.h"
Osamu Nakamura 0:ad834d403a8c 31
Osamu Nakamura 0:ad834d403a8c 32 /** DynamicResource class
Osamu Nakamura 0:ad834d403a8c 33 */
Osamu Nakamura 0:ad834d403a8c 34 class DynamicResource : public Resource<string>
Osamu Nakamura 0:ad834d403a8c 35 {
Osamu Nakamura 0:ad834d403a8c 36 public:
Osamu Nakamura 0:ad834d403a8c 37 /**
Osamu Nakamura 0:ad834d403a8c 38 Default constructor (char strings)
Osamu Nakamura 0:ad834d403a8c 39 @param logger input logger instance for this resource
Osamu Nakamura 0:ad834d403a8c 40 @param obj_name input the Object
Osamu Nakamura 0:ad834d403a8c 41 @param name input the Resource URI/Name
Osamu Nakamura 0:ad834d403a8c 42 @param res_type input type for the Resource
Osamu Nakamura 0:ad834d403a8c 43 @param res_mask input the resource enablement mask (GET, PUT, etc...)
Osamu Nakamura 0:ad834d403a8c 44 @param observable input the resource is Observable (default: FALSE)
Osamu Nakamura 0:ad834d403a8c 45 */
Osamu Nakamura 0:ad834d403a8c 46 DynamicResource(const Logger *logger,const char *obj_name,const char *res_name,const char *res_type,uint8_t res_mask,const bool observable = false,const ResourceType type = STRING);
Osamu Nakamura 0:ad834d403a8c 47
Osamu Nakamura 0:ad834d403a8c 48 /**
Osamu Nakamura 0:ad834d403a8c 49 Default constructor (char strings)
Osamu Nakamura 0:ad834d403a8c 50 @param logger input logger instance for this resource
Osamu Nakamura 0:ad834d403a8c 51 @param obj_name input the Object
Osamu Nakamura 0:ad834d403a8c 52 @param name input the Resource URI/Name
Osamu Nakamura 0:ad834d403a8c 53 @param res_type input type for the Resource
Osamu Nakamura 0:ad834d403a8c 54 @param value input initial value for the Resource
Osamu Nakamura 0:ad834d403a8c 55 @param res_mask input the resource enablement mask (GET, PUT, etc...)
Osamu Nakamura 0:ad834d403a8c 56 @param observable input the resource is Observable (default: FALSE)
Osamu Nakamura 0:ad834d403a8c 57 */
Osamu Nakamura 0:ad834d403a8c 58 DynamicResource(const Logger *logger,const char *obj_name,const char *res_name,const char *res_type,const string value,uint8_t res_mask,const bool observable = false,const ResourceType type = STRING);
Osamu Nakamura 0:ad834d403a8c 59
Osamu Nakamura 0:ad834d403a8c 60 /**
Osamu Nakamura 0:ad834d403a8c 61 constructor with string buffer for name
Osamu Nakamura 0:ad834d403a8c 62 @param logger input logger instance for this resource
Osamu Nakamura 0:ad834d403a8c 63 @param obj_name input the Object
Osamu Nakamura 0:ad834d403a8c 64 @param name input the Resource URI/Name
Osamu Nakamura 0:ad834d403a8c 65 @param res_type input type for the Resource
Osamu Nakamura 0:ad834d403a8c 66 @param value input initial value for the Resource
Osamu Nakamura 0:ad834d403a8c 67 @param res_mask input the resource enablement mask (GET, PUT, etc...)
Osamu Nakamura 0:ad834d403a8c 68 @param observable input the resource is Observable (default: FALSE)
Osamu Nakamura 0:ad834d403a8c 69 */
Osamu Nakamura 0:ad834d403a8c 70 DynamicResource(const Logger *logger,const string obj_name,const string res_name,const string res_type,const string value,uint8_t res_mask,const bool observable = false,const ResourceType type = STRING);
Osamu Nakamura 0:ad834d403a8c 71
Osamu Nakamura 0:ad834d403a8c 72 /**
Osamu Nakamura 0:ad834d403a8c 73 Copy constructor
Osamu Nakamura 0:ad834d403a8c 74 @param resource input the DynamicResource that is to be deep copied
Osamu Nakamura 0:ad834d403a8c 75 */
Osamu Nakamura 0:ad834d403a8c 76 DynamicResource(const DynamicResource &resource);
Osamu Nakamura 0:ad834d403a8c 77
Osamu Nakamura 0:ad834d403a8c 78 /**
Osamu Nakamura 0:ad834d403a8c 79 Destructor
Osamu Nakamura 0:ad834d403a8c 80 */
Osamu Nakamura 0:ad834d403a8c 81 virtual ~DynamicResource();
Osamu Nakamura 0:ad834d403a8c 82
Osamu Nakamura 0:ad834d403a8c 83 /**
Osamu Nakamura 0:ad834d403a8c 84 Bind resource to endpoint
Osamu Nakamura 0:ad834d403a8c 85 @param ep input endpoint instance pointer
Osamu Nakamura 0:ad834d403a8c 86 */
Osamu Nakamura 0:ad834d403a8c 87 virtual void bind(void *ep);
Osamu Nakamura 0:ad834d403a8c 88
Osamu Nakamura 0:ad834d403a8c 89 /**
Osamu Nakamura 0:ad834d403a8c 90 Process the CoAP message
Osamu Nakamura 0:ad834d403a8c 91 @param op input the CoAP Verb (operation)
Osamu Nakamura 0:ad834d403a8c 92 @param type input clarification of the M2MBase instance being passed in (Object vs. ObjectInstance vs. Resource vs. ResourceInstance)
Osamu Nakamura 0:ad834d403a8c 93 @param args input arguments (unused)
Osamu Nakamura 0:ad834d403a8c 94 @return 0 - success, 1 - failure
Osamu Nakamura 0:ad834d403a8c 95 */
Osamu Nakamura 0:ad834d403a8c 96 uint8_t process(M2MBase::Operation op,M2MBase::BaseType type,void *args = NULL);
Osamu Nakamura 0:ad834d403a8c 97
Osamu Nakamura 0:ad834d403a8c 98 /**
Osamu Nakamura 0:ad834d403a8c 99 Resource value getter (REQUIRED: must be implemented in derived class as all Binders MUST support and implement GET)
Osamu Nakamura 0:ad834d403a8c 100 @returns string value of the resource
Osamu Nakamura 0:ad834d403a8c 101 */
Osamu Nakamura 0:ad834d403a8c 102 virtual string get();
Osamu Nakamura 0:ad834d403a8c 103
Osamu Nakamura 0:ad834d403a8c 104 /**
Osamu Nakamura 0:ad834d403a8c 105 Resource value setter (PUT) (OPTIONAL: defaulted noop if not derived. Binders MAY implement PUT if needed)
Osamu Nakamura 0:ad834d403a8c 106 @param string value of the resource
Osamu Nakamura 0:ad834d403a8c 107 */
Osamu Nakamura 0:ad834d403a8c 108 virtual void put(const string value);
Osamu Nakamura 0:ad834d403a8c 109
Osamu Nakamura 0:ad834d403a8c 110 /**
Osamu Nakamura 0:ad834d403a8c 111 Resource value setter (POST) (OPTIONAL: defaulted noop if not derived. Binders MAY implement POST if needed)
Osamu Nakamura 0:ad834d403a8c 112 @param void * args for the post() operation
Osamu Nakamura 0:ad834d403a8c 113 */
Osamu Nakamura 0:ad834d403a8c 114 virtual void post(void *args);
Osamu Nakamura 0:ad834d403a8c 115
Osamu Nakamura 0:ad834d403a8c 116 /**
Osamu Nakamura 0:ad834d403a8c 117 Resource value deleter (OPTIONAL: defaulted noop if not derived. Binders MAY implement DELETE if needed)
Osamu Nakamura 0:ad834d403a8c 118 @param void * args for the del() operation
Osamu Nakamura 0:ad834d403a8c 119 */
Osamu Nakamura 0:ad834d403a8c 120 virtual void del(void *args);
Osamu Nakamura 0:ad834d403a8c 121
Osamu Nakamura 0:ad834d403a8c 122 /**
Osamu Nakamura 0:ad834d403a8c 123 Send notification of new data
Osamu Nakamura 0:ad834d403a8c 124 @param data input the new data to update
Osamu Nakamura 0:ad834d403a8c 125 @returns 1 - success, 0 - failure
Osamu Nakamura 0:ad834d403a8c 126 */
Osamu Nakamura 0:ad834d403a8c 127 int notify(const string data);
Osamu Nakamura 0:ad834d403a8c 128
Osamu Nakamura 0:ad834d403a8c 129 /**
Osamu Nakamura 0:ad834d403a8c 130 Determine whether this dynamic resource is observable or not
Osamu Nakamura 0:ad834d403a8c 131 @returns true - is observable, false - otherwise
Osamu Nakamura 0:ad834d403a8c 132 */
Osamu Nakamura 0:ad834d403a8c 133 bool isObservable() { return this->m_observable; }
Osamu Nakamura 0:ad834d403a8c 134
Osamu Nakamura 0:ad834d403a8c 135 /**
Osamu Nakamura 0:ad834d403a8c 136 Set the observer pointer
Osamu Nakamura 0:ad834d403a8c 137 @param observer input the pointer to the ResourceObserver observing this resource
Osamu Nakamura 0:ad834d403a8c 138 */
Osamu Nakamura 0:ad834d403a8c 139 void setObserver(void *observer);
Osamu Nakamura 0:ad834d403a8c 140
Osamu Nakamura 0:ad834d403a8c 141 /**
Osamu Nakamura 0:ad834d403a8c 142 Set the content format for responses
Osamu Nakamura 0:ad834d403a8c 143 @param content_format short integer CoAP content-format ID
Osamu Nakamura 0:ad834d403a8c 144 */
Osamu Nakamura 0:ad834d403a8c 145 void setContentFormat(uint8_t content_format);
Osamu Nakamura 0:ad834d403a8c 146
Osamu Nakamura 0:ad834d403a8c 147 /**
Osamu Nakamura 0:ad834d403a8c 148 Set the max-age for cache control of responses in a proxy cache
Osamu Nakamura 0:ad834d403a8c 149 @param maxage short integer CoAP max-age in seconds
Osamu Nakamura 0:ad834d403a8c 150 */
Osamu Nakamura 0:ad834d403a8c 151 void setMaxAge(uint8_t maxage);
Osamu Nakamura 0:ad834d403a8c 152
Osamu Nakamura 0:ad834d403a8c 153 /**
Osamu Nakamura 0:ad834d403a8c 154 Set the data wrapper
Osamu Nakamura 0:ad834d403a8c 155 @param data_wrapper input the data wrapper instance
Osamu Nakamura 0:ad834d403a8c 156 */
Osamu Nakamura 0:ad834d403a8c 157 void setDataWrapper(DataWrapper *data_wrapper) { this->m_data_wrapper = data_wrapper; }
Osamu Nakamura 0:ad834d403a8c 158
Osamu Nakamura 0:ad834d403a8c 159 /**
Osamu Nakamura 0:ad834d403a8c 160 observe the resource
Osamu Nakamura 0:ad834d403a8c 161 */
Osamu Nakamura 0:ad834d403a8c 162 virtual void observe();
Osamu Nakamura 0:ad834d403a8c 163
Osamu Nakamura 0:ad834d403a8c 164 /**
Osamu Nakamura 0:ad834d403a8c 165 get the base resource representation
Osamu Nakamura 0:ad834d403a8c 166 */
Osamu Nakamura 0:ad834d403a8c 167 M2MResource *getResource();
Osamu Nakamura 0:ad834d403a8c 168
Osamu Nakamura 0:ad834d403a8c 169 /**
Osamu Nakamura 0:ad834d403a8c 170 Process a POST message for Resources
Osamu Nakamura 0:ad834d403a8c 171 */
Osamu Nakamura 0:ad834d403a8c 172 void process_resource_post(void *args);
Osamu Nakamura 0:ad834d403a8c 173
Osamu Nakamura 0:ad834d403a8c 174 /**
Osamu Nakamura 0:ad834d403a8c 175 Determine if we are connected or not
Osamu Nakamura 0:ad834d403a8c 176 */
Osamu Nakamura 0:ad834d403a8c 177 bool isConnected();
Osamu Nakamura 0:ad834d403a8c 178
Osamu Nakamura 0:ad834d403a8c 179 /**
Osamu Nakamura 0:ad834d403a8c 180 Determine if we are registered or not
Osamu Nakamura 0:ad834d403a8c 181 */
Osamu Nakamura 0:ad834d403a8c 182 bool isRegistered();
Osamu Nakamura 0:ad834d403a8c 183
Osamu Nakamura 0:ad834d403a8c 184 /**
Osamu Nakamura 0:ad834d403a8c 185 Get our Observer
Osamu Nakamura 0:ad834d403a8c 186 */
Osamu Nakamura 0:ad834d403a8c 187 void *getObserver();
Osamu Nakamura 0:ad834d403a8c 188
Osamu Nakamura 0:ad834d403a8c 189 protected:
Osamu Nakamura 0:ad834d403a8c 190 int notify(uint8_t *data,int data_length);
Osamu Nakamura 0:ad834d403a8c 191 DataWrapper *getDataWrapper() { return this->m_data_wrapper; }
Osamu Nakamura 0:ad834d403a8c 192 bool m_observable;
Osamu Nakamura 0:ad834d403a8c 193
Osamu Nakamura 0:ad834d403a8c 194 private:
Osamu Nakamura 0:ad834d403a8c 195
Osamu Nakamura 0:ad834d403a8c 196 string m_res_type; // a string description of our resource type (i.e. "Counter", etc...)
Osamu Nakamura 0:ad834d403a8c 197 ResourceType m_type; // the core type of our resource (i.e. String, Integer, etc...)
Osamu Nakamura 0:ad834d403a8c 198 uint8_t m_res_mask;
Osamu Nakamura 0:ad834d403a8c 199 uint8_t m_obs_number;
Osamu Nakamura 0:ad834d403a8c 200 DataWrapper *m_data_wrapper;
Osamu Nakamura 0:ad834d403a8c 201 void *m_observer;
Osamu Nakamura 0:ad834d403a8c 202 uint8_t m_maxage;
Osamu Nakamura 0:ad834d403a8c 203 uint8_t m_content_format;
Osamu Nakamura 0:ad834d403a8c 204 M2MResource *m_res;
Osamu Nakamura 0:ad834d403a8c 205 void *m_ep;
Osamu Nakamura 0:ad834d403a8c 206
Osamu Nakamura 0:ad834d403a8c 207 public:
Osamu Nakamura 0:ad834d403a8c 208 // convenience method to create a string from the NSDL CoAP data buffers...
Osamu Nakamura 0:ad834d403a8c 209 string coapDataToString(uint8_t *coap_data_ptr,int coap_data_ptr_length);
Osamu Nakamura 0:ad834d403a8c 210 int coapDataToInteger(uint8_t *coap_data_ptr,int coap_data_ptr_length);
Osamu Nakamura 0:ad834d403a8c 211 float coapDataToFloat(uint8_t *coap_data_ptr,int coap_data_ptr_length);
Osamu Nakamura 0:ad834d403a8c 212 void *coapDataToOpaque(uint8_t *coap_data_ptr,int coap_data_ptr_length);
Osamu Nakamura 0:ad834d403a8c 213 };
Osamu Nakamura 0:ad834d403a8c 214
Osamu Nakamura 0:ad834d403a8c 215 #endif // __DYNAMIC_RESOURCE_H__
Osamu Nakamura 0:ad834d403a8c 216