6 #ifndef ECAT_XML_V1_0_H
7 #define ECAT_XML_V1_0_H
11 #include <initializer_list>
23 EcatDomainConfig loadDomainConfig(tinyxml2::XMLElement* domain_xml,
const std::string& path)
const override;
27 int loadTopologyXml(
const std::string& path,
const std::string& filename,
28 std::vector<EcatDevice>& device_config_list)
const;
30 bool loadSdoXml(tinyxml2::XMLElement* device,
unsigned int device_id,
31 std::vector<EcatSdoConfig>* sdo_config_list)
const;
33 std::vector<EcatPdoInfo> loadDataMaps(tinyxml2::XMLElement* parent)
const;
35 bool loadPdoXml(tinyxml2::XMLElement* device,
const EcatDevice& device_config,
36 std::vector<EcatSyncInfo>* sync_info_list)
const;
39 bool loadMailboxXml(tinyxml2::XMLElement* device,
const EcatDevice& device_config,
const std::string& path,
40 std::vector<EcatMailbox>* mailbox_config_list)
const;
42 bool loadDcXml(tinyxml2::XMLElement* device,
const EcatDevice& device_config,
EcatDcInfo* dc_config)
const;
45 bool loadInitCmdXml(
const std::string& path,
const std::string& filename,
EcatMailbox& mailbox_config)
const;
48 bool parseSoe(tinyxml2::XMLNode* soe_node, std::vector<EcatSoe>& soe)
const;
51 bool parseCoe(tinyxml2::XMLNode* coe_node, std::vector<EcatCoe>& coe)
const;
54 bool parseCsvCoe(
const char* csv_file, std::vector<EcatCoe>& coe)
const;
56 double getNoErrorSec(tinyxml2::XMLElement* element)
const;
58 double getErrorSec(tinyxml2::XMLElement* element)
const;
60 bool getSdoRecovery(tinyxml2::XMLElement* element)
const;
62 bool getXmlAttrib(tinyxml2::XMLElement* element,
const char* attrib,
unsigned int& val)
const;
64 bool getXmlAttribHex(tinyxml2::XMLElement* element,
const char* attrib,
unsigned int& val)
const;
66 tinyxml2::XMLElement* getFirstDevice(tinyxml2::XMLNode* element)
const;
68 tinyxml2::XMLElement* getFirstSmElement(tinyxml2::XMLNode* element)
const;
70 tinyxml2::XMLElement* getFirstDcElement(tinyxml2::XMLNode* element)
const;
72 tinyxml2::XMLNode* getFirstPdoElement(tinyxml2::XMLNode* element)
const;
74 tinyxml2::XMLNode* nextSiblingPdoElement(tinyxml2::XMLNode* element)
const;
76 bool hasMapAll(
const tinyxml2::XMLElement* element)
const;
78 bool getMapAll(
const tinyxml2::XMLElement* element)
const;
80 EcatPdoId getPdoEntryId(tinyxml2::XMLElement* element,
const std::string& element_name)
const;
82 EcatPdoId getSdoEntryId(tinyxml2::XMLElement* element)
const;
84 bool hasAlias(tinyxml2::XMLElement* element)
const;
86 bool getAlias(tinyxml2::XMLElement* element,
unsigned int* alias,
unsigned int* position)
const;
88 unsigned int getId(tinyxml2::XMLElement* element)
const;
90 unsigned int getSize(tinyxml2::XMLElement* element)
const;
92 EcatPdoInfo getDataMap(tinyxml2::XMLElement* element)
const;
94 ParameterLink getParameterLink(tinyxml2::XMLElement* element, ParameterLinkType type)
const;
96 unsigned int strToUIntHex(
const char* str,
bool force_hex =
false)
const;
98 unsigned long strToULongHex(
const char* str,
bool force_hex =
false)
const;
100 unsigned int getVendorId(tinyxml2::XMLNode* element)
const;
102 unsigned int getProductCode(tinyxml2::XMLNode* element)
const;
104 unsigned int getSyncManagerId(tinyxml2::XMLNode* pdo)
const;
106 unsigned int getIndex(tinyxml2::XMLNode* element)
const;
108 unsigned int getSubIndex(tinyxml2::XMLNode* element)
const;
110 unsigned int getBitLen(tinyxml2::XMLNode* element)
const;
112 const char* getDeviceName(tinyxml2::XMLNode* element)
const;
114 DataTypeDesc getDataType(tinyxml2::XMLNode* element)
const;
116 DataTypeDesc getDataTypeAttr(tinyxml2::XMLElement* element)
const;
118 bool isRxPdo(tinyxml2::XMLNode* element)
const;
120 bool isTxPdo(tinyxml2::XMLNode* element)
const;
123 bool getSyncInfo(
const std::vector<EcatSyncInfo>& sync_info_list,
unsigned int sm_index,
126 bool getSyncAndPdoInfo(
const std::vector<EcatSyncInfo>& sync_info_list,
unsigned int pdo_index,
129 bool getSyncAndPdoAndEntryInfo(
const std::vector<EcatSyncInfo>& sync_info_list,
const EcatPdoId& pdo_id,
132 bool getPdoInfo(
const std::vector<EcatPdoInfo>& pdo_info_list,
unsigned int pdo_index,
EcatPdoInfo*& pdo_info)
const;
134 bool getEntryInfo(
const std::vector<EcatPdoInfo>& entry_info_list,
unsigned int entry_index,
135 unsigned int entry_subindex,
bool is_mapped,
EcatPdoInfo*& entry_info)
const;
137 static unsigned int getPdoBitLength(
const std::vector<EcatPdoInfo>& entry_info_list);
139 inline static unsigned int getDeviceId(
const EcatDevice& config_list_element);
141 inline static unsigned int getDeviceId(
const EcatDeviceConfig& config_list_element);
143 template <
typename T>
144 bool findSlaveByDeviceId(
const std::vector<T>& config_list,
unsigned int device_id, T& config_list_element)
const;
146 template <
typename T>
147 bool getSlaveByDeviceId(
const std::vector<T>& config_list,
unsigned int device_id, T*& config_list_element_ptr)
const;
150 inline unsigned int EtherCatXmlV1_0::getDeviceId(
const EcatDevice& config_list_element) {
151 return config_list_element.device_info.position;
154 inline unsigned int EtherCatXmlV1_0::getDeviceId(
const EcatDeviceConfig& config_list_element) {
155 return config_list_element.info.position;