Program Listing for File HsmTypes.hpp
↰ Return to documentation for file (include/hsmcpp/HsmTypes.hpp
)
// Copyright (C) 2023 Igor Krechetov
// Distributed under MIT license. See file LICENSE for details
#ifndef HSMCPP_HSMTYPES_HPP
#define HSMCPP_HSMTYPES_HPP
#include <functional>
#include "variant.hpp"
namespace hsmcpp {
using HandlerID_t = int32_t;
using TimerID_t = int32_t;
using EventID_t = int32_t;
using StateID_t = int32_t;
constexpr int HSM_WAIT_INDEFINITELY = 0;
constexpr int INVALID_ID = -1000;
constexpr hsmcpp::EventID_t INVALID_HSM_EVENT_ID = static_cast<hsmcpp::EventID_t>(INVALID_ID);
constexpr hsmcpp::StateID_t INVALID_HSM_STATE_ID = static_cast<hsmcpp::StateID_t>(INVALID_ID);
constexpr hsmcpp::TimerID_t INVALID_HSM_TIMER_ID = static_cast<hsmcpp::TimerID_t>(INVALID_ID);
constexpr hsmcpp::HandlerID_t INVALID_HSM_DISPATCHER_HANDLER_ID = 0;
using HsmTransitionCallback_t = std::function<void(const VariantVector_t&)>;
using HsmTransitionConditionCallback_t = std::function<bool(const VariantVector_t&)>;
using HsmStateChangedCallback_t = std::function<void(const VariantVector_t&)>;
using HsmStateEnterCallback_t = std::function<bool(const VariantVector_t&)>;
using HsmStateExitCallback_t = std::function<bool(void)>;
using HsmTransitionFailedCallback_t = std::function<void(const std::list<StateID_t>&, const EventID_t, const VariantVector_t&)>;
// cppcheck-suppress misra-c2012-20.7 ; enclosing input expressions in parentheses is not needed (and will not compile)
#define HsmTransitionCallbackPtr_t(_class, _func) void (_class::*_func)(const VariantVector_t&)
// cppcheck-suppress misra-c2012-20.7
#define HsmTransitionConditionCallbackPtr_t(_class, _func) bool (_class::*_func)(const VariantVector_t&)
// cppcheck-suppress misra-c2012-20.7
#define HsmStateChangedCallbackPtr_t(_class, _func) void (_class::*_func)(const VariantVector_t&)
// cppcheck-suppress misra-c2012-20.7
#define HsmStateEnterCallbackPtr_t(_class, _func) bool (_class::*_func)(const VariantVector_t&)
// cppcheck-suppress misra-c2012-20.7
#define HsmStateExitCallbackPtr_t(_class, _func) bool (_class::*_func)()
// cppcheck-suppress misra-c2012-20.7
#define HsmTransitionFailedCallbackPtr_t(_class, _func) void (_class::*_func)(const std::list<StateID_t>&, const EventID_t, const VariantVector_t&)
enum class HistoryType {
SHALLOW,
DEEP
};
enum class TransitionType {
INTERNAL_TRANSITION,
EXTERNAL_TRANSITION
};
enum class StateActionTrigger {
ON_STATE_ENTRY,
ON_STATE_EXIT
};
enum class StateAction {
START_TIMER,
STOP_TIMER,
RESTART_TIMER,
TRANSITION,
};
} // namespace hsmcpp
#endif // HSMCPP_HSMTYPES_HPP