CaryCoders / Mbed 2 deprecated SX1276_GPS

Dependencies:   SX1276Lib AdaFruit_RGBLCD MCP23017 mbed

Fork of AdaFruit_RGBLCD by Justin Howard

Committer:
vtraveller
Date:
Sun Aug 10 15:45:03 2014 +0000
Revision:
11:96146db429de
Parent:
10:3fcab08717fc
Child:
13:9641bc42db92
Added support for changing time.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vtraveller 10:3fcab08717fc 1 #include "mbed.h"
vtraveller 10:3fcab08717fc 2 #include "TimeModule.h"
vtraveller 10:3fcab08717fc 3 #include "time_helper.h"
vtraveller 10:3fcab08717fc 4
vtraveller 10:3fcab08717fc 5 #if 0
vtraveller 10:3fcab08717fc 6 tm sTM;
vtraveller 10:3fcab08717fc 7 sTM.tm_sec = 0;
vtraveller 10:3fcab08717fc 8 sTM.tm_min = 0;
vtraveller 10:3fcab08717fc 9 sTM.tm_hour = 18;
vtraveller 10:3fcab08717fc 10 sTM.tm_mday = 9;
vtraveller 10:3fcab08717fc 11 sTM.tm_mon = 8 - 1;
vtraveller 10:3fcab08717fc 12 sTM.tm_year = 2014 - 1900;
vtraveller 10:3fcab08717fc 13 sTM.tm_wday = 6;
vtraveller 10:3fcab08717fc 14
vtraveller 10:3fcab08717fc 15 rtc.SetTime(sTM,true);
vtraveller 10:3fcab08717fc 16 #endif
vtraveller 10:3fcab08717fc 17
vtraveller 10:3fcab08717fc 18
vtraveller 10:3fcab08717fc 19 TimeModule::TimeModule
vtraveller 10:3fcab08717fc 20 (
vtraveller 10:3fcab08717fc 21 Adafruit_RGBLCDShield & in_cLCD,
vtraveller 10:3fcab08717fc 22 RTclock & in_cRTclock
vtraveller 10:3fcab08717fc 23 )
vtraveller 10:3fcab08717fc 24 : Module(in_cLCD)
vtraveller 10:3fcab08717fc 25 , m_cRTclock(in_cRTclock)
vtraveller 10:3fcab08717fc 26 {
vtraveller 10:3fcab08717fc 27 }
vtraveller 10:3fcab08717fc 28
vtraveller 10:3fcab08717fc 29 TimeModule::~TimeModule()
vtraveller 10:3fcab08717fc 30 {
vtraveller 10:3fcab08717fc 31 }
vtraveller 11:96146db429de 32
vtraveller 11:96146db429de 33 void TimeModule::change
vtraveller 11:96146db429de 34 (
vtraveller 11:96146db429de 35 int in_nIndexX,
vtraveller 11:96146db429de 36 int in_nCursorY,
vtraveller 11:96146db429de 37 bool in_bUp
vtraveller 11:96146db429de 38 )
vtraveller 11:96146db429de 39 {
vtraveller 11:96146db429de 40 tm sTM;
vtraveller 10:3fcab08717fc 41
vtraveller 11:96146db429de 42 // to get the current time information
vtraveller 11:96146db429de 43 if (!m_cRTclock.getTime(sTM)) GetTime(sTM);
vtraveller 11:96146db429de 44 bool bTwelveHour = m_cRTclock.isTwelveHour();
vtraveller 11:96146db429de 45
vtraveller 11:96146db429de 46 enum ETime
vtraveller 11:96146db429de 47 {
vtraveller 11:96146db429de 48 eHourTen = 0,
vtraveller 11:96146db429de 49 eHourSingle,
vtraveller 11:96146db429de 50 eMinTen,
vtraveller 11:96146db429de 51 eMinSingle,
vtraveller 11:96146db429de 52 eSecondTen,
vtraveller 11:96146db429de 53 eSecondSingle,
vtraveller 11:96146db429de 54 eAmPm,
vtraveller 11:96146db429de 55 };
vtraveller 11:96146db429de 56
vtraveller 11:96146db429de 57 switch (in_nIndexX)
vtraveller 11:96146db429de 58 {
vtraveller 11:96146db429de 59 case eHourTen: sTM.tm_hour += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 60 case eHourSingle: sTM.tm_hour += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 61 case eMinTen: sTM.tm_min += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 62 case eMinSingle: sTM.tm_min += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 63 case eSecondTen: sTM.tm_sec += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 64 case eSecondSingle: sTM.tm_sec += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 65 case eAmPm:
vtraveller 11:96146db429de 66 if (bTwelveHour)
vtraveller 11:96146db429de 67 {
vtraveller 11:96146db429de 68 if (in_bUp)
vtraveller 11:96146db429de 69 {
vtraveller 11:96146db429de 70 if (sTM.tm_hour >= 12) bTwelveHour = !bTwelveHour; else sTM.tm_hour += 12;
vtraveller 11:96146db429de 71 }
vtraveller 11:96146db429de 72 else
vtraveller 11:96146db429de 73 {
vtraveller 11:96146db429de 74 if (sTM.tm_hour >= 12) sTM.tm_hour -= 12; else bTwelveHour = !bTwelveHour;
vtraveller 11:96146db429de 75 }
vtraveller 11:96146db429de 76 }
vtraveller 11:96146db429de 77 else
vtraveller 11:96146db429de 78 {
vtraveller 11:96146db429de 79 bTwelveHour = !bTwelveHour;
vtraveller 11:96146db429de 80 if (in_bUp && sTM.tm_hour >= 12) sTM.tm_hour -= 12;
vtraveller 11:96146db429de 81 if (!in_bUp && sTM.tm_hour < 12) sTM.tm_hour += 12;
vtraveller 11:96146db429de 82 }
vtraveller 11:96146db429de 83 break;
vtraveller 11:96146db429de 84 }
vtraveller 11:96146db429de 85
vtraveller 11:96146db429de 86 if (sTM.tm_hour < 0) sTM.tm_hour = 0;
vtraveller 11:96146db429de 87 if (sTM.tm_hour > 23) sTM.tm_hour = 23;
vtraveller 11:96146db429de 88 if (sTM.tm_min < 0) sTM.tm_min = 0;
vtraveller 11:96146db429de 89 if (sTM.tm_hour > 59) sTM.tm_min = 59;
vtraveller 11:96146db429de 90 if (sTM.tm_sec < 0) sTM.tm_sec = 0;
vtraveller 11:96146db429de 91 if (sTM.tm_sec > 59) sTM.tm_sec = 59;
vtraveller 11:96146db429de 92
vtraveller 11:96146db429de 93 if (m_cRTclock.setTime(sTM,bTwelveHour))
vtraveller 11:96146db429de 94 {
vtraveller 11:96146db429de 95 m_cRTclock.mapTime();
vtraveller 11:96146db429de 96 }
vtraveller 11:96146db429de 97 else
vtraveller 11:96146db429de 98 {
vtraveller 11:96146db429de 99 SetTime(sTM);
vtraveller 11:96146db429de 100 }
vtraveller 11:96146db429de 101 }
vtraveller 11:96146db429de 102
vtraveller 10:3fcab08717fc 103 int TimeModule::setCursor
vtraveller 10:3fcab08717fc 104 (
vtraveller 10:3fcab08717fc 105 int in_nIndex,
vtraveller 10:3fcab08717fc 106 int in_nCursorX,
vtraveller 10:3fcab08717fc 107 int in_nCursorY
vtraveller 10:3fcab08717fc 108 )
vtraveller 10:3fcab08717fc 109 {
vtraveller 10:3fcab08717fc 110 const int k_aCursor[] = { 0, 1, 3, 4, 6, 7, 10 };
vtraveller 10:3fcab08717fc 111
vtraveller 10:3fcab08717fc 112 int nIndex = in_nIndex;
vtraveller 10:3fcab08717fc 113 if (nIndex < 0) nIndex = 0;
vtraveller 10:3fcab08717fc 114 if (nIndex >= _countof(k_aCursor)) nIndex = _countof(k_aCursor) - 1;
vtraveller 10:3fcab08717fc 115
vtraveller 10:3fcab08717fc 116 int nCursorX = k_aCursor[nIndex];
vtraveller 10:3fcab08717fc 117 m_cLCD.setCursor(in_nCursorX + nCursorX,in_nCursorY);
vtraveller 10:3fcab08717fc 118
vtraveller 10:3fcab08717fc 119 return nIndex;
vtraveller 10:3fcab08717fc 120 }
vtraveller 10:3fcab08717fc 121
vtraveller 10:3fcab08717fc 122 void TimeModule::show()
vtraveller 10:3fcab08717fc 123 {
vtraveller 10:3fcab08717fc 124 tm sTM;
vtraveller 10:3fcab08717fc 125 const char * pUnits = " ";
vtraveller 10:3fcab08717fc 126
vtraveller 10:3fcab08717fc 127 // to get the current time information
vtraveller 10:3fcab08717fc 128 if (m_cRTclock.getTime(sTM))
vtraveller 10:3fcab08717fc 129 {
vtraveller 10:3fcab08717fc 130 // Adjust for 12 hour clock
vtraveller 10:3fcab08717fc 131 if (m_cRTclock.isTwelveHour())
vtraveller 10:3fcab08717fc 132 {
vtraveller 10:3fcab08717fc 133 pUnits = (sTM.tm_hour < 12) ? "am":"pm";
vtraveller 10:3fcab08717fc 134 sTM.tm_hour %= 12;
vtraveller 10:3fcab08717fc 135 }
vtraveller 10:3fcab08717fc 136 }
vtraveller 10:3fcab08717fc 137 else
vtraveller 10:3fcab08717fc 138 {
vtraveller 10:3fcab08717fc 139 // If failed get internal time (as at least that's something
vtraveller 10:3fcab08717fc 140 GetTime(sTM);
vtraveller 10:3fcab08717fc 141 }
vtraveller 10:3fcab08717fc 142
vtraveller 10:3fcab08717fc 143 m_cLCD.printf ("%02i:%02i:%02i %s ", sTM.tm_hour, sTM.tm_min, sTM.tm_sec, pUnits);
vtraveller 10:3fcab08717fc 144 }