Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SX1276Lib AdaFruit_RGBLCD MCP23017 mbed
Fork of AdaFruit_RGBLCD by
Modules/DateModule.cpp@12:0fea8ebe6c1a, 2014-08-10 (annotated)
- Committer:
- vtraveller
- Date:
- Sun Aug 10 16:01:43 2014 +0000
- Revision:
- 12:0fea8ebe6c1a
- Parent:
- 11:96146db429de
- Child:
- 13:9641bc42db92
Added Date Changing.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| vtraveller | 10:3fcab08717fc | 1 | #include "mbed.h" |
| vtraveller | 10:3fcab08717fc | 2 | #include "DateModule.h" |
| vtraveller | 10:3fcab08717fc | 3 | #include "time_helper.h" |
| vtraveller | 10:3fcab08717fc | 4 | |
| vtraveller | 10:3fcab08717fc | 5 | const char * k_aWeekDays[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; |
| vtraveller | 10:3fcab08717fc | 6 | |
| vtraveller | 10:3fcab08717fc | 7 | DateModule::DateModule |
| vtraveller | 10:3fcab08717fc | 8 | ( |
| vtraveller | 10:3fcab08717fc | 9 | Adafruit_RGBLCDShield & in_cLCD, |
| vtraveller | 10:3fcab08717fc | 10 | RTclock & in_cRTclock |
| vtraveller | 10:3fcab08717fc | 11 | ) |
| vtraveller | 10:3fcab08717fc | 12 | : Module(in_cLCD) |
| vtraveller | 10:3fcab08717fc | 13 | , m_cRTclock(in_cRTclock) |
| vtraveller | 10:3fcab08717fc | 14 | { |
| vtraveller | 10:3fcab08717fc | 15 | } |
| vtraveller | 10:3fcab08717fc | 16 | |
| vtraveller | 10:3fcab08717fc | 17 | DateModule::~DateModule() |
| vtraveller | 10:3fcab08717fc | 18 | { |
| vtraveller | 10:3fcab08717fc | 19 | } |
| vtraveller | 11:96146db429de | 20 | |
| vtraveller | 11:96146db429de | 21 | void DateModule::change |
| vtraveller | 11:96146db429de | 22 | ( |
| vtraveller | 11:96146db429de | 23 | int in_nIndexX, |
| vtraveller | 11:96146db429de | 24 | int in_nCursorY, |
| vtraveller | 11:96146db429de | 25 | bool in_bUp |
| vtraveller | 11:96146db429de | 26 | ) |
| vtraveller | 11:96146db429de | 27 | { |
| vtraveller | 11:96146db429de | 28 | tm sTM; |
| vtraveller | 10:3fcab08717fc | 29 | |
| vtraveller | 11:96146db429de | 30 | // to get the current time information |
| vtraveller | 11:96146db429de | 31 | if (!m_cRTclock.getTime(sTM)) GetTime(sTM); |
| vtraveller | 11:96146db429de | 32 | bool bTwelveHour = m_cRTclock.isTwelveHour(); |
| vtraveller | 12:0fea8ebe6c1a | 33 | |
| vtraveller | 12:0fea8ebe6c1a | 34 | enum ETime |
| vtraveller | 12:0fea8ebe6c1a | 35 | { |
| vtraveller | 12:0fea8ebe6c1a | 36 | eWeekDay = 0, |
| vtraveller | 12:0fea8ebe6c1a | 37 | eDayTen, |
| vtraveller | 12:0fea8ebe6c1a | 38 | eDaySingle, |
| vtraveller | 12:0fea8ebe6c1a | 39 | eMonthTen, |
| vtraveller | 12:0fea8ebe6c1a | 40 | eMonthSingle, |
| vtraveller | 12:0fea8ebe6c1a | 41 | eYearTen, |
| vtraveller | 12:0fea8ebe6c1a | 42 | eYearSingle, |
| vtraveller | 12:0fea8ebe6c1a | 43 | }; |
| vtraveller | 11:96146db429de | 44 | |
| vtraveller | 11:96146db429de | 45 | switch (in_nIndexX) |
| vtraveller | 11:96146db429de | 46 | { |
| vtraveller | 12:0fea8ebe6c1a | 47 | case eWeekDay: sTM.tm_wday += (in_bUp ? 1 : -1); break; |
| vtraveller | 12:0fea8ebe6c1a | 48 | case eDayTen: sTM.tm_mday += (in_bUp ? 1 : -1) * 10; break; |
| vtraveller | 12:0fea8ebe6c1a | 49 | case eDaySingle: sTM.tm_mday += (in_bUp ? 1 : -1); break; |
| vtraveller | 12:0fea8ebe6c1a | 50 | case eMonthTen: sTM.tm_mon += (in_bUp ? 1 : -1) * 10; break; |
| vtraveller | 12:0fea8ebe6c1a | 51 | case eMonthSingle: sTM.tm_mon += (in_bUp ? 1 : -1); break; |
| vtraveller | 12:0fea8ebe6c1a | 52 | case eYearTen: sTM.tm_year += (in_bUp ? 1 : -1) * 10; break; |
| vtraveller | 12:0fea8ebe6c1a | 53 | case eYearSingle: sTM.tm_year += (in_bUp ? 1 : -1); break; |
| vtraveller | 11:96146db429de | 54 | } |
| vtraveller | 12:0fea8ebe6c1a | 55 | |
| vtraveller | 12:0fea8ebe6c1a | 56 | if (sTM.tm_wday < 0) sTM.tm_wday = 0; |
| vtraveller | 12:0fea8ebe6c1a | 57 | if (sTM.tm_wday > 6) sTM.tm_wday = 6; |
| vtraveller | 12:0fea8ebe6c1a | 58 | if (sTM.tm_mday < 1) sTM.tm_mday = 1; |
| vtraveller | 12:0fea8ebe6c1a | 59 | if (sTM.tm_mday > 31) sTM.tm_mday = 31; |
| vtraveller | 12:0fea8ebe6c1a | 60 | if (sTM.tm_mon < 0) sTM.tm_mon = 0; |
| vtraveller | 12:0fea8ebe6c1a | 61 | if (sTM.tm_mon > 11) sTM.tm_mon = 11; |
| vtraveller | 12:0fea8ebe6c1a | 62 | if (sTM.tm_year < 2000 - 1900) sTM.tm_year = 2000 - 1900; |
| vtraveller | 12:0fea8ebe6c1a | 63 | if (sTM.tm_year > 2099 - 1900) sTM.tm_year = 2099 - 1900; |
| vtraveller | 11:96146db429de | 64 | |
| vtraveller | 12:0fea8ebe6c1a | 65 | if (m_cRTclock.setTime(sTM,bTwelveHour)) |
| vtraveller | 12:0fea8ebe6c1a | 66 | { |
| vtraveller | 12:0fea8ebe6c1a | 67 | m_cRTclock.mapTime(); |
| vtraveller | 12:0fea8ebe6c1a | 68 | } |
| vtraveller | 12:0fea8ebe6c1a | 69 | else |
| vtraveller | 12:0fea8ebe6c1a | 70 | { |
| vtraveller | 12:0fea8ebe6c1a | 71 | SetTime(sTM); |
| vtraveller | 12:0fea8ebe6c1a | 72 | } |
| vtraveller | 11:96146db429de | 73 | } |
| vtraveller | 11:96146db429de | 74 | |
| vtraveller | 10:3fcab08717fc | 75 | int DateModule::setCursor |
| vtraveller | 10:3fcab08717fc | 76 | ( |
| vtraveller | 10:3fcab08717fc | 77 | int in_nIndex, |
| vtraveller | 10:3fcab08717fc | 78 | int in_nCursorX, |
| vtraveller | 10:3fcab08717fc | 79 | int in_nCursorY |
| vtraveller | 10:3fcab08717fc | 80 | ) |
| vtraveller | 10:3fcab08717fc | 81 | { |
| vtraveller | 12:0fea8ebe6c1a | 82 | const int k_aCursor[] = { 2, 4, 5, 7, 8, 12, 13 }; |
| vtraveller | 10:3fcab08717fc | 83 | |
| vtraveller | 10:3fcab08717fc | 84 | int nIndex = in_nIndex; |
| vtraveller | 10:3fcab08717fc | 85 | if (nIndex < 0) nIndex = 0; |
| vtraveller | 10:3fcab08717fc | 86 | if (nIndex >= _countof(k_aCursor)) nIndex = _countof(k_aCursor) - 1; |
| vtraveller | 10:3fcab08717fc | 87 | |
| vtraveller | 10:3fcab08717fc | 88 | int nCursorX = k_aCursor[nIndex]; |
| vtraveller | 10:3fcab08717fc | 89 | m_cLCD.setCursor(in_nCursorX + nCursorX,in_nCursorY); |
| vtraveller | 10:3fcab08717fc | 90 | |
| vtraveller | 10:3fcab08717fc | 91 | return nIndex; |
| vtraveller | 10:3fcab08717fc | 92 | } |
| vtraveller | 10:3fcab08717fc | 93 | |
| vtraveller | 10:3fcab08717fc | 94 | void DateModule::show() |
| vtraveller | 10:3fcab08717fc | 95 | { |
| vtraveller | 10:3fcab08717fc | 96 | tm sTM; |
| vtraveller | 10:3fcab08717fc | 97 | |
| vtraveller | 10:3fcab08717fc | 98 | // to get the current time information |
| vtraveller | 10:3fcab08717fc | 99 | if (!m_cRTclock.getTime(sTM)) GetTime(sTM); |
| vtraveller | 10:3fcab08717fc | 100 | |
| vtraveller | 10:3fcab08717fc | 101 | m_cLCD.printf ("%s %02i/%02i/%04i ", k_aWeekDays[sTM.tm_wday], sTM.tm_mday, sTM.tm_mon + 1, 1900 + sTM.tm_year); |
| vtraveller | 10:3fcab08717fc | 102 | } |
