WIZ820io(W5200) network interface、EthernetNetIf compatible.

/media/uploads/va009039/wiz820ionetif.jpg

example

#include "WIZ820ioNetIf.h"
#include "HTTPClient.h"
#include "HTTPServer.h"

#if defined(TARGET_KL25Z)
WIZ820ioNetIf eth(PTD2,PTD3,PTD1,PTD0,PTD5);
#endif
HTTPClient http;
HTTPStream stream;

void callback(HTTPResult r){
    printf("callback %d %s\n", r, HTTPClient::ResultStr(r));
}

int main() {
    int err = eth.setup();
    if (err < 0) {
        printf("setup error %d\n", err);
        exit(-1);
    }    

    HTTPServer svr;
    svr.addHandler<SimpleHandler>("/");
    svr.bind(80);

    const char* uri = "http://va009039-mbed.appspot.com/kl25z/";
    http.get(uri, &stream, callback);
    uint8_t buf[256];
    int total = 0;
    stream.readNext(buf, sizeof(buf));
    while(1) {
        if(stream.readable()) {
            int len = stream.readLen();
            total += len;
            printf("%d %d\n", total, len);
            stream.readNext(buf, sizeof(buf));
        }
        Net::poll();
    }
}
Committer:
va009039
Date:
Sun Mar 24 11:25:31 2013 +0000
Revision:
1:22b9052d864d
WIZ820io(W8200) ethernet interface, EthernetNetIf compatible.

Who changed what in which revision?

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