Release candidate version. The pointer in GAS Pressure display is changed to a triangle.

Dependencies:   UniGraphic mbed vt100

Please note, at 2-Mar-2018 the current version of mbed-lib has a defect in Ticker.
https://os.mbed.com/forum/bugs-suggestions/topic/29287/

So, mbed lib version 157 is intentionally being used.
Please do not update mbed library until the problem in the above URL is fixed.

In this version, format of GAS Pressure Display has been changed.
/media/uploads/Rhyme/low.jpg

/media/uploads/Rhyme/good.jpg

/media/uploads/Rhyme/high.jpg

moto

Committer:
Rhyme
Date:
Fri Mar 02 07:56:09 2018 +0000
Revision:
0:774324cbc5a6
Release candidate version. GAS Pressure pointer is now a triangle.; Some source file clean-up was done.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:774324cbc5a6 1 #include "mbed.h"
Rhyme 0:774324cbc5a6 2 #include "edge_time.h"
Rhyme 0:774324cbc5a6 3
Rhyme 0:774324cbc5a6 4 static const uint8_t daysInMonth[12] = {
Rhyme 0:774324cbc5a6 5 31, 28, 31, 30,
Rhyme 0:774324cbc5a6 6 31, 30, 31, 31,
Rhyme 0:774324cbc5a6 7 30, 31, 30, 31
Rhyme 0:774324cbc5a6 8 } ;
Rhyme 0:774324cbc5a6 9
Rhyme 0:774324cbc5a6 10 const char *nameOfDay[7] = {
Rhyme 0:774324cbc5a6 11 "Sunday", "Monday", "Tuesday", "Wednesday",
Rhyme 0:774324cbc5a6 12 "Thursday", "Friday", "Saturday"
Rhyme 0:774324cbc5a6 13 } ;
Rhyme 0:774324cbc5a6 14
Rhyme 0:774324cbc5a6 15 uint32_t edge_time = 0 ;
Rhyme 0:774324cbc5a6 16 uint32_t utc_offset = 9 * 60 * 60 ;
Rhyme 0:774324cbc5a6 17 tm current_time ;
Rhyme 0:774324cbc5a6 18 Ticker *tokei = 0 ;
Rhyme 0:774324cbc5a6 19
Rhyme 0:774324cbc5a6 20 void inc_sec(void)
Rhyme 0:774324cbc5a6 21 {
Rhyme 0:774324cbc5a6 22 __disable_irq() ; // Disable Interrupts
Rhyme 0:774324cbc5a6 23 edge_time++ ;
Rhyme 0:774324cbc5a6 24 __enable_irq() ; // Enable Interrupts
Rhyme 0:774324cbc5a6 25 }
Rhyme 0:774324cbc5a6 26
Rhyme 0:774324cbc5a6 27 void init_timer(void)
Rhyme 0:774324cbc5a6 28 {
Rhyme 0:774324cbc5a6 29 tokei = new Ticker() ;
Rhyme 0:774324cbc5a6 30 tokei->attach(inc_sec, 1.0) ;
Rhyme 0:774324cbc5a6 31 }
Rhyme 0:774324cbc5a6 32
Rhyme 0:774324cbc5a6 33 void set_time(const uint16_t valueLen, const uint8_t *value)
Rhyme 0:774324cbc5a6 34 {
Rhyme 0:774324cbc5a6 35 uint32_t tmp_timestamp = 0 ;
Rhyme 0:774324cbc5a6 36 for (int i = 0 ; i < valueLen ; i++ ) {
Rhyme 0:774324cbc5a6 37 tmp_timestamp |= (value[i] & 0xFF) << (i * 8) ;
Rhyme 0:774324cbc5a6 38 }
Rhyme 0:774324cbc5a6 39 edge_time = tmp_timestamp ;
Rhyme 0:774324cbc5a6 40 ts2tm(edge_time, &current_time) ;
Rhyme 0:774324cbc5a6 41 // ts2time(edge_time, &current_time) ;
Rhyme 0:774324cbc5a6 42 }
Rhyme 0:774324cbc5a6 43
Rhyme 0:774324cbc5a6 44 void ts2time(uint32_t timestamp, struct tm *tm)
Rhyme 0:774324cbc5a6 45 {
Rhyme 0:774324cbc5a6 46 uint32_t seconds, minutes, hours, days, month, year ;
Rhyme 0:774324cbc5a6 47 uint32_t dayOfWeek ;
Rhyme 0:774324cbc5a6 48
Rhyme 0:774324cbc5a6 49 // timestamp += (3600 * 9) ; /* +9 hours for JST */
Rhyme 0:774324cbc5a6 50 timestamp += utc_offset ;
Rhyme 0:774324cbc5a6 51
Rhyme 0:774324cbc5a6 52 seconds = timestamp % 60 ;
Rhyme 0:774324cbc5a6 53 minutes = timestamp / 60 ;
Rhyme 0:774324cbc5a6 54 hours = minutes / 60 ; /* +9 for JST */
Rhyme 0:774324cbc5a6 55 minutes -= hours * 60 ;
Rhyme 0:774324cbc5a6 56 days = hours / 24 ;
Rhyme 0:774324cbc5a6 57 hours -= days * 24 ;
Rhyme 0:774324cbc5a6 58
Rhyme 0:774324cbc5a6 59 tm->tm_sec = seconds ;
Rhyme 0:774324cbc5a6 60 tm->tm_min = minutes ;
Rhyme 0:774324cbc5a6 61 tm->tm_hour = hours ;
Rhyme 0:774324cbc5a6 62 tm->tm_mday = days + 1 ;
Rhyme 0:774324cbc5a6 63 // tm->tm_mon = month ;
Rhyme 0:774324cbc5a6 64 // tm->tm_year = year ;
Rhyme 0:774324cbc5a6 65 // tm->tm_wday = dayOfWeek ;
Rhyme 0:774324cbc5a6 66 }
Rhyme 0:774324cbc5a6 67
Rhyme 0:774324cbc5a6 68 void ts2tm(uint32_t timestamp, struct tm *tm)
Rhyme 0:774324cbc5a6 69 {
Rhyme 0:774324cbc5a6 70 uint32_t seconds, minutes, hours, days, month, year ;
Rhyme 0:774324cbc5a6 71 uint32_t dayOfWeek ;
Rhyme 0:774324cbc5a6 72
Rhyme 0:774324cbc5a6 73 // timestamp += (3600 * 9) ; /* +9 hours for JST */
Rhyme 0:774324cbc5a6 74 timestamp += utc_offset ;
Rhyme 0:774324cbc5a6 75
Rhyme 0:774324cbc5a6 76 seconds = timestamp % 60 ;
Rhyme 0:774324cbc5a6 77 minutes = timestamp / 60 ;
Rhyme 0:774324cbc5a6 78 hours = minutes / 60 ; /* +9 for JST */
Rhyme 0:774324cbc5a6 79 minutes -= hours * 60 ;
Rhyme 0:774324cbc5a6 80 days = hours / 24 ;
Rhyme 0:774324cbc5a6 81 hours -= days * 24 ;
Rhyme 0:774324cbc5a6 82
Rhyme 0:774324cbc5a6 83 /* Unix timestamp start 1-Jan-1970 Thursday */
Rhyme 0:774324cbc5a6 84 year = 1970 ;
Rhyme 0:774324cbc5a6 85 dayOfWeek = 4 ; /* Thursday */
Rhyme 0:774324cbc5a6 86
Rhyme 0:774324cbc5a6 87 while(1) {
Rhyme 0:774324cbc5a6 88 bool isLeapYear =
Rhyme 0:774324cbc5a6 89 (((year % 4) == 0)
Rhyme 0:774324cbc5a6 90 &&(((year % 100) != 0)
Rhyme 0:774324cbc5a6 91 || ((year % 400) == 0))) ;
Rhyme 0:774324cbc5a6 92 uint16_t daysInYear = isLeapYear ? 366 : 365 ;
Rhyme 0:774324cbc5a6 93 if (days >= daysInYear) {
Rhyme 0:774324cbc5a6 94 dayOfWeek += isLeapYear ? 2 : 1 ;
Rhyme 0:774324cbc5a6 95 days -= daysInYear ;
Rhyme 0:774324cbc5a6 96 if (dayOfWeek >= 7) {
Rhyme 0:774324cbc5a6 97 dayOfWeek -= 7 ;
Rhyme 0:774324cbc5a6 98 }
Rhyme 0:774324cbc5a6 99 year++ ;
Rhyme 0:774324cbc5a6 100 } else {
Rhyme 0:774324cbc5a6 101 tm->tm_yday = days ;
Rhyme 0:774324cbc5a6 102 dayOfWeek += days ;
Rhyme 0:774324cbc5a6 103 dayOfWeek %= 7 ;
Rhyme 0:774324cbc5a6 104
Rhyme 0:774324cbc5a6 105 /* calc the month and the day */
Rhyme 0:774324cbc5a6 106 for (month = 0 ; month < 12 ; month++) {
Rhyme 0:774324cbc5a6 107 uint8_t dim = daysInMonth[month] ;
Rhyme 0:774324cbc5a6 108
Rhyme 0:774324cbc5a6 109 /* add a day to feburary if this is a leap year */
Rhyme 0:774324cbc5a6 110 if ((month == 1) && (isLeapYear)) {
Rhyme 0:774324cbc5a6 111 dim++ ;
Rhyme 0:774324cbc5a6 112 }
Rhyme 0:774324cbc5a6 113
Rhyme 0:774324cbc5a6 114 if (days >= dim) {
Rhyme 0:774324cbc5a6 115 days -= dim ;
Rhyme 0:774324cbc5a6 116 } else {
Rhyme 0:774324cbc5a6 117 break ;
Rhyme 0:774324cbc5a6 118 }
Rhyme 0:774324cbc5a6 119 }
Rhyme 0:774324cbc5a6 120 break ;
Rhyme 0:774324cbc5a6 121 }
Rhyme 0:774324cbc5a6 122 }
Rhyme 0:774324cbc5a6 123 tm->tm_sec = seconds ;
Rhyme 0:774324cbc5a6 124 tm->tm_min = minutes ;
Rhyme 0:774324cbc5a6 125 tm->tm_hour = hours ;
Rhyme 0:774324cbc5a6 126 tm->tm_mday = days + 1 ;
Rhyme 0:774324cbc5a6 127 tm->tm_mon = month ;
Rhyme 0:774324cbc5a6 128 tm->tm_year = year ;
Rhyme 0:774324cbc5a6 129 tm->tm_wday = dayOfWeek ;
Rhyme 0:774324cbc5a6 130 }
Rhyme 0:774324cbc5a6 131
Rhyme 0:774324cbc5a6 132 void print_time(struct tm *tm)
Rhyme 0:774324cbc5a6 133 {
Rhyme 0:774324cbc5a6 134 printf("%02d:%02d:%02d",
Rhyme 0:774324cbc5a6 135 tm->tm_hour,
Rhyme 0:774324cbc5a6 136 tm->tm_min,
Rhyme 0:774324cbc5a6 137 tm->tm_sec ) ;
Rhyme 0:774324cbc5a6 138 }
Rhyme 0:774324cbc5a6 139
Rhyme 0:774324cbc5a6 140 void print_time(uint32_t thetime)
Rhyme 0:774324cbc5a6 141 {
Rhyme 0:774324cbc5a6 142 struct tm timestruct ;
Rhyme 0:774324cbc5a6 143 ts2time(thetime, &timestruct) ;
Rhyme 0:774324cbc5a6 144 print_time(&timestruct) ;
Rhyme 0:774324cbc5a6 145 }
Rhyme 0:774324cbc5a6 146
Rhyme 0:774324cbc5a6 147 void print_time(void)
Rhyme 0:774324cbc5a6 148 {
Rhyme 0:774324cbc5a6 149 struct tm timestruct ;
Rhyme 0:774324cbc5a6 150 ts2time(edge_time, &timestruct) ;
Rhyme 0:774324cbc5a6 151 print_time(&timestruct) ;
Rhyme 0:774324cbc5a6 152 }
Rhyme 0:774324cbc5a6 153
Rhyme 0:774324cbc5a6 154 void print_date(struct tm *tm)
Rhyme 0:774324cbc5a6 155 {
Rhyme 0:774324cbc5a6 156 printf("%d/%d/%d %02d:%02d:%02d",
Rhyme 0:774324cbc5a6 157 tm->tm_year,
Rhyme 0:774324cbc5a6 158 tm->tm_mon + 1,
Rhyme 0:774324cbc5a6 159 tm->tm_mday,
Rhyme 0:774324cbc5a6 160 tm->tm_hour,
Rhyme 0:774324cbc5a6 161 tm->tm_min,
Rhyme 0:774324cbc5a6 162 tm->tm_sec
Rhyme 0:774324cbc5a6 163 ) ;
Rhyme 0:774324cbc5a6 164 }
Rhyme 0:774324cbc5a6 165
Rhyme 0:774324cbc5a6 166 void print_date_wd(struct tm *tm)
Rhyme 0:774324cbc5a6 167 {
Rhyme 0:774324cbc5a6 168 printf("%d/%d/%d %02d:%02d:%02d (%s)",
Rhyme 0:774324cbc5a6 169 tm->tm_year,
Rhyme 0:774324cbc5a6 170 tm->tm_mon + 1,
Rhyme 0:774324cbc5a6 171 tm->tm_mday,
Rhyme 0:774324cbc5a6 172 tm->tm_hour,
Rhyme 0:774324cbc5a6 173 tm->tm_min,
Rhyme 0:774324cbc5a6 174 tm->tm_sec,
Rhyme 0:774324cbc5a6 175 nameOfDay[tm->tm_wday]
Rhyme 0:774324cbc5a6 176 ) ;
Rhyme 0:774324cbc5a6 177 }
Rhyme 0:774324cbc5a6 178
Rhyme 0:774324cbc5a6 179 void time2str(struct tm *tm, char *timestr)
Rhyme 0:774324cbc5a6 180 {
Rhyme 0:774324cbc5a6 181 sprintf(timestr, "%02d:%02d:%02d",
Rhyme 0:774324cbc5a6 182 tm->tm_hour,
Rhyme 0:774324cbc5a6 183 tm->tm_min,
Rhyme 0:774324cbc5a6 184 tm->tm_sec ) ;
Rhyme 0:774324cbc5a6 185 }
Rhyme 0:774324cbc5a6 186
Rhyme 0:774324cbc5a6 187 void time2str(char *timestr)
Rhyme 0:774324cbc5a6 188 {
Rhyme 0:774324cbc5a6 189 struct tm timestruct ;
Rhyme 0:774324cbc5a6 190 ts2time(edge_time, &timestruct) ;
Rhyme 0:774324cbc5a6 191 time2str(&timestruct, timestr) ;
Rhyme 0:774324cbc5a6 192 }
Rhyme 0:774324cbc5a6 193
Rhyme 0:774324cbc5a6 194 int32_t time2seq(uint32_t timestamp)
Rhyme 0:774324cbc5a6 195 {
Rhyme 0:774324cbc5a6 196 struct tm timestruct ;
Rhyme 0:774324cbc5a6 197 int32_t result ;
Rhyme 0:774324cbc5a6 198 ts2time(timestamp, &timestruct) ;
Rhyme 0:774324cbc5a6 199 result = timestruct.tm_hour * 10000
Rhyme 0:774324cbc5a6 200 + timestruct.tm_min * 100
Rhyme 0:774324cbc5a6 201 + timestruct.tm_sec ;
Rhyme 0:774324cbc5a6 202 return(result) ;
Rhyme 0:774324cbc5a6 203 }
Rhyme 0:774324cbc5a6 204
Rhyme 0:774324cbc5a6 205 void time2seq(uint32_t timestamp, char *timestr)
Rhyme 0:774324cbc5a6 206 {
Rhyme 0:774324cbc5a6 207 struct tm timestruct ;
Rhyme 0:774324cbc5a6 208 ts2tm(timestamp, &timestruct) ;
Rhyme 0:774324cbc5a6 209 sprintf(timestr, "%d%02d%02d%02d%02d%02d",
Rhyme 0:774324cbc5a6 210 timestruct.tm_year,
Rhyme 0:774324cbc5a6 211 timestruct.tm_mon + 1,
Rhyme 0:774324cbc5a6 212 timestruct.tm_mday,
Rhyme 0:774324cbc5a6 213 timestruct.tm_hour,
Rhyme 0:774324cbc5a6 214 timestruct.tm_min,
Rhyme 0:774324cbc5a6 215 timestruct.tm_sec
Rhyme 0:774324cbc5a6 216 ) ;
Rhyme 0:774324cbc5a6 217 }
Rhyme 0:774324cbc5a6 218
Rhyme 0:774324cbc5a6 219 void time2date(struct tm *tm, char *datestr)
Rhyme 0:774324cbc5a6 220 {
Rhyme 0:774324cbc5a6 221 sprintf(datestr, "%d/%d/%d %02d:%02d:%02d (%s)",
Rhyme 0:774324cbc5a6 222 tm->tm_year,
Rhyme 0:774324cbc5a6 223 tm->tm_mon + 1,
Rhyme 0:774324cbc5a6 224 tm->tm_mday,
Rhyme 0:774324cbc5a6 225 tm->tm_hour,
Rhyme 0:774324cbc5a6 226 tm->tm_min,
Rhyme 0:774324cbc5a6 227 tm->tm_sec,
Rhyme 0:774324cbc5a6 228 nameOfDay[tm->tm_wday]
Rhyme 0:774324cbc5a6 229 ) ;
Rhyme 0:774324cbc5a6 230 }