/* * SerialPacketReader.hh * * Created on: 17 дек. 2021 г. * Author: titov */ #ifndef UMLIBRARY_DRIVER_SERIALPACKETREADER_HH_ #define UMLIBRARY_DRIVER_SERIALPACKETREADER_HH_ #include "../systemic/IProcess.hh" #include "../peripheral/ISerialPort.hh" #include "../communication/format/BinaryDataPublisher.hh" namespace driver { class SerialPacketReader : public systemic::IProcess { public: SerialPacketReader( peripheral::ISerialPort & serial_port, communication::IBinaryDataSubscriber & binary_data, std::pmr::memory_resource * memory_resource, std::size_t bitsize, bool data_invers = false ); //!Основной фоновый метод, отвечающий за прием и чтение и разбор фрейма данных. void process(); private: std::vector< char, std::pmr::polymorphic_allocator > data_frame; peripheral::ISerialPort & serial_port; //!<Интерфейс последовательного порта, по которому будет производится получение пакета данных. communication::IBinaryDataSubscriber & binary_data; //!< const std::size_t bitsize; //!<Фиксированный размер посылки. enum Phase { request, response } phase = request; bool data_invers; }; } #endif /* UMLIBRARY_DRIVER_SERIALPACKETREADER_HH_ */