File Downloader to USB msc, sd card and local directory

Dependencies:   EthernetNetIf FatFileSystem HTTPClient MSCFileSystem PS2 SDFileSystem TextLCD mbed

Fork of Yariyol by Es YIL

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 #include "EthernetNetIf.h"
00004 #include "HTTPClient.h"
00005 #include "SDFileSystem.h"
00006 #include "MSCFileSystem.h"
00007 #include "PS2Keyboard.h"
00008 #include <stdio.h>
00009 #include <string.h>
00010 #include <stdbool.h>
00011 
00012 DigitalOut myled(LED1);
00013 MSCFileSystem fs("usb");
00014 LocalFileSystem local("local");
00015 SDFileSystem sd(p5, p6, p7, p8, "sd"); //p9: SD present; p8: CS
00016 
00017 TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7
00018 PS2Keyboard ps2kb(p12, p11); //clk, dat 
00019 Serial pc(USBTX, USBRX); // define transmitter and receiver
00020 EthernetNetIf eth;
00021 HTTPClient http;
00022 
00023 int main() {
00024     
00025     //Initialization
00026     int j = 0;
00027     int k = 0;
00028     bool capsLock = false;
00029     
00030     PS2Keyboard::keyboard_event_t evt_kb;
00031     
00032     char ac[100] = "";
00033     
00034     printf("Setting up...\n");
00035     EthernetErr ethErr = eth.setup();
00036     if(ethErr){
00037         printf("Error %d in setup.\n", ethErr);
00038         return -1;
00039     }
00040     printf("Setup OK\n");
00041     lcd.printf("Setup OK");
00042     wait(2);
00043     
00044     /*
00045     for (int i=0; i<101; i++){
00046         abc = pc.getc();
00047         if (abc == 0x08){
00048             ac[i-1] = 0x00;
00049             i = i-2;
00050             lcd.cls();
00051             lcd.printf(&ac[0]);  
00052         }    
00053         else if (abc == 0x0D){
00054             lcd.cls();
00055             lcd.printf("Enter, dosya indiriliyor!");
00056             i=150;
00057         }
00058         else if (abc == 0xFC){
00059             ac[i] = '~';
00060             lcd.locate(0,0);
00061             lcd.printf(&ac[0]); 
00062         } 
00063         else if (abc == 0xF6){
00064             ac[i] = '%';
00065             lcd.locate(0,0);
00066             lcd.printf(&ac[0]); 
00067         } 
00068         else{
00069             ac[i] = abc; 
00070             lcd.locate(0,0);
00071             lcd.printf(&ac[0]);  
00072         }
00073          
00074     }*/
00075     char *slash;
00076     char *point;
00077 
00078     while(1){
00079         lcd.cls();
00080         lcd.printf("Waiting for     Input");
00081         while (k<200) {
00082             if (ps2kb.processing(&evt_kb)) {
00083                 lcd.cls();
00084 
00085                 if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x0E){ ac[j]='/'; lcd.printf(&ac[0]); j++;}
00086                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x16){ ac[j]='1'; lcd.printf(&ac[0]); j++;}
00087                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1E){  ac[j]='2'; lcd.printf(&ac[0]); j++;}
00088                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x26){  ac[j]='3'; lcd.printf(&ac[0]); j++;}
00089                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x25){  ac[j]='4'; lcd.printf(&ac[0]); j++;}
00090                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2E){  ac[j]='5'; lcd.printf(&ac[0]); j++;}
00091                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x36){  ac[j]='6'; lcd.printf(&ac[0]); j++;}
00092                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3D){  ac[j]='7'; lcd.printf(&ac[0]); j++;}
00093                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3E){  ac[j]='8'; lcd.printf(&ac[0]); j++;}
00094                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x46){  ac[j]='9'; lcd.printf(&ac[0]); j++;}
00095                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x45){  ac[j]='0'; lcd.printf(&ac[0]); j++;}
00096                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4E){  ac[j]='*'; lcd.printf(&ac[0]); j++;}
00097                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x5D){  ac[j]=','; lcd.printf(&ac[0]); j++;}
00098                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x29){  ac[j]=' '; lcd.printf(&ac[0]); j++;}
00099                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x79){  ac[j]='+'; lcd.printf(&ac[0]); j++;}
00100                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x49){  ac[j]=';'; lcd.printf(&ac[0]); j++;}
00101                 else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x66){  ac[j-1] = 0x00; lcd.cls(); lcd.printf(&ac[0]); j--;}
00102                 
00103                 else if(capsLock == true){
00104                     if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x15){  ac[j]='Q'; lcd.printf(&ac[0]); j++;}
00105                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1D){  ac[j]='W'; lcd.printf(&ac[0]); j++;}
00106                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x24){  ac[j]='E'; lcd.printf(&ac[0]); j++;}
00107                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2D){  ac[j]='R'; lcd.printf(&ac[0]); j++;}
00108                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2C){  ac[j]='T'; lcd.printf(&ac[0]); j++;}
00109                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x35){  ac[j]='Y'; lcd.printf(&ac[0]); j++;}
00110                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3C){  ac[j]='U'; lcd.printf(&ac[0]); j++;}
00111                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x43){  ac[j]='I'; lcd.printf(&ac[0]); j++;}
00112                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x44){  ac[j]='O'; lcd.printf(&ac[0]); j++;}
00113                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4D){  ac[j]='P'; lcd.printf(&ac[0]); j++;}
00114                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x5B){  ac[j]='~'; lcd.printf(&ac[0]); j++;}
00115                     
00116                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1C){  ac[j]='A'; lcd.printf(&ac[0]); j++;}
00117                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1B){  ac[j]='S'; lcd.printf(&ac[0]); j++;}
00118                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x23){  ac[j]='D'; lcd.printf(&ac[0]); j++;}
00119                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2B){  ac[j]='F'; lcd.printf(&ac[0]); j++;}
00120                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x34){  ac[j]='G'; lcd.printf(&ac[0]); j++;}
00121                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x33){  ac[j]='H'; lcd.printf(&ac[0]); j++;}
00122                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3B){  ac[j]='J'; lcd.printf(&ac[0]); j++;}
00123                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x42){  ac[j]='K'; lcd.printf(&ac[0]); j++;}
00124                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4B){  ac[j]='L'; lcd.printf(&ac[0]); j++;}
00125                     
00126                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1A){  ac[j]='Z'; lcd.printf(&ac[0]); j++;}
00127                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x22){  ac[j]='X'; lcd.printf(&ac[0]); j++;}
00128                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x21){  ac[j]='C'; lcd.printf(&ac[0]); j++;}
00129                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2A){  ac[j]='V'; lcd.printf(&ac[0]); j++;}
00130                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x32){  ac[j]='B'; lcd.printf(&ac[0]); j++;}
00131                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x31){  ac[j]='N'; lcd.printf(&ac[0]); j++;}
00132                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3A){  ac[j]='M'; lcd.printf(&ac[0]); j++;}
00133                     
00134                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x58){  myled = 0; capsLock = false; lcd.printf(&ac[0]);}
00135                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4A){  ac[j]=':'; lcd.printf(&ac[0]); j++;}
00136                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x5A){  lcd.printf("Downloading..."); k=201;}
00137                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x55){  ac[j]='_'; lcd.printf(&ac[0]); j++;}
00138                 }
00139                 else if(capsLock == false){
00140                     if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x15){  ac[j]='q'; lcd.printf(&ac[0]); j++;}
00141                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1D){  ac[j]='w'; lcd.printf(&ac[0]); j++;}
00142                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x24){  ac[j]='e'; lcd.printf(&ac[0]); j++;}
00143                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2D){  ac[j]='r'; lcd.printf(&ac[0]); j++;}
00144                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2C){  ac[j]='t'; lcd.printf(&ac[0]); j++;}
00145                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x35){  ac[j]='y'; lcd.printf(&ac[0]); j++;}
00146                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3C){  ac[j]='u'; lcd.printf(&ac[0]); j++;}
00147                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x43){  ac[j]='i'; lcd.printf(&ac[0]); j++;}
00148                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x44){  ac[j]='o'; lcd.printf(&ac[0]); j++;}
00149                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4D){  ac[j]='p'; lcd.printf(&ac[0]); j++;}
00150                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x5B){  ac[j]='~'; lcd.printf(&ac[0]); j++;}
00151                     
00152                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1C){  ac[j]='a'; lcd.printf(&ac[0]); j++;}
00153                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1B){  ac[j]='s'; lcd.printf(&ac[0]); j++;}
00154                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x23){  ac[j]='d'; lcd.printf(&ac[0]); j++;}
00155                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2B){  ac[j]='f'; lcd.printf(&ac[0]); j++;}
00156                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x34){  ac[j]='g'; lcd.printf(&ac[0]); j++;}
00157                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x33){  ac[j]='h'; lcd.printf(&ac[0]); j++;}
00158                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3B){  ac[j]='j'; lcd.printf(&ac[0]); j++;}
00159                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x42){  ac[j]='k'; lcd.printf(&ac[0]); j++;}
00160                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4B){  ac[j]='l'; lcd.printf(&ac[0]); j++;}
00161                     
00162                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x1A){  ac[j]='z'; lcd.printf(&ac[0]); j++;}
00163                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x22){  ac[j]='x'; lcd.printf(&ac[0]); j++;}
00164                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x21){  ac[j]='c'; lcd.printf(&ac[0]); j++;}
00165                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x2A){  ac[j]='v'; lcd.printf(&ac[0]); j++;}
00166                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x32){  ac[j]='b'; lcd.printf(&ac[0]); j++;}
00167                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x31){  ac[j]='n'; lcd.printf(&ac[0]); j++;}
00168                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x3A){  ac[j]='m'; lcd.printf(&ac[0]); j++;}
00169                     
00170                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x58){  myled = 1; capsLock = true; lcd.printf(&ac[0]);}
00171                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x4A){  ac[j]='.'; lcd.printf(&ac[0]); j++;}
00172                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x5A){  lcd.printf("Downloading..."); k=201;}
00173                     else if(evt_kb.scancode[0]==0xF0 && evt_kb.scancode[1]==0x55){  ac[j]='-'; lcd.printf(&ac[0]); j++;}
00174                 }
00175                 else{
00176                     //lcd.printf(&ac[0]);
00177                 }
00178             }
00179         }
00180         
00181         //Dividing file extension and name
00182         slash = strrchr(ac,'/');
00183         int c = (int)(slash - ac);
00184         point = strrchr(ac,'.');
00185         int d = (int)(point - ac);
00186         
00187         //For Debugging
00188         pc.printf("%d  \n", c);
00189         pc.printf("%d  \n", d);
00190         
00191         //Setting a file name and file path
00192         int fileNameLength=strlen(ac)-c+4;
00193         char fileName[fileNameLength];
00194         fileName[0]='/';
00195         fileName[1]='u';
00196         fileName[2]='s';
00197         fileName[3]='b';
00198         fileName[4]='/';
00199         
00200         pc.printf("%d  \n", strlen(ac));
00201         for(int i = 0; i<strlen(ac)-c+1; i++){
00202             fileName[i+5] = ac[i+c+1];
00203             pc.printf(&ac[i+c+1]);
00204         }
00205         
00206         pc.printf(fileName);
00207         
00208         pc.printf(ac);
00209 
00210         HTTPFile f(fileName); //Creates a file name with its path by using FAT File System
00211         
00212         HTTPResult r = http.get(&ac[0], &f);
00213         
00214         if(r==HTTP_OK){
00215           printf("Result OK\n"); 
00216           lcd.cls();
00217           lcd.printf("File is downloaded!");
00218         }
00219         else{
00220           printf("Error %d\n", r);
00221           lcd.cls();
00222           lcd.printf("File is not downloaded!");
00223         }
00224         for(int m=0; m < 100; m++){
00225             ac[m]=0x00;
00226         }
00227         wait(5);
00228         k=0;
00229         j=0;
00230         
00231     }
00232 }
00233