72 virtual auto get_param(
const std::string& name) -> std::optional<int> = 0;
75 virtual auto set_param(
const std::string& name,
int value) ->
bool = 0;
104 auto get_param(
const std::string& name) -> std::optional<int>
override {
108 auto set_param(
const std::string& name,
const int value) ->
bool override {
155 static auto create(insitech::bus::IHub&
bus,
const uint32_t address,
156 const std::string& name,
157 const std::string& binary =
"lacteApp")
158 -> std::shared_ptr<ModelBusClient> {
160 address, proto::bus::make_identity(name, binary, 1,
"lacte"),
161 bus.make_client_bindings(address)));
162 bus.register_local_client(address, self);
174 serve<HealthRequest, StatusReply>(
178 "Model health check");
180 serve<ParamGetRequest, ParamGetReply>(
188 "Reads one board parameter's current value",
189 {proto::bus::TopicParam{
"param",
"param name",
true}});
191 serve<ParamSetRequest, StatusReply>(
196 "Sets one board parameter's value",
197 {proto::bus::TopicParam{
"param",
"param name",
true},
198 proto::bus::TopicParam{
"value",
"value",
true}});
200 serve<SnapshotRequest, SnapshotReply>(
204 "Returns the Model's current full board snapshot");
206 serve<RfidDataRequest, RfidDataReply>(
210 "Returns the currently-attached RFID card's raw data");
226 const proto::bus::NodeIdentity& identity, Bindings bindings)
227 : LocalClient(address, identity, std::move(bindings)) {}
Типы wire-формата, которыми обмениваются по шине lacte: BoardSnapshot (доменное значение) и типы сооб...
ModelBusHandler, реализованный через пользовательские колбэки.
auto health() -> bool override
Здоров ли бэкенд/диспенсер.
auto set_param(const std::string &name, const int value) -> bool override
Записывает именованный параметр; возвращает, удалась ли запись.
std::function< BoardSnapshot()> get_snapshot_fn
auto get_rfid_data() -> RfidData override
Формирует сырые данные текущей приложенной RFID-карты (см.
std::function< bool()> health_fn
std::function< bool(std::string, int)> set_param_fn
auto get_param(const std::string &name) -> std::optional< int > override
Читает именованный параметр; nullopt, если параметр неизвестен.
std::function< std::optional< int >(std::string)> get_param_fn
std::function< RfidData()> get_rfid_data_fn
auto get_snapshot() -> BoardSnapshot override
Формирует текущий снапшот устройства.
ModelBusClient(const ModelBusClient &)=delete
auto operator=(const ModelBusClient &) -> ModelBusClient &=delete
void serve_model(ModelBusHandler &handler)
Анонсирует и обслуживает все запросные топики из handler.
static auto create(insitech::bus::IHub &bus, const uint32_t address, const std::string &name, const std::string &binary="lacteApp") -> std::shared_ptr< ModelBusClient >
Создаёт ModelBusClient по адресу address на bus и регистрирует его там одним вызовом - см.
Серверный контракт: реализуйте эти методы, и ModelBusClient::ServeModel() будет их обслуживать.
virtual auto get_param(const std::string &name) -> std::optional< int >=0
Читает именованный параметр; nullopt, если параметр неизвестен.
virtual ~ModelBusHandler()=default
virtual auto health() -> bool=0
Здоров ли бэкенд/диспенсер.
virtual auto set_param(const std::string &name, int value) -> bool=0
Записывает именованный параметр; возвращает, удалась ли запись.
virtual auto get_rfid_data() -> RfidData=0
Формирует сырые данные текущей приложенной RFID-карты (см.
virtual auto get_snapshot() -> BoardSnapshot=0
Формирует текущий снапшот устройства.
constexpr uint32_t K_MODEL_BUS_ADDRESS
Предпочтительный адрес клиента Model (НЕ собственный own_address_ общей шины, который LacteApp выбира...
Моментальный снимок состояния диспенсера/платы, которым обмениваются бэкенд и UI (как запрос/ответ сн...
Запрос UI -> backend: жив ли бэкенд и здоров ли он? Без payload.
Ответ на ParamGetRequest: значение запрошенного параметра.
Запрос UI -> backend: прочитать именованный параметр бэкенда.
Запрос UI -> backend: записать именованный параметр бэкенда.
СЫРЫЕ поля, считанные с текущей подключённой RFID-карты/молочной системы - ДЕРЖАТСЯ ОТДЕЛЬНО от Board...
Ответ на RfidDataRequest: сырые данные RFID-карты.
Запрос UI -> backend: получить сырые данные текущей подключённой RFID-карты по требованию (почему это...
Ответ на SnapshotRequest: полный снапшот состояния устройства.
Запрос UI -> backend: получить полный снапшот устройства по требованию.
Универсальный ответ ok/error, переиспользуемый каждым запросом ниже, которому больше нечего сообщить ...