Measure system

Dependencies:   EthernetNetIf mbed RF12B

Committer:
benecsj
Date:
Thu Mar 03 08:45:49 2011 +0000
Revision:
0:8d62137f7ff4
Child:
1:b26ab2467b1a
For FRIENDs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benecsj 0:8d62137f7ff4 1 #define MEASURE_C
benecsj 0:8d62137f7ff4 2
benecsj 0:8d62137f7ff4 3
benecsj 0:8d62137f7ff4 4 #include "EthernetNetIf.h"
benecsj 0:8d62137f7ff4 5 #include "HTTPServer.h"
benecsj 0:8d62137f7ff4 6 #include "SDFileSystem.h"
benecsj 0:8d62137f7ff4 7 #include "TextLCD.h"
benecsj 0:8d62137f7ff4 8 #include "DS1820.h"
benecsj 0:8d62137f7ff4 9 #include "MeasureSystem.h"
benecsj 0:8d62137f7ff4 10 #include "NTPClient.h"
benecsj 0:8d62137f7ff4 11 #include "WatchDog.h"
benecsj 0:8d62137f7ff4 12 #include "HTTPClient.h"
benecsj 0:8d62137f7ff4 13
benecsj 0:8d62137f7ff4 14 //--------------Objects and vars------------------
benecsj 0:8d62137f7ff4 15 EthernetNetIf *eth;
benecsj 0:8d62137f7ff4 16 HTTPServer svr;
benecsj 0:8d62137f7ff4 17 NTPClient ntp;
benecsj 0:8d62137f7ff4 18
benecsj 0:8d62137f7ff4 19 Serial pc(USBTX, USBRX); // Serial debug usb port
benecsj 0:8d62137f7ff4 20 DigitalIn dhcpOn(p30);
benecsj 0:8d62137f7ff4 21 DigitalOut led1(LED1, "led1");
benecsj 0:8d62137f7ff4 22 DigitalOut led2(LED2, "led2");
benecsj 0:8d62137f7ff4 23 DigitalOut led3(LED3, "led3");
benecsj 0:8d62137f7ff4 24 DigitalOut led4(LED4, "led4");
benecsj 0:8d62137f7ff4 25 LocalFileSystem local("local"); //Internal flash
benecsj 0:8d62137f7ff4 26 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
benecsj 0:8d62137f7ff4 27 TextLCD lcd(p21, p23, p24, p25, p26, p27, TextLCD::LCD20x4 ); //Char lcd
benecsj 0:8d62137f7ff4 28 watchdog wdog(15); // WDT 15 seconds
benecsj 0:8d62137f7ff4 29
benecsj 0:8d62137f7ff4 30 const int MAX_PROBES = 2;
benecsj 0:8d62137f7ff4 31 #define LOGGER_FILE "/sd/syslog/log.txt"
benecsj 0:8d62137f7ff4 32 #define STATUS_FILE "/local/status.dat"
benecsj 0:8d62137f7ff4 33 #define CONFIG_FILE "/local/config.txt"
benecsj 0:8d62137f7ff4 34 #define SOURCE_FILE "/sd/index.htm"
benecsj 0:8d62137f7ff4 35 #define TARGET_FILE "/local/index.htm"
benecsj 0:8d62137f7ff4 36 #define COPY_BLOCK_SIZE 2048
benecsj 0:8d62137f7ff4 37 DS1820* probe[MAX_PROBES]; //Temp sensors
benecsj 0:8d62137f7ff4 38
benecsj 0:8d62137f7ff4 39 //------status flags-----------------
benecsj 0:8d62137f7ff4 40 int devices_found=0;
benecsj 0:8d62137f7ff4 41 static string wanIP;
benecsj 0:8d62137f7ff4 42 static string localIP;
benecsj 0:8d62137f7ff4 43 int logging;
benecsj 0:8d62137f7ff4 44 int fileindex;
benecsj 0:8d62137f7ff4 45 bool getIPfromDHCP;
benecsj 0:8d62137f7ff4 46 int interval;
benecsj 0:8d62137f7ff4 47 int ipConfig[4];
benecsj 0:8d62137f7ff4 48 int maskConfig[4];
benecsj 0:8d62137f7ff4 49 int gatewayConfig[4];
benecsj 0:8d62137f7ff4 50 int dnsConfig[4];
benecsj 0:8d62137f7ff4 51 //---------------------MAIN-----------------------
benecsj 0:8d62137f7ff4 52 int main() {
benecsj 0:8d62137f7ff4 53 pc.baud(921600);
benecsj 0:8d62137f7ff4 54 HandlerActive = false;
benecsj 0:8d62137f7ff4 55 //-----------------LCD test-------------------
benecsj 0:8d62137f7ff4 56 printf("\r\n\r\n<----------------------------------------------->");
benecsj 0:8d62137f7ff4 57 printf("\r\n<System Startup>\r\n");
benecsj 0:8d62137f7ff4 58 lcd.cls();
benecsj 0:8d62137f7ff4 59 lcd.printf("LCD Init.......Done\n");
benecsj 0:8d62137f7ff4 60 wait(0.2);
benecsj 0:8d62137f7ff4 61
benecsj 0:8d62137f7ff4 62 //----------------SD.card test----------------
benecsj 0:8d62137f7ff4 63 printf("<SD card init>\r\n");
benecsj 0:8d62137f7ff4 64 lcd.printf("SDcard Init....");
benecsj 0:8d62137f7ff4 65 mkdir("/sd/syslog", 0777);
benecsj 0:8d62137f7ff4 66 FILE *fp = fopen(LOGGER_FILE, "a+");
benecsj 0:8d62137f7ff4 67 if (fp == NULL) {
benecsj 0:8d62137f7ff4 68 error("Could not open file for write\r\n");
benecsj 0:8d62137f7ff4 69 }
benecsj 0:8d62137f7ff4 70 else
benecsj 0:8d62137f7ff4 71 {
benecsj 0:8d62137f7ff4 72 fprintf(fp, "<-------------------->\r\n");
benecsj 0:8d62137f7ff4 73 fclose(fp);
benecsj 0:8d62137f7ff4 74 tempstring ="SYSTEM STARTUP";LogWrite(tempstring);
benecsj 0:8d62137f7ff4 75 }
benecsj 0:8d62137f7ff4 76 lcd.printf("Done\n");
benecsj 0:8d62137f7ff4 77
benecsj 0:8d62137f7ff4 78
benecsj 0:8d62137f7ff4 79 wdog.feed();
benecsj 0:8d62137f7ff4 80 //----------------DS1820 init-----------------
benecsj 0:8d62137f7ff4 81 printf("<DS1820 init>\r\n");
benecsj 0:8d62137f7ff4 82 lcd.printf("Init sensors.");
benecsj 0:8d62137f7ff4 83 InitDS1820();
benecsj 0:8d62137f7ff4 84 lcd.printf(".Done\n");
benecsj 0:8d62137f7ff4 85
benecsj 0:8d62137f7ff4 86 wdog.feed();
benecsj 0:8d62137f7ff4 87 //--------------Read config.txt---------------
benecsj 0:8d62137f7ff4 88 LoadConfig();
benecsj 0:8d62137f7ff4 89 //---------------Network init-----------------
benecsj 0:8d62137f7ff4 90 lcd.printf("Network Init...");
benecsj 0:8d62137f7ff4 91 printf("<Network Init>\r\n");
benecsj 0:8d62137f7ff4 92 /*
benecsj 0:8d62137f7ff4 93 char mac[6];
benecsj 0:8d62137f7ff4 94 mbed_mac_address(mac);
benecsj 0:8d62137f7ff4 95 for (int i=0; i<6;i++) {
benecsj 0:8d62137f7ff4 96 printf("%02X ", mac[i]);
benecsj 0:8d62137f7ff4 97 }
benecsj 0:8d62137f7ff4 98 printf("\n");
benecsj 0:8d62137f7ff4 99 */
benecsj 0:8d62137f7ff4 100 if (getIPfromDHCP) {
benecsj 0:8d62137f7ff4 101 eth = new EthernetNetIf();
benecsj 0:8d62137f7ff4 102 } else {
benecsj 0:8d62137f7ff4 103 eth = new EthernetNetIf(
benecsj 0:8d62137f7ff4 104 IpAddr(ipConfig[0],ipConfig[1],ipConfig[2],ipConfig[3]), //IP Address
benecsj 0:8d62137f7ff4 105 IpAddr(maskConfig[0],maskConfig[1],maskConfig[2],maskConfig[3]), //Network Mask
benecsj 0:8d62137f7ff4 106 IpAddr(gatewayConfig[0],gatewayConfig[1],gatewayConfig[2],gatewayConfig[3]), //Gateway
benecsj 0:8d62137f7ff4 107 IpAddr(dnsConfig[0],dnsConfig[1],dnsConfig[2],dnsConfig[3]) //DNS
benecsj 0:8d62137f7ff4 108 );
benecsj 0:8d62137f7ff4 109 }
benecsj 0:8d62137f7ff4 110 EthernetErr ethErr = eth->setup(10000);
benecsj 0:8d62137f7ff4 111 if (ethErr) {
benecsj 0:8d62137f7ff4 112 printf("Error %d in setup.\r\n", ethErr);
benecsj 0:8d62137f7ff4 113 lcd.printf("Error");
benecsj 0:8d62137f7ff4 114 }
benecsj 0:8d62137f7ff4 115
benecsj 0:8d62137f7ff4 116 sprintf(buf,"%d.%d.%d.%d",
benecsj 0:8d62137f7ff4 117 eth->getIp()[0], eth->getIp()[1], eth->getIp()[2], eth->getIp()[3]);
benecsj 0:8d62137f7ff4 118 localIP = string(buf);
benecsj 0:8d62137f7ff4 119
benecsj 0:8d62137f7ff4 120 printf("Setup OK\r\n");
benecsj 0:8d62137f7ff4 121 lcd.printf("Done\n");
benecsj 0:8d62137f7ff4 122 wdog.feed();
benecsj 0:8d62137f7ff4 123
benecsj 0:8d62137f7ff4 124 //-----------------WAN check---------------------------
benecsj 0:8d62137f7ff4 125
benecsj 0:8d62137f7ff4 126 wait(1);
benecsj 0:8d62137f7ff4 127 printf("<WAN Connection Check>\r\n");
benecsj 0:8d62137f7ff4 128 lcd.cls();
benecsj 0:8d62137f7ff4 129 lcd.printf("Internet conn..");
benecsj 0:8d62137f7ff4 130 GetMyIP();
benecsj 0:8d62137f7ff4 131 if (wanIP!="none") {
benecsj 0:8d62137f7ff4 132 lcd.printf("Done\n");
benecsj 0:8d62137f7ff4 133 printf("OK: %s\r\n",wanIP.c_str());
benecsj 0:8d62137f7ff4 134
benecsj 0:8d62137f7ff4 135 } else {
benecsj 0:8d62137f7ff4 136 lcd.printf("Fail\n");
benecsj 0:8d62137f7ff4 137 printf("No connection\r\n");
benecsj 0:8d62137f7ff4 138 }
benecsj 0:8d62137f7ff4 139 wdog.feed();
benecsj 0:8d62137f7ff4 140 //-----------------RTC INIT------------------------
benecsj 0:8d62137f7ff4 141
benecsj 0:8d62137f7ff4 142 lcd.printf("RTClock Init...");
benecsj 0:8d62137f7ff4 143 printf("<RTC Init>\r\n");
benecsj 0:8d62137f7ff4 144
benecsj 0:8d62137f7ff4 145 if (wanIP!="none") {
benecsj 0:8d62137f7ff4 146 UpdateTime();
benecsj 0:8d62137f7ff4 147 strftime(buf,sizeof(buf), "%A %m/%d/%Y %H:%M:%S\n", localtime(&ctTime));
benecsj 0:8d62137f7ff4 148 printf("Time is now : %s JST\r\n", buf);
benecsj 0:8d62137f7ff4 149 lcd.printf("Done\n");
benecsj 0:8d62137f7ff4 150 } else {
benecsj 0:8d62137f7ff4 151 printf("Cannot connect NTP Server!!\r\n");
benecsj 0:8d62137f7ff4 152 lcd.printf("Fail\n");
benecsj 0:8d62137f7ff4 153 }
benecsj 0:8d62137f7ff4 154
benecsj 0:8d62137f7ff4 155 wdog.feed();
benecsj 0:8d62137f7ff4 156
benecsj 0:8d62137f7ff4 157 //-------Init index.htm in local filesystem---------
benecsj 0:8d62137f7ff4 158 lcd.printf("Loading config.");
benecsj 0:8d62137f7ff4 159 LoadStatus();
benecsj 0:8d62137f7ff4 160 IndexInit();
benecsj 0:8d62137f7ff4 161 lcd.printf("Done\n");
benecsj 0:8d62137f7ff4 162 wdog.feed();
benecsj 0:8d62137f7ff4 163 //-----------------Welcome message------------------
benecsj 0:8d62137f7ff4 164 wait(2);
benecsj 0:8d62137f7ff4 165 lcd.cls();
benecsj 0:8d62137f7ff4 166 lcd.printf("Welcome to mbed. \nMeasure system.\n");
benecsj 0:8d62137f7ff4 167 lcd.printf("IP: %s\n",localIP.c_str());
benecsj 0:8d62137f7ff4 168 //--------------HTTP SERVER-------------------------
benecsj 0:8d62137f7ff4 169
benecsj 0:8d62137f7ff4 170 FSHandler::mount("/local", "/"); //Mount /wwww path on web root path
benecsj 0:8d62137f7ff4 171 FSHandler::mount("/sd", "/extern"); //Mount /wwww path on web root path
benecsj 0:8d62137f7ff4 172 svr.addHandler<FSHandler>("/files");// this does not see the subdirectory
benecsj 0:8d62137f7ff4 173 svr.addHandler<FSHandler>("/"); //Default handler
benecsj 0:8d62137f7ff4 174 svr.addHandler<SimpleHandler>("/com"); //Com hander
benecsj 0:8d62137f7ff4 175 svr.bind(80);
benecsj 0:8d62137f7ff4 176
benecsj 0:8d62137f7ff4 177 printf("<INIT DONE... Server running>\r\n");
benecsj 0:8d62137f7ff4 178 ctTime = time(NULL);
benecsj 0:8d62137f7ff4 179 ctTime += (clockoffset*3600);
benecsj 0:8d62137f7ff4 180 strftime(buf,sizeof(buf), "%Y/%m/%d %H:%M:%S", localtime(&ctTime));
benecsj 0:8d62137f7ff4 181 tempstring ="";
benecsj 0:8d62137f7ff4 182 tempstring += buf;LogWrite(tempstring);
benecsj 0:8d62137f7ff4 183 tempstring ="SYSTEM READY";LogWrite(tempstring);
benecsj 0:8d62137f7ff4 184 Timer tm;
benecsj 0:8d62137f7ff4 185 tm.start();
benecsj 0:8d62137f7ff4 186 //Listen indefinitely
benecsj 0:8d62137f7ff4 187 int counter =0;
benecsj 0:8d62137f7ff4 188
benecsj 0:8d62137f7ff4 189 //-------------------MAIN LOOP--------------------
benecsj 0:8d62137f7ff4 190 while (true) {
benecsj 0:8d62137f7ff4 191 Net::poll(); // Network listen
benecsj 0:8d62137f7ff4 192
benecsj 0:8d62137f7ff4 193 if (tm.read()>1) {
benecsj 0:8d62137f7ff4 194 counter = (counter++)%3600; //Timer counter loop
benecsj 0:8d62137f7ff4 195
benecsj 0:8d62137f7ff4 196 led1=!led1; //Show that we are alive 1 sec timed
benecsj 0:8d62137f7ff4 197 if (logging==1)
benecsj 0:8d62137f7ff4 198 {
benecsj 0:8d62137f7ff4 199 led4 =!led1;
benecsj 0:8d62137f7ff4 200 }
benecsj 0:8d62137f7ff4 201 else
benecsj 0:8d62137f7ff4 202 {
benecsj 0:8d62137f7ff4 203 led4 = 0;
benecsj 0:8d62137f7ff4 204 }
benecsj 0:8d62137f7ff4 205 UpdateLCD(counter); //Refress LCD
benecsj 0:8d62137f7ff4 206
benecsj 0:8d62137f7ff4 207 if (wanIP=="none" & (counter%30)==0) { //If no network detected aat startup then try to connect every 30 sec
benecsj 0:8d62137f7ff4 208 GetMyIP();
benecsj 0:8d62137f7ff4 209 if (wanIP!="none") {
benecsj 0:8d62137f7ff4 210 IndexInit() ;
benecsj 0:8d62137f7ff4 211 UpdateTime();
benecsj 0:8d62137f7ff4 212 }
benecsj 0:8d62137f7ff4 213 }
benecsj 0:8d62137f7ff4 214
benecsj 0:8d62137f7ff4 215 wdog.feed();
benecsj 0:8d62137f7ff4 216 tm.start();
benecsj 0:8d62137f7ff4 217 }
benecsj 0:8d62137f7ff4 218
benecsj 0:8d62137f7ff4 219 }
benecsj 0:8d62137f7ff4 220
benecsj 0:8d62137f7ff4 221
benecsj 0:8d62137f7ff4 222 }
benecsj 0:8d62137f7ff4 223
benecsj 0:8d62137f7ff4 224
benecsj 0:8d62137f7ff4 225 //---------------------------Functions--------------------------
benecsj 0:8d62137f7ff4 226
benecsj 0:8d62137f7ff4 227 void InitDS1820() {
benecsj 0:8d62137f7ff4 228
benecsj 0:8d62137f7ff4 229 int i;
benecsj 0:8d62137f7ff4 230 // Initialize the probe array to DS1820 objects
benecsj 0:8d62137f7ff4 231 for (i = 0; i < MAX_PROBES; i++)
benecsj 0:8d62137f7ff4 232 probe[i] = new DS1820(p29);
benecsj 0:8d62137f7ff4 233 // Initialize global state variables
benecsj 0:8d62137f7ff4 234 probe[0]->search_ROM_setup();
benecsj 0:8d62137f7ff4 235 // Loop to find all devices on the data line
benecsj 0:8d62137f7ff4 236 while (probe[devices_found]->search_ROM() and devices_found<MAX_PROBES-1)
benecsj 0:8d62137f7ff4 237 devices_found++;
benecsj 0:8d62137f7ff4 238 // If maximum number of probes are found,
benecsj 0:8d62137f7ff4 239 // bump the counter to include the last array entry
benecsj 0:8d62137f7ff4 240 if (probe[devices_found]->ROM[0] != 0xFF)
benecsj 0:8d62137f7ff4 241 devices_found++;
benecsj 0:8d62137f7ff4 242
benecsj 0:8d62137f7ff4 243 if (devices_found==0)
benecsj 0:8d62137f7ff4 244 printf("No devices found");
benecsj 0:8d62137f7ff4 245 else {
benecsj 0:8d62137f7ff4 246
benecsj 0:8d62137f7ff4 247 probe[0]->convert_temperature(DS1820::all_devices);
benecsj 0:8d62137f7ff4 248 for (i=0; i<devices_found; i++) {
benecsj 0:8d62137f7ff4 249 printf("%3.1f \r\n",probe[i]->temperature('c'));
benecsj 0:8d62137f7ff4 250 }
benecsj 0:8d62137f7ff4 251 }
benecsj 0:8d62137f7ff4 252
benecsj 0:8d62137f7ff4 253 lcd.printf("%d",devices_found);
benecsj 0:8d62137f7ff4 254 }
benecsj 0:8d62137f7ff4 255
benecsj 0:8d62137f7ff4 256 //-------------------Get WAN IP adress-------------------------
benecsj 0:8d62137f7ff4 257 void GetMyIP() {
benecsj 0:8d62137f7ff4 258 HTTPClient http;
benecsj 0:8d62137f7ff4 259 HTTPText txt;
benecsj 0:8d62137f7ff4 260 HTTPResult r = http.get("http://www.whatismyip.com/automation/n09230945NL.asp", &txt);
benecsj 0:8d62137f7ff4 261 if (r==HTTP_OK) {
benecsj 0:8d62137f7ff4 262 wanIP = txt.gets();
benecsj 0:8d62137f7ff4 263 } else {
benecsj 0:8d62137f7ff4 264 wanIP="none";
benecsj 0:8d62137f7ff4 265 }
benecsj 0:8d62137f7ff4 266 }
benecsj 0:8d62137f7ff4 267
benecsj 0:8d62137f7ff4 268 //-----------------Create Index HTM in local-------------------
benecsj 0:8d62137f7ff4 269 void IndexInit() {
benecsj 0:8d62137f7ff4 270 FILE *fs_src;
benecsj 0:8d62137f7ff4 271 FILE *fs_tgt;
benecsj 0:8d62137f7ff4 272 char buffer[ COPY_BLOCK_SIZE ];
benecsj 0:8d62137f7ff4 273
benecsj 0:8d62137f7ff4 274 printf( "file copier started.\r\n" );
benecsj 0:8d62137f7ff4 275 printf( " source:%s >>> target:%s\r\n", SOURCE_FILE, TARGET_FILE );
benecsj 0:8d62137f7ff4 276
benecsj 0:8d62137f7ff4 277 if ( NULL == (fs_src = fopen( SOURCE_FILE, "rb" )) ) {
benecsj 0:8d62137f7ff4 278 error( "couldn't open source file" );
benecsj 0:8d62137f7ff4 279 }
benecsj 0:8d62137f7ff4 280 if ( NULL == (fs_tgt = fopen( TARGET_FILE, "wb" )) ) {
benecsj 0:8d62137f7ff4 281 error( "couldn't open target file" );
benecsj 0:8d62137f7ff4 282 }
benecsj 0:8d62137f7ff4 283
benecsj 0:8d62137f7ff4 284 /*
benecsj 0:8d62137f7ff4 285 while ( size = fread( s, sizeof( char ), COPY_BLOCK_SIZE, fs_src ) )
benecsj 0:8d62137f7ff4 286 {
benecsj 0:8d62137f7ff4 287 fwrite( s, sizeof( char ), size, fs_tgt );
benecsj 0:8d62137f7ff4 288 total += size;
benecsj 0:8d62137f7ff4 289
benecsj 0:8d62137f7ff4 290 led1 = (0x1 << progress_ind++ % 4);
benecsj 0:8d62137f7ff4 291
benecsj 0:8d62137f7ff4 292 printf( " %d bytes copied\r", total );
benecsj 0:8d62137f7ff4 293 }
benecsj 0:8d62137f7ff4 294 */
benecsj 0:8d62137f7ff4 295 string temp;
benecsj 0:8d62137f7ff4 296 char token[] = "ServerAddress";
benecsj 0:8d62137f7ff4 297 while (fgets(buffer, COPY_BLOCK_SIZE, fs_src)) {
benecsj 0:8d62137f7ff4 298
benecsj 0:8d62137f7ff4 299 temp = string(buffer);
benecsj 0:8d62137f7ff4 300 int j=0;
benecsj 0:8d62137f7ff4 301 for (int i=0;i<COPY_BLOCK_SIZE;i++) {
benecsj 0:8d62137f7ff4 302 if (buffer[i]==token[j]) {
benecsj 0:8d62137f7ff4 303 j++;
benecsj 0:8d62137f7ff4 304 } else {
benecsj 0:8d62137f7ff4 305 j=0;
benecsj 0:8d62137f7ff4 306 }
benecsj 0:8d62137f7ff4 307
benecsj 0:8d62137f7ff4 308 if (j==12) break;
benecsj 0:8d62137f7ff4 309
benecsj 0:8d62137f7ff4 310 if (buffer[i]==0) {
benecsj 0:8d62137f7ff4 311 break;
benecsj 0:8d62137f7ff4 312 }
benecsj 0:8d62137f7ff4 313 }
benecsj 0:8d62137f7ff4 314
benecsj 0:8d62137f7ff4 315 if (j==12) { //Change to find string element search by char.
benecsj 0:8d62137f7ff4 316 if (wanIP!="none") {
benecsj 0:8d62137f7ff4 317
benecsj 0:8d62137f7ff4 318 temp = wanIP;
benecsj 0:8d62137f7ff4 319 } else {
benecsj 0:8d62137f7ff4 320 temp =localIP;
benecsj 0:8d62137f7ff4 321 }
benecsj 0:8d62137f7ff4 322 fprintf(fs_tgt," <param name=\"ServerAddress\" value=\"%s\">",temp.c_str());
benecsj 0:8d62137f7ff4 323 } else {
benecsj 0:8d62137f7ff4 324 fprintf(fs_tgt,"%s",temp.c_str());
benecsj 0:8d62137f7ff4 325 }
benecsj 0:8d62137f7ff4 326 }
benecsj 0:8d62137f7ff4 327
benecsj 0:8d62137f7ff4 328 led1 = 0xF;
benecsj 0:8d62137f7ff4 329
benecsj 0:8d62137f7ff4 330 fclose( fs_src );
benecsj 0:8d62137f7ff4 331 fclose( fs_tgt );
benecsj 0:8d62137f7ff4 332
benecsj 0:8d62137f7ff4 333 printf( "done\r\n" );
benecsj 0:8d62137f7ff4 334 }
benecsj 0:8d62137f7ff4 335
benecsj 0:8d62137f7ff4 336 //------------Update lcd------------------------------
benecsj 0:8d62137f7ff4 337 bool IPshowflag = false;
benecsj 0:8d62137f7ff4 338 void UpdateLCD(int counter) {
benecsj 0:8d62137f7ff4 339 if (counter%4==0) {
benecsj 0:8d62137f7ff4 340 lcd.locate(0,2);
benecsj 0:8d62137f7ff4 341 lcd.locate(0,2);
benecsj 0:8d62137f7ff4 342 if (wanIP!="none") {
benecsj 0:8d62137f7ff4 343 if (IPshowflag) {
benecsj 0:8d62137f7ff4 344 lcd.printf("IP: %s ", localIP.c_str());
benecsj 0:8d62137f7ff4 345 } else {
benecsj 0:8d62137f7ff4 346 lcd.printf("IP: %s ", wanIP.c_str());
benecsj 0:8d62137f7ff4 347 }
benecsj 0:8d62137f7ff4 348 IPshowflag = !IPshowflag;
benecsj 0:8d62137f7ff4 349 } else {
benecsj 0:8d62137f7ff4 350 //DO nothing only one ip address is shown
benecsj 0:8d62137f7ff4 351 }
benecsj 0:8d62137f7ff4 352 }
benecsj 0:8d62137f7ff4 353
benecsj 0:8d62137f7ff4 354 if (counter%1==0) { //Every sec
benecsj 0:8d62137f7ff4 355 lcd.locate(0,3);
benecsj 0:8d62137f7ff4 356 ctTime = time(NULL);
benecsj 0:8d62137f7ff4 357 ctTime += (clockoffset*3600);
benecsj 0:8d62137f7ff4 358 strftime(buf,sizeof(buf), "%Y/%m/%d %H:%M:%S", localtime(&ctTime));
benecsj 0:8d62137f7ff4 359 lcd.printf("%s", buf);
benecsj 0:8d62137f7ff4 360 }
benecsj 0:8d62137f7ff4 361
benecsj 0:8d62137f7ff4 362
benecsj 0:8d62137f7ff4 363 }
benecsj 0:8d62137f7ff4 364
benecsj 0:8d62137f7ff4 365 //----------------Update time---------------------
benecsj 0:8d62137f7ff4 366 void UpdateTime() {
benecsj 0:8d62137f7ff4 367 time_t ctTime;
benecsj 0:8d62137f7ff4 368 ctTime = time(NULL);
benecsj 0:8d62137f7ff4 369 Host server(IpAddr(), 123, "0.hu.pool.ntp.org");
benecsj 0:8d62137f7ff4 370 ntp.setTime(server);
benecsj 0:8d62137f7ff4 371 ctTime = time(NULL);
benecsj 0:8d62137f7ff4 372 ctTime += (clockoffset*3600); //set jst time
benecsj 0:8d62137f7ff4 373 }
benecsj 0:8d62137f7ff4 374
benecsj 0:8d62137f7ff4 375 //---------------Load config----------------------
benecsj 0:8d62137f7ff4 376 void LoadConfig() {
benecsj 0:8d62137f7ff4 377 FILE *fs_src;
benecsj 0:8d62137f7ff4 378 char buffer[ 100 ];
benecsj 0:8d62137f7ff4 379 int linecounter = 0;
benecsj 0:8d62137f7ff4 380 fs_src = fopen( CONFIG_FILE, "rb" );
benecsj 0:8d62137f7ff4 381 while (fgets(buffer, 100, fs_src)) {
benecsj 0:8d62137f7ff4 382 linecounter++;
benecsj 0:8d62137f7ff4 383
benecsj 0:8d62137f7ff4 384 switch (linecounter) {
benecsj 0:8d62137f7ff4 385 case 2 :
benecsj 0:8d62137f7ff4 386 sscanf(buffer,"%d.%d.%d.%d",&ipConfig[0],&ipConfig[1],&ipConfig[2],&ipConfig[3]);
benecsj 0:8d62137f7ff4 387 break;
benecsj 0:8d62137f7ff4 388 case 4 :
benecsj 0:8d62137f7ff4 389 sscanf(buffer,"%d.%d.%d.%d",&maskConfig[0],&maskConfig[1],&maskConfig[2],&maskConfig[3]);
benecsj 0:8d62137f7ff4 390 break;
benecsj 0:8d62137f7ff4 391 case 6 :
benecsj 0:8d62137f7ff4 392 sscanf(buffer,"%d.%d.%d.%d",&gatewayConfig[0],&gatewayConfig[1],&gatewayConfig[2],&gatewayConfig[3]);
benecsj 0:8d62137f7ff4 393 break;
benecsj 0:8d62137f7ff4 394 case 8 :
benecsj 0:8d62137f7ff4 395 sscanf(buffer,"%d.%d.%d.%d",&dnsConfig[0],&dnsConfig[1],&dnsConfig[2],&dnsConfig[3]);
benecsj 0:8d62137f7ff4 396 break;
benecsj 0:8d62137f7ff4 397 case 10:
benecsj 0:8d62137f7ff4 398 if (buffer[0]=='t' | buffer[0]=='T') getIPfromDHCP= true;
benecsj 0:8d62137f7ff4 399 else getIPfromDHCP = false;
benecsj 0:8d62137f7ff4 400 break;
benecsj 0:8d62137f7ff4 401 case 13:
benecsj 0:8d62137f7ff4 402 sscanf(buffer,"%d",&interval);
benecsj 0:8d62137f7ff4 403 break;
benecsj 0:8d62137f7ff4 404 case 15:
benecsj 0:8d62137f7ff4 405 sscanf(buffer,"%d",&clockoffset);
benecsj 0:8d62137f7ff4 406 break;
benecsj 0:8d62137f7ff4 407 }
benecsj 0:8d62137f7ff4 408
benecsj 0:8d62137f7ff4 409 }
benecsj 0:8d62137f7ff4 410
benecsj 0:8d62137f7ff4 411 fclose( fs_src );
benecsj 0:8d62137f7ff4 412 }
benecsj 0:8d62137f7ff4 413
benecsj 0:8d62137f7ff4 414 //---------------Load status--------------------------
benecsj 0:8d62137f7ff4 415 void LoadStatus()
benecsj 0:8d62137f7ff4 416 {
benecsj 0:8d62137f7ff4 417 FILE *fs_src;
benecsj 0:8d62137f7ff4 418 char buffer[ 100 ];
benecsj 0:8d62137f7ff4 419 int linecounter = 0;
benecsj 0:8d62137f7ff4 420 fs_src = fopen( STATUS_FILE, "rb" );
benecsj 0:8d62137f7ff4 421 while (fgets(buffer, 100, fs_src)) {
benecsj 0:8d62137f7ff4 422 linecounter++;
benecsj 0:8d62137f7ff4 423
benecsj 0:8d62137f7ff4 424 switch (linecounter) {
benecsj 0:8d62137f7ff4 425 case 1:
benecsj 0:8d62137f7ff4 426 sscanf(buffer,"%d",&logging);
benecsj 0:8d62137f7ff4 427 break;
benecsj 0:8d62137f7ff4 428 case 2:
benecsj 0:8d62137f7ff4 429 sscanf(buffer,"%d",&fileindex);
benecsj 0:8d62137f7ff4 430 break;
benecsj 0:8d62137f7ff4 431 }
benecsj 0:8d62137f7ff4 432
benecsj 0:8d62137f7ff4 433 }
benecsj 0:8d62137f7ff4 434
benecsj 0:8d62137f7ff4 435 fclose( fs_src );
benecsj 0:8d62137f7ff4 436
benecsj 0:8d62137f7ff4 437 }
benecsj 0:8d62137f7ff4 438
benecsj 0:8d62137f7ff4 439 //---------------Log writer-----------------------------
benecsj 0:8d62137f7ff4 440 void LogWrite(string stringin)
benecsj 0:8d62137f7ff4 441 {
benecsj 0:8d62137f7ff4 442 FILE *fp = fopen(LOGGER_FILE, "a");
benecsj 0:8d62137f7ff4 443 if (fp == NULL) {
benecsj 0:8d62137f7ff4 444 error("Could not open file for write\r\n");
benecsj 0:8d62137f7ff4 445 }
benecsj 0:8d62137f7ff4 446 fprintf(fp,"%s\r\n",stringin.c_str());
benecsj 0:8d62137f7ff4 447 fclose(fp);
benecsj 0:8d62137f7ff4 448 }