CaryCoders / Mbed 2 deprecated SX1276_GPS

Dependencies:   SX1276Lib AdaFruit_RGBLCD MCP23017 mbed

Fork of AdaFruit_RGBLCD by Justin Howard

Committer:
vtraveller
Date:
Mon Aug 11 19:11:43 2014 +0000
Revision:
13:9641bc42db92
Parent:
11:96146db429de
Child:
15:d1eaddb363be
Created a scrollable menu system based on modules to work against the Adafruit RGB LCD library.; Modules can be created and installed as menu items with display, cursor and edit capabilities.

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 13:9641bc42db92 21 Serial & in_cDisplay,
vtraveller 13:9641bc42db92 22 RTclock & in_cRTclock
vtraveller 10:3fcab08717fc 23 )
vtraveller 13:9641bc42db92 24 : Module(in_cDisplay)
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 13:9641bc42db92 35 size_t in_nIndex,
vtraveller 11:96146db429de 36 bool in_bUp
vtraveller 11:96146db429de 37 )
vtraveller 11:96146db429de 38 {
vtraveller 11:96146db429de 39 tm sTM;
vtraveller 10:3fcab08717fc 40
vtraveller 11:96146db429de 41 // to get the current time information
vtraveller 11:96146db429de 42 if (!m_cRTclock.getTime(sTM)) GetTime(sTM);
vtraveller 11:96146db429de 43 bool bTwelveHour = m_cRTclock.isTwelveHour();
vtraveller 11:96146db429de 44
vtraveller 11:96146db429de 45 enum ETime
vtraveller 11:96146db429de 46 {
vtraveller 11:96146db429de 47 eHourTen = 0,
vtraveller 11:96146db429de 48 eHourSingle,
vtraveller 11:96146db429de 49 eMinTen,
vtraveller 11:96146db429de 50 eMinSingle,
vtraveller 11:96146db429de 51 eSecondTen,
vtraveller 11:96146db429de 52 eSecondSingle,
vtraveller 11:96146db429de 53 eAmPm,
vtraveller 11:96146db429de 54 };
vtraveller 11:96146db429de 55
vtraveller 13:9641bc42db92 56 switch (in_nIndex)
vtraveller 11:96146db429de 57 {
vtraveller 11:96146db429de 58 case eHourTen: sTM.tm_hour += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 59 case eHourSingle: sTM.tm_hour += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 60 case eMinTen: sTM.tm_min += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 61 case eMinSingle: sTM.tm_min += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 62 case eSecondTen: sTM.tm_sec += (in_bUp ? 1 : -1) * 10; break;
vtraveller 11:96146db429de 63 case eSecondSingle: sTM.tm_sec += (in_bUp ? 1 : -1); break;
vtraveller 11:96146db429de 64 case eAmPm:
vtraveller 11:96146db429de 65 if (bTwelveHour)
vtraveller 11:96146db429de 66 {
vtraveller 11:96146db429de 67 if (in_bUp)
vtraveller 11:96146db429de 68 {
vtraveller 11:96146db429de 69 if (sTM.tm_hour >= 12) bTwelveHour = !bTwelveHour; else sTM.tm_hour += 12;
vtraveller 11:96146db429de 70 }
vtraveller 11:96146db429de 71 else
vtraveller 11:96146db429de 72 {
vtraveller 11:96146db429de 73 if (sTM.tm_hour >= 12) sTM.tm_hour -= 12; else bTwelveHour = !bTwelveHour;
vtraveller 11:96146db429de 74 }
vtraveller 11:96146db429de 75 }
vtraveller 11:96146db429de 76 else
vtraveller 11:96146db429de 77 {
vtraveller 11:96146db429de 78 bTwelveHour = !bTwelveHour;
vtraveller 11:96146db429de 79 if (in_bUp && sTM.tm_hour >= 12) sTM.tm_hour -= 12;
vtraveller 11:96146db429de 80 if (!in_bUp && sTM.tm_hour < 12) sTM.tm_hour += 12;
vtraveller 11:96146db429de 81 }
vtraveller 11:96146db429de 82 break;
vtraveller 11:96146db429de 83 }
vtraveller 11:96146db429de 84
vtraveller 11:96146db429de 85 if (sTM.tm_hour < 0) sTM.tm_hour = 0;
vtraveller 11:96146db429de 86 if (sTM.tm_hour > 23) sTM.tm_hour = 23;
vtraveller 11:96146db429de 87 if (sTM.tm_min < 0) sTM.tm_min = 0;
vtraveller 11:96146db429de 88 if (sTM.tm_hour > 59) sTM.tm_min = 59;
vtraveller 11:96146db429de 89 if (sTM.tm_sec < 0) sTM.tm_sec = 0;
vtraveller 11:96146db429de 90 if (sTM.tm_sec > 59) sTM.tm_sec = 59;
vtraveller 11:96146db429de 91
vtraveller 11:96146db429de 92 if (m_cRTclock.setTime(sTM,bTwelveHour))
vtraveller 11:96146db429de 93 {
vtraveller 11:96146db429de 94 m_cRTclock.mapTime();
vtraveller 11:96146db429de 95 }
vtraveller 11:96146db429de 96 else
vtraveller 11:96146db429de 97 {
vtraveller 11:96146db429de 98 SetTime(sTM);
vtraveller 11:96146db429de 99 }
vtraveller 11:96146db429de 100 }
vtraveller 11:96146db429de 101
vtraveller 13:9641bc42db92 102 int TimeModule::getCursorOffset(size_t & inout_nIndex)
vtraveller 10:3fcab08717fc 103 {
vtraveller 10:3fcab08717fc 104 const int k_aCursor[] = { 0, 1, 3, 4, 6, 7, 10 };
vtraveller 10:3fcab08717fc 105
vtraveller 13:9641bc42db92 106 if ((int)inout_nIndex < 0) inout_nIndex = 0;
vtraveller 13:9641bc42db92 107 if (inout_nIndex >= _countof(k_aCursor)) inout_nIndex = _countof(k_aCursor) - 1;
vtraveller 10:3fcab08717fc 108
vtraveller 13:9641bc42db92 109 return k_aCursor[inout_nIndex];
vtraveller 10:3fcab08717fc 110 }
vtraveller 10:3fcab08717fc 111
vtraveller 10:3fcab08717fc 112 void TimeModule::show()
vtraveller 10:3fcab08717fc 113 {
vtraveller 10:3fcab08717fc 114 tm sTM;
vtraveller 10:3fcab08717fc 115 const char * pUnits = " ";
vtraveller 10:3fcab08717fc 116
vtraveller 10:3fcab08717fc 117 // to get the current time information
vtraveller 10:3fcab08717fc 118 if (m_cRTclock.getTime(sTM))
vtraveller 10:3fcab08717fc 119 {
vtraveller 10:3fcab08717fc 120 // Adjust for 12 hour clock
vtraveller 10:3fcab08717fc 121 if (m_cRTclock.isTwelveHour())
vtraveller 10:3fcab08717fc 122 {
vtraveller 10:3fcab08717fc 123 pUnits = (sTM.tm_hour < 12) ? "am":"pm";
vtraveller 10:3fcab08717fc 124 sTM.tm_hour %= 12;
vtraveller 10:3fcab08717fc 125 }
vtraveller 10:3fcab08717fc 126 }
vtraveller 10:3fcab08717fc 127 else
vtraveller 10:3fcab08717fc 128 {
vtraveller 10:3fcab08717fc 129 // If failed get internal time (as at least that's something
vtraveller 10:3fcab08717fc 130 GetTime(sTM);
vtraveller 10:3fcab08717fc 131 }
vtraveller 10:3fcab08717fc 132
vtraveller 13:9641bc42db92 133 m_cDisplay.printf ("%02i:%02i:%02i %s ", sTM.tm_hour, sTM.tm_min, sTM.tm_sec, pUnits);
vtraveller 10:3fcab08717fc 134 }