ftp
Dependencies: SDFileSystem mbed-rtos mbed
main.cpp@0:001407b7f10c, 2015-01-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |