From 76d72f29224707231a802d8e14f6e4151636da76 Mon Sep 17 00:00:00 2001 From: Brian ONeill Date: Wed, 24 Mar 2021 07:26:07 -0700 Subject: [PATCH 1/2] Add dcf support close #53 --- canopen_monitor/parse/eds.py | 54 +- canopen_monitor/ui/pane.py | 1 - tests/__init__.py | 3052 ++++++++++++++++++++++++++++++++++ tests/spec_eds_parser.py | 24 +- tests/spec_time_parser.py | 2 +- 5 files changed, 3109 insertions(+), 24 deletions(-) diff --git a/canopen_monitor/parse/eds.py b/canopen_monitor/parse/eds.py index 2d3235e..9c573db 100644 --- a/canopen_monitor/parse/eds.py +++ b/canopen_monitor/parse/eds.py @@ -1,3 +1,4 @@ +from __future__ import annotations import string from re import finditer from typing import Union @@ -16,9 +17,9 @@ def camel_to_snake(old_str: str) -> str: :return: the camel-cased string :rtype: str """ - # Find all groups that contains one or more capital letters followed by one - # or more lowercase letters. The new, camel_cased string will be built - # up along the way. + # Find all groups that contains one or more capital letters followed by + # one or more lowercase letters The new, camel_cased string will be built + # up along the way new_str = "" for match in finditer('[A-Z0-9]+[a-z]*', old_str): span = match.span() @@ -26,16 +27,15 @@ def camel_to_snake(old_str: str) -> str: found_submatch = False # Add a "_" to the newstring to separate the current match group from - # the previous - # It looks like we shouldn't need to worry about getting - # "_strings_like_this", because they don't seem to happen + # the previous It looks like we shouldn't need to worry about getting + # "_strings_like_this", because they don't seem to happen if (span[0] != 0): new_str += '_' # Find all sub-groups of *more than one* capital letters within the - # match group, and seperate them with "_" characters, - # Append the subgroups to the new_str as they are found - # If no subgroups are found, just append the match group to the new_str + # match group, and separate them with "_" characters, Append the + # subgroups to the new_str as they are found If no subgroups are + # found, just append the match group to the new_str for sub_match in finditer('[A-Z]+', substr): sub_span = sub_match.span() sub_substr = old_str[sub_span[0]:sub_span[1]] @@ -60,7 +60,7 @@ def __init__(self, data): # Process all sub-data for e in data: # Skip comment lines - if(e[0] == ';'): + if (e[0] == ';'): continue # Separate field name from field value @@ -98,18 +98,13 @@ def __init__(self, data, sub_id=None): # Process all sub-data for e in data: # Skip commented lines - if(e[0] == ';'): + if (e[0] == ';'): continue # Separate field name from field value key, value = e.split('=') - # Turn number-like objects into numbers - if(value != ''): - if (all(c in string.digits for c in value)): - value = int(value, 10) - elif(all(c in string.hexdigits for c in value)): - value = int(value, 16) + value = convert_value(value) self.__setattr__(camel_to_snake(key), value) @@ -120,12 +115,23 @@ def __getitem__(self, key: int): return list(filter(lambda x: x.sub_id == key, self.sub_indices))[0] def __len__(self) -> int: - if(self.sub_indices is None): + if (self.sub_indices is None): return 1 else: return 1 + sum(map(lambda x: len(x), self.sub_indices)) +def convert_value(value: str) -> Union[int, str]: + # Turn number-like objects into numbers + if (value != ''): + if (all(c in string.digits for c in value)): + return int(value, 10) + elif (all(c in string.hexdigits for c in value)): + return int(value, 16) + else: + return value + + class EDS: def __init__(self, eds_data: [str]): """Parse the array of EDS lines into a dictionary of Metadata/Index @@ -153,7 +159,13 @@ def __init__(self, eds_data: [str]): self.__setattr__(camel_to_snake(name), Metadata(section[1:])) prev = i + 1 - self.node_id = self[0x2101].default_value + + if hasattr(self, 'device_commissioning'): + self.node_id = convert_value(self.device_commissioning.node_id) + elif '0x2101' in self.indices.keys(): + self.node_id = self['0x2101'].default_value + else: + self.node_id = None def __len__(self) -> int: return sum(map(lambda x: len(x), self.indices.values())) @@ -165,13 +177,13 @@ def __getitem__(self, key: Union[int, str]) -> Index: def load_eds_file(filepath: str) -> EDS: """Read in the EDS file, grab the raw lines, strip them of all escaped - characters, then serialize into an `EDS` and return the resulpythting + characters, then serialize into an `EDS` and return the resulting object. :param filepath: Path to an eds file :type filepath: str - :return: The succesfully serialized EDS file. + :return: The successfully serialized EDS file. :rtype: EDS """ with open(filepath) as file: diff --git a/canopen_monitor/ui/pane.py b/canopen_monitor/ui/pane.py index 822da2b..cfaf57c 100755 --- a/canopen_monitor/ui/pane.py +++ b/canopen_monitor/ui/pane.py @@ -135,7 +135,6 @@ def clear(self: Pane) -> None: """ self._pad.clear() self.parent.clear() - # self.refresh() def clear_line(self: Pane, y: int, style: any = None) -> None: """ diff --git a/tests/__init__.py b/tests/__init__.py index 137960d..6515a5b 100755 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -4697,3 +4697,3055 @@ AccessType=rw DefaultValue=none PDOMapping=0""" + +TEST_DCF="""[FileInfo] +FileName=generic_OD.dcf +FileVersion=1 +FileRevision=1 +LastEDS=/home/ryan/PSAS/repos-github/oresat-linux-manager/src/boards/generic/object_dictionary/generic_OD.eds +EDSVersion=4.0 +Description=OreSat Generic +CreationTime=11:41PM +CreationDate=03-09-2021 +CreatedBy=Ryan Medick +ModificationTime=7:40PM +ModificationDate=03-22-2021 +ModifiedBy=Ryan Medick + +[DeviceInfo] +VendorName=Portland State Aerospace Society +VendorNumber=0 +ProductName=OreSat Generic +ProductNumber=0 +RevisionNumber=0 +BaudRate_10=1 +BaudRate_20=1 +BaudRate_50=1 +BaudRate_125=1 +BaudRate_250=1 +BaudRate_500=1 +BaudRate_800=1 +BaudRate_1000=1 +SimpleBootUpMaster=0 +SimpleBootUpSlave=0 +Granularity=8 +DynamicChannelsSupported=0 +CompactPDO=0 +GroupMessaging=0 +NrOfRXPDO=4 +NrOfTXPDO=4 +LSS_Supported=0 + +[DummyUsage] +Dummy0001=0 +Dummy0002=1 +Dummy0003=1 +Dummy0004=1 +Dummy0005=1 +Dummy0006=1 +Dummy0007=1 + +[Comments] +Lines=0 + +[DeviceCommissioning] +NodeId=10 +NodeName=OreSat0 Generic +BaudRate=0 +NetNumber=0 +NetworkName= +CANopenManager=0 +LSS_SerialNumber=0 + +[MandatoryObjects] +SupportedObjects=3 +1=0x1000 +2=0x1001 +3=0x1018 + +[1000] +ParameterName=Device type +Denotation= +ObjectType=0x7 +;StorageLocation=ROM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1001] +ParameterName=Error register +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x00 +ParameterValue= +PDOMapping=1 + +[1018] +ParameterName=Identity +Denotation= +ObjectType=0x9 +;StorageLocation=ROM +SubNumber=0x5 + +[1018sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[1018sub1] +ParameterName=Vendor-ID +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1018sub2] +ParameterName=Product code +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1018sub3] +ParameterName=Revision number +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1018sub4] +ParameterName=Serial number +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[OptionalObjects] +SupportedObjects=35 +1=0x1002 +2=0x1003 +3=0x1005 +4=0x1006 +5=0x1007 +6=0x1008 +7=0x1009 +8=0x100A +9=0x1010 +10=0x1011 +11=0x1014 +12=0x1015 +13=0x1016 +14=0x1017 +15=0x1019 +16=0x1023 +17=0x1029 +18=0x1200 +19=0x1400 +20=0x1401 +21=0x1402 +22=0x1403 +23=0x1600 +24=0x1601 +25=0x1602 +26=0x1603 +27=0x1800 +28=0x1801 +29=0x1802 +30=0x1803 +31=0x1A00 +32=0x1A01 +33=0x1A02 +34=0x1A03 +35=0x1F80 + +[1002] +ParameterName=Manufacturer status register +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[1003] +ParameterName=Pre-defined error field +Denotation= +ObjectType=0x8 +;StorageLocation=RAM +SubNumber=0x9 + +[1003sub0] +ParameterName=Number of errors +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1003sub1] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub2] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub3] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub4] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub5] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub6] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub7] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1003sub8] +ParameterName=Standard error field +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1005] +ParameterName=COB-ID SYNC message +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000080 +ParameterValue= +PDOMapping=0 + +[1006] +ParameterName=Communication cycle period +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0007 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1007] +ParameterName=Synchronous window length +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0007 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1008] +ParameterName=Manufacturer device name +Denotation= +ObjectType=0x7 +;StorageLocation=ROM +DataType=0x0009 +AccessType=ro +DefaultValue=OreSat Linux Generic +ParameterValue= +PDOMapping=0 + +[1009] +ParameterName=Manufacturer hardware version +Denotation= +ObjectType=0x7 +;StorageLocation=ROM +DataType=0x0009 +AccessType=ro +DefaultValue=0.0 +ParameterValue= +PDOMapping=0 + +[100A] +ParameterName=Manufacturer software version +Denotation= +ObjectType=0x7 +;StorageLocation=ROM +DataType=0x0009 +AccessType=ro +DefaultValue=0.0.0 +ParameterValue= +PDOMapping=0 + +[1010] +ParameterName=Store parameters +Denotation= +ObjectType=0x8 +;StorageLocation=RAM +SubNumber=0x5 + +[1010sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[1010sub1] +ParameterName=Save all parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1010sub2] +ParameterName=Save communication parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1010sub3] +ParameterName=Save application parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1010sub4] +ParameterName=Save manufacturer defined parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1011] +ParameterName=Restore default parameters +Denotation= +ObjectType=0x8 +;StorageLocation=RAM +SubNumber=0x5 + +[1011sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[1011sub1] +ParameterName=Restore all default parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1011sub2] +ParameterName=Restore communication default parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1011sub3] +ParameterName=Restore application default parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1011sub4] +ParameterName=Restore manufacturer defined default parameters +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000001 +ParameterValue= +PDOMapping=0 + +[1014] +ParameterName=COB-ID EMCY +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80+$NODEID +ParameterValue= +PDOMapping=0 + +[1015] +ParameterName=Inhibit time EMCY +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1016] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x8 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1016sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x08 +ParameterValue= +PDOMapping=0 + +[1016sub1] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub2] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub3] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub4] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub5] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub6] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub7] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1016sub8] +ParameterName=Consumer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1017] +ParameterName=Producer heartbeat time +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0006 +AccessType=rw +DefaultValue=1000 +ParameterValue= +PDOMapping=0 + +[1019] +ParameterName=Synchronous counter overflow value +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1023] +ParameterName=OS command +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0x5 + +[1023sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[1023sub1] +ParameterName=Command +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=rw +DefaultValue= +ParameterValue= +PDOMapping=0 + +[1023sub2] +ParameterName=Status +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1023sub3] +ParameterName=Reply +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[1023sub4] +ParameterName=Reply len +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=10000 +ParameterValue= +PDOMapping=0 + +[1029] +ParameterName=Error behavior +Denotation= +ObjectType=0x8 +;StorageLocation=PERSIST_COMM +SubNumber=0x3 + +[1029sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x02 +ParameterValue= +PDOMapping=0 + +[1029sub1] +ParameterName=Communication error +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0x00 +ParameterValue= +PDOMapping=0 + +[1029sub2] +ParameterName=Profile- or manufacturer-specific error +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0x00 +ParameterValue= +PDOMapping=0 + +[1200] +ParameterName=SDO server parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x4 + +[1200sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x03 +ParameterValue= +PDOMapping=0 + +[1200sub1] +ParameterName=COB-ID client to server +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000000 +ParameterValue= +PDOMapping=1 + +[1200sub2] +ParameterName=COB-ID server to client +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000000 +ParameterValue= +PDOMapping=1 + +[1200sub3] +ParameterName=Node-ID of the SDO client +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0x01 +ParameterValue= +PDOMapping=0 + +[1400] +ParameterName=RPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x4 + +[1400sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x05 +ParameterValue= +PDOMapping=0 + +[1400sub1] +ParameterName=COB-ID used by RPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000200+$NODEID +ParameterValue= +PDOMapping=0 + +[1400sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1400sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1401] +ParameterName=RPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x4 + +[1401sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x05 +ParameterValue= +PDOMapping=0 + +[1401sub1] +ParameterName=COB-ID used by RPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000300+$NODEID +ParameterValue= +PDOMapping=0 + +[1401sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1401sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1402] +ParameterName=RPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x4 + +[1402sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x05 +ParameterValue= +PDOMapping=0 + +[1402sub1] +ParameterName=COB-ID used by RPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000400+$NODEID +ParameterValue= +PDOMapping=0 + +[1402sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1402sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1403] +ParameterName=RPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x4 + +[1403sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x05 +ParameterValue= +PDOMapping=0 + +[1403sub1] +ParameterName=COB-ID used by RPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x80000500+$NODEID +ParameterValue= +PDOMapping=0 + +[1403sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1403sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1600] +ParameterName=RPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1600sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1600sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1600sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601] +ParameterName=RPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1601sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1601sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1601sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602] +ParameterName=RPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1602sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1602sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1602sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603] +ParameterName=RPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1603sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1603sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1603sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1800] +ParameterName=TPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x7 + +[1800sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x06 +ParameterValue= +PDOMapping=0 + +[1800sub1] +ParameterName=COB-ID used by TPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0xC0000180+$NODEID +ParameterValue= +PDOMapping=0 + +[1800sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1800sub3] +ParameterName=Inhibit time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1800sub4] +ParameterName=compatibility entry +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1800sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1800sub6] +ParameterName=SYNC start value +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1801] +ParameterName=TPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x7 + +[1801sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x06 +ParameterValue= +PDOMapping=0 + +[1801sub1] +ParameterName=COB-ID used by TPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0xC0000280+$NODEID +ParameterValue= +PDOMapping=0 + +[1801sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1801sub3] +ParameterName=Inhibit time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1801sub4] +ParameterName=compatibility entry +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1801sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1801sub6] +ParameterName=SYNC start value +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1802] +ParameterName=TPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x7 + +[1802sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x06 +ParameterValue= +PDOMapping=0 + +[1802sub1] +ParameterName=COB-ID used by TPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0xC0000380+$NODEID +ParameterValue= +PDOMapping=0 + +[1802sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1802sub3] +ParameterName=Inhibit time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1802sub4] +ParameterName=compatibility entry +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1802sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1802sub6] +ParameterName=SYNC start value +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1803] +ParameterName=TPDO communication parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x7 + +[1803sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x06 +ParameterValue= +PDOMapping=0 + +[1803sub1] +ParameterName=COB-ID used by TPDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0xC0000480+$NODEID +ParameterValue= +PDOMapping=0 + +[1803sub2] +ParameterName=Transmission type +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=254 +ParameterValue= +PDOMapping=0 + +[1803sub3] +ParameterName=Inhibit time +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1803sub4] +ParameterName=compatibility entry +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1803sub5] +ParameterName=Event timer +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1803sub6] +ParameterName=SYNC start value +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1A00] +ParameterName=TPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1A00sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1A00sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A00sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01] +ParameterName=TPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1A01sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1A01sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A01sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02] +ParameterName=TPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1A02sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1A02sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A02sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03] +ParameterName=TPDO mapping parameter +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_COMM +SubNumber=0x9 + +[1A03sub0] +ParameterName=Number of mapped application objects in PDO +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[1A03sub1] +ParameterName=Mapping object 1 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub2] +ParameterName=Mapping object 2 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub3] +ParameterName=Mapping object 3 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub4] +ParameterName=Mapping object 4 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub5] +ParameterName=Mapping object 5 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub6] +ParameterName=Mapping object 6 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub7] +ParameterName=Mapping object 7 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1A03sub8] +ParameterName=Mapping object 8 +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000000 +ParameterValue= +PDOMapping=0 + +[1F80] +ParameterName=NMTStartup +Denotation= +ObjectType=0x7 +;StorageLocation=PERSIST_COMM +DataType=0x0007 +AccessType=rw +DefaultValue=0x00000008 +ParameterValue= +PDOMapping=0 + +[ManufacturerObjects] +SupportedObjects=11 +1=0x2000 +2=0x2010 +3=0x2011 +4=0x2100 +5=0x3001 +6=0x3002 +7=0x3003 +8=0x3004 +9=0x3005 +10=0x3006 +11=0x3100 + +[2000] +ParameterName=BUS management +Denotation= +ObjectType=0x9 +;StorageLocation=PERSIST_MFR +SubNumber=0x5 + +[2000sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[2000sub1] +ParameterName=Bdefault +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[2000sub2] +ParameterName=Ttoggle +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[2000sub3] +ParameterName=Ntoggle +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[2000sub4] +ParameterName=Ctoggle +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[2010] +ParameterName=SCET +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x001B +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[2011] +ParameterName=UTC +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x001B +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[2100] +ParameterName=Error status bits +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000A +AccessType=ro +DefaultValue=00000000000000000000 +ParameterValue= +PDOMapping=0 + +[3001] +ParameterName=Board info +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0x1D + +[3001sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x1C +ParameterValue= +PDOMapping=0 + +[3001sub1] +ParameterName=OS name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001sub2] +ParameterName=OS distro +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001sub3] +ParameterName=OS kernel version +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001sub4] +ParameterName=hostname +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001sub5] +ParameterName=Uptime +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub6] +ParameterName=Number of CPUs +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub7] +ParameterName=CPU architecture +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001sub8] +ParameterName=CPU governor +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub9] +ParameterName=CPU frequency +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0006 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001subA] +ParameterName=Number of remoteprocs +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001subB] +ParameterName=RemoteprocX selector +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001subC] +ParameterName=RemoteprocX name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001subD] +ParameterName=RemoteprocX state +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3001subE] +ParameterName=Load average 1min +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001subF] +ParameterName=Load average 5min +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub10] +ParameterName=Load average 15min +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub11] +ParameterName=Ram total +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub12] +ParameterName=Ram free +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub13] +ParameterName=Ram shared +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub14] +ParameterName=Ram buffered +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub15] +ParameterName=Ram percent +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[3001sub16] +ParameterName=Swap total +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub17] +ParameterName=Swap free +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub18] +ParameterName=Swap percent +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[3001sub19] +ParameterName=Procs +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub1A] +ParameterName=Root parition total +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub1B] +ParameterName=Root parition free +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3001sub1C] +ParameterName=Root parition percent +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[3002] +ParameterName=File caches +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0xA + +[3002sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x09 +ParameterValue= +PDOMapping=0 + +[3002sub1] +ParameterName=Fread cache len +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[3002sub2] +ParameterName=Fwrite cache len +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=1 + +[3002sub3] +ParameterName=Cache selector +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3002sub4] +ParameterName=Filter +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=rw +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3002sub5] +ParameterName=Cache len +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3002sub6] +ParameterName=Iterator +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3002sub7] +ParameterName=File name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3002sub8] +ParameterName=File size +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3002sub9] +ParameterName=Delete file +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3003] +ParameterName=Fread +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0x5 + +[3003sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[3003sub1] +ParameterName=File name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=rw +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3003sub2] +ParameterName=File data +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3003sub3] +ParameterName=Reset +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3003sub4] +ParameterName=Delete file +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3004] +ParameterName=Fwrite +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0x4 + +[3004sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x03 +ParameterValue= +PDOMapping=0 + +[3004sub1] +ParameterName=File name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=rw +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3004sub2] +ParameterName=File data +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3004sub3] +ParameterName=Reset +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3005] +ParameterName=App manager +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0x5 + +[3005sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x04 +ParameterValue= +PDOMapping=0 + +[3005sub1] +ParameterName=Total apps +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3005sub2] +ParameterName=Select app +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3005sub3] +ParameterName=App name +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3005sub4] +ParameterName=Daemon state +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0002 +AccessType=rw +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3006] +ParameterName=Get log +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3100] +ParameterName=Updater +Denotation= +ObjectType=0x9 +;StorageLocation=RAM +SubNumber=0xA + +[3100sub0] +ParameterName=Highest sub-index supported +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0005 +AccessType=ro +DefaultValue=0x09 +ParameterValue= +PDOMapping=0 + +[3100sub1] +ParameterName=Current state +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0004 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3100sub2] +ParameterName=Updates available +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x0007 +AccessType=ro +DefaultValue=0 +ParameterValue= +PDOMapping=0 + +[3100sub3] +ParameterName=Current update file +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub4] +ParameterName=Error message +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=ro +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub5] +ParameterName=Add update file +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub6] +ParameterName=Start update +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub7] +ParameterName=Emergency stop update +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub8] +ParameterName=Reset updater +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 + +[3100sub9] +ParameterName=Get apt list output +Denotation= +ObjectType=0x7 +;StorageLocation=RAM +DataType=0x000F +AccessType=wo +DefaultValue= +ParameterValue= +PDOMapping=0 +""" \ No newline at end of file diff --git a/tests/spec_eds_parser.py b/tests/spec_eds_parser.py index e277300..6b7e055 100644 --- a/tests/spec_eds_parser.py +++ b/tests/spec_eds_parser.py @@ -1,7 +1,7 @@ import unittest from canopen_monitor import parse from unittest.mock import mock_open, patch -from tests import TEST_EDS +from tests import TEST_EDS, TEST_DCF eds = parse.eds @@ -69,3 +69,25 @@ def test_named_sections(self): self.assertEqual("3", self.eds.mandatory_objects.supported_objects, "Error parsing Comments named section") + + +class TestDCF(unittest.TestCase): + def setUp(self): + with patch('builtins.open', mock_open(read_data=TEST_DCF)) as _: + self.eds = eds.load_eds_file("star_tracker_OD.eds") + + def test_check_device_commissioning(self): + """ + DCF Parsing should allow for parsing node id + """ + self.assertEqual("10", + self.eds.device_commissioning.node_id, + "Error parsing device commissioning") + + def test_get_node_id(self): + """ + DCF Parsing set node id attribute + """ + self.assertEqual(10, + self.eds.node_id, + "Error parsing node id") diff --git a/tests/spec_time_parser.py b/tests/spec_time_parser.py index ef75182..ca0aecb 100644 --- a/tests/spec_time_parser.py +++ b/tests/spec_time_parser.py @@ -3,7 +3,7 @@ from canopen_monitor.parse import time, eds from canopen_monitor.parse.utilities import FailedValidationError -from . import TEST_EDS +from tests import TEST_EDS class TestTIME(unittest.TestCase): From 58e41f7a7f63d976786149ccc41be8eb25e3ea65 Mon Sep 17 00:00:00 2001 From: Brian ONeill Date: Wed, 24 Mar 2021 15:58:57 -0700 Subject: [PATCH 2/2] Add EDS\OD file at runtime close #45 --- canopen_monitor/__main__.py | 2 +- canopen_monitor/app.py | 68 +++++++++++++++++++++++++++++-------- setup.py | 3 +- 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/canopen_monitor/__main__.py b/canopen_monitor/__main__.py index 8352c34..03ccd6b 100755 --- a/canopen_monitor/__main__.py +++ b/canopen_monitor/__main__.py @@ -70,7 +70,7 @@ def main(): # Start the can bus and the curses app with MagicCANBus(args.interfaces, no_block=args.no_block) as bus, \ - App(mt) as app: + App(mt, eds_configs) as app: while True: # Bus updates for message in bus: diff --git a/canopen_monitor/app.py b/canopen_monitor/app.py index 2d5fb03..1ecfa08 100644 --- a/canopen_monitor/app.py +++ b/canopen_monitor/app.py @@ -1,11 +1,14 @@ from __future__ import annotations import curses import datetime as dt +from easygui import fileopenbox +from shutil import copy from enum import Enum from . import APP_NAME, APP_VERSION, APP_LICENSE, APP_AUTHOR, APP_DESCRIPTION, \ - APP_URL + APP_URL, CACHE_DIR from .can import MessageTable, MessageType from .ui import MessagePane, PopupWindow +from .parse import eds # Key Constants not defined in curses # _UBUNTU key constants work in Ubuntu @@ -45,17 +48,33 @@ class KeyMap(Enum): value[2]: curses input value key """ - F1 = {'name':'F1','description':'Toggle app info menu','key' : curses.KEY_F1} - F2 = {'name':'F2', 'description':'Toggle this menu', 'key': curses.KEY_F2} - UP_ARR = {'name':'Up Arrow', 'description':'Scroll pane up 1 row', 'key':curses.KEY_UP} - DOWN_ARR = {'name':'Down Arrow', 'description':'Scroll pane down 1 row', 'key':curses.KEY_DOWN} - LEFT_ARR = {'name':'Left Arrow', 'description':'Scroll pane left 4 cols', 'key':curses.KEY_LEFT} - RIGHT_ARR = {'name':'Right Arrow', 'description':'Scroll pane right 4 cols', 'key':curses.KEY_RIGHT} - S_UP_ARR = {'name':'Shift + Up Arrow', 'description':'Scroll pane up 16 rows', 'key':KEY_S_UP} - S_DOWN_ARR ={'name':'Shift + Down Arrow', 'description':'Scroll pane down 16 rows', 'key':KEY_S_DOWN} - C_UP_ARR ={'name':'Ctrl + Up Arrow', 'description':'Move pane selection up', 'key':[KEY_C_UP, KEY_C_UP_UBUNTU]} - C_DOWN_ARR ={'name':'Ctrl + Down Arrow', 'description':'Move pane selection down', 'key':[KEY_C_DOWN, KEY_C_DOWN_UBUNTU]} - RESIZE ={'name':'Resize Terminal', 'description':'Reset the dimensions of the app', 'key':curses.KEY_RESIZE} + F1 = {'name': 'F1', 'description': 'Toggle app info menu', + 'key': curses.KEY_F1} + F2 = {'name': 'F2', 'description': 'Toggle this menu', 'key': curses.KEY_F2} + F3 = {'name': 'F3', 'description': 'Toggle eds file select', + 'key': curses.KEY_F3} + UP_ARR = {'name': 'Up Arrow', 'description': 'Scroll pane up 1 row', + 'key': curses.KEY_UP} + DOWN_ARR = {'name': 'Down Arrow', 'description': 'Scroll pane down 1 row', + 'key': curses.KEY_DOWN} + LEFT_ARR = {'name': 'Left Arrow', 'description': 'Scroll pane left 4 cols', + 'key': curses.KEY_LEFT} + RIGHT_ARR = {'name': 'Right Arrow', + 'description': 'Scroll pane right 4 cols', + 'key': curses.KEY_RIGHT} + S_UP_ARR = {'name': 'Shift + Up Arrow', + 'description': 'Scroll pane up 16 rows', 'key': KEY_S_UP} + S_DOWN_ARR = {'name': 'Shift + Down Arrow', + 'description': 'Scroll pane down 16 rows', 'key': KEY_S_DOWN} + C_UP_ARR = {'name': 'Ctrl + Up Arrow', + 'description': 'Move pane selection up', + 'key': [KEY_C_UP, KEY_C_UP_UBUNTU]} + C_DOWN_ARR = {'name': 'Ctrl + Down Arrow', + 'description': 'Move pane selection down', + 'key': [KEY_C_DOWN, KEY_C_DOWN_UBUNTU]} + RESIZE = {'name': 'Resize Terminal', + 'description': 'Reset the dimensions of the app', + 'key': curses.KEY_RESIZE} class App: @@ -71,13 +90,14 @@ class App: :type selected_pane: MessagePane """ - def __init__(self: App, message_table: MessageTable): + def __init__(self: App, message_table: MessageTable, eds_configs: dict): """ App Initialization function :param message_table: Reference to shared message table object :type MessageTable """ self.table = message_table + self.eds_configs = eds_configs self.selected_pane_pos = 0 self.selected_pane = None self.key_dict = { @@ -93,7 +113,8 @@ def __init__(self: App, message_table: MessageTable): KeyMap.RIGHT_ARR.value['key']: self.right, KeyMap.RESIZE.value['key']: self.resize, KeyMap.F1.value['key']: self.f1, - KeyMap.F2.value['key']: self.f2 + KeyMap.F2.value['key']: self.f2, + KeyMap.F3.value['key']: self.f3 } def __enter__(self: App) -> App: @@ -269,6 +290,23 @@ def f2(self): self.info_win.clear() self.hotkeys_win.toggle() + def f3(self): + """ + Toggles Add File window + :return: None + """ + filepath = fileopenbox(title='Select Object Dictionary Files', + filetypes=[['*.dcf', '*.eds', '*.xdd', + 'Object Dictionary Files']], + multiple=False, + default='~/.cache/canopen-monitor/') + + if (filepath is not None): + file = eds.load_eds_file(filepath) + copy(filepath, CACHE_DIR) + self.eds_configs[file.node_id] = file + + def _handle_keyboard_input(self: App) -> None: """ Retrieves keyboard input and calls the associated key function @@ -334,7 +372,7 @@ def __draw__footer(self: App) -> None: :return: None """ height, width = self.screen.getmaxyx() - footer = ': Info, : Hotkeys' + footer = ': Info, : Hotkeys, : Add OD File' self.screen.addstr(height - 1, 1, footer) def draw(self: App, ifaces: [tuple]) -> None: diff --git a/setup.py b/setup.py index 344bcbd..46d8d70 100755 --- a/setup.py +++ b/setup.py @@ -34,7 +34,8 @@ install_requires=[ "pyvit >= 0.2.1", "psutil >= 5.8.0", - "python-dateutil >= 2.8.1" + "python-dateutil >= 2.8.1", + "easygui >= 0.98.2", ], extras_require={ "dev": [