Commit 461fd7b5 authored by ASN.1 Documenter's avatar ASN.1 Documenter
Browse files

Initial version

parent 641cb69f
Loading
Loading
Loading
Loading

ASNV_Configuration.xml

0 → 100755
+14 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><asnv>
  
  
  <network>
    <comment><![CDATA[]]></comment>
  </network>
  <nodes/>
  <properties>
    <capl_message_map>
      <item instance-name="" message="PCIM"/>
      <item instance-name="" message="PCVM"/>
    </capl_message_map>
  </properties>
<protocol name="PCIM"><encoding entry-point="PCIM" method="per"/><lower-layer name="btp" value2="5"/><source path="ASNV_Module_PCIM.xml"/></protocol><protocol name="PCVM"><encoding entry-point="PCVM" method="per"/><lower-layer name="btp" value2="6"/><source path="ASNV_Module_PCVM.xml"/></protocol></asnv>
 No newline at end of file

ASNV_Module_PCIM.xml

0 → 100755
+1 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><module asnv-version="1" entry-point="PCIM" name="PCIM" tags="automatic"><sequence name="PCIM"><field name="header" type="ItsPduHeader"/><field name="pcim" type="Pcim"/></sequence><sequence name="ItsPduHeader"><field name="protocolVersion" type="ItsPduHeader$protocolVersion"/><field name="messageID" type="ItsPduHeader$messageID"/><field name="stationID" type="StationID"/></sequence><integer max="255" min="0" name="ItsPduHeader$protocolVersion"/><integer max="255" min="0" name="ItsPduHeader$messageID"><value name="denm" value="1"/><value name="cam" value="2"/><value name="poi" value="3"/><value name="spatem" value="4"/><value name="mapem" value="5"/><value name="ivim" value="6"/><value name="ev_rsr" value="7"/><value name="tistpgtransaction" value="8"/><value name="srem" value="9"/><value name="ssem" value="10"/><value name="evcsn" value="11"/><value name="saem" value="12"/><value name="rtcmem" value="13"/><value name="pcim" value="15"/><value name="pcvm" value="16"/></integer><integer max="4294967295" min="0" name="StationID"/><sequence name="Pcim"><field name="autosarProfile4Size" type="UInt16"/><field name="autosarProfile4rollingCounter" type="UInt16"/><field name="autosarProfile4DataID" type="UInt32"/><field name="autosarProfile4CRC32" type="UInt32"/><field name="serverTime" type="UInt42"/><field name="vehicles" type="Pcim$vehicles"/></sequence><integer max="65535" min="0" name="UInt16"/><integer max="4294967295" min="0" name="UInt32"/><integer max="4398046511103" min="0" name="UInt42"/><sequence-of max="32" min="1" name="Pcim$vehicles"><field type="VehicleContainer"/></sequence-of><sequence name="VehicleContainer"><field name="currentSessionID" type="VehicleContainer$currentSessionID"/><field name="currentMissionID" type="VehicleContainer$currentMissionID"/><field name="serverTimeAtPcvm" type="UInt42"/><field name="rollingCounterFromPCVM" type="UInt16"/><field name="vehicleIdentification" optional="true" type="VehicleIdentification"/><field name="drivingPermission" optional="true" type="DrivingPermission"/><field name="driveCommand" type="DriveCommand"/><field name="detectedVehiclePose" optional="true" type="DetectedVehiclePose"/><field name="controlInterface" type="ControlInterface"/><field name="oemSpecific" optional="true" type="UInt16"/></sequence><ia5-string max="17" min="17" name="VehicleContainer$currentSessionID"/><ia5-string max="6" min="6" name="VehicleContainer$currentMissionID"/><sequence name="VehicleIdentification"><field name="seed" type="UInt64"/><field name="codeLength" type="UInt8"/><field name="authorizationState" type="AuthorizationStateEnum"/></sequence><integer max="18446744073709551615" min="0" name="UInt64"/><integer max="255" min="0" name="UInt8"/><enumerated name="AuthorizationStateEnum"><value name="undefined" value="0"/><value name="prepared" value="1"/><value name="successful" value="2"/><value name="authorization_error" value="3"/><value name="new_code" value="4"/></enumerated><sequence name="DrivingPermission"><field name="expirationTime" type="UInt42"/><field name="velocityMax" type="Int16"/><field name="curvatureMin" type="Int16"/><field name="curvatureMax" type="Int16"/></sequence><integer max="32767" min="-32768" name="Int16"/><sequence name="DriveCommand"><field name="driveCommandAction" type="DriveCommandActionEnum"/><field name="terminateReason" type="TerminateReasonEnum"/><field name="drivingDirection" type="DrivingDirectionEnum"/><field name="directionIndicator" type="VehicleDirIndicatorEnum"/><field name="emergencyStop" type="EmergencyStopEnum"/></sequence><enumerated name="DriveCommandActionEnum"><value name="standby" value="0"/><value name="initialize" value="1"/><value name="drive" value="2"/><value name="terminate" value="3"/></enumerated><enumerated name="TerminateReasonEnum"><value name="proceed" value="0"/><value name="destination_reached" value="1"/><value name="infrastructure_error" value="2"/><value name="vehicle_error" value="3"/><value name="backend" value="4"/></enumerated><enumerated name="DrivingDirectionEnum"><value name="neutral" value="0"/><value name="forwards" value="1"/><value name="backwards" value="2"/><value name="park" value="3"/></enumerated><enumerated name="VehicleDirIndicatorEnum"><value name="dir_indicator_off" value="0"/><value name="dir_indicator_right" value="1"/><value name="dir_indicator_left" value="2"/><value name="dir_indicator_both" value="3"/><value name="dir_indicator_unknown" value="4"/></enumerated><enumerated name="EmergencyStopEnum"><value name="inactive" value="0"/><value name="precharge" value="1"/><value name="active" value="2"/></enumerated><sequence name="DetectedVehiclePose"><field name="poseX" type="Int20"/><field name="poseY" type="Int20"/><field name="posePsi" type="UInt16"/><field name="poseMeasurementTime" type="UInt42"/></sequence><integer max="524287" min="-524288" name="Int20"/><choice name="ControlInterface"><field name="pathSnippet" type="PathSnippet"/><field name="directControl" type="DirectControl"/></choice><sequence-of max="5" min="0" name="PathSnippet"><field type="WayPoint"/></sequence-of><sequence name="WayPoint"><field name="index" type="UInt16"/><field name="x" type="Int20"/><field name="y" type="Int20"/><field name="psi" type="UInt16"/><field name="velocity" type="Int16"/><field name="curvature" type="Int16"/></sequence><sequence name="DirectControl"><field name="velocityReq" type="Int16"/><field name="curvatureReq" type="Int16"/></sequence></module>
 No newline at end of file

ASNV_Module_PCVM.xml

0 → 100755
+1 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><module asnv-version="1" entry-point="PCVM" name="PCVM" tags="automatic"><sequence name="PCVM"><field name="header" type="ItsPduHeader"/><field name="pcvm" type="Pcvm"/></sequence><sequence name="ItsPduHeader"><field name="protocolVersion" type="ItsPduHeader$protocolVersion"/><field name="messageID" type="ItsPduHeader$messageID"/><field name="stationID" type="StationID"/></sequence><integer max="255" min="0" name="ItsPduHeader$protocolVersion"/><integer max="255" min="0" name="ItsPduHeader$messageID"><value name="denm" value="1"/><value name="cam" value="2"/><value name="poi" value="3"/><value name="spatem" value="4"/><value name="mapem" value="5"/><value name="ivim" value="6"/><value name="ev_rsr" value="7"/><value name="tistpgtransaction" value="8"/><value name="srem" value="9"/><value name="ssem" value="10"/><value name="evcsn" value="11"/><value name="saem" value="12"/><value name="rtcmem" value="13"/><value name="pcim" value="15"/><value name="pcvm" value="16"/></integer><integer max="4294967295" min="0" name="StationID"/><sequence name="Pcvm"><field name="autosarProfile4Size" type="UInt16"/><field name="autosarProfile4rollingCounter" type="UInt16"/><field name="autosarProfile4DataID" type="UInt32"/><field name="autosarProfile4CRC32" type="UInt32"/><field name="sessionID" type="Pcvm$sessionID"/><field name="localTime" type="UInt42"/><field name="rollingCounter" type="UInt16"/><field name="rollingCounterFromPCIM" type="UInt16"/><field name="vehicleState" type="VehicleState"/><field name="vehicleError" optional="true" type="VehicleError"/><field name="vehicleDebug" optional="true" type="VehicleDebug"/><field name="oemSpecific" optional="true" type="UInt16"/></sequence><integer max="65535" min="0" name="UInt16"/><integer max="4294967295" min="0" name="UInt32"/><ia5-string max="17" min="17" name="Pcvm$sessionID"/><integer max="4398046511103" min="0" name="UInt42"/><sequence name="VehicleState"><field name="operationMode" type="VehicleOperationModeEnum"/><field name="vehicleAutorizationState" type="VehicleAuthorizationEnum"/><field name="drivingDirection" type="DrivingDirectionEnum"/><field name="currentVelocity" type="Int16"/><field name="currentCurvature" type="Int16"/><field name="secureStandstill" type="VehicleState$secureStandstill"/><field name="idxLastWayPoint" optional="true" type="UInt16"/><field name="localizedPose" optional="true" type="Pose"/></sequence><enumerated name="VehicleOperationModeEnum"><value name="unknown" value="0"/><value name="initializing" value="1"/><value name="prepared" value="2"/><value name="driving" value="3"/><value name="terminating" value="4"/></enumerated><enumerated name="VehicleAuthorizationEnum"><value name="vehicle_undefined" value="0"/><value name="vehicle_ready" value="1"/><value name="vehicle_flashing_completed" value="2"/><value name="vehicle_authorized" value="3"/></enumerated><enumerated name="DrivingDirectionEnum"><value name="neutral" value="0"/><value name="forwards" value="1"/><value name="backwards" value="2"/><value name="park" value="3"/></enumerated><integer max="32767" min="-32768" name="Int16"/><boolean name="VehicleState$secureStandstill"/><sequence name="Pose"><field name="x" type="Int20"/><field name="y" type="Int20"/><field name="psi" type="UInt16"/></sequence><integer max="524287" min="-524288" name="Int20"/><sequence name="VehicleError"><field name="time" type="UInt42"/><field name="vehCode" type="VehCodeEnum"/><field name="customCode" type="UInt8"/></sequence><enumerated name="VehCodeEnum"><value name="unspecified" value="0"/><value name="path_not_driveable" value="1"/></enumerated><integer max="255" min="0" name="UInt8"/><sequence name="VehicleDebug"><field name="remainingTimeToDrive" type="Int16"/><field name="drivingAllowed" type="VehicleDebug$drivingAllowed"/><field name="safetyViolations" type="SafetyViolationsEnum"/><field name="timeSyncUncertainty" type="Int16"/><field name="requestedVelocity" type="Int16"/><field name="requestedCurvature" type="Int16"/><field name="powertrainActive" type="VehicleDebug$powertrainActive"/></sequence><boolean name="VehicleDebug$drivingAllowed"/><enumerated name="SafetyViolationsEnum"><value name="no_violation" value="0"/><value name="no_driving_permission_received" value="1"/><value name="last_driving_permission_too_old" value="2"/><value name="crc_violation_clock_sync_response" value="3"/><value name="crc_violation_driving_permission" value="4"/><value name="expiration_time_violation" value="5"/><value name="driving_direction_mismatch" value="6"/><value name="velocity_violation" value="7"/><value name="curvature_min_violation" value="8"/><value name="curvature_max_violation" value="9"/><value name="clocks_not_synchronized" value="10"/><value name="expiration_time_too_high" value="11"/><value name="monitoring" value="12"/></enumerated><boolean name="VehicleDebug$powertrainActive"/></module>
 No newline at end of file

LICENSE

0 → 100755
+23 −0
Original line number Diff line number Diff line
Copyright 2022 ETSI

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, 
   this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, 
   this list of conditions and the following disclaimer in the documentation 
   and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors 
   may be used to endorse or promote products derived from this software without 
   specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
OF THE POSSIBILITY OF SUCH DAMAGE.
 No newline at end of file

PCIM.asn1

0 → 100755
+150 −0
Original line number Diff line number Diff line
PcimModule DEFINITIONS AUTOMATIC TAGS ::= BEGIN  -- Park Control Infrastucture Message

PCIM ::= SEQUENCE {
  header ItsPduHeader,
  pcim Pcim  
}

Pcim ::= SEQUENCE {
  autosarProfile4Size UInt16,				   -- Autosar Profile4 CRC32
  autosarProfile4rollingCounter UInt16,        
  autosarProfile4DataID UInt32,				   -- identifier of infrastructure operator
  autosarProfile4CRC32 UInt32,                 -- Cyclic redundency check, hamming distance >= 6

  serverTime Millisecond42,					   -- Server time when generating this message (ETSI format from 1.1.2004 onwards). Used by vehicle for synchronization.
  vehicles SEQUENCE (SIZE(1..32)) OF VehicleContainer   -- Max. 32 vehicles at a time based on size of VehicleContainerSeq options.
}

VehicleContainer ::= SEQUENCE {
  currentSessionID IA5String (SIZE(17)),                  -- 17 character ID
  currentMissionID IA5String (SIZE(6)),                   -- 6 character ID
  serverTimeAtPcvm Millisecond42,                         -- Server time when PCVM of related vehicle has been received (for time sync).
  rollingCounterFromPCVM UInt16,                          -- PCVM Rolling counter signal paired with serverTimeAtPcvm
  vehicleIdentification VehicleIdentification OPTIONAL,   -- for generating a blinking pattern for the direction indicator lights
  drivingPermission DrivingPermission OPTIONAL,           -- Defines the bounds within which the vehicle is allowed to drive.
  driveCommand DriveCommand,                              -- Contains commands for the automated drive.
  detectedVehiclePose DetectedVehiclePose OPTIONAL,       -- Contains the most recent pose of the vehicle in the fixed infrastructure coordinate system.
  controlInterface ControlInterface,                      -- Specifies which interface is used to control the vehicle.
  oemSpecific UInt16 OPTIONAL                             -- OEM specific 16 bit container for special purposes.
}

VehicleIdentification ::= SEQUENCE {
  seed UInt64,            				     -- Seed for calculating codes for flashing indicator lights  .
  codeLength UInt8,                          -- Value that indicated how many bits (8 - 20) from the seed shall be used for blinking. 
  authorizationState AuthorizationStateEnum  -- current authorization request status
}

DrivingPermission ::= SEQUENCE {
  expirationTime Millisecond42,            -- ETSI format from 1.1.2004 onwards.
  velocityMax MetrePerSecond16,            -- Maximum allowed vehicle velocity.
  curvatureMin PerMetre16,                 -- Right curvature bounds.
  curvatureMax PerMetre16                  -- Left curvature bounds.
}

DriveCommand ::= SEQUENCE {
  driveCommandAction DriveCommandActionEnum,   -- Current driving command.
  terminateReason TerminateReasonEnum,         -- If action equals terminate, indicates whether a terminate is requested because the vehicle reached the destination or because of an error.
  drivingDirection DrivingDirectionEnum,       -- Allowed driving direction, incl. request for neutral gear.
  directionIndicator VehicleDirIndicatorEnum,  -- The currently requested direction indicator.
  emergencyStop EmergencyStopEnum              -- Signal for triggering an emergency stop or brake prefill.
}

DetectedVehiclePose ::= SEQUENCE {
  poseX Metre20,                       -- Current vehicle pose estimated by the infrastructure. x coordinate in infrastructure coordinate system.
  poseY Metre20,                       -- Current vehicle pose estimated by the infrastructure. y coordinate in infrastructure coordinate system.
  posePsi Radian16,                    -- Current vehicle pose estimated by the infrastructure. Heading angle in infrastructure coordinate system.
  poseMeasurementTime Millisecond42    -- Measurement time of given vehicle pose (ETSI format from 1.1.2004 onwards).
}

ControlInterface ::= CHOICE {
  pathSnippet PathSnippet,
  directControl DirectControl
}

PathSnippet ::= SEQUENCE (SIZE(0..5)) OF WayPoint

WayPoint ::= SEQUENCE {
  index UInt16,                               -- Index of 0 means that the WayPoint is not valid/not treated on vehicle side.
  x Metre20,                                  -- x coordinate in infrastructure coordinate system.
  y Metre20,                                  -- y coordinate in infrastructure coordinate system.
  psi Radian16,                               -- Heading angle in infrastructure coordinate system.
  velocity MetrePerSecond16,                  -- Signed velocity value. Positive: drive forwards / Negative: reverse.
  curvature PerMetre16                        -- Signed curvature value.
}

DirectControl ::= SEQUENCE {
  velocityReq MetrePerSecond16,  -- Signed velocity value. Positive: drive forwards / Negative: reverse.
  curvatureReq PerMetre16        -- Signed curvature value.
}


-- *************** DATA DICTONARY ************************************
UInt8 ::= INTEGER (0..255)
Int16 ::= INTEGER (-32768..32767)
Int20 ::= INTEGER (-524288..524287)
UInt16 ::= INTEGER (0..65535)		
UInt32 ::= INTEGER (0..4294967295)
UInt42 ::= INTEGER (0..4398046511103)     
UInt64 ::= INTEGER (0..18446744073709551615)

--                            UNIT     FACTOR
MetrePerSecond16::= Int16  -- [m/s]    0.01
Metre20 ::= Int20          -- [m]      0.01
PerMetre16 ::= Int16       -- [1/m]    0.00001
Radian16 ::= UInt16        -- [1]      0.0001     Range: from 0 to 2*pi
Millisecond42 ::= UInt42   -- [ms]     1          Range for TimestampIts ::= INTEGER {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103). Leap seconds are counted, unlike Unix-time

DriveCommandActionEnum ::= ENUMERATED {
  standby(0),     -- The vehicle shall stay in standby and wait for further instructions
  initialize(1),  -- The vehicle shall initialize and prepare for a driving job
  drive(2),       -- The vehicle shall actively drive and follow the path
  terminate(3)    -- The vehicle shall disable all interfaces and shutdown as soon as possible
}

TerminateReasonEnum ::= ENUMERATED {
  proceed(0),               -- Everything is okay. Proceed, do not terminate.
  destination-reached(1),   -- Vehicle has reached its destination
  infrastructure-error(2),  -- Error in infrastructure
  vehicle-error(3),         -- Vehicle has sent an error code
  backend(4)                -- Error in backend
}

EmergencyStopEnum ::= ENUMERATED {
  inactive(0),    -- The vehicle shall not use EmergencyStop at this stage
  precharge(1),   -- The vehicle shall stay in standby (brake prefill) and wait for an active command
  active(2)       -- The vehicle shall initiate an emergency stop using the maximum possible deceleration
}

VehicleDirIndicatorEnum ::= ENUMERATED {
  dir-indicator-off(0),     -- Do not flash lights
  dir-indicator-right(1),   -- Flash right
  dir-indicator-left(2),    -- Flash left
  dir-indicator-both(3),    -- Flash left and right
  dir-indicator-unknown(4)  -- Direction indicator state is unknown
}

DrivingDirectionEnum ::= ENUMERATED {
  neutral(0),    -- N: Vehicle shall engage N
  forwards(1),   -- D: Vehicle shall drive forwards
  backwards(2),  -- R: Vehicle shall drive backwards
  park(3)        -- P: Vehicle shall engage P
}

AuthorizationStateEnum ::= ENUMERATED {
  undefined(0),				-- Default value
  prepared(1),				-- Camera is ready to detect the code. Background model is available.
  successful(2),			-- The Vehicle was recognized correctly on the spot.
  authorization-error(3),	-- Either a wrong or no code was detected. Even with a crash of the camera, there is an error.
  new-code(4)				-- If the first attempt failed, a new code must be generated
}

-- Temp definition of ItsPduHeader. To be replaced by importing ITS-Container.asn
ItsPduHeader ::= SEQUENCE {
  protocolVersion INTEGER (0..255),
  messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), pcim(15), pcvm(16) } (0..255),
  stationID StationID
}

StationID ::= INTEGER(0..4294967295)

END
 No newline at end of file
Loading