#pragma once #include #include #include #include #include "profinet_parameter.hpp" #include "../../libs/include/pnet_api.h" class ProfinetSubmodule { public: ProfinetSubmodule(uint16_t submodule_id, std::string submodule_name, pnet_data_cfg_t& submodule_data_cfg, void * const inp_data_ptr, void * const out_data_ptr); bool addParameter(std::shared_ptr& param); std::shared_ptr getParameterPtr(uint32_t index); public: const uint16_t m_id; /// Идентификатор подмодуля const std::string m_name; /// Имя подмодуля const pnet_data_cfg_t m_data_cfg; /// Конфигурация циклических данных подмодуля /// iocs = I/O consumer status data (формат данных из pnet_ioxs_values_t) uint8_t m_indata_iocs; /// iops = I/O provider status data (формат данных из pnet_ioxs_values_t) uint8_t m_outdata_iops; void * const m_inp_data_ptr; /// Входные циклические данные (DEV->PLC) void * const m_out_data_ptr; /// Выходные циклические данные (PLC->DEV) private: /// Набор параметров подмодуля std::map> m_params; };