ftp

Dependencies:   SDFileSystem mbed-rtos mbed

Committer:
pravinmagar
Date:
Sun Jan 18 12:54:35 2015 +0000
Revision:
0:001407b7f10c
Child:
1:8dd592e91577
1 kb ftp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pravinmagar 0:001407b7f10c 1 #include "mbed.h"
pravinmagar 0:001407b7f10c 2 #include "SDFileSystem.h"
pravinmagar 0:001407b7f10c 3 #include "rtos.h"
pravinmagar 0:001407b7f10c 4 #define freq 1
pravinmagar 0:001407b7f10c 5
pravinmagar 0:001407b7f10c 6
pravinmagar 0:001407b7f10c 7 #define dur_sec 0.5
pravinmagar 0:001407b7f10c 8
pravinmagar 0:001407b7f10c 9 Serial pc(USBTX, USBRX);
pravinmagar 0:001407b7f10c 10 Serial gsm(D1, D0); //tx,rx
pravinmagar 0:001407b7f10c 11 DigitalOut dtr(D2);
pravinmagar 0:001407b7f10c 12 DigitalOut pwr_key(D3);
pravinmagar 0:001407b7f10c 13 DigitalOut gsm_rst(D7);
pravinmagar 0:001407b7f10c 14 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
pravinmagar 0:001407b7f10c 15 AnalogIn AC_input(A0);
pravinmagar 0:001407b7f10c 16 AnalogIn AC2_input(A1);
pravinmagar 0:001407b7f10c 17 AnalogIn DC_input(A2);
pravinmagar 0:001407b7f10c 18 AnalogIn DC_Detect(A3);
pravinmagar 0:001407b7f10c 19 AnalogIn TC1(A4);
pravinmagar 0:001407b7f10c 20 AnalogIn TC2(A5);
pravinmagar 0:001407b7f10c 21
pravinmagar 0:001407b7f10c 22
pravinmagar 0:001407b7f10c 23 unsigned short ACdata[20000];
pravinmagar 0:001407b7f10c 24 unsigned short DCdata[20000];
pravinmagar 0:001407b7f10c 25 unsigned short DC_Detect_data[10];
pravinmagar 0:001407b7f10c 26
pravinmagar 0:001407b7f10c 27 /*union Data
pravinmagar 0:001407b7f10c 28 {
pravinmagar 0:001407b7f10c 29 unsigned short datai[50000];
pravinmagar 0:001407b7f10c 30 char datac[100000];
pravinmagar 0:001407b7f10c 31 };
pravinmagar 0:001407b7f10c 32 union Data ACdata;
pravinmagar 0:001407b7f10c 33 union Data DCdata;*/
pravinmagar 0:001407b7f10c 34
pravinmagar 0:001407b7f10c 35
pravinmagar 0:001407b7f10c 36 unsigned short TC33temp;
pravinmagar 0:001407b7f10c 37 unsigned short TC50temp;
pravinmagar 0:001407b7f10c 38 unsigned short TCRLtemp;
pravinmagar 0:001407b7f10c 39
pravinmagar 0:001407b7f10c 40 char sitename[100] ="MODZ";
pravinmagar 0:001407b7f10c 41 char filename[100] = "";
pravinmagar 0:001407b7f10c 42 char filepath[100] = "";
pravinmagar 0:001407b7f10c 43 char timestamp[100]="";
pravinmagar 0:001407b7f10c 44 char timestampold[100]="";
pravinmagar 0:001407b7f10c 45 char main_dir[100] ="";
pravinmagar 0:001407b7f10c 46 char hour_dir[100] ="";
pravinmagar 0:001407b7f10c 47 char pathAC[100] ="";
pravinmagar 0:001407b7f10c 48 char pathDC[100] ="";
pravinmagar 0:001407b7f10c 49 char pathTC[100] ="";
pravinmagar 0:001407b7f10c 50 char filenameAC[100] ="";
pravinmagar 0:001407b7f10c 51 char filenameDC[100] ="";
pravinmagar 0:001407b7f10c 52 char clk_response[100] ="";
pravinmagar 0:001407b7f10c 53 int m=0,mfinal;
pravinmagar 0:001407b7f10c 54 int date, month, year, hour, minute, second, temp = 0;
pravinmagar 0:001407b7f10c 55 int c,i;
pravinmagar 0:001407b7f10c 56 int ns;
pravinmagar 0:001407b7f10c 57 unsigned long var = 0;
pravinmagar 0:001407b7f10c 58 unsigned long currentMillis = 0;
pravinmagar 0:001407b7f10c 59 uint8_t x=0,z=0, answer=0;
pravinmagar 0:001407b7f10c 60
pravinmagar 0:001407b7f10c 61 time_t previous;
pravinmagar 0:001407b7f10c 62 float tempC;
pravinmagar 0:001407b7f10c 63 uint32_t dataLength = dur_sec*freq*1000;
pravinmagar 0:001407b7f10c 64 osThreadId tid1,tid2,tid3,tid4,tid5,tid6;
pravinmagar 0:001407b7f10c 65 char ftpget[100];
pravinmagar 0:001407b7f10c 66 int reset_time=120; //mins
pravinmagar 0:001407b7f10c 67 int gsmerr=0;
pravinmagar 0:001407b7f10c 68
pravinmagar 0:001407b7f10c 69 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 70 // Module reset //
pravinmagar 0:001407b7f10c 71 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 72 void reset_mod()
pravinmagar 0:001407b7f10c 73 {
pravinmagar 0:001407b7f10c 74 NVIC_SystemReset();
pravinmagar 0:001407b7f10c 75 }
pravinmagar 0:001407b7f10c 76 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 77 // Send AT Command (1 response) //
pravinmagar 0:001407b7f10c 78 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 79 int8_t sendATcommand3(char* ATcommand, char* expected_answer, unsigned int timeout)
pravinmagar 0:001407b7f10c 80 {
pravinmagar 0:001407b7f10c 81 uint8_t x=0,answer=0; //x=0 and answer=0, if not put, AT+CCLK?\r is not executed
pravinmagar 0:001407b7f10c 82 char response[100];
pravinmagar 0:001407b7f10c 83 // int time_previous;
pravinmagar 0:001407b7f10c 84 memset(response, '\0', 100); // Initialize the string
pravinmagar 0:001407b7f10c 85 wait_ms(100);
pravinmagar 0:001407b7f10c 86 while( gsm.readable() > 0) gsm.getc(); // Clean the input buffer
pravinmagar 0:001407b7f10c 87 gsm.printf("%s \r", ATcommand); // Send the AT command
pravinmagar 0:001407b7f10c 88 x = 0;
pravinmagar 0:001407b7f10c 89 previous = time(NULL);
pravinmagar 0:001407b7f10c 90 do // this loop waits for the answer
pravinmagar 0:001407b7f10c 91 {
pravinmagar 0:001407b7f10c 92 if(gsm.readable() != 0)
pravinmagar 0:001407b7f10c 93 {
pravinmagar 0:001407b7f10c 94 response[x] = gsm.getc(); // if there are data in the UART input buffer, reads it and checks for the asnwer
pravinmagar 0:001407b7f10c 95 pc.putc(response[x]);
pravinmagar 0:001407b7f10c 96 x++;
pravinmagar 0:001407b7f10c 97 if (strstr(response, expected_answer) != NULL) // check if the desired answer is in the response of the module
pravinmagar 0:001407b7f10c 98 {
pravinmagar 0:001407b7f10c 99 answer = 1;
pravinmagar 0:001407b7f10c 100 }
pravinmagar 0:001407b7f10c 101 }
pravinmagar 0:001407b7f10c 102 }while((answer == 0) && ((time(NULL) - previous) < timeout));
pravinmagar 0:001407b7f10c 103 FILE *fp9 = fopen("/sd/Record.txt", "a");
pravinmagar 0:001407b7f10c 104 if(fp9==NULL)
pravinmagar 0:001407b7f10c 105 {
pravinmagar 0:001407b7f10c 106 error("Could not open the file for write\r\n");
pravinmagar 0:001407b7f10c 107 }
pravinmagar 0:001407b7f10c 108 fprintf(fp9,"%s",response);
pravinmagar 0:001407b7f10c 109 fclose(fp9); // Waits for the asnwer with time out
pravinmagar 0:001407b7f10c 110 /* if(clk_flag == 1)
pravinmagar 0:001407b7f10c 111 {
pravinmagar 0:001407b7f10c 112 sprintf(timestamp,response); //copies response to timestamp for further processing }
pravinmagar 0:001407b7f10c 113 }*/
pravinmagar 0:001407b7f10c 114 return answer;
pravinmagar 0:001407b7f10c 115 }
pravinmagar 0:001407b7f10c 116
pravinmagar 0:001407b7f10c 117 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 118 // Send AT Command (1 response) //
pravinmagar 0:001407b7f10c 119 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 120 int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout, bool clk_flag)
pravinmagar 0:001407b7f10c 121 {
pravinmagar 0:001407b7f10c 122 uint8_t x=0,answer=0; //x=0 and answer=0, if not put, AT+CCLK?\r is not executed
pravinmagar 0:001407b7f10c 123 char response[100];
pravinmagar 0:001407b7f10c 124 memset(response, '\0', 100); // Initialize the string
pravinmagar 0:001407b7f10c 125 wait_ms(100);
pravinmagar 0:001407b7f10c 126 while( gsm.readable() > 0) gsm.getc(); // Clean the input buffer
pravinmagar 0:001407b7f10c 127 gsm.printf("%s \r", ATcommand); // Send the AT command
pravinmagar 0:001407b7f10c 128 x = 0;
pravinmagar 0:001407b7f10c 129 previous = time(NULL);
pravinmagar 0:001407b7f10c 130 do // this loop waits for the answer
pravinmagar 0:001407b7f10c 131 {
pravinmagar 0:001407b7f10c 132 if(gsm.readable() != 0)
pravinmagar 0:001407b7f10c 133 {
pravinmagar 0:001407b7f10c 134 response[x] = gsm.getc(); // if there are data in the UART input buffer, reads it and checks for the asnwer
pravinmagar 0:001407b7f10c 135 pc.putc(response[x]);
pravinmagar 0:001407b7f10c 136 x++;
pravinmagar 0:001407b7f10c 137 if (strstr(response, expected_answer) != NULL) // check if the desired answer is in the response of the module
pravinmagar 0:001407b7f10c 138 {
pravinmagar 0:001407b7f10c 139 answer = 1;
pravinmagar 0:001407b7f10c 140 }
pravinmagar 0:001407b7f10c 141 }
pravinmagar 0:001407b7f10c 142 }
pravinmagar 0:001407b7f10c 143 while((answer == 0) && ((time(NULL) - previous) < timeout)); // Waits for the asnwer with time out
pravinmagar 0:001407b7f10c 144 if(clk_flag == 1)
pravinmagar 0:001407b7f10c 145 {
pravinmagar 0:001407b7f10c 146 sprintf(timestamp,response); //copies response to timestamp for further processing }
pravinmagar 0:001407b7f10c 147 }
pravinmagar 0:001407b7f10c 148 return answer;
pravinmagar 0:001407b7f10c 149 }
pravinmagar 0:001407b7f10c 150
pravinmagar 0:001407b7f10c 151 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 152 // Send AT Command (2 response) //
pravinmagar 0:001407b7f10c 153 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 154 int8_t sendATcommand2(char* ATcommand, char* expected_answer1,char* expected_answer2, unsigned int timeout)
pravinmagar 0:001407b7f10c 155 {
pravinmagar 0:001407b7f10c 156 uint8_t x=0, answer=0;
pravinmagar 0:001407b7f10c 157 char response[100];
pravinmagar 0:001407b7f10c 158 time_t previous;
pravinmagar 0:001407b7f10c 159 memset(response, '\0', 100); // Initialize the string
pravinmagar 0:001407b7f10c 160 //Thread::wait(100);
pravinmagar 0:001407b7f10c 161 wait_ms(100);
pravinmagar 0:001407b7f10c 162 while( gsm.readable() != 0) gsm.getc(); // Clean the input buffer
pravinmagar 0:001407b7f10c 163 gsm.printf("%s \r", ATcommand); // Send the AT command
pravinmagar 0:001407b7f10c 164 x = 0;
pravinmagar 0:001407b7f10c 165 previous = time(NULL);
pravinmagar 0:001407b7f10c 166 do // this loop waits for the answer
pravinmagar 0:001407b7f10c 167 {
pravinmagar 0:001407b7f10c 168 if(gsm.readable() != 0) // if there are data in the UART input buffer, reads it and checks for the asnwer
pravinmagar 0:001407b7f10c 169 {
pravinmagar 0:001407b7f10c 170 response[x] = gsm.getc();
pravinmagar 0:001407b7f10c 171 pc.putc(response[x]);
pravinmagar 0:001407b7f10c 172 // sprintf(ftpget,"%s",response);
pravinmagar 0:001407b7f10c 173 x++;
pravinmagar 0:001407b7f10c 174 if (strstr(response, expected_answer1) != NULL) // check if the desired answer 1 is in the response of the module
pravinmagar 0:001407b7f10c 175 {
pravinmagar 0:001407b7f10c 176 answer = 1;
pravinmagar 0:001407b7f10c 177 }
pravinmagar 0:001407b7f10c 178 if (strstr(response, expected_answer2) != NULL) // check if the desired answer 2 is in the response of the module
pravinmagar 0:001407b7f10c 179 {
pravinmagar 0:001407b7f10c 180 answer = 2;
pravinmagar 0:001407b7f10c 181 break;
pravinmagar 0:001407b7f10c 182 }
pravinmagar 0:001407b7f10c 183 }
pravinmagar 0:001407b7f10c 184 }
pravinmagar 0:001407b7f10c 185 while((answer == 0) && ((time(NULL) - previous) < timeout)); // Waits for the asnwer with time out
pravinmagar 0:001407b7f10c 186 return answer;
pravinmagar 0:001407b7f10c 187 }
pravinmagar 0:001407b7f10c 188
pravinmagar 0:001407b7f10c 189 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 190 // Getting File Directories and names //
pravinmagar 0:001407b7f10c 191 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 192 void GetFileDir()
pravinmagar 0:001407b7f10c 193 {
pravinmagar 0:001407b7f10c 194 int attempt_cnt=0;
pravinmagar 0:001407b7f10c 195 char month_dir[100]="";
pravinmagar 0:001407b7f10c 196 char date_dir[100] ="";
pravinmagar 0:001407b7f10c 197 sendATcommand("AT+CCLK?\r", "OK", 5,1);
pravinmagar 0:001407b7f10c 198 //sprintf(response,timestamp);
pravinmagar 0:001407b7f10c 199 x=20;
pravinmagar 0:001407b7f10c 200 year = 10*(timestamp[x+1]-48) + (timestamp[x+2]-48);
pravinmagar 0:001407b7f10c 201 while(year!=14&&year!=15)
pravinmagar 0:001407b7f10c 202 {
pravinmagar 0:001407b7f10c 203 sendATcommand("AT+CCLK?\r", "OK", 5,0);
pravinmagar 0:001407b7f10c 204 year = 10*(timestamp[x+1]-48) + (timestamp[x+2]-48);
pravinmagar 0:001407b7f10c 205 attempt_cnt++;
pravinmagar 0:001407b7f10c 206 if(attempt_cnt>4) break;
pravinmagar 0:001407b7f10c 207 }
pravinmagar 0:001407b7f10c 208 if(year==14||year==15)
pravinmagar 0:001407b7f10c 209 {
pravinmagar 0:001407b7f10c 210 if(timestamp!=timestampold)
pravinmagar 0:001407b7f10c 211 {
pravinmagar 0:001407b7f10c 212 sprintf(timestampold,timestamp);
pravinmagar 0:001407b7f10c 213 //pc.printf("\r\nold time stamp is%s\r\n",timestampold);
pravinmagar 0:001407b7f10c 214 month = (timestamp[x+4]-48)*10+(timestamp[x+5]-48);
pravinmagar 0:001407b7f10c 215 date = (timestamp[x+7]-48)*10+(timestamp[x+8]-48);
pravinmagar 0:001407b7f10c 216 hour = (timestamp[x+10]-48)*10+(timestamp[x+11]-48);
pravinmagar 0:001407b7f10c 217 minute = (timestamp[x+13]-48)*10+(timestamp[x+14]-48);
pravinmagar 0:001407b7f10c 218 second = (timestamp[x+16]-48)*10+(timestamp[x+17]-48);
pravinmagar 0:001407b7f10c 219
pravinmagar 0:001407b7f10c 220 sprintf(main_dir,"/sd/%s",sitename);
pravinmagar 0:001407b7f10c 221 sprintf(month_dir,"%s/%s%02d%02d",main_dir,sitename,year,month);
pravinmagar 0:001407b7f10c 222 sprintf(date_dir,"%s/%s%02d%02d%02d",month_dir,sitename,year,month,date);
pravinmagar 0:001407b7f10c 223 sprintf(hour_dir,"%s/%s%02d%02d%02d%02d",date_dir,sitename,year,month,date,hour);
pravinmagar 0:001407b7f10c 224 sprintf(filepath,"%s/%s%02d%02d%02d%02d%02d%02d",hour_dir,sitename,year,month,date,hour,minute,second);
pravinmagar 0:001407b7f10c 225 sprintf(filename,"%s%02d%02d%02d%02d%02d%02d",sitename,year,month,date,hour,minute,second);
pravinmagar 0:001407b7f10c 226 gsmerr=0;
pravinmagar 0:001407b7f10c 227 mkdir(main_dir,0777);
pravinmagar 0:001407b7f10c 228 mkdir(month_dir,0777);
pravinmagar 0:001407b7f10c 229 mkdir(date_dir,0777);
pravinmagar 0:001407b7f10c 230 mkdir(hour_dir,0777);
pravinmagar 0:001407b7f10c 231 }
pravinmagar 0:001407b7f10c 232 else
pravinmagar 0:001407b7f10c 233 {
pravinmagar 0:001407b7f10c 234 sprintf(filepath,"%s/%s%02d%02d%02d%02d%02d%02dErr%03d",hour_dir,sitename,year,month,date,hour,minute,second,gsmerr);
pravinmagar 0:001407b7f10c 235 sprintf(filename,"%s%02d%02d%02d%02d%02d%02dErr%03d",sitename,year,month,date,hour,minute,second,gsmerr);
pravinmagar 0:001407b7f10c 236 gsmerr++;
pravinmagar 0:001407b7f10c 237 }
pravinmagar 0:001407b7f10c 238 }
pravinmagar 0:001407b7f10c 239 else
pravinmagar 0:001407b7f10c 240 {
pravinmagar 0:001407b7f10c 241 sprintf(timestamp,timestampold);
pravinmagar 0:001407b7f10c 242 sprintf(filepath,"%s/%s%02d%02d%02d%02d%02d%02dErr%03d",hour_dir,sitename,year,month,date,hour,minute,second,gsmerr);
pravinmagar 0:001407b7f10c 243 sprintf(filename,"%s%02d%02d%02d%02d%02d%02dErr%03d",sitename,year,month,date,hour,minute,second,gsmerr);
pravinmagar 0:001407b7f10c 244 gsmerr++;
pravinmagar 0:001407b7f10c 245 }
pravinmagar 0:001407b7f10c 246 }
pravinmagar 0:001407b7f10c 247 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 248 // DC Detect //
pravinmagar 0:001407b7f10c 249 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 250 void DC_Detection()
pravinmagar 0:001407b7f10c 251 {
pravinmagar 0:001407b7f10c 252 Timer t;
pravinmagar 0:001407b7f10c 253 unsigned long j=0;
pravinmagar 0:001407b7f10c 254
pravinmagar 0:001407b7f10c 255 t.start();
pravinmagar 0:001407b7f10c 256 while(j<10)
pravinmagar 0:001407b7f10c 257 {
pravinmagar 0:001407b7f10c 258 if((int)(t.read()*50*freq*1000)%100 == 0)
pravinmagar 0:001407b7f10c 259 {
pravinmagar 0:001407b7f10c 260 DC_Detect_data[j] = DC_Detect.read_u16();
pravinmagar 0:001407b7f10c 261 ++j;
pravinmagar 0:001407b7f10c 262 }
pravinmagar 0:001407b7f10c 263 }
pravinmagar 0:001407b7f10c 264 t.stop();
pravinmagar 0:001407b7f10c 265 // pc.printf("\r\nTemp Time Taken %f \n\r", t.read());
pravinmagar 0:001407b7f10c 266 t.reset();
pravinmagar 0:001407b7f10c 267 // pc.printf("Total Samples %d\r\n",j);
pravinmagar 0:001407b7f10c 268 osSignalSet(tid3, 0x1);
pravinmagar 0:001407b7f10c 269 }
pravinmagar 0:001407b7f10c 270 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 271 // AC-DC Sampling //
pravinmagar 0:001407b7f10c 272 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 273 void calculate_ADC()
pravinmagar 0:001407b7f10c 274 {
pravinmagar 0:001407b7f10c 275 Timer t;
pravinmagar 0:001407b7f10c 276 unsigned long j=0;
pravinmagar 0:001407b7f10c 277 //pc.printf("\n\rStarting Reading \n\r");
pravinmagar 0:001407b7f10c 278 t.start();
pravinmagar 0:001407b7f10c 279 while(j<dataLength)
pravinmagar 0:001407b7f10c 280 {
pravinmagar 0:001407b7f10c 281 if((int)(t.read()*100*freq*1000)%100 == 0)
pravinmagar 0:001407b7f10c 282 {
pravinmagar 0:001407b7f10c 283 ACdata[j] = AC_input.read_u16();
pravinmagar 0:001407b7f10c 284 DCdata[j] = DC_input.read_u16();
pravinmagar 0:001407b7f10c 285 ++j;
pravinmagar 0:001407b7f10c 286 }
pravinmagar 0:001407b7f10c 287 }
pravinmagar 0:001407b7f10c 288 t.stop();
pravinmagar 0:001407b7f10c 289 //pc.printf("Time Taken %f \n\r", t.read());
pravinmagar 0:001407b7f10c 290 t.reset();
pravinmagar 0:001407b7f10c 291 //pc.printf("Total Samples %d\r\n",j);
pravinmagar 0:001407b7f10c 292 }
pravinmagar 0:001407b7f10c 293 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 294 // Storage //
pravinmagar 0:001407b7f10c 295 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 296 void store(void const *args)
pravinmagar 0:001407b7f10c 297 {
pravinmagar 0:001407b7f10c 298 tid3 = osThreadGetId();
pravinmagar 0:001407b7f10c 299 while(true)
pravinmagar 0:001407b7f10c 300 {
pravinmagar 0:001407b7f10c 301 osSignalWait(0x1, osWaitForever);
pravinmagar 0:001407b7f10c 302 GetFileDir();
pravinmagar 0:001407b7f10c 303 sprintf(filenameAC,"%sAC.txt",filename);
pravinmagar 0:001407b7f10c 304 sprintf(pathAC,"%sAC.txt",filepath);
pravinmagar 0:001407b7f10c 305 // pc.printf("\r\nFilename-AC\t%s", pathAC);
pravinmagar 0:001407b7f10c 306 FILE *fp = fopen(pathAC, "w");
pravinmagar 0:001407b7f10c 307 if(fp == NULL)
pravinmagar 0:001407b7f10c 308 {
pravinmagar 0:001407b7f10c 309 //pc.printf("Could not open file for write\n\r");
pravinmagar 0:001407b7f10c 310 reset_mod();
pravinmagar 0:001407b7f10c 311 }
pravinmagar 0:001407b7f10c 312 else
pravinmagar 0:001407b7f10c 313 {
pravinmagar 0:001407b7f10c 314 for(unsigned long k=0; k<dataLength; ++k)
pravinmagar 0:001407b7f10c 315 {
pravinmagar 0:001407b7f10c 316 fprintf(fp, "%d.", ACdata[k]);
pravinmagar 0:001407b7f10c 317 }
pravinmagar 0:001407b7f10c 318 fprintf(fp, "EOF");
pravinmagar 0:001407b7f10c 319
pravinmagar 0:001407b7f10c 320 }
pravinmagar 0:001407b7f10c 321 fclose(fp);
pravinmagar 0:001407b7f10c 322 sprintf(filenameDC,"%sDC.txt",filename);
pravinmagar 0:001407b7f10c 323 sprintf(pathDC,"%sDC.txt",filepath);
pravinmagar 0:001407b7f10c 324 // pc.printf("\r\nFilename-DC\t%s", pathDC);
pravinmagar 0:001407b7f10c 325 FILE *fp1 = fopen(pathDC, "w");
pravinmagar 0:001407b7f10c 326 if(fp1 == NULL)
pravinmagar 0:001407b7f10c 327 {
pravinmagar 0:001407b7f10c 328
pravinmagar 0:001407b7f10c 329 //reset_mod();
pravinmagar 0:001407b7f10c 330 }
pravinmagar 0:001407b7f10c 331 else
pravinmagar 0:001407b7f10c 332 {
pravinmagar 0:001407b7f10c 333 for(unsigned long k=0; k<dataLength; ++k)
pravinmagar 0:001407b7f10c 334 {
pravinmagar 0:001407b7f10c 335 fprintf(fp1, "%d.", DCdata[k]);
pravinmagar 0:001407b7f10c 336 }
pravinmagar 0:001407b7f10c 337 fprintf(fp1, "EOF");
pravinmagar 0:001407b7f10c 338 }
pravinmagar 0:001407b7f10c 339 fclose(fp1);
pravinmagar 0:001407b7f10c 340 sprintf(pathTC,"%sData.txt",hour_dir);
pravinmagar 0:001407b7f10c 341 //pc.printf("\r\nFilename-TC\t%s", pathTC);
pravinmagar 0:001407b7f10c 342 FILE *fp2 = fopen(pathTC, "a");
pravinmagar 0:001407b7f10c 343 if(fp2 == NULL)
pravinmagar 0:001407b7f10c 344 {
pravinmagar 0:001407b7f10c 345 //pc.printf("Could not open file for write\n\r");
pravinmagar 0:001407b7f10c 346 //reset_mod();
pravinmagar 0:001407b7f10c 347 }
pravinmagar 0:001407b7f10c 348 else
pravinmagar 0:001407b7f10c 349 {
pravinmagar 0:001407b7f10c 350 fprintf(fp2, "\r\n%s",timestamp);
pravinmagar 0:001407b7f10c 351 for(unsigned long k=0; k<10; ++k)
pravinmagar 0:001407b7f10c 352 {
pravinmagar 0:001407b7f10c 353 fprintf(fp2, "\r\nDC-%d",DC_Detect_data[k]);
pravinmagar 0:001407b7f10c 354 }
pravinmagar 0:001407b7f10c 355 }
pravinmagar 0:001407b7f10c 356 fclose(fp2);
pravinmagar 0:001407b7f10c 357 pc.printf("\n storage done");
pravinmagar 0:001407b7f10c 358 osSignalSet(tid6, 0x1);
pravinmagar 0:001407b7f10c 359
pravinmagar 0:001407b7f10c 360 }
pravinmagar 0:001407b7f10c 361 }
pravinmagar 0:001407b7f10c 362
pravinmagar 0:001407b7f10c 363 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 364 // Sampling Function //
pravinmagar 0:001407b7f10c 365 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 366
pravinmagar 0:001407b7f10c 367 void sampling(void const *args)
pravinmagar 0:001407b7f10c 368 {
pravinmagar 0:001407b7f10c 369 //int smplngcnt=0;
pravinmagar 0:001407b7f10c 370 tid1 = osThreadGetId();
pravinmagar 0:001407b7f10c 371 while(true)
pravinmagar 0:001407b7f10c 372 {
pravinmagar 0:001407b7f10c 373 pc.printf("AC sampling attempt");
pravinmagar 0:001407b7f10c 374 calculate_ADC();
pravinmagar 0:001407b7f10c 375 DC_Detection();
pravinmagar 0:001407b7f10c 376 for(int i=0;i<3; i++)
pravinmagar 0:001407b7f10c 377 {
pravinmagar 0:001407b7f10c 378 Thread::wait(60000);
pravinmagar 0:001407b7f10c 379 }
pravinmagar 0:001407b7f10c 380 }
pravinmagar 0:001407b7f10c 381 }
pravinmagar 0:001407b7f10c 382 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 383 // GSM Initialization //
pravinmagar 0:001407b7f10c 384 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 385 void gsm_init()
pravinmagar 0:001407b7f10c 386 {
pravinmagar 0:001407b7f10c 387 int cnt = 0;
pravinmagar 0:001407b7f10c 388 while((sendATcommand("AT+CREG?", "+CREG: 1,1", 5,0) || sendATcommand("AT+CREG?", "+CREG: 1,5", 5,0)) == 0)
pravinmagar 0:001407b7f10c 389 {
pravinmagar 0:001407b7f10c 390 if(sendATcommand("AT+CREG=1", "+CREG:1", 5,0))
pravinmagar 0:001407b7f10c 391 {
pravinmagar 0:001407b7f10c 392 pc.printf("creg is 1");
pravinmagar 0:001407b7f10c 393 return;
pravinmagar 0:001407b7f10c 394 }
pravinmagar 0:001407b7f10c 395 else if(sendATcommand("AT+CREG=1", "+CREG:5", 5,0))
pravinmagar 0:001407b7f10c 396 {
pravinmagar 0:001407b7f10c 397 pc.printf("creg is 5");
pravinmagar 0:001407b7f10c 398 return;
pravinmagar 0:001407b7f10c 399 }
pravinmagar 0:001407b7f10c 400 ++cnt;
pravinmagar 0:001407b7f10c 401 if(cnt == 4)
pravinmagar 0:001407b7f10c 402 {
pravinmagar 0:001407b7f10c 403 pc.printf("GSM registration failed");
pravinmagar 0:001407b7f10c 404 return;
pravinmagar 0:001407b7f10c 405 }
pravinmagar 0:001407b7f10c 406 }
pravinmagar 0:001407b7f10c 407 }
pravinmagar 0:001407b7f10c 408 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 409 // FTP Connect function //
pravinmagar 0:001407b7f10c 410 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 411 bool ftp_connect()
pravinmagar 0:001407b7f10c 412 {
pravinmagar 0:001407b7f10c 413 int ftp_connect_attempt=0;
pravinmagar 0:001407b7f10c 414 int ftp_close_attempt=0;
pravinmagar 0:001407b7f10c 415 if(sendATcommand("AT+SAPBR=2,1", "+SAPBR: 1,3,\"0.0.0.0\"", 5,0))
pravinmagar 0:001407b7f10c 416 {
pravinmagar 0:001407b7f10c 417 }
pravinmagar 0:001407b7f10c 418 else
pravinmagar 0:001407b7f10c 419 {
pravinmagar 0:001407b7f10c 420 while(!sendATcommand("AT+SAPBR=2,1", "+SAPBR: 1,3,\"0.0.0.0\"", 5,0))
pravinmagar 0:001407b7f10c 421 {
pravinmagar 0:001407b7f10c 422 sendATcommand("AT+SAPBR=0,1","OK",5,0);
pravinmagar 0:001407b7f10c 423 ftp_close_attempt++;
pravinmagar 0:001407b7f10c 424 if(ftp_close_attempt>3)
pravinmagar 0:001407b7f10c 425 {
pravinmagar 0:001407b7f10c 426 return 0;
pravinmagar 0:001407b7f10c 427 }
pravinmagar 0:001407b7f10c 428 }
pravinmagar 0:001407b7f10c 429 }
pravinmagar 0:001407b7f10c 430 while(sendATcommand("AT+SAPBR=2,1", "+SAPBR: 1,3,\"0.0.0.0\"", 5,0))
pravinmagar 0:001407b7f10c 431 {
pravinmagar 0:001407b7f10c 432 sendATcommand("AT+SAPBR=1,1", "OK", 10,0);
pravinmagar 0:001407b7f10c 433 ftp_connect_attempt++;
pravinmagar 0:001407b7f10c 434 if(ftp_connect_attempt>6)
pravinmagar 0:001407b7f10c 435 {
pravinmagar 0:001407b7f10c 436 return 0;
pravinmagar 0:001407b7f10c 437 }
pravinmagar 0:001407b7f10c 438 }
pravinmagar 0:001407b7f10c 439 sendATcommand("AT+FTPTYPE=\"I\"", "OK", 5,0);
pravinmagar 0:001407b7f10c 440 sendATcommand("AT+FTPSERV=\"ftp.panchsheel.biz\"", "OK", 10,0);
pravinmagar 0:001407b7f10c 441 sendATcommand("AT+FTPUN=\"hardware@panchsheel.biz\"", "OK\r", 10,0);
pravinmagar 0:001407b7f10c 442 if(sendATcommand("AT+FTPPW=\"DAStest123\"", "OK\r", 10,0)) return 1;
pravinmagar 0:001407b7f10c 443 else return 0;
pravinmagar 0:001407b7f10c 444 }
pravinmagar 0:001407b7f10c 445
pravinmagar 0:001407b7f10c 446 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 447 // FTP Send Function //
pravinmagar 0:001407b7f10c 448 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 449
pravinmagar 0:001407b7f10c 450 void ftp_put(bool ftp_type)
pravinmagar 0:001407b7f10c 451 {
pravinmagar 0:001407b7f10c 452 char ftpfilename[30]="";
pravinmagar 0:001407b7f10c 453 char ftpfilepath[100]="";
pravinmagar 0:001407b7f10c 454 if (ftp_type ==0)
pravinmagar 0:001407b7f10c 455 {
pravinmagar 0:001407b7f10c 456 sprintf(ftpfilename,"%s",filenameAC);
pravinmagar 0:001407b7f10c 457 sprintf(ftpfilepath,"%s",pathAC);
pravinmagar 0:001407b7f10c 458 }
pravinmagar 0:001407b7f10c 459 else if (ftp_type ==1)
pravinmagar 0:001407b7f10c 460 {
pravinmagar 0:001407b7f10c 461 sprintf(ftpfilename,"%s",filenameDC);
pravinmagar 0:001407b7f10c 462 sprintf(ftpfilepath,"%s",pathDC);
pravinmagar 0:001407b7f10c 463 }
pravinmagar 0:001407b7f10c 464 pc.printf("\r\nftp_put attempt\n\r");
pravinmagar 0:001407b7f10c 465 char command1[40];
pravinmagar 0:001407b7f10c 466 char result1[20];
pravinmagar 0:001407b7f10c 467 sprintf(command1,"%s\"%s\"", "AT+FTPPUTNAME=", ftpfilename);
pravinmagar 0:001407b7f10c 468 sprintf(result1,"%s", "OK");
pravinmagar 0:001407b7f10c 469 for(int putname_attempt=0; putname_attempt<3;putname_attempt++)
pravinmagar 0:001407b7f10c 470 {
pravinmagar 0:001407b7f10c 471 if(sendATcommand(command1,result1, 10,0))
pravinmagar 0:001407b7f10c 472 {
pravinmagar 0:001407b7f10c 473 // pc.printf("\n %p",ftpfilename);
pravinmagar 0:001407b7f10c 474 sendATcommand("AT+FTPPUTPATH=\"/Trial//\"", "OK", 5,0);
pravinmagar 0:001407b7f10c 475 if(sendATcommand("AT+FTPPUT=1", "OK", 10,0))
pravinmagar 0:001407b7f10c 476 {
pravinmagar 0:001407b7f10c 477 // pc.printf("in loop");
pravinmagar 0:001407b7f10c 478 // pc.printf("\n\r %s",ftpfilepath);
pravinmagar 0:001407b7f10c 479 FILE *fp9 = fopen(ftpfilepath, "r");
pravinmagar 0:001407b7f10c 480 if(fp9==NULL)return;
pravinmagar 0:001407b7f10c 481 else
pravinmagar 0:001407b7f10c 482 {
pravinmagar 0:001407b7f10c 483 int trialcount=0;
pravinmagar 0:001407b7f10c 484 int allowedtrials=5;
pravinmagar 0:001407b7f10c 485 while(trialcount<allowedtrials)
pravinmagar 0:001407b7f10c 486 {
pravinmagar 0:001407b7f10c 487 if(sendATcommand("AT+FTPPUT=2,1000","+FTPPUT:2,1000", 10,0))
pravinmagar 0:001407b7f10c 488 {
pravinmagar 0:001407b7f10c 489 trialcount=0;
pravinmagar 0:001407b7f10c 490 for(int i=0; i<1000; i++)
pravinmagar 0:001407b7f10c 491 {
pravinmagar 0:001407b7f10c 492 gsm.printf("%c", fgetc(fp9));
pravinmagar 0:001407b7f10c 493
pravinmagar 0:001407b7f10c 494 }
pravinmagar 0:001407b7f10c 495 break;
pravinmagar 0:001407b7f10c 496 }
pravinmagar 0:001407b7f10c 497 else
pravinmagar 0:001407b7f10c 498 {
pravinmagar 0:001407b7f10c 499 // pc.printf("attempt %d failed",trialcount);
pravinmagar 0:001407b7f10c 500 trialcount++;
pravinmagar 0:001407b7f10c 501 }
pravinmagar 0:001407b7f10c 502 }
pravinmagar 0:001407b7f10c 503
pravinmagar 0:001407b7f10c 504 fclose(fp9);
pravinmagar 0:001407b7f10c 505 }
pravinmagar 0:001407b7f10c 506
pravinmagar 0:001407b7f10c 507 for(int ftp_close_attempt=0; ftp_close_attempt<5; ftp_close_attempt++)
pravinmagar 0:001407b7f10c 508 {
pravinmagar 0:001407b7f10c 509 if(sendATcommand("AT+FTPPUT=2,0", "OK", 5,0))
pravinmagar 0:001407b7f10c 510 {
pravinmagar 0:001407b7f10c 511 ftp_close_attempt=6;
pravinmagar 0:001407b7f10c 512 }
pravinmagar 0:001407b7f10c 513 }
pravinmagar 0:001407b7f10c 514 return;
pravinmagar 0:001407b7f10c 515 //}
pravinmagar 0:001407b7f10c 516
pravinmagar 0:001407b7f10c 517 }
pravinmagar 0:001407b7f10c 518 return;
pravinmagar 0:001407b7f10c 519 }
pravinmagar 0:001407b7f10c 520 }
pravinmagar 0:001407b7f10c 521 // pc.printf("\n\r %s\n\r","i am not able to send data");
pravinmagar 0:001407b7f10c 522 }
pravinmagar 0:001407b7f10c 523 /*
pravinmagar 0:001407b7f10c 524 //-----------------------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 525 // FTP Get
pravinmagar 0:001407b7f10c 526 //----------------------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 527 void downloadFTP()
pravinmagar 0:001407b7f10c 528
pravinmagar 0:001407b7f10c 529 {
pravinmagar 0:001407b7f10c 530 char incoming_data[100];
pravinmagar 0:001407b7f10c 531
pravinmagar 0:001407b7f10c 532 //int data_size, aux;
pravinmagar 0:001407b7f10c 533
pravinmagar 0:001407b7f10c 534 int x = 0;
pravinmagar 0:001407b7f10c 535 int attempt=0;
pravinmagar 0:001407b7f10c 536 int allowed_attempt=4;
pravinmagar 0:001407b7f10c 537 sendATcommand3("AT+FTPGETNAME=\"abc.txt\"", "OK", 5);
pravinmagar 0:001407b7f10c 538 sendATcommand3("AT+FTPGETPATH=\"/\"", "OK", 5);
pravinmagar 0:001407b7f10c 539 while(attempt<allowed_attempt)
pravinmagar 0:001407b7f10c 540 {
pravinmagar 0:001407b7f10c 541 if (sendATcommand3("AT+FTPGET=1", "+FTPGET:1,1",20)==1)
pravinmagar 0:001407b7f10c 542 {
pravinmagar 0:001407b7f10c 543
pravinmagar 0:001407b7f10c 544
pravinmagar 0:001407b7f10c 545 for(int i=0; i<4;i++)
pravinmagar 0:001407b7f10c 546 {
pravinmagar 0:001407b7f10c 547 if (sendATcommand2("AT+FTPGET=2,70","+FTPGET:2,","+FTPGET:1,",10) == 1)
pravinmagar 0:001407b7f10c 548 {
pravinmagar 0:001407b7f10c 549
pravinmagar 0:001407b7f10c 550 //data_size = 0;
pravinmagar 0:001407b7f10c 551 int previous = time(NULL);
pravinmagar 0:001407b7f10c 552
pravinmagar 0:001407b7f10c 553
pravinmagar 0:001407b7f10c 554 do{
pravinmagar 0:001407b7f10c 555 if(gsm.readable() == 1){
pravinmagar 0:001407b7f10c 556
pravinmagar 0:001407b7f10c 557 incoming_data[x] = gsm.getc();
pravinmagar 0:001407b7f10c 558 x++;
pravinmagar 0:001407b7f10c 559 }
pravinmagar 0:001407b7f10c 560 }while((time(NULL) - previous) < 5);
pravinmagar 0:001407b7f10c 561
pravinmagar 0:001407b7f10c 562
pravinmagar 0:001407b7f10c 563 pc.printf("Data is %s\r\n",incoming_data);
pravinmagar 0:001407b7f10c 564 // const char s[2] = "\n";
pravinmagar 0:001407b7f10c 565 //char *token;
pravinmagar 0:001407b7f10c 566 //int len=0;
pravinmagar 0:001407b7f10c 567 //token = strtok(incoming_data, s);
pravinmagar 0:001407b7f10c 568 //len = atoi(token);
pravinmagar 0:001407b7f10c 569 strncpy(ftpget,incoming_data+3,51);
pravinmagar 0:001407b7f10c 570 pc.printf("Data is %s",ftpget);
pravinmagar 0:001407b7f10c 571 FILE *fp1 = fopen("/sd/Query.txt","w");
pravinmagar 0:001407b7f10c 572 fprintf(fp1,"%s",ftpget);
pravinmagar 0:001407b7f10c 573 fclose(fp1);
pravinmagar 0:001407b7f10c 574 pc.printf("\r\n Download finished");
pravinmagar 0:001407b7f10c 575
pravinmagar 0:001407b7f10c 576 break;
pravinmagar 0:001407b7f10c 577 }
pravinmagar 0:001407b7f10c 578
pravinmagar 0:001407b7f10c 579 }
pravinmagar 0:001407b7f10c 580
pravinmagar 0:001407b7f10c 581 break;
pravinmagar 0:001407b7f10c 582 }
pravinmagar 0:001407b7f10c 583
pravinmagar 0:001407b7f10c 584 else
pravinmagar 0:001407b7f10c 585 {
pravinmagar 0:001407b7f10c 586 attempt++;
pravinmagar 0:001407b7f10c 587 }
pravinmagar 0:001407b7f10c 588
pravinmagar 0:001407b7f10c 589 }
pravinmagar 0:001407b7f10c 590 pc.printf("\n@@@");
pravinmagar 0:001407b7f10c 591 }
pravinmagar 0:001407b7f10c 592
pravinmagar 0:001407b7f10c 593
pravinmagar 0:001407b7f10c 594 */
pravinmagar 0:001407b7f10c 595
pravinmagar 0:001407b7f10c 596 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 597 // FTP Function Thread //
pravinmagar 0:001407b7f10c 598 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 599
pravinmagar 0:001407b7f10c 600 void FTP_Fun(void const *args)
pravinmagar 0:001407b7f10c 601 {
pravinmagar 0:001407b7f10c 602 tid6 = osThreadGetId();
pravinmagar 0:001407b7f10c 603
pravinmagar 0:001407b7f10c 604 while(true)
pravinmagar 0:001407b7f10c 605 {
pravinmagar 0:001407b7f10c 606 osSignalWait(0x1, osWaitForever);
pravinmagar 0:001407b7f10c 607 if(ftp_connect())
pravinmagar 0:001407b7f10c 608 {
pravinmagar 0:001407b7f10c 609
pravinmagar 0:001407b7f10c 610 ftp_put(0);
pravinmagar 0:001407b7f10c 611 ftp_put(1);
pravinmagar 0:001407b7f10c 612 // downloadFTP();
pravinmagar 0:001407b7f10c 613
pravinmagar 0:001407b7f10c 614 }
pravinmagar 0:001407b7f10c 615 }
pravinmagar 0:001407b7f10c 616 }
pravinmagar 0:001407b7f10c 617 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 618 // Main Function //
pravinmagar 0:001407b7f10c 619 //--------------------------------------------------------------------------------------------------//
pravinmagar 0:001407b7f10c 620 int main()
pravinmagar 0:001407b7f10c 621 {
pravinmagar 0:001407b7f10c 622 gsm_rst=1;
pravinmagar 0:001407b7f10c 623 wait(5);
pravinmagar 0:001407b7f10c 624 gsm.baud(115200);
pravinmagar 0:001407b7f10c 625 pc.baud(115200);
pravinmagar 0:001407b7f10c 626 pc.printf("\r\nHello");
pravinmagar 0:001407b7f10c 627 sendATcommand("AT+CLTS=1\r", "OK", 5,0);
pravinmagar 0:001407b7f10c 628 wait(2);
pravinmagar 0:001407b7f10c 629 sendATcommand("AT+CCLK?\r", "OK", 5,1);
pravinmagar 0:001407b7f10c 630
pravinmagar 0:001407b7f10c 631 //pc.printf("\r\n%s",timestamp);
pravinmagar 0:001407b7f10c 632 FILE *fp = fopen("/sd/SiteInfo.txt","a");
pravinmagar 0:001407b7f10c 633 if(fp == NULL)
pravinmagar 0:001407b7f10c 634 {
pravinmagar 0:001407b7f10c 635 FILE *fp = fopen("/sd/SiteInfo.txt","w");
pravinmagar 0:001407b7f10c 636 fprintf(fp, "\r\n%s",timestamp);
pravinmagar 0:001407b7f10c 637 }
pravinmagar 0:001407b7f10c 638 else
pravinmagar 0:001407b7f10c 639 {
pravinmagar 0:001407b7f10c 640 fprintf(fp, "\r\n%s",timestamp);
pravinmagar 0:001407b7f10c 641 //pc.printf("\r\n%s",timestamp);
pravinmagar 0:001407b7f10c 642 fclose(fp);
pravinmagar 0:001407b7f10c 643 }
pravinmagar 0:001407b7f10c 644
pravinmagar 0:001407b7f10c 645 Thread thread1(sampling);
pravinmagar 0:001407b7f10c 646 Thread thread3(store);
pravinmagar 0:001407b7f10c 647 Thread thread6(FTP_Fun);
pravinmagar 0:001407b7f10c 648
pravinmagar 0:001407b7f10c 649 while(true)
pravinmagar 0:001407b7f10c 650 {
pravinmagar 0:001407b7f10c 651 for (int f=0; f<reset_time; f++)//reset after 60 min
pravinmagar 0:001407b7f10c 652 {
pravinmagar 0:001407b7f10c 653 Thread::wait(60000);
pravinmagar 0:001407b7f10c 654 }
pravinmagar 0:001407b7f10c 655 //pc.printf("\r\n---MODULE RESET---\r\n");
pravinmagar 0:001407b7f10c 656 //reset_mod();
pravinmagar 0:001407b7f10c 657 }
pravinmagar 0:001407b7f10c 658 }