ProfinetConnector/src/profinet/profinet_submodule.hpp

43 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <cstdint>
#include <string>
#include <map>
#include <memory>
#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<ProfinetParameter>& param);
std::shared_ptr<ProfinetParameter> 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<uint32_t, std::shared_ptr<ProfinetParameter>> m_params;
};