MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/driver/MemoryAccessPublisher.hh
2024-06-07 11:12:56 +03:00

50 lines
1.5 KiB
C++

//
// Created by titov on 03.11.2021.
//
#ifndef UMLIBRARY_DEV_MEMORYACCESSPUBLISHER_HH
#define UMLIBRARY_DEV_MEMORYACCESSPUBLISHER_HH
#include "../peripheral/IMemoryAccess.hh"
#include "../systemic/IProcess.hh"
#include "../communication/format/BinaryDataPublisher.hh"
#include <memory_resource>
#include <vector>
namespace driver {
class MemoryAccessPublisher : public communication::ISubscriberRegistrator,
public systemic::IProcess {
public:
MemoryAccessPublisher( peripheral::IMemoryAccess & memory_access, std::pmr::memory_resource * memory_resource );
void addSubscriber( std::size_t bit_address, std::size_t bit_len, communication::IBinaryDataSubscriber * subscriber ) override;
//!Основной фоновый метод, отвечающий за прием и чтение и разбор фрейма данных.
void process();
bool probe() const;
private:
communication::format::BinaryDataPublisher subscribers; //!Абонент.
std::vector< char, std::pmr::polymorphic_allocator<char> > data_frame;
std::size_t begin;
std::size_t size;
peripheral::IMemoryAccess & memory; //!Интерфейс последовательного порта, по которому будет производится получение пакета данных.
enum Phase {
request,
response,
mute
} phase = request;
};
}
#endif //UMLIBRARY_DEV_MEMORYACCESSPUBLISHER_HH