Harris Junaid
/
DataLogger
Wireless Gas Meter Reading System Data Logger
main.cpp@0:a67cda7c126f, 2012-04-17 (annotated)
- Committer:
- harrisjunaid
- Date:
- Tue Apr 17 15:54:02 2012 +0000
- Revision:
- 0:a67cda7c126f
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
harrisjunaid | 0:a67cda7c126f | 1 | #include "mbed.h" |
harrisjunaid | 0:a67cda7c126f | 2 | #include "Serial.h" |
harrisjunaid | 0:a67cda7c126f | 3 | |
harrisjunaid | 0:a67cda7c126f | 4 | |
harrisjunaid | 0:a67cda7c126f | 5 | //File Handling |
harrisjunaid | 0:a67cda7c126f | 6 | #define FSNAME "msc" |
harrisjunaid | 0:a67cda7c126f | 7 | #include "MSCFileSystem.h" |
harrisjunaid | 0:a67cda7c126f | 8 | MSCFileSystem msc(FSNAME); |
harrisjunaid | 0:a67cda7c126f | 9 | |
harrisjunaid | 0:a67cda7c126f | 10 | //Gas Consumption Variable |
harrisjunaid | 0:a67cda7c126f | 11 | unsigned GasCounter = 0; |
harrisjunaid | 0:a67cda7c126f | 12 | |
harrisjunaid | 0:a67cda7c126f | 13 | //Time Handling |
harrisjunaid | 0:a67cda7c126f | 14 | struct tm TIME; |
harrisjunaid | 0:a67cda7c126f | 15 | Timer TimeIn_Filter; |
harrisjunaid | 0:a67cda7c126f | 16 | |
harrisjunaid | 0:a67cda7c126f | 17 | |
harrisjunaid | 0:a67cda7c126f | 18 | //PC Serial for DEBUG Messages |
harrisjunaid | 0:a67cda7c126f | 19 | Serial pc(USBTX, USBRX); |
harrisjunaid | 0:a67cda7c126f | 20 | |
harrisjunaid | 0:a67cda7c126f | 21 | |
harrisjunaid | 0:a67cda7c126f | 22 | //Time Update |
harrisjunaid | 0:a67cda7c126f | 23 | InterruptIn TimeIn(p21);//Push Button input for Time Reset (minimum > 2V) |
harrisjunaid | 0:a67cda7c126f | 24 | |
harrisjunaid | 0:a67cda7c126f | 25 | //XBee Range Check |
harrisjunaid | 0:a67cda7c126f | 26 | InterruptIn RangeIn(p22);//Push Button input for XBee Range Check |
harrisjunaid | 0:a67cda7c126f | 27 | |
harrisjunaid | 0:a67cda7c126f | 28 | //XBEE Connection |
harrisjunaid | 0:a67cda7c126f | 29 | Serial xbee(p9, p10);//XBEE Dout (xbee p2) <--> mbed rx p10, XBEE Din (xbee p3) <--> mbed tx p9 |
harrisjunaid | 0:a67cda7c126f | 30 | DigitalOut xbee_reset(p8);//XBEE Reset (xbee p5) <--> mbed digital out p8 |
harrisjunaid | 0:a67cda7c126f | 31 | DigitalIn xbee_power(p11);//XBEE Power Indicator (xbee p13) Digital In |
harrisjunaid | 0:a67cda7c126f | 32 | DigitalIn xbee_associate(p12);//XBEE Association (xbee p15) Digital In |
harrisjunaid | 0:a67cda7c126f | 33 | DigitalIn xbee_CTS(p13);//XBEE pin 12 CTS High = Signal to stop data transfer over UART |
harrisjunaid | 0:a67cda7c126f | 34 | DigitalOut xbee_sleep(p14);//XBEE SLEEP_RQ (p9) |
harrisjunaid | 0:a67cda7c126f | 35 | //unsigned xbeeon_off = 0;//Default OFF |
harrisjunaid | 0:a67cda7c126f | 36 | |
harrisjunaid | 0:a67cda7c126f | 37 | //Indicators |
harrisjunaid | 0:a67cda7c126f | 38 | |
harrisjunaid | 0:a67cda7c126f | 39 | DigitalOut XBeePower(LED1);//User can now power off |
harrisjunaid | 0:a67cda7c126f | 40 | DigitalOut XBeeAssoc(LED2);//XBee Associate |
harrisjunaid | 0:a67cda7c126f | 41 | DigitalOut XBeeRange(LED2);//XBee Range Check Indication |
harrisjunaid | 0:a67cda7c126f | 42 | DigitalOut CounterLog(LED3);//Counter Log Activity |
harrisjunaid | 0:a67cda7c126f | 43 | DigitalOut PushButton(LED3);//Bush Button Indication |
harrisjunaid | 0:a67cda7c126f | 44 | DigitalOut Time(LED4);//Time Based Activity |
harrisjunaid | 0:a67cda7c126f | 45 | |
harrisjunaid | 0:a67cda7c126f | 46 | //Functions |
harrisjunaid | 0:a67cda7c126f | 47 | |
harrisjunaid | 0:a67cda7c126f | 48 | |
harrisjunaid | 0:a67cda7c126f | 49 | unsigned ClockSet();//Called at sensor input |
harrisjunaid | 0:a67cda7c126f | 50 | |
harrisjunaid | 0:a67cda7c126f | 51 | void TimeInterrupt();//Called at p21 high -> Clock Update Interrupt |
harrisjunaid | 0:a67cda7c126f | 52 | void TimeInterrupt() {//Called at p21 high -> Clock Update Interrupt |
harrisjunaid | 0:a67cda7c126f | 53 | pc.printf("/nTimeInterrupt Called\n");///////..............DEBUG |
harrisjunaid | 0:a67cda7c126f | 54 | |
harrisjunaid | 0:a67cda7c126f | 55 | /* if ((TimeIn_Filter.read()) == 0) { |
harrisjunaid | 0:a67cda7c126f | 56 | |
harrisjunaid | 0:a67cda7c126f | 57 | TimeIn_Filter.start(); |
harrisjunaid | 0:a67cda7c126f | 58 | pc.printf("/nTimeInterrupt Timer Started\n");///////..............DEBUG |
harrisjunaid | 0:a67cda7c126f | 59 | |
harrisjunaid | 0:a67cda7c126f | 60 | PushButton = 1; |
harrisjunaid | 0:a67cda7c126f | 61 | } |
harrisjunaid | 0:a67cda7c126f | 62 | |
harrisjunaid | 0:a67cda7c126f | 63 | while (1) { |
harrisjunaid | 0:a67cda7c126f | 64 | if ((TimeIn_Filter.read() >= 2)) {//All readings within 2 sec from first call ignored as noise |
harrisjunaid | 0:a67cda7c126f | 65 | |
harrisjunaid | 0:a67cda7c126f | 66 | pc.printf("/nTimeInterrupt Timer >=2 \n");///////..............DEBUG |
harrisjunaid | 0:a67cda7c126f | 67 | */ |
harrisjunaid | 0:a67cda7c126f | 68 | while ( (ClockSet() != 1) );//Till TIME.txt is not found |
harrisjunaid | 0:a67cda7c126f | 69 | |
harrisjunaid | 0:a67cda7c126f | 70 | /*TimeIn_Filter.stop(); |
harrisjunaid | 0:a67cda7c126f | 71 | TimeIn_Filter.reset(); |
harrisjunaid | 0:a67cda7c126f | 72 | pc.printf("/nTimeInterrupt Timer Stoped\n");///////..............DEBUG |
harrisjunaid | 0:a67cda7c126f | 73 | PushButton = 0; |
harrisjunaid | 0:a67cda7c126f | 74 | }*/ |
harrisjunaid | 0:a67cda7c126f | 75 | //} |
harrisjunaid | 0:a67cda7c126f | 76 | } |
harrisjunaid | 0:a67cda7c126f | 77 | |
harrisjunaid | 0:a67cda7c126f | 78 | |
harrisjunaid | 0:a67cda7c126f | 79 | unsigned ClockSet() { |
harrisjunaid | 0:a67cda7c126f | 80 | pc.printf("\nClockSet Called\n");///////////..........DEBUG |
harrisjunaid | 0:a67cda7c126f | 81 | FILE *TimeUpdate; |
harrisjunaid | 0:a67cda7c126f | 82 | TimeUpdate = fopen( "/" FSNAME "/TIME.txt", "r"); |
harrisjunaid | 0:a67cda7c126f | 83 | |
harrisjunaid | 0:a67cda7c126f | 84 | if (TimeUpdate == NULL) {//File Not Found |
harrisjunaid | 0:a67cda7c126f | 85 | pc.printf("\nERROR: TIME.txt not found\n");//////......DEBUG |
harrisjunaid | 0:a67cda7c126f | 86 | |
harrisjunaid | 0:a67cda7c126f | 87 | |
harrisjunaid | 0:a67cda7c126f | 88 | //LED4 File not Found Indication |
harrisjunaid | 0:a67cda7c126f | 89 | Time = 1; |
harrisjunaid | 0:a67cda7c126f | 90 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 91 | Time = 0; |
harrisjunaid | 0:a67cda7c126f | 92 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 93 | Time = 1; |
harrisjunaid | 0:a67cda7c126f | 94 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 95 | Time = 0; |
harrisjunaid | 0:a67cda7c126f | 96 | Time = 1; |
harrisjunaid | 0:a67cda7c126f | 97 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 98 | Time = 0; |
harrisjunaid | 0:a67cda7c126f | 99 | |
harrisjunaid | 0:a67cda7c126f | 100 | return 0; |
harrisjunaid | 0:a67cda7c126f | 101 | } else { |
harrisjunaid | 0:a67cda7c126f | 102 | |
harrisjunaid | 0:a67cda7c126f | 103 | //01:34->T |
harrisjunaid | 0:a67cda7c126f | 104 | //01/34/67->Y |
harrisjunaid | 0:a67cda7c126f | 105 | char T[10], Y[20]; |
harrisjunaid | 0:a67cda7c126f | 106 | fscanf(TimeUpdate,"%s%s",T,Y); |
harrisjunaid | 0:a67cda7c126f | 107 | |
harrisjunaid | 0:a67cda7c126f | 108 | |
harrisjunaid | 0:a67cda7c126f | 109 | char h[3] = {T[0], T[1], '\0'};//01:34->T |
harrisjunaid | 0:a67cda7c126f | 110 | char mi[3] = {T[3], T[4], '\0'}; |
harrisjunaid | 0:a67cda7c126f | 111 | char d[3] = {Y[0], Y[1], '\0'};//01/34/67->Y |
harrisjunaid | 0:a67cda7c126f | 112 | char mo[3] = {Y[3], Y[4], '\0'}; |
harrisjunaid | 0:a67cda7c126f | 113 | char y[5] = {Y[6], Y[7], Y[8], Y[9], '\0'}; |
harrisjunaid | 0:a67cda7c126f | 114 | |
harrisjunaid | 0:a67cda7c126f | 115 | //Converting String to int and stroing in tm structure |
harrisjunaid | 0:a67cda7c126f | 116 | TIME.tm_hour = atoi(h); |
harrisjunaid | 0:a67cda7c126f | 117 | TIME.tm_min = atoi(mi); |
harrisjunaid | 0:a67cda7c126f | 118 | TIME.tm_mday = atoi(d); |
harrisjunaid | 0:a67cda7c126f | 119 | TIME.tm_mon = atoi(mo); |
harrisjunaid | 0:a67cda7c126f | 120 | TIME.tm_year = atoi(y) ; |
harrisjunaid | 0:a67cda7c126f | 121 | |
harrisjunaid | 0:a67cda7c126f | 122 | // Adjust for tm structure required values |
harrisjunaid | 0:a67cda7c126f | 123 | TIME.tm_year = TIME.tm_year - 1900;//Number of years since 1900 (windows) |
harrisjunaid | 0:a67cda7c126f | 124 | TIME.tm_mon = TIME.tm_mon - 1;//Jan |
harrisjunaid | 0:a67cda7c126f | 125 | |
harrisjunaid | 0:a67cda7c126f | 126 | //mbed time update |
harrisjunaid | 0:a67cda7c126f | 127 | set_time(mktime(&TIME));//broket time converted to simple time and passed to set_time (sets system time) |
harrisjunaid | 0:a67cda7c126f | 128 | |
harrisjunaid | 0:a67cda7c126f | 129 | //LED4 Time Update Indication |
harrisjunaid | 0:a67cda7c126f | 130 | Time = 1; |
harrisjunaid | 0:a67cda7c126f | 131 | wait(2); |
harrisjunaid | 0:a67cda7c126f | 132 | Time = 0; |
harrisjunaid | 0:a67cda7c126f | 133 | |
harrisjunaid | 0:a67cda7c126f | 134 | // display the time |
harrisjunaid | 0:a67cda7c126f | 135 | /* |
harrisjunaid | 0:a67cda7c126f | 136 | char HourMin[10], Calandar[12]; |
harrisjunaid | 0:a67cda7c126f | 137 | while (1) { |
harrisjunaid | 0:a67cda7c126f | 138 | time_t seconds = time(NULL);//CURRENT TIME |
harrisjunaid | 0:a67cda7c126f | 139 | TIME = *localtime(&seconds);//TO BROKEN TIME |
harrisjunaid | 0:a67cda7c126f | 140 | strftime(HourMin, sizeof(HourMin), "%T", &TIME);//FORMATTED OUTPUT |
harrisjunaid | 0:a67cda7c126f | 141 | strftime(Calandar, sizeof(Calandar), "%d/%m/%Y", &TIME); |
harrisjunaid | 0:a67cda7c126f | 142 | pc.printf("\n%s %s", HourMin, Calandar); |
harrisjunaid | 0:a67cda7c126f | 143 | wait(1); |
harrisjunaid | 0:a67cda7c126f | 144 | } |
harrisjunaid | 0:a67cda7c126f | 145 | |
harrisjunaid | 0:a67cda7c126f | 146 | */ |
harrisjunaid | 0:a67cda7c126f | 147 | } |
harrisjunaid | 0:a67cda7c126f | 148 | fclose(TimeUpdate);//Close File Handler |
harrisjunaid | 0:a67cda7c126f | 149 | return 1;//Time Updated Successfully |
harrisjunaid | 0:a67cda7c126f | 150 | |
harrisjunaid | 0:a67cda7c126f | 151 | } |
harrisjunaid | 0:a67cda7c126f | 152 | |
harrisjunaid | 0:a67cda7c126f | 153 | void XBeeRangeCheck_Indication(unsigned status); |
harrisjunaid | 0:a67cda7c126f | 154 | void XBeeRangeCheck_Indication(unsigned status) {//LED4 is Flashed (Indicating previous shut down was not safe) |
harrisjunaid | 0:a67cda7c126f | 155 | if (status == 1) { |
harrisjunaid | 0:a67cda7c126f | 156 | for (unsigned i=0; i<=5 ; i++) { |
harrisjunaid | 0:a67cda7c126f | 157 | XBeeRange = 1; |
harrisjunaid | 0:a67cda7c126f | 158 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 159 | XBeeRange = 0; |
harrisjunaid | 0:a67cda7c126f | 160 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 161 | XBeeRange = 1; |
harrisjunaid | 0:a67cda7c126f | 162 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 163 | XBeeRange = 0; |
harrisjunaid | 0:a67cda7c126f | 164 | } |
harrisjunaid | 0:a67cda7c126f | 165 | |
harrisjunaid | 0:a67cda7c126f | 166 | } else { |
harrisjunaid | 0:a67cda7c126f | 167 | XBeeRange = 0; |
harrisjunaid | 0:a67cda7c126f | 168 | wait(4); |
harrisjunaid | 0:a67cda7c126f | 169 | } |
harrisjunaid | 0:a67cda7c126f | 170 | } |
harrisjunaid | 0:a67cda7c126f | 171 | |
harrisjunaid | 0:a67cda7c126f | 172 | |
harrisjunaid | 0:a67cda7c126f | 173 | |
harrisjunaid | 0:a67cda7c126f | 174 | |
harrisjunaid | 0:a67cda7c126f | 175 | |
harrisjunaid | 0:a67cda7c126f | 176 | unsigned Xbee_RangeCheck();//XBEE Range Check (Check for END DEVICE) |
harrisjunaid | 0:a67cda7c126f | 177 | unsigned Xbee_RangeCheck() { |
harrisjunaid | 0:a67cda7c126f | 178 | |
harrisjunaid | 0:a67cda7c126f | 179 | char response[5]; |
harrisjunaid | 0:a67cda7c126f | 180 | wait(10);//Allow Time For Communication |
harrisjunaid | 0:a67cda7c126f | 181 | for (int i=1 ; i<=3 ; i++) {//Enter XBEE in AT Command Mode |
harrisjunaid | 0:a67cda7c126f | 182 | xbee.putc('+'); |
harrisjunaid | 0:a67cda7c126f | 183 | wait(0.05); |
harrisjunaid | 0:a67cda7c126f | 184 | } |
harrisjunaid | 0:a67cda7c126f | 185 | xbee.scanf("%s",response);//Get Xbee Response |
harrisjunaid | 0:a67cda7c126f | 186 | //pc.printf("\n%s\n",response);//////////////...........DEBUG |
harrisjunaid | 0:a67cda7c126f | 187 | |
harrisjunaid | 0:a67cda7c126f | 188 | //XBEE IS IN COMMAND MODE AND OK RESPONSE IS READ |
harrisjunaid | 0:a67cda7c126f | 189 | xbee.printf("ATDNREADER");//AT(AT Command Mode) DN(Destination Node Command) LOGGER(Node Identifier "NI" for END DEVICE) |
harrisjunaid | 0:a67cda7c126f | 190 | xbee.putc('\r');//Carriage Return |
harrisjunaid | 0:a67cda7c126f | 191 | xbee.scanf("%s",response);//Get Response |
harrisjunaid | 0:a67cda7c126f | 192 | //pc.printf("\n%s\n",response);/////////////.............DEBUG |
harrisjunaid | 0:a67cda7c126f | 193 | xbee.printf("ATCN"); |
harrisjunaid | 0:a67cda7c126f | 194 | xbee.putc('\r'); |
harrisjunaid | 0:a67cda7c126f | 195 | if (response[0] == 'E') {//Could Not Find End Device ("ERROR"\r returned) |
harrisjunaid | 0:a67cda7c126f | 196 | pc.printf("\nCound not find END DEVICE\n");/////////.............DEBUG |
harrisjunaid | 0:a67cda7c126f | 197 | //EndDevice_Indication(); |
harrisjunaid | 0:a67cda7c126f | 198 | return 0;//Return No End Device |
harrisjunaid | 0:a67cda7c126f | 199 | |
harrisjunaid | 0:a67cda7c126f | 200 | } else {//End Device is Active ("OK"\r returned) |
harrisjunaid | 0:a67cda7c126f | 201 | pc.printf("\nEnd Device Responded\n");/////////.............DEBUG |
harrisjunaid | 0:a67cda7c126f | 202 | return 1;//Return End Device is ON |
harrisjunaid | 0:a67cda7c126f | 203 | } |
harrisjunaid | 0:a67cda7c126f | 204 | } |
harrisjunaid | 0:a67cda7c126f | 205 | |
harrisjunaid | 0:a67cda7c126f | 206 | |
harrisjunaid | 0:a67cda7c126f | 207 | void RangeIn_Handler(); |
harrisjunaid | 0:a67cda7c126f | 208 | void RangeIn_Handler() { |
harrisjunaid | 0:a67cda7c126f | 209 | if (Xbee_RangeCheck())//Meter Reader is ON |
harrisjunaid | 0:a67cda7c126f | 210 | XBeeRangeCheck_Indication(1) ;//Flash LED 2 |
harrisjunaid | 0:a67cda7c126f | 211 | else//Meter Reader is OFF |
harrisjunaid | 0:a67cda7c126f | 212 | XBeeRangeCheck_Indication(0);//LED2 off for 4 sec |
harrisjunaid | 0:a67cda7c126f | 213 | } |
harrisjunaid | 0:a67cda7c126f | 214 | void Xbee_Reset();//Reset xbee |
harrisjunaid | 0:a67cda7c126f | 215 | void Xbee_Reset() { |
harrisjunaid | 0:a67cda7c126f | 216 | pc.printf("\nXBee_Reset called");//////////..........DEBUG |
harrisjunaid | 0:a67cda7c126f | 217 | xbee_reset = 0;//RESET |
harrisjunaid | 0:a67cda7c126f | 218 | wait_ms(1); |
harrisjunaid | 0:a67cda7c126f | 219 | xbee_reset = 1;//Back To Operation |
harrisjunaid | 0:a67cda7c126f | 220 | wait_ms(1); |
harrisjunaid | 0:a67cda7c126f | 221 | } |
harrisjunaid | 0:a67cda7c126f | 222 | |
harrisjunaid | 0:a67cda7c126f | 223 | |
harrisjunaid | 0:a67cda7c126f | 224 | unsigned RTS(); |
harrisjunaid | 0:a67cda7c126f | 225 | unsigned RTS() {//returns 1 when mbed is Clear To Send |
harrisjunaid | 0:a67cda7c126f | 226 | if (xbee_CTS == 0) return 1;//mbed is Clear To Send |
harrisjunaid | 0:a67cda7c126f | 227 | else return 0; |
harrisjunaid | 0:a67cda7c126f | 228 | } |
harrisjunaid | 0:a67cda7c126f | 229 | |
harrisjunaid | 0:a67cda7c126f | 230 | |
harrisjunaid | 0:a67cda7c126f | 231 | |
harrisjunaid | 0:a67cda7c126f | 232 | void nocsv_indication(); |
harrisjunaid | 0:a67cda7c126f | 233 | void nocsv_indication() {//Flash LED2 => NO END DEVICE |
harrisjunaid | 0:a67cda7c126f | 234 | for (unsigned i=0; i<=5 ; i++) { |
harrisjunaid | 0:a67cda7c126f | 235 | CounterLog = 1; |
harrisjunaid | 0:a67cda7c126f | 236 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 237 | CounterLog = 0; |
harrisjunaid | 0:a67cda7c126f | 238 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 239 | CounterLog = 1; |
harrisjunaid | 0:a67cda7c126f | 240 | wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 241 | CounterLog = 0; |
harrisjunaid | 0:a67cda7c126f | 242 | } |
harrisjunaid | 0:a67cda7c126f | 243 | } |
harrisjunaid | 0:a67cda7c126f | 244 | |
harrisjunaid | 0:a67cda7c126f | 245 | |
harrisjunaid | 0:a67cda7c126f | 246 | unsigned Reading_Handler();//Manage "GasCounter" Log File "GAS.csv" |
harrisjunaid | 0:a67cda7c126f | 247 | unsigned Reading_Handler() { |
harrisjunaid | 0:a67cda7c126f | 248 | pc.printf("\nReading_Handler called\n");///...........DEBUG |
harrisjunaid | 0:a67cda7c126f | 249 | |
harrisjunaid | 0:a67cda7c126f | 250 | FILE *csv; |
harrisjunaid | 0:a67cda7c126f | 251 | csv = fopen( "/" FSNAME "/GAS.csv", "rb+"); |
harrisjunaid | 0:a67cda7c126f | 252 | |
harrisjunaid | 0:a67cda7c126f | 253 | if (csv == NULL) {//File Not Found |
harrisjunaid | 0:a67cda7c126f | 254 | pc.printf("\nERROR: GAS.csv not found\n"); |
harrisjunaid | 0:a67cda7c126f | 255 | |
harrisjunaid | 0:a67cda7c126f | 256 | |
harrisjunaid | 0:a67cda7c126f | 257 | return 0;//File not found |
harrisjunaid | 0:a67cda7c126f | 258 | } |
harrisjunaid | 0:a67cda7c126f | 259 | |
harrisjunaid | 0:a67cda7c126f | 260 | fseek(csv,0,SEEK_END);//Move File Pointer at End of File |
harrisjunaid | 0:a67cda7c126f | 261 | |
harrisjunaid | 0:a67cda7c126f | 262 | char HourMin[10], Calandar[12]; |
harrisjunaid | 0:a67cda7c126f | 263 | time_t seconds = time(NULL);//GET CURRENT TIME |
harrisjunaid | 0:a67cda7c126f | 264 | TIME = *localtime(&seconds);//CURRENT TIME TO BROKEN TIME |
harrisjunaid | 0:a67cda7c126f | 265 | |
harrisjunaid | 0:a67cda7c126f | 266 | //EXCEL SUPPORTED FORMATTED OUTPUT |
harrisjunaid | 0:a67cda7c126f | 267 | strftime(HourMin, sizeof(HourMin), "%T", &TIME); |
harrisjunaid | 0:a67cda7c126f | 268 | strftime(Calandar, sizeof(Calandar), "%d/%m/%Y", &TIME); |
harrisjunaid | 0:a67cda7c126f | 269 | |
harrisjunaid | 0:a67cda7c126f | 270 | //Printing To GAS.csv |
harrisjunaid | 0:a67cda7c126f | 271 | fprintf(csv,"%u,%s,%s\n",GasCounter, HourMin, Calandar); |
harrisjunaid | 0:a67cda7c126f | 272 | |
harrisjunaid | 0:a67cda7c126f | 273 | |
harrisjunaid | 0:a67cda7c126f | 274 | fclose(csv); |
harrisjunaid | 0:a67cda7c126f | 275 | return 1;//GAS.csv UPDATED |
harrisjunaid | 0:a67cda7c126f | 276 | } |
harrisjunaid | 0:a67cda7c126f | 277 | |
harrisjunaid | 0:a67cda7c126f | 278 | |
harrisjunaid | 0:a67cda7c126f | 279 | int main() { |
harrisjunaid | 0:a67cda7c126f | 280 | |
harrisjunaid | 0:a67cda7c126f | 281 | TimeIn.rise(&TimeInterrupt);//p21 Push Buttor (Update mbed clock) |
harrisjunaid | 0:a67cda7c126f | 282 | RangeIn.rise(&RangeIn_Handler);//p22 Push Buttor (Flash LED2 if found else LED2 off for 4 s) |
harrisjunaid | 0:a67cda7c126f | 283 | |
harrisjunaid | 0:a67cda7c126f | 284 | ClockSet(); |
harrisjunaid | 0:a67cda7c126f | 285 | // pc.printf("\nReached Here\n");//////..............DEBUG |
harrisjunaid | 0:a67cda7c126f | 286 | Xbee_Reset(); |
harrisjunaid | 0:a67cda7c126f | 287 | |
harrisjunaid | 0:a67cda7c126f | 288 | while (1) { |
harrisjunaid | 0:a67cda7c126f | 289 | //pc.printf("Entered While"); |
harrisjunaid | 0:a67cda7c126f | 290 | XBeePower = xbee_power; |
harrisjunaid | 0:a67cda7c126f | 291 | XBeeAssoc = xbee_associate; |
harrisjunaid | 0:a67cda7c126f | 292 | if (xbee.readable()) { |
harrisjunaid | 0:a67cda7c126f | 293 | if (xbee.getc() == '*') {//Next is counter value |
harrisjunaid | 0:a67cda7c126f | 294 | xbee.scanf("%u", &GasCounter); |
harrisjunaid | 0:a67cda7c126f | 295 | //wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 296 | //xbee.putc('R');//Reading Received |
harrisjunaid | 0:a67cda7c126f | 297 | //xbee.putc('\r'); |
harrisjunaid | 0:a67cda7c126f | 298 | //wait(0.2); |
harrisjunaid | 0:a67cda7c126f | 299 | pc.printf("\n%u", GasCounter);//////////........DEBUG |
harrisjunaid | 0:a67cda7c126f | 300 | if ( Reading_Handler() != 1) {//GAS.csv not updated |
harrisjunaid | 0:a67cda7c126f | 301 | //ERROR INDICATION |
harrisjunaid | 0:a67cda7c126f | 302 | nocsv_indication(); |
harrisjunaid | 0:a67cda7c126f | 303 | } else { |
harrisjunaid | 0:a67cda7c126f | 304 | //READING SUCCESSFUL LOG INDICATION |
harrisjunaid | 0:a67cda7c126f | 305 | CounterLog = 1; |
harrisjunaid | 0:a67cda7c126f | 306 | wait(2);//LED3 ON for 2 sec |
harrisjunaid | 0:a67cda7c126f | 307 | CounterLog = 0; |
harrisjunaid | 0:a67cda7c126f | 308 | |
harrisjunaid | 0:a67cda7c126f | 309 | } |
harrisjunaid | 0:a67cda7c126f | 310 | |
harrisjunaid | 0:a67cda7c126f | 311 | // TO VIEW COMPLETE WIRELESS DATA |
harrisjunaid | 0:a67cda7c126f | 312 | //pc.putc(xbee.getc()); |
harrisjunaid | 0:a67cda7c126f | 313 | } |
harrisjunaid | 0:a67cda7c126f | 314 | } |
harrisjunaid | 0:a67cda7c126f | 315 | } |
harrisjunaid | 0:a67cda7c126f | 316 | |
harrisjunaid | 0:a67cda7c126f | 317 | } |