Test

Dependencies:   AndroidAccessory

Committer:
asemanpayehring
Date:
Mon Mar 15 14:27:13 2021 +0000
Revision:
0:12b9fd83689b
init commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
asemanpayehring 0:12b9fd83689b 1 /*
asemanpayehring 0:12b9fd83689b 2 * ADKTerm
asemanpayehring 0:12b9fd83689b 3 *
asemanpayehring 0:12b9fd83689b 4 * Written by p07gbar
asemanpayehring 0:12b9fd83689b 5 *
asemanpayehring 0:12b9fd83689b 6 * This program is just a simple serial port program for comunication with mbedWrapper
asemanpayehring 0:12b9fd83689b 7 */
asemanpayehring 0:12b9fd83689b 8 #include "mbed.h"
asemanpayehring 0:12b9fd83689b 9 #include "AndroidAccessory.h"
asemanpayehring 0:12b9fd83689b 10
asemanpayehring 0:12b9fd83689b 11
asemanpayehring 0:12b9fd83689b 12 #define OUTL 100
asemanpayehring 0:12b9fd83689b 13 #define INBL 100
asemanpayehring 0:12b9fd83689b 14
asemanpayehring 0:12b9fd83689b 15
asemanpayehring 0:12b9fd83689b 16
asemanpayehring 0:12b9fd83689b 17
asemanpayehring 0:12b9fd83689b 18
asemanpayehring 0:12b9fd83689b 19 class AdkTerm :public AndroidAccessory {
asemanpayehring 0:12b9fd83689b 20 public:
asemanpayehring 0:12b9fd83689b 21 AdkTerm():AndroidAccessory(INBL,OUTL,
asemanpayehring 0:12b9fd83689b 22 "ARM",
asemanpayehring 0:12b9fd83689b 23 "mbed",
asemanpayehring 0:12b9fd83689b 24 "mbed Terminal",
asemanpayehring 0:12b9fd83689b 25 "0.1",
asemanpayehring 0:12b9fd83689b 26 "http://www.mbed.org",
asemanpayehring 0:12b9fd83689b 27 "0000000012345678"),pc(USBTX,USBRX) {};
asemanpayehring 0:12b9fd83689b 28 virtual int callbackRead(u8 *buff, int len);
asemanpayehring 0:12b9fd83689b 29 virtual void setupDevice();
asemanpayehring 0:12b9fd83689b 30 virtual void resetDevice();
asemanpayehring 0:12b9fd83689b 31 virtual int callbackWrite();
asemanpayehring 0:12b9fd83689b 32
asemanpayehring 0:12b9fd83689b 33 private:
asemanpayehring 0:12b9fd83689b 34 void serialIRQ();
asemanpayehring 0:12b9fd83689b 35 char buffer[OUTL];
asemanpayehring 0:12b9fd83689b 36 int bcount;
asemanpayehring 0:12b9fd83689b 37 Serial pc;
asemanpayehring 0:12b9fd83689b 38 };
asemanpayehring 0:12b9fd83689b 39
asemanpayehring 0:12b9fd83689b 40
asemanpayehring 0:12b9fd83689b 41
asemanpayehring 0:12b9fd83689b 42 void AdkTerm::setupDevice() {
asemanpayehring 0:12b9fd83689b 43 pc.printf("Welcome to adkTerm\n\n\n\n\n\n\r");
asemanpayehring 0:12b9fd83689b 44 pc.attach(this, &AdkTerm::serialIRQ, Serial::RxIrq);
asemanpayehring 0:12b9fd83689b 45 for (int i = 0; i<OUTL; i++) {
asemanpayehring 0:12b9fd83689b 46 buffer[i] = 0;
asemanpayehring 0:12b9fd83689b 47 }
asemanpayehring 0:12b9fd83689b 48 bcount = 0;
asemanpayehring 0:12b9fd83689b 49
asemanpayehring 0:12b9fd83689b 50 }
asemanpayehring 0:12b9fd83689b 51
asemanpayehring 0:12b9fd83689b 52
asemanpayehring 0:12b9fd83689b 53 void AdkTerm::resetDevice() {
asemanpayehring 0:12b9fd83689b 54 pc.printf("adkTerm reset\n\r");
asemanpayehring 0:12b9fd83689b 55 for (int i = 0; i<OUTL; i++) {
asemanpayehring 0:12b9fd83689b 56 buffer[i] = 0;
asemanpayehring 0:12b9fd83689b 57 }
asemanpayehring 0:12b9fd83689b 58 bcount = 0;
asemanpayehring 0:12b9fd83689b 59 }
asemanpayehring 0:12b9fd83689b 60
asemanpayehring 0:12b9fd83689b 61 int AdkTerm::callbackRead(u8 *buf, int len) {
asemanpayehring 0:12b9fd83689b 62 pc.printf("%i %s\n\r\n\n\n",len,buf);
asemanpayehring 0:12b9fd83689b 63 for (int i = 0; i<INBL;i++) {
asemanpayehring 0:12b9fd83689b 64 buf[i] = 0;
asemanpayehring 0:12b9fd83689b 65 }
asemanpayehring 0:12b9fd83689b 66 return 0;
asemanpayehring 0:12b9fd83689b 67 }
asemanpayehring 0:12b9fd83689b 68
asemanpayehring 0:12b9fd83689b 69 int AdkTerm::callbackWrite() {
asemanpayehring 0:12b9fd83689b 70 pc.printf("DoneWrite\n\r");
asemanpayehring 0:12b9fd83689b 71
asemanpayehring 0:12b9fd83689b 72 return 0;
asemanpayehring 0:12b9fd83689b 73 }
asemanpayehring 0:12b9fd83689b 74
asemanpayehring 0:12b9fd83689b 75
asemanpayehring 0:12b9fd83689b 76 void AdkTerm::serialIRQ() {
asemanpayehring 0:12b9fd83689b 77 buffer[bcount] = pc.getc();
asemanpayehring 0:12b9fd83689b 78 pc.putc(buffer[bcount]);
asemanpayehring 0:12b9fd83689b 79
asemanpayehring 0:12b9fd83689b 80 if (buffer[bcount] == '\n' || buffer[bcount] == '\r') {
asemanpayehring 0:12b9fd83689b 81 u8* wbuf = _writebuff;
asemanpayehring 0:12b9fd83689b 82 for (int i = 0; i<OUTL; i++) {
asemanpayehring 0:12b9fd83689b 83 wbuf[i] = buffer[i];
asemanpayehring 0:12b9fd83689b 84 buffer[i] = 0;
asemanpayehring 0:12b9fd83689b 85 }
asemanpayehring 0:12b9fd83689b 86 pc.printf("Sending: %s\n\r",wbuf);
asemanpayehring 0:12b9fd83689b 87
asemanpayehring 0:12b9fd83689b 88 this->write(wbuf,bcount);
asemanpayehring 0:12b9fd83689b 89 bcount = 0;
asemanpayehring 0:12b9fd83689b 90 } else {
asemanpayehring 0:12b9fd83689b 91 if (buffer[bcount] != 0x08 && buffer[bcount] != 0x7F ) {
asemanpayehring 0:12b9fd83689b 92 bcount++;
asemanpayehring 0:12b9fd83689b 93 if (bcount == OUTL) {
asemanpayehring 0:12b9fd83689b 94 bcount = 0;
asemanpayehring 0:12b9fd83689b 95 }
asemanpayehring 0:12b9fd83689b 96 } else {
asemanpayehring 0:12b9fd83689b 97 bcount--;
asemanpayehring 0:12b9fd83689b 98
asemanpayehring 0:12b9fd83689b 99 }
asemanpayehring 0:12b9fd83689b 100 }
asemanpayehring 0:12b9fd83689b 101 }
asemanpayehring 0:12b9fd83689b 102
asemanpayehring 0:12b9fd83689b 103
asemanpayehring 0:12b9fd83689b 104
asemanpayehring 0:12b9fd83689b 105 AdkTerm AdkTerm;
asemanpayehring 0:12b9fd83689b 106
asemanpayehring 0:12b9fd83689b 107
asemanpayehring 0:12b9fd83689b 108
asemanpayehring 0:12b9fd83689b 109 int main() {
asemanpayehring 0:12b9fd83689b 110 printf("Android Development Kit: start\r\n");
asemanpayehring 0:12b9fd83689b 111
asemanpayehring 0:12b9fd83689b 112 AdkTerm.setupDevice();
asemanpayehring 0:12b9fd83689b 113 USBInit();
asemanpayehring 0:12b9fd83689b 114 while (1) {
asemanpayehring 0:12b9fd83689b 115 USBLoop();
asemanpayehring 0:12b9fd83689b 116 }
asemanpayehring 0:12b9fd83689b 117
asemanpayehring 0:12b9fd83689b 118 }