lacteApp
C++17 service for Lacte hardware
Loading...
Searching...
No Matches
SystemState.hpp
Go to the documentation of this file.
1#pragma once
2
26
27#include <cstdint>
28#include <string>
29
30namespace lacte {
31
33enum class SystemState : std::uint8_t {
35 NORMAL = 1,
38};
39
40[[nodiscard]] inline auto to_string(const SystemState state) -> std::string {
41 switch (state) {
43 return "door_open";
45 return "normal";
47 return "board_disconnected";
49 return "board_not_installed";
50 }
51 return "unknown";
52}
53
63 public:
69 void set_door_signal_lost(const bool lost) { m_door_signal_lost_ = lost; }
70
71 [[nodiscard]] auto door_signal_lost() const -> bool {
72 return m_door_signal_lost_;
73 }
74
79 [[nodiscard]] static auto resolve(const bool lacte_online,
80 const bool door_signal_lost) noexcept
81 -> SystemState {
82 if (lacte_online) {
84 }
87 }
88
89 [[nodiscard]] auto resolve(const bool lacte_online) const noexcept
90 -> SystemState {
91 return resolve(lacte_online, m_door_signal_lost_);
92 }
93
94 private:
95 bool m_door_signal_lost_{false};
96};
97
98} // namespace lacte
Хранит последний известный HMI-сигнал двери (единственная величина, которую сегодня физически некому ...
static auto resolve(const bool lacte_online, const bool door_signal_lost) noexcept -> SystemState
Таблица истинности как чистая статическая функция - без единой зависимости от протокола/шины/UART,...
void set_door_signal_lost(const bool lost)
Безопасное значение по умолчанию до первого реального HMI-пакета - "дверь закрыта" (см.
auto door_signal_lost() const -> bool
auto resolve(const bool lacte_online) const noexcept -> SystemState
SystemState
Четыре состояния системы, см. doc-комментарий файла выше.
auto to_string(const SystemState state) -> std::string