mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   EthernetNetIf SDHCFileSystem I2CLEDDisp Agentbed NTPClient_NetServices mbed BMP085 HTTPClient ConfigFile I2CLCD

Committer:
okini3939
Date:
Fri Dec 10 17:15:15 2010 +0000
Revision:
0:4265d973a98f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:4265d973a98f 1
okini3939 0:4265d973a98f 2 /*
okini3939 0:4265d973a98f 3 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
okini3939 0:4265d973a98f 4
okini3939 0:4265d973a98f 5 Permission is hereby granted, free of charge, to any person obtaining a copy
okini3939 0:4265d973a98f 6 of this software and associated documentation files (the "Software"), to deal
okini3939 0:4265d973a98f 7 in the Software without restriction, including without limitation the rights
okini3939 0:4265d973a98f 8 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
okini3939 0:4265d973a98f 9 copies of the Software, and to permit persons to whom the Software is
okini3939 0:4265d973a98f 10 furnished to do so, subject to the following conditions:
okini3939 0:4265d973a98f 11
okini3939 0:4265d973a98f 12 The above copyright notice and this permission notice shall be included in
okini3939 0:4265d973a98f 13 all copies or substantial portions of the Software.
okini3939 0:4265d973a98f 14
okini3939 0:4265d973a98f 15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
okini3939 0:4265d973a98f 16 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
okini3939 0:4265d973a98f 17 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
okini3939 0:4265d973a98f 18 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
okini3939 0:4265d973a98f 19 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
okini3939 0:4265d973a98f 20 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
okini3939 0:4265d973a98f 21 THE SOFTWARE.
okini3939 0:4265d973a98f 22 */
okini3939 0:4265d973a98f 23
okini3939 0:4265d973a98f 24 /** \file
okini3939 0:4265d973a98f 25 HTTP File data source/sink header file
okini3939 0:4265d973a98f 26 */
okini3939 0:4265d973a98f 27
okini3939 0:4265d973a98f 28 #ifndef HTTP_FILE_H
okini3939 0:4265d973a98f 29 #define HTTP_FILE_H
okini3939 0:4265d973a98f 30
okini3939 0:4265d973a98f 31 #include "../HTTPData.h"
okini3939 0:4265d973a98f 32 #include "mbed.h"
okini3939 0:4265d973a98f 33
okini3939 0:4265d973a98f 34 ///HTTP Client data container for files
okini3939 0:4265d973a98f 35 /**
okini3939 0:4265d973a98f 36 This class provides file access/storage for HTTP requests and responses' data payloads.
okini3939 0:4265d973a98f 37
okini3939 0:4265d973a98f 38
okini3939 0:4265d973a98f 39 */
okini3939 0:4265d973a98f 40 class HTTPFile : public HTTPData //Read or Write data from a file
okini3939 0:4265d973a98f 41 {
okini3939 0:4265d973a98f 42 public:
okini3939 0:4265d973a98f 43 ///Instantiates data source/sink with file in param.
okini3939 0:4265d973a98f 44 /**
okini3939 0:4265d973a98f 45 Uses file at path @a path.
okini3939 0:4265d973a98f 46 It will be opened when some data has to be read/written from/to it and closed when this operation is complete or on destruction of the instance.
okini3939 0:4265d973a98f 47 Note that the file will be opened with mode "w" for writing and mode "r" for reading, so the file will be cleared between each request if you are using it for writing.
okini3939 0:4265d973a98f 48
okini3939 0:4265d973a98f 49 @note
okini3939 0:4265d973a98f 50 Note that to use this you must instantiate a proper file system (such as the LocalFileSystem or the SDFileSystem).
okini3939 0:4265d973a98f 51 */
okini3939 0:4265d973a98f 52 HTTPFile(const char* path);
okini3939 0:4265d973a98f 53 virtual ~HTTPFile();
okini3939 0:4265d973a98f 54
okini3939 0:4265d973a98f 55 ///Forces file closure
okini3939 0:4265d973a98f 56 virtual void clear();
okini3939 0:4265d973a98f 57
okini3939 0:4265d973a98f 58 protected:
okini3939 0:4265d973a98f 59 virtual int read(char* buf, int len);
okini3939 0:4265d973a98f 60 virtual int write(const char* buf, int len);
okini3939 0:4265d973a98f 61
okini3939 0:4265d973a98f 62 virtual string getDataType(); //Internet media type for Content-Type header
okini3939 0:4265d973a98f 63 virtual void setDataType(const string& type); //Internet media type from Content-Type header
okini3939 0:4265d973a98f 64
okini3939 0:4265d973a98f 65 virtual bool getIsChunked(); //For Transfer-Encoding header
okini3939 0:4265d973a98f 66 virtual void setIsChunked(bool chunked); //From Transfer-Encoding header virtual
okini3939 0:4265d973a98f 67
okini3939 0:4265d973a98f 68 virtual int getDataLen(); //For Content-Length header
okini3939 0:4265d973a98f 69 virtual void setDataLen(int len); //From Content-Length header
okini3939 0:4265d973a98f 70
okini3939 0:4265d973a98f 71 private:
okini3939 0:4265d973a98f 72 bool openFile(const char* mode); //true on success, false otherwise
okini3939 0:4265d973a98f 73 void closeFile();
okini3939 0:4265d973a98f 74
okini3939 0:4265d973a98f 75 FILE* m_fp;
okini3939 0:4265d973a98f 76 string m_path;
okini3939 0:4265d973a98f 77 int m_len;
okini3939 0:4265d973a98f 78 bool m_chunked;
okini3939 0:4265d973a98f 79 };
okini3939 0:4265d973a98f 80
okini3939 0:4265d973a98f 81 #endif