Release 1.01
emic2.h
- Committer:
- foxbrianr
- Date:
- 2019-09-12
- Revision:
- 1:0803158da847
- Parent:
- 0:b95ede38e19d
- Child:
- 2:e700404156e4
File content as of revision 1:0803158da847:
#ifndef _EMIC2_DRIVER_ #define _EMIC2_DRIVER_ #include "mbed.h" #define speakf printf class emic2 : public Stream { public : emic2(PinName tx, PinName rx): _cmd(tx,rx) { _cmd.baud(9600); _cmd.putc('X'); //stop talking if reset and not a power on _cmd.putc('\r'); // Send a CR in case the system is already up wait(1); //delay for emic power on boot or reset respone while (_cmd.getc() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' while (_cmd.readable()) _cmd.getc();//flush out buffer just in case }; void ready() { while (_cmd.getc() != ':') { ThisThread::sleep_for(1); } while (_cmd.readable()) { _cmd.getc();//flush out recieve buffer just in case ThisThread::sleep_for(1); } }; int readable() { return _cmd.readable(); }; int getc() { return _cmd.getc(); } void volume(int x) { speakf("V%d\r",x); ready(); } void voice(int x) { speakf("N%d\r",x); ready(); } protected : Serial _cmd; //used by printf - supply it and printf works! virtual int _putc(int c) { _cmd.putc(c); wait_us(1); return 0; }; virtual int _getc() { return -1; }; }; #endif