Apr-04-2019, 02:24 AM
I found a library that might fit the bill, PyXML or easeXML seem like they might be able to achieve what I am looking for.
looking at the input and the structure of the message and the structure of the xml that decodes it the lengths quoted dont seem to match up:
Message:
looking at the input and the structure of the message and the structure of the xml that decodes it the lengths quoted dont seem to match up:
Message:
Output:[01-04-2019 13:16:18.209] MESSAGE-RX [DSE->ATO] ID=102 SEQNUM=0000173551 TIME=1554124577 SRC=01 DST=00 LEN=040 VALID=1 CRC=6CC41467 MESSAGE=6600280002A5EF00010008000000005CA20F21000100005CA20F210000050D00000000006714C46C
XML:Output:<message id="102" minlen="40" maxlen="40" name="dse internal status" msgType="request">
<payload>
<field><item name="messageId" len="8" descriptionLink="DSE_MESSAGE_ID" ><values><value>102</value></values></item> </field>
<field name="dseHeader">
<field><item name="length" len="16" /> </field>
<field><item name="sequenceNumber" len="32" /> </field>
<field><item name="destinationId" len="8" descriptionLink="DEVICE_ID" ><values><range from="0" to="3" /></values></item> </field>
<field><item name="sourceId" len="8" descriptionLink="DEVICE_ID" ><values><range from="0" to="3" /></values></item> </field>
<field><item name="ack" len="8" descriptionLink="BOOLEAN" ><values><range from="0" to="1" /></values></item> </field>
<field><item name="protocolVersion" len="8" /> </field>
<field><item name="debug" len="32" /> </field>
<field><item name="timestamp" len="32" /> </field>
</field>
<field><item name="currentDseOperativeMode" len="8" descriptionLink="DSE_MODE" ><values><range from="0" to="2" /></values></item> </field>
<field><item name="role" len="8" descriptionLink="ROLE" ><values><range from="0" to="1" /></values></item> </field>
<field><item name="isInsideStopWindow" len="8" descriptionLink="BOOLEAN" ><values><range from="0" to="1" /></values></item> </field>
<field><item name="liftingStrategyStatus" len="8" descriptionLink="LIFTING_STRATEGY_STATUS" ><values><range from="0" to="2" /></values></item> </field>
<field><item name="dseInternalUtc" len="32" /> </field>
<field><item name="dseFault" len="8" descriptionLink="DSE_FAULT" ><values><range from="0" to="8" /></values></item> </field>
<field name="dseSwVersion">
<field><item name="unused" len="8" /> </field>
<field><item name="majorVersion" len="8" /> </field>
<field><item name="minorVersion" len="8" /> </field>
<field><item name="buildVersion" len="8" /> </field>
</field>
<field name="dseTrackDbVersion">
<field><item name="unused" len="8" /> </field>
<field><item name="majorVersion" len="8" /> </field>
<field><item name="minorVersion" len="8" /> </field>
<field><item name="buildVersion" len="8" /> </field>
</field>
</payload>
<integrity poly="0x4A503DF1" init="0x00000000" refin="false" refout="false" xored="0x00000000">
<item name="crc" len="32" />
</integrity>
</message>
I feel like im missing something obvious here but the message is 80 bytes and the length is listed as 40(DEC) or 64(HEX)