XTCE 1.2 RTF Avatar
  1. OMG Issue

XTCE12 — Missed the CommandContainer updates to support Argument references

  • Key: XTCE12-478
  • Status: closed  
  • Source: Boeing ( Mr. David Overeem)
  • Summary:

    In the commanding side of the schema, the CommandContainer heavily leverages the SequenceContainer from the telemetry side of the schema. This introduces an issue at several points where only parameters can be referenced when it is often more appropriate for arguments to be referenced.

    This change was done by the committee but got missed in the proposed updates.

  • Reported: XTCE 1.1 — Sun, 6 Aug 2017 16:33 GMT
  • Disposition: Resolved — XTCE 1.2
  • Disposition Summary:

    Propose to correct the missing updated to CommandContainer

    This resolution addresses the portion of the issue where the EntryList in CommandContainer does not sufficiently cover references to Arguments, in addition to Parameters. This requires creating a number of new types to add Argument specific support.

    First section of new types is needed to get up to creating an ArgumentSequenceEntryType derived from SequenceEntryType:

    Add new types to support the big upcoming ArgumentSequenceEntryType.

    First add ArgumentInstanceRefType and ArgumentInstanceType after the existing ArgumentAssignmentListType:

    <complexType name="ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">An argument instance is the name of an argument as the reference is always resolved locally to the metacommand.</documentation>
    </annotation>
    <attribute name="argumentRef" type="xtce:NameType" use="required">
    <annotation>
    <documentation xml:lang="en">Give the name of the argument. There is no path, this is a local reference.</documentation>
    </annotation>
    </attribute>
    <attribute name="useCalibratedValue" type="boolean" default="true">
    <annotation>
    <documentation xml:lang="en">Typically the calibrated/engineering value is used and that is the default.</documentation>
    </annotation>
    </attribute>
    </complexType>

    <complexType name="ArgumentInstanceType">
    <annotation>
    <documentation xml:lang="en">The argument must be in the argument list of the metacommand. It's always just the name of the argument, not a true ref because the scope is always local to the metacommand its being used in.</documentation>
    </annotation>
    <sequence>
    <element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Reference to an argument instance value</documentation>
    </annotation>
    </element>
    </sequence>
    </complexType>

    After the ArgumentAssignmentType, add ArgumentComparisonType, ArgumentComparisonListType, ArgumentComparisonCheckType, and ArgumentDynamicValueType:

    <complexType name="ArgumentDynamicValueType">
    <annotation>
    <documentation xml:lang="en">Identical to DynamicValueType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <choice>
    <element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Retrieve the value by referencing the value of an Argument.</documentation>
    </annotation>
    </element>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Retrieve the value by referencing the value of a Parameter.</documentation>
    </annotation>
    </element>
    </choice>
    <element name="LinearAdjustment" type="xtce:LinearAdjustmentType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">A slope and intercept may be applied to scale or shift the value selected from the argument or parameter.</documentation>
    </annotation>
    </element>
    </sequence>
    </complexType>

    <complexType name="ArgumentComparisonListType">
    <annotation>
    <documentation xml:lang="en">Identical to ComparisonListType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="Comparison" type="xtce:ArgumentComparisonType" maxOccurs="unbounded">
    <annotation>
    <documentation xml:lang="en">List of Comparison elements must all be true for the comparison to evaluate to true.</documentation>
    </annotation>
    </element>
    </sequence>
    </complexType>

    <complexType name="ArgumentComparisonType">
    <annotation>
    <documentation xml:lang="en">Identical to ComparisonType but supports argument instance references.</documentation>
    </annotation>
    <choice>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">This parameter instance is being compared to the value in the parent element using the comparison defined there also.</documentation>
    </annotation>
    </element>
    <element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">This argument instance is being compared to the value in the parent element using the comparison defined there also.</documentation>
    </annotation>
    </element>
    </choice>
    <attribute name="comparisonOperator" type="xtce:ComparisonOperatorsType" default="==">
    <annotation>
    <documentation xml:lang="en">Comparison operator to use with equality being the common default.</documentation>
    </annotation>
    </attribute>
    <attribute name="value" type="string" use="required">
    <annotation>
    <documentation xml:lang="en">Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
    </annotation>
    </attribute>
    </complexType>

    <complexType name="ArgumentComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Identical to ComparisonCheckType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <sequence>
    <choice>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Left hand side parameter instance.</documentation>
    </annotation>
    </element>
    <element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Left hand side argument instance.</documentation>
    </annotation>
    </element>
    </choice>
    <element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
    <annotation>
    <documentation xml:lang="en">Comparison operator.</documentation>
    </annotation>
    </element>
    <choice>
    <choice>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
    </annotation>
    </element>
    <element name="ArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Right hand side argument instance. Argument is assumed to be of the same type as the comparison Argument or Parameter.</documentation>
    </annotation>
    </element>
    </choice>
    <element name="Value" type="string">
    <annotation>
    <documentation xml:lang="en">Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
    </annotation>
    </element>
    </choice>
    </sequence>
    </extension>
    </complexContent>
    </complexType>

    Now add the new ArgumentBooleanExpressionType, ArgumentANDedConditionsType, and ArgumentORedConditionsType following the above additions:

    <complexType name="ArgumentBooleanExpressionType">
    <annotation>
    <documentation xml:lang="en">Identical to BooleanExpressionType but supports argument instance references.</documentation>
    </annotation>
    <choice>
    <element name="Condition" type="xtce:ArgumentComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Condition elements describe a test similar to the Comparison element except that the arguments/parameters used have additional flexibility.</documentation>
    </annotation>
    </element>
    <element name="ANDedConditions" type="xtce:ArgumentANDedConditionsType">
    <annotation>
    <documentation xml:lang="en">This element describes tests similar to the ComparisonList element except that the arguments/parameters used are more flexible.</documentation>
    </annotation>
    </element>
    <element name="ORedConditions" type="xtce:ArgumentORedConditionsType">
    <annotation>
    <documentation xml:lang="en">This element describes tests similar to the ComparisonList element except that the arguments/parameters used are more flexible.</documentation>
    </annotation>
    </element>
    </choice>
    </complexType>

    <complexType name="ArgumentANDedConditionsType">
    <annotation>
    <documentation xml:lang="en">Identical to ANDedConditionsType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <choice minOccurs="2" maxOccurs="unbounded">
    <element name="Condition" type="xtce:ArgumentComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Condition elements describe a test similar to the Comparison element except that the arguments/parameters used have additional flexibility for the compare.</documentation>
    </annotation>
    </element>
    <element name="ORedConditions" type="xtce:ArgumentORedConditionsType">
    <annotation>
    <documentation xml:lang="en">This element describes tests similar to the ComparisonList element except that the arguments/parameters used are more flexible and the and/or for multiple checks can be specified.</documentation>
    </annotation>
    </element>
    </choice>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentORedConditionsType">
    <annotation>
    <documentation xml:lang="en">Identical to ORedConditionsType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <choice minOccurs="2" maxOccurs="unbounded">
    <element name="Condition" type="xtce:ArgumentComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Condition elements describe a test similar to the Comparison element except that the arguments/parameters used have additional flexibility for the compare.</documentation>
    </annotation>
    </element>
    <element name="ANDedConditions" type="xtce:ArgumentANDedConditionsType">
    <annotation>
    <documentation xml:lang="en">This element describes tests similar to the ComparisonList element except that the arguments/parameters used are more flexible and the and/or for multiple checks can be specified.</documentation>
    </annotation>
    </element>
    </choice>
    </extension>
    </complexContent>
    </complexType>

    Prior to ArgumentListType, add the ArgumentInputAlgorithmType, ArgumentInputSetType, ArgumentDiscreteLookupListType, and ArgumentDiscreteLookupType

    <complexType name="ArgumentInputAlgorithmType">
    <annotation>
    <documentation xml:lang="en">Identical to InputAlgorithmType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:SimpleAlgorithmType">
    <sequence>
    <element name="InputSet" type="xtce:ArgumentInputSetType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">The InputSet describes the list of arguments and/or parameters that should be made available as input arguments to the algorithm.</documentation>
    </annotation>
    </element>
    </sequence>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentInputSetType">
    <annotation>
    <documentation xml:lang="en">Identical to InputSetType but supports argument instance references.</documentation>
    </annotation>
    <choice maxOccurs="unbounded">
    <element name="InputParameterInstanceRef" type="xtce:InputParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Reference a parameter to serve as an input to the algorithm.</documentation>
    </annotation>
    </element>
    <element name="InputArgumentInstanceRef" type="xtce:ArgumentInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Reference an argument to serve as an input to the algorithm.</documentation>
    </annotation>
    </element>
    </choice>
    </complexType>

    <complexType name="ArgumentDiscreteLookupListType">
    <annotation>
    <documentation xml:lang="en">Identical to DiscreteLookupListType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="DiscreteLookup" type="xtce:ArgumentDiscreteLookupType" maxOccurs="unbounded">
    <annotation>
    <documentation xml:lang="en">Describe a lookup condition set using discrete values from arguments and/or parameters.</documentation>
    </annotation>
    </element>
    </sequence>
    </complexType>

    <complexType name="ArgumentDiscreteLookupType">
    <annotation>
    <documentation xml:lang="en">Identical to ArgumentDiscreteLookupType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentMatchCriteriaType">
    <attribute name="value" type="long" use="required">
    <annotation>
    <documentation xml:lang="en">Value to use when the lookup conditions are true.</documentation>
    </annotation>
    </attribute>
    </extension>
    </complexContent>
    </complexType>

    After the ArgumentListType, add the new ArgumentMatchCriteriaType:

    <complexType name="ArgumentMatchCriteriaType">
    <annotation>
    <documentation xml:lang="en">Identical to MatchCriteriaType but supports argument instance references.</documentation>
    </annotation>
    <choice>
    <element name="Comparison" type="xtce:ArgumentComparisonType">
    <annotation>
    <documentation xml:lang="en">A simple comparison check involving a single test of an argument or parameter value.</documentation>
    </annotation>
    </element>
    <element name="ComparisonList" type="xtce:ArgumentComparisonListType">
    <annotation>
    <documentation xml:lang="en">A series of simple comparison checks with an implicit 'and' in that they all must be true for the overall condition to be true.</documentation>
    </annotation>
    </element>
    <element name="BooleanExpression" type="xtce:ArgumentBooleanExpressionType">
    <annotation>
    <documentation xml:lang="en">An arbitrarily complex boolean expression that has additional flexibility on the terms beyond the Comparison and ComparisonList elements.</documentation>
    </annotation>
    </element>
    <element name="CustomAlgorithm" type="xtce:ArgumentInputAlgorithmType">
    <annotation>
    <documentation xml:lang="en">An escape to an externally defined algorithm.</documentation>
    </annotation>
    </element>
    </choice>
    </complexType>

    After the existing IntegerValueType, add a new ArgumentIntegerValueType:

    <complexType name="ArgumentIntegerValueType">
    <annotation>
    <documentation xml:lang="en">Identical to IntegerValueType but supports argument instance references.</documentation>
    </annotation>
    <choice>
    <element name="FixedValue" type="long">
    <annotation>
    <documentation xml:lang="en">Use a fixed integer value.</documentation>
    </annotation>
    </element>
    <element name="DynamicValue" type="xtce:ArgumentDynamicValueType">
    <annotation>
    <documentation xml:lang="en">Determine the value by interrogating an instance of an argument or parameter.</documentation>
    </annotation>
    </element>
    <element name="DiscreteLookupList" type="xtce:ArgumentDiscreteLookupListType">
    <annotation>
    <documentation xml:lang="en">Determine the value by interrogating an instance of an argument or parameter and selecting a specified value based on tests of the value of that argument or parameter.</documentation>
    </annotation>
    </element>
    </choice>
    </complexType>

    After the existing RepeatType, add a new ArgumentRepeatType:

    <complexType name="ArgumentRepeatType">
    <annotation>
    <documentation xml:lang="en">Identical to RepeatType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="Count" type="xtce:ArgumentIntegerValueType">
    <annotation>
    <documentation xml:lang="en">Value (either fixed or dynamic) that contains the count of repeated structures.</documentation>
    </annotation>
    </element>
    <element name="Offset" type="xtce:ArgumentIntegerValueType" minOccurs="0"/>
    </sequence>
    </complexType>

    After the existing LocationInContainerInBitsType, add a new ArgumentLocationInContainerInBitsType:

    <complexType name="ArgumentLocationInContainerInBitsType">
    <annotation>
    <documentation xml:lang="en">Identical to LocationInContainerInBitsType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentIntegerValueType">
    <attribute name="referenceLocation" type="xtce:ReferenceLocationType" default="previousEntry"/>
    </extension>
    </complexContent>
    </complexType>

    This uses the above stuff (dropped TimeAssociation from Argument entries - doesn't make sense):

    After the existing SequenceEntryType, add a new ArgumentSequenceEntryType:

    <complexType name="ArgumentSequenceEntryType" abstract="true">
    <annotation>
    <documentation xml:lang="en">Identical to a SequenceEntryType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="LocationInContainerInBits" type="xtce:ArgumentLocationInContainerInBitsType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">The start bit 0 position for each container is local to the container, but does include space occupied by inherited containers. When a container is "included", as opposed to inherited, then the interpreting implementation takes into account the start bit position of the referring container when finally assembling the start bits for the post-processed entry content. The default start bit for any entry is 0 bits from the previous entry, making the content contiguous when this element is not used.</documentation>
    </annotation>
    </element>
    <element name="RepeatEntry" type="xtce:ArgumentRepeatType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">May be used when this entry repeats itself in the sequence container. When an entry repeats, it effectively specifies that the same entry is reported more than once in the container and has the same physical meaning. This should not be construed to be equivalent to arrays.</documentation>
    </annotation>
    </element>
    <element name="IncludeCondition" type="xtce:ArgumentMatchCriteriaType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">This entry will only be included in the sequence when this condition is true, otherwise it is always included. When the include condition evaluates to false, it is as if the entry does not exist such that any start bit interpretations cannot take into account the space that would have been occupied if this included condition were true.</documentation>
    </annotation>
    </element>
    <element name="AncillaryDataSet" type="xtce:AncillaryDataSetType" minOccurs="0">
    <annotation>
    <documentation xml:lang="en">Ancillary data associated with this entry.</documentation>
    </annotation>
    </element>
    </sequence>
    <attribute name="shortDescription" type="xtce:ShortDescriptionType" use="optional">
    <annotation>
    <documentation xml:lang="en">Optional short description for this entry element.</documentation>
    </annotation>
    </attribute>
    </complexType>

    Add these Array Dimension types for the Array Argument after the existing DimensionType and DimensionListType:

    <complexType name="ArgumentDimensionType">
    <annotation>
    <documentation xml:lang="en">Identical to DimensionType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="StartingIndex" type="xtce:ArgumentIntegerValueType">
    <annotation>
    <documentation xml:lang="en">zero based index</documentation>
    </annotation>
    </element>
    <element name="EndingIndex" type="xtce:ArgumentIntegerValueType"/>
    </sequence>
    </complexType>

    <complexType name="ArgumentDimensionListType">
    <annotation>
    <documentation xml:lang="en">Identical to DimensionListType but supports argument instance references.</documentation>
    </annotation>
    <sequence>
    <element name="Dimension" type="xtce:ArgumentDimensionType" maxOccurs="unbounded">
    <annotation>
    <appinfo>For an ArrayParameterType of size N, their should be N Dimensions</appinfo>
    <appinfo>An array made up by multiple Entries should not have indexes that overlap, but should be continuous.</appinfo>
    </annotation>
    </element>
    </sequence>
    </complexType>

    Now we get to the actual entries in the EntryList. Add these new entry types at the beginning of the packaging schema section, prior to the existing ArrayParameterRefEntryType:

    <complexType name="ArgumentArgumentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ArgumentRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="argumentRef" type="xtce:NameReferenceType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ParameterRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="parameterRef" type="xtce:NameReferenceType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentParameterSegmentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ParameterSegmentRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="parameterRef" type="xtce:NameReferenceType" use="required"/>
    <attribute name="order" type="xtce:PositiveLongType"/>
    <attribute name="sizeInBits" type="xtce:PositiveLongType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentContainerRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ContainerRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="containerRef" type="xtce:NameReferenceType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentContainerSegmentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ContainerSegmentRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="containerRef" type="xtce:NameReferenceType" use="required"/>
    <attribute name="order" type="xtce:PositiveLongType"/>
    <attribute name="sizeInBits" type="xtce:PositiveLongType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentStreamSegmentEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to StreamRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="streamRef" type="xtce:NameReferenceType" use="required"/>
    <attribute name="order" type="xtce:PositiveLongType"/>
    <attribute name="sizeInBits" type="xtce:PositiveLongType" use="required"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentIndirectParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to IndirectParameterRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <sequence>
    <element name="ParameterInstance" type="xtce:ParameterInstanceRefType"/>
    </sequence>
    <attribute name="aliasNameSpace" type="string"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentArrayParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ArrayParameterRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <sequence minOccurs="0">
    <annotation>
    <documentation xml:lang="en">Only used for subsetting an array. The array's true dimension sizes are set in the Type.</documentation>
    </annotation>
    <element name="DimensionList" type="xtce:DimensionListType">
    <annotation>
    <documentation xml:lang="en">The dimension here if used for subsetting must be less than the ones in the type. It's not a subset if its the same size.</documentation>
    </annotation>
    </element>
    </sequence>
    <attribute name="parameterRef" type="xtce:NameReferenceType" use="required"/>
    <attribute name="lastEntryForThisArrayInstance" type="boolean" default="false"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentArrayArgumentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to ArrayParameterRefEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <sequence minOccurs="0">
    <annotation>
    <documentation xml:lang="en">Only used for subsetting an array. The array's true dimension sizes are set in the Type.</documentation>
    </annotation>
    <element name="DimensionList" type="xtce:ArgumentDimensionListType">
    <annotation>
    <documentation xml:lang="en">The dimension here if used for subsetting must be less than the ones in the type. It's not a subset if its the same size.</documentation>
    </annotation>
    </element>
    </sequence>
    <attribute name="argumentRef" type="xtce:NameReferenceType" use="required"/>
    <attribute name="lastEntryForThisArrayInstance" type="boolean" default="false"/>
    </extension>
    </complexContent>
    </complexType>

    <complexType name="ArgumentFixedValueEntryType">
    <annotation>
    <documentation xml:lang="en">Identical to FixedValueEntryType but supports argument instance references.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:ArgumentSequenceEntryType">
    <attribute name="name" type="string" use="optional">
    <annotation>
    <documentation xml:lang="en">An optional name for the fixed/constant field in the sequence.</documentation>
    </annotation>
    </attribute>
    <attribute name="binaryValue" type="hexBinary" use="required">
    <annotation>
    <documentation xml:lang="en">The fixed/constant value that should be encoded into the sequence. This value provided should have sufficient bit length to accomodate the size in bits. If the value is larger, the most significant unnecessary bits are dropped. The value provided should be in network byte order for encoding.</documentation>
    </annotation>
    </attribute>
    <attribute name="sizeInBits" type="xtce:PositiveLongType" use="required">
    <annotation>
    <documentation xml:lang="en">The number of bits that this fixed/constant value should occupy in the sequence.</documentation>
    </annotation>
    </attribute>
    </extension>
    </complexContent>
    </complexType>

    FINALLY we update the CommandContainer definition to incorporate all of the above.

    Replace the existing definition of:

    <complexType name="CommandContainerEntryListType" mixed="false">
    <annotation>
    <documentation xml:lang="en">Similar to an EntryList type but also may include command arguments or -as a convenience - fixed value entries.</documentation>
    </annotation>
    <choice minOccurs="0" maxOccurs="unbounded">
    <element name="ParameterRefEntry" type="xtce:ParameterRefEntryType"/>
    <element name="ParameterSegmentRefEntry" type="xtce:ParameterSegmentRefEntryType"/>
    <element name="ContainerRefEntry" type="xtce:ContainerRefEntryType"/>
    <element name="ContainerSegmentRefEntry" type="xtce:ContainerSegmentRefEntryType"/>
    <element name="StreamSegmentEntry" type="xtce:StreamSegmentEntryType"/>
    <element name="IndirectParameterRefEntry" type="xtce:IndirectParameterRefEntryType"/>
    <element name="ArrayParameterRefEntry" type="xtce:ArrayParameterRefEntryType"/>
    <element name="ArgumentRefEntry" type="xtce:ArgumentRefEntryType"/>
    <element name="ArrayArgumentRefEntry" type="xtce:ArrayParameterRefEntryType"/>
    <element name="FixedValueEntry" type="xtce:FixedValueEntryType"/>
    </choice>
    </complexType>

    With this new definition of:

    <complexType name="CommandContainerEntryListType">
    <annotation>
    <documentation xml:lang="en">Describe an entry list for a CommandContainer which is associated with a MetaCommand. The entry list for a MetaCommand CommandContainer element operates in a similar fashion as the entry list element for a SequenceContainer element. It adds fixed value and argument entries to the entry list not present in sequence containers. See MetaCommandType, CommandContainerType and EntryListType.</documentation>
    </annotation>
    <choice minOccurs="0" maxOccurs="unbounded">
    <element name="ParameterRefEntry" type="xtce:ArgumentParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify a Parameter to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="ParameterSegmentRefEntry" type="xtce:ArgumentParameterSegmentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify a portion of a Parameter to be a part of this container layout definition. This is used when the Parameter is reported in fractional parts in the container before being fully updated.</documentation>
    </annotation>
    </element>
    <element name="ContainerRefEntry" type="xtce:ArgumentContainerRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify the content of another Container to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="ContainerSegmentRefEntry" type="xtce:ArgumentContainerSegmentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify a portion of another Container to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="StreamSegmentEntry" type="xtce:ArgumentStreamSegmentEntryType">
    <annotation>
    <documentation xml:lang="en">Specify a portion of a Stream to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="IndirectParameterRefEntry" type="xtce:ArgumentIndirectParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify a previous (not last reported) value of a Parmeter to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="ArrayParameterRefEntry" type="xtce:ArgumentArrayParameterRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify an Array Type Parameter to be a part of this container layout definition when the Container does not populate the entire space of the Array contents. If the entire space of the Array is populated, a tolerant implementation will accept ParameterRefEntry also.</documentation>
    </annotation>
    </element>
    <element name="ArgumentRefEntry" type="xtce:ArgumentArgumentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify an Argument to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    <element name="ArrayArgumentRefEntry" type="xtce:ArgumentArrayArgumentRefEntryType">
    <annotation>
    <documentation xml:lang="en">Specify an Array Type Argument to be a part of this container layout definition when the Container does not populate the entire space of the Array contents. If the entire space of the Array is populated, a tolerant implementation will accept ArgumentRefEntry also.</documentation>
    </annotation>
    </element>
    <element name="FixedValueEntry" type="xtce:ArgumentFixedValueEntryType">
    <annotation>
    <documentation xml:lang="en">Specify an immutable value to be a part of this container layout definition.</documentation>
    </annotation>
    </element>
    </choice>
    </complexType>

    To complete this resolution and maintain schema validity, it is now necessary to add the new BaseConditionsType before the existing BinaryType definition:

    <complexType name="BaseConditionsType" abstract="true">
    <annotation>
    <documentation xml:lang="en">A base type for boolean expression related elements that improves the mapping produced by data binding tools.</documentation>
    </annotation>
    </complexType>

    The new BaseConditionsType is already deployed with the ArgumentComparisonCheckType above, now apply it to the Parameter version of ComparisonCheckType and update the annotations to keep them consistent.

    <complexType name="ComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Describe the comparison between the instance (value) of a parameter against either a specified value or another parameter instance.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <sequence>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Left hand side parameter instance.</documentation>
    </annotation>
    </element>
    <element name="ComparisonOperator" type="xtce:ComparisonOperatorsType">
    <annotation>
    <documentation xml:lang="en">Comparison operator.</documentation>
    </annotation>
    </element>
    <choice>
    <element name="ParameterInstanceRef" type="xtce:ParameterInstanceRefType">
    <annotation>
    <documentation xml:lang="en">Right hand side parameter instance. Parameter is assumed to be of the same type as the comparison Parameter.</documentation>
    </annotation>
    </element>
    <element name="Value" type="string">
    <annotation>
    <documentation xml:lang="en">Right hand side value. Specify as: integer data type using xs:integer, float data type using xs:double, string data type using xs:string, boolean data type using xs:boolean, binary data type using xs:hexBinary, enum data type using label name, relative time data type using xs:duration, absolute time data type using xs:dateTime. Values must not exceed the characteristics for the data type or this is a validation error. Takes precedence over an initial value given in the data type. Values are calibrated unless there is an option to override it.</documentation>
    </annotation>
    </element>
    </choice>
    </sequence>
    </extension>
    </complexContent>
    </complexType>

    Also replace the previous ANDedConditionsType for the same reason:

    <complexType name="ANDedConditionsType">
    <annotation>
    <documentation xml:lang="en">Describe two or more conditions that are logically anded together. Conditions may be a mix of Condition and ORedCondition. See ORedConditionType and BooleanExpressionType.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <choice minOccurs="2" maxOccurs="unbounded">
    <element name="Condition" type="xtce:ComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Single conditional check.</documentation>
    </annotation>
    </element>
    <element name="ORedConditions" type="xtce:ORedConditionsType">
    <annotation>
    <documentation xml:lang="en">Multiple conditional checks with a logical OR.</documentation>
    </annotation>
    </element>
    </choice>
    </extension>
    </complexContent>
    </complexType>

    And then the ORedConditionsType:

    <complexType name="ORedConditionsType">
    <annotation>
    <documentation xml:lang="en">Describe two or more conditions that are logically ored together. Conditions may be a mix of Condition and ANDedCondition. See ORedConditionType and BooleanExpressionType.</documentation>
    </annotation>
    <complexContent>
    <extension base="xtce:BaseConditionsType">
    <choice minOccurs="2" maxOccurs="unbounded">
    <element name="Condition" type="xtce:ComparisonCheckType">
    <annotation>
    <documentation xml:lang="en">Single conditional check.</documentation>
    </annotation>
    </element>
    <element name="ANDedConditions" type="xtce:ANDedConditionsType">
    <annotation>
    <documentation xml:lang="en">Multiple conditional checks with a logical AND.</documentation>
    </annotation>
    </element>
    </choice>
    </extension>
    </complexContent>
    </complexType>

  • Updated: Tue, 10 Jul 2018 14:23 GMT