This short program illustrates how to use the DS130x_I2C library. My objective is to share the same RTC with Microchip 18F MCU.

Dependencies:   mbed DebugLibrary

Committer:
Yann
Date:
Wed Feb 09 13:57:49 2011 +0000
Revision:
0:f30e2135b0db
V0.0.0.1

Who changed what in which revision?

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