http://http://diytec.web.fc2.com/mark2r2/

Dependencies:   EthernetNetIf NTPClient_NetServices mbed ConfigFile

Committer:
mark2r2
Date:
Tue Sep 20 12:46:26 2011 +0000
Revision:
0:08a4d61cd84c
V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mark2r2 0:08a4d61cd84c 1 /****************************************
mark2r2 0:08a4d61cd84c 2 * Firmware Updater *
mark2r2 0:08a4d61cd84c 3
mark2r2 0:08a4d61cd84c 4 *****************************************/
mark2r2 0:08a4d61cd84c 5
mark2r2 0:08a4d61cd84c 6 #include "mbed.h"
mark2r2 0:08a4d61cd84c 7 #include "FirmwareUpdater.h"
mark2r2 0:08a4d61cd84c 8 #include "TextLCD.h"
mark2r2 0:08a4d61cd84c 9
mark2r2 0:08a4d61cd84c 10 extern TextLCD lcd;
mark2r2 0:08a4d61cd84c 11 extern FirmwareUpdater *fwup;
mark2r2 0:08a4d61cd84c 12
mark2r2 0:08a4d61cd84c 13 void check_newfirm() {
mark2r2 0:08a4d61cd84c 14 int fwupret;
mark2r2 0:08a4d61cd84c 15 string getname;
mark2r2 0:08a4d61cd84c 16
mark2r2 0:08a4d61cd84c 17 lcd.cls();
mark2r2 0:08a4d61cd84c 18 getname = fwup->getName();
mark2r2 0:08a4d61cd84c 19 lcd.printf("Cheking update.");
mark2r2 0:08a4d61cd84c 20 fwupret = fwup->exist();
mark2r2 0:08a4d61cd84c 21
mark2r2 0:08a4d61cd84c 22 lcd.cls();lcd.locate(0,0);
mark2r2 0:08a4d61cd84c 23 switch (fwupret) {
mark2r2 0:08a4d61cd84c 24 case 0:
mark2r2 0:08a4d61cd84c 25 lcd.printf("Found new firmware.\nUpdateing.");
mark2r2 0:08a4d61cd84c 26 int execret = fwup->execute();
mark2r2 0:08a4d61cd84c 27
mark2r2 0:08a4d61cd84c 28 lcd.cls();lcd.locate(0,0);
mark2r2 0:08a4d61cd84c 29 switch (execret) {
mark2r2 0:08a4d61cd84c 30 case 0:
mark2r2 0:08a4d61cd84c 31 lcd.printf("Update succeed.\n");
mark2r2 0:08a4d61cd84c 32 lcd.printf("Resetting.\n");
mark2r2 0:08a4d61cd84c 33 wait(5);
mark2r2 0:08a4d61cd84c 34 fwup->reset();
mark2r2 0:08a4d61cd84c 35 break;
mark2r2 0:08a4d61cd84c 36 case -1:
mark2r2 0:08a4d61cd84c 37 lcd.printf("Can't get %s.txt", getname.c_str());
mark2r2 0:08a4d61cd84c 38 break;
mark2r2 0:08a4d61cd84c 39 case -2:
mark2r2 0:08a4d61cd84c 40 lcd.printf("Can't get %s.bin", getname.c_str());
mark2r2 0:08a4d61cd84c 41 break;
mark2r2 0:08a4d61cd84c 42 case -8:
mark2r2 0:08a4d61cd84c 43 lcd.printf("Can't get %s.md5", getname.c_str());
mark2r2 0:08a4d61cd84c 44 break;
mark2r2 0:08a4d61cd84c 45 case -3:
mark2r2 0:08a4d61cd84c 46 lcd.printf("Can't read local/%s.txt", getname.c_str());
mark2r2 0:08a4d61cd84c 47 break;
mark2r2 0:08a4d61cd84c 48 case -4:
mark2r2 0:08a4d61cd84c 49 lcd.printf("Can't read new %s.txt", getname.c_str());
mark2r2 0:08a4d61cd84c 50 break;
mark2r2 0:08a4d61cd84c 51 case -5:
mark2r2 0:08a4d61cd84c 52 lcd.printf("local is new,server is old", getname.c_str());
mark2r2 0:08a4d61cd84c 53 break;
mark2r2 0:08a4d61cd84c 54 case -9:
mark2r2 0:08a4d61cd84c 55 lcd.printf("Can't read new %s.md5", getname.c_str());
mark2r2 0:08a4d61cd84c 56 break;
mark2r2 0:08a4d61cd84c 57 case -10:
mark2r2 0:08a4d61cd84c 58 lcd.printf("Can't read new %s.bin", getname.c_str());
mark2r2 0:08a4d61cd84c 59 break;
mark2r2 0:08a4d61cd84c 60 case -11:
mark2r2 0:08a4d61cd84c 61 lcd.printf("MD5 checksum error", getname.c_str());
mark2r2 0:08a4d61cd84c 62 break;
mark2r2 0:08a4d61cd84c 63 }
mark2r2 0:08a4d61cd84c 64 break;
mark2r2 0:08a4d61cd84c 65 case -1:
mark2r2 0:08a4d61cd84c 66 lcd.printf("%s%s error.\n", getname.c_str(),".txt");
mark2r2 0:08a4d61cd84c 67 break;
mark2r2 0:08a4d61cd84c 68 case -2:
mark2r2 0:08a4d61cd84c 69 lcd.printf("F/W server error.\n");
mark2r2 0:08a4d61cd84c 70 break;
mark2r2 0:08a4d61cd84c 71 case 1:
mark2r2 0:08a4d61cd84c 72 lcd.printf("no update found.\n");
mark2r2 0:08a4d61cd84c 73 break;
mark2r2 0:08a4d61cd84c 74 }
mark2r2 0:08a4d61cd84c 75 wait(2);
mark2r2 0:08a4d61cd84c 76 }