A talking braille-input text message device!!

Dependencies:   Braille_In PinDetect mbed

Committer:
aganger3
Date:
Fri Oct 12 18:05:42 2012 +0000
Revision:
1:4e1b66d0799f
Parent:
0:c79379695e18
Changed title in comment;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aganger3 1:4e1b66d0799f 1 //Talking GSM Braille-Input SMS
aganger3 0:c79379695e18 2
aganger3 0:c79379695e18 3 #include "mbed.h"
aganger3 0:c79379695e18 4 #include "MODSERIAL.h"
aganger3 0:c79379695e18 5 #include <math.h>
aganger3 0:c79379695e18 6 #include <iostream>
aganger3 0:c79379695e18 7 #include <string>
aganger3 0:c79379695e18 8 #include <stdlib.h>
aganger3 0:c79379695e18 9 #include <ctype.h>
aganger3 0:c79379695e18 10 #include "Braille_In.h"
aganger3 0:c79379695e18 11 #include "PinDetect.h"
aganger3 0:c79379695e18 12 #define MESSAGE_BUFFER_SIZE 1024
aganger3 0:c79379695e18 13 using namespace std;
aganger3 0:c79379695e18 14
aganger3 0:c79379695e18 15 // OPTIONAL SETTINGS
aganger3 0:c79379695e18 16
aganger3 0:c79379695e18 17 int SMSinterval = 15; //Send a SMS Vote once every n seconds
aganger3 0:c79379695e18 18 string phoneNumber = "16783503079"; //Phone Number to send SMS Votes
aganger3 0:c79379695e18 19 string bodyText = "Buzz"; //Message to send in vote
aganger3 0:c79379695e18 20
aganger3 0:c79379695e18 21 //END OF OPTIONAL SETTINGS
aganger3 0:c79379695e18 22
aganger3 0:c79379695e18 23
aganger3 0:c79379695e18 24 //MODSERIAL gsm(p28,p27);
aganger3 0:c79379695e18 25 //Serial pc(USBTX, USBRX); // PC Virtual Serial Port over USB
aganger3 0:c79379695e18 26
aganger3 0:c79379695e18 27 MODSERIAL gsm(USBTX,USBRX);
aganger3 0:c79379695e18 28 MODSERIAL pc(p28, p27);
aganger3 0:c79379695e18 29 Serial speakjet(p13,p14);
aganger3 0:c79379695e18 30 DigitalOut led1(LED1);
aganger3 0:c79379695e18 31 DigitalOut led2(LED2);
aganger3 0:c79379695e18 32 DigitalOut led3(LED3);
aganger3 0:c79379695e18 33 DigitalOut led4(LED4);
aganger3 0:c79379695e18 34
aganger3 0:c79379695e18 35 DigitalOut dot1LED(p5);
aganger3 0:c79379695e18 36 DigitalOut dot2LED(p26);
aganger3 0:c79379695e18 37 DigitalOut dot3LED(p25);
aganger3 0:c79379695e18 38 DigitalOut dot4LED(p30);
aganger3 0:c79379695e18 39 DigitalOut dot5LED(p29);
aganger3 0:c79379695e18 40 DigitalOut dot6LED(p6);
aganger3 0:c79379695e18 41
aganger3 0:c79379695e18 42 BrailleInput bparse;
aganger3 0:c79379695e18 43 InterruptIn dot1(p15);
aganger3 0:c79379695e18 44 InterruptIn dot2(p16);
aganger3 0:c79379695e18 45 InterruptIn dot3(p17);
aganger3 0:c79379695e18 46 InterruptIn dot4(p18);
aganger3 0:c79379695e18 47 InterruptIn dot5(p23);
aganger3 0:c79379695e18 48 InterruptIn dot6(p24);
aganger3 0:c79379695e18 49 PinDetect dotSp(p21);
aganger3 0:c79379695e18 50 char ExampleSentance[] = { 0x20, 0x3, 0x17, 0x1, 0xA, 0x7, 0x7, 0x11, 127, 0x1E, 0x11, 0x2D,0x1E, 127, 0xA, 0xE, 127, 0x1, 0x3A, 0x11, 0x0E, 0x15, 0xD, 0x11, 0x16, '\0' };
aganger3 0:c79379695e18 51 PinDetect SendSMS(p22);
aganger3 0:c79379695e18 52
aganger3 0:c79379695e18 53 int SMScount = 0;
aganger3 0:c79379695e18 54 int timeCount;
aganger3 0:c79379695e18 55 int statusMessage = 0;
aganger3 0:c79379695e18 56 int compareResult = 0;
aganger3 0:c79379695e18 57 int messageResponse = 0;
aganger3 0:c79379695e18 58 int mpResult = 0;
aganger3 0:c79379695e18 59 bool timeOrDate = 0;
aganger3 0:c79379695e18 60 bool statusMessageAlert = 0;
aganger3 0:c79379695e18 61 bool statusMessageInterrupt = 0;
aganger3 0:c79379695e18 62 char messageBufferIncoming[MESSAGE_BUFFER_SIZE];
aganger3 0:c79379695e18 63 char messageBufferOutgoing[MESSAGE_BUFFER_SIZE];
aganger3 0:c79379695e18 64 bool messageReceived;
aganger3 0:c79379695e18 65
aganger3 0:c79379695e18 66 char braillein[256];
aganger3 0:c79379695e18 67 char buf[40];
aganger3 0:c79379695e18 68 char buf1[40];
aganger3 0:c79379695e18 69 char buf2= 0x1A; //CTRL+Z, Substitute character
aganger3 0:c79379695e18 70
aganger3 0:c79379695e18 71 bool sendMsgDesired=false;
aganger3 0:c79379695e18 72 bool InputDone=false;
aganger3 0:c79379695e18 73 bool SMS_Rcv=false;
aganger3 0:c79379695e18 74 bool SMS_Header_Rcv=false;
aganger3 0:c79379695e18 75 int SMS_Rcv_loc=0;
aganger3 0:c79379695e18 76 char paranoidWasteBuf[25];
aganger3 0:c79379695e18 77 char messageHeader[400];
aganger3 0:c79379695e18 78
aganger3 0:c79379695e18 79 char currentBrailleChar=0;
aganger3 0:c79379695e18 80 string BrailleIn=" ";
aganger3 0:c79379695e18 81
aganger3 0:c79379695e18 82 void ledCellRefresh()
aganger3 0:c79379695e18 83 {
aganger3 0:c79379695e18 84 dot1LED=currentBrailleChar & 0x1;
aganger3 0:c79379695e18 85 dot2LED=currentBrailleChar & 0x2;
aganger3 0:c79379695e18 86 dot3LED=currentBrailleChar & 0x4;
aganger3 0:c79379695e18 87 dot4LED=currentBrailleChar & 0x8;
aganger3 0:c79379695e18 88 dot5LED=currentBrailleChar & 0x10;
aganger3 0:c79379695e18 89 dot6LED=currentBrailleChar & 0x20;
aganger3 0:c79379695e18 90 }
aganger3 0:c79379695e18 91
aganger3 0:c79379695e18 92 void setLEDs(int in)
aganger3 0:c79379695e18 93 {
aganger3 0:c79379695e18 94 switch (in){
aganger3 0:c79379695e18 95 case 1:
aganger3 0:c79379695e18 96 led1=0; led2=0; led3=0; led4=1;
aganger3 0:c79379695e18 97 break;
aganger3 0:c79379695e18 98 case 2:
aganger3 0:c79379695e18 99 led1=0; led2=0; led3=1; led4=0;
aganger3 0:c79379695e18 100 break;
aganger3 0:c79379695e18 101 case 3:
aganger3 0:c79379695e18 102 led1=0; led2=0; led3=1; led4=1;
aganger3 0:c79379695e18 103 break;
aganger3 0:c79379695e18 104 case 4:
aganger3 0:c79379695e18 105 led1=0; led2=1; led3=0; led4=0;
aganger3 0:c79379695e18 106 break;
aganger3 0:c79379695e18 107 case 5:
aganger3 0:c79379695e18 108 led1=0; led2=1; led3=0; led4=1;
aganger3 0:c79379695e18 109 break;
aganger3 0:c79379695e18 110 case 6:
aganger3 0:c79379695e18 111 led1=0; led2=1; led3=1; led4=0;
aganger3 0:c79379695e18 112 break;
aganger3 0:c79379695e18 113 case 7:
aganger3 0:c79379695e18 114 led1=0; led2=1; led3=1; led4=1;
aganger3 0:c79379695e18 115 break;
aganger3 0:c79379695e18 116 case 8:
aganger3 0:c79379695e18 117 led1=1; led2=0; led3=0; led4=0;
aganger3 0:c79379695e18 118 break;
aganger3 0:c79379695e18 119 case 9:
aganger3 0:c79379695e18 120 led1=1; led2=0; led3=0; led4=1;
aganger3 0:c79379695e18 121 break;
aganger3 0:c79379695e18 122 default:
aganger3 0:c79379695e18 123 led1=0; led2=0; led3=0; led4=0;
aganger3 0:c79379695e18 124 }
aganger3 0:c79379695e18 125 ledCellRefresh();
aganger3 0:c79379695e18 126 }
aganger3 0:c79379695e18 127
aganger3 0:c79379695e18 128
aganger3 0:c79379695e18 129
aganger3 0:c79379695e18 130
aganger3 0:c79379695e18 131 void d1(){ currentBrailleChar = currentBrailleChar | 0x01; setLEDs(1);}
aganger3 0:c79379695e18 132 void d2(){ currentBrailleChar = currentBrailleChar | 0x02; setLEDs(2);}
aganger3 0:c79379695e18 133 void d3(){ currentBrailleChar = currentBrailleChar | 0x04; setLEDs(3);}
aganger3 0:c79379695e18 134 void d4(){ currentBrailleChar = currentBrailleChar | 0x08; setLEDs(4);}
aganger3 0:c79379695e18 135 void d5(){ currentBrailleChar = currentBrailleChar | 0x10; setLEDs(5);}
aganger3 0:c79379695e18 136 void d6(){ currentBrailleChar = currentBrailleChar | 0x20; setLEDs(6);}
aganger3 0:c79379695e18 137 void dSp(){
aganger3 0:c79379695e18 138 if (currentBrailleChar==0) currentBrailleChar=127;
aganger3 0:c79379695e18 139 BrailleIn+=currentBrailleChar;
aganger3 0:c79379695e18 140 currentBrailleChar=0;
aganger3 0:c79379695e18 141 setLEDs(7);
aganger3 0:c79379695e18 142 }
aganger3 0:c79379695e18 143 void select_SMS_Send() { sendMsgDesired=true; setLEDs(8); }
aganger3 0:c79379695e18 144 void select_SMS_Held() { InputDone=true; BrailleIn+=currentBrailleChar; currentBrailleChar=0;setLEDs(9);}
aganger3 0:c79379695e18 145
aganger3 0:c79379695e18 146
aganger3 0:c79379695e18 147 string extract_first_num(string in)
aganger3 0:c79379695e18 148 {
aganger3 0:c79379695e18 149 int firstnum = in.find_first_of("123456789");
aganger3 0:c79379695e18 150 string out="";
aganger3 0:c79379695e18 151 while ( isdigit( in[firstnum] ) )
aganger3 0:c79379695e18 152 {
aganger3 0:c79379695e18 153 out+=in[firstnum];
aganger3 0:c79379695e18 154 firstnum++;
aganger3 0:c79379695e18 155 }
aganger3 0:c79379695e18 156 return out;
aganger3 0:c79379695e18 157 }
aganger3 0:c79379695e18 158
aganger3 0:c79379695e18 159 string getBrailleInput()
aganger3 0:c79379695e18 160 {
aganger3 0:c79379695e18 161 string BrailleOut = bparse.translateBraille(BrailleIn.c_str(),BrailleIn.length());
aganger3 0:c79379695e18 162 pc.printf("getBrailleInput\t %s\n",BrailleOut.c_str());
aganger3 0:c79379695e18 163 return BrailleOut;
aganger3 0:c79379695e18 164 }
aganger3 0:c79379695e18 165
aganger3 0:c79379695e18 166 string Braille_Letters_Numbers(string in)
aganger3 0:c79379695e18 167 {
aganger3 0:c79379695e18 168 string out = in;
aganger3 0:c79379695e18 169 char c,d;
aganger3 0:c79379695e18 170 pc.printf("Braille_Letters_Numbers %s\n",in.c_str());
aganger3 0:c79379695e18 171 for (int i=0; i<in.length()-1; i++)
aganger3 0:c79379695e18 172 {
aganger3 0:c79379695e18 173 c = in[i];
aganger3 0:c79379695e18 174 switch (c){
aganger3 0:c79379695e18 175 case 'a':
aganger3 0:c79379695e18 176 d='1';
aganger3 0:c79379695e18 177 break;
aganger3 0:c79379695e18 178 case 'b':
aganger3 0:c79379695e18 179 d='2';
aganger3 0:c79379695e18 180 break;
aganger3 0:c79379695e18 181 case 'c':
aganger3 0:c79379695e18 182 d='3';
aganger3 0:c79379695e18 183 break;
aganger3 0:c79379695e18 184 case 'd':
aganger3 0:c79379695e18 185 d='4';
aganger3 0:c79379695e18 186 break;
aganger3 0:c79379695e18 187 case 'e':
aganger3 0:c79379695e18 188 d='5';
aganger3 0:c79379695e18 189 break;
aganger3 0:c79379695e18 190 case 'f':
aganger3 0:c79379695e18 191 d='6';
aganger3 0:c79379695e18 192 break;
aganger3 0:c79379695e18 193 case 'g':
aganger3 0:c79379695e18 194 d='7';
aganger3 0:c79379695e18 195 break;
aganger3 0:c79379695e18 196 case 'h':
aganger3 0:c79379695e18 197 d='8';
aganger3 0:c79379695e18 198 break;
aganger3 0:c79379695e18 199 case 'i':
aganger3 0:c79379695e18 200 d='9';
aganger3 0:c79379695e18 201 break;
aganger3 0:c79379695e18 202 case 'j':
aganger3 0:c79379695e18 203 d='0';
aganger3 0:c79379695e18 204 break;
aganger3 0:c79379695e18 205 }
aganger3 0:c79379695e18 206
aganger3 0:c79379695e18 207 out[i]=d;
aganger3 0:c79379695e18 208
aganger3 0:c79379695e18 209 }
aganger3 0:c79379695e18 210 out[in.length()-1]='\0';
aganger3 0:c79379695e18 211 pc.printf(out.c_str());
aganger3 0:c79379695e18 212 return out;
aganger3 0:c79379695e18 213 }
aganger3 0:c79379695e18 214
aganger3 0:c79379695e18 215
aganger3 0:c79379695e18 216 void speak(string input)
aganger3 0:c79379695e18 217 {
aganger3 0:c79379695e18 218 //stub to be replaced w/ speakjet code
aganger3 0:c79379695e18 219 speakjet.printf("\t%s\n",input);
aganger3 0:c79379695e18 220 //ctrl.printf("%s\n",input);
aganger3 0:c79379695e18 221
aganger3 0:c79379695e18 222 }
aganger3 0:c79379695e18 223
aganger3 0:c79379695e18 224
aganger3 0:c79379695e18 225 void messageReceive(MODSERIAL_IRQ_INFO *q) {
aganger3 0:c79379695e18 226 MODSERIAL *sys = q->serial;
aganger3 0:c79379695e18 227
aganger3 0:c79379695e18 228 sys->move(messageBufferIncoming, MESSAGE_BUFFER_SIZE);
aganger3 0:c79379695e18 229
aganger3 0:c79379695e18 230 messageReceived = true;
aganger3 0:c79379695e18 231 return;
aganger3 0:c79379695e18 232 }
aganger3 0:c79379695e18 233
aganger3 0:c79379695e18 234 int messageProcess(void) {
aganger3 0:c79379695e18 235 string msgbufstr(messageBufferIncoming);
aganger3 0:c79379695e18 236 string temp;
aganger3 0:c79379695e18 237
aganger3 0:c79379695e18 238 if (!strncmp(messageBufferIncoming, "+CMTI:",sizeof("+CMTI:")-1))
aganger3 0:c79379695e18 239 {
aganger3 0:c79379695e18 240 SMS_Rcv=true;
aganger3 0:c79379695e18 241 temp = extract_first_num(msgbufstr);
aganger3 0:c79379695e18 242 SMS_Rcv_loc = atoi(temp.c_str());
aganger3 0:c79379695e18 243
aganger3 0:c79379695e18 244 }
aganger3 0:c79379695e18 245
aganger3 0:c79379695e18 246
aganger3 0:c79379695e18 247
aganger3 0:c79379695e18 248
aganger3 0:c79379695e18 249
aganger3 0:c79379695e18 250 if (!strncmp(messageBufferIncoming, "OK", sizeof("OK")-1)) mpResult = 1;
aganger3 0:c79379695e18 251 else if (!strncmp(messageBufferIncoming, "ERROR", sizeof("ERROR")-1)) mpResult = 2;
aganger3 0:c79379695e18 252 else mpResult = 1;
aganger3 0:c79379695e18 253
aganger3 0:c79379695e18 254 pc.printf("%s\r\n", messageBufferIncoming);
aganger3 0:c79379695e18 255 gsm.rxBufferFlush(); //Flush the Buffer
aganger3 0:c79379695e18 256 messageReceived = false;
aganger3 0:c79379695e18 257 return mpResult;
aganger3 0:c79379695e18 258 }
aganger3 0:c79379695e18 259
aganger3 0:c79379695e18 260 void send_SMS() {
aganger3 0:c79379695e18 261 //Send SMS
aganger3 0:c79379695e18 262
aganger3 0:c79379695e18 263 gsm.printf("AT+CMGS=\"%s\"\r\n", phoneNumber);
aganger3 0:c79379695e18 264 wait(.5);
aganger3 0:c79379695e18 265 gsm.printf("%s%c\r\n", bodyText, buf2);
aganger3 0:c79379695e18 266 wait(.5);
aganger3 0:c79379695e18 267
aganger3 0:c79379695e18 268 if (messageProcess()==1) {
aganger3 0:c79379695e18 269 statusMessageAlert = 1;
aganger3 0:c79379695e18 270 statusMessage = 5;
aganger3 0:c79379695e18 271 SMScount = SMScount + 1;
aganger3 0:c79379695e18 272 pc.printf("SMS sent: %d\r\n", SMScount);
aganger3 0:c79379695e18 273 } else {
aganger3 0:c79379695e18 274 statusMessageAlert = 1;
aganger3 0:c79379695e18 275 statusMessage = 7; //This value will also force a auto re-send
aganger3 0:c79379695e18 276 pc.printf("SMS send failed\r\n");
aganger3 0:c79379695e18 277 }
aganger3 0:c79379695e18 278 }
aganger3 0:c79379695e18 279
aganger3 0:c79379695e18 280
aganger3 0:c79379695e18 281
aganger3 0:c79379695e18 282 void RetreiveSMS(int smsLoc)
aganger3 0:c79379695e18 283 {
aganger3 0:c79379695e18 284 char * messageHeader2;
aganger3 0:c79379695e18 285 char command[20];
aganger3 0:c79379695e18 286 gsm.autoDetectChar('\a');
aganger3 0:c79379695e18 287 wait(.5);
aganger3 0:c79379695e18 288 sprintf(command,"AT+CMGR=%d\r\n",smsLoc);
aganger3 0:c79379695e18 289 gsm.printf(command);
aganger3 0:c79379695e18 290 wait(2);
aganger3 0:c79379695e18 291 int i=0;
aganger3 0:c79379695e18 292 while(gsm.readable())
aganger3 0:c79379695e18 293 {
aganger3 0:c79379695e18 294 messageHeader[i]=gsm.getc();
aganger3 0:c79379695e18 295 i++;
aganger3 0:c79379695e18 296
aganger3 0:c79379695e18 297
aganger3 0:c79379695e18 298
aganger3 0:c79379695e18 299 }
aganger3 0:c79379695e18 300 messageHeader[i]='\0';
aganger3 0:c79379695e18 301
aganger3 0:c79379695e18 302
aganger3 0:c79379695e18 303 wait(.5);
aganger3 0:c79379695e18 304 sprintf(command,"AT+CMGD=%d\r\n",smsLoc);
aganger3 0:c79379695e18 305 gsm.printf(command);
aganger3 0:c79379695e18 306 wait(.5);
aganger3 0:c79379695e18 307 gsm.rxBufferFlush();
aganger3 0:c79379695e18 308 wait(0.2);
aganger3 0:c79379695e18 309
aganger3 0:c79379695e18 310 SMS_Rcv=false;
aganger3 0:c79379695e18 311 SMS_Header_Rcv=false;
aganger3 0:c79379695e18 312
aganger3 0:c79379695e18 313 gsm.autoDetectChar('\n');
aganger3 0:c79379695e18 314 wait(1);
aganger3 0:c79379695e18 315
aganger3 0:c79379695e18 316 messageHeader2=strtok(messageHeader,"\n");
aganger3 0:c79379695e18 317 //under here getting SMS header
aganger3 0:c79379695e18 318 messageHeader2=strtok(NULL,"\n");
aganger3 0:c79379695e18 319 string SMS_Hdr(messageHeader2);
aganger3 0:c79379695e18 320 //Under here getting SMS body?
aganger3 0:c79379695e18 321 messageHeader2=strtok(NULL,"\n");
aganger3 0:c79379695e18 322 string Rcv_PhoneNum=extract_first_num(SMS_Hdr);
aganger3 0:c79379695e18 323 string SMS_Body(messageHeader2);
aganger3 0:c79379695e18 324 SMS_Body.erase(SMS_Body.find_last_not_of(" \n\r\t")+1);
aganger3 0:c79379695e18 325 Rcv_PhoneNum.erase(Rcv_PhoneNum.find_last_not_of(" \n\r\t")+1);
aganger3 0:c79379695e18 326
aganger3 0:c79379695e18 327
aganger3 0:c79379695e18 328
aganger3 0:c79379695e18 329 //gsm.printf(Rcv_PhoneNum.c_str());
aganger3 0:c79379695e18 330 gsm.printf("AT\r\n");
aganger3 0:c79379695e18 331
aganger3 0:c79379695e18 332 wait(.2);
aganger3 0:c79379695e18 333
aganger3 0:c79379695e18 334 speak("Incoming SMS from ");
aganger3 0:c79379695e18 335 speak(Rcv_PhoneNum);
aganger3 0:c79379695e18 336 wait(.5);
aganger3 0:c79379695e18 337 speak(SMS_Body);
aganger3 0:c79379695e18 338 wait(1);
aganger3 0:c79379695e18 339
aganger3 0:c79379695e18 340
aganger3 0:c79379695e18 341 phoneNumber=Rcv_PhoneNum;
aganger3 0:c79379695e18 342 bodyText=SMS_Body;
aganger3 0:c79379695e18 343
aganger3 0:c79379695e18 344
aganger3 0:c79379695e18 345 messageProcess();
aganger3 0:c79379695e18 346
aganger3 0:c79379695e18 347
aganger3 0:c79379695e18 348 }
aganger3 0:c79379695e18 349
aganger3 0:c79379695e18 350
aganger3 0:c79379695e18 351
aganger3 0:c79379695e18 352
aganger3 0:c79379695e18 353
aganger3 0:c79379695e18 354 int main() {
aganger3 0:c79379695e18 355 messageReceived = false;
aganger3 0:c79379695e18 356 gsm.baud(19200);
aganger3 0:c79379695e18 357 gsm.format(8, Serial::None, 1);
aganger3 0:c79379695e18 358 gsm.attach(&messageReceive, MODSERIAL::RxAutoDetect); //Attaches Interrupts
aganger3 0:c79379695e18 359 gsm.autoDetectChar('\n'); //Set Detection to Line Feed
aganger3 0:c79379695e18 360 pc.baud(19200);
aganger3 0:c79379695e18 361 speakjet.baud(9600);
aganger3 0:c79379695e18 362 wait(2);
aganger3 0:c79379695e18 363
aganger3 0:c79379695e18 364
aganger3 0:c79379695e18 365 dot1.mode(PullUp);
aganger3 0:c79379695e18 366 dot2.mode(PullUp);
aganger3 0:c79379695e18 367 dot3.mode(PullUp);
aganger3 0:c79379695e18 368 dot4.mode(PullUp);
aganger3 0:c79379695e18 369 dot5.mode(PullUp);
aganger3 0:c79379695e18 370 dot6.mode(PullUp);
aganger3 0:c79379695e18 371 dotSp.mode(PullUp);
aganger3 0:c79379695e18 372 SendSMS.mode(PullUp);
aganger3 0:c79379695e18 373 wait(0.01);
aganger3 0:c79379695e18 374 dot1.fall(d1);
aganger3 0:c79379695e18 375 dot2.fall(d2);
aganger3 0:c79379695e18 376 dot3.fall(d3);
aganger3 0:c79379695e18 377 dot4.fall(d4);
aganger3 0:c79379695e18 378 dot5.fall(d5);
aganger3 0:c79379695e18 379 dot6.fall(d6);
aganger3 0:c79379695e18 380 dotSp.setAssertValue( 0 );
aganger3 0:c79379695e18 381 dotSp.attach_asserted( dSp );
aganger3 0:c79379695e18 382 SendSMS.setAssertValue(0);
aganger3 0:c79379695e18 383 SendSMS.attach_asserted(select_SMS_Send);
aganger3 0:c79379695e18 384 SendSMS.attach_asserted_held( select_SMS_Held );
aganger3 0:c79379695e18 385
aganger3 0:c79379695e18 386 dotSp.setSampleFrequency();
aganger3 0:c79379695e18 387 SendSMS.setSampleFrequency();
aganger3 0:c79379695e18 388
aganger3 0:c79379695e18 389
aganger3 0:c79379695e18 390
aganger3 0:c79379695e18 391 // Set-UP GSM Modem
aganger3 0:c79379695e18 392
aganger3 0:c79379695e18 393 speak("Welcome to S M S Braille O Tron!");
aganger3 0:c79379695e18 394 wait(1);
aganger3 0:c79379695e18 395 pc.printf("Setting up GSM Modem\r\n");
aganger3 0:c79379695e18 396 pc.printf("GSM Modem Setup");
aganger3 0:c79379695e18 397 wait(1);
aganger3 0:c79379695e18 398 gsm.printf("AT\r\n");
aganger3 0:c79379695e18 399 wait(0.5);
aganger3 0:c79379695e18 400 messageProcess();
aganger3 0:c79379695e18 401
aganger3 0:c79379695e18 402 wait(1);
aganger3 0:c79379695e18 403 string ExStr = ExampleSentance;
aganger3 0:c79379695e18 404 bodyText = bparse.translateBraille(ExStr.c_str(),ExStr.length());
aganger3 0:c79379695e18 405 //send_SMS();
aganger3 0:c79379695e18 406 wait(4);
aganger3 0:c79379695e18 407 gsm.printf("AT\r\n");
aganger3 0:c79379695e18 408 wait(0.5);
aganger3 0:c79379695e18 409 messageProcess();
aganger3 0:c79379695e18 410 while (1) {
aganger3 0:c79379695e18 411
aganger3 0:c79379695e18 412
aganger3 0:c79379695e18 413 if (SMS_Rcv)
aganger3 0:c79379695e18 414 {
aganger3 0:c79379695e18 415 // pc.printf("SMS RCV\n");
aganger3 0:c79379695e18 416 messageProcess();
aganger3 0:c79379695e18 417 RetreiveSMS(SMS_Rcv_loc);
aganger3 0:c79379695e18 418 wait(2);
aganger3 0:c79379695e18 419 send_SMS();
aganger3 0:c79379695e18 420 }
aganger3 0:c79379695e18 421
aganger3 0:c79379695e18 422
aganger3 0:c79379695e18 423
aganger3 0:c79379695e18 424
aganger3 0:c79379695e18 425 if (sendMsgDesired)
aganger3 0:c79379695e18 426 {
aganger3 0:c79379695e18 427 speak("Enter Phone Number: ");
aganger3 0:c79379695e18 428 BrailleIn="a";
aganger3 0:c79379695e18 429 BrailleIn[0]=0x1;
aganger3 0:c79379695e18 430 while (!InputDone){ wait(.5);}
aganger3 0:c79379695e18 431 InputDone=false;
aganger3 0:c79379695e18 432 phoneNumber = getBrailleInput();
aganger3 0:c79379695e18 433 phoneNumber = extract_first_num(Braille_Letters_Numbers(phoneNumber));
aganger3 0:c79379695e18 434 BrailleIn=" ";
aganger3 0:c79379695e18 435 BrailleIn[0]=127;
aganger3 0:c79379695e18 436 speak("Enter Message Text: ");
aganger3 0:c79379695e18 437 while (!InputDone){wait(.5);}
aganger3 0:c79379695e18 438
aganger3 0:c79379695e18 439 InputDone=false;
aganger3 0:c79379695e18 440 bodyText= getBrailleInput();
aganger3 0:c79379695e18 441 wait(.5);
aganger3 0:c79379695e18 442 send_SMS();
aganger3 0:c79379695e18 443 wait(1);
aganger3 0:c79379695e18 444 sendMsgDesired=false;
aganger3 0:c79379695e18 445 }
aganger3 0:c79379695e18 446
aganger3 0:c79379695e18 447
aganger3 0:c79379695e18 448 // gsm.printf("AT\r\n"); //Check Connection
aganger3 0:c79379695e18 449 wait(0.5);
aganger3 0:c79379695e18 450 wait(1);
aganger3 0:c79379695e18 451 messageProcess();
aganger3 0:c79379695e18 452 wait(.5);
aganger3 0:c79379695e18 453
aganger3 0:c79379695e18 454 wait(5);
aganger3 0:c79379695e18 455
aganger3 0:c79379695e18 456 //Process incoming message
aganger3 0:c79379695e18 457 }
aganger3 0:c79379695e18 458
aganger3 0:c79379695e18 459
aganger3 0:c79379695e18 460
aganger3 0:c79379695e18 461
aganger3 0:c79379695e18 462 return 0;
aganger3 0:c79379695e18 463 }