157 "Name": entry_name, |
157 "Name": entry_name, |
158 "Type": entry_type, |
158 "Type": entry_type, |
159 "BitSize": object.getBitSize(), |
159 "BitSize": object.getBitSize(), |
160 "Access": entry_access, |
160 "Access": entry_access, |
161 "PDOMapping": entry_pdomapping} |
161 "PDOMapping": entry_pdomapping} |
162 |
162 |
163 for TxPdo in self.getTxPdo(): |
163 for TxPdo in self.getTxPdo(): |
164 ExtractPdoInfos(TxPdo, "Transmit", entries, limits) |
164 ExtractPdoInfos(TxPdo, "Transmit", entries, limits) |
165 for RxPdo in self.getRxPdo(): |
165 for RxPdo in self.getRxPdo(): |
166 ExtractPdoInfos(RxPdo, "Receive", entries, limits) |
166 ExtractPdoInfos(RxPdo, "Receive", entries, limits) |
167 |
167 |
168 return entries |
168 return entries |
169 setattr(cls, "GetEntriesList", GetEntriesList) |
169 setattr(cls, "GetEntriesList", GetEntriesList) |
170 |
170 |
171 def GetSyncManagers(self): |
171 def GetSyncManagers(self): |
172 sync_managers = [] |
172 sync_managers = [] |
173 for sync_manager in self.getSm(): |
173 for sync_manager in self.getSm(): |
174 sync_manager_infos = {} |
174 sync_manager_infos = {} |
175 for name, value in [("Name", sync_manager.getcontent()), |
175 for name, value in [("Name", sync_manager.getcontent()), |
285 if os.path.isfile(filepath) and os.path.splitext(filepath)[-1] == ".xml": |
285 if os.path.isfile(filepath) and os.path.splitext(filepath)[-1] == ".xml": |
286 xmlfile = open(filepath, 'r') |
286 xmlfile = open(filepath, 'r') |
287 xml_tree = minidom.parse(xmlfile) |
287 xml_tree = minidom.parse(xmlfile) |
288 xmlfile.close() |
288 xmlfile.close() |
289 |
289 |
290 modules_infos = None |
290 self.modules_infos = None |
291 for child in xml_tree.childNodes: |
291 for child in xml_tree.childNodes: |
292 if child.nodeType == xml_tree.ELEMENT_NODE and child.nodeName == "EtherCATInfo": |
292 if child.nodeType == xml_tree.ELEMENT_NODE and child.nodeName == "EtherCATInfo": |
293 modules_infos = EtherCATInfoClasses["EtherCATInfo.xsd"]["EtherCATInfo"]() |
293 self.modules_infos = EtherCATInfoClasses["EtherCATInfo.xsd"]["EtherCATInfo"]() |
294 modules_infos.loadXMLTree(child) |
294 self.modules_infos.loadXMLTree(child) |
295 |
295 |
296 if modules_infos is not None: |
296 if self.modules_infos is not None: |
297 vendor = modules_infos.getVendor() |
297 vendor = self.modules_infos.getVendor() |
298 |
298 |
299 vendor_category = self.Library.setdefault(ExtractHexDecValue(vendor.getId()), |
299 vendor_category = self.Library.setdefault(ExtractHexDecValue(vendor.getId()), |
300 {"name": ExtractName(vendor.getName(), _("Miscellaneous")), |
300 {"name": ExtractName(vendor.getName(), _("Miscellaneous")), |
301 "groups": {}}) |
301 "groups": {}}) |
302 |
302 |
303 for group in modules_infos.getDescriptions().getGroups().getGroup(): |
303 for group in self.modules_infos.getDescriptions().getGroups().getGroup(): |
304 group_type = group.getType() |
304 group_type = group.getType() |
305 |
305 |
306 vendor_category["groups"].setdefault(group_type, {"name": ExtractName(group.getName(), group_type), |
306 vendor_category["groups"].setdefault(group_type, {"name": ExtractName(group.getName(), group_type), |
307 "parent": group.getParentGroup(), |
307 "parent": group.getParentGroup(), |
308 "order": group.getSortOrder(), |
308 "order": group.getSortOrder(), |
|
309 "value": group.getcontent()["value"], |
309 "devices": []}) |
310 "devices": []}) |
310 |
311 |
311 for device in modules_infos.getDescriptions().getDevices().getDevice(): |
312 for device in self.modules_infos.getDescriptions().getDevices().getDevice(): |
312 device_group = device.getGroupType() |
313 device_group = device.getGroupType() |
313 if not vendor_category["groups"].has_key(device_group): |
314 if not vendor_category["groups"].has_key(device_group): |
314 raise ValueError, "Not such group \"%\"" % device_group |
315 raise ValueError, "Not such group \"%\"" % device_group |
315 vendor_category["groups"][device_group]["devices"].append((device.getType().getcontent(), device)) |
316 vendor_category["groups"][device_group]["devices"].append((device.getType().getcontent(), device)) |
|
317 |
|
318 return self.Library |
316 |
319 |
317 def GetModulesLibrary(self, profile_filter=None): |
320 def GetModulesLibrary(self, profile_filter=None): |
318 if self.Library is None: |
321 if self.Library is None: |
319 self.LoadModules() |
322 self.LoadModules() |
320 library = [] |
323 library = [] |
373 for device_type, device_infos in group_infos["devices"]: |
376 for device_type, device_infos in group_infos["devices"]: |
374 product_code = ExtractHexDecValue(device_infos.getType().getProductCode()) |
377 product_code = ExtractHexDecValue(device_infos.getType().getProductCode()) |
375 revision_number = ExtractHexDecValue(device_infos.getType().getRevisionNo()) |
378 revision_number = ExtractHexDecValue(device_infos.getType().getRevisionNo()) |
376 if (product_code == ExtractHexDecValue(module_infos["product_code"]) and |
379 if (product_code == ExtractHexDecValue(module_infos["product_code"]) and |
377 revision_number == ExtractHexDecValue(module_infos["revision_number"])): |
380 revision_number == ExtractHexDecValue(module_infos["revision_number"])): |
|
381 self.cntdevice = device_infos |
|
382 self.cntdeviceType = device_type |
378 return device_infos, self.GetModuleExtraParams(vendor, product_code, revision_number) |
383 return device_infos, self.GetModuleExtraParams(vendor, product_code, revision_number) |
379 return None, None |
384 return None, None |
380 |
385 |
381 def ImportModuleLibrary(self, filepath): |
386 def ImportModuleLibrary(self, filepath): |
382 if os.path.isfile(filepath): |
387 if os.path.isfile(filepath): |