From 31f58cbf3e6f8a844a6aa4f925733ad0eef78679 Mon Sep 17 00:00:00 2001 From: Denis Filatov Date: Mon, 15 Jan 2024 12:52:19 +0100 Subject: [PATCH] final version of ASN.1 code --- EtsiTs103601Module.asn | 79 +++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/EtsiTs103601Module.asn b/EtsiTs103601Module.asn index 08252cb..8acac16 100755 --- a/EtsiTs103601Module.asn +++ b/EtsiTs103601Module.asn @@ -2,18 +2,22 @@ EtsiTs103601Module {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg5 minor-version-1(1)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN ------------------------------------------ --- Specification of the segment message format to be used for the segmentation service +-- Specification of the segment message format to be used for the segmentation service. +-- Different segmentation methods are supported. One method consists in splitting the original file or message into several +-- sequential segments (called sequential chunks). This specification can be extended to integrate transport coding methods +-- using various FEC schemes. ------------------------------------------ IMPORTS HashedId8, Opaque, Psid, - Time64, - Uint8 FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111) - standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2) - base(1) base-types(2) major-version-2(2) minor-version-4(4)} - WITH SUCCESSORS + Time32, + Uint8 +FROM Ieee1609Dot2BaseTypes {iso(1) identified-organization(3) ieee(111) + standards-association-numbered-series-standards(2) wave-stds(1609) dot2(2) + base(1) base-types(2) major-version-2(2) minor-version-4(4)} +WITH SUCCESSORS ; /** @@ -23,31 +27,44 @@ IMPORTS * @field version: contains the version number of this PDU definition. For this version of this data type it shall be equal to `1`. * * @field segmentationTime: contains information on when the message or file was segmented into 1 or several pieces. +* So the segmentationTime of all the segments for this message or file shall be the same. * -* - not included in the present version @field segmentationLocation: is the location at which the message or file was segmented +* @field distributedAid: the ITS-AID of the file. The Psid/ Its-AID is a variable length INTEGER number. +* +* @field fileId: the id of the file to be distributed. It shall be set to the output of the SHA-256 hash function calculated on the transmitted CTL or file content. +* +* @field fileDescription: the file description or metadata of the segmented file. +* For instance, metadata could contain parameters required when coding scheme using a FEC encoding is used (cf. IETF RFC 6726) +* In the current version of this standard, the fileDescription shall be of 0 byte length. * * @field segmentContent : contains the segmented data of the message or file. */ -SegmentPDU ::= SEQUENCE { - version Uint8, - segmentationTime Time64, - segmentContent SegmentedData {Psid} +SegmentPDU {Psid} ::= SEQUENCE { + version Uint8, + segmentationTime Time32, + distributedAid Psid, + fileId HashedId8, + fileDescription OCTET STRING (SIZE(0..63)), + segmentContent SegmentedData } /** * This component represents the payload of a segment/fragment of the file data. +*/ +SegmentedData ::= CHOICE { + seqChunks SequentialChunksSegmentedData, + ... +} + +/** +* This component represents the payload of a segment/fragment of the file data when the sequential +* segmentation method is used. This method is applied in case the fileDescription is set to value 'FF'. * It is composed of the following fields: -* @field distributedAid: the ITS-AID of the file. The Psid/ Its-AID is a variable length INTEGER number. -* In the present version, the length of Its-AID will be less than or equal to 2 bytes. -* -* @field fileId: the id of the file to be distributed. It shall be set to the output of the SHA-256 hash function calculated on the transmitted CTL file content. -* -* @field fileDescription: optionally, the file description or metadata of the segmented file. -* For instance, metadata could contain parameters required when coding scheme using a FEC encoding is used (cf. IETF RFC 6726) * * @field messageSegmentTotalNumber: the total number of segments/fragments constituting the complete file. * * @field thisMessageSegmentNumber: the number that indicates the rank or position of this segment in the ordered sequence of segments constituting the complete CTL. +* * The fields messageSegmentTotalNumber and thisMessageSegmentNumber may be present or absent depending on the use of a network/transport * coding technique. If network/transport coding is used, these fields are unused and shall be absent. * Note that coding technique is not specified in the current version of the standard. @@ -56,26 +73,24 @@ SegmentPDU ::= SEQUENCE { * MAX value is equal to the maximum size of the payload contained in the Segment PDU, i.e. the MTU-GN - control fields size. MTU value depends * on the network access technology and on the network layer. For instance, if ITS-G5 access layer * and GeoNetworking SHB protocol is used, MTU-GN - GN-Header - BTP-Header = 1428 bytes and MAX value is calculated as: -* 1428 - control fields size (30 bytes restricting the ITS-AID size to a maximum of 2 bytes). +* 1428 - control fields size. * -* All segments of the original full CTL, except the last one, shall have the same size equal to MAX value. +* All the segments, but the last one, of the original file (e.g. the full CTL) shall have the same size equal to MAX value . */ -SegmentedData {Psid}::= SEQUENCE { - distributedAid Psid, - fileId HashedId8, - fileDescription OCTET STRING (SIZE (5)) OPTIONAL, - messageSegmentTotalNumber INTEGER(1..255) OPTIONAL, - thisMessageSegmentNumber INTEGER(1..255) OPTIONAL, - data OCTET STRING (SIZE(1..MAX)), -... -} + +SequentialChunksSegmentedData ::= SEQUENCE { + messageSegmentTotalNumber INTEGER(1..255), + thisMessageSegmentNumber INTEGER(1..255), + data OCTET STRING (SIZE(1..MAX)) +} /** -* The Segmented CTL Responsemessage (SCRM) is a specific Segment PDU: it uses the parametrized data type SegmentedData where the psid parameter value is set to -* the ITS-AID value of the CTL service as specified in ETSI TS 102 965 (i.e. value 624) +* The Segmented CTL Responsemessage (SCRM) is a specific Segment PDU: it uses the parametrized data type +* SegmentedData where the psid parameter value is set to the ITS-AID value of the CTL service as specified in +* ETSI TS 102 965 (i.e. value 624). For the SCRM message, the size of the control information (“header” fields) is 23 bytes. */ ctlPsid Psid ::= 624 -ScrmData ::= SegmentedData {Psid (ctlPsid)} +ScrmPDU ::= SegmentPDU {Psid (ctlPsid)} END \ No newline at end of file -- GitLab