This application shows an example of how to control the RGB LED over RPC. The app also contains an HTTP server and uses other components such as the LCD and Temperature Sensor to display additional information.

Dependencies:   C12832_lcd EthernetInterface HTTPServer LM75B MutexLocker mbed-rpc mbed-rtos mbed

Committer:
cabledev
Date:
Mon May 19 22:10:44 2014 +0000
Revision:
2:1c34cfdbc18a
Parent:
1:784afed9dbfe
- updated initial state of RGB LED;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cabledev 0:452a42421de4 1 /**
cabledev 0:452a42421de4 2 * Notice:
cabledev 0:452a42421de4 3 *
cabledev 0:452a42421de4 4 * Neither CableLabs nor any member company is responsible to any party for any liability of any nature whatsoever
cabledev 0:452a42421de4 5 * resulting from or arising out of use or reliance upon this software. This software is furnished on an "AS IS" basis
cabledev 0:452a42421de4 6 * and neither CableLabs nor its members provides any representation or warranty, express or implied, regarding the
cabledev 0:452a42421de4 7 * accuracy, completeness, or fitness for a particular purpose of this software.
cabledev 0:452a42421de4 8 *
cabledev 0:452a42421de4 9 * (C)Copyright 2014 Cable Television Laboratories, Inc. All rights reserved.
cabledev 1:784afed9dbfe 10 *
cabledev 1:784afed9dbfe 11 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
cabledev 1:784afed9dbfe 12 * following conditions are met:
cabledev 1:784afed9dbfe 13 *
cabledev 1:784afed9dbfe 14 * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
cabledev 1:784afed9dbfe 15 *
cabledev 1:784afed9dbfe 16 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
cabledev 1:784afed9dbfe 17 * disclaimer in the documentation and/or other materials provided with the distribution.
cabledev 1:784afed9dbfe 18 *
cabledev 1:784afed9dbfe 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
cabledev 1:784afed9dbfe 20 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
cabledev 1:784afed9dbfe 21 * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
cabledev 1:784afed9dbfe 22 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
cabledev 1:784afed9dbfe 23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
cabledev 1:784afed9dbfe 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
cabledev 1:784afed9dbfe 25 * POSSIBILITY OF SUCH DAMAGE.
cabledev 1:784afed9dbfe 26 *
cabledev 0:452a42421de4 27 * -----------------------------------------------------------------------------
cabledev 0:452a42421de4 28 *
cabledev 0:452a42421de4 29 * File: main.cpp
cabledev 0:452a42421de4 30 *
cabledev 0:452a42421de4 31 */
cabledev 0:452a42421de4 32
cabledev 0:452a42421de4 33 #include "mbed.h"
cabledev 0:452a42421de4 34
cabledev 0:452a42421de4 35 // LCD
cabledev 0:452a42421de4 36 #include "C12832_lcd.h"
cabledev 0:452a42421de4 37 #include "Small_7.h"
cabledev 0:452a42421de4 38
cabledev 0:452a42421de4 39 // HTTPServer
cabledev 0:452a42421de4 40 #include "HTTPServer.h"
cabledev 0:452a42421de4 41 #include "FsHandler.h"
cabledev 0:452a42421de4 42 #include "LocalFileSystem.h"
cabledev 0:452a42421de4 43 #include "RpcHandler.h"
cabledev 0:452a42421de4 44 #include "mbed_rpc.h"
cabledev 0:452a42421de4 45
cabledev 0:452a42421de4 46 // Temperature sensor
cabledev 0:452a42421de4 47 #include "mutexlocker.h"
cabledev 0:452a42421de4 48 #include "LM75B.h"
cabledev 0:452a42421de4 49
cabledev 0:452a42421de4 50 #define ON 1
cabledev 0:452a42421de4 51 #define OFF 0
cabledev 0:452a42421de4 52 #define DIM 0.3
cabledev 0:452a42421de4 53 #define SERIAL_BAUD 115200 // 9600
cabledev 0:452a42421de4 54 #define HTTP_LISTEN_PORT 80
cabledev 0:452a42421de4 55
cabledev 0:452a42421de4 56 // blinks LED1 when the HTTP server is listening for connections
cabledev 0:452a42421de4 57 //#define LISTENING_LED
cabledev 0:452a42421de4 58
cabledev 0:452a42421de4 59 // for some reason, getting the return code causes the HTTP server to be unresponsive
cabledev 0:452a42421de4 60 #define ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 61
cabledev 0:452a42421de4 62 // uncomment the following line for static IP address
cabledev 0:452a42421de4 63 //#define STATIC_IP
cabledev 0:452a42421de4 64 #define STATIC_IP_ADDRESS "192.168.1.177"
cabledev 0:452a42421de4 65 #define STATIC_IP_NETMASK "255.255.255.0"
cabledev 0:452a42421de4 66 #define STATIC_IP_GATEWAY "192.168.1.1"
cabledev 0:452a42421de4 67
cabledev 0:452a42421de4 68 #define TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 69
cabledev 0:452a42421de4 70 // LCD
cabledev 0:452a42421de4 71 // LCD object
cabledev 0:452a42421de4 72 C12832_LCD lcd;
cabledev 0:452a42421de4 73
cabledev 0:452a42421de4 74 // the led's are connected to vcc, so a PwmOut of 100% will shut off the led and 0% will let it shine!
cabledev 0:452a42421de4 75 PwmOut r(p23);
cabledev 0:452a42421de4 76 PwmOut g(p24);
cabledev 0:452a42421de4 77 PwmOut b(p25);
cabledev 0:452a42421de4 78 RpcPwmOut rpc_r(p23,"r");
cabledev 0:452a42421de4 79 RpcPwmOut rpc_g(p24,"g");
cabledev 0:452a42421de4 80 RpcPwmOut rpc_b(p25,"b");
cabledev 0:452a42421de4 81 // used to restore the rgb value after turning LED off and back on
cabledev 0:452a42421de4 82 bool powerOn = true;
cabledev 0:452a42421de4 83 float lastH = 0.0;
cabledev 0:452a42421de4 84 float lastS = 0.0;
cabledev 0:452a42421de4 85 float lastV = -1.0;
cabledev 0:452a42421de4 86
cabledev 0:452a42421de4 87 AnalogIn Pot1(p19);
cabledev 0:452a42421de4 88 AnalogIn Pot2(p20);
cabledev 0:452a42421de4 89
cabledev 0:452a42421de4 90 // Ethernet
cabledev 0:452a42421de4 91 EthernetInterface eth;
cabledev 0:452a42421de4 92 bool ethConnected;
cabledev 0:452a42421de4 93
cabledev 0:452a42421de4 94 // HTTPServer
cabledev 0:452a42421de4 95 #ifdef LISTENING_LED
cabledev 0:452a42421de4 96 // Use LED1 to indicate that the main loop is still executing
cabledev 0:452a42421de4 97 DigitalOut listeningLed(LED1);
cabledev 0:452a42421de4 98 #endif
cabledev 0:452a42421de4 99 // Use the serial connection 'pc' to dump debug information
cabledev 0:452a42421de4 100 Serial pc(USBTX, USBRX, "pc");
cabledev 0:452a42421de4 101 // Instantiate a HTTPServer to handle incoming requests
cabledev 0:452a42421de4 102 HTTPServer svr;
cabledev 0:452a42421de4 103 // Instantiate a local file system handler named 'local' which will be used later to access files on the mbed.
cabledev 0:452a42421de4 104 LocalFileSystem local("local");
cabledev 0:452a42421de4 105
cabledev 0:452a42421de4 106 // Temperature sensor
cabledev 0:452a42421de4 107 Mutex mutex;
cabledev 0:452a42421de4 108 LM75B temperatureSensor(p28,p27);
cabledev 0:452a42421de4 109
cabledev 0:452a42421de4 110 // RPC Variables
cabledev 0:452a42421de4 111 /*
cabledev 0:452a42421de4 112 //First create the variables you wish to use
cabledev 0:452a42421de4 113 float f;
cabledev 0:452a42421de4 114 int i;
cabledev 0:452a42421de4 115 char c;
cabledev 0:452a42421de4 116 //Then attach them to an RPCVariable Object
cabledev 0:452a42421de4 117 RPCVariable<float> rpc_f(&f, "f");
cabledev 0:452a42421de4 118 RPCVariable<int> rpc_i(&i, "i");
cabledev 0:452a42421de4 119 RPCVariable<char> rpc_c(&c, "c");
cabledev 0:452a42421de4 120 */
cabledev 0:452a42421de4 121
cabledev 0:452a42421de4 122 // RPC Functions
cabledev 0:452a42421de4 123 void setLight(Arguments* input, Reply* output);
cabledev 0:452a42421de4 124
cabledev 0:452a42421de4 125 // invoke with "http://<eth_ip>/RPC/setLightColor/run <H> <S> <V> <brightness> <powerOn>",
cabledev 0:452a42421de4 126 // where 0 <= H <= 360, 0 <= S <= 1, 0 <= V <= 1
cabledev 0:452a42421de4 127 RPCFunction rpc_setLight(&setLight, "setLight");
cabledev 0:452a42421de4 128
cabledev 0:452a42421de4 129 // function to convert hue , saturation and value to RGB
cabledev 0:452a42421de4 130 // see http://en.wikipedia.org/wiki/HSL_and_HSV
cabledev 0:452a42421de4 131 void hsv2rgb(float H,float S, float V)
cabledev 0:452a42421de4 132 {
cabledev 0:452a42421de4 133 float f,h,p,q,t;
cabledev 0:452a42421de4 134 int i;
cabledev 0:452a42421de4 135 if( S == 0.0) {
cabledev 0:452a42421de4 136 r = 1.0 - V; // invert pwm !
cabledev 0:452a42421de4 137 g = 1.0 - V;
cabledev 0:452a42421de4 138 b = 1.0 - V;
cabledev 0:452a42421de4 139 return;
cabledev 0:452a42421de4 140 }
cabledev 0:452a42421de4 141 if(H > 360.0) H = 0.0; // check values
cabledev 0:452a42421de4 142 if(S > 1.0) S = 1.0;
cabledev 0:452a42421de4 143 if(S < 0.0) S = 0.0;
cabledev 0:452a42421de4 144 if(V > 1.0) V = 1.0;
cabledev 0:452a42421de4 145 if(V < 0.0) V = 0.0;
cabledev 0:452a42421de4 146 h = H / 60.0;
cabledev 0:452a42421de4 147 i = (int) h;
cabledev 0:452a42421de4 148 f = h - i;
cabledev 0:452a42421de4 149 p = V * (1.0 - S);
cabledev 0:452a42421de4 150 q = V * (1.0 - (S * f));
cabledev 0:452a42421de4 151 t = V * (1.0 - (S * (1.0 - f)));
cabledev 0:452a42421de4 152
cabledev 0:452a42421de4 153 switch(i) {
cabledev 0:452a42421de4 154 case 0:
cabledev 0:452a42421de4 155 r = 1.0 - V; // invert pwm !
cabledev 0:452a42421de4 156 g = 1.0 - t;
cabledev 0:452a42421de4 157 b = 1.0 - p;
cabledev 0:452a42421de4 158 break;
cabledev 0:452a42421de4 159 case 1:
cabledev 0:452a42421de4 160 r = 1.0 - q;
cabledev 0:452a42421de4 161 g = 1.0 - V;
cabledev 0:452a42421de4 162 b = 1.0 - p;
cabledev 0:452a42421de4 163 break;
cabledev 0:452a42421de4 164 case 2:
cabledev 0:452a42421de4 165 r = 1.0 - p;
cabledev 0:452a42421de4 166 g = 1.0 - V;
cabledev 0:452a42421de4 167 b = 1.0 - t;
cabledev 0:452a42421de4 168 break;
cabledev 0:452a42421de4 169 case 3:
cabledev 0:452a42421de4 170 r = 1.0 - p;
cabledev 0:452a42421de4 171 g = 1.0 - q;
cabledev 0:452a42421de4 172 b = 1.0 - V;
cabledev 0:452a42421de4 173 break;
cabledev 0:452a42421de4 174 case 4:
cabledev 0:452a42421de4 175 r = 1.0 - t;
cabledev 0:452a42421de4 176 g = 1.0 - p;
cabledev 0:452a42421de4 177 b = 1.0 - V;
cabledev 0:452a42421de4 178 break;
cabledev 0:452a42421de4 179 case 5:
cabledev 0:452a42421de4 180 default:
cabledev 0:452a42421de4 181 r = 1.0 - V;
cabledev 0:452a42421de4 182 g = 1.0 - p;
cabledev 0:452a42421de4 183 b = 1.0 - q;
cabledev 0:452a42421de4 184 break;
cabledev 0:452a42421de4 185 }
cabledev 0:452a42421de4 186 }
cabledev 0:452a42421de4 187
cabledev 2:1c34cfdbc18a 188 void setLightProperties(float h, float s, float v, bool power)
cabledev 2:1c34cfdbc18a 189 {
cabledev 2:1c34cfdbc18a 190 printf("setLightProperties: HSV = '(%2f, %2f, %2f)', Power = '%s'\n\r", h, s, v, (power ? "ON" : "OFF"));
cabledev 2:1c34cfdbc18a 191
cabledev 2:1c34cfdbc18a 192 if (powerOn)
cabledev 2:1c34cfdbc18a 193 {
cabledev 2:1c34cfdbc18a 194 hsv2rgb(h, s, v);
cabledev 2:1c34cfdbc18a 195 }
cabledev 2:1c34cfdbc18a 196 else
cabledev 2:1c34cfdbc18a 197 {
cabledev 2:1c34cfdbc18a 198 r = 1.0;
cabledev 2:1c34cfdbc18a 199 g = 1.0;
cabledev 2:1c34cfdbc18a 200 b = 1.0;
cabledev 2:1c34cfdbc18a 201 }
cabledev 2:1c34cfdbc18a 202 }
cabledev 2:1c34cfdbc18a 203
cabledev 0:452a42421de4 204 void setLight(Arguments* input, Reply* output)
cabledev 0:452a42421de4 205 {
cabledev 0:452a42421de4 206 // Arguments are already parsed into argv array of char*
cabledev 0:452a42421de4 207 printf("Object name = %s\n\r",input->obj_name);
cabledev 0:452a42421de4 208 printf("Method name = %s\n\r",input->method_name);
cabledev 0:452a42421de4 209 for (int i=0; i < input->argc; i++)
cabledev 0:452a42421de4 210 {
cabledev 0:452a42421de4 211 printf("argv[%1d] = %s \n\r",i,input->argv[i]);
cabledev 0:452a42421de4 212 }
cabledev 0:452a42421de4 213
cabledev 0:452a42421de4 214 if (input->argc > 4)
cabledev 0:452a42421de4 215 {
cabledev 0:452a42421de4 216 char* strH = input->argv[0];
cabledev 0:452a42421de4 217 char* strS = input->argv[1];
cabledev 0:452a42421de4 218 char* strV = input->argv[2];
cabledev 0:452a42421de4 219 char* strBrightness = input->argv[3];
cabledev 0:452a42421de4 220 char* strPower = input->argv[4];
cabledev 0:452a42421de4 221
cabledev 0:452a42421de4 222 float h;
cabledev 0:452a42421de4 223 float s;
cabledev 0:452a42421de4 224 float v;
cabledev 0:452a42421de4 225 float brightness;
cabledev 0:452a42421de4 226 int power;
cabledev 0:452a42421de4 227
cabledev 0:452a42421de4 228 if ((strH != NULL) && (strlen(strH) > 0) && (strcmp(strH, "null") != 0))
cabledev 0:452a42421de4 229 {
cabledev 0:452a42421de4 230 // assume that if we got an H, we also got an S & V
cabledev 0:452a42421de4 231 sscanf(strH, "%f", &h);
cabledev 0:452a42421de4 232 sscanf(strS, "%f", &s);
cabledev 0:452a42421de4 233 sscanf(strV, "%f", &v);
cabledev 0:452a42421de4 234
cabledev 0:452a42421de4 235 lastH = h;
cabledev 0:452a42421de4 236 lastS = s;
cabledev 0:452a42421de4 237 lastV = v;
cabledev 0:452a42421de4 238 printf("*** set lastV from color to %f\n\r", lastV);
cabledev 0:452a42421de4 239 }
cabledev 0:452a42421de4 240
cabledev 0:452a42421de4 241 if ((strBrightness != NULL) && (strlen(strBrightness) > 0) && (strcmp(strBrightness, "null") != 0))
cabledev 0:452a42421de4 242 {
cabledev 0:452a42421de4 243 sscanf(strBrightness, "%f", &brightness);
cabledev 0:452a42421de4 244 brightness = brightness / 100.0;
cabledev 0:452a42421de4 245 brightness = brightness*brightness; // normalization, because in general, the LED is too bright
cabledev 0:452a42421de4 246 lastV = brightness;
cabledev 0:452a42421de4 247 printf("*** set lastV from brightness to %f\n\r", lastV);
cabledev 0:452a42421de4 248 }
cabledev 0:452a42421de4 249
cabledev 0:452a42421de4 250 if ((strPower != NULL) && (strlen(strPower) > 0) && (strcmp(strPower, "null") != 0))
cabledev 0:452a42421de4 251 {
cabledev 0:452a42421de4 252 sscanf(strPower, "%i", &power);
cabledev 0:452a42421de4 253
cabledev 0:452a42421de4 254 powerOn = (power == ON);
cabledev 0:452a42421de4 255 }
cabledev 0:452a42421de4 256
cabledev 0:452a42421de4 257 printf("setLight: HSV = '(%s, %s, %s)', Brightness = '%s', Power = '%s'\n\r", strH, strS, strV, strBrightness, strPower);
cabledev 0:452a42421de4 258
cabledev 2:1c34cfdbc18a 259 setLightProperties(lastH, lastS, lastV, powerOn);
cabledev 0:452a42421de4 260 }
cabledev 0:452a42421de4 261 }
cabledev 0:452a42421de4 262
cabledev 0:452a42421de4 263 void startHttpServer(void const* arg)
cabledev 0:452a42421de4 264 {
cabledev 0:452a42421de4 265 // Ethernet
cabledev 0:452a42421de4 266 #ifdef STATIC_IP
cabledev 0:452a42421de4 267 pc.printf("Configuring Ethernet with Static IP Address.\n\r");
cabledev 0:452a42421de4 268 //eth.init("192.168.1.177", "255.255.255.0", "192.168.1.1");
cabledev 0:452a42421de4 269 eth.init(STATIC_IP_ADDRESS, STATIC_IP_NETMASK, STATIC_IP_GATEWAY);
cabledev 0:452a42421de4 270 #else
cabledev 0:452a42421de4 271 pc.printf("Configuring Ethernet with DHCP IP Address.\n\r");
cabledev 0:452a42421de4 272 eth.init(); //Use DHCP
cabledev 0:452a42421de4 273 #endif
cabledev 0:452a42421de4 274
cabledev 0:452a42421de4 275 #ifdef ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 276 //pc.printf("*** eth.connect()!\n\r");
cabledev 0:452a42421de4 277 int connected = eth.connect(); // success == 0
cabledev 0:452a42421de4 278 //pc.printf("*** Eth.connect returned %i\n\r", connected);
cabledev 0:452a42421de4 279 if (connected != 0)
cabledev 0:452a42421de4 280 {
cabledev 0:452a42421de4 281 lcd.printf("Ethernet not connected");
cabledev 0:452a42421de4 282 }
cabledev 0:452a42421de4 283 else
cabledev 0:452a42421de4 284 {
cabledev 0:452a42421de4 285 #else
cabledev 0:452a42421de4 286 //pc.printf("*** eth.connect()!\n\r");
cabledev 0:452a42421de4 287 eth.connect();
cabledev 0:452a42421de4 288 #endif
cabledev 0:452a42421de4 289 char* ipAddr = eth.getIPAddress();
cabledev 0:452a42421de4 290 //pc.printf("*** ipAddr: %s\n\r", ipAddr);
cabledev 0:452a42421de4 291 ethConnected = ((ipAddr != NULL) && (strlen(ipAddr) > 0));
cabledev 0:452a42421de4 292
cabledev 0:452a42421de4 293 if (ethConnected)
cabledev 0:452a42421de4 294 {
cabledev 0:452a42421de4 295 mutex.lock();
cabledev 0:452a42421de4 296 lcd.locate(10,0);
cabledev 0:452a42421de4 297 lcd.printf("IP Address: %s", eth.getIPAddress());
cabledev 0:452a42421de4 298 mutex.unlock();
cabledev 0:452a42421de4 299
cabledev 0:452a42421de4 300 #ifndef TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 301 mutex.lock();
cabledev 0:452a42421de4 302 lcd.locate(10,10);
cabledev 0:452a42421de4 303 lcd.printf("WebServer started");
cabledev 0:452a42421de4 304 mutex.unlock();
cabledev 0:452a42421de4 305 #endif
cabledev 0:452a42421de4 306 }
cabledev 0:452a42421de4 307 else
cabledev 0:452a42421de4 308 {
cabledev 0:452a42421de4 309 lcd.printf("No IP Address");
cabledev 0:452a42421de4 310 }
cabledev 0:452a42421de4 311 #ifdef ETH_CONNECTION_STATUS
cabledev 0:452a42421de4 312 }
cabledev 0:452a42421de4 313 #endif
cabledev 0:452a42421de4 314
cabledev 0:452a42421de4 315 svr.addHandler<HTTPFsRequestHandler>("/");
cabledev 0:452a42421de4 316 svr.addHandler<HTTPRpcRequestHandler>("/RPC");
cabledev 0:452a42421de4 317
cabledev 0:452a42421de4 318 svr.setPort(HTTP_LISTEN_PORT);
cabledev 0:452a42421de4 319 svr.setEthernetInterface(&eth);
cabledev 0:452a42421de4 320 svr.start();
cabledev 0:452a42421de4 321 }
cabledev 0:452a42421de4 322
cabledev 0:452a42421de4 323 void startTemperatureMonitor(void const* arg)
cabledev 0:452a42421de4 324 {
cabledev 0:452a42421de4 325 float tempC = 0;
cabledev 0:452a42421de4 326 float tempF = 0;
cabledev 0:452a42421de4 327 while(true)
cabledev 0:452a42421de4 328 {
cabledev 0:452a42421de4 329 tempC = temperatureSensor.read();
cabledev 0:452a42421de4 330 tempF = (tempC * 1.8f) + 32.0f;
cabledev 0:452a42421de4 331
cabledev 0:452a42421de4 332 mutex.lock();
cabledev 0:452a42421de4 333 lcd.locate(10,10);
cabledev 0:452a42421de4 334 lcd.printf("Temp: %.3f F\n", tempF);
cabledev 0:452a42421de4 335 mutex.unlock();
cabledev 0:452a42421de4 336 wait(1.0);
cabledev 0:452a42421de4 337 }
cabledev 0:452a42421de4 338 }
cabledev 0:452a42421de4 339
cabledev 0:452a42421de4 340 int main()
cabledev 0:452a42421de4 341 {
cabledev 0:452a42421de4 342 lcd.cls();
cabledev 0:452a42421de4 343 lcd.set_font((unsigned char*) Small_7);
cabledev 0:452a42421de4 344
cabledev 0:452a42421de4 345 r.period(0.001); // set pwm period
cabledev 0:452a42421de4 346
cabledev 2:1c34cfdbc18a 347 // LED
cabledev 2:1c34cfdbc18a 348 lastH = 120;
cabledev 2:1c34cfdbc18a 349 lastS = 1;
cabledev 2:1c34cfdbc18a 350 lastV = 0.5f;
cabledev 2:1c34cfdbc18a 351 setLightProperties(lastH, lastS, lastV, true);
cabledev 0:452a42421de4 352
cabledev 0:452a42421de4 353 //HTTPServer
cabledev 0:452a42421de4 354 pc.baud(SERIAL_BAUD);
cabledev 0:452a42421de4 355
cabledev 0:452a42421de4 356 // add the interfaces that can be created dynamically
cabledev 0:452a42421de4 357 RPC::add_rpc_class<RpcDigitalOut>();
cabledev 0:452a42421de4 358 RPC::add_rpc_class<RpcPwmOut>();
cabledev 0:452a42421de4 359
cabledev 0:452a42421de4 360 HTTPFsRequestHandler::mount("/local/", "/");
cabledev 0:452a42421de4 361
cabledev 0:452a42421de4 362 ethConnected = false;
cabledev 0:452a42421de4 363 Thread httpsvr( &startHttpServer );
cabledev 0:452a42421de4 364
cabledev 0:452a42421de4 365 #ifdef TEMPERATURE_ACTIVE
cabledev 0:452a42421de4 366 Thread tempMonitor(&startTemperatureMonitor );
cabledev 0:452a42421de4 367 #endif
cabledev 0:452a42421de4 368
cabledev 0:452a42421de4 369 while (true)
cabledev 0:452a42421de4 370 {
cabledev 0:452a42421de4 371 #ifdef LISTENING_LED
cabledev 0:452a42421de4 372 if (ethConnected)
cabledev 0:452a42421de4 373 {
cabledev 0:452a42421de4 374 listeningLed = ON;
cabledev 0:452a42421de4 375 wait(0.2);
cabledev 0:452a42421de4 376 listeningLed = OFF;
cabledev 0:452a42421de4 377 wait(0.2);
cabledev 0:452a42421de4 378 }
cabledev 0:452a42421de4 379 #endif
cabledev 0:452a42421de4 380 }
cabledev 0:452a42421de4 381 }