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