run this here
Dependencies: Hexi_KW40Z Hexi_OLED_SSD1351
timeHelp.h@3:f34bbdea0786, 2018-06-12 (annotated)
- Committer:
- trhackett
- Date:
- Tue Jun 12 00:27:26 2018 +0000
- Revision:
- 3:f34bbdea0786
- Child:
- 4:1ae9f76749b9
initial commit, can't get more than one hexiwear at once
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
trhackett | 3:f34bbdea0786 | 1 | #ifndef TIMEHELP_H |
trhackett | 3:f34bbdea0786 | 2 | #define TIMEHELP_H |
trhackett | 3:f34bbdea0786 | 3 | |
trhackett | 3:f34bbdea0786 | 4 | #include <stdlib.h> |
trhackett | 3:f34bbdea0786 | 5 | #include <string> |
trhackett | 3:f34bbdea0786 | 6 | |
trhackett | 3:f34bbdea0786 | 7 | // return true is seconds is even, false if not |
trhackett | 3:f34bbdea0786 | 8 | bool secondsAreEven(char currTime[]) { |
trhackett | 3:f34bbdea0786 | 9 | char seconds[3]; |
trhackett | 3:f34bbdea0786 | 10 | seconds[0] = currTime[6]; |
trhackett | 3:f34bbdea0786 | 11 | seconds[1] = currTime[7]; |
trhackett | 3:f34bbdea0786 | 12 | seconds[2] = 0; |
trhackett | 3:f34bbdea0786 | 13 | |
trhackett | 3:f34bbdea0786 | 14 | int secondsInt = atoi(seconds); |
trhackett | 3:f34bbdea0786 | 15 | |
trhackett | 3:f34bbdea0786 | 16 | return (secondsInt % 2) == 0; |
trhackett | 3:f34bbdea0786 | 17 | } |
trhackett | 3:f34bbdea0786 | 18 | |
trhackett | 3:f34bbdea0786 | 19 | // given a starting time and a number of seconds, add the seconds to that time |
trhackett | 3:f34bbdea0786 | 20 | // and put the resulting string into resultTime ... both startTime and resultTime |
trhackett | 3:f34bbdea0786 | 21 | // must be character arrays of length 10 |
trhackett | 3:f34bbdea0786 | 22 | void addSecondsToCurrentTime(char startTime[], char resultTime[], float secsToAdd) { |
trhackett | 3:f34bbdea0786 | 23 | |
trhackett | 3:f34bbdea0786 | 24 | int decsToAdd=0,newSecsToAdd=0,minutesToAdd=0,hoursToAdd=0; |
trhackett | 3:f34bbdea0786 | 25 | |
trhackett | 3:f34bbdea0786 | 26 | // if there are enough seconds to add, that an hour |
trhackett | 3:f34bbdea0786 | 27 | // if being added, then do that and subtract what you added |
trhackett | 3:f34bbdea0786 | 28 | if ((int)secsToAdd / 3600 > 0) { |
trhackett | 3:f34bbdea0786 | 29 | hoursToAdd = (int)(secsToAdd / 3600); |
trhackett | 3:f34bbdea0786 | 30 | secsToAdd -= hoursToAdd * 3600; |
trhackett | 3:f34bbdea0786 | 31 | } |
trhackett | 3:f34bbdea0786 | 32 | |
trhackett | 3:f34bbdea0786 | 33 | // there may be minutes to add if there are enough seconds |
trhackett | 3:f34bbdea0786 | 34 | if ((int)secsToAdd / 60 > 0) { |
trhackett | 3:f34bbdea0786 | 35 | minutesToAdd = (int)(secsToAdd / 60); |
trhackett | 3:f34bbdea0786 | 36 | secsToAdd -= minutesToAdd * 60; |
trhackett | 3:f34bbdea0786 | 37 | } |
trhackett | 3:f34bbdea0786 | 38 | |
trhackett | 3:f34bbdea0786 | 39 | if ((int)secsToAdd > 0) { |
trhackett | 3:f34bbdea0786 | 40 | newSecsToAdd = (int)secsToAdd; |
trhackett | 3:f34bbdea0786 | 41 | secsToAdd -= newSecsToAdd; |
trhackett | 3:f34bbdea0786 | 42 | } |
trhackett | 3:f34bbdea0786 | 43 | |
trhackett | 3:f34bbdea0786 | 44 | decsToAdd = (int)(secsToAdd * 10); |
trhackett | 3:f34bbdea0786 | 45 | |
trhackett | 3:f34bbdea0786 | 46 | // now we have to add them to currTime one at a time |
trhackett | 3:f34bbdea0786 | 47 | // becausse if any of the currTime slots become more |
trhackett | 3:f34bbdea0786 | 48 | // than 10/60/60 then we have to add them to the next |
trhackett | 3:f34bbdea0786 | 49 | // highest interval |
trhackett | 3:f34bbdea0786 | 50 | |
trhackett | 3:f34bbdea0786 | 51 | // decimal |
trhackett | 3:f34bbdea0786 | 52 | char prevDecimal[2]; |
trhackett | 3:f34bbdea0786 | 53 | prevDecimal[1] = 0; |
trhackett | 3:f34bbdea0786 | 54 | prevDecimal[0] = startTime[9]; |
trhackett | 3:f34bbdea0786 | 55 | int newDecimal = atoi(prevDecimal) + decsToAdd; |
trhackett | 3:f34bbdea0786 | 56 | |
trhackett | 3:f34bbdea0786 | 57 | if (newDecimal >= 10) { |
trhackett | 3:f34bbdea0786 | 58 | newSecsToAdd++; |
trhackett | 3:f34bbdea0786 | 59 | newDecimal = newDecimal % 10; |
trhackett | 3:f34bbdea0786 | 60 | } |
trhackett | 3:f34bbdea0786 | 61 | |
trhackett | 3:f34bbdea0786 | 62 | // seconds |
trhackett | 3:f34bbdea0786 | 63 | char prevSeconds[3]; |
trhackett | 3:f34bbdea0786 | 64 | prevSeconds[0] = startTime[6]; |
trhackett | 3:f34bbdea0786 | 65 | prevSeconds[1] = startTime[7]; |
trhackett | 3:f34bbdea0786 | 66 | prevSeconds[2] = 0; |
trhackett | 3:f34bbdea0786 | 67 | int newSeconds = atoi(prevSeconds) + newSecsToAdd; |
trhackett | 3:f34bbdea0786 | 68 | |
trhackett | 3:f34bbdea0786 | 69 | if (newSeconds >= 60) { |
trhackett | 3:f34bbdea0786 | 70 | minutesToAdd++; |
trhackett | 3:f34bbdea0786 | 71 | newSeconds = newSeconds % 60; |
trhackett | 3:f34bbdea0786 | 72 | } |
trhackett | 3:f34bbdea0786 | 73 | |
trhackett | 3:f34bbdea0786 | 74 | // minutes |
trhackett | 3:f34bbdea0786 | 75 | char prevMinutes[3]; |
trhackett | 3:f34bbdea0786 | 76 | prevMinutes[0] = startTime[3]; |
trhackett | 3:f34bbdea0786 | 77 | prevMinutes[1] = startTime[4]; |
trhackett | 3:f34bbdea0786 | 78 | prevMinutes[2] = 0; |
trhackett | 3:f34bbdea0786 | 79 | int newMinutes = atoi(prevMinutes) + minutesToAdd; |
trhackett | 3:f34bbdea0786 | 80 | |
trhackett | 3:f34bbdea0786 | 81 | if (newMinutes >= 60) { |
trhackett | 3:f34bbdea0786 | 82 | hoursToAdd++; |
trhackett | 3:f34bbdea0786 | 83 | newMinutes = newMinutes % 60; |
trhackett | 3:f34bbdea0786 | 84 | } |
trhackett | 3:f34bbdea0786 | 85 | |
trhackett | 3:f34bbdea0786 | 86 | // hours |
trhackett | 3:f34bbdea0786 | 87 | char prevHours[3]; |
trhackett | 3:f34bbdea0786 | 88 | prevHours[2] = 0; |
trhackett | 3:f34bbdea0786 | 89 | prevHours[0] = startTime[0]; |
trhackett | 3:f34bbdea0786 | 90 | prevHours[1] = startTime[1]; |
trhackett | 3:f34bbdea0786 | 91 | int newHours = atoi(prevHours) + hoursToAdd; |
trhackett | 3:f34bbdea0786 | 92 | newHours = newHours % 12; |
trhackett | 3:f34bbdea0786 | 93 | |
trhackett | 3:f34bbdea0786 | 94 | // no 00 o'clock, only 1 through 12 |
trhackett | 3:f34bbdea0786 | 95 | if (newHours == 0) { |
trhackett | 3:f34bbdea0786 | 96 | newHours = 12; |
trhackett | 3:f34bbdea0786 | 97 | } |
trhackett | 3:f34bbdea0786 | 98 | |
trhackett | 3:f34bbdea0786 | 99 | // now we have newDecimal, newSeconds, newMinutes, and newHours |
trhackett | 3:f34bbdea0786 | 100 | // so we need to build up the string again |
trhackett | 3:f34bbdea0786 | 101 | sprintf(resultTime, "%02d:%02d:%02d.%d",newHours,newMinutes,newSeconds,newDecimal); |
trhackett | 3:f34bbdea0786 | 102 | } |
trhackett | 3:f34bbdea0786 | 103 | |
trhackett | 3:f34bbdea0786 | 104 | // given the current time in the form HH:MM:SS.S |
trhackett | 3:f34bbdea0786 | 105 | // give me back the number of seconds in that number |
trhackett | 3:f34bbdea0786 | 106 | float currTimeSecs(char currentTime[]) { |
trhackett | 3:f34bbdea0786 | 107 | // hours |
trhackett | 3:f34bbdea0786 | 108 | char hours[3]; |
trhackett | 3:f34bbdea0786 | 109 | hours[2] = 0; |
trhackett | 3:f34bbdea0786 | 110 | hours[0] = currentTime[0]; |
trhackett | 3:f34bbdea0786 | 111 | hours[1] = currentTime[1]; |
trhackett | 3:f34bbdea0786 | 112 | |
trhackett | 3:f34bbdea0786 | 113 | // minutes |
trhackett | 3:f34bbdea0786 | 114 | char minutes[3]; |
trhackett | 3:f34bbdea0786 | 115 | minutes[0] = currentTime[3]; |
trhackett | 3:f34bbdea0786 | 116 | minutes[1] = currentTime[4]; |
trhackett | 3:f34bbdea0786 | 117 | minutes[2] = 0; |
trhackett | 3:f34bbdea0786 | 118 | |
trhackett | 3:f34bbdea0786 | 119 | // seconds |
trhackett | 3:f34bbdea0786 | 120 | char seconds[3]; |
trhackett | 3:f34bbdea0786 | 121 | seconds[0] = currentTime[6]; |
trhackett | 3:f34bbdea0786 | 122 | seconds[1] = currentTime[7]; |
trhackett | 3:f34bbdea0786 | 123 | seconds[2] = 0; |
trhackett | 3:f34bbdea0786 | 124 | |
trhackett | 3:f34bbdea0786 | 125 | // decimal |
trhackett | 3:f34bbdea0786 | 126 | char decimal[2]; |
trhackett | 3:f34bbdea0786 | 127 | decimal[1] = 0; |
trhackett | 3:f34bbdea0786 | 128 | decimal[0] = currentTime[9]; |
trhackett | 3:f34bbdea0786 | 129 | |
trhackett | 3:f34bbdea0786 | 130 | return (atoi(hours)%12)*360.0 + (atoi(minutes)%60)*60.0 + (atoi(seconds)%60)*1.0 + (atoi(decimal)%10)*.1; |
trhackett | 3:f34bbdea0786 | 131 | } |
trhackett | 3:f34bbdea0786 | 132 | |
trhackett | 3:f34bbdea0786 | 133 | #endif |