Vendor the ASN.1 modules the codecs are verified against; untrack IDE churn
asn1/ Three tests assert exact bytes - CamEncodeGoldenTest, DenmAirReceiveTest and SpatemUperCodecTest - and their expected values came from asn1tools compiled against ETSI modules that existed only as an untracked working copy on one machine. A golden-byte fixture nobody else can regenerate is a fixture nobody can safely touch, so the modules are now in the repo. Only the seven .asn files those tests need are copied, 576 KB of a 4.2 MB checkout; the upstream Rust parser is not used by this project at all. Verified sufficient in isolation: copied into an empty directory, all three specs compile and reproduce the committed golden CAM bytes byte-identically. Source is consider it GmbH's C-ITS-Parser (github.com/consider-it/C-ITS-Parser) at f457426, MIT licensed - LICENSE is retained alongside as that requires. The schemas themselves are ETSI's standard definitions; upstream's contribution is assembling them into a compilable set. asn1/README.md records the provenance, which module pairs with which message, and the rule that matters: never regenerate a golden fixture from this project's own encoder, because sharing a mistake between encoder and decoder is exactly the failure these files exist to catch. Doc references in the codecs and tests now point at asn1/ instead of the untracked checkout, and C-ITS-Parser/ is gitignored so the working copy beside the project is never picked up. Untracked local state - .idea/deploymentTargetSelector.xml rewrites itself on every deploy, so it has been showing as modified in essentially every commit. Along with deviceManager.xml, appInsightsSettings.xml and studiobot.xml it is per-machine state, not project configuration. - obu-firmware/sdkconfig.old is ESP-IDF build output - it is the previous sdkconfig, rewritten on every build. sdkconfig.defaults remains tracked, since that is the configuration actually chosen. All five stay on disk; only the tracking is removed. Also ignores .claude/settings.local.json, which is per-machine, while leaving the skills beside it committable as project knowledge.
This commit is contained in:
+21
@@ -17,3 +17,24 @@ local.properties
|
|||||||
*.jks
|
*.jks
|
||||||
*.keystore
|
*.keystore
|
||||||
secrets.properties
|
secrets.properties
|
||||||
|
|
||||||
|
# --- local IDE state, not project configuration -------------------------------
|
||||||
|
# Which device you last deployed to, your emulator list, and Studio's assistant
|
||||||
|
# settings are per-machine. deploymentTargetSelector.xml in particular rewrites
|
||||||
|
# itself on every run, so tracking it means a dirty tree after every deploy.
|
||||||
|
/.idea/deploymentTargetSelector.xml
|
||||||
|
/.idea/deviceManager.xml
|
||||||
|
/.idea/appInsightsSettings.xml
|
||||||
|
/.idea/studiobot.xml
|
||||||
|
|
||||||
|
# ESP-IDF rewrites sdkconfig on every build and keeps the previous one here.
|
||||||
|
# sdkconfig.defaults is the real, intentional configuration; these two are output.
|
||||||
|
sdkconfig.old
|
||||||
|
|
||||||
|
# Claude Code local settings (permissions, per-machine). The skills alongside it
|
||||||
|
# are project knowledge and may be committed deliberately.
|
||||||
|
.claude/settings.local.json
|
||||||
|
|
||||||
|
# Third-party working copies kept beside the project, not part of it. The ASN.1
|
||||||
|
# modules this project actually needs are vendored under asn1/ instead.
|
||||||
|
/C-ITS-Parser/
|
||||||
|
|||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AppInsightsSettings">
|
|
||||||
<option name="selectedTabId" value="Android vitals" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-31
@@ -1,31 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="deploymentTargetSelector">
|
|
||||||
<selectionStates>
|
|
||||||
<SelectionState runConfigName="app">
|
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
|
||||||
<DropdownSelection timestamp="2026-08-05T15:07:39.343414600Z">
|
|
||||||
<Target type="DEFAULT_BOOT">
|
|
||||||
<handle>
|
|
||||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=56211FDAP0015L" />
|
|
||||||
</handle>
|
|
||||||
</Target>
|
|
||||||
</DropdownSelection>
|
|
||||||
<DialogSelection>
|
|
||||||
<targets>
|
|
||||||
<Target type="DEFAULT_BOOT">
|
|
||||||
<handle>
|
|
||||||
<DeviceId pluginId="PhysicalDevice" identifier="serial=56211FDAP0015L" />
|
|
||||||
</handle>
|
|
||||||
</Target>
|
|
||||||
<Target type="DEFAULT_BOOT">
|
|
||||||
<handle>
|
|
||||||
<DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\Ashin\.android\avd\Pixel_7_Pro.avd" />
|
|
||||||
</handle>
|
|
||||||
</Target>
|
|
||||||
</targets>
|
|
||||||
</DialogSelection>
|
|
||||||
</SelectionState>
|
|
||||||
</selectionStates>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-13
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DeviceTable">
|
|
||||||
<option name="columnSorters">
|
|
||||||
<list>
|
|
||||||
<ColumnSorterState>
|
|
||||||
<option name="column" value="Name" />
|
|
||||||
<option name="order" value="ASCENDING" />
|
|
||||||
</ColumnSorterState>
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="StudioBotProjectSettings">
|
|
||||||
<option name="shareContext" value="OptedOut" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -262,7 +262,7 @@ object CamUperCodec {
|
|||||||
// Optional-presence bitmap for BasicVehicleContainerHighFrequency's 7 trailing OPTIONAL
|
// Optional-presence bitmap for BasicVehicleContainerHighFrequency's 7 trailing OPTIONAL
|
||||||
// fields: accelerationControl, lanePosition, steeringWheelAngle, lateralAcceleration,
|
// fields: accelerationControl, lanePosition, steeringWheelAngle, lateralAcceleration,
|
||||||
// verticalAcceleration, performanceClass, cenDsrcTollingZone (see
|
// verticalAcceleration, performanceClass, cenDsrcTollingZone (see
|
||||||
// C-ITS-Parser/autogen/asn.1/cam_1_4_1.asn).
|
// asn1/cam_1_4_1.asn).
|
||||||
//
|
//
|
||||||
// Consumed but not acted on, and that is correct: UPER writes a SEQUENCE's presence
|
// Consumed but not acted on, and that is correct: UPER writes a SEQUENCE's presence
|
||||||
// bitmap up front but each field's VALUE in declaration order, and all seven of these are
|
// bitmap up front but each field's VALUE in declaration order, and all seven of these are
|
||||||
@@ -315,7 +315,7 @@ object CamUperCodec {
|
|||||||
// IMPORTANT: if a future change needs any of those - path history is the likely one - the
|
// IMPORTANT: if a future change needs any of those - path history is the likely one - the
|
||||||
// 7 optionals must be parsed and consumed first, in declaration order, or every read after
|
// 7 optionals must be parsed and consumed first, in declaration order, or every read after
|
||||||
// them lands at the wrong bit offset. At that point this hand-written decoder stops being
|
// them lands at the wrong bit offset. At that point this hand-written decoder stops being
|
||||||
// the right tool; use the generated codec (see C-ITS-Parser) instead.
|
// the right tool; use a generated codec (see asn1/README.md) instead.
|
||||||
return Cam(
|
return Cam(
|
||||||
stationId = stationId,
|
stationId = stationId,
|
||||||
stationType = stationType,
|
stationType = stationType,
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ import com.hawhamburg.micr0bu.domain.denm.DenmEvent
|
|||||||
* large, deeply nested, and nothing consumes them yet.
|
* large, deeply nested, and nothing consumes them yet.
|
||||||
*
|
*
|
||||||
* ## Field widths
|
* ## Field widths
|
||||||
* Every width below is taken from the ETSI ASN.1 modules in the `C-ITS-Parser` checkout
|
* Every width below is taken from the ETSI ASN.1 modules in `asn1/` (`denm_1_3_1.asn`, `cdd_1_3_1_1.asn`), and every extension marker was
|
||||||
* (`autogen/asn.1/denm_1_3_1.asn`, `cdd_1_3_1_1.asn`), and every extension marker was
|
|
||||||
* cross-checked against how `rasn` renders the same type (`#[non_exhaustive]` marks an extensible
|
* cross-checked against how `rasn` renders the same type (`#[non_exhaustive]` marks an extensible
|
||||||
* SEQUENCE). That cross-check matters: hand-derived widths are exactly how this project shipped a
|
* SEQUENCE). That cross-check matters: hand-derived widths are exactly how this project shipped a
|
||||||
* one-bit `CurvatureCalculationMode` bug in CAM that was invisible until measured against real
|
* one-bit `CurvatureCalculationMode` bug in CAM that was invisible until measured against real
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import com.hawhamburg.micr0bu.domain.spat.SpatEvent
|
|||||||
* Decode-only: this project never transmits SPATEM, that is an RSU's job.
|
* Decode-only: this project never transmits SPATEM, that is an RSU's job.
|
||||||
*
|
*
|
||||||
* ## Field widths
|
* ## Field widths
|
||||||
* Every width is taken from the ETSI ASN.1 modules in the `C-ITS-Parser` checkout
|
* Every width is taken from the ETSI ASN.1 modules in `asn1/` (`dsrc_2_2_1.asn`, `cdd_2_2_1.asn`):
|
||||||
* (`dsrc_2_2_1.asn`, `cdd_2_2_1.asn`):
|
|
||||||
*
|
*
|
||||||
* - `MinuteOfTheYear` (0..527040) = 20 bits
|
* - `MinuteOfTheYear` (0..527040) = 20 bits
|
||||||
* - `DSecond` (0..65535) = 16 bits
|
* - `DSecond` (0..65535) = 16 bits
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import org.junit.Test
|
|||||||
*
|
*
|
||||||
* A round-trip test through this codebase's own decoder cannot catch that - it shares the
|
* A round-trip test through this codebase's own decoder cannot catch that - it shares the
|
||||||
* mistake. Only an independent implementation can. So the expected bytes below were produced by
|
* mistake. Only an independent implementation can. So the expected bytes below were produced by
|
||||||
* `asn1tools` compiled from the real ETSI modules in the `C-ITS-Parser` checkout: it decoded this
|
* `asn1tools` compiled from the real ETSI modules in `asn1/`: it decoded this
|
||||||
* encoder's output and re-encoded it, and the result was byte-identical to what is asserted here.
|
* encoder's output and re-encoded it, and the result was byte-identical to what is asserted here.
|
||||||
* That is stronger than "it parses" - it means this encoder emits exactly what the reference
|
* That is stronger than "it parses" - it means this encoder emits exactly what the reference
|
||||||
* encoder emits.
|
* encoder emits.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.junit.Test
|
|||||||
*
|
*
|
||||||
* ## Why the expected values can be trusted
|
* ## Why the expected values can be trusted
|
||||||
* Every asserted field was cross-checked against `asn1tools` decoding the same bytes with the real
|
* Every asserted field was cross-checked against `asn1tools` decoding the same bytes with the real
|
||||||
* ETSI modules from the `C-ITS-Parser` checkout (`denm_1_3_1.asn` + `cdd_1_3_1_1.asn`) — an
|
* ETSI modules in `asn1/` (`denm_1_3_1.asn` + `cdd_1_3_1_1.asn`) — an
|
||||||
* independent implementation, not this codebase's own arithmetic. Across the full capture set that
|
* independent implementation, not this codebase's own arithmetic. Across the full capture set that
|
||||||
* cross-check agreed on all 1885 decodable DENMs, on every field below including `detectionTime`.
|
* cross-check agreed on all 1885 decodable DENMs, on every field below including `detectionTime`.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.junit.Test
|
|||||||
*
|
*
|
||||||
* The fixture is a real 26-byte RSU CAM taken live from the OBU's `v2x/rx/cam` topic; the
|
* The fixture is a real 26-byte RSU CAM taken live from the OBU's `v2x/rx/cam` topic; the
|
||||||
* expected values are asn1tools' decoding of those same bytes using the ETSI modules in the
|
* expected values are asn1tools' decoding of those same bytes using the ETSI modules in the
|
||||||
* `C-ITS-Parser` checkout.
|
* `asn1/`.
|
||||||
*/
|
*/
|
||||||
class RsuCamDecodeTest {
|
class RsuCamDecodeTest {
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.junit.Test
|
|||||||
* ## Why the expected values can be trusted
|
* ## Why the expected values can be trusted
|
||||||
* The bit layout was validated by replaying **79,042 real SPATEMs** - the whole drive across 7+
|
* The bit layout was validated by replaying **79,042 real SPATEMs** - the whole drive across 7+
|
||||||
* RSUs plus the live trigger - through a port of this decoder and comparing every field against
|
* RSUs plus the live trigger - through a port of this decoder and comparing every field against
|
||||||
* `asn1tools` decoding the same bytes with the ETSI modules from the `C-ITS-Parser` checkout.
|
* `asn1tools` decoding the same bytes with the ETSI modules in `asn1/`.
|
||||||
* All 79,042 matched exactly, and none hit an unsupported branch. The values asserted below are
|
* All 79,042 matched exactly, and none hit an unsupported branch. The values asserted below are
|
||||||
* that independent decoder's output, not this codebase's own arithmetic.
|
* that independent decoder's output, not this codebase's own arithmetic.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2026 consider it GmbH
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# ETSI ASN.1 modules
|
||||||
|
|
||||||
|
The ASN.1 schemas this project's UPER codecs are validated against. **Schemas only** — no parser
|
||||||
|
code. Nothing in the app or the firmware reads these files at build or run time; they exist so the
|
||||||
|
hand-written codecs in `app/src/main/java/.../domain/asn1/` can be checked against an independent
|
||||||
|
implementation.
|
||||||
|
|
||||||
|
## Why this is here rather than just documented
|
||||||
|
|
||||||
|
Three of this project's tests assert exact bytes:
|
||||||
|
|
||||||
|
- `CamEncodeGoldenTest` — the CAM this app transmits, byte for byte
|
||||||
|
- `DenmAirReceiveTest`, `SpatemUperCodecTest` — real captured frames with field values
|
||||||
|
|
||||||
|
Those expected values were produced by decoding with `asn1tools` compiled from these modules. Without
|
||||||
|
them the fixtures cannot be regenerated or re-verified, and a golden-byte test you cannot regenerate
|
||||||
|
is a test nobody can safely touch.
|
||||||
|
|
||||||
|
This matters because the project has shipped the same class of bug three times: a field encoded with
|
||||||
|
the wrong number of bits, which this codebase then read back with the *same* wrong number. Phone and
|
||||||
|
ESP32 agree perfectly with each other and with nothing else, so every internal round-trip test passes
|
||||||
|
while the frames on air are malformed (`CurvatureCalculationMode`, the GeoNetworking reserved bytes,
|
||||||
|
`yawRateConfidence`). Only a second, independent implementation catches that — which is what these
|
||||||
|
modules provide.
|
||||||
|
|
||||||
|
## Provenance
|
||||||
|
|
||||||
|
Taken from consider it GmbH's C-ITS-Parser:
|
||||||
|
|
||||||
|
- <https://github.com/consider-it/C-ITS-Parser>
|
||||||
|
- commit `f457426efc2486fac49a02fc9a1c8c7762d160e9`
|
||||||
|
- MIT licensed — see `LICENSE`, retained here as the licence requires
|
||||||
|
|
||||||
|
Only the seven `.asn` files below are copied, out of a 4.2 MB checkout. The upstream Rust parser is
|
||||||
|
not used by this project in any way. The schemas themselves are ETSI's standard definitions; the
|
||||||
|
upstream repo's contribution is assembling them into a compilable set.
|
||||||
|
|
||||||
|
| file | used for |
|
||||||
|
|---|---|
|
||||||
|
| `cam_1_4_1.asn` + `cdd_1_3_1_1.asn` | CAM encode/decode |
|
||||||
|
| `denm_1_3_1.asn` + `cdd_1_3_1_1.asn` | DENM decode |
|
||||||
|
| `spatem_2_2_1.asn`, `mapem_2_2_1.asn`, `dsrc_2_2_1.asn`, `cdd_2_2_1.asn` | SPATEM/MAPEM decode |
|
||||||
|
|
||||||
|
Note CAM/DENM use the release-1 common dictionary (`cdd_1_3_1_1`) while SPATEM/MAPEM use release 2
|
||||||
|
(`cdd_2_2_1`). Both are needed; they are not interchangeable.
|
||||||
|
|
||||||
|
These seven were verified sufficient on their own: copied into an empty directory, all three specs
|
||||||
|
compile and reproduce the committed golden bytes.
|
||||||
|
|
||||||
|
## Regenerating a fixture
|
||||||
|
|
||||||
|
Requires Python with `asn1tools` (verified with 0.167.0):
|
||||||
|
|
||||||
|
```python
|
||||||
|
import asn1tools
|
||||||
|
spec = asn1tools.compile_files(["asn1/cam_1_4_1.asn", "asn1/cdd_1_3_1_1.asn"], "uper")
|
||||||
|
spec.decode("CAM", raw_uper_bytes)
|
||||||
|
```
|
||||||
|
|
||||||
|
For SPATEM, compile `spatem_2_2_1.asn`, `mapem_2_2_1.asn`, `dsrc_2_2_1.asn`, `cdd_2_2_1.asn`
|
||||||
|
together and decode `"SPATEM"`.
|
||||||
|
|
||||||
|
**Never regenerate a golden fixture from this project's own encoder output** — that is precisely the
|
||||||
|
mistake these files exist to catch. Regenerate through `asn1tools`, or the test is worthless.
|
||||||
|
|
||||||
|
## Updating
|
||||||
|
|
||||||
|
Re-pin deliberately, not casually. If a newer ETSI release is adopted, copy the new modules, then
|
||||||
|
re-run the golden-byte tests and confirm any change in expected bytes is explained by the spec
|
||||||
|
change rather than by a decoder regression.
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
CAM-PDU-Descriptions {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (2)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::=
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
ItsPduHeader, CauseCode, ReferencePosition, AccelerationControl, Curvature, CurvatureCalculationMode, Heading, LanePosition, EmergencyPriority, EmbarkationStatus, Speed, DriveDirection, LongitudinalAcceleration, LateralAcceleration, VerticalAcceleration, StationType, ExteriorLights, DangerousGoodsBasic, SpecialTransportType, LightBarSirenInUse, VehicleRole, VehicleLength, VehicleWidth, PathHistory, RoadworksSubCauseCode, ClosedLanes, TrafficRule, SpeedLimit, SteeringWheelAngle, PerformanceClass, YawRate, ProtectedCommunicationZone, PtActivation, Latitude, Longitude, ProtectedCommunicationZonesRSU, CenDsrcTollingZone FROM ITS-Container {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
-- The root data frame for cooperative awareness messages
|
||||||
|
|
||||||
|
CAM ::= SEQUENCE {
|
||||||
|
header ItsPduHeader,
|
||||||
|
cam CoopAwareness
|
||||||
|
}
|
||||||
|
|
||||||
|
CoopAwareness ::= SEQUENCE {
|
||||||
|
generationDeltaTime GenerationDeltaTime,
|
||||||
|
camParameters CamParameters
|
||||||
|
}
|
||||||
|
|
||||||
|
CamParameters ::= SEQUENCE {
|
||||||
|
basicContainer BasicContainer,
|
||||||
|
highFrequencyContainer HighFrequencyContainer,
|
||||||
|
lowFrequencyContainer LowFrequencyContainer OPTIONAL,
|
||||||
|
specialVehicleContainer SpecialVehicleContainer OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
HighFrequencyContainer ::= CHOICE {
|
||||||
|
basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency,
|
||||||
|
rsuContainerHighFrequency RSUContainerHighFrequency,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
LowFrequencyContainer ::= CHOICE {
|
||||||
|
basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SpecialVehicleContainer ::= CHOICE {
|
||||||
|
publicTransportContainer PublicTransportContainer,
|
||||||
|
specialTransportContainer SpecialTransportContainer,
|
||||||
|
dangerousGoodsContainer DangerousGoodsContainer,
|
||||||
|
roadWorksContainerBasic RoadWorksContainerBasic,
|
||||||
|
rescueContainer RescueContainer,
|
||||||
|
emergencyContainer EmergencyContainer,
|
||||||
|
safetyCarContainer SafetyCarContainer,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
BasicContainer ::= SEQUENCE {
|
||||||
|
stationType StationType,
|
||||||
|
referencePosition ReferencePosition,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
BasicVehicleContainerHighFrequency ::= SEQUENCE {
|
||||||
|
heading Heading,
|
||||||
|
speed Speed,
|
||||||
|
driveDirection DriveDirection,
|
||||||
|
vehicleLength VehicleLength,
|
||||||
|
vehicleWidth VehicleWidth,
|
||||||
|
longitudinalAcceleration LongitudinalAcceleration,
|
||||||
|
curvature Curvature,
|
||||||
|
curvatureCalculationMode CurvatureCalculationMode,
|
||||||
|
yawRate YawRate,
|
||||||
|
accelerationControl AccelerationControl OPTIONAL,
|
||||||
|
lanePosition LanePosition OPTIONAL,
|
||||||
|
steeringWheelAngle SteeringWheelAngle OPTIONAL,
|
||||||
|
lateralAcceleration LateralAcceleration OPTIONAL,
|
||||||
|
verticalAcceleration VerticalAcceleration OPTIONAL,
|
||||||
|
performanceClass PerformanceClass OPTIONAL,
|
||||||
|
cenDsrcTollingZone CenDsrcTollingZone OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
BasicVehicleContainerLowFrequency ::= SEQUENCE {
|
||||||
|
vehicleRole VehicleRole,
|
||||||
|
exteriorLights ExteriorLights,
|
||||||
|
pathHistory PathHistory
|
||||||
|
}
|
||||||
|
|
||||||
|
PublicTransportContainer ::= SEQUENCE {
|
||||||
|
embarkationStatus EmbarkationStatus,
|
||||||
|
ptActivation PtActivation OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
SpecialTransportContainer ::= SEQUENCE {
|
||||||
|
specialTransportType SpecialTransportType,
|
||||||
|
lightBarSirenInUse LightBarSirenInUse
|
||||||
|
}
|
||||||
|
|
||||||
|
DangerousGoodsContainer ::= SEQUENCE {
|
||||||
|
dangerousGoodsBasic DangerousGoodsBasic
|
||||||
|
}
|
||||||
|
|
||||||
|
RoadWorksContainerBasic ::= SEQUENCE {
|
||||||
|
roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL,
|
||||||
|
lightBarSirenInUse LightBarSirenInUse,
|
||||||
|
closedLanes ClosedLanes OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
RescueContainer ::= SEQUENCE {
|
||||||
|
lightBarSirenInUse LightBarSirenInUse
|
||||||
|
}
|
||||||
|
|
||||||
|
EmergencyContainer ::= SEQUENCE {
|
||||||
|
lightBarSirenInUse LightBarSirenInUse,
|
||||||
|
incidentIndication CauseCode OPTIONAL,
|
||||||
|
emergencyPriority EmergencyPriority OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
SafetyCarContainer ::= SEQUENCE {
|
||||||
|
lightBarSirenInUse LightBarSirenInUse,
|
||||||
|
incidentIndication CauseCode OPTIONAL,
|
||||||
|
trafficRule TrafficRule OPTIONAL,
|
||||||
|
speedLimit SpeedLimit OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
RSUContainerHighFrequency ::= SEQUENCE {
|
||||||
|
protectedCommunicationZonesRSU ProtectedCommunicationZonesRSU OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535)
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,511 @@
|
|||||||
|
ITS-Container {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::=
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
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) } (0..255), -- Mantis #7209, #7005
|
||||||
|
stationID StationID
|
||||||
|
}
|
||||||
|
|
||||||
|
StationID ::= INTEGER(0..4294967295)
|
||||||
|
|
||||||
|
ReferencePosition ::= SEQUENCE {
|
||||||
|
latitude Latitude,
|
||||||
|
longitude Longitude,
|
||||||
|
positionConfidenceEllipse PosConfidenceEllipse ,
|
||||||
|
altitude Altitude
|
||||||
|
}
|
||||||
|
|
||||||
|
DeltaReferencePosition ::= SEQUENCE {
|
||||||
|
deltaLatitude DeltaLatitude,
|
||||||
|
deltaLongitude DeltaLongitude,
|
||||||
|
deltaAltitude DeltaAltitude
|
||||||
|
}
|
||||||
|
|
||||||
|
Longitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(1800000001)} (-1800000000..1800000001)
|
||||||
|
|
||||||
|
Latitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001)} (-900000000..900000001)
|
||||||
|
|
||||||
|
Altitude ::= SEQUENCE {
|
||||||
|
altitudeValue AltitudeValue,
|
||||||
|
altitudeConfidence AltitudeConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
AltitudeValue ::= INTEGER {referenceEllipsoidSurface(0), oneCentimeter(1), unavailable(800001)} (-100000..800001)
|
||||||
|
|
||||||
|
AltitudeConfidence ::= ENUMERATED {
|
||||||
|
alt-000-01 (0),
|
||||||
|
alt-000-02 (1),
|
||||||
|
alt-000-05 (2),
|
||||||
|
alt-000-10 (3),
|
||||||
|
alt-000-20 (4),
|
||||||
|
alt-000-50 (5),
|
||||||
|
alt-001-00 (6),
|
||||||
|
alt-002-00 (7),
|
||||||
|
alt-005-00 (8),
|
||||||
|
alt-010-00 (9),
|
||||||
|
alt-020-00 (10),
|
||||||
|
alt-050-00 (11),
|
||||||
|
alt-100-00 (12),
|
||||||
|
alt-200-00 (13),
|
||||||
|
outOfRange (14),
|
||||||
|
unavailable (15)
|
||||||
|
}
|
||||||
|
|
||||||
|
DeltaLongitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(131072)} (-131071..131072)
|
||||||
|
|
||||||
|
DeltaLatitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) , unavailable(131072)} (-131071..131072)
|
||||||
|
|
||||||
|
DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-12700..12800)
|
||||||
|
|
||||||
|
PosConfidenceEllipse ::= SEQUENCE {
|
||||||
|
semiMajorConfidence SemiAxisLength,
|
||||||
|
semiMinorConfidence SemiAxisLength,
|
||||||
|
semiMajorOrientation HeadingValue
|
||||||
|
}
|
||||||
|
|
||||||
|
PathPoint ::= SEQUENCE {
|
||||||
|
pathPosition DeltaReferencePosition,
|
||||||
|
pathDeltaTime PathDeltaTime OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
PathDeltaTime ::= INTEGER {tenMilliSecondsInPast(1)} (1..65535, ...)
|
||||||
|
|
||||||
|
PtActivation ::= SEQUENCE {
|
||||||
|
ptActivationType PtActivationType,
|
||||||
|
ptActivationData PtActivationData
|
||||||
|
}
|
||||||
|
|
||||||
|
PtActivationType ::= INTEGER {undefinedCodingType(0), r09-16CodingType(1), vdv-50149CodingType(2)} (0..255)
|
||||||
|
|
||||||
|
PtActivationData ::= OCTET STRING (SIZE(1..20))
|
||||||
|
|
||||||
|
AccelerationControl ::= BIT STRING {
|
||||||
|
brakePedalEngaged (0),
|
||||||
|
gasPedalEngaged (1),
|
||||||
|
emergencyBrakeEngaged (2),
|
||||||
|
collisionWarningEngaged (3),
|
||||||
|
accEngaged (4),
|
||||||
|
cruiseControlEngaged (5),
|
||||||
|
speedLimiterEngaged (6)
|
||||||
|
} (SIZE(7))
|
||||||
|
|
||||||
|
|
||||||
|
SemiAxisLength ::= INTEGER{oneCentimeter(1), outOfRange(4094), unavailable(4095)} (0..4095)
|
||||||
|
|
||||||
|
CauseCode ::= SEQUENCE {
|
||||||
|
causeCode CauseCodeType,
|
||||||
|
subCauseCode SubCauseCodeType,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
CauseCodeType ::= INTEGER {
|
||||||
|
reserved (0),
|
||||||
|
trafficCondition (1),
|
||||||
|
accident (2),
|
||||||
|
roadworks (3),
|
||||||
|
impassability (5),
|
||||||
|
adverseWeatherCondition-Adhesion (6),
|
||||||
|
aquaplannning (7),
|
||||||
|
hazardousLocation-SurfaceCondition (9),
|
||||||
|
hazardousLocation-ObstacleOnTheRoad (10),
|
||||||
|
hazardousLocation-AnimalOnTheRoad (11),
|
||||||
|
humanPresenceOnTheRoad (12),
|
||||||
|
wrongWayDriving (14),
|
||||||
|
rescueAndRecoveryWorkInProgress (15),
|
||||||
|
adverseWeatherCondition-ExtremeWeatherCondition (17),
|
||||||
|
adverseWeatherCondition-Visibility (18),
|
||||||
|
adverseWeatherCondition-Precipitation (19),
|
||||||
|
slowVehicle (26),
|
||||||
|
dangerousEndOfQueue (27),
|
||||||
|
vehicleBreakdown (91),
|
||||||
|
postCrash (92),
|
||||||
|
humanProblem (93),
|
||||||
|
stationaryVehicle (94),
|
||||||
|
emergencyVehicleApproaching (95),
|
||||||
|
hazardousLocation-DangerousCurve (96),
|
||||||
|
collisionRisk (97),
|
||||||
|
signalViolation (98),
|
||||||
|
dangerousSituation (99)
|
||||||
|
} (0..255)
|
||||||
|
|
||||||
|
SubCauseCodeType ::= INTEGER (0..255)
|
||||||
|
|
||||||
|
TrafficConditionSubCauseCode ::= INTEGER {unavailable(0), increasedVolumeOfTraffic(1), trafficJamSlowlyIncreasing(2), trafficJamIncreasing(3), trafficJamStronglyIncreasing(4), trafficStationary(5), trafficJamSlightlyDecreasing(6), trafficJamDecreasing(7), trafficJamStronglyDecreasing(8)} (0..255)
|
||||||
|
|
||||||
|
AccidentSubCauseCode ::= INTEGER {unavailable(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8)} (0..255)
|
||||||
|
|
||||||
|
RoadworksSubCauseCode ::= INTEGER {unavailable(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3), shortTermStationaryRoadworks(4), streetCleaning(5), winterService(6)} (0..255)
|
||||||
|
|
||||||
|
HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3)} (0..255)
|
||||||
|
|
||||||
|
WrongWayDrivingSubCauseCode ::= INTEGER {unavailable(0), wrongLane(1), wrongDirection(2)} (0..255)
|
||||||
|
|
||||||
|
AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {unavailable(0), strongWinds(1), damagingHail(2), hurricane(3), thunderstorm(4), tornado(5), blizzard(6)} (0..255)
|
||||||
|
|
||||||
|
AdverseWeatherCondition-AdhesionSubCauseCode ::= INTEGER {unavailable(0), heavyFrostOnRoad(1), fuelOnRoad(2), mudOnRoad(3), snowOnRoad(4), iceOnRoad(5), blackIceOnRoad(6), oilOnRoad(7), looseChippings(8), instantBlackIce(9), roadsSalted(10)} (0..255)
|
||||||
|
|
||||||
|
AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {unavailable(0), fog(1), smoke(2), heavySnowfall(3), heavyRain(4), heavyHail(5), lowSunGlare(6), sandstorms(7), swarmsOfInsects(8)} (0..255)
|
||||||
|
|
||||||
|
AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {unavailable(0), heavyRain(1), heavySnowfall(2), softHail(3)} (0..255)
|
||||||
|
|
||||||
|
SlowVehicleSubCauseCode ::= INTEGER {unavailable(0), maintenanceVehicle(1), vehiclesSlowingToLookAtAccident(2), abnormalLoad(3), abnormalWideLoad(4), convoy(5), snowplough(6), deicing(7), saltingVehicles(8)} (0..255)
|
||||||
|
|
||||||
|
StationaryVehicleSubCauseCode ::= INTEGER {unavailable(0), humanProblem(1), vehicleBreakdown(2), postCrash(3), publicTransportStop(4), carryingDangerousGoods(5)} (0..255)
|
||||||
|
|
||||||
|
HumanProblemSubCauseCode ::= INTEGER {unavailable(0), glycemiaProblem(1), heartProblem(2)} (0..255)
|
||||||
|
|
||||||
|
EmergencyVehicleApproachingSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicleApproaching(1), prioritizedVehicleApproaching(2)} (0..255)
|
||||||
|
|
||||||
|
HazardousLocation-DangerousCurveSubCauseCode ::= INTEGER {unavailable(0), dangerousLeftTurnCurve(1), dangerousRightTurnCurve(2), multipleCurvesStartingWithUnknownTurningDirection(3), multipleCurvesStartingWithLeftTurn(4), multipleCurvesStartingWithRightTurn(5)} (0..255)
|
||||||
|
|
||||||
|
HazardousLocation-SurfaceConditionSubCauseCode ::= INTEGER {unavailable(0), rockfalls(1), earthquakeDamage(2), sewerCollapse(3), subsidence(4), snowDrifts(5), stormDamage(6), burstPipe(7), volcanoEruption(8), fallingIce(9)} (0..255)
|
||||||
|
|
||||||
|
HazardousLocation-ObstacleOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), shedLoad(1), partsOfVehicles(2), partsOfTyres(3), bigObjects(4), fallenTrees(5), hubCaps(6), waitingVehicles(7)} (0..255)
|
||||||
|
|
||||||
|
HazardousLocation-AnimalOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), wildAnimals(1), herdOfAnimals(2), smallAnimals(3), largeAnimals(4)} (0..255)
|
||||||
|
|
||||||
|
CollisionRiskSubCauseCode ::= INTEGER {unavailable(0), longitudinalCollisionRisk(1), crossingCollisionRisk(2), lateralCollisionRisk(3), vulnerableRoadUser(4)} (0..255)
|
||||||
|
|
||||||
|
SignalViolationSubCauseCode ::= INTEGER {unavailable(0), stopSignViolation(1), trafficLightViolation(2), turningRegulationViolation(3)} (0..255)
|
||||||
|
|
||||||
|
RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicles(1), rescueHelicopterLanding(2), policeActivityOngoing(3), medicalEmergencyOngoing(4), childAbductionInProgress(5)} (0..255)
|
||||||
|
|
||||||
|
DangerousEndOfQueueSubCauseCode ::= INTEGER {unavailable(0), suddenEndOfQueue(1), queueOverHill(2), queueAroundBend(3), queueInTunnel(4)} (0..255)
|
||||||
|
|
||||||
|
DangerousSituationSubCauseCode ::= INTEGER {unavailable(0), emergencyElectronicBrakeEngaged(1), preCrashSystemEngaged(2), espEngaged(3), absEngaged(4), aebEngaged(5), brakeWarningEngaged(6), collisionRiskWarningEngaged(7)} (0..255)
|
||||||
|
|
||||||
|
VehicleBreakdownSubCauseCode ::= INTEGER {unavailable(0), lackOfFuel (1), lackOfBatteryPower (2), engineProblem(3), transmissionProblem(4), engineCoolingProblem(5), brakingSystemProblem(6), steeringProblem(7), tyrePuncture(8), tyrePressureProblem(9)} (0..255)
|
||||||
|
|
||||||
|
PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255)
|
||||||
|
|
||||||
|
Curvature ::= SEQUENCE {
|
||||||
|
curvatureValue CurvatureValue,
|
||||||
|
curvatureConfidence CurvatureConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
CurvatureValue ::= INTEGER {straight(0), unavailable(1023)} (-1023..1023)
|
||||||
|
|
||||||
|
CurvatureConfidence ::= ENUMERATED {
|
||||||
|
onePerMeter-0-00002 (0),
|
||||||
|
onePerMeter-0-0001 (1),
|
||||||
|
onePerMeter-0-0005 (2),
|
||||||
|
onePerMeter-0-002 (3),
|
||||||
|
onePerMeter-0-01 (4),
|
||||||
|
onePerMeter-0-1 (5),
|
||||||
|
outOfRange (6),
|
||||||
|
unavailable (7)
|
||||||
|
}
|
||||||
|
|
||||||
|
CurvatureCalculationMode ::= ENUMERATED {yawRateUsed(0), yawRateNotUsed(1), unavailable(2), ...}
|
||||||
|
|
||||||
|
Heading ::= SEQUENCE {
|
||||||
|
headingValue HeadingValue,
|
||||||
|
headingConfidence HeadingConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
HeadingValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3601)} (0..3601)
|
||||||
|
|
||||||
|
HeadingConfidence ::= INTEGER {equalOrWithinZeroPointOneDegree (1), equalOrWithinOneDegree (10), outOfRange(126), unavailable(127)} (1..127)
|
||||||
|
|
||||||
|
LanePosition ::= INTEGER {offTheRoad(-1), innerHardShoulder(0),
|
||||||
|
innermostDrivingLane(1), secondLaneFromInside(2), outerHardShoulder(14) } (-1..14)
|
||||||
|
|
||||||
|
ClosedLanes ::= SEQUENCE {
|
||||||
|
innerhardShoulderStatus HardShoulderStatus OPTIONAL,
|
||||||
|
outerhardShoulderStatus HardShoulderStatus OPTIONAL,
|
||||||
|
drivingLaneStatus DrivingLaneStatus OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
HardShoulderStatus ::= ENUMERATED {availableForStopping(0), closed(1), availableForDriving(2)}
|
||||||
|
|
||||||
|
DrivingLaneStatus ::= BIT STRING (SIZE (1..13))
|
||||||
|
|
||||||
|
|
||||||
|
PerformanceClass ::= INTEGER {unavailable(0), performanceClassA(1), performanceClassB(2)} (0..7)
|
||||||
|
|
||||||
|
SpeedValue ::= INTEGER {standstill(0), oneCentimeterPerSec(1), unavailable(16383)} (0..16383)
|
||||||
|
|
||||||
|
SpeedConfidence ::= INTEGER {equalOrWithinOneCentimeterPerSec(1), equalOrWithinOneMeterPerSec(100), outOfRange(126), unavailable(127)} (1..127)
|
||||||
|
|
||||||
|
VehicleMass ::= INTEGER {hundredKg(1), unavailable(1024)} (1..1024)
|
||||||
|
|
||||||
|
Speed ::= SEQUENCE {
|
||||||
|
speedValue SpeedValue,
|
||||||
|
speedConfidence SpeedConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
DriveDirection ::= ENUMERATED {forward (0), backward (1), unavailable (2)}
|
||||||
|
|
||||||
|
EmbarkationStatus ::= BOOLEAN
|
||||||
|
|
||||||
|
LongitudinalAcceleration ::= SEQUENCE {
|
||||||
|
longitudinalAccelerationValue LongitudinalAccelerationValue,
|
||||||
|
longitudinalAccelerationConfidence AccelerationConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
LongitudinalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161)
|
||||||
|
|
||||||
|
AccelerationConfidence ::= INTEGER {pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102)
|
||||||
|
|
||||||
|
LateralAcceleration ::= SEQUENCE {
|
||||||
|
lateralAccelerationValue LateralAccelerationValue,
|
||||||
|
lateralAccelerationConfidence AccelerationConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
LateralAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredToRight(-1), pointOneMeterPerSecSquaredToLeft(1), unavailable(161)} (-160 .. 161)
|
||||||
|
|
||||||
|
VerticalAcceleration ::= SEQUENCE {
|
||||||
|
verticalAccelerationValue VerticalAccelerationValue,
|
||||||
|
verticalAccelerationConfidence AccelerationConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
VerticalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredUp(1), pointOneMeterPerSecSquaredDown(-1), unavailable(161)} (-160 .. 161)
|
||||||
|
|
||||||
|
StationType ::= INTEGER {unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6),
|
||||||
|
lightTruck(7), heavyTruck(8), trailer(9), specialVehicles(10), tram(11), roadSideUnit(15)} (0..255)
|
||||||
|
|
||||||
|
ExteriorLights ::= BIT STRING {
|
||||||
|
lowBeamHeadlightsOn (0),
|
||||||
|
highBeamHeadlightsOn (1),
|
||||||
|
leftTurnSignalOn (2),
|
||||||
|
rightTurnSignalOn (3),
|
||||||
|
daytimeRunningLightsOn (4),
|
||||||
|
reverseLightOn (5),
|
||||||
|
fogLightOn (6),
|
||||||
|
parkingLightsOn (7)
|
||||||
|
} (SIZE(8))
|
||||||
|
|
||||||
|
DangerousGoodsBasic::= ENUMERATED {
|
||||||
|
explosives1(0),
|
||||||
|
explosives2(1),
|
||||||
|
explosives3(2),
|
||||||
|
explosives4(3),
|
||||||
|
explosives5(4),
|
||||||
|
explosives6(5),
|
||||||
|
flammableGases(6),
|
||||||
|
nonFlammableGases(7),
|
||||||
|
toxicGases(8),
|
||||||
|
flammableLiquids(9),
|
||||||
|
flammableSolids(10),
|
||||||
|
substancesLiableToSpontaneousCombustion(11),
|
||||||
|
substancesEmittingFlammableGasesUponContactWithWater(12),
|
||||||
|
oxidizingSubstances(13),
|
||||||
|
organicPeroxides(14),
|
||||||
|
toxicSubstances(15),
|
||||||
|
infectiousSubstances(16),
|
||||||
|
radioactiveMaterial(17),
|
||||||
|
corrosiveSubstances(18),
|
||||||
|
miscellaneousDangerousSubstances(19)
|
||||||
|
}
|
||||||
|
|
||||||
|
DangerousGoodsExtended ::= SEQUENCE {
|
||||||
|
dangerousGoodsType DangerousGoodsBasic,
|
||||||
|
unNumber INTEGER (0..9999),
|
||||||
|
elevatedTemperature BOOLEAN,
|
||||||
|
tunnelsRestricted BOOLEAN,
|
||||||
|
limitedQuantity BOOLEAN,
|
||||||
|
emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL,
|
||||||
|
phoneNumber PhoneNumber OPTIONAL,
|
||||||
|
companyName UTF8String (SIZE (1..24)) OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)} (SIZE(4))
|
||||||
|
|
||||||
|
LightBarSirenInUse ::= BIT STRING {
|
||||||
|
lightBarActivated (0),
|
||||||
|
sirenActivated (1)
|
||||||
|
} (SIZE(2))
|
||||||
|
|
||||||
|
HeightLonCarr ::= INTEGER {oneCentimeter(1), unavailable(100)} (1..100)
|
||||||
|
|
||||||
|
PosLonCarr ::= INTEGER {oneCentimeter(1), unavailable(127)} (1..127)
|
||||||
|
|
||||||
|
PosPillar ::= INTEGER {tenCentimeters(1), unavailable(30)} (1..30)
|
||||||
|
|
||||||
|
PosCentMass ::= INTEGER {tenCentimeters(1), unavailable(63)} (1..63)
|
||||||
|
|
||||||
|
RequestResponseIndication ::= ENUMERATED {request(0), response(1)}
|
||||||
|
|
||||||
|
SpeedLimit ::= INTEGER {oneKmPerHour(1)} (1..255)
|
||||||
|
|
||||||
|
StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), equalOrGreater15Minutes(3)}
|
||||||
|
|
||||||
|
Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1), equalOrGreaterThan67Deg(67)} (-60..67)
|
||||||
|
|
||||||
|
TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ...
|
||||||
|
}
|
||||||
|
|
||||||
|
WheelBaseVehicle ::= INTEGER {tenCentimeters(1), unavailable(127)} (1..127)
|
||||||
|
|
||||||
|
TurningRadius ::= INTEGER {point4Meters(1), unavailable(255)} (1..255)
|
||||||
|
|
||||||
|
PosFrontAx ::= INTEGER {tenCentimeters(1), unavailable(20)} (1..20)
|
||||||
|
|
||||||
|
PositionOfOccupants ::= BIT STRING {
|
||||||
|
row1LeftOccupied (0),
|
||||||
|
row1RightOccupied (1),
|
||||||
|
row1MidOccupied (2),
|
||||||
|
row1NotDetectable (3),
|
||||||
|
row1NotPresent (4),
|
||||||
|
row2LeftOccupied (5),
|
||||||
|
row2RightOccupied (6),
|
||||||
|
row2MidOccupied (7),
|
||||||
|
row2NotDetectable (8),
|
||||||
|
row2NotPresent (9),
|
||||||
|
row3LeftOccupied (10),
|
||||||
|
row3RightOccupied (11),
|
||||||
|
row3MidOccupied (12),
|
||||||
|
row3NotDetectable (13),
|
||||||
|
row3NotPresent (14),
|
||||||
|
row4LeftOccupied (15),
|
||||||
|
row4RightOccupied (16),
|
||||||
|
row4MidOccupied (17),
|
||||||
|
row4NotDetectable (18),
|
||||||
|
row4NotPresent (19)} (SIZE(20))
|
||||||
|
|
||||||
|
PositioningSolutionType ::= ENUMERATED {noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ...}
|
||||||
|
|
||||||
|
VehicleIdentification ::= SEQUENCE {
|
||||||
|
wMInumber WMInumber OPTIONAL,
|
||||||
|
vDS VDS OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
WMInumber ::= IA5String (SIZE(1..3))
|
||||||
|
|
||||||
|
VDS ::= IA5String (SIZE(6))
|
||||||
|
|
||||||
|
EnergyStorageType ::= BIT STRING {hydrogenStorage(0), electricEnergyStorage(1), liquidPropaneGas(2), compressedNaturalGas(3), diesel(4), gasoline(5), ammonia(6)} (SIZE(7))
|
||||||
|
|
||||||
|
VehicleLength ::= SEQUENCE {
|
||||||
|
vehicleLengthValue VehicleLengthValue,
|
||||||
|
vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication
|
||||||
|
}
|
||||||
|
|
||||||
|
VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)} (1..1023)
|
||||||
|
|
||||||
|
VehicleLengthConfidenceIndication ::= ENUMERATED {noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), trailerPresenceIsUnknown(3), unavailable(4)}
|
||||||
|
|
||||||
|
VehicleWidth ::= INTEGER {tenCentimeters(1), outOfRange(61), unavailable(62)} (1..62)
|
||||||
|
|
||||||
|
PathHistory::= SEQUENCE (SIZE(0..40)) OF PathPoint
|
||||||
|
|
||||||
|
EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)} (SIZE(2))
|
||||||
|
|
||||||
|
InformationQuality ::= INTEGER {unavailable(0), lowest(1), highest(7)} (0..7)
|
||||||
|
|
||||||
|
RoadType ::= ENUMERATED {
|
||||||
|
urban-NoStructuralSeparationToOppositeLanes(0),
|
||||||
|
urban-WithStructuralSeparationToOppositeLanes(1),
|
||||||
|
nonUrban-NoStructuralSeparationToOppositeLanes(2),
|
||||||
|
nonUrban-WithStructuralSeparationToOppositeLanes(3)}
|
||||||
|
|
||||||
|
SteeringWheelAngle ::= SEQUENCE {
|
||||||
|
steeringWheelAngleValue SteeringWheelAngleValue,
|
||||||
|
steeringWheelAngleConfidence SteeringWheelAngleConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
SteeringWheelAngleValue ::= INTEGER {straight(0), onePointFiveDegreesToRight(-1), onePointFiveDegreesToLeft(1), unavailable(512)} (-511..512)
|
||||||
|
|
||||||
|
SteeringWheelAngleConfidence ::= INTEGER {equalOrWithinOnePointFiveDegree (1), outOfRange(126), unavailable(127)} (1..127)
|
||||||
|
|
||||||
|
TimestampIts ::= INTEGER {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103)
|
||||||
|
|
||||||
|
VehicleRole ::= ENUMERATED {default(0), publicTransport(1), specialTransport(2), dangerousGoods(3), roadWork(4), rescue(5), emergency(6), safetyCar(7), agriculture(8), commercial(9), military(10), roadOperator(11), taxi(12), reserved1(13), reserved2(14), reserved3(15)}
|
||||||
|
|
||||||
|
YawRate::= SEQUENCE {
|
||||||
|
yawRateValue YawRateValue,
|
||||||
|
yawRateConfidence YawRateConfidence
|
||||||
|
}
|
||||||
|
|
||||||
|
YawRateValue ::= INTEGER {straight(0), degSec-000-01ToRight(-1), degSec-000-01ToLeft(1), unavailable(32767)} (-32766..32767)
|
||||||
|
|
||||||
|
YawRateConfidence ::= ENUMERATED {
|
||||||
|
degSec-000-01 (0),
|
||||||
|
degSec-000-05 (1),
|
||||||
|
degSec-000-10 (2),
|
||||||
|
degSec-001-00 (3),
|
||||||
|
degSec-005-00 (4),
|
||||||
|
degSec-010-00 (5),
|
||||||
|
degSec-100-00 (6),
|
||||||
|
outOfRange (7),
|
||||||
|
unavailable (8)
|
||||||
|
}
|
||||||
|
|
||||||
|
ProtectedZoneType::= ENUMERATED { permanentCenDsrcTolling (0), ..., temporaryCenDsrcTolling (1) }
|
||||||
|
|
||||||
|
RelevanceDistance ::= ENUMERATED {lessThan50m(0), lessThan100m(1), lessThan200m(2), lessThan500m(3), lessThan1000m(4), lessThan5km(5), lessThan10km(6), over10km(7)}
|
||||||
|
|
||||||
|
RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraffic(1), downstreamTraffic(2), oppositeTraffic(3)}
|
||||||
|
|
||||||
|
TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000)
|
||||||
|
|
||||||
|
ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400)
|
||||||
|
|
||||||
|
ActionID ::= SEQUENCE {
|
||||||
|
originatingStationID StationID,
|
||||||
|
sequenceNumber SequenceNumber
|
||||||
|
}
|
||||||
|
|
||||||
|
ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition
|
||||||
|
|
||||||
|
ProtectedCommunicationZone ::= SEQUENCE {
|
||||||
|
protectedZoneType ProtectedZoneType,
|
||||||
|
expiryTime TimestampIts OPTIONAL,
|
||||||
|
protectedZoneLatitude Latitude,
|
||||||
|
protectedZoneLongitude Longitude,
|
||||||
|
protectedZoneRadius ProtectedZoneRadius OPTIONAL,
|
||||||
|
protectedZoneID ProtectedZoneID OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
Traces ::= SEQUENCE SIZE(1..7) OF PathHistory
|
||||||
|
|
||||||
|
NumberOfOccupants ::= INTEGER {oneOccupant (1), unavailable(127)} (0 .. 127)
|
||||||
|
|
||||||
|
SequenceNumber ::= INTEGER (0..65535)
|
||||||
|
|
||||||
|
PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar
|
||||||
|
|
||||||
|
RestrictedTypes ::= SEQUENCE (SIZE(1..3, ...)) OF StationType
|
||||||
|
|
||||||
|
EventHistory::= SEQUENCE (SIZE(1..23)) OF EventPoint
|
||||||
|
|
||||||
|
EventPoint ::= SEQUENCE {
|
||||||
|
eventPosition DeltaReferencePosition,
|
||||||
|
eventDeltaTime PathDeltaTime OPTIONAL,
|
||||||
|
informationQuality InformationQuality
|
||||||
|
}
|
||||||
|
|
||||||
|
ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CenDsrcTollingZone ::= SEQUENCE {
|
||||||
|
protectedZoneLatitude Latitude,
|
||||||
|
protectedZoneLongitude Longitude,
|
||||||
|
cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...)
|
||||||
|
|
||||||
|
ProtectedZoneID ::= INTEGER (0.. 134217727)
|
||||||
|
|
||||||
|
CenDsrcTollingZoneID ::= ProtectedZoneID
|
||||||
|
|
||||||
|
DigitalMap ::= SEQUENCE (SIZE(1..256)) OF ReferencePosition
|
||||||
|
|
||||||
|
OpeningDaysHours ::= UTF8String
|
||||||
|
|
||||||
|
PhoneNumber ::= NumericString (SIZE(1..16))
|
||||||
|
|
||||||
|
END
|
||||||
+7260
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,108 @@
|
|||||||
|
DENM-PDU-Descriptions {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) denm (1) version (2)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::=
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
ItsPduHeader, CauseCode, Speed, InformationQuality, ReferencePosition, ClosedLanes, DangerousGoodsExtended, Heading, LanePosition, LightBarSirenInUse, RoadType, HeightLonCarr, PosLonCarr, PosCentMass, PositioningSolutionType, RequestResponseIndication, StationType, SpeedLimit, StationarySince, TimestampIts, WheelBaseVehicle, TurningRadius, PosFrontAx, PositionOfOccupants, Temperature, VehicleMass, VehicleIdentification, EnergyStorageType, ActionID, ItineraryPath, NumberOfOccupants, PositionOfPillars, RelevanceTrafficDirection, RestrictedTypes, Traces, TransmissionInterval, ValidityDuration, RelevanceDistance, EventHistory, TrafficRule, DeltaReferencePosition FROM ITS-Container {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DENM ::= SEQUENCE {
|
||||||
|
header ItsPduHeader,
|
||||||
|
denm DecentralizedEnvironmentalNotificationMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE {
|
||||||
|
management ManagementContainer,
|
||||||
|
situation SituationContainer OPTIONAL,
|
||||||
|
location LocationContainer OPTIONAL,
|
||||||
|
alacarte AlacarteContainer OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
ManagementContainer ::= SEQUENCE {
|
||||||
|
actionID ActionID,
|
||||||
|
detectionTime TimestampIts,
|
||||||
|
referenceTime TimestampIts,
|
||||||
|
termination Termination OPTIONAL,
|
||||||
|
eventPosition ReferencePosition,
|
||||||
|
relevanceDistance RelevanceDistance OPTIONAL,
|
||||||
|
relevanceTrafficDirection RelevanceTrafficDirection OPTIONAL,
|
||||||
|
validityDuration ValidityDuration DEFAULT defaultValidity,
|
||||||
|
transmissionInterval TransmissionInterval OPTIONAL,
|
||||||
|
stationType StationType,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
SituationContainer ::= SEQUENCE {
|
||||||
|
informationQuality InformationQuality,
|
||||||
|
eventType CauseCode,
|
||||||
|
linkedCause CauseCode OPTIONAL,
|
||||||
|
eventHistory EventHistory OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
LocationContainer ::= SEQUENCE {
|
||||||
|
eventSpeed Speed OPTIONAL,
|
||||||
|
eventPositionHeading Heading OPTIONAL,
|
||||||
|
traces Traces,
|
||||||
|
roadType RoadType OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
ImpactReductionContainer ::= SEQUENCE {
|
||||||
|
heightLonCarrLeft HeightLonCarr,
|
||||||
|
heightLonCarrRight HeightLonCarr,
|
||||||
|
posLonCarrLeft PosLonCarr,
|
||||||
|
posLonCarrRight PosLonCarr,
|
||||||
|
positionOfPillars PositionOfPillars,
|
||||||
|
posCentMass PosCentMass,
|
||||||
|
wheelBaseVehicle WheelBaseVehicle,
|
||||||
|
turningRadius TurningRadius,
|
||||||
|
posFrontAx PosFrontAx,
|
||||||
|
positionOfOccupants PositionOfOccupants,
|
||||||
|
vehicleMass VehicleMass,
|
||||||
|
requestResponseIndication RequestResponseIndication
|
||||||
|
}
|
||||||
|
|
||||||
|
RoadWorksContainerExtended ::= SEQUENCE {
|
||||||
|
lightBarSirenInUse LightBarSirenInUse OPTIONAL,
|
||||||
|
closedLanes ClosedLanes OPTIONAL,
|
||||||
|
restriction RestrictedTypes OPTIONAL,
|
||||||
|
speedLimit SpeedLimit OPTIONAL,
|
||||||
|
incidentIndication CauseCode OPTIONAL,
|
||||||
|
recommendedPath ItineraryPath OPTIONAL,
|
||||||
|
startingPointSpeedLimit DeltaReferencePosition OPTIONAL,
|
||||||
|
trafficFlowRule TrafficRule OPTIONAL,
|
||||||
|
referenceDenms ReferenceDenms OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
StationaryVehicleContainer ::= SEQUENCE {
|
||||||
|
stationarySince StationarySince OPTIONAL,
|
||||||
|
stationaryCause CauseCode OPTIONAL,
|
||||||
|
carryingDangerousGoods DangerousGoodsExtended OPTIONAL,
|
||||||
|
numberOfOccupants NumberOfOccupants OPTIONAL,
|
||||||
|
vehicleIdentification VehicleIdentification OPTIONAL,
|
||||||
|
energyStorageType EnergyStorageType OPTIONAL
|
||||||
|
}
|
||||||
|
|
||||||
|
AlacarteContainer ::= SEQUENCE {
|
||||||
|
lanePosition LanePosition OPTIONAL,
|
||||||
|
impactReduction ImpactReductionContainer OPTIONAL,
|
||||||
|
externalTemperature Temperature OPTIONAL,
|
||||||
|
roadWorks RoadWorksContainerExtended OPTIONAL,
|
||||||
|
positioningSolution PositioningSolutionType OPTIONAL,
|
||||||
|
stationaryVehicle StationaryVehicleContainer OPTIONAL,
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultValidity INTEGER ::= 600
|
||||||
|
|
||||||
|
Termination ::= ENUMERATED {isCancellation(0), isNegation (1)}
|
||||||
|
|
||||||
|
ReferenceDenms ::= SEQUENCE (SIZE(1..8, ...)) OF ActionID
|
||||||
|
|
||||||
|
END
|
||||||
+4468
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,54 @@
|
|||||||
|
/** draft 001 of the MAPEM-PDU-Descriptions module for TS 103 831 V2.2.1 integrating:
|
||||||
|
* initial revision based on ASN.1 files of [ISO TS 19091] and [SAE J2735]
|
||||||
|
*/
|
||||||
|
-- Note: the above information will be deleted before publication
|
||||||
|
|
||||||
|
--! @options: no-fields-header
|
||||||
|
|
||||||
|
MAPEM-PDU-Descriptions {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) mapem (1) version2 (2)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::=
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Includes from ETSI-ITS-DSRC
|
||||||
|
*/
|
||||||
|
MapData
|
||||||
|
FROM ETSI-ITS-DSRC {
|
||||||
|
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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include ETSI TS 102 894-2 (ETSI-ITS-CDD)
|
||||||
|
*/
|
||||||
|
ItsPduHeader
|
||||||
|
FROM ETSI-ITS-CDD {
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map (lane topology) extended Message
|
||||||
|
* This DF includes DEs for the MAPEM: protocolVersion, the MAPEM message type identifier `messageID`,
|
||||||
|
* the station identifier `stationID` of the originating ITS-S and the Map data from ETSI-ITS-DSRC.
|
||||||
|
*
|
||||||
|
* @field header: The DE `protocolVersion` is used to select the appropriate protocol decoder at the receiving ITS-S.
|
||||||
|
* It shall be set to 2.
|
||||||
|
* The DE `messageID` shall be mapem(5).
|
||||||
|
* @field map: contains the MAP data as defined in ETSI-ITS-DSRC.
|
||||||
|
*
|
||||||
|
* @category: Basic Information
|
||||||
|
* @revision: V1.3.1
|
||||||
|
*/
|
||||||
|
MAPEM ::= SEQUENCE {
|
||||||
|
header ItsPduHeader,
|
||||||
|
map MapData
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
/** draft 001 of the SPATEM-PDU-Descriptions module for TS 103 301 V2.2.1 integrating:
|
||||||
|
* initial revision based on ASN.1 files of [ISO TS 19091] and [SAE J2735]
|
||||||
|
*/
|
||||||
|
-- Note: the above information will be deleted before publication
|
||||||
|
|
||||||
|
--! @options: no-fields-header
|
||||||
|
|
||||||
|
SPATEM-PDU-Descriptions {
|
||||||
|
itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts103301 (103301) spatem (0) major-version-2 (2) minor-version-1 (1)
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINITIONS AUTOMATIC TAGS ::=
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
IMPORTS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Includes from ETSI-ITS-DSRC
|
||||||
|
*/
|
||||||
|
SPAT
|
||||||
|
FROM ETSI-ITS-DSRC {
|
||||||
|
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
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Include ETSI TS 102 894-2 (ETSI-ITS-CDD)
|
||||||
|
*/
|
||||||
|
ItsPduHeader
|
||||||
|
FROM ETSI-ITS-CDD {
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal phase and timing extended Message
|
||||||
|
*
|
||||||
|
* Signal phase and timing extended Message Root
|
||||||
|
* This DF includes DEs for the SPATEM: protocolVersion, the SPATEM message type identifier `messageID`,
|
||||||
|
* the station identifier `stationID` of the originating ITS-S and the SPaT data from ETSI-ITS-DSRC module.
|
||||||
|
*
|
||||||
|
* @field header: The DE `protocolVersion` used to select the appropriate protocol decoder at the receiving ITS-S.
|
||||||
|
* It shall be set to 2.
|
||||||
|
* The DE `messageID` shall be spatem(4).
|
||||||
|
* @field spat: contains the SPaT data as defined in ETSI-ITS-DSRC.
|
||||||
|
*
|
||||||
|
* @category: Basic Information
|
||||||
|
* @revision: V1.3.1
|
||||||
|
*/
|
||||||
|
SPATEM ::= SEQUENCE {
|
||||||
|
header ItsPduHeader,
|
||||||
|
spat SPAT
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user