fg

Dependencies:   CameraC328 SDFileSystem WIZnetInterface WizFi310Interface_Legacynew2 mbed-src

Fork of Camera_FTP_WIZwiki-W7500 by Ricky Kwon

Committer:
Dxmanas
Date:
Thu Feb 08 06:28:43 2018 +0000
Revision:
6:9f00e2657d78
Parent:
5:5cc3d57c04f8
qwer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 0:27fe09e9f405 1 #include "mbed.h"
Ricky_Kwon 0:27fe09e9f405 2 #include "SDFileSystem.h"
Dxmanas 6:9f00e2657d78 3 //#include "EthernetInterface.h"
Dxmanas 6:9f00e2657d78 4 #include "WizFi310Interface.h"
Ricky_Kwon 0:27fe09e9f405 5 #include "CameraC328.h"
Ricky_Kwon 0:27fe09e9f405 6
Ricky_Kwon 0:27fe09e9f405 7 /* CAMERA */
Ricky_Kwon 3:55b7af329281 8 #define USE_JPEG_HIGH_RESOLUTION 3 //1=80x64 <--- not working -_-;;, 2=160x128, 3=320x240, 4=640x480
Ricky_Kwon 0:27fe09e9f405 9
Ricky_Kwon 0:27fe09e9f405 10 /* FTP */
Ricky_Kwon 0:27fe09e9f405 11 #define USER "user "
Ricky_Kwon 0:27fe09e9f405 12 #define PASS "pass "
Ricky_Kwon 0:27fe09e9f405 13 #define PASV "pasv "
Ricky_Kwon 0:27fe09e9f405 14 #define PORT "port "
Ricky_Kwon 0:27fe09e9f405 15 #define LIST "list "
Ricky_Kwon 0:27fe09e9f405 16 #define STOR "stor "
Ricky_Kwon 0:27fe09e9f405 17 #define RETR "retr "
Ricky_Kwon 0:27fe09e9f405 18 #define END "\r\n"
Ricky_Kwon 0:27fe09e9f405 19 #define FTP_SERVER_PORT 21
Ricky_Kwon 0:27fe09e9f405 20 #define MAX_SS 256
Ricky_Kwon 0:27fe09e9f405 21 bool gDataSockReady = false;
Ricky_Kwon 0:27fe09e9f405 22 bool gDataPutGetStart = false;
Ricky_Kwon 0:27fe09e9f405 23 bool ftpclientrun = false;
Ricky_Kwon 0:27fe09e9f405 24 int remote_port;
Ricky_Kwon 0:27fe09e9f405 25 char ftpServer_data_ip_addr[4]={0,};
Ricky_Kwon 0:27fe09e9f405 26 char ftpServer_data_ip_addr_str[20]={0,};
Ricky_Kwon 0:27fe09e9f405 27 static char buf[256];
Dxmanas 6:9f00e2657d78 28 static char ID[]={"FTP"}; //Set FTPServer Login ID
Dxmanas 6:9f00e2657d78 29 static char PASSWORD[]={"user"}; //Set FTPServer Login Password
Ricky_Kwon 0:27fe09e9f405 30 enum CommandFirst {
Ricky_Kwon 0:27fe09e9f405 31 f_nocmd,
Ricky_Kwon 0:27fe09e9f405 32 f_put,
Ricky_Kwon 0:27fe09e9f405 33 };
Ricky_Kwon 0:27fe09e9f405 34 enum CommandSecond {
Ricky_Kwon 0:27fe09e9f405 35 s_nocmd,
Ricky_Kwon 0:27fe09e9f405 36 s_put,
Ricky_Kwon 0:27fe09e9f405 37 };
Ricky_Kwon 0:27fe09e9f405 38 enum ftpc_datasock_state{
Ricky_Kwon 0:27fe09e9f405 39 DATASOCK_IDLE,
Ricky_Kwon 0:27fe09e9f405 40 DATASOCK_READY,
Ricky_Kwon 0:27fe09e9f405 41 DATASOCK_START
Ricky_Kwon 0:27fe09e9f405 42 };
Ricky_Kwon 0:27fe09e9f405 43 struct Command {
Ricky_Kwon 0:27fe09e9f405 44 enum CommandFirst First;
Ricky_Kwon 0:27fe09e9f405 45 enum CommandSecond Second;
Ricky_Kwon 0:27fe09e9f405 46 };
Ricky_Kwon 0:27fe09e9f405 47 struct ftpc {
Ricky_Kwon 0:27fe09e9f405 48 enum ftpc_datasock_state dsock_state;
Ricky_Kwon 0:27fe09e9f405 49 };
Ricky_Kwon 0:27fe09e9f405 50 struct ftpc FTPClient;
Ricky_Kwon 0:27fe09e9f405 51 struct Command FTPCommand;
Ricky_Kwon 0:27fe09e9f405 52
Ricky_Kwon 0:27fe09e9f405 53 /* SD Card filesystem */
Ricky_Kwon 0:27fe09e9f405 54 SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
Ricky_Kwon 0:27fe09e9f405 55 static FILE *fp_jpeg;
Ricky_Kwon 0:27fe09e9f405 56 char fname[32];
Ricky_Kwon 0:27fe09e9f405 57 char fname_server[16];
Ricky_Kwon 1:7d428f360a0a 58 char fnamecnt=0;
Dxmanas 6:9f00e2657d78 59 ///* UART */
Ricky_Kwon 2:c469227cb913 60 Serial pc(USBTX, USBRX);
Ricky_Kwon 2:c469227cb913 61 char gMsgBuf[10];
Ricky_Kwon 2:c469227cb913 62 char User_Keyboard_MSG_Cnt;
Dxmanas 6:9f00e2657d78 63 ///* CAMERA */
Dxmanas 6:9f00e2657d78 64 //CameraC328 camera(PA_13, PA_14, CameraC328::Baud115200);
Ricky_Kwon 1:7d428f360a0a 65 /* Function*/
Ricky_Kwon 0:27fe09e9f405 66 char* User_Keyboard_MSG(void);
Ricky_Kwon 0:27fe09e9f405 67 int pportc(char * arg);
Ricky_Kwon 0:27fe09e9f405 68 void jpeg_callback(char *buf, size_t siz);
Ricky_Kwon 0:27fe09e9f405 69 void sync(void);
Ricky_Kwon 0:27fe09e9f405 70 void test_jpeg_snapshot_picture(void);
Ricky_Kwon 0:27fe09e9f405 71
Dxmanas 6:9f00e2657d78 72 #define SECURE WizFi310::SEC_WPA2_MIXED
Dxmanas 6:9f00e2657d78 73 #define SSID "cdi1"
Dxmanas 6:9f00e2657d78 74 #define PASS "cdilab17"
Dxmanas 6:9f00e2657d78 75
Dxmanas 6:9f00e2657d78 76 FTPClient FTP(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500
Dxmanas 6:9f00e2657d78 77 #if defined(TARGET_WIZwiki_W7500)
Dxmanas 6:9f00e2657d78 78 WizFi310Interface wizfi310(D1, D0, D7, D6, D8, NC, 115200);
Dxmanas 6:9f00e2657d78 79 Serial pc(USBTX, USBRX);
Dxmanas 6:9f00e2657d78 80 #endif
Dxmanas 6:9f00e2657d78 81
Ricky_Kwon 0:27fe09e9f405 82 int main() {
Ricky_Kwon 0:27fe09e9f405 83
Ricky_Kwon 0:27fe09e9f405 84 char Msg_c;
Ricky_Kwon 0:27fe09e9f405 85 int remain_filesize;
Ricky_Kwon 0:27fe09e9f405 86 int send_byte;
Ricky_Kwon 0:27fe09e9f405 87
Ricky_Kwon 0:27fe09e9f405 88
Ricky_Kwon 0:27fe09e9f405 89 pc.baud(115200);
Ricky_Kwon 0:27fe09e9f405 90
Ricky_Kwon 0:27fe09e9f405 91 pc.printf("Hello Home Security World!\r\n");
Ricky_Kwon 0:27fe09e9f405 92
Dxmanas 6:9f00e2657d78 93 //uint8_t mac_addr[6] = {0x00, 0x08, 0xdc, 0x12, 0x34, 0x45};
Dxmanas 6:9f00e2657d78 94 // const char ip_addr[] = "192.168.0.123";
Dxmanas 6:9f00e2657d78 95 // const char mask_addr[] = "255.255.255.0";
Dxmanas 6:9f00e2657d78 96 // const char gateway_addr[] = "192.168.0.1";
Dxmanas 6:9f00e2657d78 97 // const char ftpServer_control_ip_addr[] = "192.168.0.100";
Dxmanas 6:9f00e2657d78 98 //
Dxmanas 6:9f00e2657d78 99 //
Dxmanas 6:9f00e2657d78 100 // EthernetInterface eth;
Dxmanas 6:9f00e2657d78 101 // eth.init(mac_addr, ip_addr, mask_addr, gateway_addr); //Use Static
Dxmanas 6:9f00e2657d78 102 // eth.connect();
Dxmanas 6:9f00e2657d78 103
Dxmanas 6:9f00e2657d78 104 wizfi310.init();
Dxmanas 6:9f00e2657d78 105 if ( wizfi310.connect(SECURE, SSID, PASS, WizFi310::WM_STATION)) return -1;
Ricky_Kwon 0:27fe09e9f405 106
Ricky_Kwon 0:27fe09e9f405 107 TCPSocketConnection FTP_CONTROL_SOCK;
Ricky_Kwon 0:27fe09e9f405 108 TCPSocketConnection FTP_DATA_SOCK;
Ricky_Kwon 0:27fe09e9f405 109
Ricky_Kwon 0:27fe09e9f405 110 sync();
Ricky_Kwon 0:27fe09e9f405 111 //while 1
Ricky_Kwon 0:27fe09e9f405 112 while(true)
Ricky_Kwon 0:27fe09e9f405 113 {
Dxmanas 6:9f00e2657d78 114 //pc.printf("\r\n----------------------------------------\r\n");
Dxmanas 6:9f00e2657d78 115 // pc.printf("Press menu key\r\n");
Dxmanas 6:9f00e2657d78 116 // pc.printf("----------------------------------------\r\n");
Dxmanas 6:9f00e2657d78 117 // pc.printf("1> Snapshot Picture and Send FTPServer\r\n");
Dxmanas 6:9f00e2657d78 118 // pc.printf("----------------------------------------\r\n");
Dxmanas 6:9f00e2657d78 119 // Msg_c = pc.getc();
Dxmanas 6:9f00e2657d78 120 // if(Msg_c==1){
Ricky_Kwon 0:27fe09e9f405 121
Dxmanas 6:9f00e2657d78 122 // test_jpeg_snapshot_picture();
Ricky_Kwon 0:27fe09e9f405 123 ftpclientrun = true;
Ricky_Kwon 0:27fe09e9f405 124 while(ftpclientrun){
Ricky_Kwon 0:27fe09e9f405 125 //while 2
Ricky_Kwon 0:27fe09e9f405 126 while(!FTP_CONTROL_SOCK.is_connected()){
Ricky_Kwon 0:27fe09e9f405 127 pc.printf("Connecting...FTPServer\r\nIP:%s, PORT:%d\r\n", ftpServer_control_ip_addr, FTP_SERVER_PORT);
Ricky_Kwon 0:27fe09e9f405 128 FTP_CONTROL_SOCK.connect(ftpServer_control_ip_addr, FTP_SERVER_PORT);
Ricky_Kwon 0:27fe09e9f405 129 FTP_CONTROL_SOCK.set_blocking(false, 15000); // Timeout after (1.5)s
Ricky_Kwon 0:27fe09e9f405 130 }//end of while 2
Ricky_Kwon 0:27fe09e9f405 131
Ricky_Kwon 0:27fe09e9f405 132 //while 3
Ricky_Kwon 0:27fe09e9f405 133 while(true)
Ricky_Kwon 0:27fe09e9f405 134 {
Ricky_Kwon 0:27fe09e9f405 135 //gDataSockReady if
Ricky_Kwon 0:27fe09e9f405 136 if(gDataSockReady){
Ricky_Kwon 0:27fe09e9f405 137 gDataSockReady = false;
Ricky_Kwon 0:27fe09e9f405 138 //FTPCommand.First switch case
Ricky_Kwon 0:27fe09e9f405 139 switch(FTPCommand.First){
Ricky_Kwon 0:27fe09e9f405 140 case f_put:
Ricky_Kwon 0:27fe09e9f405 141 FTP_CONTROL_SOCK.send(STOR, sizeof(STOR)-1);
Ricky_Kwon 0:27fe09e9f405 142 FTP_CONTROL_SOCK.send(fname_server, sizeof(fname_server));
Ricky_Kwon 0:27fe09e9f405 143 FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
Ricky_Kwon 0:27fe09e9f405 144 break;
Ricky_Kwon 0:27fe09e9f405 145 }//end of FTPCommand.First switch case
Ricky_Kwon 0:27fe09e9f405 146 }//end of gDataSockReady if
Ricky_Kwon 0:27fe09e9f405 147 /* received from FTPServer */
Ricky_Kwon 0:27fe09e9f405 148 int n = FTP_CONTROL_SOCK.receive(buf, sizeof(buf));
Ricky_Kwon 0:27fe09e9f405 149 if (n <= 0) break;
Ricky_Kwon 0:27fe09e9f405 150 buf[n] = '\0';
Ricky_Kwon 1:7d428f360a0a 151 pc.printf("\r\nReceived message from server: '%s'\r\n", buf);
Ricky_Kwon 0:27fe09e9f405 152
Ricky_Kwon 0:27fe09e9f405 153 //buf if
Ricky_Kwon 0:27fe09e9f405 154 if (!strncmp(buf, "220", 3)){
Ricky_Kwon 0:27fe09e9f405 155 FTP_CONTROL_SOCK.send(USER, sizeof(USER)-1);
Ricky_Kwon 2:c469227cb913 156 FTP_CONTROL_SOCK.send(ID, sizeof(ID));
Ricky_Kwon 0:27fe09e9f405 157 FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
Ricky_Kwon 0:27fe09e9f405 158 }
Ricky_Kwon 0:27fe09e9f405 159 else if(!strncmp(buf, "331", 3)){
Ricky_Kwon 0:27fe09e9f405 160 FTP_CONTROL_SOCK.send(PASS, sizeof(PASS)-1);
Ricky_Kwon 2:c469227cb913 161 FTP_CONTROL_SOCK.send(PASSWORD, sizeof(PASSWORD));
Ricky_Kwon 0:27fe09e9f405 162 FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
Ricky_Kwon 0:27fe09e9f405 163 }
Ricky_Kwon 0:27fe09e9f405 164 else if(!strncmp(buf, "230", 3)){
Ricky_Kwon 0:27fe09e9f405 165 FTP_CONTROL_SOCK.send(PASV, sizeof(PASV)-1);
Ricky_Kwon 0:27fe09e9f405 166 FTP_CONTROL_SOCK.send(END, sizeof(END)-1);
Ricky_Kwon 0:27fe09e9f405 167 FTPCommand.First = f_put;
Ricky_Kwon 0:27fe09e9f405 168 }
Ricky_Kwon 0:27fe09e9f405 169 else if(!strncmp(buf, "227", 3)){
Ricky_Kwon 0:27fe09e9f405 170 if (pportc(buf) == -1){
Ricky_Kwon 0:27fe09e9f405 171 pc.printf("Bad port syntax\r\n");
Ricky_Kwon 0:27fe09e9f405 172 }
Ricky_Kwon 0:27fe09e9f405 173 else{
Ricky_Kwon 0:27fe09e9f405 174 pc.printf("Go Open Data Sock...\r\n ");
Ricky_Kwon 0:27fe09e9f405 175 FTPClient.dsock_state = DATASOCK_READY;
Ricky_Kwon 0:27fe09e9f405 176 }
Ricky_Kwon 0:27fe09e9f405 177 }
Ricky_Kwon 0:27fe09e9f405 178 else if(!strncmp(buf, "150", 3)){
Ricky_Kwon 0:27fe09e9f405 179 switch(FTPCommand.First){
Ricky_Kwon 0:27fe09e9f405 180 case f_put:
Ricky_Kwon 0:27fe09e9f405 181 FTPCommand.First = f_nocmd;
Ricky_Kwon 0:27fe09e9f405 182 FTPCommand.Second = s_put;
Ricky_Kwon 0:27fe09e9f405 183 gDataPutGetStart = true;
Ricky_Kwon 0:27fe09e9f405 184 break;
Ricky_Kwon 0:27fe09e9f405 185 }
Ricky_Kwon 0:27fe09e9f405 186 }
Ricky_Kwon 0:27fe09e9f405 187 else if(!strncmp(buf, "226", 3)){
Ricky_Kwon 0:27fe09e9f405 188 ftpclientrun = false;
Ricky_Kwon 0:27fe09e9f405 189 FTP_CONTROL_SOCK.close();
Ricky_Kwon 0:27fe09e9f405 190 }//end of buf if
Ricky_Kwon 0:27fe09e9f405 191
Ricky_Kwon 0:27fe09e9f405 192
Ricky_Kwon 0:27fe09e9f405 193 //DATASOCK_READY if
Ricky_Kwon 0:27fe09e9f405 194 if(FTPClient.dsock_state == DATASOCK_READY){
Ricky_Kwon 0:27fe09e9f405 195 while(!FTP_DATA_SOCK.is_connected()){
Ricky_Kwon 0:27fe09e9f405 196 pc.printf("Connecting...FTPServer Data sock\r\nIP:%s, PORT:%d\r\n", ftpServer_data_ip_addr_str, remote_port);
Ricky_Kwon 0:27fe09e9f405 197 FTP_DATA_SOCK.connect(ftpServer_control_ip_addr, remote_port);
Ricky_Kwon 0:27fe09e9f405 198 FTP_DATA_SOCK.set_blocking(false, 15000); // Timeout after (1.5)s
Ricky_Kwon 0:27fe09e9f405 199 }
Ricky_Kwon 0:27fe09e9f405 200 FTPClient.dsock_state = DATASOCK_IDLE;
Ricky_Kwon 0:27fe09e9f405 201 gDataSockReady = true;
Ricky_Kwon 0:27fe09e9f405 202 }//end of DATASOCK_READY if
Ricky_Kwon 0:27fe09e9f405 203
Ricky_Kwon 0:27fe09e9f405 204 //gDataPutGetStart if
Ricky_Kwon 0:27fe09e9f405 205 if(gDataPutGetStart){
Ricky_Kwon 0:27fe09e9f405 206 //FTPCommand.Second switch case
Ricky_Kwon 0:27fe09e9f405 207 switch(FTPCommand.Second){
Ricky_Kwon 0:27fe09e9f405 208 case s_put:
Ricky_Kwon 0:27fe09e9f405 209 pc.printf("put waiting...\r\n");
Ricky_Kwon 0:27fe09e9f405 210 fp_jpeg = fopen(fname, "r");
Ricky_Kwon 0:27fe09e9f405 211 fseek(fp_jpeg, 0, SEEK_END); // seek to end of file
Ricky_Kwon 0:27fe09e9f405 212 remain_filesize = ftell(fp_jpeg); // get current file pointer
Ricky_Kwon 0:27fe09e9f405 213 fseek(fp_jpeg, 0, SEEK_SET); // seek back to beginning of file
Ricky_Kwon 0:27fe09e9f405 214 do{
Ricky_Kwon 0:27fe09e9f405 215 memset(buf, 0, sizeof(buf));
Ricky_Kwon 0:27fe09e9f405 216 if(remain_filesize > MAX_SS)
Ricky_Kwon 0:27fe09e9f405 217 send_byte = MAX_SS;
Ricky_Kwon 0:27fe09e9f405 218 else
Ricky_Kwon 0:27fe09e9f405 219 send_byte = remain_filesize;
Ricky_Kwon 0:27fe09e9f405 220 fread (buf, 1, send_byte, fp_jpeg);
Ricky_Kwon 0:27fe09e9f405 221 FTP_DATA_SOCK.send(buf, send_byte);
Ricky_Kwon 0:27fe09e9f405 222 remain_filesize -= send_byte;
Ricky_Kwon 0:27fe09e9f405 223 pc.printf("#");
Ricky_Kwon 0:27fe09e9f405 224 }while(remain_filesize!=0);
Ricky_Kwon 0:27fe09e9f405 225 fclose(fp_jpeg);
Ricky_Kwon 0:27fe09e9f405 226 gDataPutGetStart = false;
Ricky_Kwon 0:27fe09e9f405 227 FTPCommand.Second = s_nocmd;
Ricky_Kwon 0:27fe09e9f405 228 FTP_DATA_SOCK.close();
Ricky_Kwon 0:27fe09e9f405 229 break;
Ricky_Kwon 0:27fe09e9f405 230
Ricky_Kwon 0:27fe09e9f405 231 }//end of FTPCommand.Second switch case
Ricky_Kwon 0:27fe09e9f405 232 }//end of gDataPutGetStart if
Ricky_Kwon 0:27fe09e9f405 233 }//end of while 3
Ricky_Kwon 0:27fe09e9f405 234 }
Dxmanas 6:9f00e2657d78 235 // }
Ricky_Kwon 0:27fe09e9f405 236 }//end of while 1
Ricky_Kwon 0:27fe09e9f405 237 }
Ricky_Kwon 0:27fe09e9f405 238 char* User_Keyboard_MSG(void)
Ricky_Kwon 0:27fe09e9f405 239 {
Ricky_Kwon 0:27fe09e9f405 240 User_Keyboard_MSG_Cnt = 0;
Ricky_Kwon 0:27fe09e9f405 241 memset(gMsgBuf, 0, sizeof(gMsgBuf));
Ricky_Kwon 0:27fe09e9f405 242 do{
Ricky_Kwon 0:27fe09e9f405 243 gMsgBuf[User_Keyboard_MSG_Cnt] = pc.getc();
Ricky_Kwon 0:27fe09e9f405 244 if(gMsgBuf[User_Keyboard_MSG_Cnt]==0x08){
Ricky_Kwon 0:27fe09e9f405 245 User_Keyboard_MSG_Cnt--;
Ricky_Kwon 0:27fe09e9f405 246 }
Ricky_Kwon 0:27fe09e9f405 247 else{
Ricky_Kwon 0:27fe09e9f405 248 User_Keyboard_MSG_Cnt++;
Ricky_Kwon 0:27fe09e9f405 249 }
Ricky_Kwon 0:27fe09e9f405 250 }while(gMsgBuf[User_Keyboard_MSG_Cnt-1]!=0x0d);
Ricky_Kwon 0:27fe09e9f405 251 return gMsgBuf;
Ricky_Kwon 0:27fe09e9f405 252 }
Ricky_Kwon 0:27fe09e9f405 253 int pportc(char * arg)
Ricky_Kwon 0:27fe09e9f405 254 {
Ricky_Kwon 0:27fe09e9f405 255 int i;
Ricky_Kwon 0:27fe09e9f405 256 char* tok=0;
Ricky_Kwon 0:27fe09e9f405 257 strtok(arg,"(");
Ricky_Kwon 0:27fe09e9f405 258 for (i = 0; i < 4; i++)
Ricky_Kwon 0:27fe09e9f405 259 {
Ricky_Kwon 0:27fe09e9f405 260 if(i==0) tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:27fe09e9f405 261 else tok = strtok(NULL,",");
Ricky_Kwon 0:27fe09e9f405 262 ftpServer_data_ip_addr[i] = (uint8_t)atoi(tok);
Ricky_Kwon 0:27fe09e9f405 263 if (!tok){
Ricky_Kwon 0:27fe09e9f405 264 pc.printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:27fe09e9f405 265 return -1;
Ricky_Kwon 0:27fe09e9f405 266 }
Ricky_Kwon 0:27fe09e9f405 267 }
Ricky_Kwon 0:27fe09e9f405 268 remote_port = 0;
Ricky_Kwon 0:27fe09e9f405 269 for (i = 0; i < 2; i++){
Ricky_Kwon 0:27fe09e9f405 270 tok = strtok(NULL,",\r\n");
Ricky_Kwon 0:27fe09e9f405 271 remote_port <<= 8;
Ricky_Kwon 0:27fe09e9f405 272 remote_port += atoi(tok);
Ricky_Kwon 0:27fe09e9f405 273 if (!tok){
Ricky_Kwon 0:27fe09e9f405 274 pc.printf("bad pport : %s\r\n", arg);
Ricky_Kwon 0:27fe09e9f405 275 return -1;
Ricky_Kwon 0:27fe09e9f405 276 }
Ricky_Kwon 0:27fe09e9f405 277 }
Ricky_Kwon 0:27fe09e9f405 278 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);
Ricky_Kwon 0:27fe09e9f405 279 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]);
Ricky_Kwon 0:27fe09e9f405 280 return 0;
Ricky_Kwon 0:27fe09e9f405 281 }
Ricky_Kwon 0:27fe09e9f405 282 void jpeg_callback(char *buf, size_t siz) {
Ricky_Kwon 0:27fe09e9f405 283 for (int i = 0; i < (int)siz; i++) {
Ricky_Kwon 0:27fe09e9f405 284 fprintf(fp_jpeg, "%c", buf[i]);
Ricky_Kwon 0:27fe09e9f405 285 }
Ricky_Kwon 0:27fe09e9f405 286 }
Ricky_Kwon 0:27fe09e9f405 287 void sync(void) {
Ricky_Kwon 0:27fe09e9f405 288 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 0:27fe09e9f405 289
Dxmanas 6:9f00e2657d78 290 // err = camera.sync();
Ricky_Kwon 0:27fe09e9f405 291 if (CameraC328::NoError == err) {
Ricky_Kwon 1:7d428f360a0a 292 printf("[ OK ] : CameraC328::sync\r\n");
Ricky_Kwon 0:27fe09e9f405 293 } else {
Ricky_Kwon 1:7d428f360a0a 294 printf("[FAIL] : CameraC328::sync (Error=%02X)\r\n", (int)err);
Ricky_Kwon 0:27fe09e9f405 295 }
Ricky_Kwon 0:27fe09e9f405 296 }
Ricky_Kwon 0:27fe09e9f405 297 void test_jpeg_snapshot_picture(void) {
Dxmanas 6:9f00e2657d78 298 // CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 0:27fe09e9f405 299
Dxmanas 6:9f00e2657d78 300 //#if (USE_JPEG_HIGH_RESOLUTION==1)
Dxmanas 6:9f00e2657d78 301 // err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution80x64);
Dxmanas 6:9f00e2657d78 302 //#elif (USE_JPEG_HIGH_RESOLUTION==2)
Dxmanas 6:9f00e2657d78 303 // err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128);
Dxmanas 6:9f00e2657d78 304 //#elif (USE_JPEG_HIGH_RESOLUTION==3)
Dxmanas 6:9f00e2657d78 305 // err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution320x240);
Dxmanas 6:9f00e2657d78 306 //#elif (USE_JPEG_HIGH_RESOLUTION==4)
Dxmanas 6:9f00e2657d78 307 // err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480);
Dxmanas 6:9f00e2657d78 308 //#endif
Dxmanas 6:9f00e2657d78 309 // if (CameraC328::NoError == err) {
Dxmanas 6:9f00e2657d78 310 // printf("[ OK ] : CameraC328::init\r\n");
Dxmanas 6:9f00e2657d78 311 // } else {
Dxmanas 6:9f00e2657d78 312 // printf("[FAIL] : CameraC328::init (Error=%02X)\r\n", (int)err);
Dxmanas 6:9f00e2657d78 313 // }
Ricky_Kwon 0:27fe09e9f405 314
Ricky_Kwon 1:7d428f360a0a 315
Ricky_Kwon 1:7d428f360a0a 316 snprintf(fname, sizeof(fname), "/sd/jpss%04d.jpg", fnamecnt);
Ricky_Kwon 1:7d428f360a0a 317 fnamecnt++;
Ricky_Kwon 1:7d428f360a0a 318 for(int i = 0; i < 12; i++){
Ricky_Kwon 1:7d428f360a0a 319 fname_server[0+i] = fname[4+i];
Ricky_Kwon 1:7d428f360a0a 320 }
Ricky_Kwon 1:7d428f360a0a 321 fp_jpeg = fopen(fname, "w");
Ricky_Kwon 0:27fe09e9f405 322
Dxmanas 6:9f00e2657d78 323 // err = camera.getJpegSnapshotPicture(jpeg_callback);
Dxmanas 6:9f00e2657d78 324 // if (CameraC328::NoError == err) {
Dxmanas 6:9f00e2657d78 325 // printf("[ OK ] : CameraC328::getJpegSnapshotPicture\r\n");
Dxmanas 6:9f00e2657d78 326 // } else {
Dxmanas 6:9f00e2657d78 327 // printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err);
Dxmanas 6:9f00e2657d78 328 // }
Ricky_Kwon 0:27fe09e9f405 329
Ricky_Kwon 1:7d428f360a0a 330 fclose(fp_jpeg);
Ricky_Kwon 1:7d428f360a0a 331
Ricky_Kwon 3:55b7af329281 332 }