Dreamforce 2013 MiniHack Thermostat Challenge

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

Committer:
ansond
Date:
Mon Nov 11 20:36:21 2013 +0000
Revision:
3:399f01802514
Parent:
1:4c7d9aee324f
updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:bca7aceedd02 1 /* Thermostat-BaseUtils.h */
ansond 0:bca7aceedd02 2 /* Copyright (C) 2013 mbed.org, MIT License
ansond 0:bca7aceedd02 3 *
ansond 0:bca7aceedd02 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
ansond 0:bca7aceedd02 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
ansond 0:bca7aceedd02 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
ansond 0:bca7aceedd02 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
ansond 0:bca7aceedd02 8 * furnished to do so, subject to the following conditions:
ansond 0:bca7aceedd02 9 *
ansond 0:bca7aceedd02 10 * The above copyright notice and this permission notice shall be included in all copies or
ansond 0:bca7aceedd02 11 * substantial portions of the Software.
ansond 0:bca7aceedd02 12 *
ansond 0:bca7aceedd02 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
ansond 0:bca7aceedd02 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
ansond 0:bca7aceedd02 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
ansond 0:bca7aceedd02 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ansond 0:bca7aceedd02 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
ansond 0:bca7aceedd02 18 */
ansond 0:bca7aceedd02 19
ansond 0:bca7aceedd02 20 #ifndef THERMOSTAT_BASEUTILS_H_
ansond 0:bca7aceedd02 21 #define THERMOSTAT_BASEUTILS_H_
ansond 0:bca7aceedd02 22
ansond 0:bca7aceedd02 23 // AppBoard LCD Support
ansond 0:bca7aceedd02 24 #include "C12832_lcd.h"
ansond 0:bca7aceedd02 25 C12832_LCD lcd;
ansond 0:bca7aceedd02 26
ansond 0:bca7aceedd02 27 // Serial Console Support (main.cpp)
ansond 0:bca7aceedd02 28 extern Serial pc;
ansond 0:bca7aceedd02 29
ansond 0:bca7aceedd02 30 // log messages to appropriate outputs
ansond 0:bca7aceedd02 31 void Thermostat::logMessage(bool do_lcd) {
ansond 0:bca7aceedd02 32 // print to LCD panel
ansond 0:bca7aceedd02 33 if (do_lcd) {
ansond 0:bca7aceedd02 34 lcd.cls();
ansond 0:bca7aceedd02 35 lcd.locate(0,0);
ansond 0:bca7aceedd02 36 lcd.printf(this->m_display_message);
ansond 0:bca7aceedd02 37 }
ansond 0:bca7aceedd02 38 else {
ansond 0:bca7aceedd02 39 // print to serial console
ansond 0:bca7aceedd02 40 pc.printf(this->m_display_message);
ansond 0:bca7aceedd02 41 pc.printf("\r\n");
ansond 0:bca7aceedd02 42 }
ansond 0:bca7aceedd02 43
ansond 0:bca7aceedd02 44 // wait a bit so that the message can be read
ansond 0:bca7aceedd02 45 wait(0.5);
ansond 0:bca7aceedd02 46 }
ansond 0:bca7aceedd02 47
ansond 0:bca7aceedd02 48 // display output
ansond 0:bca7aceedd02 49 void Thermostat::display(const char *format, ...) {
ansond 0:bca7aceedd02 50 memset(this->m_display_message,'\0',MAX_MESSAGE_LENGTH+1);
ansond 0:bca7aceedd02 51 va_list args;
ansond 0:bca7aceedd02 52 va_start(args, format);
ansond 0:bca7aceedd02 53 vsprintf(this->m_display_message, format, args);
ansond 0:bca7aceedd02 54 va_end(args);
ansond 0:bca7aceedd02 55 this->logMessage(false);
ansond 0:bca7aceedd02 56 }
ansond 0:bca7aceedd02 57
ansond 0:bca7aceedd02 58 // display output
ansond 0:bca7aceedd02 59 void Thermostat::display_lcd(const char *format, ...) {
ansond 0:bca7aceedd02 60 memset(this->m_display_message,'\0',MAX_MESSAGE_LENGTH+1);
ansond 0:bca7aceedd02 61 va_list args;
ansond 0:bca7aceedd02 62 va_start(args, format);
ansond 0:bca7aceedd02 63 vsprintf(this->m_display_message, format, args);
ansond 0:bca7aceedd02 64 va_end(args);
ansond 0:bca7aceedd02 65 this->logMessage(true);
ansond 0:bca7aceedd02 66 }
ansond 0:bca7aceedd02 67
ansond 1:4c7d9aee324f 68 // display text message output
ansond 1:4c7d9aee324f 69 void Thermostat::displayTextMessage(const char *format, ...) {
ansond 1:4c7d9aee324f 70 memset(this->m_display_message,'\0',MAX_MESSAGE_LENGTH+1);
ansond 1:4c7d9aee324f 71 va_list args;
ansond 1:4c7d9aee324f 72 va_start(args, format);
ansond 1:4c7d9aee324f 73 vsprintf(this->m_display_message, format, args);
ansond 1:4c7d9aee324f 74 va_end(args);
ansond 1:4c7d9aee324f 75 this->logMessage(true);
ansond 1:4c7d9aee324f 76 wait_ms(3000); // add wait state so that we can see the message!
ansond 1:4c7d9aee324f 77 }
ansond 1:4c7d9aee324f 78
ansond 0:bca7aceedd02 79 #endif // THERMOSTAT_BASEUTILS_H_