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 __LED_RESOURCE_H__
michaeljkoster 0:a9025db1ac76 24 #define __LED_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 DigitalOut LED_red(LED1);
michaeljkoster 0:a9025db1ac76 32 DigitalOut LED_green(LED2);
michaeljkoster 0:a9025db1ac76 33 DigitalOut LED_blue(LED3);
michaeljkoster 0:a9025db1ac76 34
michaeljkoster 0:a9025db1ac76 35 static char * LED_color_value = {"00000"}; //RRGGBBII
michaeljkoster 0:a9025db1ac76 36
michaeljkoster 0:a9025db1ac76 37 void LED_set_color(char * color_string)
michaeljkoster 0:a9025db1ac76 38 {
michaeljkoster 0:a9025db1ac76 39 static uint8_t red, green, blue;
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 blue = color_int & 255;
michaeljkoster 0:a9025db1ac76 45 green = color_int >> 8 & 255;
michaeljkoster 0:a9025db1ac76 46 red = color_int >> 16 & 255;
michaeljkoster 0:a9025db1ac76 47
michaeljkoster 0:a9025db1ac76 48 LED_red = !(red & 1);
michaeljkoster 0:a9025db1ac76 49 LED_green = !(green & 1);
michaeljkoster 0:a9025db1ac76 50 LED_blue = !(blue & 1);
michaeljkoster 0:a9025db1ac76 51 }
michaeljkoster 0:a9025db1ac76 52
michaeljkoster 0:a9025db1ac76 53 /** LightResource class
michaeljkoster 0:a9025db1ac76 54 */
michaeljkoster 0:a9025db1ac76 55 class LEDResource : public DynamicResource
michaeljkoster 0:a9025db1ac76 56 {
michaeljkoster 0:a9025db1ac76 57
michaeljkoster 0:a9025db1ac76 58 public:
michaeljkoster 0:a9025db1ac76 59 /**
michaeljkoster 0:a9025db1ac76 60 Default constructor
michaeljkoster 0:a9025db1ac76 61 @param logger input logger instance for this resource
michaeljkoster 0:a9025db1ac76 62 @param name input the Light resource name
michaeljkoster 0:a9025db1ac76 63 @param observable input the resource is Observable (default: FALSE)
michaeljkoster 0:a9025db1ac76 64 */
michaeljkoster 0:a9025db1ac76 65 LEDResource(const Logger *logger,const char *name,const bool observable = false) : DynamicResource(logger,name,"OnBoardLED",SN_GRS_GET_ALLOWED|SN_GRS_PUT_ALLOWED,observable) {
michaeljkoster 0:a9025db1ac76 66 LED_set_color("000000");
michaeljkoster 0:a9025db1ac76 67 wait(0.5);
michaeljkoster 0:a9025db1ac76 68 LED_set_color("FF0000");
michaeljkoster 0:a9025db1ac76 69 wait(0.5);
michaeljkoster 0:a9025db1ac76 70 LED_set_color("00FF00");
michaeljkoster 0:a9025db1ac76 71 wait(0.5);
michaeljkoster 0:a9025db1ac76 72 LED_set_color("0000FF");
michaeljkoster 0:a9025db1ac76 73 wait(0.5);
michaeljkoster 0:a9025db1ac76 74 LED_set_color(LED_color_value);
michaeljkoster 0:a9025db1ac76 75 }
michaeljkoster 0:a9025db1ac76 76
michaeljkoster 0:a9025db1ac76 77 /**
michaeljkoster 0:a9025db1ac76 78 Get the value of the LED
michaeljkoster 0:a9025db1ac76 79 @returns string containing the last setting
michaeljkoster 0:a9025db1ac76 80 */
michaeljkoster 0:a9025db1ac76 81 virtual string get() {
michaeljkoster 0:a9025db1ac76 82 return(LED_color_value);
michaeljkoster 0:a9025db1ac76 83 }
michaeljkoster 0:a9025db1ac76 84
michaeljkoster 0:a9025db1ac76 85 /**
michaeljkoster 0:a9025db1ac76 86 Set the value of the LED
michaeljkoster 0:a9025db1ac76 87 @param string input the string containing the desired setting
michaeljkoster 0:a9025db1ac76 88 */
michaeljkoster 0:a9025db1ac76 89 virtual void put(const string value) {
michaeljkoster 0:a9025db1ac76 90 if( sizeof(value) == sizeof(LED_color_value) ){
michaeljkoster 0:a9025db1ac76 91 LED_color_value = (char *)value.c_str();
michaeljkoster 0:a9025db1ac76 92 LED_set_color(LED_color_value);
michaeljkoster 0:a9025db1ac76 93 }
michaeljkoster 0:a9025db1ac76 94 }
michaeljkoster 0:a9025db1ac76 95 };
michaeljkoster 0:a9025db1ac76 96
michaeljkoster 0:a9025db1ac76 97 #endif // __LED_RESOURCE_H__