Template Class StateHUDIndicator

Inheritance Relationships

Base Type

  • public modm::Resumable< 2 >

Class Documentation

template<typename T>
class StateHUDIndicator : public modm::Resumable<2>

Draws a graphic. Each graphic has an associated state (of type specified by the template parameter). Can be true/false, some enumeration type, or something else. When the state associated with this object is updated, a function is called in which the user can update the graphic based on the state. In this way, the user may select to update color or shape of a graphic based on the indicator’s state.

To use this drawer, pass in a Graphic1Message object that you must configure via calls to configGraphicGenerics and config<circle|line|etc.>.

Usage:

To construct some StateHUDIndicator<bool> indicator you must pass it an UpdateHUDIndicatorState function. For example, the function can be something like this:

void updateColor(bool state, Tx::Graphic1Message *graphic) {
    graphic->graphicData.color = indicatorStatus ? GREEN : YELLOW;
}

Assuming some Tx::Graphic1Message graphic has been declared, to use the indicator, calls to initialize and draw must be done in a prothread similar to the following. It is recommended you put PT_YIELD in protothread loops to avoid infinite looping since the indicator’s draw function is not guaranteed to block:

PT_CALL(indicator.initialize());

while (true)
{
    PT_CALL(indicator.draw());
    PT_YIELD();
}
// Initialize the declare a drawer

Note

initialize should be called once at the start of a protothread being used to write graphic information to the referee system and draw should be called repeatedly, and will either resend the graphic if the color has changed or do nothing.

Template Parameters:

T – Type of the state associated with the HUD indicator.

Public Types

using UpdateHUDIndicatorState = void (*)(T state, tap::communication::serial::RefSerial::Tx::Graphic1Message *graphic)

Function pointer, this type of function will be called when the state of the graphic needs updating. Expected that the user will update the graphic appropriately based on the current state.

Public Functions

inline StateHUDIndicator(tap::communication::serial::RefSerialTransmitter &refSerialTransmitter, tap::communication::serial::RefSerial::Tx::Graphic1Message *graphic, UpdateHUDIndicatorState updateFunction, T initialState)
inline modm::ResumableResult<bool> initialize()
inline modm::ResumableResult<bool> draw()
inline void setIndicatorState(T newIndicatorState)

Public Static Attributes

static uint32_t MIN_UPDATE_PERIOD = 500

The state HUD indicator will ignore calls in setIndicatorState MIN_UPDATE_PERIOD ms after setIndicatorState is drawn. This is to avoid rapid back and forth updating of the graphic.