6 return static_cast<uint8_t
>(state_);
10 if (functionPtr ==
nullptr) {
15 for (std::size_t i = 0; i < callbackCount_; i++) {
16 const StateCallbackRegistration& registration = onStateEntryCallbacks_[i];
17 if (registration.state == targetState && registration.functionPtr == functionPtr) {
28 onStateEntryCallbacks_[callbackCount_] = {targetState, functionPtr};
34 if (state_ == newState) {
41 for (std::size_t i = 0; i < callbackCount_; i++) {
42 const StateCallbackRegistration& registration = onStateEntryCallbacks_[i];
43 if (registration.state == state_) {
44 registration.functionPtr();
virtual uint8_t getState() const
Current discrete state identifier.
bool registerOnStateEntry(FlightState targetState, StateEntryCallback functionPtr)
Register a callback to invoke each time a target state is entered.
bool changeState(FlightState newState)
Transition to a new state and trigger registered on-entry callbacks.
void(*)() StateEntryCallback
static constexpr std::size_t kMaxStateEntryCallbacks
FlightState getFlightState() const
Current state as FlightState enum.
BaseStateMachine(FlightState initialState=STATE_UNARMED)