run this here

Dependencies:   Hexi_KW40Z Hexi_OLED_SSD1351

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?

UserRevisionLine numberNew 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