test

Dependencies:   mbed Prelude_OV5642 Arducam_UTFT_SPI Arducam_OV5642 Arduino WIZnetInterface_Ricky

Committer:
RyusukeIwata
Date:
Thu Jan 13 10:01:56 2022 +0000
Revision:
6:cc373209ef74
Parent:
4:63042b865304
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
justinkim 0:e01f64037748 1 #include "mbed.h"
justinkim 0:e01f64037748 2 #include "UTFT_SPI.h"
justinkim 0:e01f64037748 3 #include "OV5642.h"
justinkim 0:e01f64037748 4 #include "OV5642_regs.h"
justinkim 3:23d439c8526b 5 #include "SDFileSystem.h"
justinkim 4:63042b865304 6 #include <stdio.h>
justinkim 4:63042b865304 7 #include <string.h>
justinkim 0:e01f64037748 8
RyusukeIwata 6:cc373209ef74 9 ArduCAM myCAM(p5, p6, p7, p25, p9, p10);
RyusukeIwata 6:cc373209ef74 10 ArduLCD myGLCD(p5, p6, p7, p25);
RyusukeIwata 6:cc373209ef74 11 SDFileSystem sd(p5, p6, p7, p8, "sd");
justinkim 4:63042b865304 12
RyusukeIwata 6:cc373209ef74 13 Serial pc(USBTX, USBRX, 115200);
justinkim 3:23d439c8526b 14 bool isShowFlag = true;
justinkim 4:63042b865304 15 char fnamecamera[32];
justinkim 4:63042b865304 16 char fnamecntcamera=0;
justinkim 4:63042b865304 17
justinkim 4:63042b865304 18 /* FTP */
justinkim 4:63042b865304 19 #define USER "user "
justinkim 4:63042b865304 20 #define PASS "pass "
justinkim 4:63042b865304 21 #define PASV "pasv "
justinkim 4:63042b865304 22 #define PORT "port "
justinkim 4:63042b865304 23 #define LIST "list "
justinkim 4:63042b865304 24 #define STOR "stor "
justinkim 4:63042b865304 25 #define RETR "retr "
justinkim 4:63042b865304 26 #define END "\r\n"
justinkim 4:63042b865304 27 #define FTP_SERVER_PORT 21
justinkim 4:63042b865304 28 #define MAX_SS 256
justinkim 4:63042b865304 29 bool gDataSockReady = false;
justinkim 4:63042b865304 30 bool gDataPutGetStart = false;
justinkim 4:63042b865304 31 bool ftpclientrun = false;
RyusukeIwata 6:cc373209ef74 32 int iwata_flag=0;
RyusukeIwata 6:cc373209ef74 33
RyusukeIwata 6:cc373209ef74 34
justinkim 4:63042b865304 35 enum CommandFirst {
justinkim 4:63042b865304 36 f_nocmd,
justinkim 4:63042b865304 37 f_put,
justinkim 4:63042b865304 38 };
justinkim 4:63042b865304 39 enum CommandSecond {
justinkim 4:63042b865304 40 s_nocmd,
justinkim 4:63042b865304 41 s_put,
justinkim 4:63042b865304 42 };
justinkim 4:63042b865304 43 enum ftpc_datasock_state{
justinkim 4:63042b865304 44 DATASOCK_IDLE,
justinkim 4:63042b865304 45 DATASOCK_READY,
justinkim 4:63042b865304 46 DATASOCK_START
justinkim 4:63042b865304 47 };
justinkim 4:63042b865304 48 struct Command {
justinkim 4:63042b865304 49 enum CommandFirst First;
justinkim 4:63042b865304 50 enum CommandSecond Second;
justinkim 4:63042b865304 51 };
justinkim 4:63042b865304 52 struct ftpc {
justinkim 4:63042b865304 53 enum ftpc_datasock_state dsock_state;
justinkim 4:63042b865304 54 };
justinkim 4:63042b865304 55 struct ftpc FTPClient;
justinkim 4:63042b865304 56 struct Command FTPCommand;
justinkim 4:63042b865304 57
justinkim 4:63042b865304 58 /* SD Card filesystem */
justinkim 4:63042b865304 59 static FILE *fp_jpeg;
justinkim 3:23d439c8526b 60 char fname[32];
justinkim 4:63042b865304 61 char fname_server[16];
justinkim 3:23d439c8526b 62 char fnamecnt=0;
justinkim 4:63042b865304 63 char gMsgBuf[10];
justinkim 4:63042b865304 64 char User_Keyboard_MSG_Cnt;
RyusukeIwata 6:cc373209ef74 65 ///* Function*/
RyusukeIwata 6:cc373209ef74 66 //char* User_Keyboard_MSG(void);
RyusukeIwata 6:cc373209ef74 67 //int pportc(char * arg);
RyusukeIwata 6:cc373209ef74 68 //void FTP_server_uploader();
justinkim 4:63042b865304 69 void setup();
justinkim 4:63042b865304 70 void loop();
RyusukeIwata 6:cc373209ef74 71 //void itoa( unsigned long long int value, char *str);
justinkim 0:e01f64037748 72
justinkim 0:e01f64037748 73 int main()
justinkim 0:e01f64037748 74 {
RyusukeIwata 6:cc373209ef74 75 int finish_flag = 0;
RyusukeIwata 6:cc373209ef74 76 pc.printf("hello world\r\n");
RyusukeIwata 6:cc373209ef74 77 pc.printf("ARDUCHIP_TRIG , SHUTTER_MASK : %x, %x\r\n", ARDUCHIP_TRIG , SHUTTER_MASK);
RyusukeIwata 6:cc373209ef74 78
RyusukeIwata 6:cc373209ef74 79 //*(volatile uint32_t *)(0x41001014) = 0x0060200; //clock 24MHz
justinkim 0:e01f64037748 80
justinkim 0:e01f64037748 81 setup();
RyusukeIwata 6:cc373209ef74 82 pc.printf("setup finish\r\n");
RyusukeIwata 6:cc373209ef74 83
RyusukeIwata 6:cc373209ef74 84
RyusukeIwata 6:cc373209ef74 85 //loop();
justinkim 0:e01f64037748 86
justinkim 4:63042b865304 87 //FTP_server_uploader();
RyusukeIwata 6:cc373209ef74 88
RyusukeIwata 6:cc373209ef74 89 for(int j = 0; j<2; j++)
RyusukeIwata 6:cc373209ef74 90 //while(1)
justinkim 0:e01f64037748 91 {
justinkim 4:63042b865304 92 loop();
RyusukeIwata 6:cc373209ef74 93 }
RyusukeIwata 6:cc373209ef74 94
RyusukeIwata 6:cc373209ef74 95 //while(1){
RyusukeIwata 6:cc373209ef74 96 for(int j = 0; j < 5; j++){
RyusukeIwata 6:cc373209ef74 97 pc.printf("[main] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
RyusukeIwata 6:cc373209ef74 98 if((myCAM.read_reg(ARDUCHIP_TRIG) == 8) | (myCAM.read_reg(ARDUCHIP_TRIG) == 9) ){
RyusukeIwata 6:cc373209ef74 99 //setup();
RyusukeIwata 6:cc373209ef74 100 loop();
RyusukeIwata 6:cc373209ef74 101 //finish_flag = 1;
RyusukeIwata 6:cc373209ef74 102 }
RyusukeIwata 6:cc373209ef74 103 wait(1.0);
RyusukeIwata 6:cc373209ef74 104 //if(finish_flag == 1){
RyusukeIwata 6:cc373209ef74 105 // break;
RyusukeIwata 6:cc373209ef74 106 //}
RyusukeIwata 6:cc373209ef74 107 }
RyusukeIwata 6:cc373209ef74 108
RyusukeIwata 6:cc373209ef74 109
RyusukeIwata 6:cc373209ef74 110 pc.printf("loop all finish\r\n");
RyusukeIwata 6:cc373209ef74 111
justinkim 0:e01f64037748 112 }
justinkim 0:e01f64037748 113
justinkim 0:e01f64037748 114 void setup()
justinkim 0:e01f64037748 115 {
justinkim 4:63042b865304 116 uint8_t vid,pid;
justinkim 4:63042b865304 117 uint8_t temp;
justinkim 1:3a14a4c84db2 118
RyusukeIwata 6:cc373209ef74 119 //pc.baud(115200);
justinkim 4:63042b865304 120
justinkim 4:63042b865304 121 pc.printf("ArduCAM Start!\r\n");
justinkim 4:63042b865304 122
justinkim 4:63042b865304 123 uint8_t temp1,temp2;
justinkim 4:63042b865304 124 myCAM.write_reg(ARDUCHIP_TEST1, 0x55); //Write to test1 register by 0x55
justinkim 4:63042b865304 125 myCAM.write_reg(ARDUCHIP_TEST2, 0xAA); //Write to test1 register by 0xaa
justinkim 4:63042b865304 126 wait_ms(1000);
justinkim 4:63042b865304 127 temp1 = myCAM.read_reg(ARDUCHIP_TEST1); //Read from test1 register
justinkim 4:63042b865304 128 temp2 = myCAM.read_reg(ARDUCHIP_TEST2); //Read from test1 register
justinkim 4:63042b865304 129 pc.printf("temp1 : %d\r\n",temp1);
justinkim 4:63042b865304 130 pc.printf("temp2 : %d\r\n",temp2);
justinkim 4:63042b865304 131 wait_ms(1000);
justinkim 4:63042b865304 132
justinkim 4:63042b865304 133 myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
justinkim 4:63042b865304 134 temp = myCAM.read_reg(ARDUCHIP_TEST1);
justinkim 1:3a14a4c84db2 135
justinkim 0:e01f64037748 136 if(temp != 0x55)
justinkim 0:e01f64037748 137 {
justinkim 0:e01f64037748 138 pc.printf("SPI interface Error!\r\n");
justinkim 0:e01f64037748 139 while(1);
justinkim 0:e01f64037748 140 }
justinkim 0:e01f64037748 141
justinkim 0:e01f64037748 142 //Change MCU mode
justinkim 0:e01f64037748 143 myCAM.set_mode(MCU2LCD_MODE);
justinkim 0:e01f64037748 144
justinkim 0:e01f64037748 145 //Initialize the LCD Module
justinkim 1:3a14a4c84db2 146 myGLCD.InitLCD();
justinkim 0:e01f64037748 147
justinkim 0:e01f64037748 148 //Check if the camera module type is OV5642
justinkim 0:e01f64037748 149 myCAM.rdSensorReg16_8(OV5642_CHIPID_HIGH, &vid);
justinkim 0:e01f64037748 150 myCAM.rdSensorReg16_8(OV5642_CHIPID_LOW, &pid);
justinkim 0:e01f64037748 151 if((vid != 0x56) || (pid != 0x42))
justinkim 0:e01f64037748 152 pc.printf("Can't find OV5642 module!\r\n");
justinkim 0:e01f64037748 153 else
justinkim 0:e01f64037748 154 pc.printf("OV5642 detected\r\n");
justinkim 0:e01f64037748 155
justinkim 3:23d439c8526b 156 //Change to BMP capture mode and initialize the OV5642 module
justinkim 3:23d439c8526b 157 myCAM.set_format(BMP);
justinkim 3:23d439c8526b 158
justinkim 0:e01f64037748 159 myCAM.InitCAM();
justinkim 0:e01f64037748 160 }
justinkim 3:23d439c8526b 161
justinkim 0:e01f64037748 162 void loop()
justinkim 0:e01f64037748 163 {
justinkim 3:23d439c8526b 164 FILE *outFile;
justinkim 3:23d439c8526b 165 uint8_t buf[256];
justinkim 3:23d439c8526b 166 static int i = 0;
justinkim 3:23d439c8526b 167 uint8_t temp,temp_last;
justinkim 3:23d439c8526b 168 uint8_t start_capture = 0;
RyusukeIwata 6:cc373209ef74 169
RyusukeIwata 6:cc373209ef74 170 //Wait trigger from shutter buttom
RyusukeIwata 6:cc373209ef74 171 //pc.printf("%x\r\n",myCAM.get_bit(ARDUCHIP_TRIG , SHUTTER_MASK));
RyusukeIwata 6:cc373209ef74 172 //if(myCAM.get_bit(ARDUCHIP_TRIG , SHUTTER_MASK))
RyusukeIwata 6:cc373209ef74 173 pc.printf("=== [0]iwata_flag = %d, start_capture = %d ===\r\n",iwata_flag, start_capture);
RyusukeIwata 6:cc373209ef74 174 if(iwata_flag)
justinkim 3:23d439c8526b 175 {
RyusukeIwata 6:cc373209ef74 176 pc.printf("=== [1] myCAM.get_bit ===\r\n");
justinkim 3:23d439c8526b 177 isShowFlag = false;
justinkim 3:23d439c8526b 178 myCAM.set_mode(MCU2LCD_MODE);
justinkim 3:23d439c8526b 179 myCAM.set_format(JPEG);
justinkim 3:23d439c8526b 180 myCAM.InitCAM();
justinkim 4:63042b865304 181 myCAM.OV5642_set_JPEG_size(OV5642_1920x1080);
justinkim 3:23d439c8526b 182 myCAM.write_reg(ARDUCHIP_TIM, VSYNC_LEVEL_MASK); //VSYNC is active HIGH
justinkim 3:23d439c8526b 183
justinkim 3:23d439c8526b 184 //Wait until buttom released
justinkim 3:23d439c8526b 185 while(myCAM.get_bit(ARDUCHIP_TRIG, SHUTTER_MASK));
justinkim 3:23d439c8526b 186 wait_ms(1000);
RyusukeIwata 6:cc373209ef74 187 start_capture = 1;
RyusukeIwata 6:cc373209ef74 188 iwata_flag = 0;
RyusukeIwata 6:cc373209ef74 189 pc.printf("[1-1] read_reg_if = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 3:23d439c8526b 190 }
justinkim 3:23d439c8526b 191 else
justinkim 3:23d439c8526b 192 {
RyusukeIwata 6:cc373209ef74 193 pc.printf("===[2] myCAM.get_bit else ===\r\n");
justinkim 3:23d439c8526b 194 if(isShowFlag )
justinkim 3:23d439c8526b 195 {
RyusukeIwata 6:cc373209ef74 196 pc.printf("[2-1] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 3:23d439c8526b 197 if(!myCAM.get_bit(ARDUCHIP_TRIG,VSYNC_MASK)) //New Frame is coming
justinkim 3:23d439c8526b 198 {
justinkim 3:23d439c8526b 199 myCAM.set_mode(MCU2LCD_MODE); //Switch to MCU
justinkim 3:23d439c8526b 200 myGLCD.resetXY();
justinkim 3:23d439c8526b 201 myCAM.set_mode(CAM2LCD_MODE); //Switch to CAM
RyusukeIwata 6:cc373209ef74 202 pc.printf("[2-2] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
RyusukeIwata 6:cc373209ef74 203 while(!myCAM.get_bit(ARDUCHIP_TRIG,VSYNC_MASK)){
RyusukeIwata 6:cc373209ef74 204 //pc.printf("[2-3] %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
RyusukeIwata 6:cc373209ef74 205 } //Wait for VSYNC is gone
RyusukeIwata 6:cc373209ef74 206 pc.printf("[2-3] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
RyusukeIwata 6:cc373209ef74 207 }
RyusukeIwata 6:cc373209ef74 208 if(myCAM.read_reg(ARDUCHIP_TRIG) == 1){
RyusukeIwata 6:cc373209ef74 209 iwata_flag = 1;
justinkim 3:23d439c8526b 210 }
justinkim 3:23d439c8526b 211 }
justinkim 3:23d439c8526b 212 }
justinkim 3:23d439c8526b 213 if(start_capture)
justinkim 3:23d439c8526b 214 {
RyusukeIwata 6:cc373209ef74 215 pc.printf("===[3] start capture ===\r\n");
justinkim 3:23d439c8526b 216 //Flush the FIFO
justinkim 3:23d439c8526b 217 myCAM.flush_fifo();
justinkim 3:23d439c8526b 218 //Clear the capture done flag
justinkim 3:23d439c8526b 219 myCAM.clear_fifo_flag();
justinkim 3:23d439c8526b 220 //Start capture
justinkim 3:23d439c8526b 221 myCAM.start_capture();
RyusukeIwata 6:cc373209ef74 222 pc.printf("[3-1] after start_capture read_reg_if = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 3:23d439c8526b 223 }
RyusukeIwata 6:cc373209ef74 224 pc.printf("[before 4] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 3:23d439c8526b 225 if(myCAM.get_bit(ARDUCHIP_TRIG ,CAP_DONE_MASK))
justinkim 0:e01f64037748 226 {
justinkim 0:e01f64037748 227
RyusukeIwata 6:cc373209ef74 228 pc.printf("=== [4]Capture Done! ===\r\n");
RyusukeIwata 6:cc373209ef74 229 pc.printf("[4-1] read_reg = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 3:23d439c8526b 230 //Construct a file name
justinkim 4:63042b865304 231 snprintf(fnamecamera, sizeof(fnamecamera), "/sd/jpss%04d.jpg", fnamecntcamera);
RyusukeIwata 6:cc373209ef74 232 pc.printf("[4-2]\r\n");
justinkim 4:63042b865304 233 fnamecntcamera++;
RyusukeIwata 6:cc373209ef74 234 pc.printf("[4-3]\r\n");
justinkim 3:23d439c8526b 235 //Open the new file
justinkim 4:63042b865304 236 outFile = fopen(fnamecamera,"w");
RyusukeIwata 6:cc373209ef74 237 pc.printf("[4-4]\r\n");
justinkim 3:23d439c8526b 238 if (! outFile)
justinkim 3:23d439c8526b 239 {
justinkim 3:23d439c8526b 240 pc.printf("open file failed\r\n");
justinkim 3:23d439c8526b 241 return;
justinkim 3:23d439c8526b 242 }
RyusukeIwata 6:cc373209ef74 243 else
RyusukeIwata 6:cc373209ef74 244 {
RyusukeIwata 6:cc373209ef74 245 pc.printf("open file okay\r\n");
RyusukeIwata 6:cc373209ef74 246 }
RyusukeIwata 6:cc373209ef74 247
justinkim 3:23d439c8526b 248 //Read first dummy byte
justinkim 3:23d439c8526b 249 //myCAM.read_fifo();
justinkim 3:23d439c8526b 250
justinkim 3:23d439c8526b 251 i = 0;
justinkim 3:23d439c8526b 252 temp = myCAM.read_fifo();
justinkim 3:23d439c8526b 253 //Write first image data to buffer
justinkim 3:23d439c8526b 254 buf[i++] = temp;
justinkim 3:23d439c8526b 255
justinkim 3:23d439c8526b 256 //Read JPEG data from FIFO
justinkim 3:23d439c8526b 257 while( (temp != 0xD9) | (temp_last != 0xFF) )
justinkim 0:e01f64037748 258 {
justinkim 3:23d439c8526b 259 temp_last = temp;
justinkim 3:23d439c8526b 260 temp = myCAM.read_fifo();
justinkim 3:23d439c8526b 261 //Write image data to buffer if not full
justinkim 3:23d439c8526b 262 if(i < 256)
justinkim 3:23d439c8526b 263 buf[i++] = temp;
justinkim 3:23d439c8526b 264 else
justinkim 3:23d439c8526b 265 {
justinkim 3:23d439c8526b 266 //Write 256 bytes image data to file
justinkim 3:23d439c8526b 267 fwrite(buf,256,1,outFile);
justinkim 3:23d439c8526b 268 i = 0;
justinkim 3:23d439c8526b 269 buf[i++] = temp;
justinkim 3:23d439c8526b 270 }
justinkim 0:e01f64037748 271 }
justinkim 3:23d439c8526b 272 //Write the remain bytes in the buffer
justinkim 3:23d439c8526b 273 if(i > 0)
justinkim 3:23d439c8526b 274 fwrite(buf,i,1,outFile);
justinkim 3:23d439c8526b 275
justinkim 3:23d439c8526b 276 //Close the file
justinkim 3:23d439c8526b 277 fclose(outFile);
justinkim 3:23d439c8526b 278 //Clear the capture done flag
justinkim 3:23d439c8526b 279 myCAM.clear_fifo_flag();
justinkim 3:23d439c8526b 280 //Clear the start capture flag
justinkim 3:23d439c8526b 281 start_capture = 0;
justinkim 3:23d439c8526b 282
justinkim 3:23d439c8526b 283 myCAM.set_format(BMP);
justinkim 3:23d439c8526b 284 myCAM.InitCAM();
justinkim 3:23d439c8526b 285 isShowFlag = true;
RyusukeIwata 6:cc373209ef74 286 pc.printf("finish saving!\r\n");
RyusukeIwata 6:cc373209ef74 287 pc.printf("[4-2] read_reg_if = %x\r\n", myCAM.read_reg(ARDUCHIP_TRIG));
justinkim 0:e01f64037748 288 }
justinkim 0:e01f64037748 289 }
justinkim 3:23d439c8526b 290
justinkim 3:23d439c8526b 291 /* itoa: convert n to characters in s */
RyusukeIwata 6:cc373209ef74 292 //void itoa( unsigned long long int value, char *str)
RyusukeIwata 6:cc373209ef74 293 //{
RyusukeIwata 6:cc373209ef74 294 // int i,j;
RyusukeIwata 6:cc373209ef74 295 // char temp[30];
RyusukeIwata 6:cc373209ef74 296 // for(i=0; value > 0; i++){
RyusukeIwata 6:cc373209ef74 297 // str[i] = value%10+'0';
RyusukeIwata 6:cc373209ef74 298 // value=value/10;
RyusukeIwata 6:cc373209ef74 299 // }
RyusukeIwata 6:cc373209ef74 300 // for(j=0;i>=0;j++,i--){
RyusukeIwata 6:cc373209ef74 301 // temp[j]=str[i-1];
RyusukeIwata 6:cc373209ef74 302 // }
RyusukeIwata 6:cc373209ef74 303 // for(i=0;i<j;i++){
RyusukeIwata 6:cc373209ef74 304 // str[i]=temp[i];
RyusukeIwata 6:cc373209ef74 305 // }
RyusukeIwata 6:cc373209ef74 306 //}
justinkim 4:63042b865304 307
RyusukeIwata 6:cc373209ef74 308 //void FTP_server_uploader(){
RyusukeIwata 6:cc373209ef74 309 //
RyusukeIwata 6:cc373209ef74 310 // char Msg_c;
RyusukeIwata 6:cc373209ef74 311 // int remain_filesize;
RyusukeIwata 6:cc373209ef74 312 // int send_byte;
RyusukeIwata 6:cc373209ef74 313 //
RyusukeIwata 6:cc373209ef74 314 // pc.printf("Hello FTP Camera!\r\n");
RyusukeIwata 6:cc373209ef74 315 //
RyusukeIwata 6:cc373209ef74 316 // uint8_t mac_addr[6] = {0x00, 0x08, 0xdc, 0x12, 0x34, 0x45};
RyusukeIwata 6:cc373209ef74 317 // const char ip_addr[] = "192.168.0.123"; // WIZwiki-W7500 IP-address
RyusukeIwata 6:cc373209ef74 318 // const char mask_addr[] = "255.255.255.0";
RyusukeIwata 6:cc373209ef74 319 // const char gateway_addr[] = "192.168.0.1";
RyusukeIwata 6:cc373209ef74 320 // const char ftpServer_control_ip_addr[] = "192.168.0.209"; // my IP address
RyusukeIwata 6:cc373209ef74 321 //
RyusukeIwata 6:cc373209ef74 322 //
RyusukeIwata 6:cc373209ef74 323 //
RyusukeIwata 6:cc373209ef74 324 //
RyusukeIwata 6:cc373209ef74 325 // TCPSocketConnection FTP_CONTROL_SOCK;
RyusukeIwata 6:cc373209ef74 326 // TCPSocketConnection FTP_DATA_SOCK;
RyusukeIwata 6:cc373209ef74 327 //
RyusukeIwata 6:cc373209ef74 328 //
RyusukeIwata 6:cc373209ef74 329 // pc.printf("\r\n----------------------------------------\r\n");
RyusukeIwata 6:cc373209ef74 330 // pc.printf("Press menu key\r\n");
RyusukeIwata 6:cc373209ef74 331 // pc.printf("----------------------------------------\r\n");
RyusukeIwata 6:cc373209ef74 332 // pc.printf("1> Snapshot Picture and Send to FTPServer\r\n");
RyusukeIwata 6:cc373209ef74 333 // pc.printf("----------------------------------------\r\n");
RyusukeIwata 6:cc373209ef74 334 // Msg_c = pc.getc();
RyusukeIwata 6:cc373209ef74 335 // if(Msg_c==0x31){
RyusukeIwata 6:cc373209ef74 336 //
RyusukeIwata 6:cc373209ef74 337 // ftpclientrun = true;
RyusukeIwata 6:cc373209ef74 338 // while(ftpclientrun){
RyusukeIwata 6:cc373209ef74 339 // //while 2
RyusukeIwata 6:cc373209ef74 340 // while(!FTP_CONTROL_SOCK.is_connected()){
RyusukeIwata 6:cc373209ef74 341 // pc.printf("Connecting...FTPServer\r\nIP:%s, PORT:%d\r\n", ftpServer_control_ip_addr, FTP_SERVER_PORT);
RyusukeIwata 6:cc373209ef74 342 // FTP_CONTROL_SOCK.connect(ftpServer_control_ip_addr, FTP_SERVER_PORT);
RyusukeIwata 6:cc373209ef74 343 // FTP_CONTROL_SOCK.set_blocking(false, 15000); // Timeout after (1.5)s
RyusukeIwata 6:cc373209ef74 344 // }//end of while 2
RyusukeIwata 6:cc373209ef74 345 //
RyusukeIwata 6:cc373209ef74 346 // //while 3
RyusukeIwata 6:cc373209ef74 347 // while(true)
RyusukeIwata 6:cc373209ef74 348 // {
RyusukeIwata 6:cc373209ef74 349 // //gDataSockReady if
RyusukeIwata 6:cc373209ef74 350 // if(gDataSockReady){
RyusukeIwata 6:cc373209ef74 351 // gDataSockReady = false;
RyusukeIwata 6:cc373209ef74 352 // //FTPCommand.First switch case
RyusukeIwata 6:cc373209ef74 353 // switch(FTPCommand.First){
RyusukeIwata 6:cc373209ef74 354 // case f_put:
RyusukeIwata 6:cc373209ef74 355 // FTP_CONTROL_SOCK.send(STOR, sizeof(STOR)-1);
RyusukeIwata 6:cc373209ef74 356 // FTP_CONTROL_SOCK.send(fname_server, sizeof(fname_server));
RyusukeIwata 6:cc373209ef74 357 // FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
RyusukeIwata 6:cc373209ef74 358 // break;
RyusukeIwata 6:cc373209ef74 359 // }//end of FTPCommand.First switch case
RyusukeIwata 6:cc373209ef74 360 // }//end of gDataSockReady if
RyusukeIwata 6:cc373209ef74 361 // /* received from FTPServer */
RyusukeIwata 6:cc373209ef74 362 // int n = FTP_CONTROL_SOCK.receive(buf, sizeof(buf));
RyusukeIwata 6:cc373209ef74 363 // if (n <= 0) break;
RyusukeIwata 6:cc373209ef74 364 // buf[n] = '\0';
RyusukeIwata 6:cc373209ef74 365 // pc.printf("\r\nReceived message from server: '%s'\r\n", buf);
RyusukeIwata 6:cc373209ef74 366 //
RyusukeIwata 6:cc373209ef74 367 // //buf if
RyusukeIwata 6:cc373209ef74 368 // if (!strncmp(buf, "220", 3)){
RyusukeIwata 6:cc373209ef74 369 // FTP_CONTROL_SOCK.send(USER, sizeof(USER)-1);
RyusukeIwata 6:cc373209ef74 370 // FTP_CONTROL_SOCK.send(ID, sizeof(ID));
RyusukeIwata 6:cc373209ef74 371 // FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
RyusukeIwata 6:cc373209ef74 372 // }
RyusukeIwata 6:cc373209ef74 373 // else if(!strncmp(buf, "331", 3)){
RyusukeIwata 6:cc373209ef74 374 // FTP_CONTROL_SOCK.send(PASS, sizeof(PASS)-1);
RyusukeIwata 6:cc373209ef74 375 // FTP_CONTROL_SOCK.send(PASSWORD, sizeof(PASSWORD));
RyusukeIwata 6:cc373209ef74 376 // FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
RyusukeIwata 6:cc373209ef74 377 // }
RyusukeIwata 6:cc373209ef74 378 // else if(!strncmp(buf, "230", 3)){
RyusukeIwata 6:cc373209ef74 379 // FTP_CONTROL_SOCK.send(PASV, sizeof(PASV)-1);
RyusukeIwata 6:cc373209ef74 380 // FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
RyusukeIwata 6:cc373209ef74 381 // FTPCommand.First = f_put;
RyusukeIwata 6:cc373209ef74 382 // }
RyusukeIwata 6:cc373209ef74 383 // else if(!strncmp(buf, "227", 3)){
RyusukeIwata 6:cc373209ef74 384 // if (pportc(buf) == -1){
RyusukeIwata 6:cc373209ef74 385 // pc.printf("Bad port syntax\r\n");
RyusukeIwata 6:cc373209ef74 386 // }
RyusukeIwata 6:cc373209ef74 387 // else{
RyusukeIwata 6:cc373209ef74 388 // pc.printf("Go Open Data Sock...\r\n ");
RyusukeIwata 6:cc373209ef74 389 // FTPClient.dsock_state = DATASOCK_READY;
RyusukeIwata 6:cc373209ef74 390 // }
RyusukeIwata 6:cc373209ef74 391 // }
RyusukeIwata 6:cc373209ef74 392 // else if(!strncmp(buf, "150", 3)){
RyusukeIwata 6:cc373209ef74 393 // switch(FTPCommand.First){
RyusukeIwata 6:cc373209ef74 394 // case f_put:
RyusukeIwata 6:cc373209ef74 395 // FTPCommand.First = f_nocmd;
RyusukeIwata 6:cc373209ef74 396 // FTPCommand.Second = s_put;
RyusukeIwata 6:cc373209ef74 397 // gDataPutGetStart = true;
RyusukeIwata 6:cc373209ef74 398 // break;
RyusukeIwata 6:cc373209ef74 399 // }
RyusukeIwata 6:cc373209ef74 400 // }
RyusukeIwata 6:cc373209ef74 401 // else if(!strncmp(buf, "226", 3)){
RyusukeIwata 6:cc373209ef74 402 // ftpclientrun = false;
RyusukeIwata 6:cc373209ef74 403 // FTP_CONTROL_SOCK.close();
RyusukeIwata 6:cc373209ef74 404 // }//end of buf if
RyusukeIwata 6:cc373209ef74 405 //
RyusukeIwata 6:cc373209ef74 406 //
RyusukeIwata 6:cc373209ef74 407 // //DATASOCK_READY if
RyusukeIwata 6:cc373209ef74 408 // if(FTPClient.dsock_state == DATASOCK_READY){
RyusukeIwata 6:cc373209ef74 409 // while(!FTP_DATA_SOCK.is_connected()){
RyusukeIwata 6:cc373209ef74 410 // pc.printf("Connecting...FTPServer Data sock\r\nIP:%s, PORT:%d\r\n", ftpServer_data_ip_addr_str, remote_port);
RyusukeIwata 6:cc373209ef74 411 // FTP_DATA_SOCK.connect(ftpServer_control_ip_addr, remote_port);
RyusukeIwata 6:cc373209ef74 412 // FTP_DATA_SOCK.set_blocking(false, 15000); // Timeout after (1.5)s
RyusukeIwata 6:cc373209ef74 413 // }
RyusukeIwata 6:cc373209ef74 414 // FTPClient.dsock_state = DATASOCK_IDLE;
RyusukeIwata 6:cc373209ef74 415 // gDataSockReady = true;
RyusukeIwata 6:cc373209ef74 416 // }//end of DATASOCK_READY if
RyusukeIwata 6:cc373209ef74 417 //
RyusukeIwata 6:cc373209ef74 418 // //gDataPutGetStart if
RyusukeIwata 6:cc373209ef74 419 // if(gDataPutGetStart){
RyusukeIwata 6:cc373209ef74 420 // //FTPCommand.Second switch case
RyusukeIwata 6:cc373209ef74 421 // switch(FTPCommand.Second){
RyusukeIwata 6:cc373209ef74 422 // case s_put:
RyusukeIwata 6:cc373209ef74 423 // pc.printf("put waiting...\r\n");
RyusukeIwata 6:cc373209ef74 424 // snprintf(fname, sizeof(fname), "/sd/jpss0000.jpg");
RyusukeIwata 6:cc373209ef74 425 // fp_jpeg = fopen(fname, "r");
RyusukeIwata 6:cc373209ef74 426 // fseek(fp_jpeg, 0, SEEK_END); // seek to end of file
RyusukeIwata 6:cc373209ef74 427 // remain_filesize = ftell(fp_jpeg); // get current file pointer
RyusukeIwata 6:cc373209ef74 428 // fseek(fp_jpeg, 0, SEEK_SET); // seek back to beginning of file
RyusukeIwata 6:cc373209ef74 429 // do{
RyusukeIwata 6:cc373209ef74 430 // memset(buf, 0, sizeof(buf));
RyusukeIwata 6:cc373209ef74 431 // if(remain_filesize > MAX_SS)
RyusukeIwata 6:cc373209ef74 432 // send_byte = MAX_SS;
RyusukeIwata 6:cc373209ef74 433 // else
RyusukeIwata 6:cc373209ef74 434 // send_byte = remain_filesize;
RyusukeIwata 6:cc373209ef74 435 // fread (buf, 1, send_byte, fp_jpeg);
RyusukeIwata 6:cc373209ef74 436 // FTP_DATA_SOCK.send(buf, send_byte);
RyusukeIwata 6:cc373209ef74 437 // remain_filesize -= send_byte;
RyusukeIwata 6:cc373209ef74 438 // pc.printf("#");
RyusukeIwata 6:cc373209ef74 439 // }while(remain_filesize!=0);
RyusukeIwata 6:cc373209ef74 440 // fclose(fp_jpeg);
RyusukeIwata 6:cc373209ef74 441 // gDataPutGetStart = false;
RyusukeIwata 6:cc373209ef74 442 // FTPCommand.Second = s_nocmd;
RyusukeIwata 6:cc373209ef74 443 // FTP_DATA_SOCK.close();
RyusukeIwata 6:cc373209ef74 444 // break;
RyusukeIwata 6:cc373209ef74 445 //
RyusukeIwata 6:cc373209ef74 446 // }//end of FTPCommand.Second switch case
RyusukeIwata 6:cc373209ef74 447 // }//end of gDataPutGetStart if
RyusukeIwata 6:cc373209ef74 448 // }//end of while 3
RyusukeIwata 6:cc373209ef74 449 // }
RyusukeIwata 6:cc373209ef74 450 // }
RyusukeIwata 6:cc373209ef74 451 //}
justinkim 4:63042b865304 452
RyusukeIwata 6:cc373209ef74 453 //char* User_Keyboard_MSG(void)
RyusukeIwata 6:cc373209ef74 454 //{
RyusukeIwata 6:cc373209ef74 455 // User_Keyboard_MSG_Cnt = 0;
RyusukeIwata 6:cc373209ef74 456 // memset(gMsgBuf, 0, sizeof(gMsgBuf));
RyusukeIwata 6:cc373209ef74 457 // do{
RyusukeIwata 6:cc373209ef74 458 // gMsgBuf[User_Keyboard_MSG_Cnt] = pc.getc();
RyusukeIwata 6:cc373209ef74 459 // if(gMsgBuf[User_Keyboard_MSG_Cnt]==0x08){
RyusukeIwata 6:cc373209ef74 460 // User_Keyboard_MSG_Cnt--;
RyusukeIwata 6:cc373209ef74 461 // }
RyusukeIwata 6:cc373209ef74 462 // else{
RyusukeIwata 6:cc373209ef74 463 // User_Keyboard_MSG_Cnt++;
RyusukeIwata 6:cc373209ef74 464 // }
RyusukeIwata 6:cc373209ef74 465 // }while(gMsgBuf[User_Keyboard_MSG_Cnt-1]!=0x0d);
RyusukeIwata 6:cc373209ef74 466 // return gMsgBuf;
RyusukeIwata 6:cc373209ef74 467 //}
RyusukeIwata 6:cc373209ef74 468 //
RyusukeIwata 6:cc373209ef74 469 //int pportc(char * arg)
RyusukeIwata 6:cc373209ef74 470 //{
RyusukeIwata 6:cc373209ef74 471 // int i;
RyusukeIwata 6:cc373209ef74 472 // char* tok=0;
RyusukeIwata 6:cc373209ef74 473 // strtok(arg,"(");
RyusukeIwata 6:cc373209ef74 474 // for (i = 0; i < 4; i++)
RyusukeIwata 6:cc373209ef74 475 // {
RyusukeIwata 6:cc373209ef74 476 // if(i==0) tok = strtok(NULL,",\r\n");
RyusukeIwata 6:cc373209ef74 477 // else tok = strtok(NULL,",");
RyusukeIwata 6:cc373209ef74 478 // ftpServer_data_ip_addr[i] = (uint8_t)atoi(tok);
RyusukeIwata 6:cc373209ef74 479 // if (!tok){
RyusukeIwata 6:cc373209ef74 480 // pc.printf("bad pport : %s\r\n", arg);
RyusukeIwata 6:cc373209ef74 481 // return -1;
RyusukeIwata 6:cc373209ef74 482 // }
RyusukeIwata 6:cc373209ef74 483 // }
RyusukeIwata 6:cc373209ef74 484 // remote_port = 0;
RyusukeIwata 6:cc373209ef74 485 // for (i = 0; i < 2; i++){
RyusukeIwata 6:cc373209ef74 486 // tok = strtok(NULL,",\r\n");
RyusukeIwata 6:cc373209ef74 487 // remote_port <<= 8;
RyusukeIwata 6:cc373209ef74 488 // remote_port += atoi(tok);
RyusukeIwata 6:cc373209ef74 489 // if (!tok){
RyusukeIwata 6:cc373209ef74 490 // pc.printf("bad pport : %s\r\n", arg);
RyusukeIwata 6:cc373209ef74 491 // return -1;
RyusukeIwata 6:cc373209ef74 492 // }
RyusukeIwata 6:cc373209ef74 493 // }
RyusukeIwata 6:cc373209ef74 494 // pc.printf("ip : %d.%d.%d.%d, port : %d\r\n", ftpServer_data_ip_addr[0], ftpServer_data_ip_addr[1], ftpServer_data_ip_addr[2], ftpServer_data_ip_addr[3], remote_port);
RyusukeIwata 6:cc373209ef74 495 // sprintf(ftpServer_data_ip_addr_str, "%d.%d.%d.%d", ftpServer_data_ip_addr[0], ftpServer_data_ip_addr[1], ftpServer_data_ip_addr[2], ftpServer_data_ip_addr[3]);
RyusukeIwata 6:cc373209ef74 496 // return 0;
RyusukeIwata 6:cc373209ef74 497 //}
RyusukeIwata 6:cc373209ef74 498 //