Test of Embedded Artists LPCXpresso baseboard SD card and ethernet facilities. This program downloads files from a website to the SD card. This program now uses the HTTPClient from: http://mbed.org/users/donatien/programs/HTTPClient/latest which downloads the files without errors. The previous version of this program was used to demonstrate that an earlier HTTPClient downloaded files with errors.

Dependencies:   EthernetNetIf mbed

main.cpp

Committer:
tom_coxon
Date:
2010-07-09
Revision:
0:1b55f626a40f
Child:
1:0734a7b0fd5e

File content as of revision 0:1b55f626a40f:

/*
 Demo of Embedded Artists LPCXpresso baseboard SD card and ethernet facilities.

 This program downloads three files from a website to the SD card.
 
 SD Card setup:
 
 1. Insert all five jumpers in J39 as described in section 4.3.3
 of base board users guide.
 
 2. Remove jumper marked "A" in J55 In order to connect PIO1_11 
 to CS signal of J40 (the SPI-SSEL signal)  as described in section 4.3.3
 of base board users guide.
 
 Please note that there seems to be some problem with the libraries used.  This program
 downloads the files to the SD card but often looses some of the file data.
 
*/

#include "mbed.h"
#include "SDFileSystem.h"
#include "HTTPClient.h"

DigitalOut led1(LED1);// blinks when all done
DigitalOut led4(LED4);// blinks during file download

HTTPClient http;

Ticker tick;

SDFileSystem sd(p5, p6, p7, p24, "sd");

void blinkLED4() {
    led4 = !led4;
}

void dowloadFileToSD(char *url, char *path) {

    // Open a file to write.
    FILE *fd = fopen(path, "w");
    if (fd == NULL) {
        error("Can not write to SD, check SD and reset mbed.\r\n");
    }

    printf("Downloading to ");
    printf("%s", path);
    printf(" please wait ... \r\n");

    tick.attach(& blinkLED4, 0.5);
    
    http.get(url, fd);

    // Close the file.
    fclose(fd);

    tick.detach();

    printf("File downloaded to SD card\r\n");
    led4 = 0;
}


int main(void) {

    printf("\r\n----------- Starting ------------\r\n");

    printf("Initialising NetServer ....\r\n");
    //Initialize NetServer which obtains our DHCP address and gets the network interface ready
    NetServer * net = NetServer::ready();

    printf("\r\nNetwork interface is up\r\n");
    
    dowloadFileToSD("http://homepage.ntlworld.com/green_bean/mbed/bong.wav", "/sd/bong.wav" );
    dowloadFileToSD("http://homepage.ntlworld.com/green_bean/mbed/quarter.wav", "/sd/quarter.wav" );
    dowloadFileToSD("http://homepage.ntlworld.com/green_bean/mbed/hour.wav", "/sd/hour.wav" );

    printf("-------------- All done ------------\r\n");

    while (1) {
        led1 = !led1;
        wait(0.2);
    }
}