firmware: RTC setting via CLI

This commit is contained in:
ikari 2011-02-08 01:00:19 +01:00
parent 72b9444861
commit 0fae66fac2
2 changed files with 39 additions and 3 deletions

View File

@ -46,6 +46,7 @@
#include "fpga_spi.h"
#include "cic.h"
#include "xmodem.h"
#include "rtc.h"
#include "cli.h"
@ -57,8 +58,8 @@ static char *curchar;
/* Word lists */
static char command_words[] =
"cd\0reset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0";
enum { CMD_CD = 0, CMD_RESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER };
"cd\0reset\0dir\0ls\0test\0resume\0loadrom\0loadraw\0saveraw\0put\0d4\0vmode\0mapper\0settime\0time\0";
enum { CMD_CD = 0, CMD_RESET, CMD_DIR, CMD_LS, CMD_TEST, CMD_RESUME, CMD_LOADROM, CMD_LOADRAW, CMD_SAVERAW, CMD_PUT, CMD_D4, CMD_VMODE, CMD_MAPPER, CMD_SETTIME, CMD_TIME };
/* ------------------------------------------------------------------------- */
/* Parse functions */
@ -372,6 +373,33 @@ void cmd_mapper(void) {
printf("mapper set to %ld\n", mapper);
}
void cmd_settime(void) {
struct tm time;
if(strlen(curchar) != 4+2+2 + 2+2+2) {
printf("invalid time format (need YYYYMMDDhhmmss)\n");
} else {
time.tm_sec = atoi(curchar+4+2+2+2+2);
curchar[4+2+2+2+2] = 0;
time.tm_min = atoi(curchar+4+2+2+2);
curchar[4+2+2+2] = 0;
time.tm_hour = atoi(curchar+4+2+2);
curchar[4+2+2] = 0;
time.tm_mday = atoi(curchar+4+2);
curchar[4+2] = 0;
time.tm_mon = atoi(curchar+4);
curchar[4] = 0;
time.tm_year = atoi(curchar) - 1900;
set_rtc(&time);
}
}
void cmd_time(void) {
struct tm time;
read_rtc(&time);
printf("%04d-%02d-%02d %02d:%02d:%02d\n", time.tm_year+1900, time.tm_mon,
time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec);
}
/* ------------------------------------------------------------------------- */
/* CLI interface functions */
/* ------------------------------------------------------------------------- */
@ -477,6 +505,14 @@ void cli_loop(void) {
case CMD_MAPPER:
cmd_mapper();
break;
case CMD_SETTIME:
cmd_settime();
break;
case CMD_TIME:
cmd_time();
break;
}
}
}

View File

@ -46,7 +46,7 @@ uint32_t get_fattime(void) {
read_rtc(&time);
return ((uint32_t)time.tm_year-80) << 25 |
((uint32_t)time.tm_mon+1) << 21 |
((uint32_t)time.tm_mon) << 21 |
((uint32_t)time.tm_mday) << 16 |
((uint32_t)time.tm_hour) << 11 |
((uint32_t)time.tm_min) << 5 |