-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ENH: Add Enumeration states to XTCE parser #783
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -251,7 +251,6 @@ def _add_parameter(self, row: pd.Series, total_packet_bits: int) -> None: | |
# Combine the packet name and mnemonic to create a unique parameter name | ||
name = f"{row['packetName']}.{row['mnemonic']}" | ||
parameter.attrib["name"] = name | ||
# UINT8, ... | ||
parameter.attrib["parameterTypeRef"] = name | ||
|
||
# Add descriptions if they exist | ||
|
@@ -329,6 +328,10 @@ def _add_parameter(self, row: pd.Series, total_packet_bits: int) -> None: | |
# Go look up the conversion in the AnalogConversions tab | ||
# and add it to the encoding | ||
self._add_analog_conversion(row, encoding) | ||
elif row["convertAs"] == "STATE": | ||
# Go look up the states in the States tab | ||
# and add them to the parameter type | ||
self._add_state_conversion(row, parameter_type) | ||
|
||
def _add_analog_conversion(self, row: pd.Series, encoding: Et.Element) -> None: | ||
""" | ||
|
@@ -363,6 +366,34 @@ def _add_analog_conversion(self, row: pd.Series, encoding: Et.Element) -> None: | |
term.attrib["coefficient"] = str(conversion[col]) | ||
term.attrib["exponent"] = str(i) | ||
|
||
def _add_state_conversion(self, row: pd.Series, parameter_type: Et.Element) -> None: | ||
""" | ||
Add a state conversion to the parameter type. | ||
|
||
Changing from an IntegerParameterType to an EnumeratedParameterType. Adding | ||
the list of state mappings to the parameter type. | ||
|
||
Parameters | ||
---------- | ||
row : pandas.Row | ||
Row to be added to the XTCE file, containing mnemonic, packetName. | ||
parameter_type : Element | ||
The parameter type element to add the conversion to. | ||
""" | ||
# It is an EnumeratedParameterType rather than an IntegerParameterType | ||
parameter_type.tag = "xtce:EnumeratedParameterType" | ||
enumeration_list = Et.SubElement(parameter_type, "xtce:EnumerationList") | ||
# Lookup the enumeration states for this parameter from the States sheet | ||
state_sheet = self.sheets["States"] | ||
state_sheet = state_sheet.loc[ | ||
(state_sheet["packetName"] == row["packetName"]) | ||
& (state_sheet["mnemonic"] == row["mnemonic"]) | ||
] | ||
for _, state_row in state_sheet.iterrows(): | ||
enumeration = Et.SubElement(enumeration_list, "xtce:Enumeration") | ||
enumeration.attrib["value"] = str(state_row["value"]) | ||
enumeration.attrib["label"] = str(state_row["state"]) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am wondering if this function produces something like this?
I saw most of it but didn't see it add this line. I think we need that.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That is taken care of in the above There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I ran locally and it looks correct. |
||
|
||
def to_xml(self, output_xml_path: Path) -> None: | ||
""" | ||
Create and output an XTCE file from the Element Tree representation. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't notice that this column and that tab was connected. I knew that they stored enums(derived) values in that tab but didn't connect those two together. Nice!