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.
109 lines
3.6 KiB
Plaintext
109 lines
3.6 KiB
Plaintext
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
|