Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MTACSerial.cpp@0:f13c46e6a431, 2015-06-16 (annotated)
- Committer:
- fritz291
- Date:
- Tue Jun 16 16:01:29 2015 +0000
- Revision:
- 0:f13c46e6a431
Serial Card library, still developing
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| fritz291 | 0:f13c46e6a431 | 1 | #include "MTACSerial.h" |
| fritz291 | 0:f13c46e6a431 | 2 | #include "mbed.h" |
| fritz291 | 0:f13c46e6a431 | 3 | |
| fritz291 | 0:f13c46e6a431 | 4 | using namespace mts; |
| fritz291 | 0:f13c46e6a431 | 5 | |
| fritz291 | 0:f13c46e6a431 | 6 | MTACSerial::MTACSerial(_slot accessory_card_slot, _mode serial_mode) : |
| fritz291 | 0:f13c46e6a431 | 7 | gpio1(NULL), |
| fritz291 | 0:f13c46e6a431 | 8 | gpio2(NULL), |
| fritz291 | 0:f13c46e6a431 | 9 | gpio3(NULL), |
| fritz291 | 0:f13c46e6a431 | 10 | gpio4(NULL), |
| fritz291 | 0:f13c46e6a431 | 11 | dtr(NULL), |
| fritz291 | 0:f13c46e6a431 | 12 | dcd(NULL), |
| fritz291 | 0:f13c46e6a431 | 13 | rts(NULL), |
| fritz291 | 0:f13c46e6a431 | 14 | cts(NULL), |
| fritz291 | 0:f13c46e6a431 | 15 | ri(NULL), |
| fritz291 | 0:f13c46e6a431 | 16 | mpc(NULL) |
| fritz291 | 0:f13c46e6a431 | 17 | { |
| fritz291 | 0:f13c46e6a431 | 18 | slot = accessory_card_slot; |
| fritz291 | 0:f13c46e6a431 | 19 | mode = serial_mode; |
| fritz291 | 0:f13c46e6a431 | 20 | |
| fritz291 | 0:f13c46e6a431 | 21 | switch (slot) { |
| fritz291 | 0:f13c46e6a431 | 22 | case slot_1: |
| fritz291 | 0:f13c46e6a431 | 23 | switch (mode){ |
| fritz291 | 0:f13c46e6a431 | 24 | case mode_1: |
| fritz291 | 0:f13c46e6a431 | 25 | //Loop Back Mode |
| fritz291 | 0:f13c46e6a431 | 26 | gpio1 = new DigitalOut(PTB7,0); |
| fritz291 | 0:f13c46e6a431 | 27 | gpio2 = new DigitalOut(PTB6,0); |
| fritz291 | 0:f13c46e6a431 | 28 | break; |
| fritz291 | 0:f13c46e6a431 | 29 | |
| fritz291 | 0:f13c46e6a431 | 30 | case mode_2: |
| fritz291 | 0:f13c46e6a431 | 31 | //RS232 |
| fritz291 | 0:f13c46e6a431 | 32 | gpio1 = new DigitalOut(PTB7,1);//1 |
| fritz291 | 0:f13c46e6a431 | 33 | gpio2 = new DigitalOut(PTB6,0);//0 |
| fritz291 | 0:f13c46e6a431 | 34 | //Need to figure out correct configuration for GPIO pins for other modes |
| fritz291 | 0:f13c46e6a431 | 35 | gpio3 = new DigitalOut(PTB5,0);//0 |
| fritz291 | 0:f13c46e6a431 | 36 | gpio4 = new DigitalOut(PTB4,1);//1 |
| fritz291 | 0:f13c46e6a431 | 37 | break; |
| fritz291 | 0:f13c46e6a431 | 38 | |
| fritz291 | 0:f13c46e6a431 | 39 | case mode_3: |
| fritz291 | 0:f13c46e6a431 | 40 | //RS485 Half Duplex |
| fritz291 | 0:f13c46e6a431 | 41 | gpio1 = new DigitalOut(PTB7,0); |
| fritz291 | 0:f13c46e6a431 | 42 | gpio2 = new DigitalOut(PTB6,1); |
| fritz291 | 0:f13c46e6a431 | 43 | break; |
| fritz291 | 0:f13c46e6a431 | 44 | |
| fritz291 | 0:f13c46e6a431 | 45 | case mode_4: |
| fritz291 | 0:f13c46e6a431 | 46 | //RS422-RS485 Full Duplex |
| fritz291 | 0:f13c46e6a431 | 47 | gpio1 = new DigitalOut(PTB7,1); |
| fritz291 | 0:f13c46e6a431 | 48 | gpio2 = new DigitalOut(PTB6,1); |
| fritz291 | 0:f13c46e6a431 | 49 | break; |
| fritz291 | 0:f13c46e6a431 | 50 | |
| fritz291 | 0:f13c46e6a431 | 51 | default: |
| fritz291 | 0:f13c46e6a431 | 52 | printf("invalid serial mode %d\r\n", mode); |
| fritz291 | 0:f13c46e6a431 | 53 | return; |
| fritz291 | 0:f13c46e6a431 | 54 | } |
| fritz291 | 0:f13c46e6a431 | 55 | |
| fritz291 | 0:f13c46e6a431 | 56 | mpc = new Serial(PTD3, PTD2); //PTD3tx, PTD2rx |
| fritz291 | 0:f13c46e6a431 | 57 | mpc->baud(9600); |
| fritz291 | 0:f13c46e6a431 | 58 | printf("serial object set\n"); |
| fritz291 | 0:f13c46e6a431 | 59 | break; |
| fritz291 | 0:f13c46e6a431 | 60 | |
| fritz291 | 0:f13c46e6a431 | 61 | case slot_2: |
| fritz291 | 0:f13c46e6a431 | 62 | switch (mode){ |
| fritz291 | 0:f13c46e6a431 | 63 | case mode_1: |
| fritz291 | 0:f13c46e6a431 | 64 | //Loop Back Mode |
| fritz291 | 0:f13c46e6a431 | 65 | gpio1 = new DigitalOut(PTA27,0); |
| fritz291 | 0:f13c46e6a431 | 66 | gpio2 = new DigitalOut(PTA26,0); |
| fritz291 | 0:f13c46e6a431 | 67 | break; |
| fritz291 | 0:f13c46e6a431 | 68 | |
| fritz291 | 0:f13c46e6a431 | 69 | case mode_2: |
| fritz291 | 0:f13c46e6a431 | 70 | //RS232 |
| fritz291 | 0:f13c46e6a431 | 71 | gpio1 = new DigitalOut(PTA27,1); |
| fritz291 | 0:f13c46e6a431 | 72 | gpio2 = new DigitalOut(PTA26,0); |
| fritz291 | 0:f13c46e6a431 | 73 | // |
| fritz291 | 0:f13c46e6a431 | 74 | gpio3 = new DigitalOut(PTA25,0);//0 |
| fritz291 | 0:f13c46e6a431 | 75 | gpio4 = new DigitalOut(PTA24,1);//1 |
| fritz291 | 0:f13c46e6a431 | 76 | break; |
| fritz291 | 0:f13c46e6a431 | 77 | |
| fritz291 | 0:f13c46e6a431 | 78 | case mode_3: |
| fritz291 | 0:f13c46e6a431 | 79 | //RS485 Half Duplex |
| fritz291 | 0:f13c46e6a431 | 80 | gpio1 = new DigitalOut(PTA27,0); |
| fritz291 | 0:f13c46e6a431 | 81 | gpio2 = new DigitalOut(PTA26,1); |
| fritz291 | 0:f13c46e6a431 | 82 | break; |
| fritz291 | 0:f13c46e6a431 | 83 | |
| fritz291 | 0:f13c46e6a431 | 84 | case mode_4: |
| fritz291 | 0:f13c46e6a431 | 85 | //RS422-RS485 Full Duplex |
| fritz291 | 0:f13c46e6a431 | 86 | gpio1 = new DigitalOut(PTA27,1); |
| fritz291 | 0:f13c46e6a431 | 87 | gpio2 = new DigitalOut(PTA26,1); |
| fritz291 | 0:f13c46e6a431 | 88 | break; |
| fritz291 | 0:f13c46e6a431 | 89 | |
| fritz291 | 0:f13c46e6a431 | 90 | default: |
| fritz291 | 0:f13c46e6a431 | 91 | printf("invalid serial mode %d\r\n", mode); |
| fritz291 | 0:f13c46e6a431 | 92 | return; |
| fritz291 | 0:f13c46e6a431 | 93 | } |
| fritz291 | 0:f13c46e6a431 | 94 | mpc = new Serial(PTB11, PTB10); //tx, rx |
| fritz291 | 0:f13c46e6a431 | 95 | mpc->baud(9600); |
| fritz291 | 0:f13c46e6a431 | 96 | break; |
| fritz291 | 0:f13c46e6a431 | 97 | |
| fritz291 | 0:f13c46e6a431 | 98 | default: |
| fritz291 | 0:f13c46e6a431 | 99 | printf("invalid slot %d\r\n", slot); |
| fritz291 | 0:f13c46e6a431 | 100 | return; |
| fritz291 | 0:f13c46e6a431 | 101 | } |
| fritz291 | 0:f13c46e6a431 | 102 | } |
| fritz291 | 0:f13c46e6a431 | 103 | |
| fritz291 | 0:f13c46e6a431 | 104 | MTACSerial::~MTACSerial() { |
| fritz291 | 0:f13c46e6a431 | 105 | if (gpio1) delete gpio1; |
| fritz291 | 0:f13c46e6a431 | 106 | if (gpio2) delete gpio2; |
| fritz291 | 0:f13c46e6a431 | 107 | if (gpio3) delete gpio3; |
| fritz291 | 0:f13c46e6a431 | 108 | if (gpio4) delete gpio4; |
| fritz291 | 0:f13c46e6a431 | 109 | if (dtr) delete dtr; |
| fritz291 | 0:f13c46e6a431 | 110 | if (mpc) delete mpc; |
| fritz291 | 0:f13c46e6a431 | 111 | if (rts) delete rts; |
| fritz291 | 0:f13c46e6a431 | 112 | if (ri) delete ri; |
| fritz291 | 0:f13c46e6a431 | 113 | if (cts) delete cts; |
| fritz291 | 0:f13c46e6a431 | 114 | if (dcd) delete dcd; |
| fritz291 | 0:f13c46e6a431 | 115 | } |
| fritz291 | 0:f13c46e6a431 | 116 | |
| fritz291 | 0:f13c46e6a431 | 117 | |
| fritz291 | 0:f13c46e6a431 | 118 | //Simple tests to see if configurations are working |
| fritz291 | 0:f13c46e6a431 | 119 | void MTACSerial::test(){ |
| fritz291 | 0:f13c46e6a431 | 120 | printf("in test function\n"); |
| fritz291 | 0:f13c46e6a431 | 121 | //printf("ri = %i\n",ri->read()); |
| fritz291 | 0:f13c46e6a431 | 122 | //printf("dcd = %i\n",dcd->read()); |
| fritz291 | 0:f13c46e6a431 | 123 | //printf("cts = %i\n",cts->read()); |
| fritz291 | 0:f13c46e6a431 | 124 | while(1) { |
| fritz291 | 0:f13c46e6a431 | 125 | printf("hello\n"); |
| fritz291 | 0:f13c46e6a431 | 126 | mpc->printf("hello\n"); |
| fritz291 | 0:f13c46e6a431 | 127 | wait(2); |
| fritz291 | 0:f13c46e6a431 | 128 | } |
| fritz291 | 0:f13c46e6a431 | 129 | } |
| fritz291 | 0:f13c46e6a431 | 130 | void MTACSerial::testLoopBack(){ |
| fritz291 | 0:f13c46e6a431 | 131 | printf("in test function\n"); |
| fritz291 | 0:f13c46e6a431 | 132 | printf("dtr = %i\n",dtr->read()); |
| fritz291 | 0:f13c46e6a431 | 133 | //mpc->printf("%x\n", out); |
| fritz291 | 0:f13c46e6a431 | 134 | while(1) { |
| fritz291 | 0:f13c46e6a431 | 135 | printf("hello\n"); |
| fritz291 | 0:f13c46e6a431 | 136 | mpc->putc('a'); |
| fritz291 | 0:f13c46e6a431 | 137 | printf("%s\n",mpc->getc()+1); |
| fritz291 | 0:f13c46e6a431 | 138 | wait(2); |
| fritz291 | 0:f13c46e6a431 | 139 | //mpc->putc(mpc->getc() + 1); |
| fritz291 | 0:f13c46e6a431 | 140 | } |
| fritz291 | 0:f13c46e6a431 | 141 | } |