Tekkotsu Homepage | Demos | Overview | Downloads | Dev. Resources | Reference | Credits |
ControlBase Class Reference#include <ControlBase.h>
Inheritance diagram for ControlBase:
![]() Detailed DescriptionBase class for all items in the Controller hierarchy.These are similar to behaviors in that they can do processing and are told when to start and stop. However, the important difference is that these have to follow a much tighter set of guidelines for a more refined purpose - user interface. Controls do not directly receive events - the Controller will process events for them and call the appropriate functions at the appropriate times. Controls are expected to fit into a heirarchical scheme, where each control (except the root) has a parent which created it, and may return its own children where appropriate. Controls can be very powerful, and a class can be both a behavior and a control. This allows integrated user interface to controlling a complex behavior. Some controls may simply need EventListener access instead to perform a few tricks. Mix and match as you see fit. (multiple inheritance can be nice if it's planned for, as these have been)
This base class will do most of the work of maintaining submenus for you, and will call appropriate virtual functions which you are expected to override. Controls generally live in The ControlBase pointers which are returned at various points are the responsibility of the creator. Controller will not delete them upon deactivation.
GUI Theory:
Obviously, higher levels require more technological resources, which also means there's more to go wrong and debug. However, another important distinction between the first level and the others is that the first level does not require the user to lose direct contact with the robot. Requiring the user to move back and forth from robot to computer can be much more frustrating than decoding LED signals or press head buttons. There are also safety issues when triggering behaviors remotely if the robot is out of immediate reach. But of course, having a GUI and text output is extremely valuable in terms of ease of use and efficiency. So, the lesson is to try to support all 3 levels so that your interfaces will be robust and efficient in a variety of environments. You'll thank yourself when you're demoing on the road and you can't get wavelan up, or the guest machine you're supposed to use doesn't have Java, or whatever.
Definition at line 65 of file ControlBase.h.
Constructor & Destructor Documentation
Contructor.
Definition at line 70 of file ControlBase.h. Referenced by EventLogger::EventLogger(), PostureEditor::PostureEditor(), SensorObserverControl::SensorObserverControl(), and WalkCalibration::WalkCalibration().
you can override, but don't call this...
Member Function Documentation
Called when the control is activated (or the control system is reactivating). Takes the id number of a LedMC which the control should use, maintained by Controller. Controls share the display which is passed, and may use the socket gui to communicate with the GUI controller, if it is connected.
Reimplemented in BatteryCheckControl, BehaviorActivatorControl, BehaviorReportControl, BehaviorSwitchActivatorControl, BehaviorSwitchControlBase, FileBrowserControl, HelpControl, NullControl, PostureEditor, ProfilerCheckControl, RebootControl, ShutdownControl, SimulatorAdvanceFrameControl, ToggleControl, TorqueCalibrate::TakeMeasurementControl, ValueEditControl< T >, WalkCalibration, and WaypointWalkControl. Definition at line 10 of file ControlBase.cc. Referenced by WaypointWalkControl::activate(), WalkCalibration::activate(), ValueEditControl< T >::activate(), TorqueCalibrate::TakeMeasurementControl::activate(), PostureEditor::activate(), FileBrowserControl::activate(), BehaviorSwitchControlBase::activate(), and BatteryCheckControl::activate().
called when a control is being overriden by a child, or the control system is deactivating (e-stop being turned off)
Reimplemented in BatteryCheckControl, NetworkStatusControl, PostureEditor, SensorObserverControl::RTViewControl, and ValueEditControl< T >. Definition at line 18 of file ControlBase.cc. Referenced by WaypointWalkControl::doSelect(), ValueEditControl< T >::pause(), SensorObserverControl::RTViewControl::pause(), PostureEditor::pause(), and NetworkStatusControl::pause().
called when the child has deactivated and this control should refresh its display, or some other event (such as the user pressing the refresh button) has happened to cause a refresh to be needed
Reimplemented in BatteryCheckControl, ConfigurationEditor, ConfigurationEditor::AddCollectionEntry, ConfigurationEditor::NewCollectionEntry, ConfigurationEditor::NamedEnumerationEditor, EventLogger, FreeMemReportControl, NetworkStatusControl, PostureEditor, SensorObserverControl, SensorObserverControl::RTViewControl, StringInputControl, TorqueCalibrate::TakeMeasurementControl, TorqueCalibrate, ValueEditControl< T >, WalkCalibration, and WaypointWalkControl. Definition at line 24 of file ControlBase.cc. Referenced by activate(), doNextItem(), doPrevItem(), FileBrowserControl::doSelect(), invalidInput(), WaypointWalkControl::refresh(), WalkCalibration::refresh(), TorqueCalibrate::TakeMeasurementControl::refresh(), TorqueCalibrate::refresh(), StringInputControl::refresh(), SensorObserverControl::RTViewControl::refresh(), SensorObserverControl::refresh(), PostureEditor::refresh(), NetworkStatusControl::refresh(), FreeMemReportControl::refresh(), EventLogger::refresh(), ConfigurationEditor::NamedEnumerationEditor::refresh(), ConfigurationEditor::refresh(), setHilights(), and takeInput().
called when this control is being popped from the control stack
Reimplemented in BatteryCheckControl, ConfigurationEditor::AddCollectionEntry, ConfigurationEditor::NewCollectionEntry, ConfigurationEditor::NamedEnumerationEditor, NetworkStatusControl, PostureEditor, SensorObserverControl::RTViewControl, TorqueCalibrate::TakeMeasurementControl, WalkCalibration, and WaypointWalkControl. Definition at line 94 of file ControlBase.cc. Referenced by WaypointWalkControl::deactivate(), WalkCalibration::deactivate(), TorqueCalibrate::TakeMeasurementControl::deactivate(), SensorObserverControl::RTViewControl::deactivate(), PostureEditor::deactivate(), NetworkStatusControl::deactivate(), ConfigurationEditor::NamedEnumerationEditor::deactivate(), ConfigurationEditor::NewCollectionEntry::deactivate(), and ConfigurationEditor::AddCollectionEntry::deactivate().
when the user has trigger an "open selection" - default is to return the hilighted control*/ The value which is returned is then activate()ed and pushed on the Controller's stack Reimplemented in BatteryCheckControl, ConfigurationEditor::NewCollectionEntry, ConfigurationEditor::NamedEnumerationEditor, EventLogger, FileBrowserControl, MCValueEditControl< T >, NullControl, RebootControl, SensorObserverControl, ShutdownControl, ToggleControl, ValueEditControl< T >, WalkCalibration, WaypointWalkControl, and WaypointWalkControl::WaypointEditControl. Definition at line 108 of file ControlBase.cc. Referenced by WaypointWalkControl::WaypointEditControl::doSelect(), WaypointWalkControl::doSelect(), WalkCalibration::doSelect(), FileBrowserControl::doSelect(), ConfigurationEditor::NewCollectionEntry::doSelect(), and takeInput().
when the user wants to increment the control - default is to hilight the first non-null slot after the last hilight, and return
The value which is returned is then activate()ed and pushed on the Controller's stack, so you probably want to return Reimplemented in NullControl, and ValueEditControl< T >. Definition at line 149 of file ControlBase.cc.
when the user wants to decrement the control - default is to hilight the last non-null slot before the first hilight, and return
The value which is returned is then activate()ed and pushed on the Controller's stack, so you probably want to return Reimplemented in NullControl, and ValueEditControl< T >. Definition at line 167 of file ControlBase.cc.
when the user wants to cancel - you should almost always return NULL now unless you need to override the cancel in order to confirm something (e.g. "Save changes?")
The value which is returned is then activate()ed and pushed on the Controller's stack, you probably want to return Definition at line 185 of file ControlBase.cc.
prompt the user for text input on the current input device (cin, tekkotsu console (sout), or GUI)
The value which is returned is then activate()ed and pushed on the Controller's stack, so you probably want to return Reimplemented in NullControl, and StringInputControl. Definition at line 191 of file ControlBase.cc. Referenced by StringInputControl::doReadStdIn(), WalkCalibration::processEvent(), and WalkCalibration::takeInput().
called when the user has supplied a text string (may or may not have been prompted by doReadStdIn()! May not even be active yet - the user can direct the same input to a set of hilighted menus) The value which is returned is then activate()ed and pushed on the Controller's stack Reimplemented in BehaviorSwitchControlBase, FileBrowserControl, NullControl, SavePostureControl, SaveWalkControl, StringInputControl, TorqueCalibrate::TakeMeasurementControl, ValueEditControl< T >, and WalkCalibration. Definition at line 222 of file ControlBase.cc. Referenced by doReadStdIn(), Controller::select(), WalkCalibration::takeInput(), NullControl::takeInput(), FileBrowserControl::takeInput(), BehaviorSwitchControlBase::takeInput(), and Controller::takeLine().
may be called before takeInput to verify this Control can make sense of msg
Definition at line 333 of file ControlBase.cc.
sets the name of the control
Reimplemented in ToggleControl. Definition at line 119 of file ControlBase.h. Referenced by SensorObserverControl::checkLogFile(), EventLogger::checkLogFile(), WaypointWalkControl::doSelect(), TorqueCalibrate::refresh(), WalkCalibration::setupClear(), and WalkCalibration::setupRoot().
returns the name of the control
Reimplemented in BehaviorSwitchActivatorControl, BehaviorSwitchControlBase, BehaviorSwitchControl< B, Al >, FreeMemReportControl, SimulatorAdvanceFrameControl, and ValueEditControl< T >. Definition at line 120 of file ControlBase.h. Referenced by SensorObserverControl::checkLogFile(), EventLogger::checkLogFile(), StringInputControl::doReadStdIn(), SensorObserverControl::doSelect(), FileBrowserControl::doSelect(), EventLogger::doSelect(), ValueEditControl< T >::getName(), SimulatorAdvanceFrameControl::getName(), FreeMemReportControl::getName(), BehaviorSwitchControl< B, Al >::getName(), BehaviorSwitchControlBase::getName(), EventLogger::processEvent(), refresh(), and BatteryCheckControl::refresh().
sets the description of the control
Definition at line 122 of file ControlBase.h. Referenced by WaypointWalkControl::doSelect(), and TorqueCalibrate::refresh().
returns a short description of what the control does
Reimplemented in BehaviorSwitchActivatorControl, BehaviorSwitchControlBase, BehaviorSwitchControl< B, Al >, and SimulatorAdvanceFrameControl. Definition at line 123 of file ControlBase.h. Referenced by SimulatorAdvanceFrameControl::getDescription(), and BehaviorSwitchControlBase::getDescription().
returns the vector of sub-controls
Definition at line 125 of file ControlBase.h. Referenced by SensorObserverControl::processEvent(), HelpControl::report(), Controller::select(), and SensorObserverControl::updateRT().
returns the string that will appear in slot i
Definition at line 338 of file ControlBase.cc. Referenced by refresh().
returns the number of options available
Definition at line 127 of file ControlBase.h. Referenced by BehaviorSwitchControlBase::activate(), WalkCalibration::hilightFirst(), WaypointWalkControl::refresh(), refresh(), WalkCalibration::setHilights(), SensorObserverControl::updateRT(), and WaypointWalkControl::WaypointWalkControl().
sets next unused element of options to o
Definition at line 352 of file ControlBase.cc. Referenced by EventLogger::EventLogger(), TorqueCalibrate::init(), FreeMemReportControl::init(), FileBrowserControl::init(), ConfigurationEditor::init(), PostureEditor::PostureEditor(), FileBrowserControl::rebuildmenu(), WaypointWalkControl::refresh(), TorqueCalibrate::TakeMeasurementControl::refresh(), NetworkStatusControl::refresh(), ConfigurationEditor::NamedEnumerationEditor::refresh(), ConfigurationEditor::NewCollectionEntry::refresh(), ConfigurationEditor::AddCollectionEntry::refresh(), ConfigurationEditor::refresh(), SensorObserverControl::SensorObserverControl(), WalkCalibration::setupChoose(), WalkCalibration::setupClear(), WalkCalibration::setupMoving(), WalkCalibration::setupReading1(), WalkCalibration::setupReading2(), WalkCalibration::setupReady(), WalkCalibration::setupRoot(), SensorObserverControl::updateRT(), WalkCalibration::WalkCalibration(), WaypointWalkControl::WaypointEditControl::WaypointEditControl(), and WaypointWalkControl::WaypointWalkControl().
deletes each slot item and clears the slots
Reimplemented in ConfigurationEditor, and EventLogger. Definition at line 356 of file ControlBase.cc. Referenced by EventLogger::clearSlots(), ConfigurationEditor::clearSlots(), ConfigurationEditor::NamedEnumerationEditor::deactivate(), ConfigurationEditor::NewCollectionEntry::deactivate(), ConfigurationEditor::AddCollectionEntry::deactivate(), FileBrowserControl::rebuildmenu(), TorqueCalibrate::TakeMeasurementControl::refresh(), NetworkStatusControl::refresh(), WalkCalibration::setupChoose(), WalkCalibration::setupMoving(), WalkCalibration::setupReading1(), WalkCalibration::setupReading2(), WalkCalibration::setupReady(), WalkCalibration::setupRoot(), SensorObserverControl::updateRT(), ~ControlBase(), and FreeMemReportControl::~FreeMemReportControl().
sets the hilighted slots
Reimplemented in ConfigurationEditor::NamedEnumerationEditor, and WalkCalibration. Definition at line 363 of file ControlBase.cc. Referenced by WalkCalibration::hilightFirst(), WalkCalibration::setHilights(), and ConfigurationEditor::NamedEnumerationEditor::setHilights().
sets the hilight to the first non-null slot
Reimplemented in WalkCalibration. Definition at line 379 of file ControlBase.cc. Referenced by activate(), and WalkCalibration::hilightFirst().
clears the display (if use_VT100 is on)
Definition at line 389 of file ControlBase.cc. Referenced by deactivate(), doSelect(), refresh(), and takeInput().
called by takeInput if the input doesn't match any slots or matches multiple slots -- the ControlBase implementation displays an error and returns itself
Reimplemented in FileInputControl. Definition at line 396 of file ControlBase.cc. Referenced by FileInputControl::invalidInput(), and takeInput().
returns the average of the hilighted indicies - used to know to play the "next" sound, or the "prev" sound when the hilight changes
Definition at line 405 of file ControlBase.cc. Referenced by setHilights().
you can override, but don't call this...
Referenced by ValueSetControl< T >::operator=(), and ValueEditControl< T >::operator=().
Member Data Documentation
the name of this control
Definition at line 154 of file ControlBase.h. Referenced by getName(), ToggleControl::getStatusChar(), invalidInput(), PostureEngine::loadLine(), ToggleControl::setName(), setName(), ToggleControl::setStatus(), and takeInput().
the description of this control
Definition at line 155 of file ControlBase.h. Referenced by getDescription(), and setDescription().
keep sorted - index(es) of current selection - can have multiple if using GUI
Definition at line 156 of file ControlBase.h. Referenced by clearSlots(), deactivate(), doNextItem(), doPrevItem(), WaypointWalkControl::WaypointEditControl::doSelect(), WaypointWalkControl::doSelect(), WalkCalibration::doSelect(), SensorObserverControl::doSelect(), FileBrowserControl::doSelect(), EventLogger::doSelect(), doSelect(), ConfigurationEditor::NamedEnumerationEditor::doSelect(), ConfigurationEditor::NewCollectionEntry::doSelect(), getHilights(), hilightFirst(), hilightsAvg(), FileBrowserControl::rebuildmenu(), refresh(), setHilights(), WalkCalibration::setupChoose(), and takeInput().
vector of controls to select from
Definition at line 157 of file ControlBase.h. Referenced by EventLogger::checkLogFile(), clearMenu(), clearSlots(), ConfigurationEditor::clearSlots(), doNextItem(), doPrevItem(), WaypointWalkControl::WaypointEditControl::doSelect(), WaypointWalkControl::doSelect(), WalkCalibration::doSelect(), SensorObserverControl::doSelect(), FileBrowserControl::doSelect(), EventLogger::doSelect(), doSelect(), ConfigurationEditor::NamedEnumerationEditor::doSelect(), ConfigurationEditor::NewCollectionEntry::doSelect(), getSlotName(), getSlots(), WalkCalibration::hilightFirst(), hilightFirst(), EventLogger::processEvent(), pushSlot(), FileBrowserControl::rebuildmenu(), WaypointWalkControl::refresh(), PostureEditor::refresh(), FreeMemReportControl::refresh(), refresh(), ConfigurationEditor::NamedEnumerationEditor::refresh(), ConfigurationEditor::NewCollectionEntry::refresh(), ConfigurationEditor::AddCollectionEntry::refresh(), ConfigurationEditor::refresh(), WalkCalibration::setHilights(), setHilights(), ConfigurationEditor::setRootCollection(), setSlot(), EventLogger::setStatus(), WalkCalibration::setupChoose(), WalkCalibration::setupClear(), slotsSize(), FileBrowserControl::takeInput(), takeInput(), BehaviorSwitchControlBase::takeInput(), validInput(), PostureEditor::~PostureEditor(), and WalkCalibration::~WalkCalibration().
toggles using VT100 codes to reposition the cursor at the beginning of the menu we don't always want to do this, any time someone else might have written to the display we set this to false so we don't overwrite it. Definition at line 158 of file ControlBase.h. Referenced by deactivate(), doSelect(), pause(), refresh(), DumpFileControl::selectedFile(), and takeInput().
LedMC to use for displaying selection.
Definition at line 162 of file ControlBase.h. Referenced by activate(), deactivate(), BatteryCheckControl::deactivate(), doReadStdIn(), doSelect(), getDisplay(), BatteryCheckControl::pause(), NetworkStatusControl::refresh(), refresh(), BatteryCheckControl::report(), and setDisplay().
socket to communicate with the GUI, if it is connected
Definition at line 163 of file ControlBase.h. Referenced by activate(), StringInputControl::doReadStdIn(), doReadStdIn(), doSelect(), WalkCalibration::refresh(), ValueEditControl< T >::refresh(), refresh(), ConfigurationEditor::NamedEnumerationEditor::refresh(), and BatteryCheckControl::refresh().
The documentation for this class was generated from the following files: |
Tekkotsu v4.0 |
Generated Thu Nov 22 00:58:16 2007 by Doxygen 1.5.4 |