Universal Translator

Dependencies:   EthernetNetIf TextLCD mbed PS2 HTTPClient

Committer:
benglish6
Date:
Mon Feb 28 17:37:46 2011 +0000
Revision:
1:5ae213418d04
Parent:
0:c69af1faeb95

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
benglish6 0:c69af1faeb95 1 #include "UnivTrans.h"
benglish6 0:c69af1faeb95 2
benglish6 0:c69af1faeb95 3 static const unsigned char ps2KeyMap[] = {
benglish6 0:c69af1faeb95 4 // 0 1 2 3 4 5 6 7 8 9 A B C D E F
benglish6 0:c69af1faeb95 5 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', '`','\0', // 00-0F
benglish6 0:c69af1faeb95 6 '\0','\0','\0','\0','\0', 'Q', '1','\0','\0','\0', 'Z', 'S', 'A', 'W', '2','\0', // 10-1F
benglish6 0:c69af1faeb95 7 '\0', 'C', 'X', 'D', 'E', '4', '3','\0','\0',' ', 'V', 'F', 'T', 'R', '5','\0', // 20-2F
benglish6 0:c69af1faeb95 8 '\0', 'N', 'B', 'H', 'G', 'Y', '6','\0','\0', '\0', 'M', 'J', 'U', '7', '8','\0', // 30-3F
benglish6 0:c69af1faeb95 9 '\0', ',', 'K', 'I', 'O', '0', '9','\0','\0', '.', '/', 'L', ';', 'P', '-','\0', // 40-4F
benglish6 0:c69af1faeb95 10 '\0','\0', '\'','\0', '[', '=','\0','\0','\0','\0','\0', ']','\0','\\','\0','\0', // 50-5F
benglish6 0:c69af1faeb95 11 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // 60-6F
benglish6 0:c69af1faeb95 12 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // 70-7F
benglish6 0:c69af1faeb95 13 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // 80-8F
benglish6 0:c69af1faeb95 14 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // 90-9F
benglish6 0:c69af1faeb95 15 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // A0-AF
benglish6 0:c69af1faeb95 16 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // B0-BF
benglish6 0:c69af1faeb95 17 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // C0-CF
benglish6 0:c69af1faeb95 18 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // D0-DF
benglish6 0:c69af1faeb95 19 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // E0-EF
benglish6 0:c69af1faeb95 20 '\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0', // F0-FF
benglish6 0:c69af1faeb95 21 };
benglish6 0:c69af1faeb95 22
benglish6 0:c69af1faeb95 23 void checkKeys(PS2Keyboard &ps2kb,char* rowstr) {
benglish6 0:c69af1faeb95 24 static int column = 0;
benglish6 0:c69af1faeb95 25 static int row = 0;
benglish6 0:c69af1faeb95 26 static int selected = true;
benglish6 0:c69af1faeb95 27 static int source = false;
benglish6 0:c69af1faeb95 28 static const char *selsrc="Select Src Lang\n";
benglish6 0:c69af1faeb95 29 static const char *seldest="Select Dest Lang";
benglish6 0:c69af1faeb95 30 static string httpurl = "http://translate.google.com/translate_tts?tl=";
benglish6 0:c69af1faeb95 31 static string httptransurl = " ";//INSERT YOUR WEBSITE HERE!
benglish6 0:c69af1faeb95 32 static string arg = "&q=";
benglish6 0:c69af1faeb95 33 string voiceurl;
benglish6 0:c69af1faeb95 34 string transurl;
benglish6 0:c69af1faeb95 35 static int src=26;
benglish6 0:c69af1faeb95 36 static int dest=37;
benglish6 0:c69af1faeb95 37 string lang;
benglish6 0:c69af1faeb95 38 string translatedText;
benglish6 0:c69af1faeb95 39 static PS2Keyboard::keyboard_event_t evt_kb;
benglish6 0:c69af1faeb95 40 if (ps2kb.processing(&evt_kb)) {
benglish6 0:c69af1faeb95 41 for (int i = 0; i < evt_kb.length; i++) {
benglish6 0:c69af1faeb95 42 if(evt_kb.type == 1) {
benglish6 0:c69af1faeb95 43 if(!selected) {
benglish6 0:c69af1faeb95 44 if (evt_kb.scancode[i] == 0x72) {//down arrow
benglish6 0:c69af1faeb95 45 if (source) src++;
benglish6 0:c69af1faeb95 46 else dest++;
benglish6 0:c69af1faeb95 47 lang = getLang(source?src:dest);
benglish6 0:c69af1faeb95 48 } else if (evt_kb.scancode[i] == 0x75) { //up arrow
benglish6 0:c69af1faeb95 49 if (source && src!=0) src--;
benglish6 0:c69af1faeb95 50 else if (!source && dest!=0) dest--;
benglish6 0:c69af1faeb95 51 lang = getLang(source?src:dest);
benglish6 0:c69af1faeb95 52 } else if(evt_kb.scancode[i] == 0x5A) {
benglish6 0:c69af1faeb95 53 if(source) {
benglish6 0:c69af1faeb95 54 source = false;
benglish6 0:c69af1faeb95 55 lang = getLang(dest);
benglish6 0:c69af1faeb95 56 } else selected = true;
benglish6 0:c69af1faeb95 57 }
benglish6 0:c69af1faeb95 58 if(selected) {
benglish6 0:c69af1faeb95 59 lcd.cls();
benglish6 0:c69af1faeb95 60 voiceurl += httpurl;
benglish6 0:c69af1faeb95 61 voiceurl += getLangCode(dest);
benglish6 0:c69af1faeb95 62 voiceurl += arg;
benglish6 0:c69af1faeb95 63 transurl += httptransurl;
benglish6 0:c69af1faeb95 64 transurl += getLangCode(src);
benglish6 0:c69af1faeb95 65 transurl += "&dest=";
benglish6 0:c69af1faeb95 66 transurl += getLangCode(dest);
benglish6 0:c69af1faeb95 67 transurl += arg;
benglish6 0:c69af1faeb95 68 encodeURL(transurl,rowstr);
benglish6 0:c69af1faeb95 69 printf("%s",transurl.c_str());
benglish6 0:c69af1faeb95 70 HTTPText t;
benglish6 0:c69af1faeb95 71 HTTPResult r = http.get(transurl.c_str(),&t);
benglish6 0:c69af1faeb95 72 if(r==HTTP_OK) {
benglish6 0:c69af1faeb95 73 printf("Result OK\n");
benglish6 0:c69af1faeb95 74 } else {
benglish6 0:c69af1faeb95 75 printf("Error %d\n", r);
benglish6 0:c69af1faeb95 76 }
benglish6 0:c69af1faeb95 77 translatedText=t.get();
benglish6 0:c69af1faeb95 78 encodeURL(voiceurl,translatedText.c_str());
benglish6 0:c69af1faeb95 79 printf("%s",voiceurl.c_str());
benglish6 0:c69af1faeb95 80 HTTPFile f("/sd/alaha.mp3");
benglish6 0:c69af1faeb95 81 r = http.get(voiceurl.c_str(), &f);
benglish6 0:c69af1faeb95 82 if(r==HTTP_OK) {
benglish6 0:c69af1faeb95 83 printf("Result OK\n");
benglish6 0:c69af1faeb95 84 } else {
benglish6 0:c69af1faeb95 85 printf("Error %d\n", r);
benglish6 0:c69af1faeb95 86 }
benglish6 0:c69af1faeb95 87 mp3.play_song(1);
benglish6 0:c69af1faeb95 88 voiceurl.erase();
benglish6 0:c69af1faeb95 89 transurl.erase();
benglish6 0:c69af1faeb95 90 memset(rowstr,0,6*16);
benglish6 0:c69af1faeb95 91 } else {
benglish6 0:c69af1faeb95 92 lcd.cls();
benglish6 0:c69af1faeb95 93 lcd.printf(source?selsrc:seldest);
benglish6 0:c69af1faeb95 94 lcd.printf(lang.c_str());
benglish6 0:c69af1faeb95 95 }
benglish6 0:c69af1faeb95 96 } else {
benglish6 0:c69af1faeb95 97 if (ps2KeyMap[evt_kb.scancode[i]] != '\0'){
benglish6 0:c69af1faeb95 98 if(row == 0){
benglish6 0:c69af1faeb95 99 rowstr[(row*16)+column]=ps2KeyMap[evt_kb.scancode[i]];
benglish6 0:c69af1faeb95 100 if(column > 14) {
benglish6 0:c69af1faeb95 101 column = 0;
benglish6 0:c69af1faeb95 102 row++;
benglish6 0:c69af1faeb95 103 if(row > 6) row = 0;
benglish6 0:c69af1faeb95 104 }
benglish6 0:c69af1faeb95 105 else column++;
benglish6 0:c69af1faeb95 106 lcd.cls();
benglish6 0:c69af1faeb95 107 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 108 if(rowstr[(row*16)+j] != '\0') lcd.printf("%c", rowstr[(row*16)+j]);
benglish6 0:c69af1faeb95 109 if((j+1) == column) lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 110 }
benglish6 0:c69af1faeb95 111 } else {
benglish6 0:c69af1faeb95 112 rowstr[(row*16)+column]=ps2KeyMap[evt_kb.scancode[i]];
benglish6 0:c69af1faeb95 113 if(column > 14) {
benglish6 0:c69af1faeb95 114 column = 0;
benglish6 0:c69af1faeb95 115 row++;
benglish6 0:c69af1faeb95 116 if(row > 6) row = 0;
benglish6 0:c69af1faeb95 117 }
benglish6 0:c69af1faeb95 118 else column++;
benglish6 0:c69af1faeb95 119 lcd.cls();
benglish6 0:c69af1faeb95 120 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 121 if(rowstr[((row-1)*16)+j] != '\0') lcd.printf("%c", rowstr[((row-1)*16)+j]);
benglish6 0:c69af1faeb95 122 if((j+1) == (column+16)) lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 123 }
benglish6 0:c69af1faeb95 124 }
benglish6 0:c69af1faeb95 125 }
benglish6 1:5ae213418d04 126 if (evt_kb.scancode[i] == 0x66) {//backspace deletes a character
benglish6 0:c69af1faeb95 127 if(column > 0) column--;
benglish6 0:c69af1faeb95 128 else {
benglish6 0:c69af1faeb95 129 if (row != 0) {
benglish6 0:c69af1faeb95 130 column = 15;
benglish6 0:c69af1faeb95 131 row--;
benglish6 0:c69af1faeb95 132 }
benglish6 0:c69af1faeb95 133 }
benglish6 0:c69af1faeb95 134 rowstr[(row*16)+column] = '\0';
benglish6 0:c69af1faeb95 135 lcd.cls();
benglish6 0:c69af1faeb95 136 if (row != 0) {
benglish6 0:c69af1faeb95 137 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 138 if(rowstr[((row-1)*16)+j] != '\0') lcd.printf("%c", rowstr[(row-1)*16+j]);
benglish6 0:c69af1faeb95 139 }
benglish6 0:c69af1faeb95 140 } else {
benglish6 0:c69af1faeb95 141 for(int j = 0; j < 32; j++) {
benglish6 1:5ae213418d04 142 if(rowstr[(row*16)+j] != '\0') lcd.printf("%c", rowstr[(row)*16+j]);
benglish6 0:c69af1faeb95 143 }
benglish6 0:c69af1faeb95 144 }
benglish6 0:c69af1faeb95 145 }
benglish6 0:c69af1faeb95 146 if (evt_kb.scancode[i] == 0x5A) {//enter sends the message
benglish6 0:c69af1faeb95 147 selected = false;
benglish6 0:c69af1faeb95 148 source = true;
benglish6 0:c69af1faeb95 149 lang = getLang(src);
benglish6 0:c69af1faeb95 150 lcd.cls();
benglish6 0:c69af1faeb95 151 lcd.printf(selsrc);
benglish6 0:c69af1faeb95 152 lcd.printf(lang.c_str());
benglish6 0:c69af1faeb95 153 row = 0;
benglish6 0:c69af1faeb95 154 column = 0;
benglish6 0:c69af1faeb95 155 return;
benglish6 0:c69af1faeb95 156 }
benglish6 0:c69af1faeb95 157 if (evt_kb.scancode[i] == 0x75) {//up arrow
benglish6 0:c69af1faeb95 158 if(row > 1) {
benglish6 0:c69af1faeb95 159 lcd.cls();
benglish6 0:c69af1faeb95 160 row = row - 1;
benglish6 0:c69af1faeb95 161 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 162 if(rowstr[((row-1)*16)+j] != '\0') lcd.printf("%c", rowstr[((row-1)*16)+j]);
benglish6 0:c69af1faeb95 163 }
benglish6 0:c69af1faeb95 164 lcd.locate(column, 1);
benglish6 0:c69af1faeb95 165 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 166 } else {
benglish6 0:c69af1faeb95 167 if (row == 1) {
benglish6 0:c69af1faeb95 168 row = row - 1;
benglish6 0:c69af1faeb95 169 lcd.locate(column, row);
benglish6 0:c69af1faeb95 170 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 171 }
benglish6 0:c69af1faeb95 172 }
benglish6 0:c69af1faeb95 173
benglish6 0:c69af1faeb95 174 }
benglish6 0:c69af1faeb95 175 if (evt_kb.scancode[i] == 0x72) {//down arrow
benglish6 0:c69af1faeb95 176 if(rowstr[((row+1))+column] != '\0'){
benglish6 0:c69af1faeb95 177 lcd.cls();
benglish6 0:c69af1faeb95 178 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 179 if(rowstr[(row*16)+j] != '\0') lcd.printf("%c", rowstr[(row*16)+j]);
benglish6 0:c69af1faeb95 180 }
benglish6 0:c69af1faeb95 181 row = row + 1;
benglish6 0:c69af1faeb95 182 lcd.locate(column, 1);
benglish6 0:c69af1faeb95 183 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 184 }
benglish6 0:c69af1faeb95 185 }
benglish6 0:c69af1faeb95 186 if (evt_kb.scancode[i] == 0x6B) {//left arrow
benglish6 0:c69af1faeb95 187 if((column !=0)) {
benglish6 0:c69af1faeb95 188 if(row == 0){
benglish6 0:c69af1faeb95 189 column = column - 1;
benglish6 0:c69af1faeb95 190 lcd.cls();
benglish6 0:c69af1faeb95 191 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 192 if(rowstr[(row*16)+j] != '\0') lcd.printf("%c", rowstr[(row*16)+j]);
benglish6 0:c69af1faeb95 193 }
benglish6 0:c69af1faeb95 194 lcd.locate(column, 0);
benglish6 0:c69af1faeb95 195 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 196 } else {
benglish6 0:c69af1faeb95 197 column = column - 1;
benglish6 0:c69af1faeb95 198 lcd.cls();
benglish6 0:c69af1faeb95 199 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 200 if(rowstr[((row-1)*16)+j] != '\0') lcd.printf("%c", rowstr[((row-1)*16)+j]);
benglish6 0:c69af1faeb95 201 }
benglish6 0:c69af1faeb95 202 lcd.locate(column, 1);
benglish6 0:c69af1faeb95 203 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 204 }
benglish6 0:c69af1faeb95 205 }
benglish6 0:c69af1faeb95 206 }
benglish6 0:c69af1faeb95 207 if (evt_kb.scancode[i] == 0x74) {//right arrow
benglish6 0:c69af1faeb95 208 if(rowstr[(row*16)+column+1] != '\0'){
benglish6 0:c69af1faeb95 209 if(column != 15){
benglish6 0:c69af1faeb95 210 column = column + 1;
benglish6 0:c69af1faeb95 211 if (row == 0){
benglish6 0:c69af1faeb95 212 lcd.cls();
benglish6 0:c69af1faeb95 213 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 214 if(rowstr[(row*16)+j] != '\0') lcd.printf("%c", rowstr[(row*16)+j]);
benglish6 0:c69af1faeb95 215 }
benglish6 0:c69af1faeb95 216 lcd.locate(column, 0);
benglish6 0:c69af1faeb95 217 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 218 } else {
benglish6 0:c69af1faeb95 219 lcd.cls();
benglish6 0:c69af1faeb95 220 for(int j = 0; j < 32; j++) {
benglish6 0:c69af1faeb95 221 if(rowstr[((row-1)*16)+j] != '\0') lcd.printf("%c", rowstr[((row-1)*16)+j]);
benglish6 0:c69af1faeb95 222 }
benglish6 0:c69af1faeb95 223 lcd.locate(column, 1);
benglish6 0:c69af1faeb95 224 lcd.printf("%c", '\0');
benglish6 0:c69af1faeb95 225 }
benglish6 0:c69af1faeb95 226 }
benglish6 0:c69af1faeb95 227 }
benglish6 0:c69af1faeb95 228 }
benglish6 0:c69af1faeb95 229
benglish6 0:c69af1faeb95 230 if (evt_kb.scancode[i] == 0x71) {//delete key will clear everything
benglish6 0:c69af1faeb95 231 memset(rowstr,0,6*16);
benglish6 0:c69af1faeb95 232 lcd.cls();
benglish6 0:c69af1faeb95 233 row = 0;
benglish6 0:c69af1faeb95 234 column = 0;
benglish6 0:c69af1faeb95 235 }
benglish6 0:c69af1faeb95 236 }
benglish6 0:c69af1faeb95 237 }
benglish6 0:c69af1faeb95 238 }
benglish6 0:c69af1faeb95 239 }
benglish6 0:c69af1faeb95 240 }