# <a name="ETSI-ITS-DSRC-AddGrpC"></a>ASN.1 module ETSI-ITS-DSRC-AddGrpC
OID: _{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) dsrc (6) addgrpc (0) major-version-2 (2) minor-version-1 (1) }_
draft 001 of the ETSI-ITS-DSRC-AddGrpC module for TS 103 301 V2.2.1 integrating:
 initial revision based on ASN.1 files of [ISO TS 19091] and [SAE J2735]

## Imports:
* **[ETSI-ITS-DSRC](ETSI-ITS-DSRC.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) dsrc (6) major-version-2 (2) minor-version-1 (1) } WITH SUCCESSORS*<br/>
* **[ETSI-ITS-CDD](ETSI-ITS-CDD.md)** *{ itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) 102894 cdd (2) major-version-4 (4) minor-version-1 (1) } WITH SUCCESSORS*<br/>
## Data Elements:
### <a name="ConnectionManeuverAssist-addGrpC"></a>ConnectionManeuverAssist-addGrpC
This Element adds positioning support from the infrastructure to the vehicle.

* _itsStationPosition_ of type [**ItsStationPositionList**](#ItsStationPositionList)  OPTIONAL<br>
* itsStationPositions<br>
  defines a list of ITS stations (e.g. vehicles) and their corresponding position on
                               the driving lane as defined in the lane topology of the MapData message or the GNSS position
                               deviation of the ITS Station from the high precision reference position in X/Y coordinates. It
                               enables accurate, real-time positioning support to the moving ITS entities by the infrastructure.*


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
ConnectionManeuverAssist-addGrpC ::=	SEQUENCE {
  itsStationPosition ItsStationPositionList OPTIONAL,
  ...
}
```

### <a name="ConnectionTrajectory-addGrpC"></a>ConnectionTrajectory-addGrpC
The data frame "ConnectionTrajectory-addGrpC" defines the trajectory for travelling through the
 conflict area of an intersection and connects e.g an ingress with an egress lane. The trajectory is defined
 by two or more nodes. The starting node overlaps e.g. with the node of the ingress lane towards the
 conflict zone. The ending node overlaps e.g. with the first node of the connected egress lane. 
 See the example in clause [ISO TS 19091] G.8.2.5.

* _nodes_ of type [**NodeSetXY**](ETSI-ITS-DSRC.md#NodeSetXY) <br>
  defines a list of nodes for the trajectory. It defines e.g. a geometric trajectory from an ingressing
                 to a connected egressing lane and the X/Y position value of the first node of the trajectory is the same as
                 the node of the ingress lane. The X/Y position of the last node is the same as the X/Y position of the first
                 node of the egressing lane.

* _connectionID_ of type [**LaneConnectionID**](ETSI-ITS-DSRC.md#LaneConnectionID) <br>
  defines the identifier of an allowed "maneuver" (e.g. ingress / egress relation). 
                 A generic Lane offers one or more allowed "maneuvers", therefore the trajectory is reference to the related "maneuver".


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_

>>>
NOTE:&emsp;"Reg-GenericLane" allows providing up to 4 connecting trajectories. In case a lane has more than 4 connecting trajectories, 
 priority should be given to connecting trajectories of motorized traffic and complex manoeuvres.
>>>

```asn1
ConnectionTrajectory-addGrpC ::= SEQUENCE {
  nodes         NodeSetXY,
  connectionID  LaneConnectionID,
  ...
}
```

### <a name="IntersectionState-addGrpC"></a>IntersectionState-addGrpC
The data frame "IntersectionState-addGrpC" defines a list of prioritization responses e.g. public transport acceleration.
 The signal prioritization (e.g. public transport) procedure in this profile follows two strategies.
 - For simple prioritization requests, the CAM/SPAT messages are used. This allows the migration of old legal systems towards C-ITS. 
   In this case, the CAM message is used to trigger the request towards the traffic light controller. 
   The traffic light controller checks the request and broadcasts the status for the priority request within 
   the "IntersectionState-addGrpC" data element (see [ISO TS 19091] G.5.1.9).
 - For more complex signal requests, the SignalRequestMessage/SignalStatusMessage messages are to be used.

* _activePrioritizations_ of type [**PrioritizationResponseList**](#PrioritizationResponseList) 	OPTIONAL<br>
  list of Prioritizations.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
IntersectionState-addGrpC ::=	SEQUENCE {
  activePrioritizations  PrioritizationResponseList	OPTIONAL,
  ...
}
```

### <a name="LaneAttributes-addGrpC"></a>LaneAttributes-addGrpC
Lanes may have limitations regarding vehicle height (e.g. due to a tunnel) and vehicle weight (e.g. due to a bridge). 
 To indicate these limitations, two data elements are added which are already defined in SAE J2735 for other messages.

* _maxVehicleHeight_ of type [**VehicleHeight**](ETSI-ITS-DSRC.md#VehicleHeight)  OPTIONAL<br>
  maximum allowed vehicle height

* _maxVehicleWeight_ of type [**VehicleMass**](ETSI-ITS-CDD.md#VehicleMass)    OPTIONAL<br>
  maximum allowed vehicle mass


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
LaneAttributes-addGrpC ::= SEQUENCE {
  maxVehicleHeight  VehicleHeight OPTIONAL,
  maxVehicleWeight  VehicleMass   OPTIONAL,
  ...
}
```

### <a name="MapData-addGrpC"></a>MapData-addGrpC
The data frame "MapData-addGrpC" defines a list of three-dimensional positions of signal heads in an intersection. 
 It enables vehicles to identify the signal head location for optical evaluation of the traffic light. 
 Combined with the SPAT/MapData messages, it enables e.g. driving vehicles to enhance safety decision in critical situations.

* _signalHeadLocations_ of type [**SignalHeadLocationList**](#SignalHeadLocationList) 	OPTIONAL<br>
  list of geo positions


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
MapData-addGrpC ::=	SEQUENCE {
  signalHeadLocations  SignalHeadLocationList	OPTIONAL,
  ...
}
```

### <a name="MovementEvent-addGrpC"></a>MovementEvent-addGrpC
Priority and preemption have a considerable impact to the timing parameters in the SPAT message (eventState).
 User acceptance is expected to increase if the reason for sudden changes in timing parameters is communicated to them.

* _stateChangeReason_ of type [**ExceptionalCondition**](#ExceptionalCondition)  OPTIONAL<br>
  reason code


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
MovementEvent-addGrpC ::= SEQUENCE {
  stateChangeReason  ExceptionalCondition OPTIONAL,
  ...
}
```

### <a name="NodeAttributeSet-addGrpC"></a>NodeAttributeSet-addGrpC
The data frame "NodeAttributeSet-addGrpC" defines additional attributes to support public transport and to enable a simple way of defining lane links.

* _ptvRequest_ of type [**PtvRequestType**](#PtvRequestType)   OPTIONAL<br>
  defines control types attached to a node on a lane used by public transport for triggering
                      the transmission of messages (e.g. prioritization request). It includes control points for public transport prioritization. 
                      These control points are currently implemented by legacy systems using hardware sensors mounted on the roadside.

* _nodeLink_ of type [**NodeLink**](#NodeLink)         OPTIONAL<br>
  defines a link to one or to a set of another node/lane from this node. The nodeLink allows to set a link between specific nodes 
                      of generic lanes or trajectories. This supports e.g. lane merging/diverging situations ([ISO TS 19091] G.8.2.7) and the linking of trajectories 
                      in the conflict zone to lanes (see example [ISO TS 19091] G.8.2.5).

* _node_ of type [**Node**](#Node)             OPTIONAL<br>
  defines an identifier of this node.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
NodeAttributeSet-addGrpC  ::=	SEQUENCE {
  ptvRequest  PtvRequestType  OPTIONAL,
  nodeLink    NodeLink        OPTIONAL,
  node        Node            OPTIONAL,
  ...
}
```

### <a name="Position3D-addGrpC"></a>Position3D-addGrpC
The data frame "Position3D-addGrpC" includes the altitude data element defined in the common data dictionary [ETSI CDD].

* _altitude_ of type [**Altitude**](ETSI-ITS-CDD.md#Altitude) <br>
* elevation<br>
  the data element is replaced by the ETSI "altitude" data element using the regional extension. 
                     The "altitude" data element is defined in "Position3D-addGrpC" of this profile (see [ISO TS 19091] G.5.1.8).
                     "Position3D-addGrpC" extends the "DF_Position3D" using the regional extension framework as defined in [ISO TS 19091] G.7.7.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
Position3D-addGrpC ::=	SEQUENCE {
  altitude  Altitude,
  ...
}
```

### <a name="RestrictionUserType-addGrpC"></a>RestrictionUserType-addGrpC
The data frame "RestrictionUserType-addGrpC" defines the driving restriction based on toxic emission type. 
 The meaning of the word 'restriction' is ambiguous as it may have a double interpretation, being:
  - only these vehicles are allowed OR 
  - these vehicles are not allowed and all others are. 
 The former is what is intended by the base standard.

* _emission_ of type [**EmissionType**](#EmissionType)  OPTIONAL<br>
  restriction baesed on emission.

* _fuel_ of type [**FuelType**](ETSI-ITS-DSRC.md#FuelType)      OPTIONAL<br>
  restriction baesed on fuel.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
RestrictionUserType-addGrpC ::=	SEQUENCE {
  emission  EmissionType OPTIONAL,
  fuel      FuelType     OPTIONAL,
  ...
}
```

### <a name="RequestorDescription-addGrpC"></a>RequestorDescription-addGrpC
Some road authorities like to give priority to vehicles based on the type of fuel they use. In addition,
 electric vehicles may receive priority based on their battery status.

* _fuel_ of type [**FuelType**](ETSI-ITS-DSRC.md#FuelType)       OPTIONAL<br>
  fuel used by vehicle.

* _batteryStatus_ of type [**BatteryStatus**](#BatteryStatus)  OPTIONAL<br>
  current batter status of vehicle.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
RequestorDescription-addGrpC ::= SEQUENCE {
  fuel           FuelType      OPTIONAL,
  batteryStatus  BatteryStatus OPTIONAL,
  ...
}
```

### <a name="SignalStatusPackage-addGrpC"></a>SignalStatusPackage-addGrpC
The traffic control centre (TCC) may advice a public transport vehicle (e.g. bus) to synchronize his travel time. 
 This may happen when, for example, two busses, due to special traffic conditions, are out of schedule. 
 The first might be too late, the second too fast. The consequence is that the second is driving
 just behind the first and is empty as all passengers are within the first one. To avoid this often-occurring
 situation, the TCC transmits time synchronization advices to the public transport vehicles using the
 signal status message.

* _synchToSchedule_ of type [**DeltaTime**](ETSI-ITS-DSRC.md#DeltaTime)       OPTIONAL<br>
  DeltaTime.

* _rejectedReason_ of type [**RejectedReason**](#RejectedReason)  OPTIONAL<br>
  RejectedReason.

@Note: The "PrioritizationResponseStatus" provides optionally the reason for prioritization response rejection.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
SignalStatusPackage-addGrpC ::= SEQUENCE {
  synchToSchedule  DeltaTime      OPTIONAL,
  rejectedReason   RejectedReason OPTIONAL,
  ...
}
```

### <a name="ItsStationPosition"></a>ItsStationPosition
The data frame "ItsStationPosition" is used to provide real-time positioning information feedback to a
 specific ITS station (e.g. vehicle, pedestrian, bicycle) by infrastructure equipment. The position
 information includes, for example, the driving, crossing lane and/or the X/Y coordinates in relation to
 the reference position of the MapData. The "timeReference" indicates the time stamp of the the
 message (received from an ITS station) for which the positioning feedback has been computed.

* _stationID_ of type [**StationID**](ETSI-ITS-CDD.md#StationID) <br>
  unique identifier.

* _laneID_ of type [**LaneID**](ETSI-ITS-DSRC.md#LaneID)              OPTIONAL<br>
  LaneID.

* _nodeXY_ of type [**NodeOffsetPointXY**](ETSI-ITS-DSRC.md#NodeOffsetPointXY)   OPTIONAL<br>
  NodeOffsetPointXY.

* _timeReference_ of type [**TimeReference**](#TimeReference)       OPTIONAL<br>
  TimeReference.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_

>>>
NOTE:&emsp;The computation of the positioning feedback is out of focus of this standard.
>>>

```asn1
ItsStationPosition ::=	SEQUENCE {
  stationID      StationID,
  laneID         LaneID             OPTIONAL,
  nodeXY         NodeOffsetPointXY  OPTIONAL,
  timeReference  TimeReference      OPTIONAL,
  ...
}
```

### <a name="ItsStationPositionList"></a>ItsStationPositionList
```asn1
ItsStationPositionList ::=	SEQUENCE SIZE(1..5) OF ItsStationPosition
```

### <a name="Node"></a>Node
The data frame "Node" is used to to identify a node of a lane (waypoint) by its "lane" and node identifier
 "id". The "intersectionID" is used if the referenced lane belongs to an adjacent intersection. If the node
 belongs to a connection trajectory (G.5.1.2) the "connectionID" is used.

* _id_ of type **INTEGER** <br>
  unique identifier.

* _lane_ of type [**LaneID**](ETSI-ITS-DSRC.md#LaneID)            OPTIONAL<br>
  identifier from lane.

* _connectionID_ of type [**LaneConnectionID**](ETSI-ITS-DSRC.md#LaneConnectionID)  OPTIONAL<br>
  identifier from connection.

* _intersectionID_ of type [**IntersectionID**](ETSI-ITS-DSRC.md#IntersectionID)    OPTIONAL<br>
  identifier from intersection.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
Node ::= SEQUENCE {
  id              INTEGER,
  lane            LaneID           OPTIONAL,
  connectionID    LaneConnectionID OPTIONAL,
  intersectionID  IntersectionID   OPTIONAL,
  ...
}
```

### <a name="NodeLink"></a>NodeLink
```asn1
NodeLink ::= SEQUENCE SIZE (1..5) OF Node
```

### <a name="PrioritizationResponse"></a>PrioritizationResponse
The data frame "PrioritizationResponse" is used to provide the prioritization status response and the
 signal group identifier for a specific ITS station (e.g. vehicle).

* _stationID_ of type [**StationID**](ETSI-ITS-CDD.md#StationID) <br>
  StationID.

* _priorState_ of type [**PrioritizationResponseStatus**](ETSI-ITS-DSRC.md#PrioritizationResponseStatus) <br>
  PrioritizationResponseStatus.

* _signalGroup_ of type [**SignalGroupID**](ETSI-ITS-DSRC.md#SignalGroupID) <br>
  SignalGroupID.


&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
PrioritizationResponse ::=	SEQUENCE {
  stationID    StationID,
  priorState   PrioritizationResponseStatus,
  signalGroup  SignalGroupID,
  ...
}
```

### <a name="PrioritizationResponseList"></a>PrioritizationResponseList
```asn1
PrioritizationResponseList ::=	SEQUENCE SIZE(1..10) OF PrioritizationResponse
```

### <a name="SignalHeadLocation"></a>SignalHeadLocation
The data frame "SignalHeadLocation" defines the XYZ position of a signal head within an intersection
 and indicates the related signal group identifier.

* _nodeXY_ of type [**NodeOffsetPointXY**](ETSI-ITS-DSRC.md#NodeOffsetPointXY) <br>
* _nodeZ_ of type [**DeltaAltitude**](ETSI-ITS-CDD.md#DeltaAltitude) <br>
* _signalGroupID_ of type [**SignalGroupID**](ETSI-ITS-DSRC.md#SignalGroupID) <br>

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
SignalHeadLocation ::=	SEQUENCE {
  nodeXY         NodeOffsetPointXY,
  nodeZ          DeltaAltitude,
  signalGroupID  SignalGroupID,
  ...
}
```

### <a name="SignalHeadLocationList"></a>SignalHeadLocationList
```asn1
SignalHeadLocationList ::=	SEQUENCE (SIZE(1..64)) OF	SignalHeadLocation
```

### <a name="BatteryStatus"></a>BatteryStatus
The data element "BatteryStatus" element defines an enumerated list of battery states.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
BatteryStatus ::= ENUMERATED {
  unknown,
  critical,
  low,
  good,
  ...
}
```

### <a name="EmissionType"></a>EmissionType
The data element "EmissionType" element defines an enumerated list of toxic emission types for vehicles.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
EmissionType ::= ENUMERATED {
  euro1,
  euro2,
  euro3,
  euro4,
  euro5,
  euro6,
  ...
}
```

### <a name="ExceptionalCondition"></a>ExceptionalCondition
The data element "ExceptionalCondition" element defines a list of reasons for sudden changes in
 eventState parameters, thereby offering a reason for extended waiting times.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
ExceptionalCondition ::= ENUMERATED {
  unknown,
  publicTransportPriority,
  emergencyVehiclePriority,
  trainPriority,
  bridgeOpen,
  vehicleHeight,
  weather,
  trafficJam,
  tunnelClosure,
  meteringActive,
  truckPriority,
  bicyclePlatoonPriority,
  vehiclePlatoonPriority,
  ...
}
```

### <a name="PtvRequestType"></a>PtvRequestType
The data element "PtvRequestType" element defines a list of activation requests used for C-ITS
 migration of legacy public transport prioritization systems. The activation points are used while approaching to an intersection.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
PtvRequestType  ::= ENUMERATED {
  preRequest,
  mainRequest,
  doorCloseRequest,
  cancelRequest,
  emergencyRequest,
  ...
}
```

### <a name="RejectedReason"></a>RejectedReason
The data element "RejectedReason" element defines a list of reasons for rejected priority requests.

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
RejectedReason ::= ENUMERATED {
  unknown,
  exceptionalCondition,
  maxWaitingTimeExceeded,
  ptPriorityDisabled,
  higherPTPriorityGranted,
  vehicleTrackingUnknown,
  ...
}
```

### <a name="TimeReference"></a>TimeReference
The data element "TimeReference" element defines a value in milliseconds in the current minute
 related to UTC time. A range of 60 000 covers one minute (60 seconds * 1 000 milliseconds)

&nbsp;&nbsp;&nbsp;&nbsp;**Categories:** Infrastructure information 

&nbsp;&nbsp;&nbsp;&nbsp;**Revision:** _V1.3.1_
```asn1
TimeReference ::= INTEGER { oneMilliSec(1) } (0..60000)
```



