Demo project for IoT World Hackathon

Dependencies:   Chainable_RGB_LED mbed mbedConnectorInterface mbedEndpointNetwork

Committer:
michaeljkoster
Date:
Tue May 12 00:51:01 2015 +0000
Revision:
0:a9025db1ac76
Initial Fork

Who changed what in which revision?

UserRevisionLine numberNew contents of line
michaeljkoster 0:a9025db1ac76 1 /**
michaeljkoster 0:a9025db1ac76 2 * @file LightResource.h
michaeljkoster 0:a9025db1ac76 3 * @brief mbed CoAP Endpoint Light resource supporting CoAP GET and PUT
michaeljkoster 0:a9025db1ac76 4 * @author Doug Anson, Michael Koster
michaeljkoster 0:a9025db1ac76 5 * @version 1.0
michaeljkoster 0:a9025db1ac76 6 * @see
michaeljkoster 0:a9025db1ac76 7 *
michaeljkoster 0:a9025db1ac76 8 * Copyright (c) 2014
michaeljkoster 0:a9025db1ac76 9 *
michaeljkoster 0:a9025db1ac76 10 * Licensed under the Apache License, Version 2.0 (the "License");
michaeljkoster 0:a9025db1ac76 11 * you may not use this file except in compliance with the License.
michaeljkoster 0:a9025db1ac76 12 * You may obtain a copy of the License at
michaeljkoster 0:a9025db1ac76 13 *
michaeljkoster 0:a9025db1ac76 14 * http://www.apache.org/licenses/LICENSE-2.0
michaeljkoster 0:a9025db1ac76 15 *
michaeljkoster 0:a9025db1ac76 16 * Unless required by applicable law or agreed to in writing, software
michaeljkoster 0:a9025db1ac76 17 * distributed under the License is distributed on an "AS IS" BASIS,
michaeljkoster 0:a9025db1ac76 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
michaeljkoster 0:a9025db1ac76 19 * See the License for the specific language governing permissions and
michaeljkoster 0:a9025db1ac76 20 * limitations under the License.
michaeljkoster 0:a9025db1ac76 21 */
michaeljkoster 0:a9025db1ac76 22
michaeljkoster 0:a9025db1ac76 23 #ifndef __LIGHT_RESOURCE_H__
michaeljkoster 0:a9025db1ac76 24 #define __LIGHT_RESOURCE_H__
michaeljkoster 0:a9025db1ac76 25
michaeljkoster 0:a9025db1ac76 26
michaeljkoster 0:a9025db1ac76 27 // Base class
michaeljkoster 0:a9025db1ac76 28 #include "DynamicResource.h"
michaeljkoster 0:a9025db1ac76 29
michaeljkoster 0:a9025db1ac76 30 // our Light
michaeljkoster 0:a9025db1ac76 31 #include "ChainableLED.h"
michaeljkoster 0:a9025db1ac76 32 #define LED_COUNT 1
michaeljkoster 0:a9025db1ac76 33
michaeljkoster 0:a9025db1ac76 34 ChainableLED led_chain(D3, D4, LED_COUNT);
michaeljkoster 0:a9025db1ac76 35
michaeljkoster 0:a9025db1ac76 36 static char * led_value = {"00000"}; //RRGGBB
michaeljkoster 0:a9025db1ac76 37
michaeljkoster 0:a9025db1ac76 38 void set_led_array(char * color_string)
michaeljkoster 0:a9025db1ac76 39 {
michaeljkoster 0:a9025db1ac76 40 int color_int;
michaeljkoster 0:a9025db1ac76 41
michaeljkoster 0:a9025db1ac76 42 sscanf(color_string, "%X", &color_int);
michaeljkoster 0:a9025db1ac76 43
michaeljkoster 0:a9025db1ac76 44 led_chain.setColorRGB(0, (color_int >> 16 & 255), (color_int >> 8 & 255), (color_int & 255) );
michaeljkoster 0:a9025db1ac76 45 }
michaeljkoster 0:a9025db1ac76 46
michaeljkoster 0:a9025db1ac76 47 /** LightResource class
michaeljkoster 0:a9025db1ac76 48 */
michaeljkoster 0:a9025db1ac76 49 class LightResource : public DynamicResource
michaeljkoster 0:a9025db1ac76 50 {
michaeljkoster 0:a9025db1ac76 51
michaeljkoster 0:a9025db1ac76 52 public:
michaeljkoster 0:a9025db1ac76 53 /**
michaeljkoster 0:a9025db1ac76 54 Default constructor
michaeljkoster 0:a9025db1ac76 55 @param logger input logger instance for this resource
michaeljkoster 0:a9025db1ac76 56 @param name input the Light resource name
michaeljkoster 0:a9025db1ac76 57 @param observable input the resource is Observable (default: FALSE)
michaeljkoster 0:a9025db1ac76 58 */
michaeljkoster 0:a9025db1ac76 59 LightResource(const Logger *logger,const char *name,const bool observable = false) : DynamicResource(logger,name,"Light",SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED,observable) {
michaeljkoster 0:a9025db1ac76 60 set_led_array("000000");
michaeljkoster 0:a9025db1ac76 61 wait(0.5);
michaeljkoster 0:a9025db1ac76 62 set_led_array("FF0000");
michaeljkoster 0:a9025db1ac76 63 wait(0.5);
michaeljkoster 0:a9025db1ac76 64 set_led_array("00FF00");
michaeljkoster 0:a9025db1ac76 65 wait(0.5);
michaeljkoster 0:a9025db1ac76 66 set_led_array("0000FF");
michaeljkoster 0:a9025db1ac76 67 wait(0.5);
michaeljkoster 0:a9025db1ac76 68 set_led_array(led_value);
michaeljkoster 0:a9025db1ac76 69 }
michaeljkoster 0:a9025db1ac76 70
michaeljkoster 0:a9025db1ac76 71 /**
michaeljkoster 0:a9025db1ac76 72 Get the value of the Light
michaeljkoster 0:a9025db1ac76 73 @returns string containing either "0" (light off) or "1" (light on)
michaeljkoster 0:a9025db1ac76 74 */
michaeljkoster 0:a9025db1ac76 75 virtual string get() {
michaeljkoster 0:a9025db1ac76 76 return(led_value);
michaeljkoster 0:a9025db1ac76 77 }
michaeljkoster 0:a9025db1ac76 78
michaeljkoster 0:a9025db1ac76 79 /**
michaeljkoster 0:a9025db1ac76 80 Set the value of the Light
michaeljkoster 0:a9025db1ac76 81 @param string input the string containing "0" (light off) or "1" (light on)
michaeljkoster 0:a9025db1ac76 82 */
michaeljkoster 0:a9025db1ac76 83 virtual void put(const string value) {
michaeljkoster 0:a9025db1ac76 84 if( sizeof(value) == sizeof(led_value) ){
michaeljkoster 0:a9025db1ac76 85 led_value = (char *)value.c_str();
michaeljkoster 0:a9025db1ac76 86 set_led_array(led_value);
michaeljkoster 0:a9025db1ac76 87 }
michaeljkoster 0:a9025db1ac76 88 }
michaeljkoster 0:a9025db1ac76 89 };
michaeljkoster 0:a9025db1ac76 90
michaeljkoster 0:a9025db1ac76 91 #endif // __LIGHT_RESOURCE_H__