Net Remote Controller
Dependencies: EthernetNetIf HTTPServer mbed
RemoteControllerHandler.cpp@0:e37991cede92, 2012-12-09 (annotated)
- Committer:
- nobuki
- Date:
- Sun Dec 09 13:07:14 2012 +0000
- Revision:
- 0:e37991cede92
Version 1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nobuki | 0:e37991cede92 | 1 | #include "RemoteControllerHandler.h" |
nobuki | 0:e37991cede92 | 2 | |
nobuki | 0:e37991cede92 | 3 | //#define __DEBUG |
nobuki | 0:e37991cede92 | 4 | #include <dbg.h> |
nobuki | 0:e37991cede92 | 5 | |
nobuki | 0:e37991cede92 | 6 | #define CHECK_PASSCODE |
nobuki | 0:e37991cede92 | 7 | |
nobuki | 0:e37991cede92 | 8 | #define DELIMITER ("&") |
nobuki | 0:e37991cede92 | 9 | #define PASSCODE (170) // 1357 : 010101010 |
nobuki | 0:e37991cede92 | 10 | |
nobuki | 0:e37991cede92 | 11 | // Turn ON the power of Air Conditioner |
nobuki | 0:e37991cede92 | 12 | short ARRAY_HIGHLOW_ON[] = { 5067, 2061, 389, 1730, 412, 631, 388, 658, 385, 656, 388, 1729, 413, 630, 389, 656, 387, 657, 387, 657, |
nobuki | 0:e37991cede92 | 13 | 385, 1732, 412, 630, 391, 1727, 414, 1703, 412, 631, 388, 1731, 411, 1707, 385, 1731, 386, 1729, 413, 1705, |
nobuki | 0:e37991cede92 | 14 | 388, 657, 388, 656, 387, 1730, 386, 656, 390, 654, 385, 660, 386, 657, 387, 656, 388, 656, 387, 1731, |
nobuki | 0:e37991cede92 | 15 | 411, 1707, 386, 1730, 411, 1705, 388, 1730, 388, 655, 388, 1732, 409, 1704, 412, 633, 388, 655, 414, 628, |
nobuki | 0:e37991cede92 | 16 | 390, 658, 384, 660, 385, 659, 384, 656, 414, 629, 389, 657, 386, 658, 386, 657, 385, 658, 387, 1730, |
nobuki | 0:e37991cede92 | 17 | 412, 1705, 389, 1729, 409, 1707, 388, 656, 387, 655, 414, 629, 390, 657, 385, 29221, 5067, 2062, 413, 1704, |
nobuki | 0:e37991cede92 | 18 | 388, 655, 389, 657, 387, 656, 412, 1706, 386, 658, 385, 657, 412, 632, 387, 658, 385, 1729, 391, 655, |
nobuki | 0:e37991cede92 | 19 | 386, 1729, 413, 1705, 388, 657, 384, 1731, 414, 1706, 385, 1733, 409, 1707, 385, 1731, 411, 631, 388, 658, |
nobuki | 0:e37991cede92 | 20 | 385, 1730, 414, 630, 389, 656, 386, 658, 412, 630, 388, 658, 384, 659, 410, 630, 389, 658, 386, 659, |
nobuki | 0:e37991cede92 | 21 | 410, 630, 389, 1732, 410, 1704, 388, 658, 385, 655, 414, 1705, 389, 655, 386, 1730, 414, 1703, 388, 1731, |
nobuki | 0:e37991cede92 | 22 | 409, 633, 387, 659, 385, 660, 409, 630, 387, 660, 385, 1731, 386, 660, 383, 1731, 388, 655, 388, 658, |
nobuki | 0:e37991cede92 | 23 | 386, 657, 411, 631, 388, 658, 384, 1731, 413, 631, 389, 657, 384, 659, 410, 632, 384, 662, 358, 685, |
nobuki | 0:e37991cede92 | 24 | 386, 657, 386, 658, 385, 657, 412, 633, 386, 659, 382, 711, 360, 631, 388, 684, 358, 661, 409, 632, |
nobuki | 0:e37991cede92 | 25 | 386, 660, 383, 658, 388, 656, 387, 1732, 411, 1704, 387, 1732, 409, 632, 388, 659, 383, 658, 411, 631, |
nobuki | 0:e37991cede92 | 26 | 388, 1732, 386, 656, 388, 1731, 410, 633, 386, 660, 383, 658, 387, 657, 387, 659, 383, 684, 386, 634, |
nobuki | 0:e37991cede92 | 27 | 385, 1732, 408, 633, 385, 661, 358, 685, 408, 634, 386, 1732, 387, 656, 387, 1731, 386, 656, 387, 1733, |
nobuki | 0:e37991cede92 | 28 | 409, 632, 387, 659, 384, 1731, 411,}; |
nobuki | 0:e37991cede92 | 29 | // Turn OFF the power of Air Conditioner |
nobuki | 0:e37991cede92 | 30 | short ARRAY_HIGHLOW_OFF[] = { 5067, 2063, 411, 1706, 387, 658, 386, 656, 388, 656, 388, 1730, 411, 631, 389, 657, 386, 658, 385, 658, |
nobuki | 0:e37991cede92 | 31 | 386, 1729, 413, 631, 388, 1730, 388, 1730, 411, 631, 389, 1729, 388, 1728, 413, 1704, 388, 1732, 385, 1731, |
nobuki | 0:e37991cede92 | 32 | 411, 631, 389, 656, 386, 1730, 412, 631, 388, 657, 389, 655, 389, 654, 389, 655, 386, 658, 409, 1708, |
nobuki | 0:e37991cede92 | 33 | 386, 1730, 412, 1706, 410, 1708, 386, 1730, 412, 631, 388, 1730, 386, 1731, 387, 657, 389, 655, 386, 657, |
nobuki | 0:e37991cede92 | 34 | 410, 634, 384, 659, 386, 658, 387, 655, 389, 655, 388, 657, 387, 657, 386, 658, 385, 660, 385, 1730, |
nobuki | 0:e37991cede92 | 35 | 387, 1730, 411, 1705, 388, 1730, 387, 657, 388, 655, 388, 656, 386, 658, 408, 29198, 5067, 2062, 412, 1705, |
nobuki | 0:e37991cede92 | 36 | 389, 656, 389, 655, 437, 605, 386, 1731, 413, 631, 412, 632, 387, 658, 411, 632, 386, 1732, 411, 631, |
nobuki | 0:e37991cede92 | 37 | 388, 1729, 412, 1705, 388, 656, 386, 1731, 412, 1705, 386, 1731, 411, 1705, 388, 1733, 410, 631, 388, 658, |
nobuki | 0:e37991cede92 | 38 | 385, 1729, 412, 632, 389, 656, 386, 657, 412, 631, 388, 657, 385, 657, 414, 628, 391, 656, 388, 656, |
nobuki | 0:e37991cede92 | 39 | 412, 630, 386, 1732, 410, 1705, 389, 659, 384, 658, 411, 1705, 388, 656, 387, 1730, 411, 1705, 388, 658, |
nobuki | 0:e37991cede92 | 40 | 384, 659, 412, 630, 388, 658, 385, 657, 412, 631, 389, 1730, 411, 631, 387, 1729, 413, 632, 387, 660, |
nobuki | 0:e37991cede92 | 41 | 383, 659, 409, 634, 385, 660, 384, 1730, 412, 632, 388, 657, 360, 683, 411, 632, 386, 659, 385, 659, |
nobuki | 0:e37991cede92 | 42 | 412, 628, 391, 656, 388, 656, 409, 633, 386, 659, 357, 689, 408, 632, 388, 659, 383, 656, 413, 631, |
nobuki | 0:e37991cede92 | 43 | 388, 658, 385, 682, 387, 633, 386, 1732, 412, 1703, 387, 1731, 410, 633, 386, 659, 386, 656, 414, 630, |
nobuki | 0:e37991cede92 | 44 | 388, 1754, 413, 605, 412, 1706, 411, 632, 387, 658, 385, 660, 410, 632, 385, 659, 385, 660, 411, 628, |
nobuki | 0:e37991cede92 | 45 | 389, 1730, 412, 632, 387, 658, 385, 659, 410, 632, 385, 660, 386, 658, 412, 1703, 386, 659, 385, 1731, |
nobuki | 0:e37991cede92 | 46 | 388, 656, 386, 657, 411, 1707, 386, }; |
nobuki | 0:e37991cede92 | 47 | |
nobuki | 0:e37991cede92 | 48 | AnalogIn g_ain_temperature(p16); |
nobuki | 0:e37991cede92 | 49 | PwmOut g_pwmout(p21); |
nobuki | 0:e37991cede92 | 50 | |
nobuki | 0:e37991cede92 | 51 | RemoteControllerHandler::RemoteControllerHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : HTTPRequestHandler(rootPath, path, pTCPSocket) |
nobuki | 0:e37991cede92 | 52 | { |
nobuki | 0:e37991cede92 | 53 | DBG("RemoteControllerHandler()\r\n"); |
nobuki | 0:e37991cede92 | 54 | } |
nobuki | 0:e37991cede92 | 55 | |
nobuki | 0:e37991cede92 | 56 | RemoteControllerHandler::~RemoteControllerHandler() |
nobuki | 0:e37991cede92 | 57 | { |
nobuki | 0:e37991cede92 | 58 | DBG("~RemoteControllerHandler()\r\n"); |
nobuki | 0:e37991cede92 | 59 | } |
nobuki | 0:e37991cede92 | 60 | void RemoteControllerHandler::printString( const char* pszString ) |
nobuki | 0:e37991cede92 | 61 | { |
nobuki | 0:e37991cede92 | 62 | writeData( pszString, strlen(pszString) ); |
nobuki | 0:e37991cede92 | 63 | } |
nobuki | 0:e37991cede92 | 64 | |
nobuki | 0:e37991cede92 | 65 | double GetTemperature() |
nobuki | 0:e37991cede92 | 66 | { |
nobuki | 0:e37991cede92 | 67 | double dV = g_ain_temperature * 3.3; |
nobuki | 0:e37991cede92 | 68 | return dV * 100.0; |
nobuki | 0:e37991cede92 | 69 | } |
nobuki | 0:e37991cede92 | 70 | |
nobuki | 0:e37991cede92 | 71 | void RemoteControllerHandler::printHtml( int iSignalType = 0, int iIsCorrectPassCode = 0 ) |
nobuki | 0:e37991cede92 | 72 | { |
nobuki | 0:e37991cede92 | 73 | respHeaders()["Connection"] = "close"; |
nobuki | 0:e37991cede92 | 74 | |
nobuki | 0:e37991cede92 | 75 | printString("<html>\n"); |
nobuki | 0:e37991cede92 | 76 | printString("<head>\n"); |
nobuki | 0:e37991cede92 | 77 | printString("<title>Net Remote Controller</title>\n"); |
nobuki | 0:e37991cede92 | 78 | printString("</head>\n"); |
nobuki | 0:e37991cede92 | 79 | printString("<body>\n"); |
nobuki | 0:e37991cede92 | 80 | |
nobuki | 0:e37991cede92 | 81 | printString("<h1>Net Remote Controller</h1>\n"); |
nobuki | 0:e37991cede92 | 82 | printString( "Temperature : " ); |
nobuki | 0:e37991cede92 | 83 | char szTemperature[10]; |
nobuki | 0:e37991cede92 | 84 | sprintf( szTemperature, "%4.1f", GetTemperature() ); |
nobuki | 0:e37991cede92 | 85 | printString( szTemperature ); |
nobuki | 0:e37991cede92 | 86 | printString( " [degree]\n" ); |
nobuki | 0:e37991cede92 | 87 | |
nobuki | 0:e37991cede92 | 88 | printString("<hr>\n"); |
nobuki | 0:e37991cede92 | 89 | |
nobuki | 0:e37991cede92 | 90 | if( 1 == iSignalType ) |
nobuki | 0:e37991cede92 | 91 | { |
nobuki | 0:e37991cede92 | 92 | if( 0 == iIsCorrectPassCode ) |
nobuki | 0:e37991cede92 | 93 | { |
nobuki | 0:e37991cede92 | 94 | printString("<p><font color=\"#ff0000\">PassCode is wrong.</font></p>\n"); |
nobuki | 0:e37991cede92 | 95 | } |
nobuki | 0:e37991cede92 | 96 | else |
nobuki | 0:e37991cede92 | 97 | { |
nobuki | 0:e37991cede92 | 98 | printString("<p><font color=\"#008000\">ON signal was transmitted.</font></p>\n"); |
nobuki | 0:e37991cede92 | 99 | } |
nobuki | 0:e37991cede92 | 100 | } |
nobuki | 0:e37991cede92 | 101 | else if( 2 == iSignalType ) |
nobuki | 0:e37991cede92 | 102 | { |
nobuki | 0:e37991cede92 | 103 | if( 0 == iIsCorrectPassCode ) |
nobuki | 0:e37991cede92 | 104 | { |
nobuki | 0:e37991cede92 | 105 | printString("<p><font color=\"#ff0000\">PassCode is wrong.</font></p>\n"); |
nobuki | 0:e37991cede92 | 106 | } |
nobuki | 0:e37991cede92 | 107 | else |
nobuki | 0:e37991cede92 | 108 | { |
nobuki | 0:e37991cede92 | 109 | printString("<p><font color=\"#008000\">OFF signal was transmitted.</font></p>\n"); |
nobuki | 0:e37991cede92 | 110 | } |
nobuki | 0:e37991cede92 | 111 | } |
nobuki | 0:e37991cede92 | 112 | else |
nobuki | 0:e37991cede92 | 113 | { |
nobuki | 0:e37991cede92 | 114 | printString("<p><font color=\"#0000ff\">Select the type of signal, enter the PassCode, please click the submit button</font></p>\n"); |
nobuki | 0:e37991cede92 | 115 | } |
nobuki | 0:e37991cede92 | 116 | printString("<form method=\"post\" action=\"\">\n"); |
nobuki | 0:e37991cede92 | 117 | printString("<h3>Type of signal</h3>\n"); |
nobuki | 0:e37991cede92 | 118 | printString("<input type=\"radio\" name=\"signaltype\" value=\"0\" checked>None <input type=\"radio\" name=\"signaltype\" value=\"1\">On signal <input type=\"radio\" name=\"signaltype\" value=\"2\" >OFF signal <br>\n"); |
nobuki | 0:e37991cede92 | 119 | printString("<h3>PassCode</h3>\n"); |
nobuki | 0:e37991cede92 | 120 | printString("<input type=\"checkbox\" name=\"pc0\">0 <input type=\"checkbox\" name=\"pc1\">1 <input type=\"checkbox\" name=\"pc2\">2 <input type=\"checkbox\" name=\"pc3\">3 <input type=\"checkbox\" name=\"pc4\">4 <input type=\"checkbox\" name=\"pc5\">5 <input type=\"checkbox\" name=\"pc6\">6 <input type=\"checkbox\" name=\"pc7\">7<br>\n"); |
nobuki | 0:e37991cede92 | 121 | printString("<br>\n"); |
nobuki | 0:e37991cede92 | 122 | |
nobuki | 0:e37991cede92 | 123 | printString("<input type=\"submit\" value=\"submit\">\n"); |
nobuki | 0:e37991cede92 | 124 | printString("</form>\n"); |
nobuki | 0:e37991cede92 | 125 | |
nobuki | 0:e37991cede92 | 126 | printString("<hr>\n"); |
nobuki | 0:e37991cede92 | 127 | printString("</body>\n"); |
nobuki | 0:e37991cede92 | 128 | printString("</html>\n"); |
nobuki | 0:e37991cede92 | 129 | } |
nobuki | 0:e37991cede92 | 130 | |
nobuki | 0:e37991cede92 | 131 | void RemoteControllerHandler::doGet() |
nobuki | 0:e37991cede92 | 132 | { |
nobuki | 0:e37991cede92 | 133 | DBG("doGet()\r\n"); |
nobuki | 0:e37991cede92 | 134 | |
nobuki | 0:e37991cede92 | 135 | printHtml(); |
nobuki | 0:e37991cede92 | 136 | } |
nobuki | 0:e37991cede92 | 137 | |
nobuki | 0:e37991cede92 | 138 | void analyzePostData( char* pszLine, int& riSignalType, int& riPassCode ) |
nobuki | 0:e37991cede92 | 139 | { |
nobuki | 0:e37991cede92 | 140 | riSignalType = 0; |
nobuki | 0:e37991cede92 | 141 | riPassCode = 0; |
nobuki | 0:e37991cede92 | 142 | char* pszToken = strtok(pszLine, DELIMITER); |
nobuki | 0:e37991cede92 | 143 | while(pszToken) |
nobuki | 0:e37991cede92 | 144 | { |
nobuki | 0:e37991cede92 | 145 | if( 12 == strlen(pszToken) |
nobuki | 0:e37991cede92 | 146 | && 0 == strncmp(pszToken, "signaltype", 10) ) |
nobuki | 0:e37991cede92 | 147 | { // signaltype=0/1/2 |
nobuki | 0:e37991cede92 | 148 | if( '0' == pszToken[11] ){ riSignalType = 0; } |
nobuki | 0:e37991cede92 | 149 | else if( '1' == pszToken[11] ){ riSignalType = 1; } |
nobuki | 0:e37991cede92 | 150 | else if( '2' == pszToken[11] ){ riSignalType = 2; } |
nobuki | 0:e37991cede92 | 151 | } |
nobuki | 0:e37991cede92 | 152 | else if( 6 == strlen(pszToken) |
nobuki | 0:e37991cede92 | 153 | && 0 == strncmp(pszToken, "pc", 2) ) |
nobuki | 0:e37991cede92 | 154 | { // pc?=on |
nobuki | 0:e37991cede92 | 155 | riPassCode |= (1 << (pszToken[2] - '0')); |
nobuki | 0:e37991cede92 | 156 | } |
nobuki | 0:e37991cede92 | 157 | pszToken = strtok(NULL, DELIMITER); |
nobuki | 0:e37991cede92 | 158 | } |
nobuki | 0:e37991cede92 | 159 | } |
nobuki | 0:e37991cede92 | 160 | |
nobuki | 0:e37991cede92 | 161 | void sendSignal( int iSignalType ) |
nobuki | 0:e37991cede92 | 162 | { |
nobuki | 0:e37991cede92 | 163 | g_pwmout.period_us( 26 ); // 38KHz => 1/38000[s] = 26.315 * 10 ^ 6 [s] = 26.315 [us] |
nobuki | 0:e37991cede92 | 164 | |
nobuki | 0:e37991cede92 | 165 | short* aHighLow = NULL; |
nobuki | 0:e37991cede92 | 166 | int iCountHighLow = 0; |
nobuki | 0:e37991cede92 | 167 | if( 1 == iSignalType ) |
nobuki | 0:e37991cede92 | 168 | { |
nobuki | 0:e37991cede92 | 169 | aHighLow = ARRAY_HIGHLOW_ON; |
nobuki | 0:e37991cede92 | 170 | iCountHighLow = sizeof( ARRAY_HIGHLOW_ON ) / sizeof( ARRAY_HIGHLOW_ON[0] ); |
nobuki | 0:e37991cede92 | 171 | } |
nobuki | 0:e37991cede92 | 172 | else if( 2 == iSignalType ) |
nobuki | 0:e37991cede92 | 173 | { |
nobuki | 0:e37991cede92 | 174 | aHighLow = ARRAY_HIGHLOW_OFF; |
nobuki | 0:e37991cede92 | 175 | iCountHighLow = sizeof( ARRAY_HIGHLOW_OFF ) / sizeof( ARRAY_HIGHLOW_OFF[0] ); |
nobuki | 0:e37991cede92 | 176 | } |
nobuki | 0:e37991cede92 | 177 | |
nobuki | 0:e37991cede92 | 178 | if( NULL == aHighLow ) |
nobuki | 0:e37991cede92 | 179 | { |
nobuki | 0:e37991cede92 | 180 | return; |
nobuki | 0:e37991cede92 | 181 | } |
nobuki | 0:e37991cede92 | 182 | |
nobuki | 0:e37991cede92 | 183 | DBG( "CountHighLow = % d\r\n", iCountHighLow ); |
nobuki | 0:e37991cede92 | 184 | for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ ) |
nobuki | 0:e37991cede92 | 185 | { |
nobuki | 0:e37991cede92 | 186 | g_pwmout.write( 0.5 * (1 - (iIndexHighLow % 2)) ); // iIndexHighLow : even number -> 0.5, uneven number -> 0 |
nobuki | 0:e37991cede92 | 187 | wait_us( aHighLow[iIndexHighLow] ); |
nobuki | 0:e37991cede92 | 188 | } |
nobuki | 0:e37991cede92 | 189 | } |
nobuki | 0:e37991cede92 | 190 | |
nobuki | 0:e37991cede92 | 191 | void RemoteControllerHandler::doPost() |
nobuki | 0:e37991cede92 | 192 | { |
nobuki | 0:e37991cede92 | 193 | DBG("doPost()\r\n"); |
nobuki | 0:e37991cede92 | 194 | |
nobuki | 0:e37991cede92 | 195 | int iCountData = dataLen(); |
nobuki | 0:e37991cede92 | 196 | if( 0 == iCountData ) |
nobuki | 0:e37991cede92 | 197 | { |
nobuki | 0:e37991cede92 | 198 | printHtml(); |
nobuki | 0:e37991cede92 | 199 | return; |
nobuki | 0:e37991cede92 | 200 | } |
nobuki | 0:e37991cede92 | 201 | |
nobuki | 0:e37991cede92 | 202 | char* pszData = (char*) malloc( sizeof(char) * (iCountData + 1) ); |
nobuki | 0:e37991cede92 | 203 | readData( pszData, iCountData ); |
nobuki | 0:e37991cede92 | 204 | pszData[iCountData] = '\0'; |
nobuki | 0:e37991cede92 | 205 | |
nobuki | 0:e37991cede92 | 206 | DBG( pszData ); |
nobuki | 0:e37991cede92 | 207 | |
nobuki | 0:e37991cede92 | 208 | int iSignalType = 0; |
nobuki | 0:e37991cede92 | 209 | int iPassCode = 0; |
nobuki | 0:e37991cede92 | 210 | analyzePostData( pszData, iSignalType, iPassCode ); |
nobuki | 0:e37991cede92 | 211 | |
nobuki | 0:e37991cede92 | 212 | #ifdef CHECK_PASSCODE |
nobuki | 0:e37991cede92 | 213 | // Check the PassCode |
nobuki | 0:e37991cede92 | 214 | int iIsCorrectPassCode = 0; |
nobuki | 0:e37991cede92 | 215 | if( PASSCODE == iPassCode ) |
nobuki | 0:e37991cede92 | 216 | { |
nobuki | 0:e37991cede92 | 217 | iIsCorrectPassCode = 1; |
nobuki | 0:e37991cede92 | 218 | } |
nobuki | 0:e37991cede92 | 219 | // Send Signal |
nobuki | 0:e37991cede92 | 220 | if( 1 == iIsCorrectPassCode ) |
nobuki | 0:e37991cede92 | 221 | { |
nobuki | 0:e37991cede92 | 222 | sendSignal( iSignalType ); |
nobuki | 0:e37991cede92 | 223 | } |
nobuki | 0:e37991cede92 | 224 | #else |
nobuki | 0:e37991cede92 | 225 | int iIsCorrectPassCode = 1; |
nobuki | 0:e37991cede92 | 226 | sendSignal( iSignalType ); |
nobuki | 0:e37991cede92 | 227 | #endif |
nobuki | 0:e37991cede92 | 228 | |
nobuki | 0:e37991cede92 | 229 | printHtml( iSignalType, iIsCorrectPassCode ); |
nobuki | 0:e37991cede92 | 230 | } |
nobuki | 0:e37991cede92 | 231 | |
nobuki | 0:e37991cede92 | 232 | void RemoteControllerHandler::doHead() |
nobuki | 0:e37991cede92 | 233 | { |
nobuki | 0:e37991cede92 | 234 | DBG("doHead()\r\n"); |
nobuki | 0:e37991cede92 | 235 | } |
nobuki | 0:e37991cede92 | 236 | |
nobuki | 0:e37991cede92 | 237 | void RemoteControllerHandler::onReadable() //Data has been read |
nobuki | 0:e37991cede92 | 238 | { |
nobuki | 0:e37991cede92 | 239 | DBG("onReadable()\r\n"); |
nobuki | 0:e37991cede92 | 240 | } |
nobuki | 0:e37991cede92 | 241 | |
nobuki | 0:e37991cede92 | 242 | void RemoteControllerHandler::onWriteable() //Data has been written & buf is free |
nobuki | 0:e37991cede92 | 243 | { |
nobuki | 0:e37991cede92 | 244 | DBG("onWriteable()\r\n"); |
nobuki | 0:e37991cede92 | 245 | close(); //Data written, we can close the connection |
nobuki | 0:e37991cede92 | 246 | } |
nobuki | 0:e37991cede92 | 247 | |
nobuki | 0:e37991cede92 | 248 | void RemoteControllerHandler::onClose() //Connection is closing |
nobuki | 0:e37991cede92 | 249 | { |
nobuki | 0:e37991cede92 | 250 | DBG("onClose()\r\n"); |
nobuki | 0:e37991cede92 | 251 | } |