10.1 Kombiniert die Übung 6.4 Wenn sich jemand nähert, Lauflicht einschalten mit dem Yahoo Weather Dienst, dass bei Unterwarnungen das Lauflicht eingeschaltet wird.

Dependencies:   EthernetInterface mbed-rtos mbed spxml

Fork of YahooWeather by smd.iotkit2.ch

Committer:
stefan1691
Date:
Wed May 27 17:23:55 2015 +0000
Revision:
6:735d5412de0d
Parent:
1:2e29a33cd918
10.1 Kombiniert die ?bung 6.4 Wenn sich jemand n?hert, Lauflicht einschalten mit dem Yahoo Weather Dienst, dass bei Unterwarnungen das Lauflicht eingeschaltet wird.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 1:2e29a33cd918 1 /* HTTPText.cpp */
marcel1691 1:2e29a33cd918 2 /* Copyright (C) 2012 mbed.org, MIT License
marcel1691 1:2e29a33cd918 3 *
marcel1691 1:2e29a33cd918 4 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
marcel1691 1:2e29a33cd918 5 * and associated documentation files (the "Software"), to deal in the Software without restriction,
marcel1691 1:2e29a33cd918 6 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
marcel1691 1:2e29a33cd918 7 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
marcel1691 1:2e29a33cd918 8 * furnished to do so, subject to the following conditions:
marcel1691 1:2e29a33cd918 9 *
marcel1691 1:2e29a33cd918 10 * The above copyright notice and this permission notice shall be included in all copies or
marcel1691 1:2e29a33cd918 11 * substantial portions of the Software.
marcel1691 1:2e29a33cd918 12 *
marcel1691 1:2e29a33cd918 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
marcel1691 1:2e29a33cd918 14 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
marcel1691 1:2e29a33cd918 15 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
marcel1691 1:2e29a33cd918 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
marcel1691 1:2e29a33cd918 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
marcel1691 1:2e29a33cd918 18 */
marcel1691 1:2e29a33cd918 19
marcel1691 1:2e29a33cd918 20 #include "HTTPText.h"
marcel1691 1:2e29a33cd918 21
marcel1691 1:2e29a33cd918 22 #include <cstring>
marcel1691 1:2e29a33cd918 23
marcel1691 1:2e29a33cd918 24 #define OK 0
marcel1691 1:2e29a33cd918 25
marcel1691 1:2e29a33cd918 26 using std::memcpy;
marcel1691 1:2e29a33cd918 27 using std::strncpy;
marcel1691 1:2e29a33cd918 28 using std::strlen;
marcel1691 1:2e29a33cd918 29
marcel1691 1:2e29a33cd918 30 #define MIN(x,y) (((x)<(y))?(x):(y))
marcel1691 1:2e29a33cd918 31
marcel1691 1:2e29a33cd918 32 HTTPText::HTTPText(char* str) : m_str(str), m_pos(0)
marcel1691 1:2e29a33cd918 33 {
marcel1691 1:2e29a33cd918 34 m_size = strlen(str) + 1;
marcel1691 1:2e29a33cd918 35 }
marcel1691 1:2e29a33cd918 36
marcel1691 1:2e29a33cd918 37 HTTPText::HTTPText(char* str, size_t size) : m_str(str), m_size(size), m_pos(0)
marcel1691 1:2e29a33cd918 38 {
marcel1691 1:2e29a33cd918 39
marcel1691 1:2e29a33cd918 40 }
marcel1691 1:2e29a33cd918 41
marcel1691 1:2e29a33cd918 42 //IHTTPDataIn
marcel1691 1:2e29a33cd918 43 /*virtual*/ void HTTPText::readReset()
marcel1691 1:2e29a33cd918 44 {
marcel1691 1:2e29a33cd918 45 m_pos = 0;
marcel1691 1:2e29a33cd918 46 }
marcel1691 1:2e29a33cd918 47
marcel1691 1:2e29a33cd918 48 /*virtual*/ int HTTPText::read(char* buf, size_t len, size_t* pReadLen)
marcel1691 1:2e29a33cd918 49 {
marcel1691 1:2e29a33cd918 50 *pReadLen = MIN(len, m_size - 1 - m_pos);
marcel1691 1:2e29a33cd918 51 memcpy(buf, m_str + m_pos, *pReadLen);
marcel1691 1:2e29a33cd918 52 m_pos += *pReadLen;
marcel1691 1:2e29a33cd918 53 return OK;
marcel1691 1:2e29a33cd918 54 }
marcel1691 1:2e29a33cd918 55
marcel1691 1:2e29a33cd918 56 /*virtual*/ int HTTPText::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
marcel1691 1:2e29a33cd918 57 {
marcel1691 1:2e29a33cd918 58 strncpy(type, "text/plain", maxTypeLen-1);
marcel1691 1:2e29a33cd918 59 type[maxTypeLen-1] = '\0';
marcel1691 1:2e29a33cd918 60 return OK;
marcel1691 1:2e29a33cd918 61 }
marcel1691 1:2e29a33cd918 62
marcel1691 1:2e29a33cd918 63 /*virtual*/ bool HTTPText::getIsChunked() //For Transfer-Encoding header
marcel1691 1:2e29a33cd918 64 {
marcel1691 1:2e29a33cd918 65 return false;
marcel1691 1:2e29a33cd918 66 }
marcel1691 1:2e29a33cd918 67
marcel1691 1:2e29a33cd918 68 /*virtual*/ size_t HTTPText::getDataLen() //For Content-Length header
marcel1691 1:2e29a33cd918 69 {
marcel1691 1:2e29a33cd918 70 return m_size - 1;
marcel1691 1:2e29a33cd918 71 }
marcel1691 1:2e29a33cd918 72
marcel1691 1:2e29a33cd918 73 //IHTTPDataOut
marcel1691 1:2e29a33cd918 74 /*virtual*/ void HTTPText::writeReset()
marcel1691 1:2e29a33cd918 75 {
marcel1691 1:2e29a33cd918 76 m_pos = 0;
marcel1691 1:2e29a33cd918 77 }
marcel1691 1:2e29a33cd918 78
marcel1691 1:2e29a33cd918 79 /*virtual*/ int HTTPText::write(const char* buf, size_t len)
marcel1691 1:2e29a33cd918 80 {
marcel1691 1:2e29a33cd918 81 size_t writeLen = MIN(len, m_size - 1 - m_pos);
marcel1691 1:2e29a33cd918 82 memcpy(m_str + m_pos, buf, writeLen);
marcel1691 1:2e29a33cd918 83 m_pos += writeLen;
marcel1691 1:2e29a33cd918 84 m_str[m_pos] = '\0';
marcel1691 1:2e29a33cd918 85 return OK;
marcel1691 1:2e29a33cd918 86 }
marcel1691 1:2e29a33cd918 87
marcel1691 1:2e29a33cd918 88 /*virtual*/ void HTTPText::setDataType(const char* type) //Internet media type from Content-Type header
marcel1691 1:2e29a33cd918 89 {
marcel1691 1:2e29a33cd918 90
marcel1691 1:2e29a33cd918 91 }
marcel1691 1:2e29a33cd918 92
marcel1691 1:2e29a33cd918 93 /*virtual*/ void HTTPText::setIsChunked(bool chunked) //From Transfer-Encoding header
marcel1691 1:2e29a33cd918 94 {
marcel1691 1:2e29a33cd918 95
marcel1691 1:2e29a33cd918 96 }
marcel1691 1:2e29a33cd918 97
marcel1691 1:2e29a33cd918 98 /*virtual*/ void HTTPText::setDataLen(size_t len) //From Content-Length header, or if the transfer is chunked, next chunk length
marcel1691 1:2e29a33cd918 99 {
marcel1691 1:2e29a33cd918 100
marcel1691 1:2e29a33cd918 101 }
marcel1691 1:2e29a33cd918 102
marcel1691 1:2e29a33cd918 103
marcel1691 1:2e29a33cd918 104