
This class runs a thread which records servo position from sound card. More...
#include <Devices/RadioDecoder.H>


Public Member Functions | |
| RadioDecoder (OptionManager &mgr, const std::string &descrName="R/C Radio Decoder", const std::string &tagName="RadioDecoder") | |
| Constructor. | |
| ~RadioDecoder () | |
| Destructor. | |
| void | zeroCalibrate (const int nbiter=20) |
| Calibrate the zero (will block until done). | |
| void | rangeCalibrate (const int nbiter=200) |
| Calibrate the positive and negative ranges to +/-1.0. | |
| float | getVal (const int channel) const |
| Access function; values guaranteed within ]-1.0 .. 1.0[. | |
| void | run () |
| This method should not be called (implements thread code). | |
Protected Member Functions | |
| void | start1 () |
| get started (see ModelComponent.H) | |
| void | start2 () |
| get started (see ModelComponent.H) | |
| void | stop1 () |
| get stopped (see ModelComponent.H) | |
Protected Attributes | |
| rutz::shared_ptr< NModelParam < float > > * | zero |
| array of zero calibration values | |
| rutz::shared_ptr< NModelParam < float > > * | posmult |
| array of positive multiplier calibration values | |
| rutz::shared_ptr< NModelParam < float > > * | negmult |
| array of negative multiplier calibration values | |
This class runs a thread which records servo position from sound card.
Radio-control servomechanisms are controlled by a pulse-width-modulated protocol in which a 1-2ms pulse (from 0V to 4.8V) is generated every 18-25ms. The width of the pulse (between 1 and 2ms) determines the position of the servo. This class uses an AudioGrabber to record pulses, for example coming from an R/C receiver. It then computes the pulse width and converts it to a number between -1.0 and 1.0. The current pulse values are available via getVal(), which is a non-blocking function call.
Definition at line 60 of file RadioDecoder.H.
| RadioDecoder::RadioDecoder | ( | OptionManager & | mgr, | |
| const std::string & | descrName = "R/C Radio Decoder", |
|||
| const std::string & | tagName = "RadioDecoder" | |||
| ) |
Constructor.
Definition at line 71 of file RadioDecoder.C.
References ModelComponent::addSubComponent(), OPT_AudioGrabberDevice, and OPT_AudioMixerDevice.
| RadioDecoder::~RadioDecoder | ( | ) |
Destructor.
Definition at line 167 of file RadioDecoder.C.
| float RadioDecoder::getVal | ( | const int | channel | ) | const |
Access function; values guaranteed within ]-1.0 .. 1.0[.
Definition at line 171 of file RadioDecoder.C.
References ASSERT, negmult, posmult, and zero.
Referenced by rangeCalibrate().
| void RadioDecoder::rangeCalibrate | ( | const int | nbiter = 200 |
) |
| void RadioDecoder::run | ( | ) |
This method should not be called (implements thread code).
Definition at line 248 of file RadioDecoder.C.
References AudioBuffer< T >::getDataPtr(), and AudioBuffer< T >::nsamples().
| void RadioDecoder::start1 | ( | ) | [protected, virtual] |
get started (see ModelComponent.H)
Reimplemented from ModelComponent.
Definition at line 117 of file RadioDecoder.C.
| void RadioDecoder::start2 | ( | ) | [protected, virtual] |
get started (see ModelComponent.H)
Reimplemented from ModelComponent.
Definition at line 147 of file RadioDecoder.C.
| void RadioDecoder::stop1 | ( | ) | [protected, virtual] |
get stopped (see ModelComponent.H)
Reimplemented from ModelComponent.
Definition at line 154 of file RadioDecoder.C.
| void RadioDecoder::zeroCalibrate | ( | const int | nbiter = 20 |
) |
Calibrate the zero (will block until done).
Definition at line 191 of file RadioDecoder.C.
References zero.
rutz::shared_ptr<NModelParam<float> >* RadioDecoder::negmult [protected] |
array of negative multiplier calibration values
Definition at line 85 of file RadioDecoder.H.
Referenced by getVal(), rangeCalibrate(), start1(), and stop1().
rutz::shared_ptr<NModelParam<float> >* RadioDecoder::posmult [protected] |
array of positive multiplier calibration values
Definition at line 84 of file RadioDecoder.H.
Referenced by getVal(), rangeCalibrate(), start1(), and stop1().
rutz::shared_ptr<NModelParam<float> >* RadioDecoder::zero [protected] |
array of zero calibration values
Definition at line 83 of file RadioDecoder.H.
Referenced by getVal(), rangeCalibrate(), start1(), stop1(), and zeroCalibrate().
1.6.3