*/
#include <common.h>
#include <string.h>
-#include <avr/pgmspace.h>
#include <command.h>
#include <rtc.h>
#include <i2c.h>
-static const char * const weekdays[] = {
- "Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur",
+static const FLASH char * const FLASH weekdays[] = {
+ FSTR("Mon"),
+ FSTR("Tues"),
+ FSTR("Wednes"),
+ FSTR("Thurs"),
+ FSTR("Fri"),
+ FSTR("Satur"),
+ FSTR("Sun")
};
int mk_date (const char *, struct rtc_time *);
{
struct rtc_time tm;
int rcode = CMD_RET_SUCCESS;
-
+
(void) cmdtp; (void) flag;
switch (argc) {
case 2: /* set date & time */
- if (strcmp_P(argv[1],PSTR("reset")) == 0) {
- my_puts_P(PSTR("Reset RTC...\n"));
- rtc_reset ();
- } else {
- /* initialize tm with current time */
- rcode = rtc_get (&tm);
-
- if(!rcode) {
- /* insert new date & time */
- if (mk_date (argv[1], &tm) != 0) {
- my_puts_P(PSTR("## Bad date format\n"));
- break;
- }
- /* and write to RTC */
- rcode = rtc_set (&tm);
- if(rcode)
- my_puts_P(PSTR("## Set date failed\n"));
- } else {
- my_puts_P(PSTR("## Get date failed\n"));
+ /* initialize tm with current time */
+ rcode = rtc_get (&tm);
+
+ if(!rcode) {
+ /* insert new date & time */
+ if (mk_date (argv[1], &tm) != 0) {
+ my_puts_P(PSTR("## Bad date format\n"));
+ break;
}
+ /* and write to RTC */
+ rcode = rtc_set (&tm);
+ if(rcode)
+ my_puts_P(PSTR("## Set date failed\n"));
+ } else {
+ my_puts_P(PSTR("## Get date failed\n"));
}
/* FALL TROUGH */
case 1: /* get date & time */
my_puts_P(PSTR("## Get date failed\n"));
break;
}
- /* TODO: flash */
- printf_P(PSTR("Date: %4d-%02d-%02d (%sday) Time: %2d:%02d:%02d\n"),
- tm.tm_year, tm.tm_mon, tm.tm_mday,
- (tm.tm_wday<0 || tm.tm_wday>6) ?
- "unknown " : weekdays[tm.tm_wday],
+ printf_P(PSTR("Date: %4d-%02d-%02d ("),
+ tm.tm_year, tm.tm_mon, tm.tm_mday);
+ my_puts_P( (tm.tm_wday<0 || tm.tm_wday>6) ?
+ PSTR("unknown ") : weekdays[tm.tm_wday]);
+ printf_P(PSTR("day) Time: %2d:%02d:%02d\n"),
tm.tm_hour, tm.tm_min, tm.tm_sec);
-
break;
+
default:
rcode = CMD_RET_USAGE;
}
return (-1);
}
-