#include "profinet_submodule.hpp"

ProfinetSubmodule::ProfinetSubmodule(uint32_t submodule_id, 
                      std::string submodule_name, 
                      pnet_data_cfg_t& submodule_data_cfg, 
                      void * const inp_data_ptr,
                      void * const out_data_ptr) : 
                      m_id(submodule_id), 
                      m_name(submodule_name),
                      m_data_cfg(submodule_data_cfg),
                      m_inp_data_ptr(inp_data_ptr),
                      m_out_data_ptr(out_data_ptr),
                      m_indata_iocs(0),
                      m_outdata_iops(0)
{

}

bool ProfinetSubmodule::addParameter(std::shared_ptr<ProfinetParameter>& param)
{
    auto ret = m_params.emplace(param->index, param);

    return ret.second;
}

std::shared_ptr<ProfinetParameter> ProfinetSubmodule::getParameterPtr(uint32_t index)
{
    if (!m_params.count(index))
    {
        return nullptr;
    }

    return m_params[index];
}