![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
A simple Firmware Updating program.
Dependencies: FirmwareUpdater NetServices RPCInterface mbed
Fork of NetServices_HelloWorld by
Diff: main.cpp
- Revision:
- 6:b17ac63d5981
- Parent:
- 5:1e77bdd1a639
--- a/main.cpp Wed Dec 15 18:03:19 2010 +0000 +++ b/main.cpp Sat Mar 09 02:40:16 2013 +0000 @@ -1,96 +1,36 @@ #include "mbed.h" +#include "FirmwareUpdater.h" #include "EthernetNetIf.h" #include "HTTPClient.h" #include "NTPClient.h" #include "HTTPServer.h" #include "RPCFunction.h" - -#define HOSTNAME "mbedSE" - -EthernetNetIf eth(HOSTNAME); -HTTPClient http; -NTPClient ntp; -HTTPServer svr; - -DigitalOut led1(LED1, "led1"); -DigitalOut led2(LED2, "led2"); -DigitalOut led3(LED3, "led3"); -DigitalOut led4(LED4, "led4"); - -void DoEcho(char* input, char* output); -RPCFunction Echo(&DoEcho, "echo"); - -void DoEcho(char* input, char* output) { - printf("%s\n", input); - strcpy(output, input); -} - -int main() { - - printf("\n\n/* Segundo Equipo NetServices library demonstration */\n"); - printf("Try starting the program with the network disconnected and then connect after a few timeouts reported\n\n"); - EthernetErr ethErr; - int count = 0; - do { - printf("Setting up %d...\n", ++count); - ethErr = eth.setup(); - if (ethErr) printf("Timeout\n", ethErr); - } while (ethErr != ETH_OK); - - printf("Connected OK\n"); - const char* hwAddr = eth.getHwAddr(); - printf("HW address : %02x:%02x:%02x:%02x:%02x:%02x\n", - hwAddr[0], hwAddr[1], hwAddr[2], - hwAddr[3], hwAddr[4], hwAddr[5]); - - IpAddr ethIp = eth.getIp(); - printf("IP address : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]); - printf("Check router DHCP table for name : %s\n", eth.getHostname()); - - printf("\nHTTPClient get...\n"); - HTTPText txt; - HTTPResult r = http.get("http://mbed.org/media/uploads/donatien/hello.txt", &txt); - if (r==HTTP_OK) { - printf("Result ok : %s\n", txt.gets()); - } else { - printf("Error %d\n", r); - } - - time_t ctTime; - ctTime = time(NULL); - printf("\nCurrent time is (UTC): %d %s\n", ctTime, ctime(&ctTime)); - printf("NTP setTime...\n"); - Host server(IpAddr(), 123, "pool.ntp.org"); - printf("Result : %d\n", ntp.setTime(server)); - - ctTime = time(NULL); - printf("\nTime is now (UTC): %d %s\n", ctTime, ctime(&ctTime)); - - printf("NTP setTime to a deliberately incorrect server...\n"); - server.setName("www.google.com"); - printf("Result : %d\n", ntp.setTime(server)); - - ctTime = time(NULL); - printf("\nTime should still be correct (UTC): %d %s\n", ctTime, ctime(&ctTime)); - - char ip[16]; - sprintf(ip, "%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]); - -#define PORT 80 - svr.addHandler<RPCHandler>("/rpc"); - svr.bind(PORT); - printf("Server listening (port %d)\n", PORT); - printf("- LED1 should flash\n"); - printf("- type into browser to test url decode : %s/rpc/echo/run \"quoted string with <>\" or http://192.168.1.103/rpc/echo/run%%20%%22quoted%%20string%%20with%%20%%3C%%3E%%22\n", ip); - - Timer tm; - tm.start(); - - while (true) { - Net::poll(); - if (tm.read() > 0.5) { - led1 = !led1; - tm.start(); + +EthernetNetIf eth; +FirmwareUpdater fwup("http://mbed.org/media/uploads/shintamainjp/", "firm_LPC1768", true); + +// There are 2 files for the firmware. +// 1. firm.txt : firmware version file. +// 2. firm.bin : firmware binary file. + +void check_newfirm() { + if (fwup.exist() == 0) { + printf("Found a new firmware.\n"); + if (fwup.execute() == 0) { + printf("Update succeed.\n"); + printf("Resetting this system...\n\n\n\n\n"); + fwup.reset(); + } else { + printf("Update failed!\n"); } } +} + +int main(void) { + + eth.setup(); + + check_newfirm(); + printf("Hi!"); + // Your application is here. } \ No newline at end of file