Test
Dependencies: AndroidAccessory
main.cpp@0:12b9fd83689b, 2021-03-15 (annotated)
- Committer:
- asemanpayehring
- Date:
- Mon Mar 15 14:27:13 2021 +0000
- Revision:
- 0:12b9fd83689b
init commit;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |