lacteApp
C++17 service for Lacte hardware
Loading...
Searching...
No Matches
board_flags_events.hpp File Reference

Переводит уже правильно расставленные "именованные" биты BoardFlags (back_proto_prototype.hpp) в доменные события смены состояния - сегодня в km_lacte такого слоя не было вообще (каждый бит был доступен только как "сырое" значение поля). More...

#include <vector>
#include "back_proto_prototype.hpp"
Include dependency graph for board_flags_events.hpp:

Go to the source code of this file.

Classes

class  proto::back_board_proto::BoardFlagsDiff
 Хранит предыдущий BoardFlags и превращает КАЖДЫЙ diff() вызов в список событий для всех битов, реально изменившихся с прошлого раза - как SystemStateResolver, protocol-agnostic (принимает уже распакованный BoardFlags, не сырой снапшот с провода). More...

Namespaces

namespace  proto
namespace  proto::back_board_proto

Enumerations

enum class  proto::back_board_proto::BoardFlagsEvent : uint8_t {
  proto::back_board_proto::DOOR_OPEN , proto::back_board_proto::DOOR_CLOSE , proto::back_board_proto::INER_WATER_SET , proto::back_board_proto::INER_WATER_UNSET ,
  proto::back_board_proto::BREWING_UNIT_SET , proto::back_board_proto::BREWING_UNIT_UNSET , proto::back_board_proto::BUNK_BULK_SET , proto::back_board_proto::BUNK_BULK_UNSET ,
  proto::back_board_proto::L_BUNK_FULL , proto::back_board_proto::L_BUNK_EMPTY , proto::back_board_proto::R_BUNK_FULL , proto::back_board_proto::R_BUNK_EMPTY ,
  proto::back_board_proto::L_BUNK_SET , proto::back_board_proto::L_BUNK_UNSET , proto::back_board_proto::R_BUNK_SET , proto::back_board_proto::R_BUNK_UNSET ,
  proto::back_board_proto::L_BUNK_BULK_FULL , proto::back_board_proto::L_BUNK_BULK_EMPTY , proto::back_board_proto::R_BUNK_BULK_FULL , proto::back_board_proto::R_BUNK_BULK_EMPTY ,
  proto::back_board_proto::WATER_FILLED , proto::back_board_proto::WATER_LACK , proto::back_board_proto::NORM_PRESSURE , proto::back_board_proto::OVER_PRESSURE ,
  proto::back_board_proto::BOILER_TEMP_OK , proto::back_board_proto::BOILER_TEMP_TOO_LOW , proto::back_board_proto::STEAM_BOILER_TEMP_OK , proto::back_board_proto::STEAM_BOILER_TEMP_TOO_LOW ,
  proto::back_board_proto::MILK_PRESENT , proto::back_board_proto::MILK_EMPTY , proto::back_board_proto::DONE_DIAGNOSIS_BREWING_UNIT , proto::back_board_proto::NEED_DIAGNOSIS_BREWING_UNIT ,
  proto::back_board_proto::BOILER_HEATING_TIME_OK , proto::back_board_proto::BOILER_HEATING_TIME_TOO_LONG , proto::back_board_proto::BOILER_STEAM_HEATING_TIME_OK , proto::back_board_proto::BOILER_STEAM_HEATING_TIME_TOO_LONG ,
  proto::back_board_proto::HOT_STEAM_BOILER_SENSOR_OK , proto::back_board_proto::HOT_STEAM_BOILER_SENSOR_ERROR , proto::back_board_proto::HOT_WATER_BOILER_SENSOR_OK , proto::back_board_proto::HOT_WATER_BOILER_SENSOR_ERROR ,
  proto::back_board_proto::BREWING_MECH_OK , proto::back_board_proto::BREWING_MECH_ERROR , proto::back_board_proto::WATER_SUPPLY_OK , proto::back_board_proto::WATER_SUPPLY_ERROR ,
  proto::back_board_proto::RIGHT_COF_GRINDER_OK , proto::back_board_proto::RIGHT_COF_GRINDER_ERROR , proto::back_board_proto::LEFT_COF_GRINDER_OK , proto::back_board_proto::LEFT_COF_GRINDER_ERROR
}

Detailed Description

Переводит уже правильно расставленные "именованные" биты BoardFlags (back_proto_prototype.hpp) в доменные события смены состояния - сегодня в km_lacte такого слоя не было вообще (каждый бит был доступен только как "сырое" значение поля).

Источник имён/полярности - живой, годами обкатанный на реальной плате старый парсер (km_mcu_proto_parser, coffeman_condition/cond.cpp:1479-1877), перенесено один-в-один: какое именно значение бита ("0" или "1") даёт какое событие, у каждого сигнала СВОЁ (не единая конвенция "1=A, 0=B") - см. doc-комментарий каждой ветки BoardFlagsDiff::diff() ниже, где это явно подписано парой напротив соответствующего условия.

Протокол-агностичный, чистый класс - по образцу LacteApp/SystemState.hpp's SystemStateResolver (хранимое предыдущее состояние + чистая функция перехода), а не wire-тип наподобие LacteApp/bus/Envelopes.hpp's событий - этот файл не публикует ничего ни на какую шину и не знает о LacteApp/coffeboost вообще; он даёт будущему инструменту-замене km_mcu_proto_parser готовый, протестированный слой bit→event поверх уже существующего BoardFlags.

Definition in file board_flags_events.hpp.