fg
Dependencies: CameraC328 SDFileSystem WIZnetInterface WizFi310Interface_Legacynew2 mbed-src
Fork of Camera_FTP_WIZwiki-W7500 by
main.cpp@6:9f00e2657d78, 2018-02-08 (annotated)
- Committer:
- Dxmanas
- Date:
- Thu Feb 08 06:28:43 2018 +0000
- Revision:
- 6:9f00e2657d78
- Parent:
- 5:5cc3d57c04f8
qwer
Who changed what in which revision?
User | Revision | Line number | New 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 | } |