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:
marcel1691
Date:
Sat Jan 17 14:11:01 2015 +0000
Revision:
1:2e29a33cd918
Beispiel fuer Verwendung der HTTP Methoden (GET, POST, PUT, DELETE)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcel1691 1:2e29a33cd918 1 #include "HTTPFile.h"
marcel1691 1:2e29a33cd918 2
marcel1691 1:2e29a33cd918 3 //#define DEBUG "HTfi"
marcel1691 1:2e29a33cd918 4 #include <cstdio>
marcel1691 1:2e29a33cd918 5 #if (defined(DEBUG) && !defined(TARGET_LPC11U24))
marcel1691 1:2e29a33cd918 6 #define DBG(x, ...) std::printf("[DBG %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
marcel1691 1:2e29a33cd918 7 #define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
marcel1691 1:2e29a33cd918 8 #define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
marcel1691 1:2e29a33cd918 9 #define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__);
marcel1691 1:2e29a33cd918 10 #else
marcel1691 1:2e29a33cd918 11 #define DBG(x, ...)
marcel1691 1:2e29a33cd918 12 #define WARN(x, ...)
marcel1691 1:2e29a33cd918 13 #define ERR(x, ...)
marcel1691 1:2e29a33cd918 14 #define INFO(x, ...)
marcel1691 1:2e29a33cd918 15 #endif
marcel1691 1:2e29a33cd918 16
marcel1691 1:2e29a33cd918 17 HTTPFile::HTTPFile(char* filename) {
marcel1691 1:2e29a33cd918 18 INFO("HTTPFile %s", filename);
marcel1691 1:2e29a33cd918 19 file = fopen(filename, "w");
marcel1691 1:2e29a33cd918 20 m_chunked = false;
marcel1691 1:2e29a33cd918 21 }
marcel1691 1:2e29a33cd918 22
marcel1691 1:2e29a33cd918 23 void HTTPFile::close() {
marcel1691 1:2e29a33cd918 24 INFO("close()");
marcel1691 1:2e29a33cd918 25 if (file) {
marcel1691 1:2e29a33cd918 26 fclose(file);
marcel1691 1:2e29a33cd918 27 file = NULL;
marcel1691 1:2e29a33cd918 28 }
marcel1691 1:2e29a33cd918 29 }
marcel1691 1:2e29a33cd918 30
marcel1691 1:2e29a33cd918 31 void HTTPFile::writeReset() {
marcel1691 1:2e29a33cd918 32 INFO("writeReset()");
marcel1691 1:2e29a33cd918 33 if (file) {
marcel1691 1:2e29a33cd918 34 rewind(file);
marcel1691 1:2e29a33cd918 35 }
marcel1691 1:2e29a33cd918 36 }
marcel1691 1:2e29a33cd918 37
marcel1691 1:2e29a33cd918 38 int HTTPFile::write(const char* buf, size_t len) {
marcel1691 1:2e29a33cd918 39 size_t written;
marcel1691 1:2e29a33cd918 40 INFO("write(%d,%s) m_len(%d), chunk %d", len, buf, m_len, m_chunked);
marcel1691 1:2e29a33cd918 41 if (file) {
marcel1691 1:2e29a33cd918 42 written = fwrite(buf, 1, len, file);
marcel1691 1:2e29a33cd918 43 INFO(" writ:%d, ftell: %d", written, ftell(file));
marcel1691 1:2e29a33cd918 44 if ((!m_chunked && (ftell(file) >= m_len)) || (m_chunked && !written)) {
marcel1691 1:2e29a33cd918 45 INFO("closing");
marcel1691 1:2e29a33cd918 46 close();
marcel1691 1:2e29a33cd918 47 }
marcel1691 1:2e29a33cd918 48 }
marcel1691 1:2e29a33cd918 49 return len;
marcel1691 1:2e29a33cd918 50 }
marcel1691 1:2e29a33cd918 51
marcel1691 1:2e29a33cd918 52 void HTTPFile::setDataType(const char* type) {
marcel1691 1:2e29a33cd918 53 INFO("setDataType(%s)", type);
marcel1691 1:2e29a33cd918 54 }
marcel1691 1:2e29a33cd918 55
marcel1691 1:2e29a33cd918 56 //void HTTPFile::setLocation(const char * location) {
marcel1691 1:2e29a33cd918 57 //
marcel1691 1:2e29a33cd918 58 //}
marcel1691 1:2e29a33cd918 59
marcel1691 1:2e29a33cd918 60 void HTTPFile::setIsChunked(bool chunked) {
marcel1691 1:2e29a33cd918 61 INFO("setIsChunked(%d)", chunked);
marcel1691 1:2e29a33cd918 62 m_chunked = chunked;
marcel1691 1:2e29a33cd918 63 }
marcel1691 1:2e29a33cd918 64
marcel1691 1:2e29a33cd918 65 void HTTPFile::setDataLen(size_t len) {
marcel1691 1:2e29a33cd918 66 INFO("setDataLen(%d)", len);
marcel1691 1:2e29a33cd918 67 m_len = len;
marcel1691 1:2e29a33cd918 68 }