SREM
Look for the current version via the link in the table at the message-type introduction page
As of mid november 2024, Mobilidata has changed version regarding AMQP headers (version 0.9 to 1.0). This is caused by changes in the C-Roads (TF4 spec release 2.1.0) specification.
Description
The Signal Request Message (SRM) is a message sent by a Dedicated Short Range Communications (DSRC) equipped entity ( such as avehicle) to the RoadSide Unit (RSU) in a signalized intersection. It is used for either a priority signal request or a pre-emption signalrequest depending on the way each request is set. Each request defines a path through the intersection which is desired in terms oflanes and approaches to be used. Each request can also contain the time of arrival and the expected duration of the service. Multiplerequests to multiple intersections are supported. The requestor identifies itself in various ways (using methods supported by the RequestorDescription data frame), and its current speed, heading and location can be placed in this structure as well. The specific request for service is typically based on previously decoding and examining the list of lanes and approaches for that intersection (sent in MAP messages). The outcome of all of the pending requests to a signal can be found in the Signal Status Message (SSM), and maybe reflected in the SPAT message contents if successful.
The SRM message is used for either a priority signal request or a pre-emption signal request in the form of:
- SRM
Used fo priority requests as described above. - SRM0
Used for vehicles, not using priority requests by nature, indicating which direction the vehicle takes on the iTLC. - SRM1
Specifly meant for usage by active road users, indicating a complex direction (e.g. first the byciclepath straighttrough and then to the left)
Usage
The priority requests are similar to the flow diagram in the figure:
| Point in time | IVRI | To/from vehicle | Vehicle | Remarks |
|---|---|---|---|---|
| T0 | MAP | to | iVRI information based on location, in order to determine approach | |
| T+n | from | SRM initiator | Starting Prio request sequence | |
| T+n+1 | SSM | to | Acknowledge the request is received and yes/no action is undertaken | |
| T+o | from | SRM update | Prio request update if necessary (e.g. different time to arrive at iVRI) | |
| T+o | SSM | to | ||
| T+p | from | SRM cancel | Passing the stopline of the iVRI means the end of the request |
Depending on the iVRI where the request is sent to, the iVRI will switch to green immediately or uses the “Esitmated Time of Arrival” for green. For this, it is advised to wait with the request until the map area of the iVRI is entered, or that the vehicle is in short distance. Since the behaviour of different iVRI’s is dependent on local authorities, no strict rules for filling the messages can be provided.
Design rules:
- Update messages can be sent in an interval or when there is a change in situation.
- If, for any reason, the initiating SRM is missed by the iVRI, the first received SRM is assumed to be the initiator.
- SRM cancel message must be sent after crossing the stop-line of the entered approach.
- The CAM messages of the vehicle are sent independently from the SRM messages.
- Not all iVRI’s need a valid in the MAP fitting CAM message from the SRM sending vehicle to react on the request.
Estimated Time of Arrival (ETA)
When the vehicle is not in the proximity (within the iTLC geofence) of the iTLC for which the priority request is made,
the SRM have a mandatory filled-in
ETA, based on the vehicles own speed, distance and expectation when arriving at the stop-line of the approach-lane of
the iTLC.
Within the iTLC geofence, as drawn by the lane traces in the corresponding MAP message, the SRM has to be accompanied by
CAM. The latter with an interval of one per second.
The iTLC will then calculate the expected time of arrival, taking the signalgroup switching into account.
Priority Validator
Before a SRM from a service provider is sent to the TLEX, the content will be checked against the rules defined in the Priority Validator. These rules are set by the road-administrator to obtain the most logical and optimal local iTLC handling. In the case of not valid content, the priority validator will return a SSM with status rejected and will not deliver the SRM at the TLEX.
Data packages are encoded/decoded to ASN.1 standard, using the 'UPER' encoding rules.
Attributes
{
"Header": {
"ProtocolVersion": 2,
"MessageID": 9,
"StationID": 120399645
},
"Srm": {
...
}
}
The stationID in the message header is a combination your unique prefix service provider for the first 6 bits and the vehicle ID. See the onboarding documentation for more information on requesting your unique CROW prefix service provider.
An SREM message has 2 big objects, a Requests object and a Requestor object.
Requests
The Requests object contains a list of SignalRequestPackage objects. Each SignalRequestPackage object contains a Request object and metadata.
"Srm": {
...
"Requests":{
"SignalRequestPackage":[
{
"Request": {
"Id": {
"Region": 4001,
"Id": 811
},
"RequestID": 2,
"Requesttype": 1,
"InboundLane": {
"Lane": 0,
"Approach": 3,
"Connection": 0
},
"OutboundLane": null,
"Regional": null
},
...
]
}
}
The Id contains info on the intersection to which the request is relevant. The RequestID provides a unique link to the SSEM. The Requesttype indicates if a request is new, update or cancelation.
RequestTypes (extract from Dutch Profile)
- 1: New
- 2: Update
- 3: Cancel
"Srm": {
...
"Requests":{
"Requestor":{
...
"Type":{
...
"Role": 6,
"Subrole": 5,
"Request": 12,
...
}
}
}
}
The weight of the request is given in the Requestor.Type object. The Role attribute is used to define the type of basic vehicle role and the subrole attribute is used to define the type of vehicle subrole. The Request attribute is used to enrich information provided by the basic vehicle rol.
The Request field is value that is defined by the road authority and received from the Priority Broker Configurator. This value indicates the request importance level and can be set differently by the road authority for every traffic light individually.
Role (extract from Dutch Profile)
- 0: default
- 1: public transport
- 3: dangerous goods
- 6: emergency
- 8: agriculture
- 10: military
Subrole (extract from Dutch Profile)
- 0: unknown
- 1: bus
- 2: tram
- 5: emergency
Example
An extended description of the SREM ASN.1 can be found here.
SREM AMQP Header example
{
"id": ",4001-1371,",
"latitude": "51.22016505",
"quadTree": ",120202130223030112,",
"longitude": "4.35565284",
"custom-mobilidata-timestamp": "1712750496212",
"messageType": "SREM",
"publisherId": "BE00005",
"publicationId": "BE00005:SREM_02",
"baselineVersion": "2.1.0",
"custom-mobilidata-baselineVersion": "D"
"dtapEnvironment": "production",
"protocolVersion": "SREM:1.3.1",
"originatingCountry": "BE",
"shardId": "1",
"shardCount": "1"
}
SREM Message example
- ASN.1
- JSON
0209072d271d733f0631cd0103043e840cac089367e0c8e927041cb49c75819718a82e9874db6483a8adc38ad8862c983372e5b346a0
{
"Header": {
"ProtocolVersion": 2,
"MessageID": 9,
"StationID": 120399645
},
"Srm": {
"TimeStamp": 425484,
"Second": 25498,
"SequenceNumber": 1,
"Requests": {
"SignalRequestPackage": [
{
"Request": {
"Id": {
"Region": 4001,
"Id": 811
},
"RequestID": 2,
"Requesttype": 1,
"InboundLane": {
"Lane": 0,
"Approach": 3,
"Connection": 0
},
"OutboundLane": null,
"Regional": null
},
"Minute": 425484,
"Second": 36498,
"Duration": null,
"Regional": null
}
]
},
"Requestor": {
"Id": {
"EntityID": null,
"StationID": 120399645
},
"Type": {
"Role": 6,
"Subrole": 5,
"Request": 12,
"ISO3883": null,
"HpmsType": null,
"Regional": null
},
"Position": {
"Position": {
"Lat": 510812986,
"Lng": 40398804,
"Elevation": null,
"Regional": null
},
"Heading": 11120,
"Speed": {
"Transmission": 7,
"Speed": 694
}
},
"Name": "120399645",
"RouteName": "",
"TransitStatus": [
false,
false,
false,
false,
false,
false,
false,
false
],
"TransitOccupancy": null,
"TransitSchedule": -122,
"Regional": null
},
"Regional": null
}
}