Release 1.01
emic2.h@1:0803158da847, 2019-09-12 (annotated)
- Committer:
- foxbrianr
- Date:
- Thu Sep 12 11:28:21 2019 +0000
- Revision:
- 1:0803158da847
- Parent:
- 0:b95ede38e19d
- Child:
- 2:e700404156e4
beta1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
foxbrianr | 1:0803158da847 | 1 | #ifndef _EMIC2_DRIVER_ |
foxbrianr | 1:0803158da847 | 2 | #define _EMIC2_DRIVER_ |
foxbrianr | 1:0803158da847 | 3 | |
foxbrianr | 1:0803158da847 | 4 | #include "mbed.h" |
foxbrianr | 1:0803158da847 | 5 | |
4180_1 | 0:b95ede38e19d | 6 | #define speakf printf |
foxbrianr | 1:0803158da847 | 7 | |
4180_1 | 0:b95ede38e19d | 8 | class emic2 : public Stream |
4180_1 | 0:b95ede38e19d | 9 | { |
4180_1 | 0:b95ede38e19d | 10 | public : |
4180_1 | 0:b95ede38e19d | 11 | emic2(PinName tx, PinName rx): _cmd(tx,rx) { |
4180_1 | 0:b95ede38e19d | 12 | _cmd.baud(9600); |
4180_1 | 0:b95ede38e19d | 13 | _cmd.putc('X'); //stop talking if reset and not a power on |
4180_1 | 0:b95ede38e19d | 14 | _cmd.putc('\r'); // Send a CR in case the system is already up |
4180_1 | 0:b95ede38e19d | 15 | wait(1); //delay for emic power on boot or reset respone |
4180_1 | 0:b95ede38e19d | 16 | while (_cmd.getc() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' |
4180_1 | 0:b95ede38e19d | 17 | while (_cmd.readable()) _cmd.getc();//flush out buffer just in case |
4180_1 | 0:b95ede38e19d | 18 | }; |
4180_1 | 0:b95ede38e19d | 19 | void ready() { |
foxbrianr | 1:0803158da847 | 20 | while (_cmd.getc() != ':') |
foxbrianr | 1:0803158da847 | 21 | { |
foxbrianr | 1:0803158da847 | 22 | ThisThread::sleep_for(1); |
foxbrianr | 1:0803158da847 | 23 | } |
foxbrianr | 1:0803158da847 | 24 | while (_cmd.readable()) { |
foxbrianr | 1:0803158da847 | 25 | _cmd.getc();//flush out recieve buffer just in case |
foxbrianr | 1:0803158da847 | 26 | ThisThread::sleep_for(1); |
foxbrianr | 1:0803158da847 | 27 | } |
4180_1 | 0:b95ede38e19d | 28 | }; |
4180_1 | 0:b95ede38e19d | 29 | int readable() { |
4180_1 | 0:b95ede38e19d | 30 | return _cmd.readable(); |
4180_1 | 0:b95ede38e19d | 31 | }; |
4180_1 | 0:b95ede38e19d | 32 | int getc() { |
4180_1 | 0:b95ede38e19d | 33 | return _cmd.getc(); |
4180_1 | 0:b95ede38e19d | 34 | } |
4180_1 | 0:b95ede38e19d | 35 | void volume(int x) { |
foxbrianr | 1:0803158da847 | 36 | speakf("V%d\r",x); |
4180_1 | 0:b95ede38e19d | 37 | ready(); |
4180_1 | 0:b95ede38e19d | 38 | } |
4180_1 | 0:b95ede38e19d | 39 | void voice(int x) { |
foxbrianr | 1:0803158da847 | 40 | speakf("N%d\r",x); |
4180_1 | 0:b95ede38e19d | 41 | ready(); |
4180_1 | 0:b95ede38e19d | 42 | } |
4180_1 | 0:b95ede38e19d | 43 | protected : |
4180_1 | 0:b95ede38e19d | 44 | Serial _cmd; |
4180_1 | 0:b95ede38e19d | 45 | //used by printf - supply it and printf works! |
4180_1 | 0:b95ede38e19d | 46 | virtual int _putc(int c) { |
4180_1 | 0:b95ede38e19d | 47 | _cmd.putc(c); |
foxbrianr | 1:0803158da847 | 48 | wait_us(1); |
4180_1 | 0:b95ede38e19d | 49 | return 0; |
4180_1 | 0:b95ede38e19d | 50 | }; |
4180_1 | 0:b95ede38e19d | 51 | virtual int _getc() { |
4180_1 | 0:b95ede38e19d | 52 | return -1; |
4180_1 | 0:b95ede38e19d | 53 | }; |
4180_1 | 0:b95ede38e19d | 54 | }; |
foxbrianr | 1:0803158da847 | 55 | |
foxbrianr | 1:0803158da847 | 56 | #endif |