]> git.piffa.net Git - arduino/blob - books/pdummies/Libraries/Time/DateStrings.cpp
first commit
[arduino] / books / pdummies / Libraries / Time / DateStrings.cpp
1 /* DateStrings.cpp\r
2  * Definitions for date strings for use with the Time library\r
3  *\r
4  * No memory is consumed in the sketch if your code does not call any of the string methods\r
5  * You can change the text of the strings, make sure the short strings are each exactly 3 characters \r
6  * the long strings can be any length up to the constant dt_MAX_STRING_LEN defined in Time.h\r
7  * \r
8  */\r
9  \r
10 #include <avr/pgmspace.h> \r
11 #include "Time.h"\r
12  \r
13 // the short strings for each day or month must be exactly dt_SHORT_STR_LEN\r
14 #define dt_SHORT_STR_LEN  3 // the length of short strings\r
15 \r
16 static char buffer[dt_MAX_STRING_LEN+1];  // must be big enough for longest string and the terminating null\r
17 \r
18 char monthStr1[] PROGMEM = "January";\r
19 char monthStr2[] PROGMEM = "February";\r
20 char monthStr3[] PROGMEM = "March";\r
21 char monthStr4[] PROGMEM = "April";\r
22 char monthStr5[] PROGMEM = "May";\r
23 char monthStr6[] PROGMEM = "June";\r
24 char monthStr7[] PROGMEM = "July";\r
25 char monthStr8[] PROGMEM = "August";\r
26 char monthStr9[] PROGMEM = "September";\r
27 char monthStr10[] PROGMEM = "October";\r
28 char monthStr11[] PROGMEM = "November";\r
29 char monthStr12[] PROGMEM = "December";\r
30 \r
31 PGM_P monthNames_P[] PROGMEM = \r
32 {\r
33     "",monthStr1,monthStr2,monthStr3,monthStr4,monthStr5,monthStr6,\r
34         monthStr7,monthStr8,monthStr9,monthStr10,monthStr11,monthStr12\r
35 };\r
36 \r
37 char monthShortNames_P[] PROGMEM = "ErrJanFebMarAprMayJunJulAugSepOctNovDec";\r
38 \r
39 char dayStr0[] PROGMEM = "Err";\r
40 char dayStr1[] PROGMEM = "Sunday";\r
41 char dayStr2[] PROGMEM = "Monday";\r
42 char dayStr3[] PROGMEM = "Tuesday";\r
43 char dayStr4[] PROGMEM = "Wednesday";\r
44 char dayStr5[] PROGMEM = "Thursday";\r
45 char dayStr6[] PROGMEM = "Friday";\r
46 char dayStr7[] PROGMEM = "Saturday";\r
47 \r
48 PGM_P dayNames_P[] PROGMEM = { dayStr0,dayStr1,dayStr2,dayStr3,dayStr4,dayStr5,dayStr6,dayStr7};\r
49 char dayShortNames_P[] PROGMEM = "ErrSunMonTueWedThrFriSat";\r
50 \r
51 /* functions to return date strings */\r
52 \r
53 char* monthStr(uint8_t month)\r
54 {\r
55     strcpy_P(buffer, (PGM_P)pgm_read_word(&(monthNames_P[month])));\r
56         return buffer;\r
57 }\r
58 \r
59 char* monthShortStr(uint8_t month)\r
60 {\r
61    for (int i=0; i < dt_SHORT_STR_LEN; i++)      \r
62       buffer[i] = pgm_read_byte(&(monthShortNames_P[i+ (month*dt_SHORT_STR_LEN)]));  \r
63    buffer[dt_SHORT_STR_LEN] = 0;\r
64    return buffer;\r
65 }\r
66 \r
67 char* dayStr(uint8_t day) \r
68 {\r
69    strcpy_P(buffer, (PGM_P)pgm_read_word(&(dayNames_P[day])));\r
70    return buffer;\r
71 }\r
72 \r
73 char* dayShortStr(uint8_t day) \r
74 {\r
75    uint8_t index = day*dt_SHORT_STR_LEN;\r
76    for (int i=0; i < dt_SHORT_STR_LEN; i++)      \r
77       buffer[i] = pgm_read_byte(&(dayShortNames_P[index + i]));  \r
78    buffer[dt_SHORT_STR_LEN] = 0; \r
79    return buffer;\r
80 }\r