Sample code for the TrainInfoLib

Dependencies:   NJE10XCtrlLib NTPClient_NetServices mbed IniFileLib NextTrainFileLib TrainInfoLib lwip

Committer:
rinosh2
Date:
Fri Nov 19 20:40:48 2010 +0000
Revision:
0:1a9fa43d77af
Child:
1:93b052511e2c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rinosh2 0:1a9fa43d77af 1 ///////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 2 // TrainInfo: sample code for the TrainInfo library by rinos 2010
rinosh2 0:1a9fa43d77af 3 ///////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 4
rinosh2 0:1a9fa43d77af 5 #include "TrainInfo.h"
rinosh2 0:1a9fa43d77af 6 #include "NJE10XCtrl.h"
rinosh2 0:1a9fa43d77af 7 #include <time.h>
rinosh2 0:1a9fa43d77af 8
rinosh2 0:1a9fa43d77af 9 ///////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 10
rinosh2 0:1a9fa43d77af 11 LocalFileSystem local("local");
rinosh2 0:1a9fa43d77af 12 NJE10XCtrl gNJE(p9);
rinosh2 0:1a9fa43d77af 13
rinosh2 0:1a9fa43d77af 14 // critical section
rinosh2 0:1a9fa43d77af 15 #define TickerLock() (NVIC_DisableIRQ(TIMER3_IRQn))
rinosh2 0:1a9fa43d77af 16 #define TickerUnlock() (NVIC_EnableIRQ (TIMER3_IRQn))
rinosh2 0:1a9fa43d77af 17
rinosh2 0:1a9fa43d77af 18 // Config file
rinosh2 0:1a9fa43d77af 19 #ifndef ROOTPATH
rinosh2 0:1a9fa43d77af 20 #define ROOTPATH "/local/"
rinosh2 0:1a9fa43d77af 21 #endif
rinosh2 0:1a9fa43d77af 22 const char INI_FILE[] = ROOTPATH "TInfo.ini";
rinosh2 0:1a9fa43d77af 23 const int DEFAULT_GIVEUP_SEC = 30; // Giveup-seconds to take the next train
rinosh2 0:1a9fa43d77af 24 int gGiveupSec = DEFAULT_GIVEUP_SEC;
rinosh2 0:1a9fa43d77af 25 char gDelayMessage[TrainInfo::MAX_DELAY_MESSAGE];
rinosh2 0:1a9fa43d77af 26 int gDispMode = 0;
rinosh2 0:1a9fa43d77af 27 int gTimeZone = 540; // +9h00m
rinosh2 0:1a9fa43d77af 28
rinosh2 0:1a9fa43d77af 29 // Latest search cache
rinosh2 0:1a9fa43d77af 30 time_t gSerchTime;
rinosh2 0:1a9fa43d77af 31 NextTrainFile::NextInfo gNext[2];
rinosh2 0:1a9fa43d77af 32 int gDelayStatus = 0;
rinosh2 0:1a9fa43d77af 33 const int S_INFO_OK = 0x01;
rinosh2 0:1a9fa43d77af 34 const int S_DELAY = 0x10;
rinosh2 0:1a9fa43d77af 35
rinosh2 0:1a9fa43d77af 36
rinosh2 0:1a9fa43d77af 37 ////////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 38 // RTC Configuration
rinosh2 0:1a9fa43d77af 39
rinosh2 0:1a9fa43d77af 40 //#define USE_NTPCLIENT 1
rinosh2 0:1a9fa43d77af 41
rinosh2 0:1a9fa43d77af 42 #ifdef USE_NTPCLIENT
rinosh2 0:1a9fa43d77af 43 #include "EthernetNetIf.h"
rinosh2 0:1a9fa43d77af 44 #include "NTPClient.h"
rinosh2 0:1a9fa43d77af 45
rinosh2 0:1a9fa43d77af 46 int UpdateRTC(const char* ntp_server, int ntp_port, int timezone) {
rinosh2 0:1a9fa43d77af 47 printf("UpdateRTC by NTPClient...\n");
rinosh2 0:1a9fa43d77af 48
rinosh2 0:1a9fa43d77af 49 EthernetNetIf eth;
rinosh2 0:1a9fa43d77af 50 EthernetErr ethErr = eth.setup(); // default timeout: 15sec
rinosh2 0:1a9fa43d77af 51 if (ethErr) {
rinosh2 0:1a9fa43d77af 52 printf("eth.setup failed %d.\n", ethErr);
rinosh2 0:1a9fa43d77af 53 return 1;
rinosh2 0:1a9fa43d77af 54 }
rinosh2 0:1a9fa43d77af 55 /*
rinosh2 0:1a9fa43d77af 56 time_t now = time(0);
rinosh2 0:1a9fa43d77af 57 if(now){
rinosh2 0:1a9fa43d77af 58 printf("Use current RTC: %d\n", now);
rinosh2 0:1a9fa43d77af 59 return 0;
rinosh2 0:1a9fa43d77af 60 }
rinosh2 0:1a9fa43d77af 61 */
rinosh2 0:1a9fa43d77af 62 printf("Connect to the NTP server %s...\n", ntp_server);
rinosh2 0:1a9fa43d77af 63
rinosh2 0:1a9fa43d77af 64 NTPResult ntpErr = NTPClient().setTime(Host(IpAddr(), ntp_port, ntp_server));
rinosh2 0:1a9fa43d77af 65 if(ntpErr){
rinosh2 0:1a9fa43d77af 66 printf("NTPClient::setTime failed %d.\n", ntpErr);
rinosh2 0:1a9fa43d77af 67 return 2;
rinosh2 0:1a9fa43d77af 68 }
rinosh2 0:1a9fa43d77af 69
rinosh2 0:1a9fa43d77af 70 #else
rinosh2 0:1a9fa43d77af 71 // I can't use NTPClient with LWIP HTTPClient...
rinosh2 0:1a9fa43d77af 72 // So, I get the RTC via http-NTP server.
rinosh2 0:1a9fa43d77af 73
rinosh2 0:1a9fa43d77af 74 #include "HTTPClient.h"
rinosh2 0:1a9fa43d77af 75 #define NTP2POSIX 2208988800UL
rinosh2 0:1a9fa43d77af 76
rinosh2 0:1a9fa43d77af 77 int UpdateRTC(const char* ntp_server, int ntp_port, int timezone) {
rinosh2 0:1a9fa43d77af 78 printf("UpdateRTC by HTTP-NTP...\n");
rinosh2 0:1a9fa43d77af 79
rinosh2 0:1a9fa43d77af 80 char rbuf[80];
rinosh2 0:1a9fa43d77af 81 printf("Connect to the NTP server %s...\n", ntp_server);
rinosh2 0:1a9fa43d77af 82 HTTPClient http;
rinosh2 0:1a9fa43d77af 83 http.timeout(10);
rinosh2 0:1a9fa43d77af 84 int len = http.get(ntp_server, rbuf, sizeof(rbuf) - 1);
rinosh2 0:1a9fa43d77af 85 if(len){
rinosh2 0:1a9fa43d77af 86 rbuf[len] = '\0';
rinosh2 0:1a9fa43d77af 87 char* p = strstr(rbuf, "<BODY>");
rinosh2 0:1a9fa43d77af 88 if(p){
rinosh2 0:1a9fa43d77af 89 p += 7;
rinosh2 0:1a9fa43d77af 90 time_t val = strtoul(p, 0, 10) - NTP2POSIX;
rinosh2 0:1a9fa43d77af 91 set_time(val);
rinosh2 0:1a9fa43d77af 92 printf("NTP set %d\n", val);
rinosh2 0:1a9fa43d77af 93 }
rinosh2 0:1a9fa43d77af 94 printf("HTTPClient download [%s]\n", rbuf);
rinosh2 0:1a9fa43d77af 95 }
rinosh2 0:1a9fa43d77af 96
rinosh2 0:1a9fa43d77af 97 #endif
rinosh2 0:1a9fa43d77af 98 // Puts RTC (JST)
rinosh2 0:1a9fa43d77af 99 time_t now = time(0) + timezone;
rinosh2 0:1a9fa43d77af 100 printf("RTC(JST): %s\n", ctime(&now));
rinosh2 0:1a9fa43d77af 101 return 0;
rinosh2 0:1a9fa43d77af 102 }
rinosh2 0:1a9fa43d77af 103
rinosh2 0:1a9fa43d77af 104 ////////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 105 // Display control
rinosh2 0:1a9fa43d77af 106
rinosh2 0:1a9fa43d77af 107 #include "NJE10XCtrl.h"
rinosh2 0:1a9fa43d77af 108
rinosh2 0:1a9fa43d77af 109 char gMsgNoTrain[100] = "NoTrain";
rinosh2 0:1a9fa43d77af 110 char gMsgLeft [ 20] = "Left";
rinosh2 0:1a9fa43d77af 111 char gMsgDir [ 20] = "To";
rinosh2 0:1a9fa43d77af 112 char gMsgSec [ 20] = "Sec";
rinosh2 0:1a9fa43d77af 113 int gMsgWarn = 60 * 3; // 3min
rinosh2 0:1a9fa43d77af 114
rinosh2 0:1a9fa43d77af 115 void dispTime(){
rinosh2 0:1a9fa43d77af 116 char buf[100];
rinosh2 0:1a9fa43d77af 117 time_t t = time(0) + gTimeZone;
rinosh2 0:1a9fa43d77af 118 struct tm* st = localtime(&t);
rinosh2 0:1a9fa43d77af 119 t -= gSerchTime;
rinosh2 0:1a9fa43d77af 120
rinosh2 0:1a9fa43d77af 121 gNJE.clear();
rinosh2 0:1a9fa43d77af 122 NextTrainFile::NextInfo* p = &gNext[0];
rinosh2 0:1a9fa43d77af 123 if(p->m_diff < 0){
rinosh2 0:1a9fa43d77af 124 printf("Now:%02d:%02d:%02d, %s\n", st->tm_hour, st->tm_min, st->tm_sec, gMsgNoTrain); // or error
rinosh2 0:1a9fa43d77af 125 sprintf(buf, "%02d:%02d:%02d ", st->tm_hour, st->tm_min, st->tm_sec);
rinosh2 0:1a9fa43d77af 126 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 127 gNJE.addAttr(NJE10XCtrl::ATTR_RED);
rinosh2 0:1a9fa43d77af 128 gNJE.add(gMsgNoTrain);
rinosh2 0:1a9fa43d77af 129 gNJE.setMessage(1);
rinosh2 0:1a9fa43d77af 130 return;
rinosh2 0:1a9fa43d77af 131 }
rinosh2 0:1a9fa43d77af 132
rinosh2 0:1a9fa43d77af 133 // Check the difference (was gone?)
rinosh2 0:1a9fa43d77af 134 int diff = p->m_diff - t;
rinosh2 0:1a9fa43d77af 135 if(diff < gGiveupSec){
rinosh2 0:1a9fa43d77af 136 p = &gNext[1];
rinosh2 0:1a9fa43d77af 137 diff = p->m_diff - t;
rinosh2 0:1a9fa43d77af 138 }
rinosh2 0:1a9fa43d77af 139
rinosh2 0:1a9fa43d77af 140 // Show message to the NJE-105
rinosh2 0:1a9fa43d77af 141 NJE10XCtrl::Attr1 a1 = NJE10XCtrl::ATTR_GREEN;
rinosh2 0:1a9fa43d77af 142 NJE10XCtrl::Attr2 a2 = NJE10XCtrl::ATTR_SCROLL_R;
rinosh2 0:1a9fa43d77af 143 NJE10XCtrl::Attr3 a3 = NJE10XCtrl::ATTR_NORMAL;
rinosh2 0:1a9fa43d77af 144
rinosh2 0:1a9fa43d77af 145 if(diff < 0){
rinosh2 0:1a9fa43d77af 146 printf("%02d:%02d Gone%2dsec ", p->m_hour, p->m_min, -diff);
rinosh2 0:1a9fa43d77af 147
rinosh2 0:1a9fa43d77af 148 sprintf(buf, "%02d:%02d", p->m_hour, p->m_min);
rinosh2 0:1a9fa43d77af 149 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 150 //gNJE.addAttr(NJE10XCtrl::ATTR_YELLOW, NJE10XCtrl::ATTR_SCROLL);
rinosh2 0:1a9fa43d77af 151 gNJE.add(p->m_option);
rinosh2 0:1a9fa43d77af 152 gNJE.add(gMsgDir);
rinosh2 0:1a9fa43d77af 153 sprintf(buf, " Gone%ds", -diff);
rinosh2 0:1a9fa43d77af 154 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 155 } else if(diff < 60) {
rinosh2 0:1a9fa43d77af 156 // 123456789012345678901234 (NJE-105)
rinosh2 0:1a9fa43d77af 157 // MM:HH •’Ê “ú‹gs Žc59•b
rinosh2 0:1a9fa43d77af 158 printf("%02d:%02d Left%2dsec %s\n", p->m_hour, p->m_min, diff, p->m_option);
rinosh2 0:1a9fa43d77af 159
rinosh2 0:1a9fa43d77af 160 sprintf(buf, "%02d:%02d", p->m_hour, p->m_min);
rinosh2 0:1a9fa43d77af 161 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 162 gNJE.addAttr(NJE10XCtrl::ATTR_YELLOW, NJE10XCtrl::ATTR_SCROLL_R);
rinosh2 0:1a9fa43d77af 163 gNJE.add(p->m_option);
rinosh2 0:1a9fa43d77af 164 gNJE.add(gMsgDir);
rinosh2 0:1a9fa43d77af 165 gNJE.addAttr((diff<gMsgWarn)? NJE10XCtrl::ATTR_RED : NJE10XCtrl::ATTR_GREEN, NJE10XCtrl::ATTR_SCROLL_R);
rinosh2 0:1a9fa43d77af 166 gNJE.add(' ');
rinosh2 0:1a9fa43d77af 167 gNJE.add(gMsgLeft);
rinosh2 0:1a9fa43d77af 168 sprintf(buf, "%2d%s", diff, gMsgSec);
rinosh2 0:1a9fa43d77af 169 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 170 } else {
rinosh2 0:1a9fa43d77af 171 // 123456789012345678901234 (NJE-105)
rinosh2 0:1a9fa43d77af 172 // MM:HH•’Ê “ú‹gs Žc01:23
rinosh2 0:1a9fa43d77af 173 int diff_min = diff / 60;
rinosh2 0:1a9fa43d77af 174 int diff_sec = diff % 60;
rinosh2 0:1a9fa43d77af 175 printf("%02d:%02d Left%2d:%02d(%s)\n", p->m_hour, p->m_min, diff_min, diff_sec, p->m_option);
rinosh2 0:1a9fa43d77af 176
rinosh2 0:1a9fa43d77af 177 sprintf(buf, "%02d:%02d", p->m_hour, p->m_min);
rinosh2 0:1a9fa43d77af 178 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 179 gNJE.addAttr(NJE10XCtrl::ATTR_YELLOW, NJE10XCtrl::ATTR_SCROLL_R);
rinosh2 0:1a9fa43d77af 180 gNJE.add(p->m_option);
rinosh2 0:1a9fa43d77af 181 gNJE.add(gMsgDir);
rinosh2 0:1a9fa43d77af 182 gNJE.addAttr((diff<gMsgWarn)? NJE10XCtrl::ATTR_RED : NJE10XCtrl::ATTR_GREEN, NJE10XCtrl::ATTR_SCROLL_R);
rinosh2 0:1a9fa43d77af 183 gNJE.add(gMsgLeft);
rinosh2 0:1a9fa43d77af 184 sprintf(buf, "%2d:%02d", diff_min, diff_sec);
rinosh2 0:1a9fa43d77af 185 gNJE.add(buf);
rinosh2 0:1a9fa43d77af 186 }
rinosh2 0:1a9fa43d77af 187
rinosh2 0:1a9fa43d77af 188 // delay
rinosh2 0:1a9fa43d77af 189 a1 = NJE10XCtrl::ATTR_GREEN;
rinosh2 0:1a9fa43d77af 190 int delay = 0;
rinosh2 0:1a9fa43d77af 191 if(gDelayStatus & S_DELAY){
rinosh2 0:1a9fa43d77af 192 delay = 1;
rinosh2 0:1a9fa43d77af 193 a1 = NJE10XCtrl::ATTR_RED;
rinosh2 0:1a9fa43d77af 194 } else if(*gDelayMessage){
rinosh2 0:1a9fa43d77af 195 if(diff % 60 < 3) delay = 1;
rinosh2 0:1a9fa43d77af 196 }
rinosh2 0:1a9fa43d77af 197
rinosh2 0:1a9fa43d77af 198 if(delay) gNJE.setMessage(2, gDelayMessage, a1);
rinosh2 0:1a9fa43d77af 199 else gNJE.delMessage(2);
rinosh2 0:1a9fa43d77af 200 gNJE.setMessage(1, 0, a1, a2, a3);
rinosh2 0:1a9fa43d77af 201
rinosh2 0:1a9fa43d77af 202 // if(delay) gNJE.setMessage(1, gDelayMessage);
rinosh2 0:1a9fa43d77af 203 // else gNJE.setMessage(1, 0, a1, a2, a3);
rinosh2 0:1a9fa43d77af 204 }
rinosh2 0:1a9fa43d77af 205
rinosh2 0:1a9fa43d77af 206 void dispDelay(){
rinosh2 0:1a9fa43d77af 207 if(++gDispMode > 10) gDispMode = 0;
rinosh2 0:1a9fa43d77af 208 if(gDispMode != 1){
rinosh2 0:1a9fa43d77af 209 gNJE.delMessage(2);
rinosh2 0:1a9fa43d77af 210 return;
rinosh2 0:1a9fa43d77af 211 }
rinosh2 0:1a9fa43d77af 212 printf("%s\n", gDelayMessage);
rinosh2 0:1a9fa43d77af 213 gNJE.setMessage(2, gDelayMessage);
rinosh2 0:1a9fa43d77af 214 }
rinosh2 0:1a9fa43d77af 215
rinosh2 0:1a9fa43d77af 216 void dispWait(){
rinosh2 0:1a9fa43d77af 217 if(++gDispMode > 10) gDispMode = 0;
rinosh2 0:1a9fa43d77af 218 if(gDispMode != 1){
rinosh2 0:1a9fa43d77af 219 return;
rinosh2 0:1a9fa43d77af 220 }
rinosh2 0:1a9fa43d77af 221 printf("Please wait...\n");
rinosh2 0:1a9fa43d77af 222 gNJE.setMessage(1, "Please wait...");
rinosh2 0:1a9fa43d77af 223 }
rinosh2 0:1a9fa43d77af 224
rinosh2 0:1a9fa43d77af 225 void dispCB(){
rinosh2 0:1a9fa43d77af 226 // if(gDelayStatus & S_DELAY){
rinosh2 0:1a9fa43d77af 227 // dispDelay();
rinosh2 0:1a9fa43d77af 228 // } else {
rinosh2 0:1a9fa43d77af 229 if(gDelayStatus & S_INFO_OK){
rinosh2 0:1a9fa43d77af 230 dispTime();
rinosh2 0:1a9fa43d77af 231 gDispMode = 0;
rinosh2 0:1a9fa43d77af 232 } else {
rinosh2 0:1a9fa43d77af 233 dispWait();
rinosh2 0:1a9fa43d77af 234 }
rinosh2 0:1a9fa43d77af 235 // }
rinosh2 0:1a9fa43d77af 236 }
rinosh2 0:1a9fa43d77af 237
rinosh2 0:1a9fa43d77af 238 ////////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 239 // NextTrain & Delay information control
rinosh2 0:1a9fa43d77af 240 int updateNext(TrainInfo& train){
rinosh2 0:1a9fa43d77af 241 printf("UpdateTrain\n");
rinosh2 0:1a9fa43d77af 242
rinosh2 0:1a9fa43d77af 243 // Next (and 2nd Next) train check
rinosh2 0:1a9fa43d77af 244 TickerLock();
rinosh2 0:1a9fa43d77af 245 time_t now = time(0) + gTimeZone;
rinosh2 0:1a9fa43d77af 246 gSerchTime = now;
rinosh2 0:1a9fa43d77af 247 struct tm* st = localtime(&now);
rinosh2 0:1a9fa43d77af 248 for(int index = 0, offset = 0 ; index < 2; ++offset){
rinosh2 0:1a9fa43d77af 249 NextTrainFile::Status ret = train.search(now, offset);
rinosh2 0:1a9fa43d77af 250 switch(ret){
rinosh2 0:1a9fa43d77af 251 case NextTrainFile::S_SUCCESS:
rinosh2 0:1a9fa43d77af 252 if(train.next()->m_diff > gGiveupSec){
rinosh2 0:1a9fa43d77af 253 gNext[index++] = *train.next();
rinosh2 0:1a9fa43d77af 254 }
rinosh2 0:1a9fa43d77af 255 break;
rinosh2 0:1a9fa43d77af 256
rinosh2 0:1a9fa43d77af 257 case NextTrainFile::S_NO_TRAIN:
rinosh2 0:1a9fa43d77af 258 gNext[index++].m_diff = -1;
rinosh2 0:1a9fa43d77af 259 break;
rinosh2 0:1a9fa43d77af 260
rinosh2 0:1a9fa43d77af 261 default:
rinosh2 0:1a9fa43d77af 262 gNext[index++].m_diff = -2;
rinosh2 0:1a9fa43d77af 263 break;
rinosh2 0:1a9fa43d77af 264 }
rinosh2 0:1a9fa43d77af 265 }
rinosh2 0:1a9fa43d77af 266 gDelayStatus |= S_INFO_OK;
rinosh2 0:1a9fa43d77af 267 TickerUnlock();
rinosh2 0:1a9fa43d77af 268 return 0;
rinosh2 0:1a9fa43d77af 269 }
rinosh2 0:1a9fa43d77af 270
rinosh2 0:1a9fa43d77af 271 int updateDelay(TrainInfo& train){
rinosh2 0:1a9fa43d77af 272 // Delay check
rinosh2 0:1a9fa43d77af 273 TrainInfo::Status ret = train.checkDelay();
rinosh2 0:1a9fa43d77af 274 if(ret == TrainInfo::S_DELAY_DETECTED){
rinosh2 0:1a9fa43d77af 275 TickerLock();
rinosh2 0:1a9fa43d77af 276 train.getDelayMessage(gDelayMessage, sizeof(gDelayMessage));
rinosh2 0:1a9fa43d77af 277 gDelayStatus |= S_DELAY;
rinosh2 0:1a9fa43d77af 278 TickerUnlock();
rinosh2 0:1a9fa43d77af 279 } else {
rinosh2 0:1a9fa43d77af 280 TickerLock();
rinosh2 0:1a9fa43d77af 281 train.getDelayMessage(gDelayMessage, sizeof(gDelayMessage)); // copy for testing...
rinosh2 0:1a9fa43d77af 282 gDelayStatus &= ~S_DELAY;
rinosh2 0:1a9fa43d77af 283 TickerUnlock();
rinosh2 0:1a9fa43d77af 284 }
rinosh2 0:1a9fa43d77af 285 return 0;
rinosh2 0:1a9fa43d77af 286 }
rinosh2 0:1a9fa43d77af 287
rinosh2 0:1a9fa43d77af 288 int updateAll(){
rinosh2 0:1a9fa43d77af 289 TrainInfo train;
rinosh2 0:1a9fa43d77af 290
rinosh2 0:1a9fa43d77af 291 if(train.open(INI_FILE)){
rinosh2 0:1a9fa43d77af 292 printf("Can't open INI file '%s'\n", INI_FILE);
rinosh2 0:1a9fa43d77af 293 return 1;
rinosh2 0:1a9fa43d77af 294 }
rinosh2 0:1a9fa43d77af 295 updateNext (train);
rinosh2 0:1a9fa43d77af 296 updateDelay(train);
rinosh2 0:1a9fa43d77af 297 return 0;
rinosh2 0:1a9fa43d77af 298 }
rinosh2 0:1a9fa43d77af 299
rinosh2 0:1a9fa43d77af 300 ////////////////////////////////////////////////////////////////////////////////
rinosh2 0:1a9fa43d77af 301 // Configuration and Startup
rinosh2 0:1a9fa43d77af 302 int setupParams(const char* inifile){
rinosh2 0:1a9fa43d77af 303 char ntpserver[100] = "ntp.jst.mfeed.ad.jp";
rinosh2 0:1a9fa43d77af 304 int ntpport = 123;
rinosh2 0:1a9fa43d77af 305
rinosh2 0:1a9fa43d77af 306 const IniFile::IniList INI_PARAM_LIST[] = {
rinosh2 0:1a9fa43d77af 307 INIFILE_INT("GiveupSec", gGiveupSec),
rinosh2 0:1a9fa43d77af 308 INIFILE_STR("NTPServer", ntpserver, sizeof(ntpserver)),
rinosh2 0:1a9fa43d77af 309 INIFILE_INT("NTPPort", ntpport),
rinosh2 0:1a9fa43d77af 310 INIFILE_INT("TimeZone", gTimeZone),
rinosh2 0:1a9fa43d77af 311
rinosh2 0:1a9fa43d77af 312 INIFILE_STR("MsgNoTrain", gMsgNoTrain, sizeof(gMsgNoTrain)),
rinosh2 0:1a9fa43d77af 313 INIFILE_STR("MsgLeft", gMsgLeft, sizeof(gMsgLeft)),
rinosh2 0:1a9fa43d77af 314 INIFILE_STR("MsgDir", gMsgDir, sizeof(gMsgDir)),
rinosh2 0:1a9fa43d77af 315 INIFILE_STR("MsgSec", gMsgSec, sizeof(gMsgSec)),
rinosh2 0:1a9fa43d77af 316
rinosh2 0:1a9fa43d77af 317 INIFILE_INT("MsgWarn", gMsgWarn),
rinosh2 0:1a9fa43d77af 318
rinosh2 0:1a9fa43d77af 319 INIFILE_END,
rinosh2 0:1a9fa43d77af 320 };
rinosh2 0:1a9fa43d77af 321
rinosh2 0:1a9fa43d77af 322 IniFile::getval(inifile, INI_PARAM_LIST);
rinosh2 0:1a9fa43d77af 323 gTimeZone *= 60;
rinosh2 0:1a9fa43d77af 324
rinosh2 0:1a9fa43d77af 325 // Init NJE
rinosh2 0:1a9fa43d77af 326 gNJE.setScrollSpeed(NJE10XCtrl::ScrollSpeed(NJE10XCtrl::SCROLL_FAST));
rinosh2 0:1a9fa43d77af 327 //gNJE.setBlinkSpeed(NJE10XCtrl::BlinkSpeed(NJE10XCtrl::BLINK_FAST));
rinosh2 0:1a9fa43d77af 328 gNJE.setStopTime(1);
rinosh2 0:1a9fa43d77af 329 gNJE.setMessage(1, "Please wait...");
rinosh2 0:1a9fa43d77af 330
rinosh2 0:1a9fa43d77af 331
rinosh2 0:1a9fa43d77af 332 // Init RTC
rinosh2 0:1a9fa43d77af 333 UpdateRTC(ntpserver, ntpport, gTimeZone);
rinosh2 0:1a9fa43d77af 334 return 0;
rinosh2 0:1a9fa43d77af 335 }
rinosh2 0:1a9fa43d77af 336
rinosh2 0:1a9fa43d77af 337 int main(){
rinosh2 0:1a9fa43d77af 338 setupParams(INI_FILE);
rinosh2 0:1a9fa43d77af 339 Ticker dispTicker;
rinosh2 0:1a9fa43d77af 340 dispTicker.attach(dispCB, 1); // 1 update per sec
rinosh2 0:1a9fa43d77af 341
rinosh2 0:1a9fa43d77af 342 for(;;){
rinosh2 0:1a9fa43d77af 343 printf("Update information\n");
rinosh2 0:1a9fa43d77af 344 if(updateAll()) break;
rinosh2 0:1a9fa43d77af 345
rinosh2 0:1a9fa43d77af 346 // Free LocalFileSystem before waiting.
rinosh2 0:1a9fa43d77af 347 // (For access file via USB)
rinosh2 0:1a9fa43d77af 348 wait(60);
rinosh2 0:1a9fa43d77af 349 }
rinosh2 0:1a9fa43d77af 350 dispTicker.detach();
rinosh2 0:1a9fa43d77af 351 printf("Program end\n");
rinosh2 0:1a9fa43d77af 352 return 0;
rinosh2 0:1a9fa43d77af 353 }