|
LRAUV
revA
|
This is the device driver for the EZServo that controls the vehicle's rudder. More...
#include <RudderServo.h>


Public Member Functions | |
| RudderServo (const Module *module) | |
| virtual | ~RudderServo () |
| virtual void | run () |
| The actual "payload" of the component. More... | |
| virtual RunState | start () |
| Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence. More... | |
| virtual RunState | starting () |
| Might follow a STOP...START sequence. More... | |
| virtual RunState | pause () |
| Pause for a short period (indicated by pauseTime) More... | |
| virtual RunState | paused () |
| Should eventually follow a PAUSE request: should set continueTime. More... | |
| virtual RunState | resume () |
| Resume from PAUSE. More... | |
| virtual RunState | resuming () |
| Might follow a PAUSE...RESUME sequence. More... | |
| virtual RunState | runnable () |
| Should eventually follow a START request or RESETTING. More... | |
| virtual RunState | resetting () |
| Might occur in case of Error. More... | |
| virtual RunState | stop () |
| Initial state – can be later followed by START. More... | |
| virtual RunState | stopping () |
| Might follow a STOP request. More... | |
| virtual RunState | stopped () |
| Initial state – can be later followed by START. More... | |
| void | uninitialize (void) |
| Provide a space for uninitialization. More... | |
| virtual ConfigURI | getConfigURI (ConfigOption configOption) const |
| Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc. More... | |
Public Member Functions inherited from EZServoServo | |
| EZServoServo (const Str &name, const ConfigURI &uartCfg, const ConfigURI &baudCfg, const Module *module, EZServoServoType motorServoType, int divisor=1, int modulo=0) | |
| virtual | ~EZServoServo () |
Public Member Functions inherited from SyncComponent | |
| CycleOrder | getCycleOrder (void) |
| Getter function for controlThreadOrderPreference. More... | |
| void | setRepeating (bool repeating) |
| int | getDivisor () const |
| int | getModulo () const |
| bool | isRepeater () |
| bool | isRepeating () |
Public Member Functions inherited from Component | |
| virtual | ~Component () |
| Destructor cleans up readers_ and writers_. More... | |
| void | registerReader (DataReader *reader) |
| void | unregisterReader (DataReader *reader) |
| void | registerWriter (DataWriter *writer) |
| void | unregisterWriter (DataWriter *writer) |
| void | disableMetering (void) |
| FlexArray< DataReader * > & | getReaderList (void) |
| FlexArray< DataWriter * > & | getWriterList (void) |
| const Module * | getModule () |
| virtual void | initialize () |
| Provide a space for initialization before being run. More... | |
| virtual void | configure () |
| Read (or re-read!) configuration settings. More... | |
| virtual void | execute (void) |
| bool | isActive () const |
| Indicates if the component is active. More... | |
| const CodedStr & | getName (void) const |
| Returns the name. More... | |
| const Timestamp & | getTimeOfLastRun (void) const |
| ComponentState | getState (void) |
| Return the component's current state. More... | |
| void | setState (ComponentState state) |
| RunState | getRunState (void) |
| Return the component's run state. More... | |
| bool | isUsingRunState () |
| Return true if using runState. More... | |
| void | requestData (bool requestingData) |
| Tell the component to start (or stop) sending data. More... | |
| void | requestStart () |
| Tell the component to start runnning. More... | |
| void | requestPause (const Timespan expectedPauseTime) |
| Tell the component to pause runnning. More... | |
| void | requestResume () |
| Tell the component resume from pause. More... | |
| void | requestStop () |
| Tell the component to stop runnning. More... | |
| virtual RunState | satisfied () |
| Possible return value of a Behavior. More... | |
| virtual RunState | pausing () |
| Might follow a PAUSE request. More... | |
| void | setCriticalFailureReported (bool boolVal) |
| void | setRecoveringFromCritical (bool boolVal) |
| void | setFailureReported (bool boolVal) |
| bool | isFailureUninitialized () |
| void | setFailureUninitialized (bool boolVal) |
| void | setRetryTimeout (const Timespan &timeout) |
| virtual bool | isCompleted (void) |
| Query if this component is completed. More... | |
| void | setPeriod (const Timespan &period) |
| Set the period of this component... used if it is periodic. More... | |
| const Timespan & | getPeriod (void) |
| Returns the component's period (regardless of whether it is periodic) More... | |
| ComponentType | getComponentType () |
| Getter function for ComponentType. More... | |
| virtual bool | isFailed (void) const |
| virtual FailureMode::FailType | getFailureType (void) const |
| virtual bool | getCriticalFailureReported (void) const |
| virtual bool | getFailureReported (void) const |
| virtual Timespan | getRetryTimeout (void) const |
| virtual FailureMode::FailType | setFailure (FailureMode::FailType failureType) |
| virtual int | getFailCount (void) const |
| virtual bool | isFailureMissionCritical () |
| virtual int | getAllowableFailures (void) const |
| virtual void | setAllowableFailures (int fails) |
| Logger & | getLogger (void) |
| virtual int | incrementFailCount (void) |
| virtual void | resetFailCount (void) |
| virtual int | getSkippedRunsSinceFail (void) const |
| virtual int | incrementSkippedRunsSinceFail (void) |
| virtual void | logVoltage (float voltage, float averageVoltage) |
| virtual void | logCurrent (float current, float averageCurrent) |
| const Timestamp & | getWriteTimestamp (void) |
| void | setWriteTimestamp (const Timestamp &writeTimestamp) |
| BlobReader * | newBlobReader (const BlobURI &blobURI) |
| BlobReader * | newBlobReaderFromUniversal (const Str &componentName, const UniversalBlobURI &blobURI) |
| BlobWriter * | newBlobWriter (const BlobURI &blobURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS) |
| ConfigReader * | newConfigReader (const ConfigURI &configURI) |
| DataReader * | newDataReader (const DataURI &dataURI) |
| DataReader * | newDataReaderFromUniversal (const Str &componentName, const UniversalURI &universalURI) |
| DataWriter * | newDataWriter (const DataURI &dataURI, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS) |
| UniversalBlobReader * | newUniversalBlobReader (const UniversalBlobURI &universalURI) |
| UniversalBlobWriter * | newUniversalBlobWriter (const UniversalBlobURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS) |
| UniversalDataReader * | newUniversalReader (const UniversalURI &universalURI) |
| UniversalDataWriter * | newUniversalWriter (const UniversalURI &universalURI, const Unit &accuracyUnit=Units::NONE, const float accuracy=DataElement::NO_ACCURACY, Logger::TimePrecisionType timePrecision=Logger::TIME_PRECISION_MILLIS) |
Private Types | |
| enum | StartupSequence { INITIALIZE, WAIT, HOME, EXECUTE, VERIFY, DONE } |
Private Member Functions | |
| RudderServo (const RudderServo &old) | |
| bool | isDataRequested () |
| bool | isNeeded () |
| bool | readConfig (void) |
| bool | initRudder (void) |
Private Attributes | |
| LoadControl | loadControl_ |
| UniversalDataWriter * | rudderAngleWriter_ |
| DataReader * | rudderAngleReader_ |
| StartupSequence | startup_ |
| bool | ok_ |
| float | actualRudderAngle_ |
| float | cmdRudderAngle_ |
| bool | debug_ |
| float | ruddDeadbandCfg_ |
| ConfigReader * | rudderDeadbandCfgReader_ |
| bool | rudderRdy_ |
This is the device driver for the EZServo that controls the vehicle's rudder.
Since it shares the same RS-485 bus with the other EZServos, it is a child class of EZServoServo, which has a static instance of the StdUart class to interact with the bus.
RudderServo.h should only be included by RudderServo.cpp Other classes should include RudderServoIF.h
| RudderServo::RudderServo | ( | const Module * | module | ) |
References EZServoServo::countsPerDegCfgReader_, EZServoServo::currLimitCfgReader_, EZServoServo::deviationAngleCfgReader_, EZServoServo::limitHiCfgReader_, EZServoServo::limitLoCfgReader_, EZServoServo::mtrCenterCfgReader_, Component::newConfigReader(), Component::newDataReader(), Component::newUniversalWriter(), EZServoServo::offsetAngleCfgReader_, Component::persistentPause_, EZServoServo::pidWCfgReader_, EZServoServo::pidXCfgReader_, EZServoServo::pidYCfgReader_, UniversalURI::PLATFORM_RUDDER_ANGLE, EZServoServo::powerOnTimeoutCfgReader_, Units::RADIAN, rudderAngleReader_, rudderAngleWriter_, rudderDeadbandCfgReader_, DataReader::setImplementor(), Component::setRunState(), and Component::START.
|
virtual |
|
private |
|
virtual |
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Reimplemented from Component.
References Component::CONFIG_SIMULATE_HARDWARE, and ConfigURI::NO_CONFIG_URI.
|
private |
References EZServoServo::controlAddress_, EZServoServo::currLimitCfg_, Syslog::ERROR, UartStream::errorString(), UartStream::flushCRLF(), UartStream::hasError(), Component::logger_, EZServoServo::pidWCfg_, EZServoServo::pidXCfg_, EZServoServo::pidYCfg_, UartStream::readLine(), Component::simulateHardware(), Logger::syslog(), EZServoServo::uart_, and EZServoServo::uartResponse_.
Referenced by starting().
|
private |
References DataWriter::isDataRequested(), and rudderAngleWriter_.
|
private |
References actualRudderAngle_, cmdRudderAngle_, Units::DEGREE, EZServoServo::deviationAngleCfg_, DataReader::isActive(), EZServoServo::offsetAngleCfg_, DataReader::read(), and rudderAngleReader_.
Referenced by paused(), runnable(), and stopped().
|
virtual |
Pause for a short period (indicated by pauseTime)
Pause for a short period.
Reimplemented from Component.
References UartStream::close(), debug_, Syslog::FAULT, FailureMode::HARDWARE, Syslog::INFO, loadControl_, Component::logger_, Component::PAUSED, LoadControl::powerDown(), Component::setFailure(), Component::STOP, Logger::syslog(), and EZServoServo::uart_.
|
virtual |
Should eventually follow a PAUSE request: should set continueTime.
Reimplemented from Component.
References debug_, Syslog::FAULT, FailureMode::HARDWARE, Syslog::INFO, isNeeded(), loadControl_, Component::logger_, Component::PAUSED, LoadControl::powerUp(), Component::RESUME, Component::setFailure(), Component::STOP, and Logger::syslog().
|
privatevirtual |
Reimplemented from EZServoServo.
References Units::ANGULAR_DEGREE, EZServoServo::deviationAngleCfg_, DataReader::read(), EZServoServo::readConfig(), ruddDeadbandCfg_, and rudderDeadbandCfgReader_.
Referenced by runnable(), and start().
|
inlinevirtual |
|
virtual |
Resume from PAUSE.
Reimplemented from Component.
References debug_, UartStream::errorString(), UartStream::hasError(), Syslog::INFO, Component::logger_, UartStream::open(), Component::RESUMING, Component::simulateHardware(), Logger::syslog(), and EZServoServo::uart_.
|
virtual |
Might follow a PAUSE...RESUME sequence.
Reimplemented from Component.
References debug_, Syslog::INFO, Component::logger_, Component::RUNNABLE, and Logger::syslog().
|
virtual |
The actual "payload" of the component.
Reimplemented from Component.
|
virtual |
Should eventually follow a START request or RESETTING.
Reimplemented from Component.
References actualRudderAngle_, EZServoServo::checkResponse(), cmdRudderAngle_, FailureMode::COMMUNICATIONS, EZServoServo::controlAddress_, EZServoServo::countsPerDegCfg_, D2R, debug_, Units::DEGREE, EZServoServo::deviationAngleCfg_, Syslog::ERROR, LoadControl::errorString(), UartStream::errorString(), Syslog::FAULT, Str::find(), UartStream::flushCRLF(), EZServoServo::getPosition(), FailureMode::HARDWARE, LoadControl::hasError(), UartStream::hasError(), Syslog::INFO, DataReader::isActive(), isNeeded(), EZServoServo::limit(), loadControl_, Component::logger_, EZServoServo::mtrCenterCfg_, EZServoServo::offsetAngleCfg_, Component::PAUSE, R2D, Units::RADIAN, DataReader::read(), SimSlate::Read(), UartStream::read(), readConfig(), UartStream::readLine(), LoadControl::requestVoltageAndCurrent(), Component::resetFailCount(), SimSlate::RUDDER_ANGLE_RADIAN, rudderAngleReader_, rudderAngleWriter_, rudderRdy_, Component::RUNNABLE, Component::setFailure(), Component::simulateHardware(), Component::STOP, Logger::syslog(), EZServoServo::uart_, EZServoServo::uartResponse_, and DataWriter::write().
|
virtual |
Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence.
Reimplemented from Component.
References Syslog::CRITICAL, debug_, Syslog::FAULT, FailureMode::HARDWARE, Syslog::INFO, EZServoServo::initializeStart(), loadControl_, Component::logger_, Timestamp::Now(), ok_, LoadControl::powerUp(), readConfig(), Component::setAllowableFailures(), Component::setFailure(), Component::simulateHardware(), Component::START, Component::STARTING, EZServoServo::startTime_, and Logger::syslog().
Referenced by stopped().
|
virtual |
Might follow a STOP...START sequence.
Reimplemented from Component.
References EZServoServo::checkResponse(), FailureMode::COMMUNICATIONS, EZServoServo::controlAddress_, debug_, DONE, EZServoServo::eepromWriteTimeout_, Timestamp::elapsed(), UartStream::errorString(), EXECUTE, Syslog::FAULT, UartStream::flushCRLF(), UartStream::hasError(), HOME, Syslog::INFO, INITIALIZE, initRudder(), Component::logger_, Timestamp::Now(), EZServoServo::powerOnTimeoutCfg_, UartStream::readLine(), Component::RUNNABLE, Component::setFailure(), Component::simulateHardware(), Component::STARTING, EZServoServo::startTime_, startup_, Component::STOP, Logger::syslog(), EZServoServo::uart_, EZServoServo::uartResponse_, VERIFY, and WAIT.
|
virtual |
Initial state – can be later followed by START.
Reimplemented from Component.
References debug_, Syslog::INFO, Component::logger_, Component::simulateHardware(), Component::STOPPING, Logger::syslog(), and uninitialize().
Referenced by resetting(), and stopped().
|
virtual |
Initial state – can be later followed by START.
Reimplemented from Component.
References UartStream::close(), debug_, LoadControl::getPowerState(), Syslog::INFO, isNeeded(), UartStream::isReadable(), loadControl_, Component::logger_, LoadControl::OFF, LoadControl::POWER_DOWN, start(), stop(), Component::STOPPED, Logger::syslog(), and EZServoServo::uart_.
|
virtual |
Might follow a STOP request.
Reimplemented from Component.
References debug_, LoadControl::errorString(), Syslog::FAULT, FailureMode::HARDWARE, LoadControl::hasError(), Syslog::INFO, loadControl_, Component::logger_, LoadControl::readFaults(), Component::setFailure(), Component::simulateHardware(), Component::STOPPED, and Logger::syslog().
|
virtual |
Provide a space for uninitialization.
Reimplemented from Component.
References Syslog::FAULT, FailureMode::HARDWARE, Syslog::INFO, INITIALIZE, loadControl_, Component::logger_, LoadControl::powerDown(), Component::setFailure(), Component::simulateHardware(), startup_, Logger::syslog(), EZServoServo::uninitializeEnd(), and EZServoServo::uninitializeStart().
Referenced by stop().
|
private |
Referenced by isNeeded(), and runnable().
|
private |
Referenced by isNeeded(), and runnable().
|
private |
Referenced by pause(), paused(), resume(), resuming(), runnable(), start(), starting(), stop(), stopped(), and stopping().
|
private |
Referenced by pause(), paused(), runnable(), start(), stopped(), stopping(), and uninitialize().
|
private |
Referenced by start().
|
private |
Referenced by readConfig().
|
private |
Referenced by isNeeded(), RudderServo(), and runnable().
|
private |
Referenced by isDataRequested(), RudderServo(), and runnable().
|
private |
Referenced by readConfig(), and RudderServo().
|
private |
Referenced by runnable().
|
private |
Referenced by starting(), and uninitialize().