Section: – ChildIE2-WithoutEM
Content: The IE ChildIE2-WithoutEM is an example of a lower level IE, typically used to control certain radio configurations. The example illustrates how the new field chIE1-NewField is added in release N to the configuration of the configurable feature. ChildIE2-WithoutEM information element -- /example/ ASN1START ChildIE2-WithoutEM ::= CHOICE { release NULL, setup SEQUENCE { -- Root encoding } } ChildIE2-WithoutEM-vNx0 ::= SEQUENCE { chIE2-NewField-rN INTEGER (0..31) OPTIONAL -- Cond ConfigF } -- ASN1STOP A.4.3.6 Non-critical extensions of lists with ToAddMod/ToRelease When the size of a list using the ToAddMod/ToRelease construction is extended and/or fields are added to the list element structure, the list should be non-critically extended in accordance with the following general principles: – When only the size of the list is extended, this extension is reflected in a non-critical extension of the list, with a "SizeExt" suffix added to the end of the field name (before the -vNxy suffix). The differential size of the extended list uses the suffix "Diff". A new ToRelease list is needed, and its range should include only the increase in list size. In many cases, extending the list size will also require an extended list element ID type to account for the increased size of the list; in these cases the element type will need to be extended to include the extended element ID, resulting in a more complex extension (see example 3 for further discussion of this case). The field description table should indicate that the UE considers the original list and the extension list as a single list; thus entries added with the original list can be modified by the extension list (or removed by the extension of the ToRelease list), or vice versa. The result is as shown in the following example: -- /example 1/ ASN1START ContainingStructure ::= SEQUENCE { listElementToAddModList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElement OPTIONAL, -- Need N listElementToReleaseList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementId OPTIONAL, -- Need N ..., [[ -- Non-critical extension lists listElementToAddModListSizeExt-vNxy SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElement OPTIONAL, -- Need N listElementToReleaseListSizeExt-vNxy SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElementId OPTIONAL -- Need N ]] } -- ASN1STOP – When fields are added to the list element structure, an extension marker should normally be used if available. If no extension marker is available or if overhead or other considerations prevent using the extension marker, an extension structure should be created for the new fields, with the suffix "Ext" added to the end of the field name and the element structure type name (before the -vNxy suffix), and a parallel ToAddMod list introduced to hold the new structures, also with the "Ext" suffix. The field description table should indicate that the parallel list contains the same number of entries, and in the same order, as the original list. No new ToRelease list is typically needed (unless the list element ID type changes). It should typically be ensured that the contained fields in the "Ext" elements are releasable without release and add of the entire list element; this can, for instance, be ensured by having the new fields be OPTIONAL Need R. If multiple extensions of the same list are needed, the version suffix should distinguish the lists (e.g. listElementToAddModListExt-vNwz added after listElementToAddModListExt-vNxy). The result is as shown in the following example: -- /example 2/ ASN1START ContainingStructure ::= SEQUENCE { listElementToAddModList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElement OPTIONAL, -- Need N listElementToReleaseList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementId OPTIONAL, -- Need N ..., [[ -- Parallel list listElementToAddModListExt-vNxy SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementExt-vNxy OPTIONAL -- Need N ]], [[ -- Second parallel list from a later spec version listElementToAddModListExt-vNwz SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementExt-vNwz OPTIONAL -- Need N ]] } ListElement ::= SEQUENCE { elementId ListElementId, field1 INTEGER (0..3), field2 ENUMERATED { value1, value2, value3 } } ListElementExt-vNxy ::= SEQUENCE { field3-rN BIT STRING (SIZE (8)) OPTIONAL -- Need R } ListElementExt-vNwz ::= SEQUENCE { field4-rN INTEGER (0..255) OPTIONAL -- Need R } -- ASN1STOP – When the size of a list is extended and fields are added to the list element structure, an extension marker should normally be used for the added fields if available, and the list extended with the non-critical mechanism as described in example 1 above. Note that if the list element ID type changes in this case, the new ID can be added after the extension marker, and the entries of the size-extended ToRelease list should have the type of the new ID (e.g. ListElementId-vNxy). If no extension marker is available or if overhead or other considerations prevent using the extension marker, an extension structure should be created for the new fields and a parallel list with ToAddMod introduced to hold the extension structures, as in the second example above, for entries of the original list and for entries of the extension list holding new entries. The field description table should indicate that the parallel list contains the same number of entries, and in the same order, as the concatenation of the original list and the extension list. An extended ToRelease list is needed, but no additional parallel ToRelease list is needed (i.e. there is no listElementToReleaseListExt-vNxy in the example below), as the original and extended ToRelease lists suffice to release any element of the combined list. The extended element ID type should be captured as a non-critical extension of the original element ID type, with the field description indicating that if the extended ID is present, the original ID is ignored. The result is as shown in the following example: -- /example 3/ ASN1START ContainingStructure ::= SEQUENCE { listElementToAddModList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElement OPTIONAL, -- Need N listElementToReleaseList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementId OPTIONAL, -- Need N ..., [[ -- Non-critical extension lists listElementToAddModListSizeExt-vNxy SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElement OPTIONAL, -- Need N listElementToReleaseListSizeExt-vNxy SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElementId-vNxy OPTIONAL, -- Need N -- Parallel list with maxNrofListElements-rN = maxNrofListElements + maxNrofListElementsDiff-rN listElementToAddModListExt-vNxy SEQUENCE (SIZE (1..maxNrofListElements-rN)) OF ListElementExt-vNxy OPTIONAL -- Need N ]] } ListElement ::= SEQUENCE { elementId ListElementId, field1 INTEGER (0..3), field2 ENUMERATED { value1, value2, value3 } } ListElementExt-vNxy ::= SEQUENCE { -- Field description should indicate that if the elementId-vNxy is present, the elementId (without suffix) is ignored elementId-vNxy ListElementId-vNxy OPTIONAL, -- Need S field3-rN BIT STRING (SIZE (8)) OPTIONAL -- Need R } ListElementId ::= INTEGER (0..maxNrofListElements-1) ListElementId-vNxy ::= INTEGER (maxNrofListElements..maxNrofListElements-1-rN) -- ASN1STOP – When different extensions are made to a list in separate releases, the extension mechanisms described above may interact. In case fields are added in Rel-M (listElementToAddModListExt-vMxy) and later the list size is extended in Rel-N (listElementToAddModListSizeExt-vNwz), the size-extended list in Rel-N should be a single list extending the combination of listElementToAddModList and listElementToAddModListExt-vMxy. This requires creating a new type (ListElement-rN) to contain the combined fields of ListElement and ListElementExt-vMxy. A corresponding ToRelease list is needed. The result is as shown in the following example: -- /example 4/ ASN1START ContainingStructure ::= SEQUENCE { listElementToAddModList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElement OPTIONAL, -- Need N listElementToReleaseList SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementId OPTIONAL, -- Need N ..., [[ -- Parallel list (Rel-M) listElementToAddModListExt-vMxy SEQUENCE (SIZE (1..maxNrofListElements)) OF ListElementExt-vMxy OPTIONAL -- Need N ]], [[ -- Size-extended list (Rel-N) with maxNrofListElements-rN = maxNrofListElements + maxNrofListElementsDiff-rN listElementToAddModListSizeExt-vNwz SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElement-rN OPTIONAL, -- Need N listElementToReleaseListSizeExt-vNwz SEQUENCE (SIZE (1..maxNrofListElementsDiff-rN)) OF ListElementId-vNwz OPTIONAL -- Need N ]] } ListElement ::= SEQUENCE { elementId ListElementId, field1 INTEGER (0..3), field2 ENUMERATED { value1, value2, value3 } } ListElementExt-vMxy ::= SEQUENCE { field3-rM BIT STRING (SIZE (8)) OPTIONAL -- Need R } ListElement-rN ::= SEQUENCE { elementId-vNwz ListElementId-vNwz, field1 INTEGER (0..3), field2 ENUMERATED { value1, value2, value3 }, field3-rN BIT STRING (SIZE (8)) OPTIONAL -- Need R } ListElementId ::= INTEGER (0..maxNrofListElements-1) ListElementId-vNwz ::= INTEGER (maxNrofListElements..maxNrofListElementsDiff-1-rN) -- ASN1STOP