A simple Firmware Updating program.

Dependencies:   FirmwareUpdater NetServices RPCInterface mbed

Fork of NetServices_HelloWorld by Segundo Equipo

Files at this revision

API Documentation at this revision

Comitter:
Aaronduino
Date:
Sat Mar 09 02:40:16 2013 +0000
Parent:
5:1e77bdd1a639
Commit message:
A simple Firmware Updater, that will update; the mbed to the newest program.

Changed in this revision

FirmwareUpdater.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 1e77bdd1a639 -r b17ac63d5981 FirmwareUpdater.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FirmwareUpdater.lib	Sat Mar 09 02:40:16 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/shintamainjp/code/FirmwareUpdater/#851bd91fa0ae
diff -r 1e77bdd1a639 -r b17ac63d5981 main.cpp
--- 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