EasyVR by Chad and Alty
This is code for the EasyVR module that is used with Lab 4.
easyvr.h@1:80db49d7e068, 2015-10-19 (annotated)
- Committer:
- cmiller86
- Date:
- Mon Oct 19 15:15:55 2015 +0000
- Revision:
- 1:80db49d7e068
- Parent:
- 0:5d93573903ed
EasyVR library for use with ECE 4180 lab 4.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cmiller86 | 0:5d93573903ed | 1 | #ifndef EASYVR_H_DEFINED |
cmiller86 | 0:5d93573903ed | 2 | #define EASYVR_H_DEFINED |
cmiller86 | 0:5d93573903ed | 3 | |
cmiller86 | 0:5d93573903ed | 4 | #include <mbed.h> |
cmiller86 | 0:5d93573903ed | 5 | |
cmiller86 | 0:5d93573903ed | 6 | #define ARG_MIN '@' |
cmiller86 | 0:5d93573903ed | 7 | #define ARG_MAX '`' |
cmiller86 | 0:5d93573903ed | 8 | #define ARG_ZERO 'A' |
cmiller86 | 0:5d93573903ed | 9 | #define ARG_ACK ' ' |
cmiller86 | 0:5d93573903ed | 10 | |
cmiller86 | 0:5d93573903ed | 11 | #define CMD_BREAK 'b' |
cmiller86 | 0:5d93573903ed | 12 | #define CMD_SLEEP 's' |
cmiller86 | 0:5d93573903ed | 13 | #define CMD_KNOB 'k' |
cmiller86 | 0:5d93573903ed | 14 | #define CMD_LEVEL 'v' |
cmiller86 | 0:5d93573903ed | 15 | #define CMD_LANGUAGE 'l' |
cmiller86 | 0:5d93573903ed | 16 | #define CMD_TIMEOUT 'o' |
cmiller86 | 0:5d93573903ed | 17 | #define CMD_RECOG_SI 'i' |
cmiller86 | 0:5d93573903ed | 18 | #define CMD_TRAIN_SD 't' |
cmiller86 | 0:5d93573903ed | 19 | #define CMD_GROUP_SD 'g' |
cmiller86 | 0:5d93573903ed | 20 | #define CMD_UNGROUP_SD 'u' |
cmiller86 | 0:5d93573903ed | 21 | #define CMD_RECOG_SD 'd' |
cmiller86 | 0:5d93573903ed | 22 | #define CMD_ERASE_SD 'e' |
cmiller86 | 0:5d93573903ed | 23 | #define CMD_NAME_SD 'n' |
cmiller86 | 0:5d93573903ed | 24 | #define CMD_COUNT_SD 'c' |
cmiller86 | 0:5d93573903ed | 25 | #define CMD_DUMP_SD 'p' |
cmiller86 | 0:5d93573903ed | 26 | #define CMD_MASK_SD 'm' |
cmiller86 | 0:5d93573903ed | 27 | #define CMD_RESETALL 'r' |
cmiller86 | 0:5d93573903ed | 28 | #define CMD_ID 'x' |
cmiller86 | 0:5d93573903ed | 29 | #define CMD_DELAY 'y' |
cmiller86 | 0:5d93573903ed | 30 | #define CMD_BAUDRATE 'a' |
cmiller86 | 0:5d93573903ed | 31 | #define CMD_QUERY_IO 'q' |
cmiller86 | 0:5d93573903ed | 32 | #define CMD_PLAY_SX 'w' |
cmiller86 | 0:5d93573903ed | 33 | #define CMD_DUMP_SX 'h' |
cmiller86 | 0:5d93573903ed | 34 | |
cmiller86 | 0:5d93573903ed | 35 | #define STS_MASK 'k' |
cmiller86 | 0:5d93573903ed | 36 | #define STS_COUNT 'c' |
cmiller86 | 0:5d93573903ed | 37 | #define STS_AWAKEN 'w' |
cmiller86 | 0:5d93573903ed | 38 | #define STS_DATA 'd' |
cmiller86 | 0:5d93573903ed | 39 | #define STS_ERROR 'e' |
cmiller86 | 0:5d93573903ed | 40 | #define STS_INVALID 'v' |
cmiller86 | 0:5d93573903ed | 41 | #define STS_TIMEOUT 't' |
cmiller86 | 0:5d93573903ed | 42 | #define STS_INTERR 'i' |
cmiller86 | 0:5d93573903ed | 43 | #define STS_SUCCESS 'o' |
cmiller86 | 0:5d93573903ed | 44 | #define STS_RESULT 'r' |
cmiller86 | 0:5d93573903ed | 45 | #define STS_SIMILAR 's' |
cmiller86 | 0:5d93573903ed | 46 | #define STS_OUT_OF_MEM 'm' |
cmiller86 | 0:5d93573903ed | 47 | #define STS_ID 'x' |
cmiller86 | 0:5d93573903ed | 48 | #define STS_PIN 'p' |
cmiller86 | 0:5d93573903ed | 49 | #define STS_TABLE_SX 'd' |
cmiller86 | 0:5d93573903ed | 50 | |
cmiller86 | 0:5d93573903ed | 51 | #define ERR_DATACOL_TOO_NOISY 0x3 |
cmiller86 | 0:5d93573903ed | 52 | #define ERR_DATACOL_TOO_SOFT 0x4 |
cmiller86 | 0:5d93573903ed | 53 | #define ERR_DATACOL_TOO_LOUD 0x5 |
cmiller86 | 0:5d93573903ed | 54 | #define ERR_DATACOL_TOO_SOON 0x6 |
cmiller86 | 0:5d93573903ed | 55 | #define ERR_DATACOL_TOO_CHOPPY 0x7 |
cmiller86 | 0:5d93573903ed | 56 | #define ERR_RECOG_FAIL 0x11 |
cmiller86 | 0:5d93573903ed | 57 | #define ERR_RECOG_LOW_CONF 0x12 |
cmiller86 | 0:5d93573903ed | 58 | #define ERR_RECOG_MID_CONF 0x13 |
cmiller86 | 0:5d93573903ed | 59 | #define ERR_RECOG_BAD_TEMPLATE 0x14 |
cmiller86 | 0:5d93573903ed | 60 | #define ERR_RECOG_DURATION 0x17 |
cmiller86 | 0:5d93573903ed | 61 | #define ERR_SYNTH_BAD_VERSION 0x4A |
cmiller86 | 0:5d93573903ed | 62 | #define ERR_SYNTH_BAD_MSG 0x4E |
cmiller86 | 0:5d93573903ed | 63 | #define ERR_NOT_A_WORD 0x80 |
cmiller86 | 0:5d93573903ed | 64 | |
cmiller86 | 0:5d93573903ed | 65 | #define i2a(i) ((char)((i)+ARG_ZERO)) |
cmiller86 | 0:5d93573903ed | 66 | #define a2i(a) ((int)((a)-ARG_ZERO)) |
cmiller86 | 0:5d93573903ed | 67 | |
cmiller86 | 0:5d93573903ed | 68 | extern Serial term; |
cmiller86 | 0:5d93573903ed | 69 | |
cmiller86 | 1:80db49d7e068 | 70 | /** EasyVR class for ECE 4180 lab 4. |
cmiller86 | 1:80db49d7e068 | 71 | * Used for interfacing with an EasyVR module. |
cmiller86 | 1:80db49d7e068 | 72 | * |
cmiller86 | 1:80db49d7e068 | 73 | * Example: |
cmiller86 | 1:80db49d7e068 | 74 | * @code |
cmiller86 | 1:80db49d7e068 | 75 | * #include "mbed.h" |
cmiller86 | 1:80db49d7e068 | 76 | * #include "easyvr.h" |
cmiller86 | 1:80db49d7e068 | 77 | * |
cmiller86 | 1:80db49d7e068 | 78 | * EasyVR easyVR( p27, p28 ); |
cmiller86 | 1:80db49d7e068 | 79 | * |
cmiller86 | 1:80db49d7e068 | 80 | * int main() |
cmiller86 | 1:80db49d7e068 | 81 | * { |
cmiller86 | 1:80db49d7e068 | 82 | * easyVR.wakeup(); |
cmiller86 | 1:80db49d7e068 | 83 | * easyVR.setup(); |
cmiller86 | 1:80db49d7e068 | 84 | * } |
cmiller86 | 1:80db49d7e068 | 85 | * @endcode |
cmiller86 | 1:80db49d7e068 | 86 | */ |
cmiller86 | 0:5d93573903ed | 87 | class EasyVR |
cmiller86 | 0:5d93573903ed | 88 | { |
cmiller86 | 0:5d93573903ed | 89 | public: |
cmiller86 | 1:80db49d7e068 | 90 | /** EasyVR constructor. |
cmiller86 | 1:80db49d7e068 | 91 | * Initializes the serial interface for the EasyVR module. |
cmiller86 | 1:80db49d7e068 | 92 | * |
cmiller86 | 1:80db49d7e068 | 93 | * @param tx The TX pin on the mbed that should be used. This connects to the EasyVR's RX pin. |
cmiller86 | 1:80db49d7e068 | 94 | * @param rx The RX pin on the mbed that should be used. This connects to the EasyVR's TX pin. |
cmiller86 | 1:80db49d7e068 | 95 | */ |
cmiller86 | 0:5d93573903ed | 96 | EasyVR( PinName tx, PinName rx ); |
cmiller86 | 1:80db49d7e068 | 97 | |
cmiller86 | 1:80db49d7e068 | 98 | /** Wakes up the EasyVR by sending it a "break" signal until a reply |
cmiller86 | 1:80db49d7e068 | 99 | * of "success" has been received. |
cmiller86 | 1:80db49d7e068 | 100 | */ |
cmiller86 | 0:5d93573903ed | 101 | void wakeup(); |
cmiller86 | 1:80db49d7e068 | 102 | |
cmiller86 | 1:80db49d7e068 | 103 | /** Sets up the EasyVR. This includes ensuring the EasyVR module is a valid EasyVR device, |
cmiller86 | 1:80db49d7e068 | 104 | * setting its timeout value, and its language. |
cmiller86 | 1:80db49d7e068 | 105 | * |
cmiller86 | 1:80db49d7e068 | 106 | * @param lang The language to be used, as an encoded integer. i.e. 0 is 'A', 1 is 'B', and so forth. |
cmiller86 | 1:80db49d7e068 | 107 | * @param timeout The timeout to be used, in seconds, as an encoded integer. |
cmiller86 | 1:80db49d7e068 | 108 | */ |
cmiller86 | 0:5d93573903ed | 109 | void setup( int lang, int timeout ); |
cmiller86 | 1:80db49d7e068 | 110 | |
cmiller86 | 1:80db49d7e068 | 111 | /** Sends a single byte to the EasyVR. This is most commonly used to send commands |
cmiller86 | 1:80db49d7e068 | 112 | * and parameters for those commands. Note that this is just a wrapper for the EasyVR's |
cmiller86 | 1:80db49d7e068 | 113 | * serial interface's putc() function. |
cmiller86 | 1:80db49d7e068 | 114 | * |
cmiller86 | 1:80db49d7e068 | 115 | * @param byte The byte to be sent. |
cmiller86 | 1:80db49d7e068 | 116 | * @see Serial.putc() |
cmiller86 | 1:80db49d7e068 | 117 | */ |
cmiller86 | 0:5d93573903ed | 118 | void send( char byte ); |
cmiller86 | 1:80db49d7e068 | 119 | |
cmiller86 | 1:80db49d7e068 | 120 | /** Receives a single byte from the EasyVR. This is most commonly used to receive |
cmiller86 | 1:80db49d7e068 | 121 | * signals from the EasyVR. Note that this is just a wrapper for the EasyVR's serial |
cmiller86 | 1:80db49d7e068 | 122 | * interface's getc() function. |
cmiller86 | 1:80db49d7e068 | 123 | * |
cmiller86 | 1:80db49d7e068 | 124 | * Be aware that this is a blocking method - it will stall the program until a byte is received! |
cmiller86 | 1:80db49d7e068 | 125 | * |
cmiller86 | 1:80db49d7e068 | 126 | * @return A single byte from the EasyVR. |
cmiller86 | 1:80db49d7e068 | 127 | * @see Serial.putc() |
cmiller86 | 1:80db49d7e068 | 128 | */ |
cmiller86 | 0:5d93573903ed | 129 | char receive(); |
cmiller86 | 1:80db49d7e068 | 130 | |
cmiller86 | 1:80db49d7e068 | 131 | /** Sets the EasyVR's baud rate. For speech recognition, this must be exactly 9600. |
cmiller86 | 1:80db49d7e068 | 132 | * |
cmiller86 | 1:80db49d7e068 | 133 | * @param rate The baud rate the EasyVR should communicate with. |
cmiller86 | 1:80db49d7e068 | 134 | * @see Serial.baud() |
cmiller86 | 1:80db49d7e068 | 135 | */ |
cmiller86 | 0:5d93573903ed | 136 | void baud( int rate ); |
cmiller86 | 0:5d93573903ed | 137 | |
cmiller86 | 0:5d93573903ed | 138 | private: |
cmiller86 | 0:5d93573903ed | 139 | Serial dev; |
cmiller86 | 0:5d93573903ed | 140 | }; |
cmiller86 | 0:5d93573903ed | 141 | |
cmiller86 | 0:5d93573903ed | 142 | #endif // EASYVR_H_DEFINED |