This program is just a simple serial port program for communication with mbedWrapper

Dependencies:   AndroidAccessory mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers demokit.cpp Source File

demokit.cpp

00001 /*
00002  * ADKTerm
00003  * 
00004  * Written by p07gbar
00005  * 
00006  * This program is just a simple serial port program for comunication with mbedWrapper
00007  */
00008 #include "mbed.h"
00009 #include "AndroidAccessory.h"
00010 
00011 
00012 #define OUTL 100
00013 #define INBL 100
00014 
00015 
00016 
00017 
00018 
00019 class AdkTerm :public AndroidAccessory {
00020 public:
00021     AdkTerm():AndroidAccessory(INBL,OUTL,
00022                                        "ARM",
00023                                        "mbed",
00024                                        "mbed Terminal",
00025                                        "0.1",
00026                                        "http://www.mbed.org",
00027                                        "0000000012345678"),pc(USBTX,USBRX) {};
00028     virtual int callbackRead(u8 *buff, int len);
00029     virtual void setupDevice();
00030     virtual void resetDevice();
00031     virtual int callbackWrite();
00032 
00033 private:
00034     void serialIRQ();
00035     char buffer[OUTL];
00036     int bcount;
00037     Serial pc;
00038 };
00039 
00040 
00041 
00042 void AdkTerm::setupDevice() {
00043     pc.printf("Welcome to adkTerm\n\n\n\n\n\n\r");
00044     pc.attach(this, &AdkTerm::serialIRQ, Serial::RxIrq);
00045     for (int i = 0; i<OUTL; i++) {
00046         buffer[i] = 0;
00047     }
00048     bcount = 0;
00049 
00050 }
00051 
00052 
00053 void AdkTerm::resetDevice() {
00054     pc.printf("adkTerm reset\n\r");
00055     for (int i = 0; i<OUTL; i++) {
00056         buffer[i] = 0;
00057     }
00058     bcount = 0;
00059 }
00060 
00061 int AdkTerm::callbackRead(u8 *buf, int len) {
00062     pc.printf("%i  %s\n\r\n\n\n",len,buf);
00063     for (int i = 0; i<INBL;i++) {
00064         buf[i] = 0;
00065     }
00066     return 0;
00067 }
00068 
00069 int AdkTerm::callbackWrite() {
00070     pc.printf("DoneWrite\n\r");
00071     
00072     return 0;
00073 }
00074 
00075 
00076 void AdkTerm::serialIRQ() {
00077     buffer[bcount] = pc.getc();
00078     pc.putc(buffer[bcount]);
00079 
00080     if (buffer[bcount] == '\n' || buffer[bcount] == '\r') {
00081         u8* wbuf = _writebuff;
00082         for (int i = 0; i<OUTL; i++) {
00083             wbuf[i] = buffer[i];
00084             buffer[i] = 0;
00085         }
00086         pc.printf("Sending: %s\n\r",wbuf);
00087         
00088         this->write(wbuf,bcount);
00089         bcount = 0;
00090     } else {
00091         if (buffer[bcount] != 0x08 && buffer[bcount] != 0x7F ) {
00092             bcount++;
00093             if (bcount == OUTL) {
00094                 bcount = 0;
00095             }
00096         } else {
00097         bcount--;
00098         
00099         }
00100     }
00101 }
00102 
00103 
00104 
00105 AdkTerm AdkTerm;
00106 
00107 
00108 
00109 int main() {
00110     printf("Android Development Kit: start\r\n");
00111 
00112     AdkTerm.setupDevice();
00113     USBInit();
00114     while (1) {
00115         USBLoop();
00116     }
00117 
00118 }