http://http://diytec.web.fc2.com/mark2r2/
Dependencies: EthernetNetIf NTPClient_NetServices mbed ConfigFile
firmware_upgrade.c@0:08a4d61cd84c, 2011-09-20 (annotated)
- Committer:
- mark2r2
- Date:
- Tue Sep 20 12:46:26 2011 +0000
- Revision:
- 0:08a4d61cd84c
V1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | } |