Release 1.01

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?

UserRevisionLine numberNew 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