FileDownloader.cpp
- Committer:
- FrankWeissenborn
- Date:
- 2011-01-30
- Revision:
- 7:f652d1e054e9
- Parent:
- 2:0e9a10f2b8c5
File content as of revision 7:f652d1e054e9:
#include "FileDownloader.h" #include "SDFileSystem.h" extern SDFileSystem sd; HTTPResult result; bool completed = false; HTTPClient http; HTTPStream stream; void request_callback(HTTPResult r) { result = r; completed = true; } HTTPResult GetFile(const char *uri, const char *filename, FILE *fp, char * buffer, int buffer_size) { completed = false; fp = fopen(filename, "w"); if(fp == NULL) { error("Could not open file for write\n"); } else { printf("Opened file\r\n"); } buffer[buffer_size-1] = 0x00; stream.readNext((byte*)buffer, buffer_size-2); //Point to buffer for the first read HTTPResult r = http.get(uri, &stream, request_callback); while (!completed) { Net::poll(); //Polls the Networking stack if (stream.readable()) { buffer[stream.readLen()] = 0; //Transform this buffer in a zero-terminated char* string int p=0; while (buffer[p] != 0) { fprintf(fp,"%c",buffer[p]); p++; } stream.readNext((byte*)buffer, buffer_size-2); //Buffer has been read, now we can put more data in it } } fclose(fp); return result; }