Packets with payloads of variable length.

2 views
Skip to first unread message

Tilman Glotzner

unread,
Oct 8, 2025, 5:22:38 PM (8 days ago) Oct 8
to yamcs
Good evening,

I am trying parse TM packets with payloads of variable length and started experimenting with algorithm definitions. The xtce-file containing the snippet below does not parse as the sizeInBits-attribute of a BinaryParameterType apparently only suports fixed values.
- Does yamcs supports this? What would be the proper way of doing this?
- I also realized that the derived parameters "ccsds_packet_total_bits" and "payload_bits" are shown in the section telemetry->parameters of the webgui. They seems however never to be updated (this is, of course, if I make the BinaryParameterType 'payload_t' of fixed size and the xtce-file parses)

Many thanks
Tilman

------ snippet from xtce-file

<SequenceContainer name="response">
  <SizeInBits>
        <SizeInBitsFromParameterRef parameterRef="ccsds_packet_total_bits"/>
   </SizeInBits>
   <EntryList>
      <ParameterRefEntry parameterRef="payload" >
           <LocationInContainerInBits>48</LocationInContainerInBits>
       </ParameterRefEntry>
 </EntryList>
...
</SequenceContainer>

<ParameterSet>
  <Parameter name="payload" parameterTypeRef="payload_t" />
  <Parameter name="ccsds_packet_total_bits" parameterTypeRef="uint32_t">
     <DerivedParameter updateType="ON_CHANGE">
          <ParameterProperties dataSource="DERIVED"/>
           <InputSet>
             <ParameterRef parameterRef="/ERMINAZ/ccsds_packet_length"/>
            </InputSet>
            <Algorithm text="(ccsds_packet_length + 1 + 6) * 8"/>
       </DerivedParameter>
  </Parameter>
   <Parameter name="payload_bits" parameterTypeRef="uint32_t">
   <DerivedParameter updateType="ON_CHANGE">
      <ParameterProperties dataSource="DERIVED"/>
        <InputSet>
           <ParameterRef parameterRef="/ERMINAZ/ccsds_packet_length"/>
        </InputSet>
        <Algorithm text="(ccsds_packet_length + 1 ) * 8"/>
      </DerivedParameter>
  </Parameter>
</ParameterSet>
<ParameterTypeSet>
  <BinaryParameterType name="payload_t" shortDescription="Bit Field">
     <UnitSet />
       <BinaryDataEncoding>
       <SizeInBits>
         <SizeInBitsFromParameterRef parameterRef="payload_bits"/>
        </SizeInBits>
      </BinaryDataEncoding>
    </BinaryParameterType>
</ParameterTypeSet>
 
  
Reply all
Reply to author
Forward
0 new messages