DreamForce 2013 Hands-On Demo

Dependencies:   C12832_lcd EthernetInterface-ansond-patched HTTPClient-thermostat-remotes LM75B MMA7660 SocketIO WebSocketClient-ThermostatDemo mbed-rtos mbed picojson

Fork of ThermostatHandsOn by Doug Anson

Committer:
ansond
Date:
Mon Nov 11 20:35:13 2013 +0000
Revision:
7:57681d46485d
Parent:
1:dfd24f608038
updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:6b56785dd2b6 1 /* Thermostat.h */
ansond 0:6b56785dd2b6 2 /* Copyright (C) 2013 mbed.org, MIT License
ansond 0:6b56785dd2b6 3 *
ansond 0:6b56785dd2b6 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
ansond 0:6b56785dd2b6 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
ansond 0:6b56785dd2b6 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
ansond 0:6b56785dd2b6 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
ansond 0:6b56785dd2b6 8 * furnished to do so, subject to the following conditions:
ansond 0:6b56785dd2b6 9 *
ansond 0:6b56785dd2b6 10 * The above copyright notice and this permission notice shall be included in all copies or
ansond 0:6b56785dd2b6 11 * substantial portions of the Software.
ansond 0:6b56785dd2b6 12 *
ansond 0:6b56785dd2b6 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
ansond 0:6b56785dd2b6 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
ansond 0:6b56785dd2b6 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
ansond 0:6b56785dd2b6 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ansond 0:6b56785dd2b6 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ansond 0:6b56785dd2b6 18 */
ansond 0:6b56785dd2b6 19
ansond 0:6b56785dd2b6 20 #ifndef THERMOSTAT_H_
ansond 0:6b56785dd2b6 21 #define THERMOSTAT_H_
ansond 0:6b56785dd2b6 22
ansond 0:6b56785dd2b6 23 // platform support
ansond 0:6b56785dd2b6 24 #include "mbed.h"
ansond 0:6b56785dd2b6 25
ansond 0:6b56785dd2b6 26 // Support for std args
ansond 0:6b56785dd2b6 27 #include <stdarg.h>
ansond 0:6b56785dd2b6 28
ansond 0:6b56785dd2b6 29 // maximum size of a displayed message
ansond 0:6b56785dd2b6 30 #define MAX_MESSAGE_LENGTH 100
ansond 0:6b56785dd2b6 31
ansond 0:6b56785dd2b6 32 class Thermostat {
ansond 0:6b56785dd2b6 33 public:
ansond 0:6b56785dd2b6 34 // Default Constructor
ansond 0:6b56785dd2b6 35 Thermostat();
ansond 0:6b56785dd2b6 36
ansond 0:6b56785dd2b6 37 // Destructor
ansond 0:6b56785dd2b6 38 ~Thermostat();
ansond 0:6b56785dd2b6 39
ansond 0:6b56785dd2b6 40 // invoke the demo
ansond 0:6b56785dd2b6 41 void runDemo();
ansond 0:6b56785dd2b6 42
ansond 0:6b56785dd2b6 43 private:
ansond 0:6b56785dd2b6 44 int getErrorState();
ansond 0:6b56785dd2b6 45 char *createDeregisterJSON(char *buffer);
ansond 0:6b56785dd2b6 46 char *createJSON(char *buffer, float temp, float latitude, float longitude, float bat);
ansond 0:6b56785dd2b6 47
ansond 0:6b56785dd2b6 48 float getTemperature();
ansond 0:6b56785dd2b6 49 float getBatteryLevel();
ansond 0:6b56785dd2b6 50
ansond 0:6b56785dd2b6 51 void resetDeviceStatus();
ansond 0:6b56785dd2b6 52 int translateLEDStatus(const char *status, int current);
ansond 0:6b56785dd2b6 53 void parseAndActOnControlMessage(char *json);
ansond 0:6b56785dd2b6 54 void processControlMessage();
ansond 0:6b56785dd2b6 55 void sendDeregisterMessage();
ansond 0:6b56785dd2b6 56 void sendStatus();
ansond 0:6b56785dd2b6 57 void sendStatus(float temp, int battery);
ansond 0:6b56785dd2b6 58 void sendStatus(float temp, float latitude, float longitude, float bat);
ansond 0:6b56785dd2b6 59
ansond 0:6b56785dd2b6 60 char *receiveFromWSService(char *buffer);
ansond 0:6b56785dd2b6 61
ansond 0:6b56785dd2b6 62 void parseSessionKey(char *response, char *sessionkey);
ansond 0:6b56785dd2b6 63 char *performSocketIOHandshake(char *sessionkey);
ansond 0:6b56785dd2b6 64 bool connectWebSocketService();
ansond 0:6b56785dd2b6 65 bool connectEthernet();
ansond 0:6b56785dd2b6 66
ansond 0:6b56785dd2b6 67 void gracefullyDisconnect();
ansond 0:6b56785dd2b6 68 void mainLoop();
ansond 0:6b56785dd2b6 69
ansond 0:6b56785dd2b6 70 // Thermostat-LEDUtils.cpp
ansond 0:6b56785dd2b6 71 void setAllLEDs(int state);
ansond 0:6b56785dd2b6 72 void resetAllLEDs();
ansond 0:6b56785dd2b6 73 void blinkAllLEDs();
ansond 0:6b56785dd2b6 74 void updateRGBLED(float H,float S, float V);
ansond 0:6b56785dd2b6 75 void setRGBLED(double color, double bright);
ansond 0:6b56785dd2b6 76 void turnRGBLEDRed();
ansond 0:6b56785dd2b6 77 void turnRGBLEDGreen();
ansond 0:6b56785dd2b6 78 void turnRGBLEDBlue();
ansond 0:6b56785dd2b6 79 void blinkLED(DigitalOut led);
ansond 0:6b56785dd2b6 80 void blinkTransportTxLED();
ansond 0:6b56785dd2b6 81 void blinkTransportRxLED();
ansond 0:6b56785dd2b6 82
ansond 0:6b56785dd2b6 83 // Thermostat-BaseUtils.cpp
ansond 0:6b56785dd2b6 84 void logMessage(bool do_lcd);
ansond 0:6b56785dd2b6 85 void display(const char *format, ...);
ansond 0:6b56785dd2b6 86 void display_lcd(const char *format, ...);
ansond 0:6b56785dd2b6 87
ansond 1:dfd24f608038 88 // Stubs
ansond 1:dfd24f608038 89 void updateCoordinates();
ansond 1:dfd24f608038 90 void initLocation();
ansond 1:dfd24f608038 91
ansond 0:6b56785dd2b6 92 // private members
ansond 0:6b56785dd2b6 93 float m_latitude;
ansond 0:6b56785dd2b6 94 float m_longitude;
ansond 0:6b56785dd2b6 95 float m_temperature;
ansond 0:6b56785dd2b6 96 float m_battery;
ansond 0:6b56785dd2b6 97 char *m_status;
ansond 0:6b56785dd2b6 98 bool m_error_state;
ansond 0:6b56785dd2b6 99 double m_rgbLEDColor;
ansond 0:6b56785dd2b6 100 double m_rgbLEDBright;
ansond 0:6b56785dd2b6 101 char m_display_message[MAX_MESSAGE_LENGTH+1];
ansond 0:6b56785dd2b6 102 };
ansond 0:6b56785dd2b6 103
ansond 0:6b56785dd2b6 104 #endif /* THERMOSTAT_H_ */