confidential

Dependencies:   Chainable_RGB_LED mbed mbedConnectorInterface mbedEndpointNetwork

Committer:
cjwu15
Date:
Sat May 09 17:32:02 2015 +0000
Revision:
0:02b8d440ded3
initial commit

Who changed what in which revision?

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