EasyVR by Chad and Alty
This is code for the EasyVR module that is used with Lab 4.
easyvr.cpp@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 | #include <easyvr.h> |
cmiller86 | 0:5d93573903ed | 2 | |
cmiller86 | 0:5d93573903ed | 3 | EasyVR::EasyVR( PinName tx, PinName rx ) : dev( tx, rx ) |
cmiller86 | 0:5d93573903ed | 4 | { |
cmiller86 | 0:5d93573903ed | 5 | // Nothing |
cmiller86 | 0:5d93573903ed | 6 | } |
cmiller86 | 0:5d93573903ed | 7 | |
cmiller86 | 0:5d93573903ed | 8 | void EasyVR::wakeup() |
cmiller86 | 0:5d93573903ed | 9 | { |
cmiller86 | 0:5d93573903ed | 10 | do |
cmiller86 | 0:5d93573903ed | 11 | { |
cmiller86 | 0:5d93573903ed | 12 | send( CMD_BREAK ); |
cmiller86 | 0:5d93573903ed | 13 | wait( 0.2 ); |
cmiller86 | 0:5d93573903ed | 14 | } while( receive() != STS_SUCCESS ); |
cmiller86 | 0:5d93573903ed | 15 | } |
cmiller86 | 0:5d93573903ed | 16 | |
cmiller86 | 0:5d93573903ed | 17 | void EasyVR::setup( int lang, int timeout ) |
cmiller86 | 0:5d93573903ed | 18 | { |
cmiller86 | 0:5d93573903ed | 19 | char err; |
cmiller86 | 0:5d93573903ed | 20 | |
cmiller86 | 0:5d93573903ed | 21 | send( CMD_ID ); |
cmiller86 | 0:5d93573903ed | 22 | |
cmiller86 | 0:5d93573903ed | 23 | if( ( err = receive() ) != STS_ID ) |
cmiller86 | 0:5d93573903ed | 24 | term.printf( "(in setup() line %d) Error: %c\r\n", __LINE__, err ); |
cmiller86 | 0:5d93573903ed | 25 | |
cmiller86 | 0:5d93573903ed | 26 | send( ARG_ACK ); |
cmiller86 | 0:5d93573903ed | 27 | |
cmiller86 | 0:5d93573903ed | 28 | switch( a2i( err = receive() ) ) |
cmiller86 | 0:5d93573903ed | 29 | { |
cmiller86 | 0:5d93573903ed | 30 | case 0: |
cmiller86 | 0:5d93573903ed | 31 | term.printf( "VRbot detected\r\n" ); |
cmiller86 | 0:5d93573903ed | 32 | break; |
cmiller86 | 0:5d93573903ed | 33 | case 1: |
cmiller86 | 0:5d93573903ed | 34 | term.printf( "EasyVR detected\r\n" ); |
cmiller86 | 0:5d93573903ed | 35 | break; |
cmiller86 | 0:5d93573903ed | 36 | default: |
cmiller86 | 0:5d93573903ed | 37 | term.printf( "(in setup() line %d) Error: %c\r\n", __LINE__, err ); |
cmiller86 | 0:5d93573903ed | 38 | break; |
cmiller86 | 0:5d93573903ed | 39 | } |
cmiller86 | 0:5d93573903ed | 40 | |
cmiller86 | 0:5d93573903ed | 41 | send( CMD_LANGUAGE ); |
cmiller86 | 0:5d93573903ed | 42 | send( i2a( lang ) ); |
cmiller86 | 0:5d93573903ed | 43 | |
cmiller86 | 0:5d93573903ed | 44 | if( ( err = receive() ) != STS_SUCCESS ) |
cmiller86 | 0:5d93573903ed | 45 | term.printf( "(in setup() line %d) Error: %c\r\n", __LINE__, err ); |
cmiller86 | 0:5d93573903ed | 46 | |
cmiller86 | 0:5d93573903ed | 47 | send( CMD_TIMEOUT ); |
cmiller86 | 0:5d93573903ed | 48 | send( i2a( timeout ) ); |
cmiller86 | 0:5d93573903ed | 49 | |
cmiller86 | 0:5d93573903ed | 50 | if( ( err = receive() ) != STS_SUCCESS ) |
cmiller86 | 0:5d93573903ed | 51 | term.printf( "(in setup() line %d) Error: %c\r\n", __LINE__, err ); |
cmiller86 | 0:5d93573903ed | 52 | } |
cmiller86 | 0:5d93573903ed | 53 | |
cmiller86 | 0:5d93573903ed | 54 | void EasyVR::send( char byte ) |
cmiller86 | 0:5d93573903ed | 55 | { |
cmiller86 | 0:5d93573903ed | 56 | dev.putc( byte ); |
cmiller86 | 0:5d93573903ed | 57 | } |
cmiller86 | 0:5d93573903ed | 58 | |
cmiller86 | 0:5d93573903ed | 59 | char EasyVR::receive() |
cmiller86 | 0:5d93573903ed | 60 | { |
cmiller86 | 0:5d93573903ed | 61 | return dev.getc(); |
cmiller86 | 0:5d93573903ed | 62 | } |
cmiller86 | 0:5d93573903ed | 63 | |
cmiller86 | 0:5d93573903ed | 64 | void EasyVR::baud( int rate ) |
cmiller86 | 0:5d93573903ed | 65 | { |
cmiller86 | 0:5d93573903ed | 66 | dev.baud( rate ); |
cmiller86 | 0:5d93573903ed | 67 | } |