Release 1.01

Committer:
foxbrianr
Date:
Tue Sep 17 13:48:49 2019 +0000
Revision:
2:e700404156e4
Parent:
1:0803158da847
Beta 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
foxbrianr 2:e700404156e4 1 /**************************************************************************
foxbrianr 2:e700404156e4 2 * @file emic2.h
foxbrianr 2:e700404156e4 3 * @brief Base class for wrapping the interface with the EMIC2 Sound Care
foxbrianr 2:e700404156e4 4 * @version: V1.0
foxbrianr 2:e700404156e4 5 * @date: 9/17/2019
foxbrianr 2:e700404156e4 6
foxbrianr 2:e700404156e4 7 *
foxbrianr 2:e700404156e4 8 * @note
foxbrianr 2:e700404156e4 9 * Copyright (C) 2019 E3 Design. All rights reserved.
foxbrianr 2:e700404156e4 10 *
foxbrianr 2:e700404156e4 11 * @par
foxbrianr 2:e700404156e4 12 * E3 Designers LLC is supplying this software for use with Cortex-M3 LPC1768
foxbrianr 2:e700404156e4 13 * processor based microcontroller for the ESCM 2000 Monitor and Display.
foxbrianr 2:e700404156e4 14 * *
foxbrianr 2:e700404156e4 15 * @par
foxbrianr 2:e700404156e4 16 * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
foxbrianr 2:e700404156e4 17 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
foxbrianr 2:e700404156e4 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
foxbrianr 2:e700404156e4 19 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
foxbrianr 2:e700404156e4 20 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
foxbrianr 2:e700404156e4 21 *
foxbrianr 2:e700404156e4 22 ******************************************************************************/
foxbrianr 1:0803158da847 23 #ifndef _EMIC2_DRIVER_
foxbrianr 1:0803158da847 24 #define _EMIC2_DRIVER_
foxbrianr 1:0803158da847 25
foxbrianr 1:0803158da847 26 #include "mbed.h"
foxbrianr 1:0803158da847 27
4180_1 0:b95ede38e19d 28 #define speakf printf
foxbrianr 1:0803158da847 29
4180_1 0:b95ede38e19d 30 class emic2 : public Stream
4180_1 0:b95ede38e19d 31 {
4180_1 0:b95ede38e19d 32 public :
4180_1 0:b95ede38e19d 33 emic2(PinName tx, PinName rx): _cmd(tx,rx) {
4180_1 0:b95ede38e19d 34 _cmd.baud(9600);
4180_1 0:b95ede38e19d 35 _cmd.putc('X'); //stop talking if reset and not a power on
4180_1 0:b95ede38e19d 36 _cmd.putc('\r'); // Send a CR in case the system is already up
4180_1 0:b95ede38e19d 37 wait(1); //delay for emic power on boot or reset respone
4180_1 0:b95ede38e19d 38 while (_cmd.getc() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':'
4180_1 0:b95ede38e19d 39 while (_cmd.readable()) _cmd.getc();//flush out buffer just in case
4180_1 0:b95ede38e19d 40 };
4180_1 0:b95ede38e19d 41 void ready() {
foxbrianr 1:0803158da847 42 while (_cmd.getc() != ':')
foxbrianr 1:0803158da847 43 {
foxbrianr 1:0803158da847 44 ThisThread::sleep_for(1);
foxbrianr 1:0803158da847 45 }
foxbrianr 1:0803158da847 46 while (_cmd.readable()) {
foxbrianr 1:0803158da847 47 _cmd.getc();//flush out recieve buffer just in case
foxbrianr 1:0803158da847 48 ThisThread::sleep_for(1);
foxbrianr 1:0803158da847 49 }
4180_1 0:b95ede38e19d 50 };
4180_1 0:b95ede38e19d 51 int readable() {
4180_1 0:b95ede38e19d 52 return _cmd.readable();
4180_1 0:b95ede38e19d 53 };
4180_1 0:b95ede38e19d 54 int getc() {
4180_1 0:b95ede38e19d 55 return _cmd.getc();
4180_1 0:b95ede38e19d 56 }
4180_1 0:b95ede38e19d 57 void volume(int x) {
foxbrianr 1:0803158da847 58 speakf("V%d\r",x);
4180_1 0:b95ede38e19d 59 ready();
4180_1 0:b95ede38e19d 60 }
4180_1 0:b95ede38e19d 61 void voice(int x) {
foxbrianr 1:0803158da847 62 speakf("N%d\r",x);
4180_1 0:b95ede38e19d 63 ready();
4180_1 0:b95ede38e19d 64 }
4180_1 0:b95ede38e19d 65 protected :
4180_1 0:b95ede38e19d 66 Serial _cmd;
4180_1 0:b95ede38e19d 67 //used by printf - supply it and printf works!
4180_1 0:b95ede38e19d 68 virtual int _putc(int c) {
4180_1 0:b95ede38e19d 69 _cmd.putc(c);
foxbrianr 2:e700404156e4 70 ThisThread::sleep_for(1);
4180_1 0:b95ede38e19d 71 return 0;
4180_1 0:b95ede38e19d 72 };
4180_1 0:b95ede38e19d 73 virtual int _getc() {
4180_1 0:b95ede38e19d 74 return -1;
4180_1 0:b95ede38e19d 75 };
4180_1 0:b95ede38e19d 76 };
foxbrianr 1:0803158da847 77
foxbrianr 1:0803158da847 78 #endif