From a551ea989e2880cb7d6a280741f45e2581e1bb73 Mon Sep 17 00:00:00 2001 From: Jean-Pierre Busch Date: Mon, 17 Jun 2024 13:12:15 +0200 Subject: [PATCH] add c-code for CPM --- .vscode/launch.json | 18 + .../etsi_its_cpm_coding/CMakeLists.txt | 69 + .../include/etsi_its_cpm_coding/ANY.h | 84 + .../Acceleration3dWithConfidence.h | 53 + .../AccelerationCartesian.h | 48 + .../etsi_its_cpm_coding/AccelerationChange.h | 54 + .../AccelerationChangeIndication.h | 44 + .../AccelerationComponent.h | 42 + .../AccelerationConfidence.h | 53 + .../etsi_its_cpm_coding/AccelerationControl.h | 57 + .../AccelerationMagnitude.h | 42 + .../AccelerationMagnitudeValue.h | 53 + .../AccelerationPolarWithZ.h | 49 + .../etsi_its_cpm_coding/AccelerationValue.h | 54 + .../AccessTechnologyClass.h | 59 + .../AccidentSubCauseCode.h | 60 + .../include/etsi_its_cpm_coding/ActionID.h | 40 + .../include/etsi_its_cpm_coding/ActionId.h | 42 + .../etsi_its_cpm_coding/ActionIdList.h | 44 + ...rseWeatherCondition-AdhesionSubCauseCode.h | 62 + ...tion-ExtremeWeatherConditionSubCauseCode.h | 58 + ...atherCondition-PrecipitationSubCauseCode.h | 55 + ...eWeatherCondition-VisibilitySubCauseCode.h | 60 + .../include/etsi_its_cpm_coding/AirHumidity.h | 52 + .../include/etsi_its_cpm_coding/Altitude.h | 42 + .../etsi_its_cpm_coding/AltitudeConfidence.h | 68 + .../etsi_its_cpm_coding/AltitudeValue.h | 54 + .../etsi_its_cpm_coding/AngleConfidence.h | 53 + .../AngularAccelerationConfidence.h | 60 + .../AngularSpeedConfidence.h | 60 + .../include/etsi_its_cpm_coding/AxlesCount.h | 52 + .../include/etsi_its_cpm_coding/BIT_STRING.h | 75 + .../include/etsi_its_cpm_coding/BOOLEAN.h | 70 + .../etsi_its_cpm_coding/BarometricPressure.h | 53 + .../etsi_its_cpm_coding/BasicContainer.h | 44 + .../include/etsi_its_cpm_coding/BogiesCount.h | 52 + .../etsi_its_cpm_coding/CardinalNumber1B.h | 47 + .../etsi_its_cpm_coding/CardinalNumber3b.h | 47 + .../etsi_its_cpm_coding/CartesianAngle.h | 42 + .../etsi_its_cpm_coding/CartesianAngleValue.h | 53 + .../CartesianAngularAccelerationComponent.h | 40 + ...rtesianAngularAccelerationComponentValue.h | 54 + .../CartesianAngularVelocityComponent.h | 42 + .../CartesianAngularVelocityComponentValue.h | 54 + .../etsi_its_cpm_coding/CartesianCoordinate.h | 53 + .../CartesianCoordinateLarge.h | 53 + .../CartesianCoordinateSmall.h | 53 + .../CartesianCoordinateWithConfidence.h | 42 + .../etsi_its_cpm_coding/CartesianPosition3d.h | 42 + .../CartesianPosition3dWithConfidence.h | 48 + .../include/etsi_its_cpm_coding/CauseCode.h | 44 + .../etsi_its_cpm_coding/CauseCodeChoice.h | 331 +++ .../etsi_its_cpm_coding/CauseCodeType.h | 79 + .../include/etsi_its_cpm_coding/CauseCodeV2.h | 42 + .../etsi_its_cpm_coding/CenDsrcTollingZone.h | 46 + .../CenDsrcTollingZoneID.h | 46 + .../etsi_its_cpm_coding/CircularShape.h | 48 + .../include/etsi_its_cpm_coding/ClosedLanes.h | 45 + .../etsi_its_cpm_coding/ClusterBreakupInfo.h | 44 + .../ClusterBreakupReason.h | 59 + .../etsi_its_cpm_coding/ClusterJoinInfo.h | 44 + .../etsi_its_cpm_coding/ClusterLeaveInfo.h | 44 + .../etsi_its_cpm_coding/ClusterLeaveReason.h | 62 + .../CollectivePerceptionMessage.h | 40 + .../CollisionRiskSubCauseCode.h | 56 + .../etsi_its_cpm_coding/ConfidenceLevel.h | 52 + .../ConstraintWrappedCpmContainers.h | 47 + .../CoordinateConfidence.h | 53 + .../CorrelationCellValue.h | 55 + .../etsi_its_cpm_coding/CorrelationColumn.h | 42 + .../etsi_its_cpm_coding/CpmContainerId.h | 52 + .../include/etsi_its_cpm_coding/CpmPayload.h | 46 + .../include/etsi_its_cpm_coding/Curvature.h | 40 + .../CurvatureCalculationMode.h | 56 + .../etsi_its_cpm_coding/CurvatureConfidence.h | 60 + .../etsi_its_cpm_coding/CurvatureValue.h | 55 + .../DangerousEndOfQueueSubCauseCode.h | 56 + .../etsi_its_cpm_coding/DangerousGoodsBasic.h | 72 + .../DangerousGoodsExtended.h | 54 + .../DangerousSituationSubCauseCode.h | 59 + .../etsi_its_cpm_coding/DeltaAltitude.h | 54 + .../etsi_its_cpm_coding/DeltaLatitude.h | 52 + .../etsi_its_cpm_coding/DeltaLongitude.h | 52 + .../DeltaReferencePosition.h | 44 + .../DeltaTimeMilliSecondPositive.h | 46 + .../DeltaTimeMilliSecondSigned.h | 47 + .../DeltaTimeQuarterSecond.h | 52 + .../etsi_its_cpm_coding/DeltaTimeSecond.h | 46 + .../DeltaTimeTenthOfSecond.h | 52 + .../include/etsi_its_cpm_coding/DigitalMap.h | 44 + .../include/etsi_its_cpm_coding/Direction.h | 54 + .../etsi_its_cpm_coding/DriveDirection.h | 53 + .../etsi_its_cpm_coding/DrivingLaneStatus.h | 47 + .../include/etsi_its_cpm_coding/EXTERNAL.h | 65 + .../etsi_its_cpm_coding/EllipticalShape.h | 51 + .../etsi_its_cpm_coding/EmbarkationStatus.h | 46 + .../etsi_its_cpm_coding/EmergencyPriority.h | 52 + .../EmergencyVehicleApproachingSubCauseCode.h | 54 + .../etsi_its_cpm_coding/EnergyStorageType.h | 57 + .../EuVehicleCategoryCode.h | 61 + .../etsi_its_cpm_coding/EuVehicleCategoryL.h | 59 + .../etsi_its_cpm_coding/EuVehicleCategoryM.h | 55 + .../etsi_its_cpm_coding/EuVehicleCategoryN.h | 55 + .../etsi_its_cpm_coding/EuVehicleCategoryO.h | 56 + .../EulerAnglesWithConfidence.h | 48 + .../etsi_its_cpm_coding/EventHistory.h | 47 + .../include/etsi_its_cpm_coding/EventPoint.h | 44 + .../include/etsi_its_cpm_coding/EventZone.h | 46 + .../include/etsi_its_cpm_coding/Ext1.h | 53 + .../include/etsi_its_cpm_coding/Ext2.h | 53 + .../include/etsi_its_cpm_coding/Ext3.h | 47 + .../etsi_its_cpm_coding/ExteriorLights.h | 59 + .../GeneralizedLanePosition.h | 62 + .../etsi_its_cpm_coding/GenerationDeltaTime.h | 51 + .../etsi_its_cpm_coding/GraphicString.h | 56 + .../etsi_its_cpm_coding/HardShoulderStatus.h | 55 + ...dousLocation-AnimalOnTheRoadSubCauseCode.h | 56 + ...rdousLocation-DangerousCurveSubCauseCode.h | 57 + ...usLocation-ObstacleOnTheRoadSubCauseCode.h | 59 + ...ousLocation-SurfaceConditionSubCauseCode.h | 62 + .../include/etsi_its_cpm_coding/Heading.h | 40 + .../HeadingChangeIndication.h | 44 + .../etsi_its_cpm_coding/HeadingConfidence.h | 53 + .../etsi_its_cpm_coding/HeadingValue.h | 57 + .../etsi_its_cpm_coding/HeightLonCarr.h | 52 + .../HumanPresenceOnTheRoadSubCauseCode.h | 55 + .../HumanProblemSubCauseCode.h | 54 + .../include/etsi_its_cpm_coding/IA5String.h | 59 + .../include/etsi_its_cpm_coding/INTEGER.h | 139 + .../etsi_its_cpm_coding/Identifier1B.h | 47 + .../etsi_its_cpm_coding/Identifier2B.h | 47 + .../etsi_its_cpm_coding/InformationQuality.h | 47 + .../InterferenceManagementChannel.h | 42 + .../InterferenceManagementInfo.h | 47 + .../InterferenceManagementInfoPerChannel.h | 55 + .../InterferenceManagementZone.h | 42 + .../InterferenceManagementZoneDefinition.h | 55 + .../InterferenceManagementZoneType.h | 61 + .../InterferenceManagementZones.h | 44 + .../IntersectionReferenceId.h | 41 + .../etsi_its_cpm_coding/Iso3833VehicleType.h | 91 + .../etsi_its_cpm_coding/ItineraryPath.h | 44 + .../etsi_its_cpm_coding/ItsPduHeader.h | 44 + .../etsi_its_cpm_coding/LanePosition.h | 54 + .../etsi_its_cpm_coding/LanePositionAndType.h | 46 + .../include/etsi_its_cpm_coding/LaneType.h | 73 + .../include/etsi_its_cpm_coding/LaneWidth.h | 46 + .../etsi_its_cpm_coding/LateralAcceleration.h | 40 + .../LateralAccelerationValue.h | 54 + .../include/etsi_its_cpm_coding/Latitude.h | 52 + .../etsi_its_cpm_coding/LightBarSirenInUse.h | 52 + .../include/etsi_its_cpm_coding/Longitude.h | 53 + .../LongitudinalAcceleration.h | 40 + .../LongitudinalAccelerationValue.h | 54 + .../LongitudinalLanePosition.h | 42 + .../LongitudinalLanePositionConfidence.h | 53 + .../LongitudinalLanePositionValue.h | 53 + ...erTriangularPositiveSemidefiniteMatrices.h | 47 + ...owerTriangularPositiveSemidefiniteMatrix.h | 42 + ...angularPositiveSemidefiniteMatrixColumns.h | 47 + .../etsi_its_cpm_coding/ManagementContainer.h | 56 + .../include/etsi_its_cpm_coding/MapPosition.h | 56 + .../etsi_its_cpm_coding/MapReference.h | 53 + .../MatrixIncludedComponents.h | 64 + .../include/etsi_its_cpm_coding/MessageId.h | 72 + .../etsi_its_cpm_coding/MessageRateHz.h | 41 + .../etsi_its_cpm_coding/MessageRateRange.h | 41 + .../MessageSegmentationInfo.h | 42 + .../MitigationForTechnologies.h | 47 + .../MitigationPerTechnologyClass.h | 49 + .../include/etsi_its_cpm_coding/NULL.h | 69 + .../etsi_its_cpm_coding/NativeEnumerated.h | 76 + .../etsi_its_cpm_coding/NativeInteger.h | 71 + .../etsi_its_cpm_coding/NumberOfOccupants.h | 52 + .../etsi_its_cpm_coding/NumericString.h | 65 + .../etsi_its_cpm_coding/OBJECT_IDENTIFIER.h | 184 ++ .../etsi_its_cpm_coding/OCTET_STRING.h | 165 ++ .../include/etsi_its_cpm_coding/OPEN_TYPE.h | 117 + .../include/etsi_its_cpm_coding/ObjectClass.h | 65 + .../ObjectClassDescription.h | 47 + .../ObjectClassWithConfidence.h | 42 + .../etsi_its_cpm_coding/ObjectDescriptor.h | 54 + .../etsi_its_cpm_coding/ObjectDimension.h | 42 + .../ObjectDimensionConfidence.h | 53 + .../ObjectDimensionValue.h | 53 + .../include/etsi_its_cpm_coding/ObjectFace.h | 56 + .../ObjectPerceptionQuality.h | 53 + .../etsi_its_cpm_coding/OpeningDaysHours.h | 46 + .../etsi_its_cpm_coding/OrdinalNumber1B.h | 47 + .../etsi_its_cpm_coding/OrdinalNumber3b.h | 47 + .../OriginatingRsuContainer.h | 49 + .../OriginatingVehicleContainer.h | 55 + .../etsi_its_cpm_coding/OtherSubClass.h | 55 + .../include/etsi_its_cpm_coding/Path.h | 47 + .../etsi_its_cpm_coding/PathDeltaTime.h | 47 + .../include/etsi_its_cpm_coding/PathHistory.h | 44 + .../include/etsi_its_cpm_coding/PathPoint.h | 42 + .../etsi_its_cpm_coding/PathPointPredicted.h | 59 + .../etsi_its_cpm_coding/PathPredicted.h | 44 + .../etsi_its_cpm_coding/PerceivedObject.h | 84 + .../PerceivedObjectContainer.h | 46 + .../etsi_its_cpm_coding/PerceivedObjectIds.h | 42 + .../etsi_its_cpm_coding/PerceivedObjects.h | 47 + .../etsi_its_cpm_coding/PerceptionRegion.h | 62 + .../PerceptionRegionContainer.h | 47 + .../etsi_its_cpm_coding/PerformanceClass.h | 53 + .../include/etsi_its_cpm_coding/PhoneNumber.h | 47 + .../etsi_its_cpm_coding/PolygonalShape.h | 49 + .../include/etsi_its_cpm_coding/PosCentMass.h | 53 + .../PosConfidenceEllipse.h | 43 + .../include/etsi_its_cpm_coding/PosFrontAx.h | 52 + .../include/etsi_its_cpm_coding/PosLonCarr.h | 52 + .../include/etsi_its_cpm_coding/PosPillar.h | 53 + .../PositionConfidenceEllipse.h | 43 + .../etsi_its_cpm_coding/PositionOfOccupants.h | 70 + .../etsi_its_cpm_coding/PositionOfPillars.h | 39 + .../PositioningSolutionType.h | 59 + .../PostCrashSubCauseCode.h | 56 + .../PrecipitationIntensity.h | 52 + .../ProtectedCommunicationZone.h | 54 + .../ProtectedCommunicationZonesRSU.h | 44 + .../etsi_its_cpm_coding/ProtectedZoneId.h | 47 + .../etsi_its_cpm_coding/ProtectedZoneRadius.h | 47 + .../etsi_its_cpm_coding/ProtectedZoneType.h | 57 + .../etsi_its_cpm_coding/PtActivation.h | 40 + .../etsi_its_cpm_coding/PtActivationData.h | 47 + .../etsi_its_cpm_coding/PtActivationType.h | 54 + .../include/etsi_its_cpm_coding/RadialShape.h | 53 + .../etsi_its_cpm_coding/RadialShapeDetails.h | 45 + .../etsi_its_cpm_coding/RadialShapes.h | 46 + .../etsi_its_cpm_coding/RadialShapesList.h | 47 + .../RailwayLevelCrossingSubCauseCode.h | 56 + .../etsi_its_cpm_coding/RectangularShape.h | 51 + .../etsi_its_cpm_coding/ReferencePosition.h | 46 + .../ReferencePositionWithConfidence.h | 46 + .../etsi_its_cpm_coding/RelevanceDistance.h | 58 + .../RelevanceTrafficDirection.h | 54 + .../RequestResponseIndication.h | 52 + ...cueAndRecoveryWorkInProgressSubCauseCode.h | 57 + .../etsi_its_cpm_coding/RestrictedTypes.h | 39 + .../RoadSegmentReferenceId.h | 41 + .../include/etsi_its_cpm_coding/RoadType.h | 54 + .../RoadworksSubCauseCode.h | 58 + .../SafeDistanceIndication.h | 48 + .../SafeDistanceIndicator.h | 46 + .../etsi_its_cpm_coding/SemiAxisLength.h | 54 + .../etsi_its_cpm_coding/SensorInformation.h | 57 + .../SensorInformationContainer.h | 47 + .../include/etsi_its_cpm_coding/SensorType.h | 65 + .../etsi_its_cpm_coding/SequenceNumber.h | 47 + .../SequenceOfCartesianPosition3d.h | 47 + .../SequenceOfIdentifier1B.h | 42 + .../SequenceOfSafeDistanceIndication.h | 44 + ...quenceOfTrajectoryInterceptionIndication.h | 44 + .../include/etsi_its_cpm_coding/Shape.h | 71 + .../SignalViolationSubCauseCode.h | 55 + .../SlowVehicleSubCauseCode.h | 60 + .../SpecialTransportType.h | 54 + .../include/etsi_its_cpm_coding/Speed.h | 42 + .../etsi_its_cpm_coding/SpeedConfidence.h | 53 + .../include/etsi_its_cpm_coding/SpeedLimit.h | 46 + .../include/etsi_its_cpm_coding/SpeedValue.h | 54 + .../StabilityChangeIndication.h | 44 + .../StabilityLossProbability.h | 54 + .../etsi_its_cpm_coding/StandardLength12b.h | 47 + .../etsi_its_cpm_coding/StandardLength1B.h | 47 + .../etsi_its_cpm_coding/StandardLength2B.h | 46 + .../etsi_its_cpm_coding/StandardLength3b.h | 58 + .../etsi_its_cpm_coding/StandardLength9b.h | 46 + .../include/etsi_its_cpm_coding/StationID.h | 48 + .../include/etsi_its_cpm_coding/StationId.h | 48 + .../include/etsi_its_cpm_coding/StationType.h | 66 + .../etsi_its_cpm_coding/StationarySince.h | 54 + .../StationaryVehicleSubCauseCode.h | 58 + .../etsi_its_cpm_coding/SteeringWheelAngle.h | 40 + .../SteeringWheelAngleConfidence.h | 53 + .../SteeringWheelAngleValue.h | 54 + .../etsi_its_cpm_coding/SubCauseCodeType.h | 47 + .../include/etsi_its_cpm_coding/Temperature.h | 52 + .../etsi_its_cpm_coding/TimestampIts.h | 47 + .../include/etsi_its_cpm_coding/Traces.h | 44 + .../TrafficConditionSubCauseCode.h | 60 + .../etsi_its_cpm_coding/TrafficDirection.h | 54 + .../TrafficIslandPosition.h | 45 + .../TrafficParticipantType.h | 67 + .../include/etsi_its_cpm_coding/TrafficRule.h | 57 + .../include/etsi_its_cpm_coding/TrailerData.h | 52 + .../etsi_its_cpm_coding/TrailerDataSet.h | 47 + .../TrailerPresenceInformation.h | 57 + .../TrajectoryInterceptionConfidence.h | 55 + .../TrajectoryInterceptionIndication.h | 48 + .../TrajectoryInterceptionProbability.h | 52 + .../TransmissionInterval.h | 46 + .../etsi_its_cpm_coding/TurningDirection.h | 54 + .../etsi_its_cpm_coding/TurningRadius.h | 52 + .../include/etsi_its_cpm_coding/UTF8String.h | 84 + .../include/etsi_its_cpm_coding/VDS.h | 47 + .../etsi_its_cpm_coding/ValidityDuration.h | 52 + .../etsi_its_cpm_coding/VarLengthNumber.h | 50 + .../VehicleBreakdownSubCauseCode.h | 62 + .../etsi_its_cpm_coding/VehicleHeight.h | 52 + .../VehicleIdentification.h | 44 + .../etsi_its_cpm_coding/VehicleLength.h | 40 + .../VehicleLengthConfidenceIndication.h | 57 + .../etsi_its_cpm_coding/VehicleLengthV2.h | 40 + .../etsi_its_cpm_coding/VehicleLengthValue.h | 53 + .../include/etsi_its_cpm_coding/VehicleMass.h | 52 + .../include/etsi_its_cpm_coding/VehicleRole.h | 66 + .../etsi_its_cpm_coding/VehicleWidth.h | 53 + .../Velocity3dWithConfidence.h | 53 + .../etsi_its_cpm_coding/VelocityCartesian.h | 48 + .../etsi_its_cpm_coding/VelocityComponent.h | 42 + .../VelocityComponentValue.h | 54 + .../etsi_its_cpm_coding/VelocityPolarWithZ.h | 49 + .../VerticalAcceleration.h | 40 + .../VerticalAccelerationValue.h | 54 + .../VruClusterInformation.h | 55 + .../etsi_its_cpm_coding/VruClusterProfiles.h | 55 + .../etsi_its_cpm_coding/VruDeviceUsage.h | 60 + .../etsi_its_cpm_coding/VruEnvironment.h | 57 + .../etsi_its_cpm_coding/VruExteriorLights.h | 44 + .../etsi_its_cpm_coding/VruMovementControl.h | 58 + .../VruProfileAndSubprofile.h | 65 + .../etsi_its_cpm_coding/VruSizeClass.h | 55 + .../VruSpecificExteriorLights.h | 57 + .../etsi_its_cpm_coding/VruSubProfileAnimal.h | 57 + .../VruSubProfileBicyclist.h | 62 + .../VruSubProfileMotorcyclist.h | 58 + .../VruSubProfilePedestrian.h | 57 + .../include/etsi_its_cpm_coding/WMInumber.h | 47 + .../include/etsi_its_cpm_coding/Wgs84Angle.h | 42 + .../Wgs84AngleConfidence.h | 53 + .../etsi_its_cpm_coding/Wgs84AngleValue.h | 57 + .../etsi_its_cpm_coding/WheelBaseVehicle.h | 52 + .../etsi_its_cpm_coding/WrappedCpmContainer.h | 72 + .../WrappedCpmContainers.h | 47 + .../WrongWayDrivingSubCauseCode.h | 54 + .../include/etsi_its_cpm_coding/YawRate.h | 40 + .../etsi_its_cpm_coding/YawRateConfidence.h | 61 + .../etsi_its_cpm_coding/YawRateValue.h | 54 + .../etsi_its_cpm_coding/aper_decoder.h | 47 + .../etsi_its_cpm_coding/aper_encoder.h | 63 + .../etsi_its_cpm_coding/aper_opentype.h | 30 + .../etsi_its_cpm_coding/aper_support.h | 63 + .../etsi_its_cpm_coding/asn_SEQUENCE_OF.h | 52 + .../include/etsi_its_cpm_coding/asn_SET_OF.h | 72 + .../etsi_its_cpm_coding/asn_application.h | 173 ++ .../etsi_its_cpm_coding/asn_bit_data.h | 83 + .../include/etsi_its_cpm_coding/asn_codecs.h | 108 + .../etsi_its_cpm_coding/asn_codecs_prim.h | 56 + .../include/etsi_its_cpm_coding/asn_config.h | 2 + .../etsi_its_cpm_coding/asn_constant.h | 268 ++ .../etsi_its_cpm_coding/asn_internal.h | 190 ++ .../include/etsi_its_cpm_coding/asn_ioc.h | 51 + .../etsi_its_cpm_coding/asn_random_fill.h | 51 + .../include/etsi_its_cpm_coding/asn_system.h | 179 ++ .../include/etsi_its_cpm_coding/ber_decoder.h | 66 + .../etsi_its_cpm_coding/ber_tlv_length.h | 50 + .../include/etsi_its_cpm_coding/ber_tlv_tag.h | 60 + .../etsi_its_cpm_coding/constr_CHOICE.h | 119 + .../etsi_its_cpm_coding/constr_SEQUENCE.h | 95 + .../etsi_its_cpm_coding/constr_SEQUENCE_OF.h | 67 + .../etsi_its_cpm_coding/constr_SET_OF.h | 102 + .../include/etsi_its_cpm_coding/constr_TYPE.h | 296 ++ .../include/etsi_its_cpm_coding/constraints.h | 63 + .../include/etsi_its_cpm_coding/der_encoder.h | 68 + .../include/etsi_its_cpm_coding/jer_encoder.h | 86 + .../include/etsi_its_cpm_coding/oer_decoder.h | 72 + .../include/etsi_its_cpm_coding/oer_encoder.h | 70 + .../include/etsi_its_cpm_coding/oer_support.h | 47 + .../include/etsi_its_cpm_coding/per_decoder.h | 30 + .../include/etsi_its_cpm_coding/per_encoder.h | 38 + .../etsi_its_cpm_coding/per_opentype.h | 24 + .../include/etsi_its_cpm_coding/per_support.h | 54 + .../etsi_its_cpm_coding/uper_decoder.h | 47 + .../etsi_its_cpm_coding/uper_encoder.h | 62 + .../etsi_its_cpm_coding/uper_opentype.h | 34 + .../etsi_its_cpm_coding/uper_support.h | 77 + .../include/etsi_its_cpm_coding/xer_decoder.h | 106 + .../include/etsi_its_cpm_coding/xer_encoder.h | 83 + .../include/etsi_its_cpm_coding/xer_support.h | 55 + .../etsi_its_cpm_coding/package.xml | 28 + etsi_its_coding/etsi_its_cpm_coding/src/ANY.c | 80 + .../etsi_its_cpm_coding/src/ANY_aper.c | 190 ++ .../etsi_its_cpm_coding/src/ANY_ber.c | 116 + .../etsi_its_cpm_coding/src/ANY_jer.c | 17 + .../etsi_its_cpm_coding/src/ANY_uper.c | 108 + .../etsi_its_cpm_coding/src/ANY_xer.c | 22 + .../src/Acceleration3dWithConfidence.c | 93 + .../src/AccelerationCartesian.c | 104 + .../src/AccelerationChange.c | 68 + .../src/AccelerationChangeIndication.c | 84 + .../src/AccelerationComponent.c | 84 + .../src/AccelerationConfidence.c | 76 + .../src/AccelerationControl.c | 82 + .../src/AccelerationMagnitude.c | 84 + .../src/AccelerationMagnitudeValue.c | 76 + .../src/AccelerationPolarWithZ.c | 104 + .../src/AccelerationValue.c | 76 + .../src/AccessTechnologyClass.c | 74 + .../src/AccidentSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/ActionID.c | 84 + .../etsi_its_cpm_coding/src/ActionId.c | 84 + .../etsi_its_cpm_coding/src/ActionIdList.c | 72 + ...rseWeatherCondition-AdhesionSubCauseCode.c | 76 + ...tion-ExtremeWeatherConditionSubCauseCode.c | 76 + ...atherCondition-PrecipitationSubCauseCode.c | 76 + ...eWeatherCondition-VisibilitySubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/AirHumidity.c | 76 + .../etsi_its_cpm_coding/src/Altitude.c | 84 + .../src/AltitudeConfidence.c | 96 + .../etsi_its_cpm_coding/src/AltitudeValue.c | 76 + .../etsi_its_cpm_coding/src/AngleConfidence.c | 76 + .../src/AngularAccelerationConfidence.c | 80 + .../src/AngularSpeedConfidence.c | 80 + .../etsi_its_cpm_coding/src/AxlesCount.c | 76 + .../etsi_its_cpm_coding/src/BIT_STRING.c | 213 ++ .../etsi_its_cpm_coding/src/BIT_STRING_jer.c | 60 + .../etsi_its_cpm_coding/src/BIT_STRING_oer.c | 168 ++ .../src/BIT_STRING_print.c | 69 + .../src/BIT_STRING_rfill.c | 124 + .../etsi_its_cpm_coding/src/BIT_STRING_uper.c | 244 ++ .../etsi_its_cpm_coding/src/BIT_STRING_xer.c | 70 + .../etsi_its_cpm_coding/src/BOOLEAN.c | 128 + .../etsi_its_cpm_coding/src/BOOLEAN_aper.c | 61 + .../etsi_its_cpm_coding/src/BOOLEAN_ber.c | 104 + .../etsi_its_cpm_coding/src/BOOLEAN_jer.c | 32 + .../etsi_its_cpm_coding/src/BOOLEAN_oer.c | 54 + .../etsi_its_cpm_coding/src/BOOLEAN_print.c | 33 + .../etsi_its_cpm_coding/src/BOOLEAN_rfill.c | 56 + .../etsi_its_cpm_coding/src/BOOLEAN_uper.c | 58 + .../etsi_its_cpm_coding/src/BOOLEAN_xer.c | 74 + .../src/BarometricPressure.c | 76 + .../etsi_its_cpm_coding/src/BasicContainer.c | 84 + .../etsi_its_cpm_coding/src/BogiesCount.c | 76 + .../src/CardinalNumber1B.c | 76 + .../src/CardinalNumber3b.c | 76 + .../etsi_its_cpm_coding/src/CartesianAngle.c | 84 + .../src/CartesianAngleValue.c | 76 + .../CartesianAngularAccelerationComponent.c | 84 + ...rtesianAngularAccelerationComponentValue.c | 76 + .../src/CartesianAngularVelocityComponent.c | 84 + .../CartesianAngularVelocityComponentValue.c | 76 + .../src/CartesianCoordinate.c | 76 + .../src/CartesianCoordinateLarge.c | 76 + .../src/CartesianCoordinateSmall.c | 76 + .../src/CartesianCoordinateWithConfidence.c | 84 + .../src/CartesianPosition3d.c | 104 + .../src/CartesianPosition3dWithConfidence.c | 104 + .../etsi_its_cpm_coding/src/CauseCode.c | 84 + .../etsi_its_cpm_coding/src/CauseCodeChoice.c | 2379 +++++++++++++++++ .../etsi_its_cpm_coding/src/CauseCodeType.c | 76 + .../etsi_its_cpm_coding/src/CauseCodeV2.c | 66 + .../src/CenDsrcTollingZone.c | 104 + .../src/CenDsrcTollingZoneID.c | 76 + .../etsi_its_cpm_coding/src/CircularShape.c | 104 + .../etsi_its_cpm_coding/src/ClosedLanes.c | 104 + .../src/ClusterBreakupInfo.c | 84 + .../src/ClusterBreakupReason.c | 78 + .../etsi_its_cpm_coding/src/ClusterJoinInfo.c | 84 + .../src/ClusterLeaveInfo.c | 84 + .../src/ClusterLeaveReason.c | 84 + .../src/CollectivePerceptionMessage.c | 115 + .../src/CollisionRiskSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/ConfidenceLevel.c | 76 + .../src/ConstraintWrappedCpmContainers.c | 78 + .../src/CoordinateConfidence.c | 76 + .../src/CorrelationCellValue.c | 76 + .../src/CorrelationColumn.c | 72 + .../etsi_its_cpm_coding/src/CpmContainerId.c | 76 + .../etsi_its_cpm_coding/src/CpmPayload.c | 84 + .../etsi_its_cpm_coding/src/Curvature.c | 84 + .../src/CurvatureCalculationMode.c | 72 + .../src/CurvatureConfidence.c | 80 + .../etsi_its_cpm_coding/src/CurvatureValue.c | 76 + .../src/DangerousEndOfQueueSubCauseCode.c | 76 + .../src/DangerousGoodsBasic.c | 104 + .../src/DangerousGoodsExtended.c | 327 +++ .../src/DangerousSituationSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/DeltaAltitude.c | 76 + .../etsi_its_cpm_coding/src/DeltaLatitude.c | 76 + .../etsi_its_cpm_coding/src/DeltaLongitude.c | 76 + .../src/DeltaReferencePosition.c | 102 + .../src/DeltaTimeMilliSecondPositive.c | 76 + .../src/DeltaTimeMilliSecondSigned.c | 76 + .../src/DeltaTimeQuarterSecond.c | 76 + .../etsi_its_cpm_coding/src/DeltaTimeSecond.c | 76 + .../src/DeltaTimeTenthOfSecond.c | 76 + .../etsi_its_cpm_coding/src/DigitalMap.c | 72 + .../etsi_its_cpm_coding/src/Direction.c | 76 + .../etsi_its_cpm_coding/src/DriveDirection.c | 70 + .../src/DrivingLaneStatus.c | 82 + .../etsi_its_cpm_coding/src/EXTERNAL.c | 228 ++ .../etsi_its_cpm_coding/src/EllipticalShape.c | 140 + .../src/EmbarkationStatus.c | 39 + .../src/EmergencyPriority.c | 82 + .../EmergencyVehicleApproachingSubCauseCode.c | 76 + .../src/EnergyStorageType.c | 82 + .../src/EuVehicleCategoryCode.c | 165 ++ .../src/EuVehicleCategoryL.c | 78 + .../src/EuVehicleCategoryM.c | 70 + .../src/EuVehicleCategoryN.c | 70 + .../src/EuVehicleCategoryO.c | 72 + .../src/EulerAnglesWithConfidence.c | 104 + .../etsi_its_cpm_coding/src/EventHistory.c | 72 + .../etsi_its_cpm_coding/src/EventPoint.c | 104 + .../etsi_its_cpm_coding/src/EventZone.c | 78 + .../etsi_its_cpm_coding/src/Ext1.c | 130 + .../etsi_its_cpm_coding/src/Ext2.c | 130 + .../etsi_its_cpm_coding/src/Ext3.c | 76 + .../etsi_its_cpm_coding/src/ExteriorLights.c | 82 + .../src/GeneralizedLanePosition.c | 129 + .../src/GenerationDeltaTime.c | 76 + .../etsi_its_cpm_coding/src/GraphicString.c | 91 + .../src/HardShoulderStatus.c | 70 + ...dousLocation-AnimalOnTheRoadSubCauseCode.c | 76 + ...rdousLocation-DangerousCurveSubCauseCode.c | 76 + ...usLocation-ObstacleOnTheRoadSubCauseCode.c | 76 + ...ousLocation-SurfaceConditionSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/Heading.c | 84 + .../src/HeadingChangeIndication.c | 84 + .../src/HeadingConfidence.c | 76 + .../etsi_its_cpm_coding/src/HeadingValue.c | 76 + .../etsi_its_cpm_coding/src/HeightLonCarr.c | 76 + .../src/HumanPresenceOnTheRoadSubCauseCode.c | 76 + .../src/HumanProblemSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/IA5String.c | 133 + .../etsi_its_cpm_coding/src/INTEGER.c | 738 +++++ .../etsi_its_cpm_coding/src/INTEGER_aper.c | 308 +++ .../etsi_its_cpm_coding/src/INTEGER_ber.c | 72 + .../etsi_its_cpm_coding/src/INTEGER_jer.c | 26 + .../etsi_its_cpm_coding/src/INTEGER_oer.c | 174 ++ .../etsi_its_cpm_coding/src/INTEGER_print.c | 26 + .../etsi_its_cpm_coding/src/INTEGER_rfill.c | 92 + .../etsi_its_cpm_coding/src/INTEGER_uper.c | 236 ++ .../etsi_its_cpm_coding/src/INTEGER_xer.c | 351 +++ .../etsi_its_cpm_coding/src/Identifier1B.c | 76 + .../etsi_its_cpm_coding/src/Identifier2B.c | 76 + .../src/InformationQuality.c | 76 + .../src/InterferenceManagementChannel.c | 213 ++ .../src/InterferenceManagementInfo.c | 72 + .../InterferenceManagementInfoPerChannel.c | 122 + .../src/InterferenceManagementZone.c | 84 + .../InterferenceManagementZoneDefinition.c | 153 ++ .../src/InterferenceManagementZoneType.c | 78 + .../src/InterferenceManagementZones.c | 72 + .../src/IntersectionReferenceId.c | 86 + .../src/Iso3833VehicleType.c | 76 + .../etsi_its_cpm_coding/src/ItineraryPath.c | 72 + .../etsi_its_cpm_coding/src/ItsPduHeader.c | 102 + .../etsi_its_cpm_coding/src/LanePosition.c | 76 + .../src/LanePositionAndType.c | 84 + .../etsi_its_cpm_coding/src/LaneType.c | 76 + .../etsi_its_cpm_coding/src/LaneWidth.c | 76 + .../src/LateralAcceleration.c | 84 + .../src/LateralAccelerationValue.c | 76 + .../etsi_its_cpm_coding/src/Latitude.c | 76 + .../src/LightBarSirenInUse.c | 82 + .../etsi_its_cpm_coding/src/Longitude.c | 76 + .../src/LongitudinalAcceleration.c | 84 + .../src/LongitudinalAccelerationValue.c | 76 + .../src/LongitudinalLanePosition.c | 84 + .../src/LongitudinalLanePositionConfidence.c | 76 + .../src/LongitudinalLanePositionValue.c | 76 + ...erTriangularPositiveSemidefiniteMatrices.c | 72 + ...owerTriangularPositiveSemidefiniteMatrix.c | 84 + ...angularPositiveSemidefiniteMatrixColumns.c | 72 + .../src/ManagementContainer.c | 122 + .../etsi_its_cpm_coding/src/MapPosition.c | 134 + .../etsi_its_cpm_coding/src/MapReference.c | 93 + .../src/MatrixIncludedComponents.c | 82 + .../etsi_its_cpm_coding/src/MessageId.c | 76 + .../etsi_its_cpm_coding/src/MessageRateHz.c | 158 ++ .../src/MessageRateRange.c | 84 + .../src/MessageSegmentationInfo.c | 84 + .../src/MitigationForTechnologies.c | 72 + .../src/MitigationPerTechnologyClass.c | 288 ++ .../etsi_its_cpm_coding/src/NULL.c | 113 + .../etsi_its_cpm_coding/src/NULL_aper.c | 52 + .../etsi_its_cpm_coding/src/NULL_ber.c | 63 + .../etsi_its_cpm_coding/src/NULL_jer.c | 26 + .../etsi_its_cpm_coding/src/NULL_oer.c | 48 + .../etsi_its_cpm_coding/src/NULL_print.c | 20 + .../etsi_its_cpm_coding/src/NULL_rfill.c | 31 + .../etsi_its_cpm_coding/src/NULL_uper.c | 52 + .../etsi_its_cpm_coding/src/NULL_xer.c | 52 + .../src/NativeEnumerated.c | 108 + .../src/NativeEnumerated_aper.c | 157 ++ .../src/NativeEnumerated_jer.c | 36 + .../src/NativeEnumerated_oer.c | 144 + .../src/NativeEnumerated_uper.c | 135 + .../src/NativeEnumerated_xer.c | 36 + .../etsi_its_cpm_coding/src/NativeInteger.c | 152 ++ .../src/NativeInteger_aper.c | 69 + .../src/NativeInteger_ber.c | 130 + .../src/NativeInteger_jer.c | 32 + .../src/NativeInteger_oer.c | 94 + .../src/NativeInteger_print.c | 43 + .../src/NativeInteger_rfill.c | 83 + .../src/NativeInteger_uper.c | 70 + .../src/NativeInteger_xer.c | 78 + .../src/NumberOfOccupants.c | 76 + .../etsi_its_cpm_coding/src/NumericString.c | 157 ++ .../src/OBJECT_IDENTIFIER.c | 532 ++++ .../src/OBJECT_IDENTIFIER_jer.c | 28 + .../src/OBJECT_IDENTIFIER_print.c | 30 + .../src/OBJECT_IDENTIFIER_rfill.c | 73 + .../src/OBJECT_IDENTIFIER_xer.c | 80 + .../etsi_its_cpm_coding/src/OCTET_STRING.c | 383 +++ .../src/OCTET_STRING_aper.c | 414 +++ .../src/OCTET_STRING_ber.c | 525 ++++ .../src/OCTET_STRING_jer.c | 148 + .../src/OCTET_STRING_oer.c | 166 ++ .../src/OCTET_STRING_print.c | 65 + .../src/OCTET_STRING_rfill.c | 209 ++ .../src/OCTET_STRING_uper.c | 319 +++ .../src/OCTET_STRING_xer.c | 627 +++++ .../etsi_its_cpm_coding/src/OPEN_TYPE.c | 63 + .../etsi_its_cpm_coding/src/OPEN_TYPE_aper.c | 173 ++ .../etsi_its_cpm_coding/src/OPEN_TYPE_ber.c | 90 + .../etsi_its_cpm_coding/src/OPEN_TYPE_oer.c | 91 + .../etsi_its_cpm_coding/src/OPEN_TYPE_uper.c | 119 + .../etsi_its_cpm_coding/src/OPEN_TYPE_xer.c | 166 ++ .../etsi_its_cpm_coding/src/ObjectClass.c | 197 ++ .../src/ObjectClassDescription.c | 72 + .../src/ObjectClassWithConfidence.c | 84 + .../src/ObjectDescriptor.c | 91 + .../etsi_its_cpm_coding/src/ObjectDimension.c | 84 + .../src/ObjectDimensionConfidence.c | 76 + .../src/ObjectDimensionValue.c | 76 + .../etsi_its_cpm_coding/src/ObjectFace.c | 76 + .../src/ObjectPerceptionQuality.c | 76 + .../src/OpeningDaysHours.c | 39 + .../etsi_its_cpm_coding/src/OrdinalNumber1B.c | 76 + .../etsi_its_cpm_coding/src/OrdinalNumber3b.c | 76 + .../src/OriginatingRsuContainer.c | 68 + .../src/OriginatingVehicleContainer.c | 122 + .../etsi_its_cpm_coding/src/OtherSubClass.c | 76 + .../etsi_its_cpm_coding/src/Path.c | 72 + .../etsi_its_cpm_coding/src/PathDeltaTime.c | 76 + .../etsi_its_cpm_coding/src/PathHistory.c | 72 + .../etsi_its_cpm_coding/src/PathPoint.c | 86 + .../src/PathPointPredicted.c | 204 ++ .../etsi_its_cpm_coding/src/PathPredicted.c | 72 + .../etsi_its_cpm_coding/src/PerceivedObject.c | 375 +++ .../src/PerceivedObjectContainer.c | 84 + .../src/PerceivedObjectIds.c | 72 + .../src/PerceivedObjects.c | 103 + .../src/PerceptionRegion.c | 176 ++ .../src/PerceptionRegionContainer.c | 72 + .../src/PerformanceClass.c | 76 + .../etsi_its_cpm_coding/src/PhoneNumber.c | 113 + .../etsi_its_cpm_coding/src/PolygonalShape.c | 142 + .../etsi_its_cpm_coding/src/PosCentMass.c | 76 + .../src/PosConfidenceEllipse.c | 102 + .../etsi_its_cpm_coding/src/PosFrontAx.c | 76 + .../etsi_its_cpm_coding/src/PosLonCarr.c | 76 + .../etsi_its_cpm_coding/src/PosPillar.c | 76 + .../src/PositionConfidenceEllipse.c | 102 + .../src/PositionOfOccupants.c | 82 + .../src/PositionOfPillars.c | 72 + .../src/PositioningSolutionType.c | 78 + .../src/PostCrashSubCauseCode.c | 76 + .../src/PrecipitationIntensity.c | 76 + .../src/ProtectedCommunicationZone.c | 158 ++ .../src/ProtectedCommunicationZonesRSU.c | 72 + .../etsi_its_cpm_coding/src/ProtectedZoneId.c | 76 + .../src/ProtectedZoneRadius.c | 76 + .../src/ProtectedZoneType.c | 70 + .../etsi_its_cpm_coding/src/PtActivation.c | 84 + .../src/PtActivationData.c | 77 + .../src/PtActivationType.c | 76 + .../etsi_its_cpm_coding/src/RadialShape.c | 158 ++ .../src/RadialShapeDetails.c | 140 + .../etsi_its_cpm_coding/src/RadialShapes.c | 140 + .../src/RadialShapesList.c | 72 + .../src/RailwayLevelCrossingSubCauseCode.c | 76 + .../src/RectangularShape.c | 140 + .../src/ReferencePosition.c | 120 + .../src/ReferencePositionWithConfidence.c | 120 + .../src/RelevanceDistance.c | 80 + .../src/RelevanceTrafficDirection.c | 72 + .../src/RequestResponseIndication.c | 68 + ...cueAndRecoveryWorkInProgressSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/RestrictedTypes.c | 72 + .../src/RoadSegmentReferenceId.c | 86 + .../etsi_its_cpm_coding/src/RoadType.c | 72 + .../src/RoadworksSubCauseCode.c | 76 + .../src/SafeDistanceIndication.c | 104 + .../src/SafeDistanceIndicator.c | 39 + .../etsi_its_cpm_coding/src/SemiAxisLength.c | 76 + .../src/SensorInformation.c | 140 + .../src/SensorInformationContainer.c | 72 + .../etsi_its_cpm_coding/src/SensorType.c | 76 + .../etsi_its_cpm_coding/src/SequenceNumber.c | 76 + .../src/SequenceOfCartesianPosition3d.c | 72 + .../src/SequenceOfIdentifier1B.c | 72 + .../src/SequenceOfSafeDistanceIndication.c | 72 + ...quenceOfTrajectoryInterceptionIndication.c | 72 + .../etsi_its_cpm_coding/src/Shape.c | 165 ++ .../src/SignalViolationSubCauseCode.c | 76 + .../src/SlowVehicleSubCauseCode.c | 76 + .../src/SpecialTransportType.c | 82 + .../etsi_its_cpm_coding/src/Speed.c | 84 + .../etsi_its_cpm_coding/src/SpeedConfidence.c | 76 + .../etsi_its_cpm_coding/src/SpeedLimit.c | 76 + .../etsi_its_cpm_coding/src/SpeedValue.c | 76 + .../src/StabilityChangeIndication.c | 84 + .../src/StabilityLossProbability.c | 76 + .../src/StandardLength12b.c | 76 + .../src/StandardLength1B.c | 76 + .../src/StandardLength2B.c | 76 + .../src/StandardLength3b.c | 80 + .../src/StandardLength9b.c | 76 + .../etsi_its_cpm_coding/src/StationID.c | 72 + .../etsi_its_cpm_coding/src/StationId.c | 72 + .../etsi_its_cpm_coding/src/StationType.c | 76 + .../etsi_its_cpm_coding/src/StationarySince.c | 72 + .../src/StationaryVehicleSubCauseCode.c | 76 + .../src/SteeringWheelAngle.c | 84 + .../src/SteeringWheelAngleConfidence.c | 76 + .../src/SteeringWheelAngleValue.c | 76 + .../src/SubCauseCodeType.c | 76 + .../etsi_its_cpm_coding/src/Temperature.c | 76 + .../etsi_its_cpm_coding/src/TimestampIts.c | 82 + .../etsi_its_cpm_coding/src/Traces.c | 72 + .../src/TrafficConditionSubCauseCode.c | 76 + .../src/TrafficDirection.c | 72 + .../src/TrafficIslandPosition.c | 84 + .../src/TrafficParticipantType.c | 76 + .../etsi_its_cpm_coding/src/TrafficRule.c | 74 + .../etsi_its_cpm_coding/src/TrailerData.c | 158 ++ .../etsi_its_cpm_coding/src/TrailerDataSet.c | 103 + .../src/TrailerPresenceInformation.c | 74 + .../src/TrajectoryInterceptionConfidence.c | 76 + .../src/TrajectoryInterceptionIndication.c | 104 + .../src/TrajectoryInterceptionProbability.c | 76 + .../src/TransmissionInterval.c | 76 + .../src/TurningDirection.c | 68 + .../etsi_its_cpm_coding/src/TurningRadius.c | 76 + .../etsi_its_cpm_coding/src/UTF8String.c | 224 ++ .../src/UTF8String_print.c | 22 + .../src/UTF8String_rfill.c | 96 + etsi_its_coding/etsi_its_cpm_coding/src/VDS.c | 91 + .../src/ValidityDuration.c | 76 + .../etsi_its_cpm_coding/src/VarLengthNumber.c | 130 + .../src/VehicleBreakdownSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/VehicleHeight.c | 76 + .../src/VehicleIdentification.c | 86 + .../etsi_its_cpm_coding/src/VehicleLength.c | 84 + .../src/VehicleLengthConfidenceIndication.c | 74 + .../etsi_its_cpm_coding/src/VehicleLengthV2.c | 84 + .../src/VehicleLengthValue.c | 76 + .../etsi_its_cpm_coding/src/VehicleMass.c | 76 + .../etsi_its_cpm_coding/src/VehicleRole.c | 96 + .../etsi_its_cpm_coding/src/VehicleWidth.c | 76 + .../src/Velocity3dWithConfidence.c | 93 + .../src/VelocityCartesian.c | 104 + .../src/VelocityComponent.c | 84 + .../src/VelocityComponentValue.c | 76 + .../src/VelocityPolarWithZ.c | 104 + .../src/VerticalAcceleration.c | 84 + .../src/VerticalAccelerationValue.c | 76 + .../src/VruClusterInformation.c | 153 ++ .../src/VruClusterProfiles.c | 82 + .../etsi_its_cpm_coding/src/VruDeviceUsage.c | 84 + .../etsi_its_cpm_coding/src/VruEnvironment.c | 78 + .../src/VruExteriorLights.c | 84 + .../src/VruMovementControl.c | 80 + .../src/VruProfileAndSubprofile.c | 129 + .../etsi_its_cpm_coding/src/VruSizeClass.c | 74 + .../src/VruSpecificExteriorLights.c | 82 + .../src/VruSubProfileAnimal.c | 74 + .../src/VruSubProfileBicyclist.c | 84 + .../src/VruSubProfileMotorcyclist.c | 76 + .../src/VruSubProfilePedestrian.c | 74 + .../etsi_its_cpm_coding/src/WMInumber.c | 91 + .../etsi_its_cpm_coding/src/Wgs84Angle.c | 84 + .../src/Wgs84AngleConfidence.c | 76 + .../etsi_its_cpm_coding/src/Wgs84AngleValue.c | 76 + .../src/WheelBaseVehicle.c | 76 + .../src/WrappedCpmContainer.c | 326 +++ .../src/WrappedCpmContainers.c | 72 + .../src/WrongWayDrivingSubCauseCode.c | 76 + .../etsi_its_cpm_coding/src/YawRate.c | 84 + .../src/YawRateConfidence.c | 82 + .../etsi_its_cpm_coding/src/YawRateValue.c | 76 + .../etsi_its_cpm_coding/src/aper_decoder.c | 91 + .../etsi_its_cpm_coding/src/aper_encoder.c | 129 + .../etsi_its_cpm_coding/src/aper_opentype.c | 149 ++ .../etsi_its_cpm_coding/src/aper_support.c | 239 ++ .../etsi_its_cpm_coding/src/asn_SEQUENCE_OF.c | 41 + .../etsi_its_cpm_coding/src/asn_SET_OF.c | 88 + .../etsi_its_cpm_coding/src/asn_application.c | 538 ++++ .../etsi_its_cpm_coding/src/asn_bit_data.c | 333 +++ .../etsi_its_cpm_coding/src/asn_codecs_prim.c | 31 + .../src/asn_codecs_prim_ber.c | 115 + .../src/asn_codecs_prim_xer.c | 184 ++ .../etsi_its_cpm_coding/src/asn_internal.c | 49 + .../etsi_its_cpm_coding/src/asn_random_fill.c | 66 + .../etsi_its_cpm_coding/src/ber_decoder.c | 283 ++ .../etsi_its_cpm_coding/src/ber_tlv_length.c | 168 ++ .../etsi_its_cpm_coding/src/ber_tlv_tag.c | 144 + .../etsi_its_cpm_coding/src/constr_CHOICE.c | 358 +++ .../src/constr_CHOICE_aper.c | 181 ++ .../src/constr_CHOICE_ber.c | 447 ++++ .../src/constr_CHOICE_jer.c | 79 + .../src/constr_CHOICE_oer.c | 377 +++ .../src/constr_CHOICE_print.c | 48 + .../src/constr_CHOICE_rfill.c | 60 + .../src/constr_CHOICE_uper.c | 191 ++ .../src/constr_CHOICE_xer.c | 316 +++ .../etsi_its_cpm_coding/src/constr_SEQUENCE.c | 197 ++ .../src/constr_SEQUENCE_OF.c | 92 + .../src/constr_SEQUENCE_OF_aper.c | 88 + .../src/constr_SEQUENCE_OF_ber.c | 88 + .../src/constr_SEQUENCE_OF_jer.c | 65 + .../src/constr_SEQUENCE_OF_uper.c | 92 + .../src/constr_SEQUENCE_OF_xer.c | 60 + .../src/constr_SEQUENCE_aper.c | 457 ++++ .../src/constr_SEQUENCE_ber.c | 612 +++++ .../src/constr_SEQUENCE_jer.c | 84 + .../src/constr_SEQUENCE_oer.c | 559 ++++ .../src/constr_SEQUENCE_print.c | 55 + .../src/constr_SEQUENCE_rfill.c | 74 + .../src/constr_SEQUENCE_uper.c | 429 +++ .../src/constr_SEQUENCE_xer.c | 348 +++ .../etsi_its_cpm_coding/src/constr_SET_OF.c | 371 +++ .../src/constr_SET_OF_aper.c | 186 ++ .../src/constr_SET_OF_ber.c | 355 +++ .../src/constr_SET_OF_jer.c | 144 + .../src/constr_SET_OF_oer.c | 281 ++ .../src/constr_SET_OF_print.c | 39 + .../src/constr_SET_OF_rfill.c | 152 ++ .../src/constr_SET_OF_uper.c | 201 ++ .../src/constr_SET_OF_xer.c | 314 +++ .../etsi_its_cpm_coding/src/constr_TYPE.c | 80 + .../etsi_its_cpm_coding/src/constraints.c | 94 + .../etsi_its_cpm_coding/src/der_encoder.c | 194 ++ .../etsi_its_cpm_coding/src/jer_encoder.c | 69 + .../etsi_its_cpm_coding/src/oer_decoder.c | 152 ++ .../etsi_its_cpm_coding/src/oer_encoder.c | 141 + .../etsi_its_cpm_coding/src/oer_support.c | 122 + .../etsi_its_cpm_coding/src/per_decoder.c | 5 + .../etsi_its_cpm_coding/src/per_encoder.c | 35 + .../etsi_its_cpm_coding/src/per_opentype.c | 28 + .../etsi_its_cpm_coding/src/per_support.c | 9 + .../etsi_its_cpm_coding/src/uper_decoder.c | 96 + .../etsi_its_cpm_coding/src/uper_encoder.c | 127 + .../etsi_its_cpm_coding/src/uper_opentype.c | 372 +++ .../etsi_its_cpm_coding/src/uper_support.c | 311 +++ .../etsi_its_cpm_coding/src/xer_decoder.c | 369 +++ .../etsi_its_cpm_coding/src/xer_encoder.c | 237 ++ .../etsi_its_cpm_coding/src/xer_support.c | 227 ++ 854 files changed, 76518 insertions(+) create mode 100644 etsi_its_coding/etsi_its_cpm_coding/CMakeLists.txt create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ANY.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Acceleration3dWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationCartesian.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChange.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChangeIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationComponent.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationControl.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitudeValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationPolarWithZ.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccessTechnologyClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccidentSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionID.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionIdList.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AirHumidity.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Altitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngleConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularAccelerationConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularSpeedConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AxlesCount.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BIT_STRING.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BOOLEAN.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BarometricPressure.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BasicContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BogiesCount.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber1B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber3b.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngle.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngleValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponent.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponent.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinate.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateLarge.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateSmall.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3d.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeChoice.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeV2.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZone.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZoneID.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CircularShape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClosedLanes.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupInfo.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupReason.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterJoinInfo.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveInfo.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveReason.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollectivePerceptionMessage.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollisionRiskSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConfidenceLevel.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CoordinateConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationCellValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationColumn.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmContainerId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmPayload.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Curvature.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureCalculationMode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsBasic.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsExtended.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousSituationSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaAltitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLatitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLongitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaReferencePosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondPositive.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeQuarterSecond.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeSecond.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DigitalMap.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Direction.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DriveDirection.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DrivingLaneStatus.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EXTERNAL.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EllipticalShape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmbarkationStatus.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyPriority.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EnergyStorageType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryL.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryM.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryN.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryO.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EulerAnglesWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventHistory.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventPoint.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventZone.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext1.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext2.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext3.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ExteriorLights.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GeneralizedLanePosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GenerationDeltaTime.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GraphicString.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HardShoulderStatus.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Heading.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingChangeIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeightLonCarr.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanProblemSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IA5String.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/INTEGER.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier1B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier2B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InformationQuality.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementChannel.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfo.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZone.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZones.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IntersectionReferenceId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Iso3833VehicleType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItineraryPath.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItsPduHeader.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePositionAndType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneWidth.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAcceleration.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAccelerationValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Latitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LightBarSirenInUse.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Longitude.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAcceleration.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAccelerationValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ManagementContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapPosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapReference.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MatrixIncludedComponents.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateHz.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateRange.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageSegmentationInfo.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationForTechnologies.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationPerTechnologyClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NULL.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeEnumerated.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeInteger.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumberOfOccupants.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumericString.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OBJECT_IDENTIFIER.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OCTET_STRING.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OPEN_TYPE.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassDescription.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDescriptor.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimension.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectFace.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectPerceptionQuality.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OpeningDaysHours.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber1B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber3b.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingRsuContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingVehicleContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OtherSubClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Path.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathDeltaTime.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathHistory.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPoint.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPointPredicted.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPredicted.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObject.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectIds.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjects.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegion.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegionContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerformanceClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PhoneNumber.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PolygonalShape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosCentMass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosConfidenceEllipse.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosFrontAx.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosLonCarr.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosPillar.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionConfidenceEllipse.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfOccupants.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfPillars.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositioningSolutionType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PostCrashSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PrecipitationIntensity.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZone.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZonesRSU.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneRadius.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivation.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationData.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapeDetails.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapes.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapesList.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RectangularShape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePositionWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceDistance.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceTrafficDirection.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RequestResponseIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RestrictedTypes.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadSegmentReferenceId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadworksSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndicator.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SemiAxisLength.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformation.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformationContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceNumber.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfIdentifier1B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfSafeDistanceIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfTrajectoryInterceptionIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Shape.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SignalViolationSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SlowVehicleSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpecialTransportType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Speed.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedLimit.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityChangeIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityLossProbability.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength12b.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength1B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength2B.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength3b.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength9b.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationID.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationId.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationarySince.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngle.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SubCauseCodeType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Temperature.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TimestampIts.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Traces.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficConditionSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficDirection.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficIslandPosition.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficParticipantType.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficRule.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerData.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerDataSet.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerPresenceInformation.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionProbability.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TransmissionInterval.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningDirection.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningRadius.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/UTF8String.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VDS.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ValidityDuration.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VarLengthNumber.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleHeight.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleIdentification.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLength.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthV2.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleMass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleRole.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleWidth.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Velocity3dWithConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityCartesian.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponent.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponentValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityPolarWithZ.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAcceleration.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAccelerationValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterInformation.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterProfiles.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruDeviceUsage.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruEnvironment.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruExteriorLights.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruMovementControl.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruProfileAndSubprofile.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSizeClass.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSpecificExteriorLights.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileAnimal.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileBicyclist.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileMotorcyclist.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfilePedestrian.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WMInumber.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84Angle.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WheelBaseVehicle.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainer.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainers.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRate.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateConfidence.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateValue.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_opentype.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_support.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SEQUENCE_OF.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SET_OF.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_application.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_bit_data.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs_prim.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_config.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_constant.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_internal.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_ioc.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_random_fill.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_system.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_length.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_tag.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_CHOICE.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE_OF.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SET_OF.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_TYPE.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constraints.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/der_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/jer_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_support.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_opentype.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_support.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_opentype.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_support.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_decoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_encoder.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_support.h create mode 100644 etsi_its_coding/etsi_its_cpm_coding/package.xml create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ANY_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Acceleration3dWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationCartesian.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChange.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChangeIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationComponent.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationControl.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitudeValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationPolarWithZ.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccelerationValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccessTechnologyClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AccidentSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ActionID.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ActionId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ActionIdList.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-AdhesionSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-PrecipitationSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-VisibilitySubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AirHumidity.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Altitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AltitudeConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AltitudeValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AngleConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AngularAccelerationConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AngularSpeedConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/AxlesCount.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BarometricPressure.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BasicContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/BogiesCount.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber1B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber3b.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngle.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngleValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponent.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponentValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponent.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponentValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinate.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateLarge.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateSmall.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3d.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3dWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeChoice.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeV2.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZone.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZoneID.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CircularShape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClosedLanes.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupInfo.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupReason.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClusterJoinInfo.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveInfo.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveReason.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CollectivePerceptionMessage.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CollisionRiskSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ConfidenceLevel.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ConstraintWrappedCpmContainers.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CoordinateConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CorrelationCellValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CorrelationColumn.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CpmContainerId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CpmPayload.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Curvature.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CurvatureCalculationMode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CurvatureConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/CurvatureValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DangerousEndOfQueueSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsBasic.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsExtended.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DangerousSituationSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaAltitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaLatitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaLongitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaReferencePosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondPositive.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondSigned.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeQuarterSecond.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeSecond.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeTenthOfSecond.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DigitalMap.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Direction.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DriveDirection.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/DrivingLaneStatus.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EXTERNAL.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EllipticalShape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EmbarkationStatus.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EmergencyPriority.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EmergencyVehicleApproachingSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EnergyStorageType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryL.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryM.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryN.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryO.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EulerAnglesWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EventHistory.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EventPoint.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/EventZone.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Ext1.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Ext2.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Ext3.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ExteriorLights.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/GeneralizedLanePosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/GenerationDeltaTime.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/GraphicString.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HardShoulderStatus.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-AnimalOnTheRoadSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-DangerousCurveSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-ObstacleOnTheRoadSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-SurfaceConditionSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Heading.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HeadingChangeIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HeadingConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HeadingValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HeightLonCarr.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HumanPresenceOnTheRoadSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/HumanProblemSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/IA5String.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Identifier1B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Identifier2B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InformationQuality.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementChannel.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfo.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfoPerChannel.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZone.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneDefinition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZones.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/IntersectionReferenceId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Iso3833VehicleType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ItineraryPath.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ItsPduHeader.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LanePosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LanePositionAndType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LaneType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LaneWidth.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LateralAcceleration.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LateralAccelerationValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Latitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LightBarSirenInUse.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Longitude.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAcceleration.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAccelerationValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrices.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrix.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrixColumns.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ManagementContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MapPosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MapReference.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MatrixIncludedComponents.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MessageId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MessageRateHz.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MessageRateRange.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MessageSegmentationInfo.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MitigationForTechnologies.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/MitigationPerTechnologyClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NULL_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NumberOfOccupants.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/NumericString.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassDescription.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectDescriptor.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimension.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectFace.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ObjectPerceptionQuality.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OpeningDaysHours.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber1B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber3b.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OriginatingRsuContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OriginatingVehicleContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/OtherSubClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Path.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PathDeltaTime.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PathHistory.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PathPoint.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PathPointPredicted.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PathPredicted.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObject.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectIds.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjects.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegion.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegionContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PerformanceClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PhoneNumber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PolygonalShape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PosCentMass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PosConfidenceEllipse.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PosFrontAx.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PosLonCarr.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PosPillar.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PositionConfidenceEllipse.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PositionOfOccupants.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PositionOfPillars.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PositioningSolutionType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PostCrashSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PrecipitationIntensity.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZone.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZonesRSU.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneRadius.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PtActivation.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PtActivationData.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/PtActivationType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RadialShape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RadialShapeDetails.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RadialShapes.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RadialShapesList.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RailwayLevelCrossingSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RectangularShape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ReferencePosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ReferencePositionWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RelevanceDistance.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RelevanceTrafficDirection.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RequestResponseIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RescueAndRecoveryWorkInProgressSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RestrictedTypes.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RoadSegmentReferenceId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RoadType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/RoadworksSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndicator.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SemiAxisLength.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SensorInformation.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SensorInformationContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SensorType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SequenceNumber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfCartesianPosition3d.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfIdentifier1B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfSafeDistanceIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfTrajectoryInterceptionIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Shape.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SignalViolationSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SlowVehicleSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SpecialTransportType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Speed.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SpeedConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SpeedLimit.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SpeedValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StabilityChangeIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StabilityLossProbability.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StandardLength12b.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StandardLength1B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StandardLength2B.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StandardLength3b.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StandardLength9b.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StationID.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StationId.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StationType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StationarySince.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/StationaryVehicleSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngle.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/SubCauseCodeType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Temperature.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TimestampIts.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Traces.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrafficConditionSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrafficDirection.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrafficIslandPosition.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrafficParticipantType.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrafficRule.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrailerData.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrailerDataSet.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrailerPresenceInformation.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionProbability.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TransmissionInterval.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TurningDirection.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/TurningRadius.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/UTF8String.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VDS.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ValidityDuration.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VarLengthNumber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleBreakdownSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleHeight.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleIdentification.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleLength.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthConfidenceIndication.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthV2.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleMass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleRole.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VehicleWidth.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Velocity3dWithConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VelocityCartesian.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponent.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponentValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VelocityPolarWithZ.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VerticalAcceleration.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VerticalAccelerationValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruClusterInformation.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruClusterProfiles.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruDeviceUsage.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruEnvironment.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruExteriorLights.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruMovementControl.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruProfileAndSubprofile.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSizeClass.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSpecificExteriorLights.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileAnimal.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileBicyclist.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileMotorcyclist.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfilePedestrian.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/WMInumber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Wgs84Angle.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/WheelBaseVehicle.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainers.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/WrongWayDrivingSubCauseCode.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/YawRate.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/YawRateConfidence.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/YawRateValue.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/aper_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/aper_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/aper_opentype.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/aper_support.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_SEQUENCE_OF.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_SET_OF.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_application.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_bit_data.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_internal.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/asn_random_fill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ber_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_length.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_tag.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_aper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_ber.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_jer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_oer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_print.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_rfill.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_uper.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_xer.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constr_TYPE.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/constraints.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/der_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/jer_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/oer_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/oer_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/oer_support.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/per_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/per_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/per_opentype.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/per_support.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/uper_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/uper_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/uper_opentype.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/uper_support.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/xer_decoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/xer_encoder.c create mode 100644 etsi_its_coding/etsi_its_cpm_coding/src/xer_support.c diff --git a/.vscode/launch.json b/.vscode/launch.json index ac0c3c399..70db64e7a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -30,6 +30,24 @@ "justMyCode": true }, + { + "name": "CPM asn1ToC", + "type": "python", + "request": "launch", + "program": "utils/codegen/asn1ToC.py", + "args": [ + "asn1/raw/cpm_ts103324/asn/CPM-PDU-Descriptions.asn", + "asn1/raw/cpm_ts103324/asn/CPM-OriginatingStationContainers.asn", + "asn1/raw/cpm_ts103324/asn/CPM-PerceivedObjectContainer.asn", + "asn1/raw/cpm_ts103324/asn/CPM-PerceptionRegionContainer.asn", + "asn1/raw/cpm_ts103324/asn/CPM-SensorInformationContainer.asn", + "asn1/raw/cpm_ts103324/asn/cdd/ETSI-ITS-CDD.asn", + "-o", "etsi_its_coding/etsi_its_cpm_coding" + ], + "console": "integratedTerminal", + "justMyCode": true + }, + { "name": "CAM asn1ToRosMsg", "type": "python", diff --git a/etsi_its_coding/etsi_its_cpm_coding/CMakeLists.txt b/etsi_its_coding/etsi_its_cpm_coding/CMakeLists.txt new file mode 100644 index 000000000..a42def1fe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/CMakeLists.txt @@ -0,0 +1,69 @@ +cmake_minimum_required(VERSION 3.5) +project(etsi_its_cpm_coding) + +find_package(ros_environment REQUIRED QUIET) +set(ROS_VERSION $ENV{ROS_VERSION}) + +AUX_SOURCE_DIRECTORY(src SRC_FILES) + +# === ROS 2 (AMENT) ============================================================ +if(${ROS_VERSION} EQUAL 2) + + find_package(ament_cmake REQUIRED) + + add_library(${PROJECT_NAME} SHARED + ${SRC_FILES} + ) + + target_include_directories(${PROJECT_NAME} PUBLIC + $ + $ + ) + + ament_export_targets(${PROJECT_NAME}Targets HAS_LIBRARY_TARGET) + + install(DIRECTORY include/ + DESTINATION include + ) + + install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION lib + INCLUDES DESTINATION include + ) + + ament_package() + +# === ROS (CATKIN) ============================================================= +elseif(${ROS_VERSION} EQUAL 1) + + find_package(catkin REQUIRED) + + catkin_package( + INCLUDE_DIRS include + LIBRARIES ${PROJECT_NAME} + ) + + include_directories( + include + ${catkin_INCLUDE_DIRS} + ) + + add_library(${PROJECT_NAME} SHARED + ${SRC_FILES} + ) + + install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY include/${PROJECT_NAME}/ + DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} + FILES_MATCHING PATTERN "*.h" + ) + +endif() diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ANY.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ANY.h new file mode 100644 index 000000000..570f2d0d5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ANY.h @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +#define ANY_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ANY_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ANY_compare OCTET_STRING_compare + +#define ANY_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ANY_decode_xer OCTET_STRING_decode_xer_hex +xer_type_encoder_f ANY_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f ANY_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +#if !defined(ASN_DISABLE_APER_SUPPORT) +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Acceleration3dWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Acceleration3dWithConfidence.h new file mode 100644 index 000000000..4961deb2c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Acceleration3dWithConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationPolarWithZ.h" +#include "etsi_its_cpm_coding/AccelerationCartesian.h" +#include +#ifndef _Acceleration3dWithConfidence_H_ +#define _Acceleration3dWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Acceleration3dWithConfidence_PR { + Acceleration3dWithConfidence_PR_NOTHING, /* No components present */ + Acceleration3dWithConfidence_PR_polarAcceleration, + Acceleration3dWithConfidence_PR_cartesianAcceleration +} Acceleration3dWithConfidence_PR; + +/* Acceleration3dWithConfidence */ +typedef struct Acceleration3dWithConfidence { + Acceleration3dWithConfidence_PR present; + union Acceleration3dWithConfidence_u { + AccelerationPolarWithZ_t polarAcceleration; + AccelerationCartesian_t cartesianAcceleration; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Acceleration3dWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Acceleration3dWithConfidence; +extern asn_CHOICE_specifics_t asn_SPC_Acceleration3dWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_Acceleration3dWithConfidence_1[2]; +extern asn_per_constraints_t asn_PER_type_Acceleration3dWithConfidence_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Acceleration3dWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationCartesian.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationCartesian.h new file mode 100644 index 000000000..8c1dd7aa2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationCartesian.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationComponent.h" +#include +#ifndef _AccelerationCartesian_H_ +#define _AccelerationCartesian_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AccelerationComponent; + +/* AccelerationCartesian */ +typedef struct AccelerationCartesian { + AccelerationComponent_t xAcceleration; + AccelerationComponent_t yAcceleration; + struct AccelerationComponent *zAcceleration; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationCartesian_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationCartesian; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelerationCartesian_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelerationCartesian_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/AccelerationComponent.h" + +#endif /* _AccelerationCartesian_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChange.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChange.h new file mode 100644 index 000000000..b7c96c4ff --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChange.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccelerationChange_H_ +#define _AccelerationChange_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationChange { + AccelerationChange_accelerate = 0, + AccelerationChange_decelerate = 1 +} e_AccelerationChange; + +/* AccelerationChange */ +typedef long AccelerationChange_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccelerationChange_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccelerationChange; +extern const asn_INTEGER_specifics_t asn_SPC_AccelerationChange_specs_1; +asn_struct_free_f AccelerationChange_free; +asn_struct_print_f AccelerationChange_print; +asn_constr_check_f AccelerationChange_constraint; +ber_type_decoder_f AccelerationChange_decode_ber; +der_type_encoder_f AccelerationChange_encode_der; +xer_type_decoder_f AccelerationChange_decode_xer; +xer_type_encoder_f AccelerationChange_encode_xer; +jer_type_encoder_f AccelerationChange_encode_jer; +oer_type_decoder_f AccelerationChange_decode_oer; +oer_type_encoder_f AccelerationChange_encode_oer; +per_type_decoder_f AccelerationChange_decode_uper; +per_type_encoder_f AccelerationChange_encode_uper; +per_type_decoder_f AccelerationChange_decode_aper; +per_type_encoder_f AccelerationChange_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationChange_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChangeIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChangeIndication.h new file mode 100644 index 000000000..0b0ca5632 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationChangeIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationChange.h" +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" +#include +#ifndef _AccelerationChangeIndication_H_ +#define _AccelerationChangeIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AccelerationChangeIndication */ +typedef struct AccelerationChangeIndication { + AccelerationChange_t accelOrDecel; + DeltaTimeTenthOfSecond_t actionDeltaTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationChangeIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationChangeIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationChangeIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationComponent.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationComponent.h new file mode 100644 index 000000000..403fb744e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationComponent.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationValue.h" +#include "etsi_its_cpm_coding/AccelerationConfidence.h" +#include +#ifndef _AccelerationComponent_H_ +#define _AccelerationComponent_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AccelerationComponent */ +typedef struct AccelerationComponent { + AccelerationValue_t value; + AccelerationConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationComponent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationComponent; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelerationComponent_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelerationComponent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationComponent_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationConfidence.h new file mode 100644 index 000000000..3b776b76b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccelerationConfidence_H_ +#define _AccelerationConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationConfidence { + AccelerationConfidence_outOfRange = 101, + AccelerationConfidence_unavailable = 102 +} e_AccelerationConfidence; + +/* AccelerationConfidence */ +typedef long AccelerationConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccelerationConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccelerationConfidence; +asn_struct_free_f AccelerationConfidence_free; +asn_struct_print_f AccelerationConfidence_print; +asn_constr_check_f AccelerationConfidence_constraint; +ber_type_decoder_f AccelerationConfidence_decode_ber; +der_type_encoder_f AccelerationConfidence_encode_der; +xer_type_decoder_f AccelerationConfidence_decode_xer; +xer_type_encoder_f AccelerationConfidence_encode_xer; +jer_type_encoder_f AccelerationConfidence_encode_jer; +oer_type_decoder_f AccelerationConfidence_decode_oer; +oer_type_encoder_f AccelerationConfidence_encode_oer; +per_type_decoder_f AccelerationConfidence_decode_uper; +per_type_encoder_f AccelerationConfidence_encode_uper; +per_type_decoder_f AccelerationConfidence_decode_aper; +per_type_encoder_f AccelerationConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationControl.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationControl.h new file mode 100644 index 000000000..e2990c785 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationControl.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccelerationControl_H_ +#define _AccelerationControl_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationControl { + AccelerationControl_brakePedalEngaged = 0, + AccelerationControl_gasPedalEngaged = 1, + AccelerationControl_emergencyBrakeEngaged = 2, + AccelerationControl_collisionWarningEngaged = 3, + AccelerationControl_accEngaged = 4, + AccelerationControl_cruiseControlEngaged = 5, + AccelerationControl_speedLimiterEngaged = 6 +} e_AccelerationControl; + +/* AccelerationControl */ +typedef BIT_STRING_t AccelerationControl_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationControl; +asn_struct_free_f AccelerationControl_free; +asn_struct_print_f AccelerationControl_print; +asn_constr_check_f AccelerationControl_constraint; +ber_type_decoder_f AccelerationControl_decode_ber; +der_type_encoder_f AccelerationControl_encode_der; +xer_type_decoder_f AccelerationControl_decode_xer; +xer_type_encoder_f AccelerationControl_encode_xer; +jer_type_encoder_f AccelerationControl_encode_jer; +oer_type_decoder_f AccelerationControl_decode_oer; +oer_type_encoder_f AccelerationControl_encode_oer; +per_type_decoder_f AccelerationControl_decode_uper; +per_type_encoder_f AccelerationControl_encode_uper; +per_type_decoder_f AccelerationControl_decode_aper; +per_type_encoder_f AccelerationControl_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationControl_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitude.h new file mode 100644 index 000000000..aa75e81be --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitude.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationMagnitudeValue.h" +#include "etsi_its_cpm_coding/AccelerationConfidence.h" +#include +#ifndef _AccelerationMagnitude_H_ +#define _AccelerationMagnitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* AccelerationMagnitude */ +typedef struct AccelerationMagnitude { + AccelerationMagnitudeValue_t accelerationMagnitudeValue; + AccelerationConfidence_t accelerationConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationMagnitude_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationMagnitude; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelerationMagnitude_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelerationMagnitude_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationMagnitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitudeValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitudeValue.h new file mode 100644 index 000000000..1e03454b2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationMagnitudeValue.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccelerationMagnitudeValue_H_ +#define _AccelerationMagnitudeValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationMagnitudeValue { + AccelerationMagnitudeValue_positiveOutOfRange = 160, + AccelerationMagnitudeValue_unavailable = 161 +} e_AccelerationMagnitudeValue; + +/* AccelerationMagnitudeValue */ +typedef long AccelerationMagnitudeValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccelerationMagnitudeValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccelerationMagnitudeValue; +asn_struct_free_f AccelerationMagnitudeValue_free; +asn_struct_print_f AccelerationMagnitudeValue_print; +asn_constr_check_f AccelerationMagnitudeValue_constraint; +ber_type_decoder_f AccelerationMagnitudeValue_decode_ber; +der_type_encoder_f AccelerationMagnitudeValue_encode_der; +xer_type_decoder_f AccelerationMagnitudeValue_decode_xer; +xer_type_encoder_f AccelerationMagnitudeValue_encode_xer; +jer_type_encoder_f AccelerationMagnitudeValue_encode_jer; +oer_type_decoder_f AccelerationMagnitudeValue_decode_oer; +oer_type_encoder_f AccelerationMagnitudeValue_encode_oer; +per_type_decoder_f AccelerationMagnitudeValue_decode_uper; +per_type_encoder_f AccelerationMagnitudeValue_encode_uper; +per_type_decoder_f AccelerationMagnitudeValue_decode_aper; +per_type_encoder_f AccelerationMagnitudeValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationMagnitudeValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationPolarWithZ.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationPolarWithZ.h new file mode 100644 index 000000000..594c978da --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationPolarWithZ.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccelerationMagnitude.h" +#include "etsi_its_cpm_coding/CartesianAngle.h" +#include +#ifndef _AccelerationPolarWithZ_H_ +#define _AccelerationPolarWithZ_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct AccelerationComponent; + +/* AccelerationPolarWithZ */ +typedef struct AccelerationPolarWithZ { + AccelerationMagnitude_t accelerationMagnitude; + CartesianAngle_t accelerationDirection; + struct AccelerationComponent *zAcceleration; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AccelerationPolarWithZ_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AccelerationPolarWithZ; +extern asn_SEQUENCE_specifics_t asn_SPC_AccelerationPolarWithZ_specs_1; +extern asn_TYPE_member_t asn_MBR_AccelerationPolarWithZ_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/AccelerationComponent.h" + +#endif /* _AccelerationPolarWithZ_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationValue.h new file mode 100644 index 000000000..be8094e92 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccelerationValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccelerationValue_H_ +#define _AccelerationValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccelerationValue { + AccelerationValue_negativeOutOfRange = -160, + AccelerationValue_positiveOutOfRange = 160, + AccelerationValue_unavailable = 161 +} e_AccelerationValue; + +/* AccelerationValue */ +typedef long AccelerationValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccelerationValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccelerationValue; +asn_struct_free_f AccelerationValue_free; +asn_struct_print_f AccelerationValue_print; +asn_constr_check_f AccelerationValue_constraint; +ber_type_decoder_f AccelerationValue_decode_ber; +der_type_encoder_f AccelerationValue_encode_der; +xer_type_decoder_f AccelerationValue_decode_xer; +xer_type_encoder_f AccelerationValue_encode_xer; +jer_type_encoder_f AccelerationValue_encode_jer; +oer_type_decoder_f AccelerationValue_decode_oer; +oer_type_encoder_f AccelerationValue_encode_oer; +per_type_decoder_f AccelerationValue_decode_uper; +per_type_encoder_f AccelerationValue_encode_uper; +per_type_decoder_f AccelerationValue_decode_aper; +per_type_encoder_f AccelerationValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccelerationValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccessTechnologyClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccessTechnologyClass.h new file mode 100644 index 000000000..a4f8deb89 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccessTechnologyClass.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccessTechnologyClass_H_ +#define _AccessTechnologyClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccessTechnologyClass { + AccessTechnologyClass_any = 0, + AccessTechnologyClass_itsg5Class = 1, + AccessTechnologyClass_ltev2xClass = 2, + AccessTechnologyClass_nrv2xClass = 3 + /* + * Enumeration is extensible + */ +} e_AccessTechnologyClass; + +/* AccessTechnologyClass */ +typedef long AccessTechnologyClass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccessTechnologyClass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccessTechnologyClass; +extern const asn_INTEGER_specifics_t asn_SPC_AccessTechnologyClass_specs_1; +asn_struct_free_f AccessTechnologyClass_free; +asn_struct_print_f AccessTechnologyClass_print; +asn_constr_check_f AccessTechnologyClass_constraint; +ber_type_decoder_f AccessTechnologyClass_decode_ber; +der_type_encoder_f AccessTechnologyClass_encode_der; +xer_type_decoder_f AccessTechnologyClass_decode_xer; +xer_type_encoder_f AccessTechnologyClass_encode_xer; +jer_type_encoder_f AccessTechnologyClass_encode_jer; +oer_type_decoder_f AccessTechnologyClass_decode_oer; +oer_type_encoder_f AccessTechnologyClass_encode_oer; +per_type_decoder_f AccessTechnologyClass_decode_uper; +per_type_encoder_f AccessTechnologyClass_encode_uper; +per_type_decoder_f AccessTechnologyClass_decode_aper; +per_type_encoder_f AccessTechnologyClass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccessTechnologyClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccidentSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccidentSubCauseCode.h new file mode 100644 index 000000000..e8c3c303e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AccidentSubCauseCode.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AccidentSubCauseCode_H_ +#define _AccidentSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AccidentSubCauseCode { + AccidentSubCauseCode_unavailable = 0, + AccidentSubCauseCode_multiVehicleAccident = 1, + AccidentSubCauseCode_heavyAccident = 2, + AccidentSubCauseCode_accidentInvolvingLorry = 3, + AccidentSubCauseCode_accidentInvolvingBus = 4, + AccidentSubCauseCode_accidentInvolvingHazardousMaterials = 5, + AccidentSubCauseCode_accidentOnOppositeLane = 6, + AccidentSubCauseCode_unsecuredAccident = 7, + AccidentSubCauseCode_assistanceRequested = 8 +} e_AccidentSubCauseCode; + +/* AccidentSubCauseCode */ +typedef long AccidentSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AccidentSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AccidentSubCauseCode; +asn_struct_free_f AccidentSubCauseCode_free; +asn_struct_print_f AccidentSubCauseCode_print; +asn_constr_check_f AccidentSubCauseCode_constraint; +ber_type_decoder_f AccidentSubCauseCode_decode_ber; +der_type_encoder_f AccidentSubCauseCode_encode_der; +xer_type_decoder_f AccidentSubCauseCode_decode_xer; +xer_type_encoder_f AccidentSubCauseCode_encode_xer; +jer_type_encoder_f AccidentSubCauseCode_encode_jer; +oer_type_decoder_f AccidentSubCauseCode_decode_oer; +oer_type_encoder_f AccidentSubCauseCode_encode_oer; +per_type_decoder_f AccidentSubCauseCode_decode_uper; +per_type_encoder_f AccidentSubCauseCode_encode_uper; +per_type_decoder_f AccidentSubCauseCode_decode_aper; +per_type_encoder_f AccidentSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AccidentSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionID.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionID.h new file mode 100644 index 000000000..a56cfbf98 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionID.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StationID.h" +#include "etsi_its_cpm_coding/SequenceNumber.h" +#include +#ifndef _ActionID_H_ +#define _ActionID_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionID */ +typedef struct ActionID { + StationID_t originatingStationId; + SequenceNumber_t sequenceNumber; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionID; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionID_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionId.h new file mode 100644 index 000000000..aaf2917ef --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionId.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StationId.h" +#include "etsi_its_cpm_coding/SequenceNumber.h" +#include +#ifndef _ActionId_H_ +#define _ActionId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionId */ +typedef struct ActionId { + StationId_t originatingStationId; + SequenceNumber_t sequenceNumber; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionId_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionId; +extern asn_SEQUENCE_specifics_t asn_SPC_ActionId_specs_1; +extern asn_TYPE_member_t asn_MBR_ActionId_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionIdList.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionIdList.h new file mode 100644 index 000000000..55b549e34 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ActionIdList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _ActionIdList_H_ +#define _ActionIdList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActionId; + +/* ActionIdList */ +typedef struct ActionIdList { + A_SEQUENCE_OF(struct ActionId) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionIdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionIdList; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/ActionId.h" + +#endif /* _ActionIdList_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h new file mode 100644 index 000000000..9eaaa03eb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AdverseWeatherCondition_AdhesionSubCauseCode_H_ +#define _AdverseWeatherCondition_AdhesionSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdverseWeatherCondition_AdhesionSubCauseCode { + AdverseWeatherCondition_AdhesionSubCauseCode_unavailable = 0, + AdverseWeatherCondition_AdhesionSubCauseCode_heavyFrostOnRoad = 1, + AdverseWeatherCondition_AdhesionSubCauseCode_fuelOnRoad = 2, + AdverseWeatherCondition_AdhesionSubCauseCode_mudOnRoad = 3, + AdverseWeatherCondition_AdhesionSubCauseCode_snowOnRoad = 4, + AdverseWeatherCondition_AdhesionSubCauseCode_iceOnRoad = 5, + AdverseWeatherCondition_AdhesionSubCauseCode_blackIceOnRoad = 6, + AdverseWeatherCondition_AdhesionSubCauseCode_oilOnRoad = 7, + AdverseWeatherCondition_AdhesionSubCauseCode_looseChippings = 8, + AdverseWeatherCondition_AdhesionSubCauseCode_instantBlackIce = 9, + AdverseWeatherCondition_AdhesionSubCauseCode_roadsSalted = 10 +} e_AdverseWeatherCondition_AdhesionSubCauseCode; + +/* AdverseWeatherCondition-AdhesionSubCauseCode */ +typedef long AdverseWeatherCondition_AdhesionSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_AdhesionSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode; +asn_struct_free_f AdverseWeatherCondition_AdhesionSubCauseCode_free; +asn_struct_print_f AdverseWeatherCondition_AdhesionSubCauseCode_print; +asn_constr_check_f AdverseWeatherCondition_AdhesionSubCauseCode_constraint; +ber_type_decoder_f AdverseWeatherCondition_AdhesionSubCauseCode_decode_ber; +der_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_der; +xer_type_decoder_f AdverseWeatherCondition_AdhesionSubCauseCode_decode_xer; +xer_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_xer; +jer_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_jer; +oer_type_decoder_f AdverseWeatherCondition_AdhesionSubCauseCode_decode_oer; +oer_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_oer; +per_type_decoder_f AdverseWeatherCondition_AdhesionSubCauseCode_decode_uper; +per_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_uper; +per_type_decoder_f AdverseWeatherCondition_AdhesionSubCauseCode_decode_aper; +per_type_encoder_f AdverseWeatherCondition_AdhesionSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdverseWeatherCondition_AdhesionSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h new file mode 100644 index 000000000..2bd96103a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_H_ +#define _AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode { + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_unavailable = 0, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_strongWinds = 1, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_damagingHail = 2, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_hurricane = 3, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_thunderstorm = 4, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tornado = 5, + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_blizzard = 6 +} e_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode; + +/* AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode */ +typedef long AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode; +asn_struct_free_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_free; +asn_struct_print_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_print; +asn_constr_check_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constraint; +ber_type_decoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_decode_ber; +der_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_der; +xer_type_decoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_decode_xer; +xer_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_xer; +jer_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_jer; +oer_type_decoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_decode_oer; +oer_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_oer; +per_type_decoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_decode_uper; +per_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_uper; +per_type_decoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_decode_aper; +per_type_encoder_f AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h new file mode 100644 index 000000000..cc39ee931 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AdverseWeatherCondition_PrecipitationSubCauseCode_H_ +#define _AdverseWeatherCondition_PrecipitationSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdverseWeatherCondition_PrecipitationSubCauseCode { + AdverseWeatherCondition_PrecipitationSubCauseCode_unavailable = 0, + AdverseWeatherCondition_PrecipitationSubCauseCode_heavyRain = 1, + AdverseWeatherCondition_PrecipitationSubCauseCode_heavySnowfall = 2, + AdverseWeatherCondition_PrecipitationSubCauseCode_softHail = 3 +} e_AdverseWeatherCondition_PrecipitationSubCauseCode; + +/* AdverseWeatherCondition-PrecipitationSubCauseCode */ +typedef long AdverseWeatherCondition_PrecipitationSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_PrecipitationSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode; +asn_struct_free_f AdverseWeatherCondition_PrecipitationSubCauseCode_free; +asn_struct_print_f AdverseWeatherCondition_PrecipitationSubCauseCode_print; +asn_constr_check_f AdverseWeatherCondition_PrecipitationSubCauseCode_constraint; +ber_type_decoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_decode_ber; +der_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_der; +xer_type_decoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_decode_xer; +xer_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_xer; +jer_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_jer; +oer_type_decoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_decode_oer; +oer_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_oer; +per_type_decoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_decode_uper; +per_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_uper; +per_type_decoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_decode_aper; +per_type_encoder_f AdverseWeatherCondition_PrecipitationSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdverseWeatherCondition_PrecipitationSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h new file mode 100644 index 000000000..722029bee --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AdverseWeatherCondition_VisibilitySubCauseCode_H_ +#define _AdverseWeatherCondition_VisibilitySubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdverseWeatherCondition_VisibilitySubCauseCode { + AdverseWeatherCondition_VisibilitySubCauseCode_unavailable = 0, + AdverseWeatherCondition_VisibilitySubCauseCode_fog = 1, + AdverseWeatherCondition_VisibilitySubCauseCode_smoke = 2, + AdverseWeatherCondition_VisibilitySubCauseCode_heavySnowfall = 3, + AdverseWeatherCondition_VisibilitySubCauseCode_heavyRain = 4, + AdverseWeatherCondition_VisibilitySubCauseCode_heavyHail = 5, + AdverseWeatherCondition_VisibilitySubCauseCode_lowSunGlare = 6, + AdverseWeatherCondition_VisibilitySubCauseCode_sandstorms = 7, + AdverseWeatherCondition_VisibilitySubCauseCode_swarmsOfInsects = 8 +} e_AdverseWeatherCondition_VisibilitySubCauseCode; + +/* AdverseWeatherCondition-VisibilitySubCauseCode */ +typedef long AdverseWeatherCondition_VisibilitySubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_VisibilitySubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode; +asn_struct_free_f AdverseWeatherCondition_VisibilitySubCauseCode_free; +asn_struct_print_f AdverseWeatherCondition_VisibilitySubCauseCode_print; +asn_constr_check_f AdverseWeatherCondition_VisibilitySubCauseCode_constraint; +ber_type_decoder_f AdverseWeatherCondition_VisibilitySubCauseCode_decode_ber; +der_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_der; +xer_type_decoder_f AdverseWeatherCondition_VisibilitySubCauseCode_decode_xer; +xer_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_xer; +jer_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_jer; +oer_type_decoder_f AdverseWeatherCondition_VisibilitySubCauseCode_decode_oer; +oer_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_oer; +per_type_decoder_f AdverseWeatherCondition_VisibilitySubCauseCode_decode_uper; +per_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_uper; +per_type_decoder_f AdverseWeatherCondition_VisibilitySubCauseCode_decode_aper; +per_type_encoder_f AdverseWeatherCondition_VisibilitySubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdverseWeatherCondition_VisibilitySubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AirHumidity.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AirHumidity.h new file mode 100644 index 000000000..ffc12e2a8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AirHumidity.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AirHumidity_H_ +#define _AirHumidity_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AirHumidity { + AirHumidity_oneHundredPercent = 1000, + AirHumidity_unavailable = 1001 +} e_AirHumidity; + +/* AirHumidity */ +typedef long AirHumidity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AirHumidity; +asn_struct_free_f AirHumidity_free; +asn_struct_print_f AirHumidity_print; +asn_constr_check_f AirHumidity_constraint; +ber_type_decoder_f AirHumidity_decode_ber; +der_type_encoder_f AirHumidity_encode_der; +xer_type_decoder_f AirHumidity_decode_xer; +xer_type_encoder_f AirHumidity_encode_xer; +jer_type_encoder_f AirHumidity_encode_jer; +oer_type_decoder_f AirHumidity_decode_oer; +oer_type_encoder_f AirHumidity_encode_oer; +per_type_decoder_f AirHumidity_decode_uper; +per_type_encoder_f AirHumidity_encode_uper; +per_type_decoder_f AirHumidity_decode_aper; +per_type_encoder_f AirHumidity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AirHumidity_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Altitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Altitude.h new file mode 100644 index 000000000..b2819c7f9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Altitude.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AltitudeValue.h" +#include "etsi_its_cpm_coding/AltitudeConfidence.h" +#include +#ifndef _Altitude_H_ +#define _Altitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Altitude */ +typedef struct Altitude { + AltitudeValue_t altitudeValue; + AltitudeConfidence_t altitudeConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Altitude_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Altitude; +extern asn_SEQUENCE_specifics_t asn_SPC_Altitude_specs_1; +extern asn_TYPE_member_t asn_MBR_Altitude_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Altitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeConfidence.h new file mode 100644 index 000000000..453d97771 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeConfidence.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AltitudeConfidence_H_ +#define _AltitudeConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AltitudeConfidence { + AltitudeConfidence_alt_000_01 = 0, + AltitudeConfidence_alt_000_02 = 1, + AltitudeConfidence_alt_000_05 = 2, + AltitudeConfidence_alt_000_10 = 3, + AltitudeConfidence_alt_000_20 = 4, + AltitudeConfidence_alt_000_50 = 5, + AltitudeConfidence_alt_001_00 = 6, + AltitudeConfidence_alt_002_00 = 7, + AltitudeConfidence_alt_005_00 = 8, + AltitudeConfidence_alt_010_00 = 9, + AltitudeConfidence_alt_020_00 = 10, + AltitudeConfidence_alt_050_00 = 11, + AltitudeConfidence_alt_100_00 = 12, + AltitudeConfidence_alt_200_00 = 13, + AltitudeConfidence_outOfRange = 14, + AltitudeConfidence_unavailable = 15 +} e_AltitudeConfidence; + +/* AltitudeConfidence */ +typedef long AltitudeConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AltitudeConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AltitudeConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_AltitudeConfidence_specs_1; +asn_struct_free_f AltitudeConfidence_free; +asn_struct_print_f AltitudeConfidence_print; +asn_constr_check_f AltitudeConfidence_constraint; +ber_type_decoder_f AltitudeConfidence_decode_ber; +der_type_encoder_f AltitudeConfidence_encode_der; +xer_type_decoder_f AltitudeConfidence_decode_xer; +xer_type_encoder_f AltitudeConfidence_encode_xer; +jer_type_encoder_f AltitudeConfidence_encode_jer; +oer_type_decoder_f AltitudeConfidence_decode_oer; +oer_type_encoder_f AltitudeConfidence_encode_oer; +per_type_decoder_f AltitudeConfidence_decode_uper; +per_type_encoder_f AltitudeConfidence_encode_uper; +per_type_decoder_f AltitudeConfidence_decode_aper; +per_type_encoder_f AltitudeConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AltitudeConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeValue.h new file mode 100644 index 000000000..748a0e41c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AltitudeValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AltitudeValue_H_ +#define _AltitudeValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AltitudeValue { + AltitudeValue_negativeOutOfRange = -100000, + AltitudeValue_postiveOutOfRange = 800000, + AltitudeValue_unavailable = 800001 +} e_AltitudeValue; + +/* AltitudeValue */ +typedef long AltitudeValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AltitudeValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AltitudeValue; +asn_struct_free_f AltitudeValue_free; +asn_struct_print_f AltitudeValue_print; +asn_constr_check_f AltitudeValue_constraint; +ber_type_decoder_f AltitudeValue_decode_ber; +der_type_encoder_f AltitudeValue_encode_der; +xer_type_decoder_f AltitudeValue_decode_xer; +xer_type_encoder_f AltitudeValue_encode_xer; +jer_type_encoder_f AltitudeValue_encode_jer; +oer_type_decoder_f AltitudeValue_decode_oer; +oer_type_encoder_f AltitudeValue_encode_oer; +per_type_decoder_f AltitudeValue_decode_uper; +per_type_encoder_f AltitudeValue_encode_uper; +per_type_decoder_f AltitudeValue_decode_aper; +per_type_encoder_f AltitudeValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AltitudeValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngleConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngleConfidence.h new file mode 100644 index 000000000..6e50a8477 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngleConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AngleConfidence_H_ +#define _AngleConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AngleConfidence { + AngleConfidence_outOfRange = 126, + AngleConfidence_unavailable = 127 +} e_AngleConfidence; + +/* AngleConfidence */ +typedef long AngleConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AngleConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AngleConfidence; +asn_struct_free_f AngleConfidence_free; +asn_struct_print_f AngleConfidence_print; +asn_constr_check_f AngleConfidence_constraint; +ber_type_decoder_f AngleConfidence_decode_ber; +der_type_encoder_f AngleConfidence_encode_der; +xer_type_decoder_f AngleConfidence_decode_xer; +xer_type_encoder_f AngleConfidence_encode_xer; +jer_type_encoder_f AngleConfidence_encode_jer; +oer_type_decoder_f AngleConfidence_decode_oer; +oer_type_encoder_f AngleConfidence_encode_oer; +per_type_decoder_f AngleConfidence_decode_uper; +per_type_encoder_f AngleConfidence_encode_uper; +per_type_decoder_f AngleConfidence_decode_aper; +per_type_encoder_f AngleConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AngleConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularAccelerationConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularAccelerationConfidence.h new file mode 100644 index 000000000..39699ba10 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularAccelerationConfidence.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AngularAccelerationConfidence_H_ +#define _AngularAccelerationConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AngularAccelerationConfidence { + AngularAccelerationConfidence_degSecSquared_01 = 0, + AngularAccelerationConfidence_degSecSquared_02 = 1, + AngularAccelerationConfidence_degSecSquared_05 = 2, + AngularAccelerationConfidence_degSecSquared_10 = 3, + AngularAccelerationConfidence_degSecSquared_20 = 4, + AngularAccelerationConfidence_degSecSquared_50 = 5, + AngularAccelerationConfidence_outOfRange = 6, + AngularAccelerationConfidence_unavailable = 7 +} e_AngularAccelerationConfidence; + +/* AngularAccelerationConfidence */ +typedef long AngularAccelerationConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AngularAccelerationConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AngularAccelerationConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_AngularAccelerationConfidence_specs_1; +asn_struct_free_f AngularAccelerationConfidence_free; +asn_struct_print_f AngularAccelerationConfidence_print; +asn_constr_check_f AngularAccelerationConfidence_constraint; +ber_type_decoder_f AngularAccelerationConfidence_decode_ber; +der_type_encoder_f AngularAccelerationConfidence_encode_der; +xer_type_decoder_f AngularAccelerationConfidence_decode_xer; +xer_type_encoder_f AngularAccelerationConfidence_encode_xer; +jer_type_encoder_f AngularAccelerationConfidence_encode_jer; +oer_type_decoder_f AngularAccelerationConfidence_decode_oer; +oer_type_encoder_f AngularAccelerationConfidence_encode_oer; +per_type_decoder_f AngularAccelerationConfidence_decode_uper; +per_type_encoder_f AngularAccelerationConfidence_encode_uper; +per_type_decoder_f AngularAccelerationConfidence_decode_aper; +per_type_encoder_f AngularAccelerationConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AngularAccelerationConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularSpeedConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularSpeedConfidence.h new file mode 100644 index 000000000..a477f0d78 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AngularSpeedConfidence.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AngularSpeedConfidence_H_ +#define _AngularSpeedConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AngularSpeedConfidence { + AngularSpeedConfidence_degSec_01 = 0, + AngularSpeedConfidence_degSec_02 = 1, + AngularSpeedConfidence_degSec_05 = 2, + AngularSpeedConfidence_degSec_10 = 3, + AngularSpeedConfidence_degSec_20 = 4, + AngularSpeedConfidence_degSec_50 = 5, + AngularSpeedConfidence_outOfRange = 6, + AngularSpeedConfidence_unavailable = 7 +} e_AngularSpeedConfidence; + +/* AngularSpeedConfidence */ +typedef long AngularSpeedConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AngularSpeedConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AngularSpeedConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_AngularSpeedConfidence_specs_1; +asn_struct_free_f AngularSpeedConfidence_free; +asn_struct_print_f AngularSpeedConfidence_print; +asn_constr_check_f AngularSpeedConfidence_constraint; +ber_type_decoder_f AngularSpeedConfidence_decode_ber; +der_type_encoder_f AngularSpeedConfidence_encode_der; +xer_type_decoder_f AngularSpeedConfidence_decode_xer; +xer_type_encoder_f AngularSpeedConfidence_encode_xer; +jer_type_encoder_f AngularSpeedConfidence_encode_jer; +oer_type_decoder_f AngularSpeedConfidence_decode_oer; +oer_type_encoder_f AngularSpeedConfidence_encode_oer; +per_type_decoder_f AngularSpeedConfidence_decode_uper; +per_type_encoder_f AngularSpeedConfidence_encode_uper; +per_type_decoder_f AngularSpeedConfidence_decode_aper; +per_type_encoder_f AngularSpeedConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AngularSpeedConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AxlesCount.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AxlesCount.h new file mode 100644 index 000000000..a0b2dffb4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/AxlesCount.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _AxlesCount_H_ +#define _AxlesCount_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AxlesCount { + AxlesCount_outOfRange = 1001, + AxlesCount_unavailable = 1002 +} e_AxlesCount; + +/* AxlesCount */ +typedef long AxlesCount_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AxlesCount; +asn_struct_free_f AxlesCount_free; +asn_struct_print_f AxlesCount_print; +asn_constr_check_f AxlesCount_constraint; +ber_type_decoder_f AxlesCount_decode_ber; +der_type_encoder_f AxlesCount_encode_der; +xer_type_decoder_f AxlesCount_decode_xer; +xer_type_encoder_f AxlesCount_encode_xer; +jer_type_encoder_f AxlesCount_encode_jer; +oer_type_decoder_f AxlesCount_decode_oer; +oer_type_encoder_f AxlesCount_encode_oer; +per_type_decoder_f AxlesCount_decode_uper; +per_type_encoder_f AxlesCount_encode_uper; +per_type_decoder_f AxlesCount_decode_aper; +per_type_encoder_f AxlesCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AxlesCount_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BIT_STRING.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BIT_STRING.h new file mode 100644 index 000000000..38950ff63 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BIT_STRING.h @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +#define BIT_STRING_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BIT_STRING_compare; + +asn_constr_check_f BIT_STRING_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +xer_type_encoder_f BIT_STRING_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BIT_STRING_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BIT_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +const BIT_STRING_t *BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp); + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BOOLEAN.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BOOLEAN.h new file mode 100644 index 000000000..6b521163e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BOOLEAN.h @@ -0,0 +1,70 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef unsigned BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f BOOLEAN_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f BOOLEAN_compare; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f BOOLEAN_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f BOOLEAN_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BarometricPressure.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BarometricPressure.h new file mode 100644 index 000000000..086d78a74 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BarometricPressure.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _BarometricPressure_H_ +#define _BarometricPressure_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BarometricPressure { + BarometricPressure_outOfRangelower = 2999, + BarometricPressure_outOfRangeUpper = 12001, + BarometricPressure_unavailable = 12002 +} e_BarometricPressure; + +/* BarometricPressure */ +typedef long BarometricPressure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BarometricPressure; +asn_struct_free_f BarometricPressure_free; +asn_struct_print_f BarometricPressure_print; +asn_constr_check_f BarometricPressure_constraint; +ber_type_decoder_f BarometricPressure_decode_ber; +der_type_encoder_f BarometricPressure_encode_der; +xer_type_decoder_f BarometricPressure_decode_xer; +xer_type_encoder_f BarometricPressure_encode_xer; +jer_type_encoder_f BarometricPressure_encode_jer; +oer_type_decoder_f BarometricPressure_decode_oer; +oer_type_encoder_f BarometricPressure_encode_oer; +per_type_decoder_f BarometricPressure_decode_uper; +per_type_encoder_f BarometricPressure_encode_uper; +per_type_decoder_f BarometricPressure_decode_aper; +per_type_encoder_f BarometricPressure_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BarometricPressure_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BasicContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BasicContainer.h new file mode 100644 index 000000000..03fa39659 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BasicContainer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/TrafficParticipantType.h" +#include "etsi_its_cpm_coding/ReferencePositionWithConfidence.h" +#include +#ifndef _BasicContainer_H_ +#define _BasicContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* BasicContainer */ +typedef struct BasicContainer { + TrafficParticipantType_t stationType; + ReferencePositionWithConfidence_t referencePosition; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BasicContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BasicContainer; + +#ifdef __cplusplus +} +#endif + +#endif /* _BasicContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BogiesCount.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BogiesCount.h new file mode 100644 index 000000000..d658780ed --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/BogiesCount.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _BogiesCount_H_ +#define _BogiesCount_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BogiesCount { + BogiesCount_outOfRange = 100, + BogiesCount_unavailable = 101 +} e_BogiesCount; + +/* BogiesCount */ +typedef long BogiesCount_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BogiesCount; +asn_struct_free_f BogiesCount_free; +asn_struct_print_f BogiesCount_print; +asn_constr_check_f BogiesCount_constraint; +ber_type_decoder_f BogiesCount_decode_ber; +der_type_encoder_f BogiesCount_encode_der; +xer_type_decoder_f BogiesCount_decode_xer; +xer_type_encoder_f BogiesCount_encode_xer; +jer_type_encoder_f BogiesCount_encode_jer; +oer_type_decoder_f BogiesCount_decode_oer; +oer_type_encoder_f BogiesCount_encode_oer; +per_type_decoder_f BogiesCount_decode_uper; +per_type_encoder_f BogiesCount_encode_uper; +per_type_decoder_f BogiesCount_decode_aper; +per_type_encoder_f BogiesCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BogiesCount_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber1B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber1B.h new file mode 100644 index 000000000..7ce834829 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber1B.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CardinalNumber1B_H_ +#define _CardinalNumber1B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CardinalNumber1B */ +typedef long CardinalNumber1B_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CardinalNumber1B_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CardinalNumber1B; +asn_struct_free_f CardinalNumber1B_free; +asn_struct_print_f CardinalNumber1B_print; +asn_constr_check_f CardinalNumber1B_constraint; +ber_type_decoder_f CardinalNumber1B_decode_ber; +der_type_encoder_f CardinalNumber1B_encode_der; +xer_type_decoder_f CardinalNumber1B_decode_xer; +xer_type_encoder_f CardinalNumber1B_encode_xer; +jer_type_encoder_f CardinalNumber1B_encode_jer; +oer_type_decoder_f CardinalNumber1B_decode_oer; +oer_type_encoder_f CardinalNumber1B_encode_oer; +per_type_decoder_f CardinalNumber1B_decode_uper; +per_type_encoder_f CardinalNumber1B_encode_uper; +per_type_decoder_f CardinalNumber1B_decode_aper; +per_type_encoder_f CardinalNumber1B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CardinalNumber1B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber3b.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber3b.h new file mode 100644 index 000000000..214f9b198 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CardinalNumber3b.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CardinalNumber3b_H_ +#define _CardinalNumber3b_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CardinalNumber3b */ +typedef long CardinalNumber3b_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CardinalNumber3b_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CardinalNumber3b; +asn_struct_free_f CardinalNumber3b_free; +asn_struct_print_f CardinalNumber3b_print; +asn_constr_check_f CardinalNumber3b_constraint; +ber_type_decoder_f CardinalNumber3b_decode_ber; +der_type_encoder_f CardinalNumber3b_encode_der; +xer_type_decoder_f CardinalNumber3b_decode_xer; +xer_type_encoder_f CardinalNumber3b_encode_xer; +jer_type_encoder_f CardinalNumber3b_encode_jer; +oer_type_decoder_f CardinalNumber3b_decode_oer; +oer_type_encoder_f CardinalNumber3b_encode_oer; +per_type_decoder_f CardinalNumber3b_decode_uper; +per_type_encoder_f CardinalNumber3b_encode_uper; +per_type_decoder_f CardinalNumber3b_decode_aper; +per_type_encoder_f CardinalNumber3b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CardinalNumber3b_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngle.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngle.h new file mode 100644 index 000000000..abfdae542 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngle.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianAngleValue.h" +#include "etsi_its_cpm_coding/AngleConfidence.h" +#include +#ifndef _CartesianAngle_H_ +#define _CartesianAngle_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CartesianAngle */ +typedef struct CartesianAngle { + CartesianAngleValue_t value; + AngleConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianAngle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngle; +extern asn_SEQUENCE_specifics_t asn_SPC_CartesianAngle_specs_1; +extern asn_TYPE_member_t asn_MBR_CartesianAngle_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngle_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngleValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngleValue.h new file mode 100644 index 000000000..f3627f86a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngleValue.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianAngleValue_H_ +#define _CartesianAngleValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianAngleValue { + CartesianAngleValue_valueNotUsed = 3600, + CartesianAngleValue_unavailable = 3601 +} e_CartesianAngleValue; + +/* CartesianAngleValue */ +typedef long CartesianAngleValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianAngleValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngleValue; +asn_struct_free_f CartesianAngleValue_free; +asn_struct_print_f CartesianAngleValue_print; +asn_constr_check_f CartesianAngleValue_constraint; +ber_type_decoder_f CartesianAngleValue_decode_ber; +der_type_encoder_f CartesianAngleValue_encode_der; +xer_type_decoder_f CartesianAngleValue_decode_xer; +xer_type_encoder_f CartesianAngleValue_encode_xer; +jer_type_encoder_f CartesianAngleValue_encode_jer; +oer_type_decoder_f CartesianAngleValue_decode_oer; +oer_type_encoder_f CartesianAngleValue_encode_oer; +per_type_decoder_f CartesianAngleValue_decode_uper; +per_type_encoder_f CartesianAngleValue_encode_uper; +per_type_decoder_f CartesianAngleValue_decode_aper; +per_type_encoder_f CartesianAngleValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngleValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponent.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponent.h new file mode 100644 index 000000000..db560aaf1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponent.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h" +#include "etsi_its_cpm_coding/AngularAccelerationConfidence.h" +#include +#ifndef _CartesianAngularAccelerationComponent_H_ +#define _CartesianAngularAccelerationComponent_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CartesianAngularAccelerationComponent */ +typedef struct CartesianAngularAccelerationComponent { + CartesianAngularAccelerationComponentValue_t value; + AngularAccelerationConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianAngularAccelerationComponent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngularAccelerationComponent; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngularAccelerationComponent_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h new file mode 100644 index 000000000..537a3bbdb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianAngularAccelerationComponentValue_H_ +#define _CartesianAngularAccelerationComponentValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianAngularAccelerationComponentValue { + CartesianAngularAccelerationComponentValue_negativeOutOfRange = -255, + CartesianAngularAccelerationComponentValue_positiveOutOfRange = 255, + CartesianAngularAccelerationComponentValue_unavailable = 256 +} e_CartesianAngularAccelerationComponentValue; + +/* CartesianAngularAccelerationComponentValue */ +typedef long CartesianAngularAccelerationComponentValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianAngularAccelerationComponentValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngularAccelerationComponentValue; +asn_struct_free_f CartesianAngularAccelerationComponentValue_free; +asn_struct_print_f CartesianAngularAccelerationComponentValue_print; +asn_constr_check_f CartesianAngularAccelerationComponentValue_constraint; +ber_type_decoder_f CartesianAngularAccelerationComponentValue_decode_ber; +der_type_encoder_f CartesianAngularAccelerationComponentValue_encode_der; +xer_type_decoder_f CartesianAngularAccelerationComponentValue_decode_xer; +xer_type_encoder_f CartesianAngularAccelerationComponentValue_encode_xer; +jer_type_encoder_f CartesianAngularAccelerationComponentValue_encode_jer; +oer_type_decoder_f CartesianAngularAccelerationComponentValue_decode_oer; +oer_type_encoder_f CartesianAngularAccelerationComponentValue_encode_oer; +per_type_decoder_f CartesianAngularAccelerationComponentValue_decode_uper; +per_type_encoder_f CartesianAngularAccelerationComponentValue_encode_uper; +per_type_decoder_f CartesianAngularAccelerationComponentValue_decode_aper; +per_type_encoder_f CartesianAngularAccelerationComponentValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngularAccelerationComponentValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponent.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponent.h new file mode 100644 index 000000000..de824fbba --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponent.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h" +#include "etsi_its_cpm_coding/AngularSpeedConfidence.h" +#include +#ifndef _CartesianAngularVelocityComponent_H_ +#define _CartesianAngularVelocityComponent_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CartesianAngularVelocityComponent */ +typedef struct CartesianAngularVelocityComponent { + CartesianAngularVelocityComponentValue_t value; + AngularSpeedConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianAngularVelocityComponent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngularVelocityComponent; +extern asn_SEQUENCE_specifics_t asn_SPC_CartesianAngularVelocityComponent_specs_1; +extern asn_TYPE_member_t asn_MBR_CartesianAngularVelocityComponent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngularVelocityComponent_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h new file mode 100644 index 000000000..8d4f26f2d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianAngularVelocityComponentValue_H_ +#define _CartesianAngularVelocityComponentValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianAngularVelocityComponentValue { + CartesianAngularVelocityComponentValue_negativeOutofRange = -255, + CartesianAngularVelocityComponentValue_positiveOutOfRange = 255, + CartesianAngularVelocityComponentValue_unavailable = 256 +} e_CartesianAngularVelocityComponentValue; + +/* CartesianAngularVelocityComponentValue */ +typedef long CartesianAngularVelocityComponentValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianAngularVelocityComponentValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianAngularVelocityComponentValue; +asn_struct_free_f CartesianAngularVelocityComponentValue_free; +asn_struct_print_f CartesianAngularVelocityComponentValue_print; +asn_constr_check_f CartesianAngularVelocityComponentValue_constraint; +ber_type_decoder_f CartesianAngularVelocityComponentValue_decode_ber; +der_type_encoder_f CartesianAngularVelocityComponentValue_encode_der; +xer_type_decoder_f CartesianAngularVelocityComponentValue_decode_xer; +xer_type_encoder_f CartesianAngularVelocityComponentValue_encode_xer; +jer_type_encoder_f CartesianAngularVelocityComponentValue_encode_jer; +oer_type_decoder_f CartesianAngularVelocityComponentValue_decode_oer; +oer_type_encoder_f CartesianAngularVelocityComponentValue_encode_oer; +per_type_decoder_f CartesianAngularVelocityComponentValue_decode_uper; +per_type_encoder_f CartesianAngularVelocityComponentValue_encode_uper; +per_type_decoder_f CartesianAngularVelocityComponentValue_decode_aper; +per_type_encoder_f CartesianAngularVelocityComponentValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianAngularVelocityComponentValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinate.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinate.h new file mode 100644 index 000000000..29be49d91 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinate.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianCoordinate_H_ +#define _CartesianCoordinate_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianCoordinate { + CartesianCoordinate_negativeOutOfRange = -32768, + CartesianCoordinate_positiveOutOfRange = 32767 +} e_CartesianCoordinate; + +/* CartesianCoordinate */ +typedef long CartesianCoordinate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianCoordinate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianCoordinate; +asn_struct_free_f CartesianCoordinate_free; +asn_struct_print_f CartesianCoordinate_print; +asn_constr_check_f CartesianCoordinate_constraint; +ber_type_decoder_f CartesianCoordinate_decode_ber; +der_type_encoder_f CartesianCoordinate_encode_der; +xer_type_decoder_f CartesianCoordinate_decode_xer; +xer_type_encoder_f CartesianCoordinate_encode_xer; +jer_type_encoder_f CartesianCoordinate_encode_jer; +oer_type_decoder_f CartesianCoordinate_decode_oer; +oer_type_encoder_f CartesianCoordinate_encode_oer; +per_type_decoder_f CartesianCoordinate_decode_uper; +per_type_encoder_f CartesianCoordinate_encode_uper; +per_type_decoder_f CartesianCoordinate_decode_aper; +per_type_encoder_f CartesianCoordinate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianCoordinate_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateLarge.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateLarge.h new file mode 100644 index 000000000..8fe4a6031 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateLarge.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianCoordinateLarge_H_ +#define _CartesianCoordinateLarge_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianCoordinateLarge { + CartesianCoordinateLarge_negativeOutOfRange = -131072, + CartesianCoordinateLarge_positiveOutOfRange = 131071 +} e_CartesianCoordinateLarge; + +/* CartesianCoordinateLarge */ +typedef long CartesianCoordinateLarge_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianCoordinateLarge_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateLarge; +asn_struct_free_f CartesianCoordinateLarge_free; +asn_struct_print_f CartesianCoordinateLarge_print; +asn_constr_check_f CartesianCoordinateLarge_constraint; +ber_type_decoder_f CartesianCoordinateLarge_decode_ber; +der_type_encoder_f CartesianCoordinateLarge_encode_der; +xer_type_decoder_f CartesianCoordinateLarge_decode_xer; +xer_type_encoder_f CartesianCoordinateLarge_encode_xer; +jer_type_encoder_f CartesianCoordinateLarge_encode_jer; +oer_type_decoder_f CartesianCoordinateLarge_decode_oer; +oer_type_encoder_f CartesianCoordinateLarge_encode_oer; +per_type_decoder_f CartesianCoordinateLarge_decode_uper; +per_type_encoder_f CartesianCoordinateLarge_encode_uper; +per_type_decoder_f CartesianCoordinateLarge_decode_aper; +per_type_encoder_f CartesianCoordinateLarge_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianCoordinateLarge_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateSmall.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateSmall.h new file mode 100644 index 000000000..1e0fd2f9f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateSmall.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CartesianCoordinateSmall_H_ +#define _CartesianCoordinateSmall_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CartesianCoordinateSmall { + CartesianCoordinateSmall_negativeOutOfRange = -3094, + CartesianCoordinateSmall_positiveOutOfRange = 1001 +} e_CartesianCoordinateSmall; + +/* CartesianCoordinateSmall */ +typedef long CartesianCoordinateSmall_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CartesianCoordinateSmall_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateSmall; +asn_struct_free_f CartesianCoordinateSmall_free; +asn_struct_print_f CartesianCoordinateSmall_print; +asn_constr_check_f CartesianCoordinateSmall_constraint; +ber_type_decoder_f CartesianCoordinateSmall_decode_ber; +der_type_encoder_f CartesianCoordinateSmall_encode_der; +xer_type_decoder_f CartesianCoordinateSmall_decode_xer; +xer_type_encoder_f CartesianCoordinateSmall_encode_xer; +jer_type_encoder_f CartesianCoordinateSmall_encode_jer; +oer_type_decoder_f CartesianCoordinateSmall_decode_oer; +oer_type_encoder_f CartesianCoordinateSmall_encode_oer; +per_type_decoder_f CartesianCoordinateSmall_decode_uper; +per_type_encoder_f CartesianCoordinateSmall_encode_uper; +per_type_decoder_f CartesianCoordinateSmall_decode_aper; +per_type_encoder_f CartesianCoordinateSmall_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianCoordinateSmall_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h new file mode 100644 index 000000000..cac74b0ec --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianCoordinateLarge.h" +#include "etsi_its_cpm_coding/CoordinateConfidence.h" +#include +#ifndef _CartesianCoordinateWithConfidence_H_ +#define _CartesianCoordinateWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CartesianCoordinateWithConfidence */ +typedef struct CartesianCoordinateWithConfidence { + CartesianCoordinateLarge_t value; + CoordinateConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianCoordinateWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateWithConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_CartesianCoordinateWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_CartesianCoordinateWithConfidence_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianCoordinateWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3d.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3d.h new file mode 100644 index 000000000..f27c66928 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3d.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianCoordinate.h" +#include +#ifndef _CartesianPosition3d_H_ +#define _CartesianPosition3d_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CartesianPosition3d */ +typedef struct CartesianPosition3d { + CartesianCoordinate_t xCoordinate; + CartesianCoordinate_t yCoordinate; + CartesianCoordinate_t *zCoordinate; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianPosition3d_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianPosition3d; +extern asn_SEQUENCE_specifics_t asn_SPC_CartesianPosition3d_specs_1; +extern asn_TYPE_member_t asn_MBR_CartesianPosition3d_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CartesianPosition3d_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h new file mode 100644 index 000000000..71d48f606 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h" +#include +#ifndef _CartesianPosition3dWithConfidence_H_ +#define _CartesianPosition3dWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianCoordinateWithConfidence; + +/* CartesianPosition3dWithConfidence */ +typedef struct CartesianPosition3dWithConfidence { + CartesianCoordinateWithConfidence_t xCoordinate; + CartesianCoordinateWithConfidence_t yCoordinate; + struct CartesianCoordinateWithConfidence *zCoordinate; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CartesianPosition3dWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CartesianPosition3dWithConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_CartesianPosition3dWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_CartesianPosition3dWithConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h" + +#endif /* _CartesianPosition3dWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCode.h new file mode 100644 index 000000000..1c9cc6c34 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCode.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CauseCodeType.h" +#include "etsi_its_cpm_coding/SubCauseCodeType.h" +#include +#ifndef _CauseCode_H_ +#define _CauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CauseCode */ +typedef struct CauseCode { + CauseCodeType_t causeCode; + SubCauseCodeType_t subCauseCode; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CauseCode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseCode; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeChoice.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeChoice.h new file mode 100644 index 000000000..eb6c80e41 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeChoice.h @@ -0,0 +1,331 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SubCauseCodeType.h" +#include "etsi_its_cpm_coding/TrafficConditionSubCauseCode.h" +#include "etsi_its_cpm_coding/AccidentSubCauseCode.h" +#include "etsi_its_cpm_coding/RoadworksSubCauseCode.h" +#include "etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h" +#include "etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h" +#include "etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h" +#include "etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h" +#include "etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h" +#include "etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h" +#include "etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h" +#include "etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h" +#include "etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h" +#include "etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h" +#include "etsi_its_cpm_coding/SlowVehicleSubCauseCode.h" +#include "etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h" +#include "etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h" +#include "etsi_its_cpm_coding/PostCrashSubCauseCode.h" +#include "etsi_its_cpm_coding/HumanProblemSubCauseCode.h" +#include "etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h" +#include "etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h" +#include "etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h" +#include "etsi_its_cpm_coding/CollisionRiskSubCauseCode.h" +#include "etsi_its_cpm_coding/SignalViolationSubCauseCode.h" +#include "etsi_its_cpm_coding/DangerousSituationSubCauseCode.h" +#include "etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h" +#include +#ifndef _CauseCodeChoice_H_ +#define _CauseCodeChoice_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseCodeChoice_PR { + CauseCodeChoice_PR_NOTHING, /* No components present */ + CauseCodeChoice_PR_reserved0, + CauseCodeChoice_PR_trafficCondition1, + CauseCodeChoice_PR_accident2, + CauseCodeChoice_PR_roadworks3, + CauseCodeChoice_PR_reserved4, + CauseCodeChoice_PR_impassability5, + CauseCodeChoice_PR_adverseWeatherCondition_Adhesion6, + CauseCodeChoice_PR_aquaplaning7, + CauseCodeChoice_PR_reserved8, + CauseCodeChoice_PR_hazardousLocation_SurfaceCondition9, + CauseCodeChoice_PR_hazardousLocation_ObstacleOnTheRoad10, + CauseCodeChoice_PR_hazardousLocation_AnimalOnTheRoad11, + CauseCodeChoice_PR_humanPresenceOnTheRoad12, + CauseCodeChoice_PR_reserved13, + CauseCodeChoice_PR_wrongWayDriving14, + CauseCodeChoice_PR_rescueAndRecoveryWorkInProgress15, + CauseCodeChoice_PR_reserved16, + CauseCodeChoice_PR_adverseWeatherCondition_ExtremeWeatherCondition17, + CauseCodeChoice_PR_adverseWeatherCondition_Visibility18, + CauseCodeChoice_PR_adverseWeatherCondition_Precipitation19, + CauseCodeChoice_PR_violence20, + CauseCodeChoice_PR_reserved21, + CauseCodeChoice_PR_reserved22, + CauseCodeChoice_PR_reserved23, + CauseCodeChoice_PR_reserved24, + CauseCodeChoice_PR_reserved25, + CauseCodeChoice_PR_slowVehicle26, + CauseCodeChoice_PR_dangerousEndOfQueue27, + CauseCodeChoice_PR_reserved28, + CauseCodeChoice_PR_reserved29, + CauseCodeChoice_PR_reserved30, + CauseCodeChoice_PR_reserved31, + CauseCodeChoice_PR_reserved32, + CauseCodeChoice_PR_reserved33, + CauseCodeChoice_PR_reserved34, + CauseCodeChoice_PR_reserved35, + CauseCodeChoice_PR_reserved36, + CauseCodeChoice_PR_reserved37, + CauseCodeChoice_PR_reserved38, + CauseCodeChoice_PR_reserved39, + CauseCodeChoice_PR_reserved40, + CauseCodeChoice_PR_reserved41, + CauseCodeChoice_PR_reserved42, + CauseCodeChoice_PR_reserved43, + CauseCodeChoice_PR_reserved44, + CauseCodeChoice_PR_reserved45, + CauseCodeChoice_PR_reserved46, + CauseCodeChoice_PR_reserved47, + CauseCodeChoice_PR_reserved48, + CauseCodeChoice_PR_reserved49, + CauseCodeChoice_PR_reserved50, + CauseCodeChoice_PR_reserved51, + CauseCodeChoice_PR_reserved52, + CauseCodeChoice_PR_reserved53, + CauseCodeChoice_PR_reserved54, + CauseCodeChoice_PR_reserved55, + CauseCodeChoice_PR_reserved56, + CauseCodeChoice_PR_reserved57, + CauseCodeChoice_PR_reserved58, + CauseCodeChoice_PR_reserved59, + CauseCodeChoice_PR_reserved60, + CauseCodeChoice_PR_reserved61, + CauseCodeChoice_PR_reserved62, + CauseCodeChoice_PR_reserved63, + CauseCodeChoice_PR_reserved64, + CauseCodeChoice_PR_reserved65, + CauseCodeChoice_PR_reserved66, + CauseCodeChoice_PR_reserved67, + CauseCodeChoice_PR_reserved68, + CauseCodeChoice_PR_reserved69, + CauseCodeChoice_PR_reserved70, + CauseCodeChoice_PR_reserved71, + CauseCodeChoice_PR_reserved72, + CauseCodeChoice_PR_reserved73, + CauseCodeChoice_PR_reserved74, + CauseCodeChoice_PR_reserved75, + CauseCodeChoice_PR_reserved76, + CauseCodeChoice_PR_reserved77, + CauseCodeChoice_PR_reserved78, + CauseCodeChoice_PR_reserved79, + CauseCodeChoice_PR_reserved80, + CauseCodeChoice_PR_reserved81, + CauseCodeChoice_PR_reserved82, + CauseCodeChoice_PR_reserved83, + CauseCodeChoice_PR_reserved84, + CauseCodeChoice_PR_reserved85, + CauseCodeChoice_PR_reserved86, + CauseCodeChoice_PR_reserved87, + CauseCodeChoice_PR_reserved88, + CauseCodeChoice_PR_reserved89, + CauseCodeChoice_PR_reserved90, + CauseCodeChoice_PR_vehicleBreakdown91, + CauseCodeChoice_PR_postCrash92, + CauseCodeChoice_PR_humanProblem93, + CauseCodeChoice_PR_stationaryVehicle94, + CauseCodeChoice_PR_emergencyVehicleApproaching95, + CauseCodeChoice_PR_hazardousLocation_DangerousCurve96, + CauseCodeChoice_PR_collisionRisk97, + CauseCodeChoice_PR_signalViolation98, + CauseCodeChoice_PR_dangerousSituation99, + CauseCodeChoice_PR_railwayLevelCrossing100, + CauseCodeChoice_PR_reserved101, + CauseCodeChoice_PR_reserved102, + CauseCodeChoice_PR_reserved103, + CauseCodeChoice_PR_reserved104, + CauseCodeChoice_PR_reserved105, + CauseCodeChoice_PR_reserved106, + CauseCodeChoice_PR_reserved107, + CauseCodeChoice_PR_reserved108, + CauseCodeChoice_PR_reserved109, + CauseCodeChoice_PR_reserved110, + CauseCodeChoice_PR_reserved111, + CauseCodeChoice_PR_reserved112, + CauseCodeChoice_PR_reserved113, + CauseCodeChoice_PR_reserved114, + CauseCodeChoice_PR_reserved115, + CauseCodeChoice_PR_reserved116, + CauseCodeChoice_PR_reserved117, + CauseCodeChoice_PR_reserved118, + CauseCodeChoice_PR_reserved119, + CauseCodeChoice_PR_reserved120, + CauseCodeChoice_PR_reserved121, + CauseCodeChoice_PR_reserved122, + CauseCodeChoice_PR_reserved123, + CauseCodeChoice_PR_reserved124, + CauseCodeChoice_PR_reserved125, + CauseCodeChoice_PR_reserved126, + CauseCodeChoice_PR_reserved127, + CauseCodeChoice_PR_reserved128 +} CauseCodeChoice_PR; + +/* CauseCodeChoice */ +typedef struct CauseCodeChoice { + CauseCodeChoice_PR present; + union CauseCodeChoice_u { + SubCauseCodeType_t reserved0; + TrafficConditionSubCauseCode_t trafficCondition1; + AccidentSubCauseCode_t accident2; + RoadworksSubCauseCode_t roadworks3; + SubCauseCodeType_t reserved4; + SubCauseCodeType_t impassability5; + AdverseWeatherCondition_AdhesionSubCauseCode_t adverseWeatherCondition_Adhesion6; + SubCauseCodeType_t aquaplaning7; + SubCauseCodeType_t reserved8; + HazardousLocation_SurfaceConditionSubCauseCode_t hazardousLocation_SurfaceCondition9; + HazardousLocation_ObstacleOnTheRoadSubCauseCode_t hazardousLocation_ObstacleOnTheRoad10; + HazardousLocation_AnimalOnTheRoadSubCauseCode_t hazardousLocation_AnimalOnTheRoad11; + HumanPresenceOnTheRoadSubCauseCode_t humanPresenceOnTheRoad12; + SubCauseCodeType_t reserved13; + WrongWayDrivingSubCauseCode_t wrongWayDriving14; + RescueAndRecoveryWorkInProgressSubCauseCode_t rescueAndRecoveryWorkInProgress15; + SubCauseCodeType_t reserved16; + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_t adverseWeatherCondition_ExtremeWeatherCondition17; + AdverseWeatherCondition_VisibilitySubCauseCode_t adverseWeatherCondition_Visibility18; + AdverseWeatherCondition_PrecipitationSubCauseCode_t adverseWeatherCondition_Precipitation19; + SubCauseCodeType_t violence20; + SubCauseCodeType_t reserved21; + SubCauseCodeType_t reserved22; + SubCauseCodeType_t reserved23; + SubCauseCodeType_t reserved24; + SubCauseCodeType_t reserved25; + SlowVehicleSubCauseCode_t slowVehicle26; + DangerousEndOfQueueSubCauseCode_t dangerousEndOfQueue27; + SubCauseCodeType_t reserved28; + SubCauseCodeType_t reserved29; + SubCauseCodeType_t reserved30; + SubCauseCodeType_t reserved31; + SubCauseCodeType_t reserved32; + SubCauseCodeType_t reserved33; + SubCauseCodeType_t reserved34; + SubCauseCodeType_t reserved35; + SubCauseCodeType_t reserved36; + SubCauseCodeType_t reserved37; + SubCauseCodeType_t reserved38; + SubCauseCodeType_t reserved39; + SubCauseCodeType_t reserved40; + SubCauseCodeType_t reserved41; + SubCauseCodeType_t reserved42; + SubCauseCodeType_t reserved43; + SubCauseCodeType_t reserved44; + SubCauseCodeType_t reserved45; + SubCauseCodeType_t reserved46; + SubCauseCodeType_t reserved47; + SubCauseCodeType_t reserved48; + SubCauseCodeType_t reserved49; + SubCauseCodeType_t reserved50; + SubCauseCodeType_t reserved51; + SubCauseCodeType_t reserved52; + SubCauseCodeType_t reserved53; + SubCauseCodeType_t reserved54; + SubCauseCodeType_t reserved55; + SubCauseCodeType_t reserved56; + SubCauseCodeType_t reserved57; + SubCauseCodeType_t reserved58; + SubCauseCodeType_t reserved59; + SubCauseCodeType_t reserved60; + SubCauseCodeType_t reserved61; + SubCauseCodeType_t reserved62; + SubCauseCodeType_t reserved63; + SubCauseCodeType_t reserved64; + SubCauseCodeType_t reserved65; + SubCauseCodeType_t reserved66; + SubCauseCodeType_t reserved67; + SubCauseCodeType_t reserved68; + SubCauseCodeType_t reserved69; + SubCauseCodeType_t reserved70; + SubCauseCodeType_t reserved71; + SubCauseCodeType_t reserved72; + SubCauseCodeType_t reserved73; + SubCauseCodeType_t reserved74; + SubCauseCodeType_t reserved75; + SubCauseCodeType_t reserved76; + SubCauseCodeType_t reserved77; + SubCauseCodeType_t reserved78; + SubCauseCodeType_t reserved79; + SubCauseCodeType_t reserved80; + SubCauseCodeType_t reserved81; + SubCauseCodeType_t reserved82; + SubCauseCodeType_t reserved83; + SubCauseCodeType_t reserved84; + SubCauseCodeType_t reserved85; + SubCauseCodeType_t reserved86; + SubCauseCodeType_t reserved87; + SubCauseCodeType_t reserved88; + SubCauseCodeType_t reserved89; + SubCauseCodeType_t reserved90; + VehicleBreakdownSubCauseCode_t vehicleBreakdown91; + PostCrashSubCauseCode_t postCrash92; + HumanProblemSubCauseCode_t humanProblem93; + StationaryVehicleSubCauseCode_t stationaryVehicle94; + EmergencyVehicleApproachingSubCauseCode_t emergencyVehicleApproaching95; + HazardousLocation_DangerousCurveSubCauseCode_t hazardousLocation_DangerousCurve96; + CollisionRiskSubCauseCode_t collisionRisk97; + SignalViolationSubCauseCode_t signalViolation98; + DangerousSituationSubCauseCode_t dangerousSituation99; + RailwayLevelCrossingSubCauseCode_t railwayLevelCrossing100; + SubCauseCodeType_t reserved101; + SubCauseCodeType_t reserved102; + SubCauseCodeType_t reserved103; + SubCauseCodeType_t reserved104; + SubCauseCodeType_t reserved105; + SubCauseCodeType_t reserved106; + SubCauseCodeType_t reserved107; + SubCauseCodeType_t reserved108; + SubCauseCodeType_t reserved109; + SubCauseCodeType_t reserved110; + SubCauseCodeType_t reserved111; + SubCauseCodeType_t reserved112; + SubCauseCodeType_t reserved113; + SubCauseCodeType_t reserved114; + SubCauseCodeType_t reserved115; + SubCauseCodeType_t reserved116; + SubCauseCodeType_t reserved117; + SubCauseCodeType_t reserved118; + SubCauseCodeType_t reserved119; + SubCauseCodeType_t reserved120; + SubCauseCodeType_t reserved121; + SubCauseCodeType_t reserved122; + SubCauseCodeType_t reserved123; + SubCauseCodeType_t reserved124; + SubCauseCodeType_t reserved125; + SubCauseCodeType_t reserved126; + SubCauseCodeType_t reserved127; + SubCauseCodeType_t reserved128; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CauseCodeChoice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseCodeChoice; +extern asn_CHOICE_specifics_t asn_SPC_CauseCodeChoice_specs_1; +extern asn_TYPE_member_t asn_MBR_CauseCodeChoice_1[129]; +extern asn_per_constraints_t asn_PER_type_CauseCodeChoice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseCodeChoice_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeType.h new file mode 100644 index 000000000..e79360c5e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeType.h @@ -0,0 +1,79 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CauseCodeType_H_ +#define _CauseCodeType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseCodeType { + CauseCodeType_trafficCondition = 1, + CauseCodeType_accident = 2, + CauseCodeType_roadworks = 3, + CauseCodeType_impassability = 5, + CauseCodeType_adverseWeatherCondition_Adhesion = 6, + CauseCodeType_aquaplaning = 7, + CauseCodeType_hazardousLocation_SurfaceCondition = 9, + CauseCodeType_hazardousLocation_ObstacleOnTheRoad = 10, + CauseCodeType_hazardousLocation_AnimalOnTheRoad = 11, + CauseCodeType_humanPresenceOnTheRoad = 12, + CauseCodeType_wrongWayDriving = 14, + CauseCodeType_rescueAndRecoveryWorkInProgress = 15, + CauseCodeType_adverseWeatherCondition_ExtremeWeatherCondition = 17, + CauseCodeType_adverseWeatherCondition_Visibility = 18, + CauseCodeType_adverseWeatherCondition_Precipitation = 19, + CauseCodeType_violence = 20, + CauseCodeType_slowVehicle = 26, + CauseCodeType_dangerousEndOfQueue = 27, + CauseCodeType_vehicleBreakdown = 91, + CauseCodeType_postCrash = 92, + CauseCodeType_humanProblem = 93, + CauseCodeType_stationaryVehicle = 94, + CauseCodeType_emergencyVehicleApproaching = 95, + CauseCodeType_hazardousLocation_DangerousCurve = 96, + CauseCodeType_collisionRisk = 97, + CauseCodeType_signalViolation = 98, + CauseCodeType_dangerousSituation = 99, + CauseCodeType_railwayLevelCrossing = 100 +} e_CauseCodeType; + +/* CauseCodeType */ +typedef long CauseCodeType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseCodeType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseCodeType; +asn_struct_free_f CauseCodeType_free; +asn_struct_print_f CauseCodeType_print; +asn_constr_check_f CauseCodeType_constraint; +ber_type_decoder_f CauseCodeType_decode_ber; +der_type_encoder_f CauseCodeType_encode_der; +xer_type_decoder_f CauseCodeType_decode_xer; +xer_type_encoder_f CauseCodeType_encode_xer; +jer_type_encoder_f CauseCodeType_encode_jer; +oer_type_decoder_f CauseCodeType_decode_oer; +oer_type_encoder_f CauseCodeType_encode_oer; +per_type_decoder_f CauseCodeType_decode_uper; +per_type_encoder_f CauseCodeType_encode_uper; +per_type_decoder_f CauseCodeType_decode_aper; +per_type_encoder_f CauseCodeType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseCodeType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeV2.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeV2.h new file mode 100644 index 000000000..9a9032cdc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CauseCodeV2.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CauseCodeChoice.h" +#include +#ifndef _CauseCodeV2_H_ +#define _CauseCodeV2_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CauseCodeV2 */ +typedef struct CauseCodeV2 { + CauseCodeChoice_t ccAndScc; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CauseCodeV2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CauseCodeV2; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseCodeV2_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZone.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZone.h new file mode 100644 index 000000000..97c061ef0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZone.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Latitude.h" +#include "etsi_its_cpm_coding/Longitude.h" +#include "etsi_its_cpm_coding/ProtectedZoneId.h" +#include +#ifndef _CenDsrcTollingZone_H_ +#define _CenDsrcTollingZone_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CenDsrcTollingZone */ +typedef struct CenDsrcTollingZone { + Latitude_t protectedZoneLatitude; + Longitude_t protectedZoneLongitude; + ProtectedZoneId_t *cenDsrcTollingZoneId; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CenDsrcTollingZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CenDsrcTollingZone; + +#ifdef __cplusplus +} +#endif + +#endif /* _CenDsrcTollingZone_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZoneID.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZoneID.h new file mode 100644 index 000000000..41b119a2d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CenDsrcTollingZoneID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ProtectedZoneId.h" +#ifndef _CenDsrcTollingZoneID_H_ +#define _CenDsrcTollingZoneID_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CenDsrcTollingZoneID */ +typedef ProtectedZoneId_t CenDsrcTollingZoneID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CenDsrcTollingZoneID; +asn_struct_free_f CenDsrcTollingZoneID_free; +asn_struct_print_f CenDsrcTollingZoneID_print; +asn_constr_check_f CenDsrcTollingZoneID_constraint; +ber_type_decoder_f CenDsrcTollingZoneID_decode_ber; +der_type_encoder_f CenDsrcTollingZoneID_encode_der; +xer_type_decoder_f CenDsrcTollingZoneID_decode_xer; +xer_type_encoder_f CenDsrcTollingZoneID_encode_xer; +jer_type_encoder_f CenDsrcTollingZoneID_encode_jer; +oer_type_decoder_f CenDsrcTollingZoneID_decode_oer; +oer_type_encoder_f CenDsrcTollingZoneID_encode_oer; +per_type_decoder_f CenDsrcTollingZoneID_decode_uper; +per_type_encoder_f CenDsrcTollingZoneID_encode_uper; +per_type_decoder_f CenDsrcTollingZoneID_decode_aper; +per_type_encoder_f CenDsrcTollingZoneID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CenDsrcTollingZoneID_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CircularShape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CircularShape.h new file mode 100644 index 000000000..3f3279052 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CircularShape.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include +#ifndef _CircularShape_H_ +#define _CircularShape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* CircularShape */ +typedef struct CircularShape { + struct CartesianPosition3d *shapeReferencePoint; /* OPTIONAL */ + StandardLength12b_t radius; + StandardLength12b_t *height; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CircularShape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CircularShape; +extern asn_SEQUENCE_specifics_t asn_SPC_CircularShape_specs_1; +extern asn_TYPE_member_t asn_MBR_CircularShape_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _CircularShape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClosedLanes.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClosedLanes.h new file mode 100644 index 000000000..530887d6e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClosedLanes.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/HardShoulderStatus.h" +#include "etsi_its_cpm_coding/DrivingLaneStatus.h" +#include +#ifndef _ClosedLanes_H_ +#define _ClosedLanes_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ClosedLanes */ +typedef struct ClosedLanes { + HardShoulderStatus_t *innerhardShoulderStatus; /* OPTIONAL */ + HardShoulderStatus_t *outerhardShoulderStatus; /* OPTIONAL */ + DrivingLaneStatus_t *drivingLaneStatus; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ClosedLanes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ClosedLanes; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClosedLanes_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupInfo.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupInfo.h new file mode 100644 index 000000000..529de4a14 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupInfo.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ClusterBreakupReason.h" +#include "etsi_its_cpm_coding/DeltaTimeQuarterSecond.h" +#include +#ifndef _ClusterBreakupInfo_H_ +#define _ClusterBreakupInfo_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ClusterBreakupInfo */ +typedef struct ClusterBreakupInfo { + ClusterBreakupReason_t clusterBreakupReason; + DeltaTimeQuarterSecond_t breakupTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ClusterBreakupInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ClusterBreakupInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClusterBreakupInfo_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupReason.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupReason.h new file mode 100644 index 000000000..73e695a7b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterBreakupReason.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ClusterBreakupReason_H_ +#define _ClusterBreakupReason_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ClusterBreakupReason { + ClusterBreakupReason_notProvided = 0, + ClusterBreakupReason_clusteringPurposeCompleted = 1, + ClusterBreakupReason_leaderMovedOutOfClusterBoundingBox = 2, + ClusterBreakupReason_joiningAnotherCluster = 3, + ClusterBreakupReason_enteringLowRiskAreaBasedOnMaps = 4, + ClusterBreakupReason_receptionOfCpmContainingCluster = 5, + ClusterBreakupReason_max = 15 +} e_ClusterBreakupReason; + +/* ClusterBreakupReason */ +typedef long ClusterBreakupReason_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ClusterBreakupReason_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ClusterBreakupReason; +extern const asn_INTEGER_specifics_t asn_SPC_ClusterBreakupReason_specs_1; +asn_struct_free_f ClusterBreakupReason_free; +asn_struct_print_f ClusterBreakupReason_print; +asn_constr_check_f ClusterBreakupReason_constraint; +ber_type_decoder_f ClusterBreakupReason_decode_ber; +der_type_encoder_f ClusterBreakupReason_encode_der; +xer_type_decoder_f ClusterBreakupReason_decode_xer; +xer_type_encoder_f ClusterBreakupReason_encode_xer; +jer_type_encoder_f ClusterBreakupReason_encode_jer; +oer_type_decoder_f ClusterBreakupReason_decode_oer; +oer_type_encoder_f ClusterBreakupReason_encode_oer; +per_type_decoder_f ClusterBreakupReason_decode_uper; +per_type_encoder_f ClusterBreakupReason_encode_uper; +per_type_decoder_f ClusterBreakupReason_decode_aper; +per_type_encoder_f ClusterBreakupReason_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClusterBreakupReason_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterJoinInfo.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterJoinInfo.h new file mode 100644 index 000000000..d5702149d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterJoinInfo.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/DeltaTimeQuarterSecond.h" +#include +#ifndef _ClusterJoinInfo_H_ +#define _ClusterJoinInfo_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ClusterJoinInfo */ +typedef struct ClusterJoinInfo { + Identifier1B_t clusterId; + DeltaTimeQuarterSecond_t joinTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ClusterJoinInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ClusterJoinInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClusterJoinInfo_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveInfo.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveInfo.h new file mode 100644 index 000000000..5dc779a1c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveInfo.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/ClusterLeaveReason.h" +#include +#ifndef _ClusterLeaveInfo_H_ +#define _ClusterLeaveInfo_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ClusterLeaveInfo */ +typedef struct ClusterLeaveInfo { + Identifier1B_t clusterId; + ClusterLeaveReason_t clusterLeaveReason; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ClusterLeaveInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ClusterLeaveInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClusterLeaveInfo_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveReason.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveReason.h new file mode 100644 index 000000000..b9efed911 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ClusterLeaveReason.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ClusterLeaveReason_H_ +#define _ClusterLeaveReason_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ClusterLeaveReason { + ClusterLeaveReason_notProvided = 0, + ClusterLeaveReason_clusterLeaderLost = 1, + ClusterLeaveReason_clusterDisbandedByLeader = 2, + ClusterLeaveReason_outOfClusterBoundingBox = 3, + ClusterLeaveReason_outOfClusterSpeedRange = 4, + ClusterLeaveReason_joiningAnotherCluster = 5, + ClusterLeaveReason_cancelledJoin = 6, + ClusterLeaveReason_failedJoin = 7, + ClusterLeaveReason_safetyCondition = 8, + ClusterLeaveReason_max = 15 +} e_ClusterLeaveReason; + +/* ClusterLeaveReason */ +typedef long ClusterLeaveReason_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ClusterLeaveReason_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ClusterLeaveReason; +extern const asn_INTEGER_specifics_t asn_SPC_ClusterLeaveReason_specs_1; +asn_struct_free_f ClusterLeaveReason_free; +asn_struct_print_f ClusterLeaveReason_print; +asn_constr_check_f ClusterLeaveReason_constraint; +ber_type_decoder_f ClusterLeaveReason_decode_ber; +der_type_encoder_f ClusterLeaveReason_encode_der; +xer_type_decoder_f ClusterLeaveReason_decode_xer; +xer_type_encoder_f ClusterLeaveReason_encode_xer; +jer_type_encoder_f ClusterLeaveReason_encode_jer; +oer_type_decoder_f ClusterLeaveReason_decode_oer; +oer_type_encoder_f ClusterLeaveReason_encode_oer; +per_type_decoder_f ClusterLeaveReason_decode_uper; +per_type_encoder_f ClusterLeaveReason_encode_uper; +per_type_decoder_f ClusterLeaveReason_decode_aper; +per_type_encoder_f ClusterLeaveReason_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ClusterLeaveReason_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollectivePerceptionMessage.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollectivePerceptionMessage.h new file mode 100644 index 000000000..6d8d54ce5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollectivePerceptionMessage.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ItsPduHeader.h" +#include "etsi_its_cpm_coding/CpmPayload.h" +#include +#ifndef _CollectivePerceptionMessage_H_ +#define _CollectivePerceptionMessage_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CollectivePerceptionMessage */ +typedef struct CollectivePerceptionMessage { + ItsPduHeader_t header; + CpmPayload_t payload; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CollectivePerceptionMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CollectivePerceptionMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _CollectivePerceptionMessage_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollisionRiskSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollisionRiskSubCauseCode.h new file mode 100644 index 000000000..08e405cb8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CollisionRiskSubCauseCode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CollisionRiskSubCauseCode_H_ +#define _CollisionRiskSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CollisionRiskSubCauseCode { + CollisionRiskSubCauseCode_unavailable = 0, + CollisionRiskSubCauseCode_longitudinalCollisionRisk = 1, + CollisionRiskSubCauseCode_crossingCollisionRisk = 2, + CollisionRiskSubCauseCode_lateralCollisionRisk = 3, + CollisionRiskSubCauseCode_vulnerableRoadUser = 4 +} e_CollisionRiskSubCauseCode; + +/* CollisionRiskSubCauseCode */ +typedef long CollisionRiskSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CollisionRiskSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CollisionRiskSubCauseCode; +asn_struct_free_f CollisionRiskSubCauseCode_free; +asn_struct_print_f CollisionRiskSubCauseCode_print; +asn_constr_check_f CollisionRiskSubCauseCode_constraint; +ber_type_decoder_f CollisionRiskSubCauseCode_decode_ber; +der_type_encoder_f CollisionRiskSubCauseCode_encode_der; +xer_type_decoder_f CollisionRiskSubCauseCode_decode_xer; +xer_type_encoder_f CollisionRiskSubCauseCode_encode_xer; +jer_type_encoder_f CollisionRiskSubCauseCode_encode_jer; +oer_type_decoder_f CollisionRiskSubCauseCode_decode_oer; +oer_type_encoder_f CollisionRiskSubCauseCode_encode_oer; +per_type_decoder_f CollisionRiskSubCauseCode_decode_uper; +per_type_encoder_f CollisionRiskSubCauseCode_encode_uper; +per_type_decoder_f CollisionRiskSubCauseCode_decode_aper; +per_type_encoder_f CollisionRiskSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CollisionRiskSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConfidenceLevel.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConfidenceLevel.h new file mode 100644 index 000000000..56c5eb01b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConfidenceLevel.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ConfidenceLevel_H_ +#define _ConfidenceLevel_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ConfidenceLevel { + ConfidenceLevel_unavailable = 101 +} e_ConfidenceLevel; + +/* ConfidenceLevel */ +typedef long ConfidenceLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ConfidenceLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ConfidenceLevel; +asn_struct_free_f ConfidenceLevel_free; +asn_struct_print_f ConfidenceLevel_print; +asn_constr_check_f ConfidenceLevel_constraint; +ber_type_decoder_f ConfidenceLevel_decode_ber; +der_type_encoder_f ConfidenceLevel_encode_der; +xer_type_decoder_f ConfidenceLevel_decode_xer; +xer_type_encoder_f ConfidenceLevel_encode_xer; +jer_type_encoder_f ConfidenceLevel_encode_jer; +oer_type_decoder_f ConfidenceLevel_decode_oer; +oer_type_encoder_f ConfidenceLevel_encode_oer; +per_type_decoder_f ConfidenceLevel_decode_uper; +per_type_encoder_f ConfidenceLevel_encode_uper; +per_type_decoder_f ConfidenceLevel_decode_aper; +per_type_encoder_f ConfidenceLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ConfidenceLevel_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h new file mode 100644 index 000000000..fa1954efc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/WrappedCpmContainers.h" +#ifndef _ConstraintWrappedCpmContainers_H_ +#define _ConstraintWrappedCpmContainers_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ConstraintWrappedCpmContainers */ +typedef WrappedCpmContainers_t ConstraintWrappedCpmContainers_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ConstraintWrappedCpmContainers_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ConstraintWrappedCpmContainers; +asn_struct_free_f ConstraintWrappedCpmContainers_free; +asn_struct_print_f ConstraintWrappedCpmContainers_print; +asn_constr_check_f ConstraintWrappedCpmContainers_constraint; +ber_type_decoder_f ConstraintWrappedCpmContainers_decode_ber; +der_type_encoder_f ConstraintWrappedCpmContainers_encode_der; +xer_type_decoder_f ConstraintWrappedCpmContainers_decode_xer; +xer_type_encoder_f ConstraintWrappedCpmContainers_encode_xer; +jer_type_encoder_f ConstraintWrappedCpmContainers_encode_jer; +oer_type_decoder_f ConstraintWrappedCpmContainers_decode_oer; +oer_type_encoder_f ConstraintWrappedCpmContainers_encode_oer; +per_type_decoder_f ConstraintWrappedCpmContainers_decode_uper; +per_type_encoder_f ConstraintWrappedCpmContainers_encode_uper; +per_type_decoder_f ConstraintWrappedCpmContainers_decode_aper; +per_type_encoder_f ConstraintWrappedCpmContainers_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ConstraintWrappedCpmContainers_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CoordinateConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CoordinateConfidence.h new file mode 100644 index 000000000..6a36f0d72 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CoordinateConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CoordinateConfidence_H_ +#define _CoordinateConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CoordinateConfidence { + CoordinateConfidence_outOfRange = 4095, + CoordinateConfidence_unavailable = 4096 +} e_CoordinateConfidence; + +/* CoordinateConfidence */ +typedef long CoordinateConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CoordinateConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CoordinateConfidence; +asn_struct_free_f CoordinateConfidence_free; +asn_struct_print_f CoordinateConfidence_print; +asn_constr_check_f CoordinateConfidence_constraint; +ber_type_decoder_f CoordinateConfidence_decode_ber; +der_type_encoder_f CoordinateConfidence_encode_der; +xer_type_decoder_f CoordinateConfidence_decode_xer; +xer_type_encoder_f CoordinateConfidence_encode_xer; +jer_type_encoder_f CoordinateConfidence_encode_jer; +oer_type_decoder_f CoordinateConfidence_decode_oer; +oer_type_encoder_f CoordinateConfidence_encode_oer; +per_type_decoder_f CoordinateConfidence_decode_uper; +per_type_encoder_f CoordinateConfidence_encode_uper; +per_type_decoder_f CoordinateConfidence_decode_aper; +per_type_encoder_f CoordinateConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoordinateConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationCellValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationCellValue.h new file mode 100644 index 000000000..c085e1ab2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationCellValue.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CorrelationCellValue_H_ +#define _CorrelationCellValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CorrelationCellValue { + CorrelationCellValue_full_negative_correlation = -100, + CorrelationCellValue_no_correlation = 0, + CorrelationCellValue_full_positive_correlation = 100, + CorrelationCellValue_unavailable = 101 +} e_CorrelationCellValue; + +/* CorrelationCellValue */ +typedef long CorrelationCellValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CorrelationCellValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CorrelationCellValue; +asn_struct_free_f CorrelationCellValue_free; +asn_struct_print_f CorrelationCellValue_print; +asn_constr_check_f CorrelationCellValue_constraint; +ber_type_decoder_f CorrelationCellValue_decode_ber; +der_type_encoder_f CorrelationCellValue_encode_der; +xer_type_decoder_f CorrelationCellValue_decode_xer; +xer_type_encoder_f CorrelationCellValue_encode_xer; +jer_type_encoder_f CorrelationCellValue_encode_jer; +oer_type_decoder_f CorrelationCellValue_decode_oer; +oer_type_encoder_f CorrelationCellValue_encode_oer; +per_type_decoder_f CorrelationCellValue_decode_uper; +per_type_encoder_f CorrelationCellValue_encode_uper; +per_type_decoder_f CorrelationCellValue_decode_aper; +per_type_encoder_f CorrelationCellValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CorrelationCellValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationColumn.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationColumn.h new file mode 100644 index 000000000..6e7e990bb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CorrelationColumn.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CorrelationCellValue.h" +#include +#include +#ifndef _CorrelationColumn_H_ +#define _CorrelationColumn_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CorrelationColumn */ +typedef struct CorrelationColumn { + A_SEQUENCE_OF(CorrelationCellValue_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CorrelationColumn_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CorrelationColumn; +extern asn_SET_OF_specifics_t asn_SPC_CorrelationColumn_specs_1; +extern asn_TYPE_member_t asn_MBR_CorrelationColumn_1[1]; +extern asn_per_constraints_t asn_PER_type_CorrelationColumn_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CorrelationColumn_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmContainerId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmContainerId.h new file mode 100644 index 000000000..37656dd23 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmContainerId.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CpmContainerId_H_ +#define _CpmContainerId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CpmContainerId */ +typedef long CpmContainerId_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CpmContainerId_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CpmContainerId; +asn_struct_free_f CpmContainerId_free; +asn_struct_print_f CpmContainerId_print; +asn_constr_check_f CpmContainerId_constraint; +ber_type_decoder_f CpmContainerId_decode_ber; +der_type_encoder_f CpmContainerId_encode_der; +xer_type_decoder_f CpmContainerId_decode_xer; +xer_type_encoder_f CpmContainerId_encode_xer; +jer_type_encoder_f CpmContainerId_encode_jer; +oer_type_decoder_f CpmContainerId_decode_oer; +oer_type_encoder_f CpmContainerId_encode_oer; +per_type_decoder_f CpmContainerId_decode_uper; +per_type_encoder_f CpmContainerId_encode_uper; +per_type_decoder_f CpmContainerId_decode_aper; +per_type_encoder_f CpmContainerId_encode_aper; +#define CpmContainerId_originatingVehicleContainer ((CpmContainerId_t)1) +#define CpmContainerId_originatingRsuContainer ((CpmContainerId_t)2) +#define CpmContainerId_sensorInformationContainer ((CpmContainerId_t)3) +#define CpmContainerId_perceptionRegionContainer ((CpmContainerId_t)4) +#define CpmContainerId_perceivedObjectContainer ((CpmContainerId_t)5) + +#ifdef __cplusplus +} +#endif + +#endif /* _CpmContainerId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmPayload.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmPayload.h new file mode 100644 index 000000000..2809448fc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CpmPayload.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ManagementContainer.h" +#include "etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h" +#include +#ifndef _CpmPayload_H_ +#define _CpmPayload_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CpmPayload */ +typedef struct CpmPayload { + ManagementContainer_t managementContainer; + ConstraintWrappedCpmContainers_t cpmContainers; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CpmPayload_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CpmPayload; +extern asn_SEQUENCE_specifics_t asn_SPC_CpmPayload_specs_1; +extern asn_TYPE_member_t asn_MBR_CpmPayload_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CpmPayload_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Curvature.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Curvature.h new file mode 100644 index 000000000..1635c30ca --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Curvature.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CurvatureValue.h" +#include "etsi_its_cpm_coding/CurvatureConfidence.h" +#include +#ifndef _Curvature_H_ +#define _Curvature_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Curvature */ +typedef struct Curvature { + CurvatureValue_t curvatureValue; + CurvatureConfidence_t curvatureConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Curvature_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Curvature; + +#ifdef __cplusplus +} +#endif + +#endif /* _Curvature_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureCalculationMode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureCalculationMode.h new file mode 100644 index 000000000..687880d43 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureCalculationMode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CurvatureCalculationMode_H_ +#define _CurvatureCalculationMode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CurvatureCalculationMode { + CurvatureCalculationMode_yawRateUsed = 0, + CurvatureCalculationMode_yawRateNotUsed = 1, + CurvatureCalculationMode_unavailable = 2 + /* + * Enumeration is extensible + */ +} e_CurvatureCalculationMode; + +/* CurvatureCalculationMode */ +typedef long CurvatureCalculationMode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CurvatureCalculationMode; +asn_struct_free_f CurvatureCalculationMode_free; +asn_struct_print_f CurvatureCalculationMode_print; +asn_constr_check_f CurvatureCalculationMode_constraint; +ber_type_decoder_f CurvatureCalculationMode_decode_ber; +der_type_encoder_f CurvatureCalculationMode_encode_der; +xer_type_decoder_f CurvatureCalculationMode_decode_xer; +xer_type_encoder_f CurvatureCalculationMode_encode_xer; +jer_type_encoder_f CurvatureCalculationMode_encode_jer; +oer_type_decoder_f CurvatureCalculationMode_decode_oer; +oer_type_encoder_f CurvatureCalculationMode_encode_oer; +per_type_decoder_f CurvatureCalculationMode_decode_uper; +per_type_encoder_f CurvatureCalculationMode_encode_uper; +per_type_decoder_f CurvatureCalculationMode_decode_aper; +per_type_encoder_f CurvatureCalculationMode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CurvatureCalculationMode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureConfidence.h new file mode 100644 index 000000000..522f68e6c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureConfidence.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CurvatureConfidence_H_ +#define _CurvatureConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CurvatureConfidence { + CurvatureConfidence_onePerMeter_0_00002 = 0, + CurvatureConfidence_onePerMeter_0_0001 = 1, + CurvatureConfidence_onePerMeter_0_0005 = 2, + CurvatureConfidence_onePerMeter_0_002 = 3, + CurvatureConfidence_onePerMeter_0_01 = 4, + CurvatureConfidence_onePerMeter_0_1 = 5, + CurvatureConfidence_outOfRange = 6, + CurvatureConfidence_unavailable = 7 +} e_CurvatureConfidence; + +/* CurvatureConfidence */ +typedef long CurvatureConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CurvatureConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CurvatureConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_CurvatureConfidence_specs_1; +asn_struct_free_f CurvatureConfidence_free; +asn_struct_print_f CurvatureConfidence_print; +asn_constr_check_f CurvatureConfidence_constraint; +ber_type_decoder_f CurvatureConfidence_decode_ber; +der_type_encoder_f CurvatureConfidence_encode_der; +xer_type_decoder_f CurvatureConfidence_decode_xer; +xer_type_encoder_f CurvatureConfidence_encode_xer; +jer_type_encoder_f CurvatureConfidence_encode_jer; +oer_type_decoder_f CurvatureConfidence_decode_oer; +oer_type_encoder_f CurvatureConfidence_encode_oer; +per_type_decoder_f CurvatureConfidence_decode_uper; +per_type_encoder_f CurvatureConfidence_encode_uper; +per_type_decoder_f CurvatureConfidence_decode_aper; +per_type_encoder_f CurvatureConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CurvatureConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureValue.h new file mode 100644 index 000000000..7f2e14910 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/CurvatureValue.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _CurvatureValue_H_ +#define _CurvatureValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CurvatureValue { + CurvatureValue_outOfRangeNegative = -1023, + CurvatureValue_straight = 0, + CurvatureValue_outOfRangePositive = 1022, + CurvatureValue_unavailable = 1023 +} e_CurvatureValue; + +/* CurvatureValue */ +typedef long CurvatureValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CurvatureValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CurvatureValue; +asn_struct_free_f CurvatureValue_free; +asn_struct_print_f CurvatureValue_print; +asn_constr_check_f CurvatureValue_constraint; +ber_type_decoder_f CurvatureValue_decode_ber; +der_type_encoder_f CurvatureValue_encode_der; +xer_type_decoder_f CurvatureValue_decode_xer; +xer_type_encoder_f CurvatureValue_encode_xer; +jer_type_encoder_f CurvatureValue_encode_jer; +oer_type_decoder_f CurvatureValue_decode_oer; +oer_type_encoder_f CurvatureValue_encode_oer; +per_type_decoder_f CurvatureValue_decode_uper; +per_type_encoder_f CurvatureValue_encode_uper; +per_type_decoder_f CurvatureValue_decode_aper; +per_type_encoder_f CurvatureValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CurvatureValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h new file mode 100644 index 000000000..4ef31b46a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DangerousEndOfQueueSubCauseCode_H_ +#define _DangerousEndOfQueueSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DangerousEndOfQueueSubCauseCode { + DangerousEndOfQueueSubCauseCode_unavailable = 0, + DangerousEndOfQueueSubCauseCode_suddenEndOfQueue = 1, + DangerousEndOfQueueSubCauseCode_queueOverHill = 2, + DangerousEndOfQueueSubCauseCode_queueAroundBend = 3, + DangerousEndOfQueueSubCauseCode_queueInTunnel = 4 +} e_DangerousEndOfQueueSubCauseCode; + +/* DangerousEndOfQueueSubCauseCode */ +typedef long DangerousEndOfQueueSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DangerousEndOfQueueSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DangerousEndOfQueueSubCauseCode; +asn_struct_free_f DangerousEndOfQueueSubCauseCode_free; +asn_struct_print_f DangerousEndOfQueueSubCauseCode_print; +asn_constr_check_f DangerousEndOfQueueSubCauseCode_constraint; +ber_type_decoder_f DangerousEndOfQueueSubCauseCode_decode_ber; +der_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_der; +xer_type_decoder_f DangerousEndOfQueueSubCauseCode_decode_xer; +xer_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_xer; +jer_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_jer; +oer_type_decoder_f DangerousEndOfQueueSubCauseCode_decode_oer; +oer_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_oer; +per_type_decoder_f DangerousEndOfQueueSubCauseCode_decode_uper; +per_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_uper; +per_type_decoder_f DangerousEndOfQueueSubCauseCode_decode_aper; +per_type_encoder_f DangerousEndOfQueueSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DangerousEndOfQueueSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsBasic.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsBasic.h new file mode 100644 index 000000000..231b167c5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsBasic.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DangerousGoodsBasic_H_ +#define _DangerousGoodsBasic_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DangerousGoodsBasic { + DangerousGoodsBasic_explosives1 = 0, + DangerousGoodsBasic_explosives2 = 1, + DangerousGoodsBasic_explosives3 = 2, + DangerousGoodsBasic_explosives4 = 3, + DangerousGoodsBasic_explosives5 = 4, + DangerousGoodsBasic_explosives6 = 5, + DangerousGoodsBasic_flammableGases = 6, + DangerousGoodsBasic_nonFlammableGases = 7, + DangerousGoodsBasic_toxicGases = 8, + DangerousGoodsBasic_flammableLiquids = 9, + DangerousGoodsBasic_flammableSolids = 10, + DangerousGoodsBasic_substancesLiableToSpontaneousCombustion = 11, + DangerousGoodsBasic_substancesEmittingFlammableGasesUponContactWithWater = 12, + DangerousGoodsBasic_oxidizingSubstances = 13, + DangerousGoodsBasic_organicPeroxides = 14, + DangerousGoodsBasic_toxicSubstances = 15, + DangerousGoodsBasic_infectiousSubstances = 16, + DangerousGoodsBasic_radioactiveMaterial = 17, + DangerousGoodsBasic_corrosiveSubstances = 18, + DangerousGoodsBasic_miscellaneousDangerousSubstances = 19 +} e_DangerousGoodsBasic; + +/* DangerousGoodsBasic */ +typedef long DangerousGoodsBasic_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DangerousGoodsBasic_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DangerousGoodsBasic; +extern const asn_INTEGER_specifics_t asn_SPC_DangerousGoodsBasic_specs_1; +asn_struct_free_f DangerousGoodsBasic_free; +asn_struct_print_f DangerousGoodsBasic_print; +asn_constr_check_f DangerousGoodsBasic_constraint; +ber_type_decoder_f DangerousGoodsBasic_decode_ber; +der_type_encoder_f DangerousGoodsBasic_encode_der; +xer_type_decoder_f DangerousGoodsBasic_decode_xer; +xer_type_encoder_f DangerousGoodsBasic_encode_xer; +jer_type_encoder_f DangerousGoodsBasic_encode_jer; +oer_type_decoder_f DangerousGoodsBasic_decode_oer; +oer_type_encoder_f DangerousGoodsBasic_encode_oer; +per_type_decoder_f DangerousGoodsBasic_decode_uper; +per_type_encoder_f DangerousGoodsBasic_encode_uper; +per_type_decoder_f DangerousGoodsBasic_decode_aper; +per_type_encoder_f DangerousGoodsBasic_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DangerousGoodsBasic_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsExtended.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsExtended.h new file mode 100644 index 000000000..1a497c51b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousGoodsExtended.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DangerousGoodsBasic.h" +#include +#include +#include +#include "etsi_its_cpm_coding/PhoneNumber.h" +#include +#include +#ifndef _DangerousGoodsExtended_H_ +#define _DangerousGoodsExtended_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DangerousGoodsExtended */ +typedef struct DangerousGoodsExtended { + DangerousGoodsBasic_t dangerousGoodsType; + long unNumber; + BOOLEAN_t elevatedTemperature; + BOOLEAN_t tunnelsRestricted; + BOOLEAN_t limitedQuantity; + IA5String_t *emergencyActionCode; /* OPTIONAL */ + PhoneNumber_t *phoneNumber; /* OPTIONAL */ + UTF8String_t *companyName; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DangerousGoodsExtended_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DangerousGoodsExtended; + +#ifdef __cplusplus +} +#endif + +#endif /* _DangerousGoodsExtended_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousSituationSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousSituationSubCauseCode.h new file mode 100644 index 000000000..95f30fcd7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DangerousSituationSubCauseCode.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DangerousSituationSubCauseCode_H_ +#define _DangerousSituationSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DangerousSituationSubCauseCode { + DangerousSituationSubCauseCode_unavailable = 0, + DangerousSituationSubCauseCode_emergencyElectronicBrakeEngaged = 1, + DangerousSituationSubCauseCode_preCrashSystemEngaged = 2, + DangerousSituationSubCauseCode_espEngaged = 3, + DangerousSituationSubCauseCode_absEngaged = 4, + DangerousSituationSubCauseCode_ebEngaged = 5, + DangerousSituationSubCauseCode_brakeWarningEngaged = 6, + DangerousSituationSubCauseCode_collisionRiskWarningEngaged = 7 +} e_DangerousSituationSubCauseCode; + +/* DangerousSituationSubCauseCode */ +typedef long DangerousSituationSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DangerousSituationSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DangerousSituationSubCauseCode; +asn_struct_free_f DangerousSituationSubCauseCode_free; +asn_struct_print_f DangerousSituationSubCauseCode_print; +asn_constr_check_f DangerousSituationSubCauseCode_constraint; +ber_type_decoder_f DangerousSituationSubCauseCode_decode_ber; +der_type_encoder_f DangerousSituationSubCauseCode_encode_der; +xer_type_decoder_f DangerousSituationSubCauseCode_decode_xer; +xer_type_encoder_f DangerousSituationSubCauseCode_encode_xer; +jer_type_encoder_f DangerousSituationSubCauseCode_encode_jer; +oer_type_decoder_f DangerousSituationSubCauseCode_decode_oer; +oer_type_encoder_f DangerousSituationSubCauseCode_encode_oer; +per_type_decoder_f DangerousSituationSubCauseCode_decode_uper; +per_type_encoder_f DangerousSituationSubCauseCode_encode_uper; +per_type_decoder_f DangerousSituationSubCauseCode_decode_aper; +per_type_encoder_f DangerousSituationSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DangerousSituationSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaAltitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaAltitude.h new file mode 100644 index 000000000..01b038b40 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaAltitude.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaAltitude_H_ +#define _DeltaAltitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeltaAltitude { + DeltaAltitude_negativeOutOfRange = -12700, + DeltaAltitude_positiveOutOfRange = 12799, + DeltaAltitude_unavailable = 12800 +} e_DeltaAltitude; + +/* DeltaAltitude */ +typedef long DeltaAltitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaAltitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaAltitude; +asn_struct_free_f DeltaAltitude_free; +asn_struct_print_f DeltaAltitude_print; +asn_constr_check_f DeltaAltitude_constraint; +ber_type_decoder_f DeltaAltitude_decode_ber; +der_type_encoder_f DeltaAltitude_encode_der; +xer_type_decoder_f DeltaAltitude_decode_xer; +xer_type_encoder_f DeltaAltitude_encode_xer; +jer_type_encoder_f DeltaAltitude_encode_jer; +oer_type_decoder_f DeltaAltitude_decode_oer; +oer_type_encoder_f DeltaAltitude_encode_oer; +per_type_decoder_f DeltaAltitude_decode_uper; +per_type_encoder_f DeltaAltitude_encode_uper; +per_type_decoder_f DeltaAltitude_decode_aper; +per_type_encoder_f DeltaAltitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaAltitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLatitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLatitude.h new file mode 100644 index 000000000..4d58a2362 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLatitude.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaLatitude_H_ +#define _DeltaLatitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeltaLatitude { + DeltaLatitude_unavailable = 131072 +} e_DeltaLatitude; + +/* DeltaLatitude */ +typedef long DeltaLatitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaLatitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaLatitude; +asn_struct_free_f DeltaLatitude_free; +asn_struct_print_f DeltaLatitude_print; +asn_constr_check_f DeltaLatitude_constraint; +ber_type_decoder_f DeltaLatitude_decode_ber; +der_type_encoder_f DeltaLatitude_encode_der; +xer_type_decoder_f DeltaLatitude_decode_xer; +xer_type_encoder_f DeltaLatitude_encode_xer; +jer_type_encoder_f DeltaLatitude_encode_jer; +oer_type_decoder_f DeltaLatitude_decode_oer; +oer_type_encoder_f DeltaLatitude_encode_oer; +per_type_decoder_f DeltaLatitude_decode_uper; +per_type_encoder_f DeltaLatitude_encode_uper; +per_type_decoder_f DeltaLatitude_decode_aper; +per_type_encoder_f DeltaLatitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaLatitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLongitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLongitude.h new file mode 100644 index 000000000..80d34458b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaLongitude.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaLongitude_H_ +#define _DeltaLongitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeltaLongitude { + DeltaLongitude_unavailable = 131072 +} e_DeltaLongitude; + +/* DeltaLongitude */ +typedef long DeltaLongitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaLongitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaLongitude; +asn_struct_free_f DeltaLongitude_free; +asn_struct_print_f DeltaLongitude_print; +asn_constr_check_f DeltaLongitude_constraint; +ber_type_decoder_f DeltaLongitude_decode_ber; +der_type_encoder_f DeltaLongitude_encode_der; +xer_type_decoder_f DeltaLongitude_decode_xer; +xer_type_encoder_f DeltaLongitude_encode_xer; +jer_type_encoder_f DeltaLongitude_encode_jer; +oer_type_decoder_f DeltaLongitude_decode_oer; +oer_type_encoder_f DeltaLongitude_encode_oer; +per_type_decoder_f DeltaLongitude_decode_uper; +per_type_encoder_f DeltaLongitude_encode_uper; +per_type_decoder_f DeltaLongitude_decode_aper; +per_type_encoder_f DeltaLongitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaLongitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaReferencePosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaReferencePosition.h new file mode 100644 index 000000000..5784d6187 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaReferencePosition.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DeltaLatitude.h" +#include "etsi_its_cpm_coding/DeltaLongitude.h" +#include "etsi_its_cpm_coding/DeltaAltitude.h" +#include +#ifndef _DeltaReferencePosition_H_ +#define _DeltaReferencePosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaReferencePosition */ +typedef struct DeltaReferencePosition { + DeltaLatitude_t deltaLatitude; + DeltaLongitude_t deltaLongitude; + DeltaAltitude_t deltaAltitude; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DeltaReferencePosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DeltaReferencePosition; +extern asn_SEQUENCE_specifics_t asn_SPC_DeltaReferencePosition_specs_1; +extern asn_TYPE_member_t asn_MBR_DeltaReferencePosition_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaReferencePosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondPositive.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondPositive.h new file mode 100644 index 000000000..4b8e93b5a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondPositive.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaTimeMilliSecondPositive_H_ +#define _DeltaTimeMilliSecondPositive_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaTimeMilliSecondPositive */ +typedef long DeltaTimeMilliSecondPositive_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DeltaTimeMilliSecondPositive; +asn_struct_free_f DeltaTimeMilliSecondPositive_free; +asn_struct_print_f DeltaTimeMilliSecondPositive_print; +asn_constr_check_f DeltaTimeMilliSecondPositive_constraint; +ber_type_decoder_f DeltaTimeMilliSecondPositive_decode_ber; +der_type_encoder_f DeltaTimeMilliSecondPositive_encode_der; +xer_type_decoder_f DeltaTimeMilliSecondPositive_decode_xer; +xer_type_encoder_f DeltaTimeMilliSecondPositive_encode_xer; +jer_type_encoder_f DeltaTimeMilliSecondPositive_encode_jer; +oer_type_decoder_f DeltaTimeMilliSecondPositive_decode_oer; +oer_type_encoder_f DeltaTimeMilliSecondPositive_encode_oer; +per_type_decoder_f DeltaTimeMilliSecondPositive_decode_uper; +per_type_encoder_f DeltaTimeMilliSecondPositive_encode_uper; +per_type_decoder_f DeltaTimeMilliSecondPositive_decode_aper; +per_type_encoder_f DeltaTimeMilliSecondPositive_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTimeMilliSecondPositive_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h new file mode 100644 index 000000000..6b50b7092 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaTimeMilliSecondSigned_H_ +#define _DeltaTimeMilliSecondSigned_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaTimeMilliSecondSigned */ +typedef long DeltaTimeMilliSecondSigned_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaTimeMilliSecondSigned_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaTimeMilliSecondSigned; +asn_struct_free_f DeltaTimeMilliSecondSigned_free; +asn_struct_print_f DeltaTimeMilliSecondSigned_print; +asn_constr_check_f DeltaTimeMilliSecondSigned_constraint; +ber_type_decoder_f DeltaTimeMilliSecondSigned_decode_ber; +der_type_encoder_f DeltaTimeMilliSecondSigned_encode_der; +xer_type_decoder_f DeltaTimeMilliSecondSigned_decode_xer; +xer_type_encoder_f DeltaTimeMilliSecondSigned_encode_xer; +jer_type_encoder_f DeltaTimeMilliSecondSigned_encode_jer; +oer_type_decoder_f DeltaTimeMilliSecondSigned_decode_oer; +oer_type_encoder_f DeltaTimeMilliSecondSigned_encode_oer; +per_type_decoder_f DeltaTimeMilliSecondSigned_decode_uper; +per_type_encoder_f DeltaTimeMilliSecondSigned_encode_uper; +per_type_decoder_f DeltaTimeMilliSecondSigned_decode_aper; +per_type_encoder_f DeltaTimeMilliSecondSigned_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTimeMilliSecondSigned_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeQuarterSecond.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeQuarterSecond.h new file mode 100644 index 000000000..c0390597c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeQuarterSecond.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaTimeQuarterSecond_H_ +#define _DeltaTimeQuarterSecond_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeltaTimeQuarterSecond { + DeltaTimeQuarterSecond_unavailable = 255 +} e_DeltaTimeQuarterSecond; + +/* DeltaTimeQuarterSecond */ +typedef long DeltaTimeQuarterSecond_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaTimeQuarterSecond_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaTimeQuarterSecond; +asn_struct_free_f DeltaTimeQuarterSecond_free; +asn_struct_print_f DeltaTimeQuarterSecond_print; +asn_constr_check_f DeltaTimeQuarterSecond_constraint; +ber_type_decoder_f DeltaTimeQuarterSecond_decode_ber; +der_type_encoder_f DeltaTimeQuarterSecond_encode_der; +xer_type_decoder_f DeltaTimeQuarterSecond_decode_xer; +xer_type_encoder_f DeltaTimeQuarterSecond_encode_xer; +jer_type_encoder_f DeltaTimeQuarterSecond_encode_jer; +oer_type_decoder_f DeltaTimeQuarterSecond_decode_oer; +oer_type_encoder_f DeltaTimeQuarterSecond_encode_oer; +per_type_decoder_f DeltaTimeQuarterSecond_decode_uper; +per_type_encoder_f DeltaTimeQuarterSecond_encode_uper; +per_type_decoder_f DeltaTimeQuarterSecond_decode_aper; +per_type_encoder_f DeltaTimeQuarterSecond_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTimeQuarterSecond_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeSecond.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeSecond.h new file mode 100644 index 000000000..4f501398d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeSecond.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaTimeSecond_H_ +#define _DeltaTimeSecond_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DeltaTimeSecond */ +typedef long DeltaTimeSecond_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DeltaTimeSecond; +asn_struct_free_f DeltaTimeSecond_free; +asn_struct_print_f DeltaTimeSecond_print; +asn_constr_check_f DeltaTimeSecond_constraint; +ber_type_decoder_f DeltaTimeSecond_decode_ber; +der_type_encoder_f DeltaTimeSecond_encode_der; +xer_type_decoder_f DeltaTimeSecond_decode_xer; +xer_type_encoder_f DeltaTimeSecond_encode_xer; +jer_type_encoder_f DeltaTimeSecond_encode_jer; +oer_type_decoder_f DeltaTimeSecond_decode_oer; +oer_type_encoder_f DeltaTimeSecond_encode_oer; +per_type_decoder_f DeltaTimeSecond_decode_uper; +per_type_encoder_f DeltaTimeSecond_encode_uper; +per_type_decoder_f DeltaTimeSecond_decode_aper; +per_type_encoder_f DeltaTimeSecond_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTimeSecond_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h new file mode 100644 index 000000000..718b0e542 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DeltaTimeTenthOfSecond_H_ +#define _DeltaTimeTenthOfSecond_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeltaTimeTenthOfSecond { + DeltaTimeTenthOfSecond_unavailable = 127 +} e_DeltaTimeTenthOfSecond; + +/* DeltaTimeTenthOfSecond */ +typedef long DeltaTimeTenthOfSecond_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeltaTimeTenthOfSecond_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeltaTimeTenthOfSecond; +asn_struct_free_f DeltaTimeTenthOfSecond_free; +asn_struct_print_f DeltaTimeTenthOfSecond_print; +asn_constr_check_f DeltaTimeTenthOfSecond_constraint; +ber_type_decoder_f DeltaTimeTenthOfSecond_decode_ber; +der_type_encoder_f DeltaTimeTenthOfSecond_encode_der; +xer_type_decoder_f DeltaTimeTenthOfSecond_decode_xer; +xer_type_encoder_f DeltaTimeTenthOfSecond_encode_xer; +jer_type_encoder_f DeltaTimeTenthOfSecond_encode_jer; +oer_type_decoder_f DeltaTimeTenthOfSecond_decode_oer; +oer_type_encoder_f DeltaTimeTenthOfSecond_encode_oer; +per_type_decoder_f DeltaTimeTenthOfSecond_decode_uper; +per_type_encoder_f DeltaTimeTenthOfSecond_encode_uper; +per_type_decoder_f DeltaTimeTenthOfSecond_decode_aper; +per_type_encoder_f DeltaTimeTenthOfSecond_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeltaTimeTenthOfSecond_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DigitalMap.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DigitalMap.h new file mode 100644 index 000000000..4b917d193 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DigitalMap.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _DigitalMap_H_ +#define _DigitalMap_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReferencePosition; + +/* DigitalMap */ +typedef struct DigitalMap { + A_SEQUENCE_OF(struct ReferencePosition) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DigitalMap_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DigitalMap; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/ReferencePosition.h" + +#endif /* _DigitalMap_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Direction.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Direction.h new file mode 100644 index 000000000..a88fa5213 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Direction.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Direction_H_ +#define _Direction_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Direction { + Direction_sameDirection = 0, + Direction_oppositeDirection = 1, + Direction_bothDirections = 2, + Direction_unavailable = 3 +} e_Direction; + +/* Direction */ +typedef long Direction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Direction; +asn_struct_free_f Direction_free; +asn_struct_print_f Direction_print; +asn_constr_check_f Direction_constraint; +ber_type_decoder_f Direction_decode_ber; +der_type_encoder_f Direction_encode_der; +xer_type_decoder_f Direction_decode_xer; +xer_type_encoder_f Direction_encode_xer; +jer_type_encoder_f Direction_encode_jer; +oer_type_decoder_f Direction_decode_oer; +oer_type_encoder_f Direction_encode_oer; +per_type_decoder_f Direction_decode_uper; +per_type_encoder_f Direction_encode_uper; +per_type_decoder_f Direction_decode_aper; +per_type_encoder_f Direction_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Direction_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DriveDirection.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DriveDirection.h new file mode 100644 index 000000000..e5f1f4291 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DriveDirection.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DriveDirection_H_ +#define _DriveDirection_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DriveDirection { + DriveDirection_forward = 0, + DriveDirection_backward = 1, + DriveDirection_unavailable = 2 +} e_DriveDirection; + +/* DriveDirection */ +typedef long DriveDirection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DriveDirection; +asn_struct_free_f DriveDirection_free; +asn_struct_print_f DriveDirection_print; +asn_constr_check_f DriveDirection_constraint; +ber_type_decoder_f DriveDirection_decode_ber; +der_type_encoder_f DriveDirection_encode_der; +xer_type_decoder_f DriveDirection_decode_xer; +xer_type_encoder_f DriveDirection_encode_xer; +jer_type_encoder_f DriveDirection_encode_jer; +oer_type_decoder_f DriveDirection_decode_oer; +oer_type_encoder_f DriveDirection_encode_oer; +per_type_decoder_f DriveDirection_decode_uper; +per_type_encoder_f DriveDirection_encode_uper; +per_type_decoder_f DriveDirection_decode_aper; +per_type_encoder_f DriveDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DriveDirection_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DrivingLaneStatus.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DrivingLaneStatus.h new file mode 100644 index 000000000..d72520479 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/DrivingLaneStatus.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _DrivingLaneStatus_H_ +#define _DrivingLaneStatus_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* DrivingLaneStatus */ +typedef BIT_STRING_t DrivingLaneStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DrivingLaneStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DrivingLaneStatus; +asn_struct_free_f DrivingLaneStatus_free; +asn_struct_print_f DrivingLaneStatus_print; +asn_constr_check_f DrivingLaneStatus_constraint; +ber_type_decoder_f DrivingLaneStatus_decode_ber; +der_type_encoder_f DrivingLaneStatus_encode_der; +xer_type_decoder_f DrivingLaneStatus_decode_xer; +xer_type_encoder_f DrivingLaneStatus_encode_xer; +jer_type_encoder_f DrivingLaneStatus_encode_jer; +oer_type_decoder_f DrivingLaneStatus_decode_oer; +oer_type_encoder_f DrivingLaneStatus_encode_oer; +per_type_decoder_f DrivingLaneStatus_decode_uper; +per_type_encoder_f DrivingLaneStatus_encode_uper; +per_type_decoder_f DrivingLaneStatus_decode_aper; +per_type_encoder_f DrivingLaneStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DrivingLaneStatus_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EXTERNAL.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EXTERNAL.h new file mode 100644 index 000000000..edb9dd4df --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EXTERNAL.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _EXTERNAL_H_ +#define _EXTERNAL_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EXTERNAL__encoding_PR { + EXTERNAL__encoding_PR_NOTHING, /* No components present */ + EXTERNAL__encoding_PR_single_ASN1_type, + EXTERNAL__encoding_PR_octet_aligned, + EXTERNAL__encoding_PR_arbitrary +} EXTERNAL__encoding_PR; + +/* EXTERNAL */ +typedef struct EXTERNAL { + OBJECT_IDENTIFIER_t *direct_reference; /* OPTIONAL */ + long *indirect_reference; /* OPTIONAL */ + ObjectDescriptor_t *data_value_descriptor; /* OPTIONAL */ + struct EXTERNAL__encoding { + EXTERNAL__encoding_PR present; + union EXTERNAL__encoding_u { + ANY_t single_ASN1_type; + OCTET_STRING_t octet_aligned; + BIT_STRING_t arbitrary; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } encoding; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EXTERNAL_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EXTERNAL; + +#ifdef __cplusplus +} +#endif + +#endif /* _EXTERNAL_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EllipticalShape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EllipticalShape.h new file mode 100644 index 000000000..d7bdc4c64 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EllipticalShape.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" +#include +#ifndef _EllipticalShape_H_ +#define _EllipticalShape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* EllipticalShape */ +typedef struct EllipticalShape { + struct CartesianPosition3d *shapeReferencePoint; /* OPTIONAL */ + StandardLength12b_t semiMajorAxisLength; + StandardLength12b_t semiMinorAxisLength; + Wgs84AngleValue_t *orientation; /* OPTIONAL */ + StandardLength12b_t *height; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EllipticalShape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EllipticalShape; +extern asn_SEQUENCE_specifics_t asn_SPC_EllipticalShape_specs_1; +extern asn_TYPE_member_t asn_MBR_EllipticalShape_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _EllipticalShape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmbarkationStatus.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmbarkationStatus.h new file mode 100644 index 000000000..f3c024dea --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmbarkationStatus.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EmbarkationStatus_H_ +#define _EmbarkationStatus_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* EmbarkationStatus */ +typedef BOOLEAN_t EmbarkationStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EmbarkationStatus; +asn_struct_free_f EmbarkationStatus_free; +asn_struct_print_f EmbarkationStatus_print; +asn_constr_check_f EmbarkationStatus_constraint; +ber_type_decoder_f EmbarkationStatus_decode_ber; +der_type_encoder_f EmbarkationStatus_encode_der; +xer_type_decoder_f EmbarkationStatus_decode_xer; +xer_type_encoder_f EmbarkationStatus_encode_xer; +jer_type_encoder_f EmbarkationStatus_encode_jer; +oer_type_decoder_f EmbarkationStatus_decode_oer; +oer_type_encoder_f EmbarkationStatus_encode_oer; +per_type_decoder_f EmbarkationStatus_decode_uper; +per_type_encoder_f EmbarkationStatus_encode_uper; +per_type_decoder_f EmbarkationStatus_decode_aper; +per_type_encoder_f EmbarkationStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EmbarkationStatus_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyPriority.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyPriority.h new file mode 100644 index 000000000..c22fb88ff --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyPriority.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EmergencyPriority_H_ +#define _EmergencyPriority_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EmergencyPriority { + EmergencyPriority_requestForRightOfWay = 0, + EmergencyPriority_requestForFreeCrossingAtATrafficLight = 1 +} e_EmergencyPriority; + +/* EmergencyPriority */ +typedef BIT_STRING_t EmergencyPriority_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EmergencyPriority; +asn_struct_free_f EmergencyPriority_free; +asn_struct_print_f EmergencyPriority_print; +asn_constr_check_f EmergencyPriority_constraint; +ber_type_decoder_f EmergencyPriority_decode_ber; +der_type_encoder_f EmergencyPriority_encode_der; +xer_type_decoder_f EmergencyPriority_decode_xer; +xer_type_encoder_f EmergencyPriority_encode_xer; +jer_type_encoder_f EmergencyPriority_encode_jer; +oer_type_decoder_f EmergencyPriority_decode_oer; +oer_type_encoder_f EmergencyPriority_encode_oer; +per_type_decoder_f EmergencyPriority_decode_uper; +per_type_encoder_f EmergencyPriority_encode_uper; +per_type_decoder_f EmergencyPriority_decode_aper; +per_type_encoder_f EmergencyPriority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EmergencyPriority_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h new file mode 100644 index 000000000..ec39186ed --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EmergencyVehicleApproachingSubCauseCode_H_ +#define _EmergencyVehicleApproachingSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EmergencyVehicleApproachingSubCauseCode { + EmergencyVehicleApproachingSubCauseCode_unavailable = 0, + EmergencyVehicleApproachingSubCauseCode_emergencyVehicleApproaching = 1, + EmergencyVehicleApproachingSubCauseCode_prioritizedVehicleApproaching = 2 +} e_EmergencyVehicleApproachingSubCauseCode; + +/* EmergencyVehicleApproachingSubCauseCode */ +typedef long EmergencyVehicleApproachingSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EmergencyVehicleApproachingSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EmergencyVehicleApproachingSubCauseCode; +asn_struct_free_f EmergencyVehicleApproachingSubCauseCode_free; +asn_struct_print_f EmergencyVehicleApproachingSubCauseCode_print; +asn_constr_check_f EmergencyVehicleApproachingSubCauseCode_constraint; +ber_type_decoder_f EmergencyVehicleApproachingSubCauseCode_decode_ber; +der_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_der; +xer_type_decoder_f EmergencyVehicleApproachingSubCauseCode_decode_xer; +xer_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_xer; +jer_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_jer; +oer_type_decoder_f EmergencyVehicleApproachingSubCauseCode_decode_oer; +oer_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_oer; +per_type_decoder_f EmergencyVehicleApproachingSubCauseCode_decode_uper; +per_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_uper; +per_type_decoder_f EmergencyVehicleApproachingSubCauseCode_decode_aper; +per_type_encoder_f EmergencyVehicleApproachingSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EmergencyVehicleApproachingSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EnergyStorageType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EnergyStorageType.h new file mode 100644 index 000000000..b06f642ab --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EnergyStorageType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EnergyStorageType_H_ +#define _EnergyStorageType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EnergyStorageType { + EnergyStorageType_hydrogenStorage = 0, + EnergyStorageType_electricEnergyStorage = 1, + EnergyStorageType_liquidPropaneGas = 2, + EnergyStorageType_compressedNaturalGas = 3, + EnergyStorageType_diesel = 4, + EnergyStorageType_gasoline = 5, + EnergyStorageType_ammonia = 6 +} e_EnergyStorageType; + +/* EnergyStorageType */ +typedef BIT_STRING_t EnergyStorageType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnergyStorageType; +asn_struct_free_f EnergyStorageType_free; +asn_struct_print_f EnergyStorageType_print; +asn_constr_check_f EnergyStorageType_constraint; +ber_type_decoder_f EnergyStorageType_decode_ber; +der_type_encoder_f EnergyStorageType_encode_der; +xer_type_decoder_f EnergyStorageType_decode_xer; +xer_type_encoder_f EnergyStorageType_encode_xer; +jer_type_encoder_f EnergyStorageType_encode_jer; +oer_type_decoder_f EnergyStorageType_decode_oer; +oer_type_encoder_f EnergyStorageType_encode_oer; +per_type_decoder_f EnergyStorageType_decode_uper; +per_type_encoder_f EnergyStorageType_encode_uper; +per_type_decoder_f EnergyStorageType_decode_aper; +per_type_encoder_f EnergyStorageType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnergyStorageType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryCode.h new file mode 100644 index 000000000..455caf1ba --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryCode.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/EuVehicleCategoryL.h" +#include "etsi_its_cpm_coding/EuVehicleCategoryM.h" +#include "etsi_its_cpm_coding/EuVehicleCategoryN.h" +#include "etsi_its_cpm_coding/EuVehicleCategoryO.h" +#include +#include +#ifndef _EuVehicleCategoryCode_H_ +#define _EuVehicleCategoryCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EuVehicleCategoryCode_PR { + EuVehicleCategoryCode_PR_NOTHING, /* No components present */ + EuVehicleCategoryCode_PR_euVehicleCategoryL, + EuVehicleCategoryCode_PR_euVehicleCategoryM, + EuVehicleCategoryCode_PR_euVehicleCategoryN, + EuVehicleCategoryCode_PR_euVehicleCategoryO, + EuVehicleCategoryCode_PR_euVehicleCategoryT, + EuVehicleCategoryCode_PR_euVehicleCategoryG +} EuVehicleCategoryCode_PR; + +/* EuVehicleCategoryCode */ +typedef struct EuVehicleCategoryCode { + EuVehicleCategoryCode_PR present; + union EuVehicleCategoryCode_u { + EuVehicleCategoryL_t euVehicleCategoryL; + EuVehicleCategoryM_t euVehicleCategoryM; + EuVehicleCategoryN_t euVehicleCategoryN; + EuVehicleCategoryO_t euVehicleCategoryO; + NULL_t euVehicleCategoryT; + NULL_t euVehicleCategoryG; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EuVehicleCategoryCode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryCode; + +#ifdef __cplusplus +} +#endif + +#endif /* _EuVehicleCategoryCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryL.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryL.h new file mode 100644 index 000000000..6dd16282f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryL.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EuVehicleCategoryL_H_ +#define _EuVehicleCategoryL_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EuVehicleCategoryL { + EuVehicleCategoryL_l1 = 0, + EuVehicleCategoryL_l2 = 1, + EuVehicleCategoryL_l3 = 2, + EuVehicleCategoryL_l4 = 3, + EuVehicleCategoryL_l5 = 4, + EuVehicleCategoryL_l6 = 5, + EuVehicleCategoryL_l7 = 6 +} e_EuVehicleCategoryL; + +/* EuVehicleCategoryL */ +typedef long EuVehicleCategoryL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EuVehicleCategoryL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryL; +extern const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryL_specs_1; +asn_struct_free_f EuVehicleCategoryL_free; +asn_struct_print_f EuVehicleCategoryL_print; +asn_constr_check_f EuVehicleCategoryL_constraint; +ber_type_decoder_f EuVehicleCategoryL_decode_ber; +der_type_encoder_f EuVehicleCategoryL_encode_der; +xer_type_decoder_f EuVehicleCategoryL_decode_xer; +xer_type_encoder_f EuVehicleCategoryL_encode_xer; +jer_type_encoder_f EuVehicleCategoryL_encode_jer; +oer_type_decoder_f EuVehicleCategoryL_decode_oer; +oer_type_encoder_f EuVehicleCategoryL_encode_oer; +per_type_decoder_f EuVehicleCategoryL_decode_uper; +per_type_encoder_f EuVehicleCategoryL_encode_uper; +per_type_decoder_f EuVehicleCategoryL_decode_aper; +per_type_encoder_f EuVehicleCategoryL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EuVehicleCategoryL_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryM.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryM.h new file mode 100644 index 000000000..f8691b86b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryM.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EuVehicleCategoryM_H_ +#define _EuVehicleCategoryM_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EuVehicleCategoryM { + EuVehicleCategoryM_m1 = 0, + EuVehicleCategoryM_m2 = 1, + EuVehicleCategoryM_m3 = 2 +} e_EuVehicleCategoryM; + +/* EuVehicleCategoryM */ +typedef long EuVehicleCategoryM_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EuVehicleCategoryM_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryM; +extern const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryM_specs_1; +asn_struct_free_f EuVehicleCategoryM_free; +asn_struct_print_f EuVehicleCategoryM_print; +asn_constr_check_f EuVehicleCategoryM_constraint; +ber_type_decoder_f EuVehicleCategoryM_decode_ber; +der_type_encoder_f EuVehicleCategoryM_encode_der; +xer_type_decoder_f EuVehicleCategoryM_decode_xer; +xer_type_encoder_f EuVehicleCategoryM_encode_xer; +jer_type_encoder_f EuVehicleCategoryM_encode_jer; +oer_type_decoder_f EuVehicleCategoryM_decode_oer; +oer_type_encoder_f EuVehicleCategoryM_encode_oer; +per_type_decoder_f EuVehicleCategoryM_decode_uper; +per_type_encoder_f EuVehicleCategoryM_encode_uper; +per_type_decoder_f EuVehicleCategoryM_decode_aper; +per_type_encoder_f EuVehicleCategoryM_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EuVehicleCategoryM_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryN.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryN.h new file mode 100644 index 000000000..e85b14bb2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryN.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EuVehicleCategoryN_H_ +#define _EuVehicleCategoryN_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EuVehicleCategoryN { + EuVehicleCategoryN_n1 = 0, + EuVehicleCategoryN_n2 = 1, + EuVehicleCategoryN_n3 = 2 +} e_EuVehicleCategoryN; + +/* EuVehicleCategoryN */ +typedef long EuVehicleCategoryN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EuVehicleCategoryN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryN; +extern const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryN_specs_1; +asn_struct_free_f EuVehicleCategoryN_free; +asn_struct_print_f EuVehicleCategoryN_print; +asn_constr_check_f EuVehicleCategoryN_constraint; +ber_type_decoder_f EuVehicleCategoryN_decode_ber; +der_type_encoder_f EuVehicleCategoryN_encode_der; +xer_type_decoder_f EuVehicleCategoryN_decode_xer; +xer_type_encoder_f EuVehicleCategoryN_encode_xer; +jer_type_encoder_f EuVehicleCategoryN_encode_jer; +oer_type_decoder_f EuVehicleCategoryN_decode_oer; +oer_type_encoder_f EuVehicleCategoryN_encode_oer; +per_type_decoder_f EuVehicleCategoryN_decode_uper; +per_type_encoder_f EuVehicleCategoryN_encode_uper; +per_type_decoder_f EuVehicleCategoryN_decode_aper; +per_type_encoder_f EuVehicleCategoryN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EuVehicleCategoryN_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryO.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryO.h new file mode 100644 index 000000000..0315d1e4a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EuVehicleCategoryO.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _EuVehicleCategoryO_H_ +#define _EuVehicleCategoryO_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EuVehicleCategoryO { + EuVehicleCategoryO_o1 = 0, + EuVehicleCategoryO_o2 = 1, + EuVehicleCategoryO_o3 = 2, + EuVehicleCategoryO_o4 = 3 +} e_EuVehicleCategoryO; + +/* EuVehicleCategoryO */ +typedef long EuVehicleCategoryO_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EuVehicleCategoryO_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryO; +extern const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryO_specs_1; +asn_struct_free_f EuVehicleCategoryO_free; +asn_struct_print_f EuVehicleCategoryO_print; +asn_constr_check_f EuVehicleCategoryO_constraint; +ber_type_decoder_f EuVehicleCategoryO_decode_ber; +der_type_encoder_f EuVehicleCategoryO_encode_der; +xer_type_decoder_f EuVehicleCategoryO_decode_xer; +xer_type_encoder_f EuVehicleCategoryO_encode_xer; +jer_type_encoder_f EuVehicleCategoryO_encode_jer; +oer_type_decoder_f EuVehicleCategoryO_decode_oer; +oer_type_encoder_f EuVehicleCategoryO_encode_oer; +per_type_decoder_f EuVehicleCategoryO_decode_uper; +per_type_encoder_f EuVehicleCategoryO_encode_uper; +per_type_decoder_f EuVehicleCategoryO_decode_aper; +per_type_encoder_f EuVehicleCategoryO_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EuVehicleCategoryO_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EulerAnglesWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EulerAnglesWithConfidence.h new file mode 100644 index 000000000..ba41363fa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EulerAnglesWithConfidence.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CartesianAngle.h" +#include +#ifndef _EulerAnglesWithConfidence_H_ +#define _EulerAnglesWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianAngle; + +/* EulerAnglesWithConfidence */ +typedef struct EulerAnglesWithConfidence { + CartesianAngle_t zAngle; + struct CartesianAngle *yAngle; /* OPTIONAL */ + struct CartesianAngle *xAngle; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EulerAnglesWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EulerAnglesWithConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_EulerAnglesWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_EulerAnglesWithConfidence_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianAngle.h" + +#endif /* _EulerAnglesWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventHistory.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventHistory.h new file mode 100644 index 000000000..94da2cdfe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventHistory.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _EventHistory_H_ +#define _EventHistory_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EventPoint; + +/* EventHistory */ +typedef struct EventHistory { + A_SEQUENCE_OF(struct EventPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EventHistory_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EventHistory; +extern asn_SET_OF_specifics_t asn_SPC_EventHistory_specs_1; +extern asn_TYPE_member_t asn_MBR_EventHistory_1[1]; +extern asn_per_constraints_t asn_PER_type_EventHistory_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/EventPoint.h" + +#endif /* _EventHistory_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventPoint.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventPoint.h new file mode 100644 index 000000000..c3cbfdc61 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventPoint.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DeltaReferencePosition.h" +#include "etsi_its_cpm_coding/PathDeltaTime.h" +#include "etsi_its_cpm_coding/InformationQuality.h" +#include +#ifndef _EventPoint_H_ +#define _EventPoint_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* EventPoint */ +typedef struct EventPoint { + DeltaReferencePosition_t eventPosition; + PathDeltaTime_t *eventDeltaTime; /* OPTIONAL */ + InformationQuality_t informationQuality; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EventPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EventPoint; +extern asn_SEQUENCE_specifics_t asn_SPC_EventPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_EventPoint_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EventPoint_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventZone.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventZone.h new file mode 100644 index 000000000..2a57b7b6a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/EventZone.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/EventHistory.h" +#ifndef _EventZone_H_ +#define _EventZone_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* EventZone */ +typedef EventHistory_t EventZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EventZone; +asn_struct_free_f EventZone_free; +asn_struct_print_f EventZone_print; +asn_constr_check_f EventZone_constraint; +ber_type_decoder_f EventZone_decode_ber; +der_type_encoder_f EventZone_encode_der; +xer_type_decoder_f EventZone_decode_xer; +xer_type_encoder_f EventZone_encode_xer; +jer_type_encoder_f EventZone_encode_jer; +oer_type_decoder_f EventZone_decode_oer; +oer_type_encoder_f EventZone_encode_oer; +per_type_decoder_f EventZone_decode_uper; +per_type_encoder_f EventZone_encode_uper; +per_type_decoder_f EventZone_decode_aper; +per_type_encoder_f EventZone_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EventZone_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext1.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext1.h new file mode 100644 index 000000000..4cdf4b7d9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext1.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include "etsi_its_cpm_coding/Ext2.h" +#include +#ifndef _Ext1_H_ +#define _Ext1_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Ext1_PR { + Ext1_PR_NOTHING, /* No components present */ + Ext1_PR_content, + Ext1_PR_extension +} Ext1_PR; + +/* Ext1 */ +typedef struct Ext1 { + Ext1_PR present; + union Ext1_u { + long content; + Ext2_t extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Ext1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Ext1; +extern asn_CHOICE_specifics_t asn_SPC_Ext1_specs_1; +extern asn_TYPE_member_t asn_MBR_Ext1_1[2]; +extern asn_per_constraints_t asn_PER_type_Ext1_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Ext1_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext2.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext2.h new file mode 100644 index 000000000..6875ec8c7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext2.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include "etsi_its_cpm_coding/Ext3.h" +#include +#ifndef _Ext2_H_ +#define _Ext2_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Ext2_PR { + Ext2_PR_NOTHING, /* No components present */ + Ext2_PR_content, + Ext2_PR_extension +} Ext2_PR; + +/* Ext2 */ +typedef struct Ext2 { + Ext2_PR present; + union Ext2_u { + long content; + Ext3_t extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Ext2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Ext2; +extern asn_CHOICE_specifics_t asn_SPC_Ext2_specs_1; +extern asn_TYPE_member_t asn_MBR_Ext2_1[2]; +extern asn_per_constraints_t asn_PER_type_Ext2_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Ext2_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext3.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext3.h new file mode 100644 index 000000000..28218aad4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Ext3.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Ext3_H_ +#define _Ext3_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Ext3 */ +typedef long Ext3_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Ext3_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Ext3; +asn_struct_free_f Ext3_free; +asn_struct_print_f Ext3_print; +asn_constr_check_f Ext3_constraint; +ber_type_decoder_f Ext3_decode_ber; +der_type_encoder_f Ext3_encode_der; +xer_type_decoder_f Ext3_decode_xer; +xer_type_encoder_f Ext3_encode_xer; +jer_type_encoder_f Ext3_encode_jer; +oer_type_decoder_f Ext3_decode_oer; +oer_type_encoder_f Ext3_encode_oer; +per_type_decoder_f Ext3_decode_uper; +per_type_encoder_f Ext3_encode_uper; +per_type_decoder_f Ext3_decode_aper; +per_type_encoder_f Ext3_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Ext3_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ExteriorLights.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ExteriorLights.h new file mode 100644 index 000000000..dd2c38a51 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ExteriorLights.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ExteriorLights_H_ +#define _ExteriorLights_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ExteriorLights { + ExteriorLights_lowBeamHeadlightsOn = 0, + ExteriorLights_highBeamHeadlightsOn = 1, + ExteriorLights_leftTurnSignalOn = 2, + ExteriorLights_rightTurnSignalOn = 3, + ExteriorLights_daytimeRunningLightsOn = 4, + ExteriorLights_reverseLightOn = 5, + ExteriorLights_fogLightOn = 6, + ExteriorLights_parkingLightsOn = 7 +} e_ExteriorLights; + +/* ExteriorLights */ +typedef BIT_STRING_t ExteriorLights_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExteriorLights_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExteriorLights; +asn_struct_free_f ExteriorLights_free; +asn_struct_print_f ExteriorLights_print; +asn_constr_check_f ExteriorLights_constraint; +ber_type_decoder_f ExteriorLights_decode_ber; +der_type_encoder_f ExteriorLights_encode_der; +xer_type_decoder_f ExteriorLights_decode_xer; +xer_type_encoder_f ExteriorLights_encode_xer; +jer_type_encoder_f ExteriorLights_encode_jer; +oer_type_decoder_f ExteriorLights_decode_oer; +oer_type_encoder_f ExteriorLights_encode_oer; +per_type_decoder_f ExteriorLights_decode_uper; +per_type_encoder_f ExteriorLights_encode_uper; +per_type_decoder_f ExteriorLights_decode_aper; +per_type_encoder_f ExteriorLights_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExteriorLights_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GeneralizedLanePosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GeneralizedLanePosition.h new file mode 100644 index 000000000..29f00c087 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GeneralizedLanePosition.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LanePosition.h" +#include "etsi_its_cpm_coding/LanePositionAndType.h" +#include "etsi_its_cpm_coding/TrafficIslandPosition.h" +#include "etsi_its_cpm_coding/MapPosition.h" +#include +#ifndef _GeneralizedLanePosition_H_ +#define _GeneralizedLanePosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GeneralizedLanePosition_PR { + GeneralizedLanePosition_PR_NOTHING, /* No components present */ + GeneralizedLanePosition_PR_trafficLanePosition, + GeneralizedLanePosition_PR_nonTrafficLanePosition, + GeneralizedLanePosition_PR_trafficIslandPosition, + GeneralizedLanePosition_PR_mapPosition + /* Extensions may appear below */ + +} GeneralizedLanePosition_PR; + +/* GeneralizedLanePosition */ +typedef struct GeneralizedLanePosition { + GeneralizedLanePosition_PR present; + union GeneralizedLanePosition_u { + LanePosition_t trafficLanePosition; + LanePositionAndType_t nonTrafficLanePosition; + TrafficIslandPosition_t trafficIslandPosition; + MapPosition_t mapPosition; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GeneralizedLanePosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GeneralizedLanePosition; + +#ifdef __cplusplus +} +#endif + +#endif /* _GeneralizedLanePosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GenerationDeltaTime.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GenerationDeltaTime.h new file mode 100644 index 000000000..a59e1a409 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GenerationDeltaTime.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _GenerationDeltaTime_H_ +#define _GenerationDeltaTime_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GenerationDeltaTime { + GenerationDeltaTime_oneMilliSec = 1 +} e_GenerationDeltaTime; + +/* GenerationDeltaTime */ +typedef long GenerationDeltaTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GenerationDeltaTime; +asn_struct_free_f GenerationDeltaTime_free; +asn_struct_print_f GenerationDeltaTime_print; +asn_constr_check_f GenerationDeltaTime_constraint; +ber_type_decoder_f GenerationDeltaTime_decode_ber; +der_type_encoder_f GenerationDeltaTime_encode_der; +xer_type_decoder_f GenerationDeltaTime_decode_xer; +xer_type_encoder_f GenerationDeltaTime_encode_xer; +jer_type_encoder_f GenerationDeltaTime_encode_jer; +oer_type_decoder_f GenerationDeltaTime_decode_oer; +oer_type_encoder_f GenerationDeltaTime_encode_oer; +per_type_decoder_f GenerationDeltaTime_decode_uper; +per_type_encoder_f GenerationDeltaTime_encode_uper; +per_type_decoder_f GenerationDeltaTime_decode_aper; +per_type_encoder_f GenerationDeltaTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GenerationDeltaTime_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GraphicString.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GraphicString.h new file mode 100644 index 000000000..3a553442d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/GraphicString.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _GraphicString_H_ +#define _GraphicString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t GraphicString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_GraphicString; +extern asn_TYPE_operation_t asn_OP_GraphicString; + +#define GraphicString_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define GraphicString_print OCTET_STRING_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define GraphicString_compare OCTET_STRING_compare + +#define GraphicString_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define GraphicString_decode_ber OCTET_STRING_decode_ber +#define GraphicString_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define GraphicString_decode_xer OCTET_STRING_decode_xer_hex +#define GraphicString_encode_xer OCTET_STRING_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define GraphicString_encode_jer OCTET_STRING_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define GraphicString_decode_uper OCTET_STRING_decode_uper +#define GraphicString_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define GraphicString_decode_aper OCTET_STRING_decode_aper +#define GraphicString_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GraphicString_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HardShoulderStatus.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HardShoulderStatus.h new file mode 100644 index 000000000..0019ca817 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HardShoulderStatus.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HardShoulderStatus_H_ +#define _HardShoulderStatus_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HardShoulderStatus { + HardShoulderStatus_availableForStopping = 0, + HardShoulderStatus_closed = 1, + HardShoulderStatus_availableForDriving = 2 +} e_HardShoulderStatus; + +/* HardShoulderStatus */ +typedef long HardShoulderStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HardShoulderStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HardShoulderStatus; +extern const asn_INTEGER_specifics_t asn_SPC_HardShoulderStatus_specs_1; +asn_struct_free_f HardShoulderStatus_free; +asn_struct_print_f HardShoulderStatus_print; +asn_constr_check_f HardShoulderStatus_constraint; +ber_type_decoder_f HardShoulderStatus_decode_ber; +der_type_encoder_f HardShoulderStatus_encode_der; +xer_type_decoder_f HardShoulderStatus_decode_xer; +xer_type_encoder_f HardShoulderStatus_encode_xer; +jer_type_encoder_f HardShoulderStatus_encode_jer; +oer_type_decoder_f HardShoulderStatus_decode_oer; +oer_type_encoder_f HardShoulderStatus_encode_oer; +per_type_decoder_f HardShoulderStatus_decode_uper; +per_type_encoder_f HardShoulderStatus_encode_uper; +per_type_decoder_f HardShoulderStatus_decode_aper; +per_type_encoder_f HardShoulderStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HardShoulderStatus_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h new file mode 100644 index 000000000..3daf151ef --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HazardousLocation_AnimalOnTheRoadSubCauseCode_H_ +#define _HazardousLocation_AnimalOnTheRoadSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HazardousLocation_AnimalOnTheRoadSubCauseCode { + HazardousLocation_AnimalOnTheRoadSubCauseCode_unavailable = 0, + HazardousLocation_AnimalOnTheRoadSubCauseCode_wildAnimals = 1, + HazardousLocation_AnimalOnTheRoadSubCauseCode_herdOfAnimals = 2, + HazardousLocation_AnimalOnTheRoadSubCauseCode_smallAnimals = 3, + HazardousLocation_AnimalOnTheRoadSubCauseCode_largeAnimals = 4 +} e_HazardousLocation_AnimalOnTheRoadSubCauseCode; + +/* HazardousLocation-AnimalOnTheRoadSubCauseCode */ +typedef long HazardousLocation_AnimalOnTheRoadSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HazardousLocation_AnimalOnTheRoadSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode; +asn_struct_free_f HazardousLocation_AnimalOnTheRoadSubCauseCode_free; +asn_struct_print_f HazardousLocation_AnimalOnTheRoadSubCauseCode_print; +asn_constr_check_f HazardousLocation_AnimalOnTheRoadSubCauseCode_constraint; +ber_type_decoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_decode_ber; +der_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_der; +xer_type_decoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_decode_xer; +xer_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_xer; +jer_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_jer; +oer_type_decoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_decode_oer; +oer_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_oer; +per_type_decoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_decode_uper; +per_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_uper; +per_type_decoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_decode_aper; +per_type_encoder_f HazardousLocation_AnimalOnTheRoadSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HazardousLocation_AnimalOnTheRoadSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h new file mode 100644 index 000000000..eee8b92e7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HazardousLocation_DangerousCurveSubCauseCode_H_ +#define _HazardousLocation_DangerousCurveSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HazardousLocation_DangerousCurveSubCauseCode { + HazardousLocation_DangerousCurveSubCauseCode_unavailable = 0, + HazardousLocation_DangerousCurveSubCauseCode_dangerousLeftTurnCurve = 1, + HazardousLocation_DangerousCurveSubCauseCode_dangerousRightTurnCurve = 2, + HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithUnknownTurningDirection = 3, + HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithLeftTurn = 4, + HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithRightTurn = 5 +} e_HazardousLocation_DangerousCurveSubCauseCode; + +/* HazardousLocation-DangerousCurveSubCauseCode */ +typedef long HazardousLocation_DangerousCurveSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HazardousLocation_DangerousCurveSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HazardousLocation_DangerousCurveSubCauseCode; +asn_struct_free_f HazardousLocation_DangerousCurveSubCauseCode_free; +asn_struct_print_f HazardousLocation_DangerousCurveSubCauseCode_print; +asn_constr_check_f HazardousLocation_DangerousCurveSubCauseCode_constraint; +ber_type_decoder_f HazardousLocation_DangerousCurveSubCauseCode_decode_ber; +der_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_der; +xer_type_decoder_f HazardousLocation_DangerousCurveSubCauseCode_decode_xer; +xer_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_xer; +jer_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_jer; +oer_type_decoder_f HazardousLocation_DangerousCurveSubCauseCode_decode_oer; +oer_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_oer; +per_type_decoder_f HazardousLocation_DangerousCurveSubCauseCode_decode_uper; +per_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_uper; +per_type_decoder_f HazardousLocation_DangerousCurveSubCauseCode_decode_aper; +per_type_encoder_f HazardousLocation_DangerousCurveSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HazardousLocation_DangerousCurveSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h new file mode 100644 index 000000000..fc33f46ca --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HazardousLocation_ObstacleOnTheRoadSubCauseCode_H_ +#define _HazardousLocation_ObstacleOnTheRoadSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HazardousLocation_ObstacleOnTheRoadSubCauseCode { + HazardousLocation_ObstacleOnTheRoadSubCauseCode_unavailable = 0, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_shedLoad = 1, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfVehicles = 2, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfTyres = 3, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_bigObjects = 4, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_fallenTrees = 5, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_hubCaps = 6, + HazardousLocation_ObstacleOnTheRoadSubCauseCode_waitingVehicles = 7 +} e_HazardousLocation_ObstacleOnTheRoadSubCauseCode; + +/* HazardousLocation-ObstacleOnTheRoadSubCauseCode */ +typedef long HazardousLocation_ObstacleOnTheRoadSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HazardousLocation_ObstacleOnTheRoadSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode; +asn_struct_free_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_free; +asn_struct_print_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_print; +asn_constr_check_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_constraint; +ber_type_decoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_decode_ber; +der_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_der; +xer_type_decoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_decode_xer; +xer_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_xer; +jer_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_jer; +oer_type_decoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_decode_oer; +oer_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_oer; +per_type_decoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_decode_uper; +per_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_uper; +per_type_decoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_decode_aper; +per_type_encoder_f HazardousLocation_ObstacleOnTheRoadSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HazardousLocation_ObstacleOnTheRoadSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h new file mode 100644 index 000000000..19275702e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HazardousLocation_SurfaceConditionSubCauseCode_H_ +#define _HazardousLocation_SurfaceConditionSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HazardousLocation_SurfaceConditionSubCauseCode { + HazardousLocation_SurfaceConditionSubCauseCode_unavailable = 0, + HazardousLocation_SurfaceConditionSubCauseCode_rockfalls = 1, + HazardousLocation_SurfaceConditionSubCauseCode_earthquakeDamage = 2, + HazardousLocation_SurfaceConditionSubCauseCode_sewerCollapse = 3, + HazardousLocation_SurfaceConditionSubCauseCode_subsidence = 4, + HazardousLocation_SurfaceConditionSubCauseCode_snowDrifts = 5, + HazardousLocation_SurfaceConditionSubCauseCode_stormDamage = 6, + HazardousLocation_SurfaceConditionSubCauseCode_burstPipe = 7, + HazardousLocation_SurfaceConditionSubCauseCode_volcanoEruption = 8, + HazardousLocation_SurfaceConditionSubCauseCode_fallingIce = 9, + HazardousLocation_SurfaceConditionSubCauseCode_fire = 10 +} e_HazardousLocation_SurfaceConditionSubCauseCode; + +/* HazardousLocation-SurfaceConditionSubCauseCode */ +typedef long HazardousLocation_SurfaceConditionSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HazardousLocation_SurfaceConditionSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode; +asn_struct_free_f HazardousLocation_SurfaceConditionSubCauseCode_free; +asn_struct_print_f HazardousLocation_SurfaceConditionSubCauseCode_print; +asn_constr_check_f HazardousLocation_SurfaceConditionSubCauseCode_constraint; +ber_type_decoder_f HazardousLocation_SurfaceConditionSubCauseCode_decode_ber; +der_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_der; +xer_type_decoder_f HazardousLocation_SurfaceConditionSubCauseCode_decode_xer; +xer_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_xer; +jer_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_jer; +oer_type_decoder_f HazardousLocation_SurfaceConditionSubCauseCode_decode_oer; +oer_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_oer; +per_type_decoder_f HazardousLocation_SurfaceConditionSubCauseCode_decode_uper; +per_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_uper; +per_type_decoder_f HazardousLocation_SurfaceConditionSubCauseCode_decode_aper; +per_type_encoder_f HazardousLocation_SurfaceConditionSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HazardousLocation_SurfaceConditionSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Heading.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Heading.h new file mode 100644 index 000000000..16055736d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Heading.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/HeadingValue.h" +#include "etsi_its_cpm_coding/HeadingConfidence.h" +#include +#ifndef _Heading_H_ +#define _Heading_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Heading */ +typedef struct Heading { + HeadingValue_t headingValue; + HeadingConfidence_t headingConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Heading_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Heading; + +#ifdef __cplusplus +} +#endif + +#endif /* _Heading_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingChangeIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingChangeIndication.h new file mode 100644 index 000000000..78d7f4a4e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingChangeIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/TurningDirection.h" +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" +#include +#ifndef _HeadingChangeIndication_H_ +#define _HeadingChangeIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* HeadingChangeIndication */ +typedef struct HeadingChangeIndication { + TurningDirection_t direction; + DeltaTimeTenthOfSecond_t actionDeltaTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HeadingChangeIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HeadingChangeIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeadingChangeIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingConfidence.h new file mode 100644 index 000000000..da059f89d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HeadingConfidence_H_ +#define _HeadingConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HeadingConfidence { + HeadingConfidence_outOfRange = 126, + HeadingConfidence_unavailable = 127 +} e_HeadingConfidence; + +/* HeadingConfidence */ +typedef long HeadingConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HeadingConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HeadingConfidence; +asn_struct_free_f HeadingConfidence_free; +asn_struct_print_f HeadingConfidence_print; +asn_constr_check_f HeadingConfidence_constraint; +ber_type_decoder_f HeadingConfidence_decode_ber; +der_type_encoder_f HeadingConfidence_encode_der; +xer_type_decoder_f HeadingConfidence_decode_xer; +xer_type_encoder_f HeadingConfidence_encode_xer; +jer_type_encoder_f HeadingConfidence_encode_jer; +oer_type_decoder_f HeadingConfidence_decode_oer; +oer_type_encoder_f HeadingConfidence_encode_oer; +per_type_decoder_f HeadingConfidence_decode_uper; +per_type_encoder_f HeadingConfidence_encode_uper; +per_type_decoder_f HeadingConfidence_decode_aper; +per_type_encoder_f HeadingConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeadingConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingValue.h new file mode 100644 index 000000000..cb8607398 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeadingValue.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HeadingValue_H_ +#define _HeadingValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HeadingValue { + HeadingValue_wgs84North = 0, + HeadingValue_wgs84East = 900, + HeadingValue_wgs84South = 1800, + HeadingValue_wgs84West = 2700, + HeadingValue_doNotUse = 3600, + HeadingValue_unavailable = 3601 +} e_HeadingValue; + +/* HeadingValue */ +typedef long HeadingValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HeadingValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HeadingValue; +asn_struct_free_f HeadingValue_free; +asn_struct_print_f HeadingValue_print; +asn_constr_check_f HeadingValue_constraint; +ber_type_decoder_f HeadingValue_decode_ber; +der_type_encoder_f HeadingValue_encode_der; +xer_type_decoder_f HeadingValue_decode_xer; +xer_type_encoder_f HeadingValue_encode_xer; +jer_type_encoder_f HeadingValue_encode_jer; +oer_type_decoder_f HeadingValue_decode_oer; +oer_type_encoder_f HeadingValue_encode_oer; +per_type_decoder_f HeadingValue_decode_uper; +per_type_encoder_f HeadingValue_encode_uper; +per_type_decoder_f HeadingValue_decode_aper; +per_type_encoder_f HeadingValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeadingValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeightLonCarr.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeightLonCarr.h new file mode 100644 index 000000000..48cb13339 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HeightLonCarr.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HeightLonCarr_H_ +#define _HeightLonCarr_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HeightLonCarr { + HeightLonCarr_outOfRange = 99, + HeightLonCarr_unavailable = 100 +} e_HeightLonCarr; + +/* HeightLonCarr */ +typedef long HeightLonCarr_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HeightLonCarr; +asn_struct_free_f HeightLonCarr_free; +asn_struct_print_f HeightLonCarr_print; +asn_constr_check_f HeightLonCarr_constraint; +ber_type_decoder_f HeightLonCarr_decode_ber; +der_type_encoder_f HeightLonCarr_encode_der; +xer_type_decoder_f HeightLonCarr_decode_xer; +xer_type_encoder_f HeightLonCarr_encode_xer; +jer_type_encoder_f HeightLonCarr_encode_jer; +oer_type_decoder_f HeightLonCarr_decode_oer; +oer_type_encoder_f HeightLonCarr_encode_oer; +per_type_decoder_f HeightLonCarr_decode_uper; +per_type_encoder_f HeightLonCarr_encode_uper; +per_type_decoder_f HeightLonCarr_decode_aper; +per_type_encoder_f HeightLonCarr_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HeightLonCarr_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h new file mode 100644 index 000000000..dab230c14 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HumanPresenceOnTheRoadSubCauseCode_H_ +#define _HumanPresenceOnTheRoadSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HumanPresenceOnTheRoadSubCauseCode { + HumanPresenceOnTheRoadSubCauseCode_unavailable = 0, + HumanPresenceOnTheRoadSubCauseCode_childrenOnRoadway = 1, + HumanPresenceOnTheRoadSubCauseCode_cyclistOnRoadway = 2, + HumanPresenceOnTheRoadSubCauseCode_motorcyclistOnRoadway = 3 +} e_HumanPresenceOnTheRoadSubCauseCode; + +/* HumanPresenceOnTheRoadSubCauseCode */ +typedef long HumanPresenceOnTheRoadSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HumanPresenceOnTheRoadSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HumanPresenceOnTheRoadSubCauseCode; +asn_struct_free_f HumanPresenceOnTheRoadSubCauseCode_free; +asn_struct_print_f HumanPresenceOnTheRoadSubCauseCode_print; +asn_constr_check_f HumanPresenceOnTheRoadSubCauseCode_constraint; +ber_type_decoder_f HumanPresenceOnTheRoadSubCauseCode_decode_ber; +der_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_der; +xer_type_decoder_f HumanPresenceOnTheRoadSubCauseCode_decode_xer; +xer_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_xer; +jer_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_jer; +oer_type_decoder_f HumanPresenceOnTheRoadSubCauseCode_decode_oer; +oer_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_oer; +per_type_decoder_f HumanPresenceOnTheRoadSubCauseCode_decode_uper; +per_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_uper; +per_type_decoder_f HumanPresenceOnTheRoadSubCauseCode_decode_aper; +per_type_encoder_f HumanPresenceOnTheRoadSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HumanPresenceOnTheRoadSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanProblemSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanProblemSubCauseCode.h new file mode 100644 index 000000000..f42e15887 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/HumanProblemSubCauseCode.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _HumanProblemSubCauseCode_H_ +#define _HumanProblemSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HumanProblemSubCauseCode { + HumanProblemSubCauseCode_unavailable = 0, + HumanProblemSubCauseCode_glycemiaProblem = 1, + HumanProblemSubCauseCode_heartProblem = 2 +} e_HumanProblemSubCauseCode; + +/* HumanProblemSubCauseCode */ +typedef long HumanProblemSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HumanProblemSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HumanProblemSubCauseCode; +asn_struct_free_f HumanProblemSubCauseCode_free; +asn_struct_print_f HumanProblemSubCauseCode_print; +asn_constr_check_f HumanProblemSubCauseCode_constraint; +ber_type_decoder_f HumanProblemSubCauseCode_decode_ber; +der_type_encoder_f HumanProblemSubCauseCode_encode_der; +xer_type_decoder_f HumanProblemSubCauseCode_decode_xer; +xer_type_encoder_f HumanProblemSubCauseCode_encode_xer; +jer_type_encoder_f HumanProblemSubCauseCode_encode_jer; +oer_type_decoder_f HumanProblemSubCauseCode_decode_oer; +oer_type_encoder_f HumanProblemSubCauseCode_encode_oer; +per_type_decoder_f HumanProblemSubCauseCode_decode_uper; +per_type_encoder_f HumanProblemSubCauseCode_encode_uper; +per_type_decoder_f HumanProblemSubCauseCode_decode_aper; +per_type_encoder_f HumanProblemSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HumanProblemSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IA5String.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IA5String.h new file mode 100644 index 000000000..ffbd91e90 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IA5String.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _IA5String_H_ +#define _IA5String_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t IA5String_t; /* Implemented via OCTET STRING */ + +/* + * IA5String ASN.1 type definition. + */ +extern asn_TYPE_descriptor_t asn_DEF_IA5String; +extern asn_TYPE_operation_t asn_OP_IA5String; + +#define IA5String_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define IA5String_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define IA5String_compare OCTET_STRING_compare + +asn_constr_check_f IA5String_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define IA5String_decode_ber OCTET_STRING_decode_ber +#define IA5String_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define IA5String_decode_xer OCTET_STRING_decode_xer_utf8 +#define IA5String_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define IA5String_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define IA5String_decode_uper OCTET_STRING_decode_uper +#define IA5String_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define IA5String_decode_aper OCTET_STRING_decode_aper +#define IA5String_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _IA5String_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/INTEGER.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/INTEGER.h new file mode 100644 index 000000000..cecab90ac --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/INTEGER.h @@ -0,0 +1,139 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +ssize_t INTEGER__dump(const asn_TYPE_descriptor_t *td, + const INTEGER_t *st, + asn_app_consume_bytes_f *cb, + void *app_key, int plainOrXER); + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f INTEGER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f INTEGER_compare; + +#define INTEGER_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define INTEGER_decode_ber ber_decode_primitive +der_type_encoder_f INTEGER_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f INTEGER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f INTEGER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier1B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier1B.h new file mode 100644 index 000000000..34bd2d790 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier1B.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Identifier1B_H_ +#define _Identifier1B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Identifier1B */ +typedef long Identifier1B_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Identifier1B_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Identifier1B; +asn_struct_free_f Identifier1B_free; +asn_struct_print_f Identifier1B_print; +asn_constr_check_f Identifier1B_constraint; +ber_type_decoder_f Identifier1B_decode_ber; +der_type_encoder_f Identifier1B_encode_der; +xer_type_decoder_f Identifier1B_decode_xer; +xer_type_encoder_f Identifier1B_encode_xer; +jer_type_encoder_f Identifier1B_encode_jer; +oer_type_decoder_f Identifier1B_decode_oer; +oer_type_encoder_f Identifier1B_encode_oer; +per_type_decoder_f Identifier1B_decode_uper; +per_type_encoder_f Identifier1B_encode_uper; +per_type_decoder_f Identifier1B_decode_aper; +per_type_encoder_f Identifier1B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Identifier1B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier2B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier2B.h new file mode 100644 index 000000000..d1e5c29df --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Identifier2B.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Identifier2B_H_ +#define _Identifier2B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Identifier2B */ +typedef long Identifier2B_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Identifier2B_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Identifier2B; +asn_struct_free_f Identifier2B_free; +asn_struct_print_f Identifier2B_print; +asn_constr_check_f Identifier2B_constraint; +ber_type_decoder_f Identifier2B_decode_ber; +der_type_encoder_f Identifier2B_encode_der; +xer_type_decoder_f Identifier2B_decode_xer; +xer_type_encoder_f Identifier2B_encode_xer; +jer_type_encoder_f Identifier2B_encode_jer; +oer_type_decoder_f Identifier2B_decode_oer; +oer_type_encoder_f Identifier2B_encode_oer; +per_type_decoder_f Identifier2B_decode_uper; +per_type_encoder_f Identifier2B_encode_uper; +per_type_decoder_f Identifier2B_decode_aper; +per_type_encoder_f Identifier2B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Identifier2B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InformationQuality.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InformationQuality.h new file mode 100644 index 000000000..3368eff8a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InformationQuality.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _InformationQuality_H_ +#define _InformationQuality_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* InformationQuality */ +typedef long InformationQuality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InformationQuality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InformationQuality; +asn_struct_free_f InformationQuality_free; +asn_struct_print_f InformationQuality_print; +asn_constr_check_f InformationQuality_constraint; +ber_type_decoder_f InformationQuality_decode_ber; +der_type_encoder_f InformationQuality_encode_der; +xer_type_decoder_f InformationQuality_decode_xer; +xer_type_encoder_f InformationQuality_encode_xer; +jer_type_encoder_f InformationQuality_encode_jer; +oer_type_decoder_f InformationQuality_decode_oer; +oer_type_encoder_f InformationQuality_encode_oer; +per_type_decoder_f InformationQuality_decode_uper; +per_type_encoder_f InformationQuality_encode_uper; +per_type_decoder_f InformationQuality_decode_aper; +per_type_encoder_f InformationQuality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InformationQuality_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementChannel.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementChannel.h new file mode 100644 index 000000000..7f48dc864 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementChannel.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _InterferenceManagementChannel_H_ +#define _InterferenceManagementChannel_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterferenceManagementChannel */ +typedef struct InterferenceManagementChannel { + long centreFrequency; + long channelWidth; + long exponent; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementChannel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementChannel; +extern asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementChannel_specs_1; +extern asn_TYPE_member_t asn_MBR_InterferenceManagementChannel_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterferenceManagementChannel_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfo.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfo.h new file mode 100644 index 000000000..f4101661b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfo.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _InterferenceManagementInfo_H_ +#define _InterferenceManagementInfo_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct InterferenceManagementInfoPerChannel; + +/* InterferenceManagementInfo */ +typedef struct InterferenceManagementInfo { + A_SEQUENCE_OF(struct InterferenceManagementInfoPerChannel) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementInfo; +extern asn_SET_OF_specifics_t asn_SPC_InterferenceManagementInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_InterferenceManagementInfo_1[1]; +extern asn_per_constraints_t asn_PER_type_InterferenceManagementInfo_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h" + +#endif /* _InterferenceManagementInfo_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h new file mode 100644 index 000000000..d46550ee8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/InterferenceManagementChannel.h" +#include "etsi_its_cpm_coding/InterferenceManagementZoneType.h" +#include "etsi_its_cpm_coding/TimestampIts.h" +#include +#ifndef _InterferenceManagementInfoPerChannel_H_ +#define _InterferenceManagementInfoPerChannel_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MitigationForTechnologies; + +/* InterferenceManagementInfoPerChannel */ +typedef struct InterferenceManagementInfoPerChannel { + InterferenceManagementChannel_t interferenceManagementChannel; + InterferenceManagementZoneType_t interferenceManagementZoneType; + struct MitigationForTechnologies *interferenceManagementMitigationType; /* OPTIONAL */ + TimestampIts_t *expiryTime; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementInfoPerChannel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementInfoPerChannel; +extern asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementInfoPerChannel_specs_1; +extern asn_TYPE_member_t asn_MBR_InterferenceManagementInfoPerChannel_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/MitigationForTechnologies.h" + +#endif /* _InterferenceManagementInfoPerChannel_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZone.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZone.h new file mode 100644 index 000000000..6ad19f5eb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZone.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h" +#include "etsi_its_cpm_coding/InterferenceManagementInfo.h" +#include +#ifndef _InterferenceManagementZone_H_ +#define _InterferenceManagementZone_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterferenceManagementZone */ +typedef struct InterferenceManagementZone { + InterferenceManagementZoneDefinition_t zoneDefinition; + InterferenceManagementInfo_t managementInfo; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZone; +extern asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementZone_specs_1; +extern asn_TYPE_member_t asn_MBR_InterferenceManagementZone_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterferenceManagementZone_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h new file mode 100644 index 000000000..6fc4d0373 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Latitude.h" +#include "etsi_its_cpm_coding/Longitude.h" +#include "etsi_its_cpm_coding/ProtectedZoneId.h" +#include +#ifndef _InterferenceManagementZoneDefinition_H_ +#define _InterferenceManagementZoneDefinition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Shape; + +/* InterferenceManagementZoneDefinition */ +typedef struct InterferenceManagementZoneDefinition { + Latitude_t interferenceManagementZoneLatitude; + Longitude_t interferenceManagementZoneLongitude; + ProtectedZoneId_t *interferenceManagementZoneId; /* OPTIONAL */ + struct Shape *interferenceManagementZoneShape; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementZoneDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZoneDefinition; +extern asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementZoneDefinition_specs_1; +extern asn_TYPE_member_t asn_MBR_InterferenceManagementZoneDefinition_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/Shape.h" + +#endif /* _InterferenceManagementZoneDefinition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneType.h new file mode 100644 index 000000000..dc866cfab --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZoneType.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _InterferenceManagementZoneType_H_ +#define _InterferenceManagementZoneType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterferenceManagementZoneType { + InterferenceManagementZoneType_permanentCenDsrcTolling = 0, + InterferenceManagementZoneType_temporaryCenDsrcTolling = 1, + InterferenceManagementZoneType_unavailable = 2, + InterferenceManagementZoneType_urbanRail = 3, + InterferenceManagementZoneType_satelliteStation = 4, + InterferenceManagementZoneType_fixedLinks = 5 + /* + * Enumeration is extensible + */ +} e_InterferenceManagementZoneType; + +/* InterferenceManagementZoneType */ +typedef long InterferenceManagementZoneType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterferenceManagementZoneType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZoneType; +extern const asn_INTEGER_specifics_t asn_SPC_InterferenceManagementZoneType_specs_1; +asn_struct_free_f InterferenceManagementZoneType_free; +asn_struct_print_f InterferenceManagementZoneType_print; +asn_constr_check_f InterferenceManagementZoneType_constraint; +ber_type_decoder_f InterferenceManagementZoneType_decode_ber; +der_type_encoder_f InterferenceManagementZoneType_encode_der; +xer_type_decoder_f InterferenceManagementZoneType_decode_xer; +xer_type_encoder_f InterferenceManagementZoneType_encode_xer; +jer_type_encoder_f InterferenceManagementZoneType_encode_jer; +oer_type_decoder_f InterferenceManagementZoneType_decode_oer; +oer_type_encoder_f InterferenceManagementZoneType_encode_oer; +per_type_decoder_f InterferenceManagementZoneType_decode_uper; +per_type_encoder_f InterferenceManagementZoneType_encode_uper; +per_type_decoder_f InterferenceManagementZoneType_decode_aper; +per_type_encoder_f InterferenceManagementZoneType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterferenceManagementZoneType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZones.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZones.h new file mode 100644 index 000000000..306948b2c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/InterferenceManagementZones.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _InterferenceManagementZones_H_ +#define _InterferenceManagementZones_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct InterferenceManagementZone; + +/* InterferenceManagementZones */ +typedef struct InterferenceManagementZones { + A_SEQUENCE_OF(struct InterferenceManagementZone) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterferenceManagementZones_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZones; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/InterferenceManagementZone.h" + +#endif /* _InterferenceManagementZones_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IntersectionReferenceId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IntersectionReferenceId.h new file mode 100644 index 000000000..a333ff642 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/IntersectionReferenceId.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier2B.h" +#include +#ifndef _IntersectionReferenceId_H_ +#define _IntersectionReferenceId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* IntersectionReferenceId */ +typedef struct IntersectionReferenceId { + Identifier2B_t *region; /* OPTIONAL */ + Identifier2B_t id; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} IntersectionReferenceId_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_IntersectionReferenceId; +extern asn_SEQUENCE_specifics_t asn_SPC_IntersectionReferenceId_specs_1; +extern asn_TYPE_member_t asn_MBR_IntersectionReferenceId_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntersectionReferenceId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Iso3833VehicleType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Iso3833VehicleType.h new file mode 100644 index 000000000..82901c4f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Iso3833VehicleType.h @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Iso3833VehicleType_H_ +#define _Iso3833VehicleType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Iso3833VehicleType { + Iso3833VehicleType_passengerCar = 0, + Iso3833VehicleType_saloon = 1, + Iso3833VehicleType_convertibleSaloon = 2, + Iso3833VehicleType_pullmanSaloon = 3, + Iso3833VehicleType_stationWagon = 4, + Iso3833VehicleType_truckStationWagon = 5, + Iso3833VehicleType_coupe = 6, + Iso3833VehicleType_convertible = 7, + Iso3833VehicleType_multipurposePassengerCar = 8, + Iso3833VehicleType_forwardControlPassengerCar = 9, + Iso3833VehicleType_specialPassengerCar = 10, + Iso3833VehicleType_bus = 11, + Iso3833VehicleType_minibus = 12, + Iso3833VehicleType_urbanBus = 13, + Iso3833VehicleType_interurbanCoach = 14, + Iso3833VehicleType_longDistanceCoach = 15, + Iso3833VehicleType_articulatedBus = 16, + Iso3833VehicleType_trolleyBus = 17, + Iso3833VehicleType_specialBus = 18, + Iso3833VehicleType_commercialVehicle = 19, + Iso3833VehicleType_specialCommercialVehicle = 20, + Iso3833VehicleType_specialVehicle = 21, + Iso3833VehicleType_trailingTowingVehicle = 22, + Iso3833VehicleType_semiTrailerTowingVehicle = 23, + Iso3833VehicleType_trailer = 24, + Iso3833VehicleType_busTrailer = 25, + Iso3833VehicleType_generalPurposeTrailer = 26, + Iso3833VehicleType_caravan = 27, + Iso3833VehicleType_specialTrailer = 28, + Iso3833VehicleType_semiTrailer = 29, + Iso3833VehicleType_busSemiTrailer = 30, + Iso3833VehicleType_generalPurposeSemiTrailer = 31, + Iso3833VehicleType_specialSemiTrailer = 32, + Iso3833VehicleType_roadTrain = 33, + Iso3833VehicleType_passengerRoadTrain = 34, + Iso3833VehicleType_articulatedRoadTrain = 35, + Iso3833VehicleType_doubleRoadTrain = 36, + Iso3833VehicleType_compositeRoadTrain = 37, + Iso3833VehicleType_specialRoadTrain = 38, + Iso3833VehicleType_moped = 39, + Iso3833VehicleType_motorCycle = 40 +} e_Iso3833VehicleType; + +/* Iso3833VehicleType */ +typedef long Iso3833VehicleType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Iso3833VehicleType; +asn_struct_free_f Iso3833VehicleType_free; +asn_struct_print_f Iso3833VehicleType_print; +asn_constr_check_f Iso3833VehicleType_constraint; +ber_type_decoder_f Iso3833VehicleType_decode_ber; +der_type_encoder_f Iso3833VehicleType_encode_der; +xer_type_decoder_f Iso3833VehicleType_decode_xer; +xer_type_encoder_f Iso3833VehicleType_encode_xer; +jer_type_encoder_f Iso3833VehicleType_encode_jer; +oer_type_decoder_f Iso3833VehicleType_decode_oer; +oer_type_encoder_f Iso3833VehicleType_encode_oer; +per_type_decoder_f Iso3833VehicleType_decode_uper; +per_type_encoder_f Iso3833VehicleType_encode_uper; +per_type_decoder_f Iso3833VehicleType_decode_aper; +per_type_encoder_f Iso3833VehicleType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Iso3833VehicleType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItineraryPath.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItineraryPath.h new file mode 100644 index 000000000..a173a7869 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItineraryPath.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _ItineraryPath_H_ +#define _ItineraryPath_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReferencePosition; + +/* ItineraryPath */ +typedef struct ItineraryPath { + A_SEQUENCE_OF(struct ReferencePosition) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ItineraryPath_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ItineraryPath; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/ReferencePosition.h" + +#endif /* _ItineraryPath_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItsPduHeader.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItsPduHeader.h new file mode 100644 index 000000000..69a8e6644 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ItsPduHeader.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/OrdinalNumber1B.h" +#include "etsi_its_cpm_coding/MessageId.h" +#include "etsi_its_cpm_coding/StationId.h" +#include +#ifndef _ItsPduHeader_H_ +#define _ItsPduHeader_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ItsPduHeader */ +typedef struct ItsPduHeader { + OrdinalNumber1B_t protocolVersion; + MessageId_t messageId; + StationId_t stationId; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ItsPduHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ItsPduHeader; +extern asn_SEQUENCE_specifics_t asn_SPC_ItsPduHeader_specs_1; +extern asn_TYPE_member_t asn_MBR_ItsPduHeader_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ItsPduHeader_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePosition.h new file mode 100644 index 000000000..debdcb1ac --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePosition.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LanePosition_H_ +#define _LanePosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LanePosition { + LanePosition_offTheRoad = -1, + LanePosition_innerHardShoulder = 0, + LanePosition_outerHardShoulder = 14 +} e_LanePosition; + +/* LanePosition */ +typedef long LanePosition_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LanePosition_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LanePosition; +asn_struct_free_f LanePosition_free; +asn_struct_print_f LanePosition_print; +asn_constr_check_f LanePosition_constraint; +ber_type_decoder_f LanePosition_decode_ber; +der_type_encoder_f LanePosition_encode_der; +xer_type_decoder_f LanePosition_decode_xer; +xer_type_encoder_f LanePosition_encode_xer; +jer_type_encoder_f LanePosition_encode_jer; +oer_type_decoder_f LanePosition_decode_oer; +oer_type_encoder_f LanePosition_encode_oer; +per_type_decoder_f LanePosition_decode_uper; +per_type_encoder_f LanePosition_encode_uper; +per_type_decoder_f LanePosition_decode_aper; +per_type_encoder_f LanePosition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LanePosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePositionAndType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePositionAndType.h new file mode 100644 index 000000000..aa63a3ca8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LanePositionAndType.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LanePosition.h" +#include "etsi_its_cpm_coding/LaneType.h" +#include +#ifndef _LanePositionAndType_H_ +#define _LanePositionAndType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LanePositionAndType */ +typedef struct LanePositionAndType { + LanePosition_t transversalPosition; + LaneType_t laneType; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LanePositionAndType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LanePositionAndType; +extern asn_SEQUENCE_specifics_t asn_SPC_LanePositionAndType_specs_1; +extern asn_TYPE_member_t asn_MBR_LanePositionAndType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LanePositionAndType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneType.h new file mode 100644 index 000000000..341cd5324 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneType.h @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LaneType_H_ +#define _LaneType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LaneType { + LaneType_traffic = 0, + LaneType_through = 1, + LaneType_reversible = 2, + LaneType_acceleration = 3, + LaneType_deceleration = 4, + LaneType_leftHandTurning = 5, + LaneType_rightHandTurning = 6, + LaneType_dedicatedVehicle = 7, + LaneType_bus = 8, + LaneType_taxi = 9, + LaneType_hov = 10, + LaneType_hot = 11, + LaneType_pedestrian = 12, + LaneType_cycleLane = 13, + LaneType_median = 14, + LaneType_striping = 15, + LaneType_trackedVehicle = 16, + LaneType_parking = 17, + LaneType_emergency = 18, + LaneType_verge = 19, + LaneType_minimumRiskManoeuvre = 20, + LaneType_unknown = 31 +} e_LaneType; + +/* LaneType */ +typedef long LaneType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LaneType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LaneType; +asn_struct_free_f LaneType_free; +asn_struct_print_f LaneType_print; +asn_constr_check_f LaneType_constraint; +ber_type_decoder_f LaneType_decode_ber; +der_type_encoder_f LaneType_encode_der; +xer_type_decoder_f LaneType_decode_xer; +xer_type_encoder_f LaneType_encode_xer; +jer_type_encoder_f LaneType_encode_jer; +oer_type_decoder_f LaneType_decode_oer; +oer_type_encoder_f LaneType_encode_oer; +per_type_decoder_f LaneType_decode_uper; +per_type_encoder_f LaneType_encode_uper; +per_type_decoder_f LaneType_decode_aper; +per_type_encoder_f LaneType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneWidth.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneWidth.h new file mode 100644 index 000000000..3a669d129 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LaneWidth.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LaneWidth_H_ +#define _LaneWidth_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LaneWidth */ +typedef long LaneWidth_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LaneWidth; +asn_struct_free_f LaneWidth_free; +asn_struct_print_f LaneWidth_print; +asn_constr_check_f LaneWidth_constraint; +ber_type_decoder_f LaneWidth_decode_ber; +der_type_encoder_f LaneWidth_encode_der; +xer_type_decoder_f LaneWidth_decode_xer; +xer_type_encoder_f LaneWidth_encode_xer; +jer_type_encoder_f LaneWidth_encode_jer; +oer_type_decoder_f LaneWidth_decode_oer; +oer_type_encoder_f LaneWidth_encode_oer; +per_type_decoder_f LaneWidth_decode_uper; +per_type_encoder_f LaneWidth_encode_uper; +per_type_decoder_f LaneWidth_decode_aper; +per_type_encoder_f LaneWidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LaneWidth_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAcceleration.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAcceleration.h new file mode 100644 index 000000000..9767bae13 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAcceleration.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LateralAccelerationValue.h" +#include "etsi_its_cpm_coding/AccelerationConfidence.h" +#include +#ifndef _LateralAcceleration_H_ +#define _LateralAcceleration_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LateralAcceleration */ +typedef struct LateralAcceleration { + LateralAccelerationValue_t lateralAccelerationValue; + AccelerationConfidence_t lateralAccelerationConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LateralAcceleration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LateralAcceleration; + +#ifdef __cplusplus +} +#endif + +#endif /* _LateralAcceleration_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAccelerationValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAccelerationValue.h new file mode 100644 index 000000000..b5c6e5715 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LateralAccelerationValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LateralAccelerationValue_H_ +#define _LateralAccelerationValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LateralAccelerationValue { + LateralAccelerationValue_negativeOutOfRange = -160, + LateralAccelerationValue_positiveOutOfRange = 160, + LateralAccelerationValue_unavailable = 161 +} e_LateralAccelerationValue; + +/* LateralAccelerationValue */ +typedef long LateralAccelerationValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LateralAccelerationValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LateralAccelerationValue; +asn_struct_free_f LateralAccelerationValue_free; +asn_struct_print_f LateralAccelerationValue_print; +asn_constr_check_f LateralAccelerationValue_constraint; +ber_type_decoder_f LateralAccelerationValue_decode_ber; +der_type_encoder_f LateralAccelerationValue_encode_der; +xer_type_decoder_f LateralAccelerationValue_decode_xer; +xer_type_encoder_f LateralAccelerationValue_encode_xer; +jer_type_encoder_f LateralAccelerationValue_encode_jer; +oer_type_decoder_f LateralAccelerationValue_decode_oer; +oer_type_encoder_f LateralAccelerationValue_encode_oer; +per_type_decoder_f LateralAccelerationValue_decode_uper; +per_type_encoder_f LateralAccelerationValue_encode_uper; +per_type_decoder_f LateralAccelerationValue_decode_aper; +per_type_encoder_f LateralAccelerationValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LateralAccelerationValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Latitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Latitude.h new file mode 100644 index 000000000..18af256bc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Latitude.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Latitude_H_ +#define _Latitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Latitude { + Latitude_unavailable = 900000001 +} e_Latitude; + +/* Latitude */ +typedef long Latitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Latitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Latitude; +asn_struct_free_f Latitude_free; +asn_struct_print_f Latitude_print; +asn_constr_check_f Latitude_constraint; +ber_type_decoder_f Latitude_decode_ber; +der_type_encoder_f Latitude_encode_der; +xer_type_decoder_f Latitude_decode_xer; +xer_type_encoder_f Latitude_encode_xer; +jer_type_encoder_f Latitude_encode_jer; +oer_type_decoder_f Latitude_decode_oer; +oer_type_encoder_f Latitude_encode_oer; +per_type_decoder_f Latitude_decode_uper; +per_type_encoder_f Latitude_encode_uper; +per_type_decoder_f Latitude_decode_aper; +per_type_encoder_f Latitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Latitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LightBarSirenInUse.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LightBarSirenInUse.h new file mode 100644 index 000000000..99782e7f1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LightBarSirenInUse.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LightBarSirenInUse_H_ +#define _LightBarSirenInUse_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LightBarSirenInUse { + LightBarSirenInUse_lightBarActivated = 0, + LightBarSirenInUse_sirenActivated = 1 +} e_LightBarSirenInUse; + +/* LightBarSirenInUse */ +typedef BIT_STRING_t LightBarSirenInUse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LightBarSirenInUse; +asn_struct_free_f LightBarSirenInUse_free; +asn_struct_print_f LightBarSirenInUse_print; +asn_constr_check_f LightBarSirenInUse_constraint; +ber_type_decoder_f LightBarSirenInUse_decode_ber; +der_type_encoder_f LightBarSirenInUse_encode_der; +xer_type_decoder_f LightBarSirenInUse_decode_xer; +xer_type_encoder_f LightBarSirenInUse_encode_xer; +jer_type_encoder_f LightBarSirenInUse_encode_jer; +oer_type_decoder_f LightBarSirenInUse_decode_oer; +oer_type_encoder_f LightBarSirenInUse_encode_oer; +per_type_decoder_f LightBarSirenInUse_decode_uper; +per_type_encoder_f LightBarSirenInUse_encode_uper; +per_type_decoder_f LightBarSirenInUse_decode_aper; +per_type_encoder_f LightBarSirenInUse_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LightBarSirenInUse_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Longitude.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Longitude.h new file mode 100644 index 000000000..857e4d147 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Longitude.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Longitude_H_ +#define _Longitude_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Longitude { + Longitude_valueNotUsed = -1800000000, + Longitude_unavailable = 1800000001 +} e_Longitude; + +/* Longitude */ +typedef long Longitude_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Longitude_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Longitude; +asn_struct_free_f Longitude_free; +asn_struct_print_f Longitude_print; +asn_constr_check_f Longitude_constraint; +ber_type_decoder_f Longitude_decode_ber; +der_type_encoder_f Longitude_encode_der; +xer_type_decoder_f Longitude_decode_xer; +xer_type_encoder_f Longitude_encode_xer; +jer_type_encoder_f Longitude_encode_jer; +oer_type_decoder_f Longitude_decode_oer; +oer_type_encoder_f Longitude_encode_oer; +per_type_decoder_f Longitude_decode_uper; +per_type_encoder_f Longitude_encode_uper; +per_type_decoder_f Longitude_decode_aper; +per_type_encoder_f Longitude_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Longitude_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAcceleration.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAcceleration.h new file mode 100644 index 000000000..45e1c6de7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAcceleration.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LongitudinalAccelerationValue.h" +#include "etsi_its_cpm_coding/AccelerationConfidence.h" +#include +#ifndef _LongitudinalAcceleration_H_ +#define _LongitudinalAcceleration_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LongitudinalAcceleration */ +typedef struct LongitudinalAcceleration { + LongitudinalAccelerationValue_t longitudinalAccelerationValue; + AccelerationConfidence_t longitudinalAccelerationConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LongitudinalAcceleration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LongitudinalAcceleration; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudinalAcceleration_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAccelerationValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAccelerationValue.h new file mode 100644 index 000000000..0be4272b3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalAccelerationValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LongitudinalAccelerationValue_H_ +#define _LongitudinalAccelerationValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LongitudinalAccelerationValue { + LongitudinalAccelerationValue_negativeOutOfRange = -160, + LongitudinalAccelerationValue_positiveOutOfRange = 160, + LongitudinalAccelerationValue_unavailable = 161 +} e_LongitudinalAccelerationValue; + +/* LongitudinalAccelerationValue */ +typedef long LongitudinalAccelerationValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LongitudinalAccelerationValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LongitudinalAccelerationValue; +asn_struct_free_f LongitudinalAccelerationValue_free; +asn_struct_print_f LongitudinalAccelerationValue_print; +asn_constr_check_f LongitudinalAccelerationValue_constraint; +ber_type_decoder_f LongitudinalAccelerationValue_decode_ber; +der_type_encoder_f LongitudinalAccelerationValue_encode_der; +xer_type_decoder_f LongitudinalAccelerationValue_decode_xer; +xer_type_encoder_f LongitudinalAccelerationValue_encode_xer; +jer_type_encoder_f LongitudinalAccelerationValue_encode_jer; +oer_type_decoder_f LongitudinalAccelerationValue_decode_oer; +oer_type_encoder_f LongitudinalAccelerationValue_encode_oer; +per_type_decoder_f LongitudinalAccelerationValue_decode_uper; +per_type_encoder_f LongitudinalAccelerationValue_encode_uper; +per_type_decoder_f LongitudinalAccelerationValue_decode_aper; +per_type_encoder_f LongitudinalAccelerationValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudinalAccelerationValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePosition.h new file mode 100644 index 000000000..8295a0120 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePosition.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LongitudinalLanePositionValue.h" +#include "etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h" +#include +#ifndef _LongitudinalLanePosition_H_ +#define _LongitudinalLanePosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LongitudinalLanePosition */ +typedef struct LongitudinalLanePosition { + LongitudinalLanePositionValue_t longitudinalLanePositionValue; + LongitudinalLanePositionConfidence_t longitudinalLanePositionConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LongitudinalLanePosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePosition; +extern asn_SEQUENCE_specifics_t asn_SPC_LongitudinalLanePosition_specs_1; +extern asn_TYPE_member_t asn_MBR_LongitudinalLanePosition_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudinalLanePosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h new file mode 100644 index 000000000..1d002e5dd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LongitudinalLanePositionConfidence_H_ +#define _LongitudinalLanePositionConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LongitudinalLanePositionConfidence { + LongitudinalLanePositionConfidence_outOfRange = 1022, + LongitudinalLanePositionConfidence_unavailable = 1023 +} e_LongitudinalLanePositionConfidence; + +/* LongitudinalLanePositionConfidence */ +typedef long LongitudinalLanePositionConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LongitudinalLanePositionConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePositionConfidence; +asn_struct_free_f LongitudinalLanePositionConfidence_free; +asn_struct_print_f LongitudinalLanePositionConfidence_print; +asn_constr_check_f LongitudinalLanePositionConfidence_constraint; +ber_type_decoder_f LongitudinalLanePositionConfidence_decode_ber; +der_type_encoder_f LongitudinalLanePositionConfidence_encode_der; +xer_type_decoder_f LongitudinalLanePositionConfidence_decode_xer; +xer_type_encoder_f LongitudinalLanePositionConfidence_encode_xer; +jer_type_encoder_f LongitudinalLanePositionConfidence_encode_jer; +oer_type_decoder_f LongitudinalLanePositionConfidence_decode_oer; +oer_type_encoder_f LongitudinalLanePositionConfidence_encode_oer; +per_type_decoder_f LongitudinalLanePositionConfidence_decode_uper; +per_type_encoder_f LongitudinalLanePositionConfidence_encode_uper; +per_type_decoder_f LongitudinalLanePositionConfidence_decode_aper; +per_type_encoder_f LongitudinalLanePositionConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudinalLanePositionConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionValue.h new file mode 100644 index 000000000..6a1e71cef --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LongitudinalLanePositionValue.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _LongitudinalLanePositionValue_H_ +#define _LongitudinalLanePositionValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LongitudinalLanePositionValue { + LongitudinalLanePositionValue_outOfRange = 32766, + LongitudinalLanePositionValue_unavailable = 32767 +} e_LongitudinalLanePositionValue; + +/* LongitudinalLanePositionValue */ +typedef long LongitudinalLanePositionValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LongitudinalLanePositionValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePositionValue; +asn_struct_free_f LongitudinalLanePositionValue_free; +asn_struct_print_f LongitudinalLanePositionValue_print; +asn_constr_check_f LongitudinalLanePositionValue_constraint; +ber_type_decoder_f LongitudinalLanePositionValue_decode_ber; +der_type_encoder_f LongitudinalLanePositionValue_encode_der; +xer_type_decoder_f LongitudinalLanePositionValue_decode_xer; +xer_type_encoder_f LongitudinalLanePositionValue_encode_xer; +jer_type_encoder_f LongitudinalLanePositionValue_encode_jer; +oer_type_decoder_f LongitudinalLanePositionValue_decode_oer; +oer_type_encoder_f LongitudinalLanePositionValue_encode_oer; +per_type_decoder_f LongitudinalLanePositionValue_decode_uper; +per_type_encoder_f LongitudinalLanePositionValue_encode_uper; +per_type_decoder_f LongitudinalLanePositionValue_decode_aper; +per_type_encoder_f LongitudinalLanePositionValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LongitudinalLanePositionValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h new file mode 100644 index 000000000..9d489873e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _LowerTriangularPositiveSemidefiniteMatrices_H_ +#define _LowerTriangularPositiveSemidefiniteMatrices_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct LowerTriangularPositiveSemidefiniteMatrix; + +/* LowerTriangularPositiveSemidefiniteMatrices */ +typedef struct LowerTriangularPositiveSemidefiniteMatrices { + A_SEQUENCE_OF(struct LowerTriangularPositiveSemidefiniteMatrix) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LowerTriangularPositiveSemidefiniteMatrices_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrices; +extern asn_SET_OF_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrices_specs_1; +extern asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrices_1[1]; +extern asn_per_constraints_t asn_PER_type_LowerTriangularPositiveSemidefiniteMatrices_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h" + +#endif /* _LowerTriangularPositiveSemidefiniteMatrices_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h new file mode 100644 index 000000000..dfe1da782 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/MatrixIncludedComponents.h" +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h" +#include +#ifndef _LowerTriangularPositiveSemidefiniteMatrix_H_ +#define _LowerTriangularPositiveSemidefiniteMatrix_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* LowerTriangularPositiveSemidefiniteMatrix */ +typedef struct LowerTriangularPositiveSemidefiniteMatrix { + MatrixIncludedComponents_t componentsIncludedIntheMatrix; + LowerTriangularPositiveSemidefiniteMatrixColumns_t matrix; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LowerTriangularPositiveSemidefiniteMatrix_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrix; +extern asn_SEQUENCE_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrix_specs_1; +extern asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrix_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LowerTriangularPositiveSemidefiniteMatrix_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h new file mode 100644 index 000000000..a54419541 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _LowerTriangularPositiveSemidefiniteMatrixColumns_H_ +#define _LowerTriangularPositiveSemidefiniteMatrixColumns_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CorrelationColumn; + +/* LowerTriangularPositiveSemidefiniteMatrixColumns */ +typedef struct LowerTriangularPositiveSemidefiniteMatrixColumns { + A_SEQUENCE_OF(struct CorrelationColumn) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LowerTriangularPositiveSemidefiniteMatrixColumns_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns; +extern asn_SET_OF_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrixColumns_specs_1; +extern asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrixColumns_1[1]; +extern asn_per_constraints_t asn_PER_type_LowerTriangularPositiveSemidefiniteMatrixColumns_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CorrelationColumn.h" + +#endif /* _LowerTriangularPositiveSemidefiniteMatrixColumns_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ManagementContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ManagementContainer.h new file mode 100644 index 000000000..f1ba29ce5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ManagementContainer.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/TimestampIts.h" +#include "etsi_its_cpm_coding/ReferencePosition.h" +#include +#ifndef _ManagementContainer_H_ +#define _ManagementContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MessageSegmentationInfo; +struct MessageRateRange; + +/* ManagementContainer */ +typedef struct ManagementContainer { + TimestampIts_t referenceTime; + ReferencePosition_t referencePosition; + struct MessageSegmentationInfo *segmentationInfo; /* OPTIONAL */ + struct MessageRateRange *messageRateRange; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ManagementContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ManagementContainer; +extern asn_SEQUENCE_specifics_t asn_SPC_ManagementContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_ManagementContainer_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/MessageSegmentationInfo.h" +#include "etsi_its_cpm_coding/MessageRateRange.h" + +#endif /* _ManagementContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapPosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapPosition.h new file mode 100644 index 000000000..689c94e2a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapPosition.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include +#ifndef _MapPosition_H_ +#define _MapPosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MapReference; +struct LongitudinalLanePosition; + +/* MapPosition */ +typedef struct MapPosition { + struct MapReference *mapReference; /* OPTIONAL */ + Identifier1B_t *laneId; /* OPTIONAL */ + Identifier1B_t *connectionId; /* OPTIONAL */ + struct LongitudinalLanePosition *longitudinalLanePosition; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MapPosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MapPosition; +extern asn_SEQUENCE_specifics_t asn_SPC_MapPosition_specs_1; +extern asn_TYPE_member_t asn_MBR_MapPosition_1[4]; +extern asn_per_constraints_t asn_PER_type_MapPosition_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/MapReference.h" +#include "etsi_its_cpm_coding/LongitudinalLanePosition.h" + +#endif /* _MapPosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapReference.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapReference.h new file mode 100644 index 000000000..f24c22d85 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MapReference.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/RoadSegmentReferenceId.h" +#include "etsi_its_cpm_coding/IntersectionReferenceId.h" +#include +#ifndef _MapReference_H_ +#define _MapReference_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MapReference_PR { + MapReference_PR_NOTHING, /* No components present */ + MapReference_PR_roadsegment, + MapReference_PR_intersection +} MapReference_PR; + +/* MapReference */ +typedef struct MapReference { + MapReference_PR present; + union MapReference_u { + RoadSegmentReferenceId_t roadsegment; + IntersectionReferenceId_t intersection; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MapReference_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MapReference; +extern asn_CHOICE_specifics_t asn_SPC_MapReference_specs_1; +extern asn_TYPE_member_t asn_MBR_MapReference_1[2]; +extern asn_per_constraints_t asn_PER_type_MapReference_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MapReference_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MatrixIncludedComponents.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MatrixIncludedComponents.h new file mode 100644 index 000000000..c90744ecc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MatrixIncludedComponents.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _MatrixIncludedComponents_H_ +#define _MatrixIncludedComponents_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MatrixIncludedComponents { + MatrixIncludedComponents_xPosition = 0, + MatrixIncludedComponents_yPosition = 1, + MatrixIncludedComponents_zPosition = 2, + MatrixIncludedComponents_xVelocityOrVelocityMagnitude = 3, + MatrixIncludedComponents_yVelocityOrVelocityDirection = 4, + MatrixIncludedComponents_zSpeed = 5, + MatrixIncludedComponents_xAccelOrAccelMagnitude = 6, + MatrixIncludedComponents_yAccelOrAccelDirection = 7, + MatrixIncludedComponents_zAcceleration = 8, + MatrixIncludedComponents_zAngle = 9, + MatrixIncludedComponents_yAngle = 10, + MatrixIncludedComponents_xAngle = 11, + MatrixIncludedComponents_zAngularVelocity = 12 +} e_MatrixIncludedComponents; + +/* MatrixIncludedComponents */ +typedef BIT_STRING_t MatrixIncludedComponents_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MatrixIncludedComponents_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MatrixIncludedComponents; +asn_struct_free_f MatrixIncludedComponents_free; +asn_struct_print_f MatrixIncludedComponents_print; +asn_constr_check_f MatrixIncludedComponents_constraint; +ber_type_decoder_f MatrixIncludedComponents_decode_ber; +der_type_encoder_f MatrixIncludedComponents_encode_der; +xer_type_decoder_f MatrixIncludedComponents_decode_xer; +xer_type_encoder_f MatrixIncludedComponents_encode_xer; +jer_type_encoder_f MatrixIncludedComponents_encode_jer; +oer_type_decoder_f MatrixIncludedComponents_decode_oer; +oer_type_encoder_f MatrixIncludedComponents_encode_oer; +per_type_decoder_f MatrixIncludedComponents_decode_uper; +per_type_encoder_f MatrixIncludedComponents_encode_uper; +per_type_decoder_f MatrixIncludedComponents_decode_aper; +per_type_encoder_f MatrixIncludedComponents_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MatrixIncludedComponents_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageId.h new file mode 100644 index 000000000..5c06bb96d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageId.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _MessageId_H_ +#define _MessageId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MessageId { + MessageId_denm = 1, + MessageId_cam = 2, + MessageId_poi = 3, + MessageId_spatem = 4, + MessageId_mapem = 5, + MessageId_ivim = 6, + MessageId_ev_rsr = 7, + MessageId_tistpgtransaction = 8, + MessageId_srem = 9, + MessageId_ssem = 10, + MessageId_evcsn = 11, + MessageId_saem = 12, + MessageId_rtcmem = 13, + MessageId_cpm = 14, + MessageId_imzm = 15, + MessageId_vam = 16, + MessageId_dsm = 17, + MessageId_pcim = 18, + MessageId_pcvm = 19, + MessageId_mcm = 20, + MessageId_pam = 21 +} e_MessageId; + +/* MessageId */ +typedef long MessageId_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MessageId_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MessageId; +asn_struct_free_f MessageId_free; +asn_struct_print_f MessageId_print; +asn_constr_check_f MessageId_constraint; +ber_type_decoder_f MessageId_decode_ber; +der_type_encoder_f MessageId_encode_der; +xer_type_decoder_f MessageId_decode_xer; +xer_type_encoder_f MessageId_encode_xer; +jer_type_encoder_f MessageId_encode_jer; +oer_type_decoder_f MessageId_decode_oer; +oer_type_encoder_f MessageId_encode_oer; +per_type_decoder_f MessageId_decode_uper; +per_type_encoder_f MessageId_encode_uper; +per_type_decoder_f MessageId_decode_aper; +per_type_encoder_f MessageId_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateHz.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateHz.h new file mode 100644 index 000000000..0b2c8c900 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateHz.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _MessageRateHz_H_ +#define _MessageRateHz_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MessageRateHz */ +typedef struct MessageRateHz { + long mantissa; + long exponent; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MessageRateHz_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MessageRateHz; +extern asn_SEQUENCE_specifics_t asn_SPC_MessageRateHz_specs_1; +extern asn_TYPE_member_t asn_MBR_MessageRateHz_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageRateHz_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateRange.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateRange.h new file mode 100644 index 000000000..fa1cf02c1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageRateRange.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/MessageRateHz.h" +#include +#ifndef _MessageRateRange_H_ +#define _MessageRateRange_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MessageRateRange */ +typedef struct MessageRateRange { + MessageRateHz_t messageRateMin; + MessageRateHz_t messageRateMax; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MessageRateRange_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MessageRateRange; +extern asn_SEQUENCE_specifics_t asn_SPC_MessageRateRange_specs_1; +extern asn_TYPE_member_t asn_MBR_MessageRateRange_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageRateRange_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageSegmentationInfo.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageSegmentationInfo.h new file mode 100644 index 000000000..9e5a49811 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MessageSegmentationInfo.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CardinalNumber3b.h" +#include "etsi_its_cpm_coding/OrdinalNumber3b.h" +#include +#ifndef _MessageSegmentationInfo_H_ +#define _MessageSegmentationInfo_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MessageSegmentationInfo */ +typedef struct MessageSegmentationInfo { + CardinalNumber3b_t totalMsgNo; + OrdinalNumber3b_t thisMsgNo; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MessageSegmentationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MessageSegmentationInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_MessageSegmentationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_MessageSegmentationInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MessageSegmentationInfo_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationForTechnologies.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationForTechnologies.h new file mode 100644 index 000000000..3368f4095 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationForTechnologies.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _MitigationForTechnologies_H_ +#define _MitigationForTechnologies_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MitigationPerTechnologyClass; + +/* MitigationForTechnologies */ +typedef struct MitigationForTechnologies { + A_SEQUENCE_OF(struct MitigationPerTechnologyClass) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MitigationForTechnologies_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MitigationForTechnologies; +extern asn_SET_OF_specifics_t asn_SPC_MitigationForTechnologies_specs_1; +extern asn_TYPE_member_t asn_MBR_MitigationForTechnologies_1[1]; +extern asn_per_constraints_t asn_PER_type_MitigationForTechnologies_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/MitigationPerTechnologyClass.h" + +#endif /* _MitigationForTechnologies_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationPerTechnologyClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationPerTechnologyClass.h new file mode 100644 index 000000000..825f382d2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/MitigationPerTechnologyClass.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/AccessTechnologyClass.h" +#include +#include +#ifndef _MitigationPerTechnologyClass_H_ +#define _MitigationPerTechnologyClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MitigationPerTechnologyClass */ +typedef struct MitigationPerTechnologyClass { + AccessTechnologyClass_t accessTechnologyClass; + long *lowDutyCycle; /* OPTIONAL */ + long *powerReduction; /* OPTIONAL */ + long *dmcToffLimit; /* OPTIONAL */ + long *dmcTonLimit; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MitigationPerTechnologyClass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MitigationPerTechnologyClass; +extern asn_SEQUENCE_specifics_t asn_SPC_MitigationPerTechnologyClass_specs_1; +extern asn_TYPE_member_t asn_MBR_MitigationPerTechnologyClass_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MitigationPerTechnologyClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NULL.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NULL.h new file mode 100644 index 000000000..1b7d04533 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NULL.h @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless. + * Use the BOOLEAN type if you need to carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_free_f NULL_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NULL_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NULL_compare; + +#define NULL_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NULL_decode_ber; +der_type_encoder_f NULL_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NULL_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NULL_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeEnumerated.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeEnumerated.h new file mode 100644 index 000000000..64b1daf7a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeEnumerated.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +#define NativeEnumerated_free NativeInteger_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define NativeEnumerated_print NativeInteger_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define NativeEnumerated_compare NativeInteger_compare + +#define NativeEnumerated_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define NativeEnumerated_decode_xer NativeInteger_decode_xer +xer_type_encoder_f NativeEnumerated_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeEnumerated_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define NativeEnumerated_random_fill NativeInteger_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int NativeEnumerated__compar_value2enum( + const void *ap, + const void *bp); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeInteger.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeInteger.h new file mode 100644 index 000000000..9f3dc6f23 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NativeInteger.h @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f NativeInteger_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f NativeInteger_compare; + +#define NativeInteger_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f NativeInteger_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f NativeInteger_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumberOfOccupants.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumberOfOccupants.h new file mode 100644 index 000000000..6d5c22830 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumberOfOccupants.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _NumberOfOccupants_H_ +#define _NumberOfOccupants_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NumberOfOccupants { + NumberOfOccupants_outOfRange = 126, + NumberOfOccupants_unavailable = 127 +} e_NumberOfOccupants; + +/* NumberOfOccupants */ +typedef long NumberOfOccupants_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NumberOfOccupants; +asn_struct_free_f NumberOfOccupants_free; +asn_struct_print_f NumberOfOccupants_print; +asn_constr_check_f NumberOfOccupants_constraint; +ber_type_decoder_f NumberOfOccupants_decode_ber; +der_type_encoder_f NumberOfOccupants_encode_der; +xer_type_decoder_f NumberOfOccupants_decode_xer; +xer_type_encoder_f NumberOfOccupants_encode_xer; +jer_type_encoder_f NumberOfOccupants_encode_jer; +oer_type_decoder_f NumberOfOccupants_decode_oer; +oer_type_encoder_f NumberOfOccupants_encode_oer; +per_type_decoder_f NumberOfOccupants_decode_uper; +per_type_encoder_f NumberOfOccupants_encode_uper; +per_type_decoder_f NumberOfOccupants_decode_aper; +per_type_encoder_f NumberOfOccupants_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NumberOfOccupants_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumericString.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumericString.h new file mode 100644 index 000000000..9ee65462c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/NumericString.h @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _NumericString_H_ +#define _NumericString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t NumericString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_NumericString; +extern asn_TYPE_operation_t asn_OP_NumericString; + +#define NumericString_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define NumericString_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define NumericString_compare OCTET_STRING_compare + +asn_constr_check_f NumericString_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define NumericString_decode_ber OCTET_STRING_decode_ber +#define NumericString_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define NumericString_decode_xer OCTET_STRING_decode_xer_utf8 +#define NumericString_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define NumericString_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define NumericString_decode_oer OCTET_STRING_decode_oer +#define NumericString_encode_oer OCTET_STRING_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define NumericString_decode_uper OCTET_STRING_decode_uper +#define NumericString_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define NumericString_decode_aper OCTET_STRING_decode_aper +#define NumericString_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define NumericString_random_fill OCTET_STRING_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _NumericString_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OBJECT_IDENTIFIER.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OBJECT_IDENTIFIER.h new file mode 100644 index 000000000..d3777b5d6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OBJECT_IDENTIFIER.h @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +ssize_t OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, + void *app_key); + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OBJECT_IDENTIFIER_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare + +asn_constr_check_f OBJECT_IDENTIFIER_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OBJECT_IDENTIFIER_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OCTET_STRING.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OCTET_STRING.h new file mode 100644 index 000000000..177cdf673 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OCTET_STRING.h @@ -0,0 +1,165 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f OCTET_STRING_compare; + +#define OCTET_STRING_constraint asn_generic_no_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f OCTET_STRING_encode_jer; +jer_type_encoder_f OCTET_STRING_encode_jer_utf8; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f OCTET_STRING_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int OCTET_STRING_per_get_characters( + asn_per_data_t *po, + uint8_t *buf, + size_t units, + unsigned int bpc, + unsigned int unit_bits, + long lb, + long ub, + const asn_per_constraints_t *pc); + +int OCTET_STRING_per_put_characters( + asn_per_outp_t *po, + const uint8_t *buf, + size_t units, + unsigned int bpc, + unsigned int unit_bits, + long lb, + long ub, + const asn_per_constraints_t *pc); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#if !defined(ASN_DISABLE_BER_SUPPORT) +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OPEN_TYPE.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OPEN_TYPE.h new file mode 100644 index 000000000..f14ca2903 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OPEN_TYPE.h @@ -0,0 +1,117 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include +///////////#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#define OPEN_TYPE_free CHOICE_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define OPEN_TYPE_print CHOICE_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define OPEN_TYPE_compare CHOICE_compare + +#define OPEN_TYPE_constraint CHOICE_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_ber_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_xer_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define OPEN_TYPE_encode_jer CHOICE_encode_jer +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_oer_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_uper_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); +#define OPEN_TYPE_decode_uper NULL +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +asn_dec_rval_t OPEN_TYPE_aper_get( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); +#define OPEN_TYPE_decode_aper NULL +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +int OPEN_TYPE_aper_is_unknown_type( + const asn_TYPE_descriptor_t *td, + void *sptr, + const asn_TYPE_member_t *elm); + +asn_dec_rval_t OPEN_TYPE_aper_unknown_type_discard_bytes( + asn_per_data_t *pd); +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClass.h new file mode 100644 index 000000000..b698156b8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClass.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/TrafficParticipantType.h" +#include "etsi_its_cpm_coding/VruProfileAndSubprofile.h" +#include "etsi_its_cpm_coding/VruClusterInformation.h" +#include "etsi_its_cpm_coding/OtherSubClass.h" +#include +#ifndef _ObjectClass_H_ +#define _ObjectClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectClass_PR { + ObjectClass_PR_NOTHING, /* No components present */ + ObjectClass_PR_vehicleSubClass, + ObjectClass_PR_vruSubClass, + ObjectClass_PR_groupSubClass, + ObjectClass_PR_otherSubClass + /* Extensions may appear below */ + +} ObjectClass_PR; + +/* ObjectClass */ +typedef struct ObjectClass { + ObjectClass_PR present; + union ObjectClass_u { + TrafficParticipantType_t vehicleSubClass; + VruProfileAndSubprofile_t vruSubClass; + VruClusterInformation_t groupSubClass; + OtherSubClass_t otherSubClass; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObjectClass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObjectClass; +extern asn_CHOICE_specifics_t asn_SPC_ObjectClass_specs_1; +extern asn_TYPE_member_t asn_MBR_ObjectClass_1[4]; +extern asn_per_constraints_t asn_PER_type_ObjectClass_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassDescription.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassDescription.h new file mode 100644 index 000000000..2fe7825ce --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassDescription.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _ObjectClassDescription_H_ +#define _ObjectClassDescription_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ObjectClassWithConfidence; + +/* ObjectClassDescription */ +typedef struct ObjectClassDescription { + A_SEQUENCE_OF(struct ObjectClassWithConfidence) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObjectClassDescription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObjectClassDescription; +extern asn_SET_OF_specifics_t asn_SPC_ObjectClassDescription_specs_1; +extern asn_TYPE_member_t asn_MBR_ObjectClassDescription_1[1]; +extern asn_per_constraints_t asn_PER_type_ObjectClassDescription_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/ObjectClassWithConfidence.h" + +#endif /* _ObjectClassDescription_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassWithConfidence.h new file mode 100644 index 000000000..10b3296d0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectClassWithConfidence.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ObjectClass.h" +#include "etsi_its_cpm_coding/ConfidenceLevel.h" +#include +#ifndef _ObjectClassWithConfidence_H_ +#define _ObjectClassWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObjectClassWithConfidence */ +typedef struct ObjectClassWithConfidence { + ObjectClass_t objectClass; + ConfidenceLevel_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObjectClassWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObjectClassWithConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_ObjectClassWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_ObjectClassWithConfidence_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectClassWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDescriptor.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDescriptor.h new file mode 100644 index 000000000..d0bcf0ef4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDescriptor.h @@ -0,0 +1,54 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _ObjectDescriptor_H_ +#define _ObjectDescriptor_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef GraphicString_t ObjectDescriptor_t; /* Implemented via GraphicString */ + +extern asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor; +extern asn_TYPE_operation_t asn_OP_ObjectDescriptor; + +#define ObjectDescriptor_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define ObjectDescriptor_print OCTET_STRING_print_utf8 +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define ObjectDescriptor_constraint asn_generic_unknown_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define ObjectDescriptor_decode_ber OCTET_STRING_decode_ber +#define ObjectDescriptor_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define ObjectDescriptor_decode_xer OCTET_STRING_decode_xer_utf8 +#define ObjectDescriptor_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define ObjectDescriptor_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define ObjectDescriptor_decode_uper OCTET_STRING_decode_uper +#define ObjectDescriptor_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define ObjectDescriptor_decode_aper OCTET_STRING_decode_aper +#define ObjectDescriptor_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDescriptor_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimension.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimension.h new file mode 100644 index 000000000..6dbb28e46 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimension.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ObjectDimensionValue.h" +#include "etsi_its_cpm_coding/ObjectDimensionConfidence.h" +#include +#ifndef _ObjectDimension_H_ +#define _ObjectDimension_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ObjectDimension */ +typedef struct ObjectDimension { + ObjectDimensionValue_t value; + ObjectDimensionConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ObjectDimension_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObjectDimension; +extern asn_SEQUENCE_specifics_t asn_SPC_ObjectDimension_specs_1; +extern asn_TYPE_member_t asn_MBR_ObjectDimension_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDimension_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionConfidence.h new file mode 100644 index 000000000..249391c00 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ObjectDimensionConfidence_H_ +#define _ObjectDimensionConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectDimensionConfidence { + ObjectDimensionConfidence_outOfRange = 31, + ObjectDimensionConfidence_unavailable = 32 +} e_ObjectDimensionConfidence; + +/* ObjectDimensionConfidence */ +typedef long ObjectDimensionConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectDimensionConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectDimensionConfidence; +asn_struct_free_f ObjectDimensionConfidence_free; +asn_struct_print_f ObjectDimensionConfidence_print; +asn_constr_check_f ObjectDimensionConfidence_constraint; +ber_type_decoder_f ObjectDimensionConfidence_decode_ber; +der_type_encoder_f ObjectDimensionConfidence_encode_der; +xer_type_decoder_f ObjectDimensionConfidence_decode_xer; +xer_type_encoder_f ObjectDimensionConfidence_encode_xer; +jer_type_encoder_f ObjectDimensionConfidence_encode_jer; +oer_type_decoder_f ObjectDimensionConfidence_decode_oer; +oer_type_encoder_f ObjectDimensionConfidence_encode_oer; +per_type_decoder_f ObjectDimensionConfidence_decode_uper; +per_type_encoder_f ObjectDimensionConfidence_encode_uper; +per_type_decoder_f ObjectDimensionConfidence_decode_aper; +per_type_encoder_f ObjectDimensionConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDimensionConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionValue.h new file mode 100644 index 000000000..9a28ab5ab --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectDimensionValue.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ObjectDimensionValue_H_ +#define _ObjectDimensionValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectDimensionValue { + ObjectDimensionValue_outOfRange = 255, + ObjectDimensionValue_unavailable = 256 +} e_ObjectDimensionValue; + +/* ObjectDimensionValue */ +typedef long ObjectDimensionValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectDimensionValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectDimensionValue; +asn_struct_free_f ObjectDimensionValue_free; +asn_struct_print_f ObjectDimensionValue_print; +asn_constr_check_f ObjectDimensionValue_constraint; +ber_type_decoder_f ObjectDimensionValue_decode_ber; +der_type_encoder_f ObjectDimensionValue_encode_der; +xer_type_decoder_f ObjectDimensionValue_decode_xer; +xer_type_encoder_f ObjectDimensionValue_encode_xer; +jer_type_encoder_f ObjectDimensionValue_encode_jer; +oer_type_decoder_f ObjectDimensionValue_decode_oer; +oer_type_encoder_f ObjectDimensionValue_encode_oer; +per_type_decoder_f ObjectDimensionValue_decode_uper; +per_type_encoder_f ObjectDimensionValue_encode_uper; +per_type_decoder_f ObjectDimensionValue_decode_aper; +per_type_encoder_f ObjectDimensionValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectDimensionValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectFace.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectFace.h new file mode 100644 index 000000000..11ffb4242 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectFace.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ObjectFace_H_ +#define _ObjectFace_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectFace { + ObjectFace_front = 0, + ObjectFace_sideLeftFront = 1, + ObjectFace_sideLeftBack = 2, + ObjectFace_sideRightFront = 3, + ObjectFace_sideRightBack = 4, + ObjectFace_back = 5 +} e_ObjectFace; + +/* ObjectFace */ +typedef long ObjectFace_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ObjectFace; +asn_struct_free_f ObjectFace_free; +asn_struct_print_f ObjectFace_print; +asn_constr_check_f ObjectFace_constraint; +ber_type_decoder_f ObjectFace_decode_ber; +der_type_encoder_f ObjectFace_encode_der; +xer_type_decoder_f ObjectFace_decode_xer; +xer_type_encoder_f ObjectFace_encode_xer; +jer_type_encoder_f ObjectFace_encode_jer; +oer_type_decoder_f ObjectFace_decode_oer; +oer_type_encoder_f ObjectFace_encode_oer; +per_type_decoder_f ObjectFace_decode_uper; +per_type_encoder_f ObjectFace_encode_uper; +per_type_decoder_f ObjectFace_decode_aper; +per_type_encoder_f ObjectFace_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectFace_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectPerceptionQuality.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectPerceptionQuality.h new file mode 100644 index 000000000..989c60a51 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ObjectPerceptionQuality.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ObjectPerceptionQuality_H_ +#define _ObjectPerceptionQuality_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ObjectPerceptionQuality { + ObjectPerceptionQuality_noConfidence = 0, + ObjectPerceptionQuality_fullConfidence = 15 +} e_ObjectPerceptionQuality; + +/* ObjectPerceptionQuality */ +typedef long ObjectPerceptionQuality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ObjectPerceptionQuality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ObjectPerceptionQuality; +asn_struct_free_f ObjectPerceptionQuality_free; +asn_struct_print_f ObjectPerceptionQuality_print; +asn_constr_check_f ObjectPerceptionQuality_constraint; +ber_type_decoder_f ObjectPerceptionQuality_decode_ber; +der_type_encoder_f ObjectPerceptionQuality_encode_der; +xer_type_decoder_f ObjectPerceptionQuality_decode_xer; +xer_type_encoder_f ObjectPerceptionQuality_encode_xer; +jer_type_encoder_f ObjectPerceptionQuality_encode_jer; +oer_type_decoder_f ObjectPerceptionQuality_decode_oer; +oer_type_encoder_f ObjectPerceptionQuality_encode_oer; +per_type_decoder_f ObjectPerceptionQuality_decode_uper; +per_type_encoder_f ObjectPerceptionQuality_encode_uper; +per_type_decoder_f ObjectPerceptionQuality_decode_aper; +per_type_encoder_f ObjectPerceptionQuality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ObjectPerceptionQuality_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OpeningDaysHours.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OpeningDaysHours.h new file mode 100644 index 000000000..076439e2d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OpeningDaysHours.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _OpeningDaysHours_H_ +#define _OpeningDaysHours_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpeningDaysHours */ +typedef UTF8String_t OpeningDaysHours_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OpeningDaysHours; +asn_struct_free_f OpeningDaysHours_free; +asn_struct_print_f OpeningDaysHours_print; +asn_constr_check_f OpeningDaysHours_constraint; +ber_type_decoder_f OpeningDaysHours_decode_ber; +der_type_encoder_f OpeningDaysHours_encode_der; +xer_type_decoder_f OpeningDaysHours_decode_xer; +xer_type_encoder_f OpeningDaysHours_encode_xer; +jer_type_encoder_f OpeningDaysHours_encode_jer; +oer_type_decoder_f OpeningDaysHours_decode_oer; +oer_type_encoder_f OpeningDaysHours_encode_oer; +per_type_decoder_f OpeningDaysHours_decode_uper; +per_type_encoder_f OpeningDaysHours_encode_uper; +per_type_decoder_f OpeningDaysHours_decode_aper; +per_type_encoder_f OpeningDaysHours_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OpeningDaysHours_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber1B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber1B.h new file mode 100644 index 000000000..aedade078 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber1B.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _OrdinalNumber1B_H_ +#define _OrdinalNumber1B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OrdinalNumber1B */ +typedef long OrdinalNumber1B_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OrdinalNumber1B_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OrdinalNumber1B; +asn_struct_free_f OrdinalNumber1B_free; +asn_struct_print_f OrdinalNumber1B_print; +asn_constr_check_f OrdinalNumber1B_constraint; +ber_type_decoder_f OrdinalNumber1B_decode_ber; +der_type_encoder_f OrdinalNumber1B_encode_der; +xer_type_decoder_f OrdinalNumber1B_decode_xer; +xer_type_encoder_f OrdinalNumber1B_encode_xer; +jer_type_encoder_f OrdinalNumber1B_encode_jer; +oer_type_decoder_f OrdinalNumber1B_decode_oer; +oer_type_encoder_f OrdinalNumber1B_encode_oer; +per_type_decoder_f OrdinalNumber1B_decode_uper; +per_type_encoder_f OrdinalNumber1B_encode_uper; +per_type_decoder_f OrdinalNumber1B_decode_aper; +per_type_encoder_f OrdinalNumber1B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OrdinalNumber1B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber3b.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber3b.h new file mode 100644 index 000000000..2950bec86 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OrdinalNumber3b.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _OrdinalNumber3b_H_ +#define _OrdinalNumber3b_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OrdinalNumber3b */ +typedef long OrdinalNumber3b_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OrdinalNumber3b_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OrdinalNumber3b; +asn_struct_free_f OrdinalNumber3b_free; +asn_struct_print_f OrdinalNumber3b_print; +asn_constr_check_f OrdinalNumber3b_constraint; +ber_type_decoder_f OrdinalNumber3b_decode_ber; +der_type_encoder_f OrdinalNumber3b_encode_der; +xer_type_decoder_f OrdinalNumber3b_decode_xer; +xer_type_encoder_f OrdinalNumber3b_encode_xer; +jer_type_encoder_f OrdinalNumber3b_encode_jer; +oer_type_decoder_f OrdinalNumber3b_decode_oer; +oer_type_encoder_f OrdinalNumber3b_encode_oer; +per_type_decoder_f OrdinalNumber3b_decode_uper; +per_type_encoder_f OrdinalNumber3b_encode_uper; +per_type_decoder_f OrdinalNumber3b_decode_aper; +per_type_encoder_f OrdinalNumber3b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OrdinalNumber3b_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingRsuContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingRsuContainer.h new file mode 100644 index 000000000..2ef20fbf9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingRsuContainer.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _OriginatingRsuContainer_H_ +#define _OriginatingRsuContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MapReference; + +/* OriginatingRsuContainer */ +typedef struct OriginatingRsuContainer { + struct MapReference *mapReference; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} OriginatingRsuContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OriginatingRsuContainer; +extern asn_SEQUENCE_specifics_t asn_SPC_OriginatingRsuContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_OriginatingRsuContainer_1[1]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/MapReference.h" + +#endif /* _OriginatingRsuContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingVehicleContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingVehicleContainer.h new file mode 100644 index 000000000..5e8c48c0f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OriginatingVehicleContainer.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Wgs84Angle.h" +#include +#ifndef _OriginatingVehicleContainer_H_ +#define _OriginatingVehicleContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianAngle; +struct TrailerDataSet; + +/* OriginatingVehicleContainer */ +typedef struct OriginatingVehicleContainer { + Wgs84Angle_t orientationAngle; + struct CartesianAngle *pitchAngle; /* OPTIONAL */ + struct CartesianAngle *rollAngle; /* OPTIONAL */ + struct TrailerDataSet *trailerDataSet; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} OriginatingVehicleContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_OriginatingVehicleContainer; +extern asn_SEQUENCE_specifics_t asn_SPC_OriginatingVehicleContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_OriginatingVehicleContainer_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianAngle.h" +#include "etsi_its_cpm_coding/TrailerDataSet.h" + +#endif /* _OriginatingVehicleContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OtherSubClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OtherSubClass.h new file mode 100644 index 000000000..a9dba5d0f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/OtherSubClass.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _OtherSubClass_H_ +#define _OtherSubClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum OtherSubClass { + OtherSubClass_unknown = 0, + OtherSubClass_singleObject = 1, + OtherSubClass_multipleObjects = 2, + OtherSubClass_bulkMaterial = 3 +} e_OtherSubClass; + +/* OtherSubClass */ +typedef long OtherSubClass_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OtherSubClass_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OtherSubClass; +asn_struct_free_f OtherSubClass_free; +asn_struct_print_f OtherSubClass_print; +asn_constr_check_f OtherSubClass_constraint; +ber_type_decoder_f OtherSubClass_decode_ber; +der_type_encoder_f OtherSubClass_encode_der; +xer_type_decoder_f OtherSubClass_decode_xer; +xer_type_encoder_f OtherSubClass_encode_xer; +jer_type_encoder_f OtherSubClass_encode_jer; +oer_type_decoder_f OtherSubClass_decode_oer; +oer_type_encoder_f OtherSubClass_encode_oer; +per_type_decoder_f OtherSubClass_decode_uper; +per_type_encoder_f OtherSubClass_encode_uper; +per_type_decoder_f OtherSubClass_decode_aper; +per_type_encoder_f OtherSubClass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OtherSubClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Path.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Path.h new file mode 100644 index 000000000..24e862be3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Path.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _Path_H_ +#define _Path_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathPoint; + +/* Path */ +typedef struct Path { + A_SEQUENCE_OF(struct PathPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Path_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Path; +extern asn_SET_OF_specifics_t asn_SPC_Path_specs_1; +extern asn_TYPE_member_t asn_MBR_Path_1[1]; +extern asn_per_constraints_t asn_PER_type_Path_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PathPoint.h" + +#endif /* _Path_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathDeltaTime.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathDeltaTime.h new file mode 100644 index 000000000..556cdcf12 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathDeltaTime.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PathDeltaTime_H_ +#define _PathDeltaTime_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PathDeltaTime */ +typedef long PathDeltaTime_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PathDeltaTime_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PathDeltaTime; +asn_struct_free_f PathDeltaTime_free; +asn_struct_print_f PathDeltaTime_print; +asn_constr_check_f PathDeltaTime_constraint; +ber_type_decoder_f PathDeltaTime_decode_ber; +der_type_encoder_f PathDeltaTime_encode_der; +xer_type_decoder_f PathDeltaTime_decode_xer; +xer_type_encoder_f PathDeltaTime_encode_xer; +jer_type_encoder_f PathDeltaTime_encode_jer; +oer_type_decoder_f PathDeltaTime_decode_oer; +oer_type_encoder_f PathDeltaTime_encode_oer; +per_type_decoder_f PathDeltaTime_decode_uper; +per_type_encoder_f PathDeltaTime_encode_uper; +per_type_decoder_f PathDeltaTime_decode_aper; +per_type_encoder_f PathDeltaTime_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PathDeltaTime_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathHistory.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathHistory.h new file mode 100644 index 000000000..63ac66934 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathHistory.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _PathHistory_H_ +#define _PathHistory_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathPoint; + +/* PathHistory */ +typedef struct PathHistory { + A_SEQUENCE_OF(struct PathPoint) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathHistory_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathHistory; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PathPoint.h" + +#endif /* _PathHistory_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPoint.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPoint.h new file mode 100644 index 000000000..35bf31601 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPoint.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DeltaReferencePosition.h" +#include "etsi_its_cpm_coding/PathDeltaTime.h" +#include +#ifndef _PathPoint_H_ +#define _PathPoint_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PathPoint */ +typedef struct PathPoint { + DeltaReferencePosition_t pathPosition; + PathDeltaTime_t *pathDeltaTime; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathPoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathPoint; +extern asn_SEQUENCE_specifics_t asn_SPC_PathPoint_specs_1; +extern asn_TYPE_member_t asn_MBR_PathPoint_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PathPoint_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPointPredicted.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPointPredicted.h new file mode 100644 index 000000000..acd25e9a1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPointPredicted.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DeltaLatitude.h" +#include "etsi_its_cpm_coding/DeltaLongitude.h" +#include "etsi_its_cpm_coding/DeltaAltitude.h" +#include "etsi_its_cpm_coding/AltitudeConfidence.h" +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" +#include +#ifndef _PathPointPredicted_H_ +#define _PathPointPredicted_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PosConfidenceEllipse; + +/* PathPointPredicted */ +typedef struct PathPointPredicted { + DeltaLatitude_t deltaLatitude; + DeltaLongitude_t deltaLongitude; + struct PosConfidenceEllipse *horizontalPositionConfidence; /* OPTIONAL */ + DeltaAltitude_t *deltaAltitude; /* DEFAULT 12800 */ + AltitudeConfidence_t *altitudeConfidence; /* DEFAULT 15 */ + DeltaTimeTenthOfSecond_t pathDeltaTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathPointPredicted_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathPointPredicted; +extern asn_SEQUENCE_specifics_t asn_SPC_PathPointPredicted_specs_1; +extern asn_TYPE_member_t asn_MBR_PathPointPredicted_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PosConfidenceEllipse.h" + +#endif /* _PathPointPredicted_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPredicted.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPredicted.h new file mode 100644 index 000000000..15a040877 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PathPredicted.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _PathPredicted_H_ +#define _PathPredicted_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PathPointPredicted; + +/* PathPredicted */ +typedef struct PathPredicted { + A_SEQUENCE_OF(struct PathPointPredicted) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PathPredicted_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PathPredicted; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PathPointPredicted.h" + +#endif /* _PathPredicted_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObject.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObject.h new file mode 100644 index 000000000..0cb5378b1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObject.h @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier2B.h" +#include "etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h" +#include "etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h" +#include "etsi_its_cpm_coding/ObjectPerceptionQuality.h" +#include +#ifndef _PerceivedObject_H_ +#define _PerceivedObject_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Velocity3dWithConfidence; +struct Acceleration3dWithConfidence; +struct EulerAnglesWithConfidence; +struct CartesianAngularVelocityComponent; +struct LowerTriangularPositiveSemidefiniteMatrices; +struct ObjectDimension; +struct SequenceOfIdentifier1B; +struct ObjectClassDescription; +struct MapPosition; + +/* PerceivedObject */ +typedef struct PerceivedObject { + Identifier2B_t *objectId; /* OPTIONAL */ + DeltaTimeMilliSecondSigned_t measurementDeltaTime; + CartesianPosition3dWithConfidence_t position; + struct Velocity3dWithConfidence *velocity; /* OPTIONAL */ + struct Acceleration3dWithConfidence *acceleration; /* OPTIONAL */ + struct EulerAnglesWithConfidence *angles; /* OPTIONAL */ + struct CartesianAngularVelocityComponent *zAngularVelocity; /* OPTIONAL */ + struct LowerTriangularPositiveSemidefiniteMatrices *lowerTriangularCorrelationMatrices; /* OPTIONAL */ + struct ObjectDimension *objectDimensionZ; /* OPTIONAL */ + struct ObjectDimension *objectDimensionY; /* OPTIONAL */ + struct ObjectDimension *objectDimensionX; /* OPTIONAL */ + DeltaTimeMilliSecondSigned_t *objectAge; /* OPTIONAL */ + ObjectPerceptionQuality_t *objectPerceptionQuality; /* OPTIONAL */ + struct SequenceOfIdentifier1B *sensorIdList; /* OPTIONAL */ + struct ObjectClassDescription *classification; /* OPTIONAL */ + struct MapPosition *mapPosition; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceivedObject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceivedObject; +extern asn_SEQUENCE_specifics_t asn_SPC_PerceivedObject_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceivedObject_1[16]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/Velocity3dWithConfidence.h" +#include "etsi_its_cpm_coding/Acceleration3dWithConfidence.h" +#include "etsi_its_cpm_coding/EulerAnglesWithConfidence.h" +#include "etsi_its_cpm_coding/CartesianAngularVelocityComponent.h" +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h" +#include "etsi_its_cpm_coding/ObjectDimension.h" +#include "etsi_its_cpm_coding/SequenceOfIdentifier1B.h" +#include "etsi_its_cpm_coding/ObjectClassDescription.h" +#include "etsi_its_cpm_coding/MapPosition.h" + +#endif /* _PerceivedObject_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectContainer.h new file mode 100644 index 000000000..37625d1e0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectContainer.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceivedObjectContainer" + * found in "/input/CPM-PerceivedObjectContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CardinalNumber1B.h" +#include "etsi_its_cpm_coding/PerceivedObjects.h" +#include +#ifndef _PerceivedObjectContainer_H_ +#define _PerceivedObjectContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PerceivedObjectContainer */ +typedef struct PerceivedObjectContainer { + CardinalNumber1B_t numberOfPerceivedObjects; + PerceivedObjects_t perceivedObjects; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceivedObjectContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceivedObjectContainer; +extern asn_SEQUENCE_specifics_t asn_SPC_PerceivedObjectContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceivedObjectContainer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PerceivedObjectContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectIds.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectIds.h new file mode 100644 index 000000000..3a7be8abd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjectIds.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier2B.h" +#include +#include +#ifndef _PerceivedObjectIds_H_ +#define _PerceivedObjectIds_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PerceivedObjectIds */ +typedef struct PerceivedObjectIds { + A_SEQUENCE_OF(Identifier2B_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceivedObjectIds_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceivedObjectIds; +extern asn_SET_OF_specifics_t asn_SPC_PerceivedObjectIds_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceivedObjectIds_1[1]; +extern asn_per_constraints_t asn_PER_type_PerceivedObjectIds_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PerceivedObjectIds_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjects.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjects.h new file mode 100644 index 000000000..3d96e15e1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceivedObjects.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceivedObjectContainer" + * found in "/input/CPM-PerceivedObjectContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _PerceivedObjects_H_ +#define _PerceivedObjects_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PerceivedObject; + +/* PerceivedObjects */ +typedef struct PerceivedObjects { + A_SEQUENCE_OF(struct PerceivedObject) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceivedObjects_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceivedObjects; +extern asn_SET_OF_specifics_t asn_SPC_PerceivedObjects_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceivedObjects_1[1]; +extern asn_per_constraints_t asn_PER_type_PerceivedObjects_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PerceivedObject.h" + +#endif /* _PerceivedObjects_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegion.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegion.h new file mode 100644 index 000000000..5b72a6070 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegion.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h" +#include "etsi_its_cpm_coding/ConfidenceLevel.h" +#include "etsi_its_cpm_coding/Shape.h" +#include +#include "etsi_its_cpm_coding/CardinalNumber1B.h" +#include +#ifndef _PerceptionRegion_H_ +#define _PerceptionRegion_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SequenceOfIdentifier1B; +struct PerceivedObjectIds; + +/* PerceptionRegion */ +typedef struct PerceptionRegion { + DeltaTimeMilliSecondSigned_t measurementDeltaTime; + ConfidenceLevel_t perceptionRegionConfidence; + Shape_t perceptionRegionShape; + BOOLEAN_t shadowingApplies; + struct SequenceOfIdentifier1B *sensorIdList; /* OPTIONAL */ + CardinalNumber1B_t *numberOfPerceivedObjects; /* OPTIONAL */ + struct PerceivedObjectIds *perceivedObjectIds; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceptionRegion_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceptionRegion; +extern asn_SEQUENCE_specifics_t asn_SPC_PerceptionRegion_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceptionRegion_1[7]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/SequenceOfIdentifier1B.h" +#include "etsi_its_cpm_coding/PerceivedObjectIds.h" + +#endif /* _PerceptionRegion_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegionContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegionContainer.h new file mode 100644 index 000000000..84305eb09 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerceptionRegionContainer.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _PerceptionRegionContainer_H_ +#define _PerceptionRegionContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PerceptionRegion; + +/* PerceptionRegionContainer */ +typedef struct PerceptionRegionContainer { + A_SEQUENCE_OF(struct PerceptionRegion) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PerceptionRegionContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerceptionRegionContainer; +extern asn_SET_OF_specifics_t asn_SPC_PerceptionRegionContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_PerceptionRegionContainer_1[1]; +extern asn_per_constraints_t asn_PER_type_PerceptionRegionContainer_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/PerceptionRegion.h" + +#endif /* _PerceptionRegionContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerformanceClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerformanceClass.h new file mode 100644 index 000000000..c91e539c7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PerformanceClass.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PerformanceClass_H_ +#define _PerformanceClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PerformanceClass { + PerformanceClass_unavailable = 0, + PerformanceClass_performanceClassA = 1, + PerformanceClass_performanceClassB = 2 +} e_PerformanceClass; + +/* PerformanceClass */ +typedef long PerformanceClass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PerformanceClass; +asn_struct_free_f PerformanceClass_free; +asn_struct_print_f PerformanceClass_print; +asn_constr_check_f PerformanceClass_constraint; +ber_type_decoder_f PerformanceClass_decode_ber; +der_type_encoder_f PerformanceClass_encode_der; +xer_type_decoder_f PerformanceClass_decode_xer; +xer_type_encoder_f PerformanceClass_encode_xer; +jer_type_encoder_f PerformanceClass_encode_jer; +oer_type_decoder_f PerformanceClass_decode_oer; +oer_type_encoder_f PerformanceClass_encode_oer; +per_type_decoder_f PerformanceClass_decode_uper; +per_type_encoder_f PerformanceClass_encode_uper; +per_type_decoder_f PerformanceClass_decode_aper; +per_type_encoder_f PerformanceClass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PerformanceClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PhoneNumber.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PhoneNumber.h new file mode 100644 index 000000000..c0fb2a5eb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PhoneNumber.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PhoneNumber_H_ +#define _PhoneNumber_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PhoneNumber */ +typedef NumericString_t PhoneNumber_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PhoneNumber_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PhoneNumber; +asn_struct_free_f PhoneNumber_free; +asn_struct_print_f PhoneNumber_print; +asn_constr_check_f PhoneNumber_constraint; +ber_type_decoder_f PhoneNumber_decode_ber; +der_type_encoder_f PhoneNumber_encode_der; +xer_type_decoder_f PhoneNumber_decode_xer; +xer_type_encoder_f PhoneNumber_encode_xer; +jer_type_encoder_f PhoneNumber_encode_jer; +oer_type_decoder_f PhoneNumber_decode_oer; +oer_type_encoder_f PhoneNumber_encode_oer; +per_type_decoder_f PhoneNumber_decode_uper; +per_type_encoder_f PhoneNumber_encode_uper; +per_type_decoder_f PhoneNumber_decode_aper; +per_type_encoder_f PhoneNumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PhoneNumber_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PolygonalShape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PolygonalShape.h new file mode 100644 index 000000000..353ecd328 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PolygonalShape.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h" +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include +#ifndef _PolygonalShape_H_ +#define _PolygonalShape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* PolygonalShape */ +typedef struct PolygonalShape { + struct CartesianPosition3d *shapeReferencePoint; /* OPTIONAL */ + SequenceOfCartesianPosition3d_t polygon; + StandardLength12b_t *height; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PolygonalShape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PolygonalShape; +extern asn_SEQUENCE_specifics_t asn_SPC_PolygonalShape_specs_1; +extern asn_TYPE_member_t asn_MBR_PolygonalShape_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _PolygonalShape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosCentMass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosCentMass.h new file mode 100644 index 000000000..c8a6bab12 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosCentMass.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PosCentMass_H_ +#define _PosCentMass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PosCentMass { + PosCentMass_tenCentimetres = 1, + PosCentMass_outOfRange = 62, + PosCentMass_unavailable = 63 +} e_PosCentMass; + +/* PosCentMass */ +typedef long PosCentMass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PosCentMass; +asn_struct_free_f PosCentMass_free; +asn_struct_print_f PosCentMass_print; +asn_constr_check_f PosCentMass_constraint; +ber_type_decoder_f PosCentMass_decode_ber; +der_type_encoder_f PosCentMass_encode_der; +xer_type_decoder_f PosCentMass_decode_xer; +xer_type_encoder_f PosCentMass_encode_xer; +jer_type_encoder_f PosCentMass_encode_jer; +oer_type_decoder_f PosCentMass_decode_oer; +oer_type_encoder_f PosCentMass_encode_oer; +per_type_decoder_f PosCentMass_decode_uper; +per_type_encoder_f PosCentMass_encode_uper; +per_type_decoder_f PosCentMass_decode_aper; +per_type_encoder_f PosCentMass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PosCentMass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosConfidenceEllipse.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosConfidenceEllipse.h new file mode 100644 index 000000000..be8f065fb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosConfidenceEllipse.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SemiAxisLength.h" +#include "etsi_its_cpm_coding/HeadingValue.h" +#include +#ifndef _PosConfidenceEllipse_H_ +#define _PosConfidenceEllipse_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PosConfidenceEllipse */ +typedef struct PosConfidenceEllipse { + SemiAxisLength_t semiMajorConfidence; + SemiAxisLength_t semiMinorConfidence; + HeadingValue_t semiMajorOrientation; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PosConfidenceEllipse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PosConfidenceEllipse; +extern asn_SEQUENCE_specifics_t asn_SPC_PosConfidenceEllipse_specs_1; +extern asn_TYPE_member_t asn_MBR_PosConfidenceEllipse_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PosConfidenceEllipse_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosFrontAx.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosFrontAx.h new file mode 100644 index 000000000..69c2489c3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosFrontAx.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PosFrontAx_H_ +#define _PosFrontAx_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PosFrontAx { + PosFrontAx_outOfRange = 19, + PosFrontAx_unavailable = 20 +} e_PosFrontAx; + +/* PosFrontAx */ +typedef long PosFrontAx_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PosFrontAx; +asn_struct_free_f PosFrontAx_free; +asn_struct_print_f PosFrontAx_print; +asn_constr_check_f PosFrontAx_constraint; +ber_type_decoder_f PosFrontAx_decode_ber; +der_type_encoder_f PosFrontAx_encode_der; +xer_type_decoder_f PosFrontAx_decode_xer; +xer_type_encoder_f PosFrontAx_encode_xer; +jer_type_encoder_f PosFrontAx_encode_jer; +oer_type_decoder_f PosFrontAx_decode_oer; +oer_type_encoder_f PosFrontAx_encode_oer; +per_type_decoder_f PosFrontAx_decode_uper; +per_type_encoder_f PosFrontAx_encode_uper; +per_type_decoder_f PosFrontAx_decode_aper; +per_type_encoder_f PosFrontAx_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PosFrontAx_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosLonCarr.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosLonCarr.h new file mode 100644 index 000000000..a15fb3e71 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosLonCarr.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PosLonCarr_H_ +#define _PosLonCarr_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PosLonCarr { + PosLonCarr_outOfRange = 126, + PosLonCarr_unavailable = 127 +} e_PosLonCarr; + +/* PosLonCarr */ +typedef long PosLonCarr_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PosLonCarr; +asn_struct_free_f PosLonCarr_free; +asn_struct_print_f PosLonCarr_print; +asn_constr_check_f PosLonCarr_constraint; +ber_type_decoder_f PosLonCarr_decode_ber; +der_type_encoder_f PosLonCarr_encode_der; +xer_type_decoder_f PosLonCarr_decode_xer; +xer_type_encoder_f PosLonCarr_encode_xer; +jer_type_encoder_f PosLonCarr_encode_jer; +oer_type_decoder_f PosLonCarr_decode_oer; +oer_type_encoder_f PosLonCarr_encode_oer; +per_type_decoder_f PosLonCarr_decode_uper; +per_type_encoder_f PosLonCarr_encode_uper; +per_type_decoder_f PosLonCarr_decode_aper; +per_type_encoder_f PosLonCarr_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PosLonCarr_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosPillar.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosPillar.h new file mode 100644 index 000000000..8c2f131c6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PosPillar.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PosPillar_H_ +#define _PosPillar_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PosPillar { + PosPillar_outOfRange = 29, + PosPillar_unavailable = 30 +} e_PosPillar; + +/* PosPillar */ +typedef long PosPillar_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PosPillar_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PosPillar; +asn_struct_free_f PosPillar_free; +asn_struct_print_f PosPillar_print; +asn_constr_check_f PosPillar_constraint; +ber_type_decoder_f PosPillar_decode_ber; +der_type_encoder_f PosPillar_encode_der; +xer_type_decoder_f PosPillar_decode_xer; +xer_type_encoder_f PosPillar_encode_xer; +jer_type_encoder_f PosPillar_encode_jer; +oer_type_decoder_f PosPillar_decode_oer; +oer_type_encoder_f PosPillar_encode_oer; +per_type_decoder_f PosPillar_decode_uper; +per_type_encoder_f PosPillar_encode_uper; +per_type_decoder_f PosPillar_decode_aper; +per_type_encoder_f PosPillar_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PosPillar_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionConfidenceEllipse.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionConfidenceEllipse.h new file mode 100644 index 000000000..dd701f9ec --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionConfidenceEllipse.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SemiAxisLength.h" +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" +#include +#ifndef _PositionConfidenceEllipse_H_ +#define _PositionConfidenceEllipse_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PositionConfidenceEllipse */ +typedef struct PositionConfidenceEllipse { + SemiAxisLength_t semiMajorAxisLength; + SemiAxisLength_t semiMinorAxisLength; + Wgs84AngleValue_t semiMajorAxisOrientation; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PositionConfidenceEllipse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionConfidenceEllipse; +extern asn_SEQUENCE_specifics_t asn_SPC_PositionConfidenceEllipse_specs_1; +extern asn_TYPE_member_t asn_MBR_PositionConfidenceEllipse_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionConfidenceEllipse_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfOccupants.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfOccupants.h new file mode 100644 index 000000000..aa460364d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfOccupants.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PositionOfOccupants_H_ +#define _PositionOfOccupants_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PositionOfOccupants { + PositionOfOccupants_row1LeftOccupied = 0, + PositionOfOccupants_row1RightOccupied = 1, + PositionOfOccupants_row1MidOccupied = 2, + PositionOfOccupants_row1NotDetectable = 3, + PositionOfOccupants_row1NotPresent = 4, + PositionOfOccupants_row2LeftOccupied = 5, + PositionOfOccupants_row2RightOccupied = 6, + PositionOfOccupants_row2MidOccupied = 7, + PositionOfOccupants_row2NotDetectable = 8, + PositionOfOccupants_row2NotPresent = 9, + PositionOfOccupants_row3LeftOccupied = 10, + PositionOfOccupants_row3RightOccupied = 11, + PositionOfOccupants_row3MidOccupied = 12, + PositionOfOccupants_row3NotDetectable = 13, + PositionOfOccupants_row3NotPresent = 14, + PositionOfOccupants_row4LeftOccupied = 15, + PositionOfOccupants_row4RightOccupied = 16, + PositionOfOccupants_row4MidOccupied = 17, + PositionOfOccupants_row4NotDetectable = 18, + PositionOfOccupants_row4NotPresent = 19 +} e_PositionOfOccupants; + +/* PositionOfOccupants */ +typedef BIT_STRING_t PositionOfOccupants_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionOfOccupants; +asn_struct_free_f PositionOfOccupants_free; +asn_struct_print_f PositionOfOccupants_print; +asn_constr_check_f PositionOfOccupants_constraint; +ber_type_decoder_f PositionOfOccupants_decode_ber; +der_type_encoder_f PositionOfOccupants_encode_der; +xer_type_decoder_f PositionOfOccupants_decode_xer; +xer_type_encoder_f PositionOfOccupants_encode_xer; +jer_type_encoder_f PositionOfOccupants_encode_jer; +oer_type_decoder_f PositionOfOccupants_decode_oer; +oer_type_encoder_f PositionOfOccupants_encode_oer; +per_type_decoder_f PositionOfOccupants_decode_uper; +per_type_encoder_f PositionOfOccupants_encode_uper; +per_type_decoder_f PositionOfOccupants_decode_aper; +per_type_encoder_f PositionOfOccupants_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionOfOccupants_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfPillars.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfPillars.h new file mode 100644 index 000000000..b184db01e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositionOfPillars.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/PosPillar.h" +#include +#include +#ifndef _PositionOfPillars_H_ +#define _PositionOfPillars_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PositionOfPillars */ +typedef struct PositionOfPillars { + A_SEQUENCE_OF(PosPillar_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PositionOfPillars_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositionOfPillars; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositionOfPillars_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositioningSolutionType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositioningSolutionType.h new file mode 100644 index 000000000..53550e77e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PositioningSolutionType.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PositioningSolutionType_H_ +#define _PositioningSolutionType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PositioningSolutionType { + PositioningSolutionType_noPositioningSolution = 0, + PositioningSolutionType_sGNSS = 1, + PositioningSolutionType_dGNSS = 2, + PositioningSolutionType_sGNSSplusDR = 3, + PositioningSolutionType_dGNSSplusDR = 4, + PositioningSolutionType_dR = 5 + /* + * Enumeration is extensible + */ +} e_PositioningSolutionType; + +/* PositioningSolutionType */ +typedef long PositioningSolutionType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PositioningSolutionType; +asn_struct_free_f PositioningSolutionType_free; +asn_struct_print_f PositioningSolutionType_print; +asn_constr_check_f PositioningSolutionType_constraint; +ber_type_decoder_f PositioningSolutionType_decode_ber; +der_type_encoder_f PositioningSolutionType_encode_der; +xer_type_decoder_f PositioningSolutionType_decode_xer; +xer_type_encoder_f PositioningSolutionType_encode_xer; +jer_type_encoder_f PositioningSolutionType_encode_jer; +oer_type_decoder_f PositioningSolutionType_decode_oer; +oer_type_encoder_f PositioningSolutionType_encode_oer; +per_type_decoder_f PositioningSolutionType_decode_uper; +per_type_encoder_f PositioningSolutionType_encode_uper; +per_type_decoder_f PositioningSolutionType_decode_aper; +per_type_encoder_f PositioningSolutionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PositioningSolutionType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PostCrashSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PostCrashSubCauseCode.h new file mode 100644 index 000000000..e214569e8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PostCrashSubCauseCode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PostCrashSubCauseCode_H_ +#define _PostCrashSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PostCrashSubCauseCode { + PostCrashSubCauseCode_unavailable = 0, + PostCrashSubCauseCode_accidentWithoutECallTriggered = 1, + PostCrashSubCauseCode_accidentWithECallManuallyTriggered = 2, + PostCrashSubCauseCode_accidentWithECallAutomaticallyTriggered = 3, + PostCrashSubCauseCode_accidentWithECallTriggeredWithoutAccessToCellularNetwork = 4 +} e_PostCrashSubCauseCode; + +/* PostCrashSubCauseCode */ +typedef long PostCrashSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PostCrashSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PostCrashSubCauseCode; +asn_struct_free_f PostCrashSubCauseCode_free; +asn_struct_print_f PostCrashSubCauseCode_print; +asn_constr_check_f PostCrashSubCauseCode_constraint; +ber_type_decoder_f PostCrashSubCauseCode_decode_ber; +der_type_encoder_f PostCrashSubCauseCode_encode_der; +xer_type_decoder_f PostCrashSubCauseCode_decode_xer; +xer_type_encoder_f PostCrashSubCauseCode_encode_xer; +jer_type_encoder_f PostCrashSubCauseCode_encode_jer; +oer_type_decoder_f PostCrashSubCauseCode_decode_oer; +oer_type_encoder_f PostCrashSubCauseCode_encode_oer; +per_type_decoder_f PostCrashSubCauseCode_decode_uper; +per_type_encoder_f PostCrashSubCauseCode_encode_uper; +per_type_decoder_f PostCrashSubCauseCode_decode_aper; +per_type_encoder_f PostCrashSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PostCrashSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PrecipitationIntensity.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PrecipitationIntensity.h new file mode 100644 index 000000000..1631c74b7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PrecipitationIntensity.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PrecipitationIntensity_H_ +#define _PrecipitationIntensity_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrecipitationIntensity { + PrecipitationIntensity_outOfRange = 2000, + PrecipitationIntensity_unavailable = 2001 +} e_PrecipitationIntensity; + +/* PrecipitationIntensity */ +typedef long PrecipitationIntensity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrecipitationIntensity; +asn_struct_free_f PrecipitationIntensity_free; +asn_struct_print_f PrecipitationIntensity_print; +asn_constr_check_f PrecipitationIntensity_constraint; +ber_type_decoder_f PrecipitationIntensity_decode_ber; +der_type_encoder_f PrecipitationIntensity_encode_der; +xer_type_decoder_f PrecipitationIntensity_decode_xer; +xer_type_encoder_f PrecipitationIntensity_encode_xer; +jer_type_encoder_f PrecipitationIntensity_encode_jer; +oer_type_decoder_f PrecipitationIntensity_decode_oer; +oer_type_encoder_f PrecipitationIntensity_encode_oer; +per_type_decoder_f PrecipitationIntensity_decode_uper; +per_type_encoder_f PrecipitationIntensity_encode_uper; +per_type_decoder_f PrecipitationIntensity_decode_aper; +per_type_encoder_f PrecipitationIntensity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrecipitationIntensity_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZone.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZone.h new file mode 100644 index 000000000..665a7e8be --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZone.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ProtectedZoneType.h" +#include "etsi_its_cpm_coding/TimestampIts.h" +#include "etsi_its_cpm_coding/Latitude.h" +#include "etsi_its_cpm_coding/Longitude.h" +#include "etsi_its_cpm_coding/ProtectedZoneRadius.h" +#include "etsi_its_cpm_coding/ProtectedZoneId.h" +#include +#ifndef _ProtectedCommunicationZone_H_ +#define _ProtectedCommunicationZone_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtectedCommunicationZone */ +typedef struct ProtectedCommunicationZone { + ProtectedZoneType_t protectedZoneType; + TimestampIts_t *expiryTime; /* OPTIONAL */ + Latitude_t protectedZoneLatitude; + Longitude_t protectedZoneLongitude; + ProtectedZoneRadius_t *protectedZoneRadius; /* OPTIONAL */ + ProtectedZoneId_t *protectedZoneId; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedCommunicationZone_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedCommunicationZone; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedCommunicationZone_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedCommunicationZone_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedCommunicationZone_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZonesRSU.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZonesRSU.h new file mode 100644 index 000000000..29178a5bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedCommunicationZonesRSU.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _ProtectedCommunicationZonesRSU_H_ +#define _ProtectedCommunicationZonesRSU_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtectedCommunicationZone; + +/* ProtectedCommunicationZonesRSU */ +typedef struct ProtectedCommunicationZonesRSU { + A_SEQUENCE_OF(struct ProtectedCommunicationZone) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedCommunicationZonesRSU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedCommunicationZonesRSU; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/ProtectedCommunicationZone.h" + +#endif /* _ProtectedCommunicationZonesRSU_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneId.h new file mode 100644 index 000000000..97259e345 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneId.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ProtectedZoneId_H_ +#define _ProtectedZoneId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtectedZoneId */ +typedef long ProtectedZoneId_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtectedZoneId_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedZoneId; +asn_struct_free_f ProtectedZoneId_free; +asn_struct_print_f ProtectedZoneId_print; +asn_constr_check_f ProtectedZoneId_constraint; +ber_type_decoder_f ProtectedZoneId_decode_ber; +der_type_encoder_f ProtectedZoneId_encode_der; +xer_type_decoder_f ProtectedZoneId_decode_xer; +xer_type_encoder_f ProtectedZoneId_encode_xer; +jer_type_encoder_f ProtectedZoneId_encode_jer; +oer_type_decoder_f ProtectedZoneId_decode_oer; +oer_type_encoder_f ProtectedZoneId_encode_oer; +per_type_decoder_f ProtectedZoneId_decode_uper; +per_type_encoder_f ProtectedZoneId_encode_uper; +per_type_decoder_f ProtectedZoneId_decode_aper; +per_type_encoder_f ProtectedZoneId_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedZoneId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneRadius.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneRadius.h new file mode 100644 index 000000000..6918f2c07 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneRadius.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ProtectedZoneRadius_H_ +#define _ProtectedZoneRadius_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtectedZoneRadius */ +typedef long ProtectedZoneRadius_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtectedZoneRadius_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedZoneRadius; +asn_struct_free_f ProtectedZoneRadius_free; +asn_struct_print_f ProtectedZoneRadius_print; +asn_constr_check_f ProtectedZoneRadius_constraint; +ber_type_decoder_f ProtectedZoneRadius_decode_ber; +der_type_encoder_f ProtectedZoneRadius_encode_der; +xer_type_decoder_f ProtectedZoneRadius_decode_xer; +xer_type_encoder_f ProtectedZoneRadius_encode_xer; +jer_type_encoder_f ProtectedZoneRadius_encode_jer; +oer_type_decoder_f ProtectedZoneRadius_decode_oer; +oer_type_encoder_f ProtectedZoneRadius_encode_oer; +per_type_decoder_f ProtectedZoneRadius_decode_uper; +per_type_encoder_f ProtectedZoneRadius_encode_uper; +per_type_decoder_f ProtectedZoneRadius_decode_aper; +per_type_encoder_f ProtectedZoneRadius_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedZoneRadius_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneType.h new file mode 100644 index 000000000..5a2eb57a5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ProtectedZoneType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ProtectedZoneType_H_ +#define _ProtectedZoneType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProtectedZoneType { + ProtectedZoneType_permanentCenDsrcTolling = 0, + /* + * Enumeration is extensible + */ + ProtectedZoneType_temporaryCenDsrcTolling = 1 +} e_ProtectedZoneType; + +/* ProtectedZoneType */ +typedef long ProtectedZoneType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtectedZoneType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedZoneType; +extern const asn_INTEGER_specifics_t asn_SPC_ProtectedZoneType_specs_1; +asn_struct_free_f ProtectedZoneType_free; +asn_struct_print_f ProtectedZoneType_print; +asn_constr_check_f ProtectedZoneType_constraint; +ber_type_decoder_f ProtectedZoneType_decode_ber; +der_type_encoder_f ProtectedZoneType_encode_der; +xer_type_decoder_f ProtectedZoneType_decode_xer; +xer_type_encoder_f ProtectedZoneType_encode_xer; +jer_type_encoder_f ProtectedZoneType_encode_jer; +oer_type_decoder_f ProtectedZoneType_decode_oer; +oer_type_encoder_f ProtectedZoneType_encode_oer; +per_type_decoder_f ProtectedZoneType_decode_uper; +per_type_encoder_f ProtectedZoneType_encode_uper; +per_type_decoder_f ProtectedZoneType_decode_aper; +per_type_encoder_f ProtectedZoneType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedZoneType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivation.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivation.h new file mode 100644 index 000000000..5f7e7d4d6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivation.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/PtActivationType.h" +#include "etsi_its_cpm_coding/PtActivationData.h" +#include +#ifndef _PtActivation_H_ +#define _PtActivation_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PtActivation */ +typedef struct PtActivation { + PtActivationType_t ptActivationType; + PtActivationData_t ptActivationData; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PtActivation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PtActivation; + +#ifdef __cplusplus +} +#endif + +#endif /* _PtActivation_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationData.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationData.h new file mode 100644 index 000000000..ebb2a142d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationData.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PtActivationData_H_ +#define _PtActivationData_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PtActivationData */ +typedef OCTET_STRING_t PtActivationData_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PtActivationData_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PtActivationData; +asn_struct_free_f PtActivationData_free; +asn_struct_print_f PtActivationData_print; +asn_constr_check_f PtActivationData_constraint; +ber_type_decoder_f PtActivationData_decode_ber; +der_type_encoder_f PtActivationData_encode_der; +xer_type_decoder_f PtActivationData_decode_xer; +xer_type_encoder_f PtActivationData_encode_xer; +jer_type_encoder_f PtActivationData_encode_jer; +oer_type_decoder_f PtActivationData_decode_oer; +oer_type_encoder_f PtActivationData_encode_oer; +per_type_decoder_f PtActivationData_decode_uper; +per_type_encoder_f PtActivationData_encode_uper; +per_type_decoder_f PtActivationData_decode_aper; +per_type_encoder_f PtActivationData_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PtActivationData_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationType.h new file mode 100644 index 000000000..291681628 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/PtActivationType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _PtActivationType_H_ +#define _PtActivationType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PtActivationType { + PtActivationType_undefinedCodingType = 0, + PtActivationType_r09_16CodingType = 1, + PtActivationType_vdv_50149CodingType = 2 +} e_PtActivationType; + +/* PtActivationType */ +typedef long PtActivationType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PtActivationType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PtActivationType; +asn_struct_free_f PtActivationType_free; +asn_struct_print_f PtActivationType_print; +asn_constr_check_f PtActivationType_constraint; +ber_type_decoder_f PtActivationType_decode_ber; +der_type_encoder_f PtActivationType_encode_der; +xer_type_decoder_f PtActivationType_decode_xer; +xer_type_encoder_f PtActivationType_encode_xer; +jer_type_encoder_f PtActivationType_encode_jer; +oer_type_decoder_f PtActivationType_decode_oer; +oer_type_encoder_f PtActivationType_encode_oer; +per_type_decoder_f PtActivationType_decode_uper; +per_type_encoder_f PtActivationType_encode_uper; +per_type_decoder_f PtActivationType_decode_aper; +per_type_encoder_f PtActivationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PtActivationType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShape.h new file mode 100644 index 000000000..51aa37de7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShape.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" +#include "etsi_its_cpm_coding/CartesianAngleValue.h" +#include +#ifndef _RadialShape_H_ +#define _RadialShape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* RadialShape */ +typedef struct RadialShape { + struct CartesianPosition3d *shapeReferencePoint; /* OPTIONAL */ + StandardLength12b_t range; + Wgs84AngleValue_t stationaryHorizontalOpeningAngleStart; + Wgs84AngleValue_t stationaryHorizontalOpeningAngleEnd; + CartesianAngleValue_t *verticalOpeningAngleStart; /* OPTIONAL */ + CartesianAngleValue_t *verticalOpeningAngleEnd; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadialShape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadialShape; +extern asn_SEQUENCE_specifics_t asn_SPC_RadialShape_specs_1; +extern asn_TYPE_member_t asn_MBR_RadialShape_1[6]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _RadialShape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapeDetails.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapeDetails.h new file mode 100644 index 000000000..0d56c7d1e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapeDetails.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include "etsi_its_cpm_coding/CartesianAngleValue.h" +#include +#ifndef _RadialShapeDetails_H_ +#define _RadialShapeDetails_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RadialShapeDetails */ +typedef struct RadialShapeDetails { + StandardLength12b_t range; + CartesianAngleValue_t horizontalOpeningAngleStart; + CartesianAngleValue_t horizontalOpeningAngleEnd; + CartesianAngleValue_t *verticalOpeningAngleStart; /* OPTIONAL */ + CartesianAngleValue_t *verticalOpeningAngleEnd; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadialShapeDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadialShapeDetails; +extern asn_SEQUENCE_specifics_t asn_SPC_RadialShapeDetails_specs_1; +extern asn_TYPE_member_t asn_MBR_RadialShapeDetails_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadialShapeDetails_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapes.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapes.h new file mode 100644 index 000000000..0726aa05a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapes.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/CartesianCoordinateSmall.h" +#include "etsi_its_cpm_coding/RadialShapesList.h" +#include +#ifndef _RadialShapes_H_ +#define _RadialShapes_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RadialShapes */ +typedef struct RadialShapes { + Identifier1B_t refPointId; + CartesianCoordinateSmall_t xCoordinate; + CartesianCoordinateSmall_t yCoordinate; + CartesianCoordinateSmall_t *zCoordinate; /* OPTIONAL */ + RadialShapesList_t radialShapesList; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadialShapes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadialShapes; +extern asn_SEQUENCE_specifics_t asn_SPC_RadialShapes_specs_1; +extern asn_TYPE_member_t asn_MBR_RadialShapes_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadialShapes_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapesList.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapesList.h new file mode 100644 index 000000000..f359e576c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RadialShapesList.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _RadialShapesList_H_ +#define _RadialShapesList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RadialShapeDetails; + +/* RadialShapesList */ +typedef struct RadialShapesList { + A_SEQUENCE_OF(struct RadialShapeDetails) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadialShapesList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadialShapesList; +extern asn_SET_OF_specifics_t asn_SPC_RadialShapesList_specs_1; +extern asn_TYPE_member_t asn_MBR_RadialShapesList_1[1]; +extern asn_per_constraints_t asn_PER_type_RadialShapesList_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/RadialShapeDetails.h" + +#endif /* _RadialShapesList_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h new file mode 100644 index 000000000..243ed209d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RailwayLevelCrossingSubCauseCode_H_ +#define _RailwayLevelCrossingSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RailwayLevelCrossingSubCauseCode { + RailwayLevelCrossingSubCauseCode_unavailable = 0, + RailwayLevelCrossingSubCauseCode_doNotCrossAbnormalSituation = 1, + RailwayLevelCrossingSubCauseCode_closed = 2, + RailwayLevelCrossingSubCauseCode_unguarded = 3, + RailwayLevelCrossingSubCauseCode_nominal = 4 +} e_RailwayLevelCrossingSubCauseCode; + +/* RailwayLevelCrossingSubCauseCode */ +typedef long RailwayLevelCrossingSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RailwayLevelCrossingSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RailwayLevelCrossingSubCauseCode; +asn_struct_free_f RailwayLevelCrossingSubCauseCode_free; +asn_struct_print_f RailwayLevelCrossingSubCauseCode_print; +asn_constr_check_f RailwayLevelCrossingSubCauseCode_constraint; +ber_type_decoder_f RailwayLevelCrossingSubCauseCode_decode_ber; +der_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_der; +xer_type_decoder_f RailwayLevelCrossingSubCauseCode_decode_xer; +xer_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_xer; +jer_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_jer; +oer_type_decoder_f RailwayLevelCrossingSubCauseCode_decode_oer; +oer_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_oer; +per_type_decoder_f RailwayLevelCrossingSubCauseCode_decode_uper; +per_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_uper; +per_type_decoder_f RailwayLevelCrossingSubCauseCode_decode_aper; +per_type_encoder_f RailwayLevelCrossingSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RailwayLevelCrossingSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RectangularShape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RectangularShape.h new file mode 100644 index 000000000..afa8b35e4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RectangularShape.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StandardLength12b.h" +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" +#include +#ifndef _RectangularShape_H_ +#define _RectangularShape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* RectangularShape */ +typedef struct RectangularShape { + struct CartesianPosition3d *centerPoint; /* OPTIONAL */ + StandardLength12b_t semiLength; + StandardLength12b_t semiBreadth; + Wgs84AngleValue_t *orientation; /* OPTIONAL */ + StandardLength12b_t *height; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RectangularShape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RectangularShape; +extern asn_SEQUENCE_specifics_t asn_SPC_RectangularShape_specs_1; +extern asn_TYPE_member_t asn_MBR_RectangularShape_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _RectangularShape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePosition.h new file mode 100644 index 000000000..6fef79b10 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePosition.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Latitude.h" +#include "etsi_its_cpm_coding/Longitude.h" +#include "etsi_its_cpm_coding/PosConfidenceEllipse.h" +#include "etsi_its_cpm_coding/Altitude.h" +#include +#ifndef _ReferencePosition_H_ +#define _ReferencePosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReferencePosition */ +typedef struct ReferencePosition { + Latitude_t latitude; + Longitude_t longitude; + PosConfidenceEllipse_t positionConfidenceEllipse; + Altitude_t altitude; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReferencePosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReferencePosition; +extern asn_SEQUENCE_specifics_t asn_SPC_ReferencePosition_specs_1; +extern asn_TYPE_member_t asn_MBR_ReferencePosition_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReferencePosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePositionWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePositionWithConfidence.h new file mode 100644 index 000000000..edd188ac3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ReferencePositionWithConfidence.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Latitude.h" +#include "etsi_its_cpm_coding/Longitude.h" +#include "etsi_its_cpm_coding/PositionConfidenceEllipse.h" +#include "etsi_its_cpm_coding/Altitude.h" +#include +#ifndef _ReferencePositionWithConfidence_H_ +#define _ReferencePositionWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReferencePositionWithConfidence */ +typedef struct ReferencePositionWithConfidence { + Latitude_t latitude; + Longitude_t longitude; + PositionConfidenceEllipse_t positionConfidenceEllipse; + Altitude_t altitude; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReferencePositionWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReferencePositionWithConfidence; +extern asn_SEQUENCE_specifics_t asn_SPC_ReferencePositionWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_ReferencePositionWithConfidence_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReferencePositionWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceDistance.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceDistance.h new file mode 100644 index 000000000..ce1f391c3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceDistance.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RelevanceDistance_H_ +#define _RelevanceDistance_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RelevanceDistance { + RelevanceDistance_lessThan50m = 0, + RelevanceDistance_lessThan100m = 1, + RelevanceDistance_lessThan200m = 2, + RelevanceDistance_lessThan500m = 3, + RelevanceDistance_lessThan1000m = 4, + RelevanceDistance_lessThan5km = 5, + RelevanceDistance_lessThan10km = 6, + RelevanceDistance_over10km = 7 +} e_RelevanceDistance; + +/* RelevanceDistance */ +typedef long RelevanceDistance_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RelevanceDistance; +asn_struct_free_f RelevanceDistance_free; +asn_struct_print_f RelevanceDistance_print; +asn_constr_check_f RelevanceDistance_constraint; +ber_type_decoder_f RelevanceDistance_decode_ber; +der_type_encoder_f RelevanceDistance_encode_der; +xer_type_decoder_f RelevanceDistance_decode_xer; +xer_type_encoder_f RelevanceDistance_encode_xer; +jer_type_encoder_f RelevanceDistance_encode_jer; +oer_type_decoder_f RelevanceDistance_decode_oer; +oer_type_encoder_f RelevanceDistance_encode_oer; +per_type_decoder_f RelevanceDistance_decode_uper; +per_type_encoder_f RelevanceDistance_encode_uper; +per_type_decoder_f RelevanceDistance_decode_aper; +per_type_encoder_f RelevanceDistance_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RelevanceDistance_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceTrafficDirection.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceTrafficDirection.h new file mode 100644 index 000000000..9e634c285 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RelevanceTrafficDirection.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RelevanceTrafficDirection_H_ +#define _RelevanceTrafficDirection_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RelevanceTrafficDirection { + RelevanceTrafficDirection_allTrafficDirections = 0, + RelevanceTrafficDirection_upstreamTraffic = 1, + RelevanceTrafficDirection_downstreamTraffic = 2, + RelevanceTrafficDirection_oppositeTraffic = 3 +} e_RelevanceTrafficDirection; + +/* RelevanceTrafficDirection */ +typedef long RelevanceTrafficDirection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RelevanceTrafficDirection; +asn_struct_free_f RelevanceTrafficDirection_free; +asn_struct_print_f RelevanceTrafficDirection_print; +asn_constr_check_f RelevanceTrafficDirection_constraint; +ber_type_decoder_f RelevanceTrafficDirection_decode_ber; +der_type_encoder_f RelevanceTrafficDirection_encode_der; +xer_type_decoder_f RelevanceTrafficDirection_decode_xer; +xer_type_encoder_f RelevanceTrafficDirection_encode_xer; +jer_type_encoder_f RelevanceTrafficDirection_encode_jer; +oer_type_decoder_f RelevanceTrafficDirection_decode_oer; +oer_type_encoder_f RelevanceTrafficDirection_encode_oer; +per_type_decoder_f RelevanceTrafficDirection_decode_uper; +per_type_encoder_f RelevanceTrafficDirection_encode_uper; +per_type_decoder_f RelevanceTrafficDirection_decode_aper; +per_type_encoder_f RelevanceTrafficDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RelevanceTrafficDirection_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RequestResponseIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RequestResponseIndication.h new file mode 100644 index 000000000..aba0b3900 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RequestResponseIndication.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RequestResponseIndication_H_ +#define _RequestResponseIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RequestResponseIndication { + RequestResponseIndication_request = 0, + RequestResponseIndication_response = 1 +} e_RequestResponseIndication; + +/* RequestResponseIndication */ +typedef long RequestResponseIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RequestResponseIndication; +asn_struct_free_f RequestResponseIndication_free; +asn_struct_print_f RequestResponseIndication_print; +asn_constr_check_f RequestResponseIndication_constraint; +ber_type_decoder_f RequestResponseIndication_decode_ber; +der_type_encoder_f RequestResponseIndication_encode_der; +xer_type_decoder_f RequestResponseIndication_decode_xer; +xer_type_encoder_f RequestResponseIndication_encode_xer; +jer_type_encoder_f RequestResponseIndication_encode_jer; +oer_type_decoder_f RequestResponseIndication_decode_oer; +oer_type_encoder_f RequestResponseIndication_encode_oer; +per_type_decoder_f RequestResponseIndication_decode_uper; +per_type_encoder_f RequestResponseIndication_encode_uper; +per_type_decoder_f RequestResponseIndication_decode_aper; +per_type_encoder_f RequestResponseIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RequestResponseIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h new file mode 100644 index 000000000..3bcc366b4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RescueAndRecoveryWorkInProgressSubCauseCode_H_ +#define _RescueAndRecoveryWorkInProgressSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RescueAndRecoveryWorkInProgressSubCauseCode { + RescueAndRecoveryWorkInProgressSubCauseCode_unavailable = 0, + RescueAndRecoveryWorkInProgressSubCauseCode_emergencyVehicles = 1, + RescueAndRecoveryWorkInProgressSubCauseCode_rescueHelicopterLanding = 2, + RescueAndRecoveryWorkInProgressSubCauseCode_policeActivityOngoing = 3, + RescueAndRecoveryWorkInProgressSubCauseCode_medicalEmergencyOngoing = 4, + RescueAndRecoveryWorkInProgressSubCauseCode_childAbductionInProgress = 5 +} e_RescueAndRecoveryWorkInProgressSubCauseCode; + +/* RescueAndRecoveryWorkInProgressSubCauseCode */ +typedef long RescueAndRecoveryWorkInProgressSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RescueAndRecoveryWorkInProgressSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode; +asn_struct_free_f RescueAndRecoveryWorkInProgressSubCauseCode_free; +asn_struct_print_f RescueAndRecoveryWorkInProgressSubCauseCode_print; +asn_constr_check_f RescueAndRecoveryWorkInProgressSubCauseCode_constraint; +ber_type_decoder_f RescueAndRecoveryWorkInProgressSubCauseCode_decode_ber; +der_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_der; +xer_type_decoder_f RescueAndRecoveryWorkInProgressSubCauseCode_decode_xer; +xer_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_xer; +jer_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_jer; +oer_type_decoder_f RescueAndRecoveryWorkInProgressSubCauseCode_decode_oer; +oer_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_oer; +per_type_decoder_f RescueAndRecoveryWorkInProgressSubCauseCode_decode_uper; +per_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_uper; +per_type_decoder_f RescueAndRecoveryWorkInProgressSubCauseCode_decode_aper; +per_type_encoder_f RescueAndRecoveryWorkInProgressSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RescueAndRecoveryWorkInProgressSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RestrictedTypes.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RestrictedTypes.h new file mode 100644 index 000000000..1bf685474 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RestrictedTypes.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StationType.h" +#include +#include +#ifndef _RestrictedTypes_H_ +#define _RestrictedTypes_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RestrictedTypes */ +typedef struct RestrictedTypes { + A_SEQUENCE_OF(StationType_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RestrictedTypes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RestrictedTypes; + +#ifdef __cplusplus +} +#endif + +#endif /* _RestrictedTypes_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadSegmentReferenceId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadSegmentReferenceId.h new file mode 100644 index 000000000..495e1a6a7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadSegmentReferenceId.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier2B.h" +#include +#ifndef _RoadSegmentReferenceId_H_ +#define _RoadSegmentReferenceId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RoadSegmentReferenceId */ +typedef struct RoadSegmentReferenceId { + Identifier2B_t *region; /* OPTIONAL */ + Identifier2B_t id; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RoadSegmentReferenceId_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadSegmentReferenceId; +extern asn_SEQUENCE_specifics_t asn_SPC_RoadSegmentReferenceId_specs_1; +extern asn_TYPE_member_t asn_MBR_RoadSegmentReferenceId_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadSegmentReferenceId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadType.h new file mode 100644 index 000000000..5958f0438 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RoadType_H_ +#define _RoadType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RoadType { + RoadType_urban_NoStructuralSeparationToOppositeLanes = 0, + RoadType_urban_WithStructuralSeparationToOppositeLanes = 1, + RoadType_nonUrban_NoStructuralSeparationToOppositeLanes = 2, + RoadType_nonUrban_WithStructuralSeparationToOppositeLanes = 3 +} e_RoadType; + +/* RoadType */ +typedef long RoadType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RoadType; +asn_struct_free_f RoadType_free; +asn_struct_print_f RoadType_print; +asn_constr_check_f RoadType_constraint; +ber_type_decoder_f RoadType_decode_ber; +der_type_encoder_f RoadType_encode_der; +xer_type_decoder_f RoadType_decode_xer; +xer_type_encoder_f RoadType_encode_xer; +jer_type_encoder_f RoadType_encode_jer; +oer_type_decoder_f RoadType_decode_oer; +oer_type_encoder_f RoadType_encode_oer; +per_type_decoder_f RoadType_decode_uper; +per_type_encoder_f RoadType_encode_uper; +per_type_decoder_f RoadType_decode_aper; +per_type_encoder_f RoadType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadworksSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadworksSubCauseCode.h new file mode 100644 index 000000000..6bddf2e5c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/RoadworksSubCauseCode.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _RoadworksSubCauseCode_H_ +#define _RoadworksSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RoadworksSubCauseCode { + RoadworksSubCauseCode_unavailable = 0, + RoadworksSubCauseCode_majorRoadworks = 1, + RoadworksSubCauseCode_roadMarkingWork = 2, + RoadworksSubCauseCode_slowMovingRoadMaintenance = 3, + RoadworksSubCauseCode_shortTermStationaryRoadworks = 4, + RoadworksSubCauseCode_streetCleaning = 5, + RoadworksSubCauseCode_winterService = 6 +} e_RoadworksSubCauseCode; + +/* RoadworksSubCauseCode */ +typedef long RoadworksSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RoadworksSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RoadworksSubCauseCode; +asn_struct_free_f RoadworksSubCauseCode_free; +asn_struct_print_f RoadworksSubCauseCode_print; +asn_constr_check_f RoadworksSubCauseCode_constraint; +ber_type_decoder_f RoadworksSubCauseCode_decode_ber; +der_type_encoder_f RoadworksSubCauseCode_encode_der; +xer_type_decoder_f RoadworksSubCauseCode_decode_xer; +xer_type_encoder_f RoadworksSubCauseCode_encode_xer; +jer_type_encoder_f RoadworksSubCauseCode_encode_jer; +oer_type_decoder_f RoadworksSubCauseCode_decode_oer; +oer_type_encoder_f RoadworksSubCauseCode_encode_oer; +per_type_decoder_f RoadworksSubCauseCode_decode_uper; +per_type_encoder_f RoadworksSubCauseCode_encode_uper; +per_type_decoder_f RoadworksSubCauseCode_decode_aper; +per_type_encoder_f RoadworksSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RoadworksSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndication.h new file mode 100644 index 000000000..b7242cd80 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndication.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StationId.h" +#include "etsi_its_cpm_coding/SafeDistanceIndicator.h" +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" +#include +#ifndef _SafeDistanceIndication_H_ +#define _SafeDistanceIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SafeDistanceIndication */ +typedef struct SafeDistanceIndication { + StationId_t *subjectStation; /* OPTIONAL */ + SafeDistanceIndicator_t safeDistanceIndicator; + DeltaTimeTenthOfSecond_t *timeToCollision; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SafeDistanceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SafeDistanceIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_SafeDistanceIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_SafeDistanceIndication_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SafeDistanceIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndicator.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndicator.h new file mode 100644 index 000000000..15a03d1d6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SafeDistanceIndicator.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SafeDistanceIndicator_H_ +#define _SafeDistanceIndicator_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SafeDistanceIndicator */ +typedef BOOLEAN_t SafeDistanceIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SafeDistanceIndicator; +asn_struct_free_f SafeDistanceIndicator_free; +asn_struct_print_f SafeDistanceIndicator_print; +asn_constr_check_f SafeDistanceIndicator_constraint; +ber_type_decoder_f SafeDistanceIndicator_decode_ber; +der_type_encoder_f SafeDistanceIndicator_encode_der; +xer_type_decoder_f SafeDistanceIndicator_decode_xer; +xer_type_encoder_f SafeDistanceIndicator_encode_xer; +jer_type_encoder_f SafeDistanceIndicator_encode_jer; +oer_type_decoder_f SafeDistanceIndicator_decode_oer; +oer_type_encoder_f SafeDistanceIndicator_encode_oer; +per_type_decoder_f SafeDistanceIndicator_decode_uper; +per_type_encoder_f SafeDistanceIndicator_encode_uper; +per_type_decoder_f SafeDistanceIndicator_decode_aper; +per_type_encoder_f SafeDistanceIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SafeDistanceIndicator_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SemiAxisLength.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SemiAxisLength.h new file mode 100644 index 000000000..565d44f4f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SemiAxisLength.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SemiAxisLength_H_ +#define _SemiAxisLength_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SemiAxisLength { + SemiAxisLength_doNotUse = 0, + SemiAxisLength_outOfRange = 4094, + SemiAxisLength_unavailable = 4095 +} e_SemiAxisLength; + +/* SemiAxisLength */ +typedef long SemiAxisLength_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SemiAxisLength_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SemiAxisLength; +asn_struct_free_f SemiAxisLength_free; +asn_struct_print_f SemiAxisLength_print; +asn_constr_check_f SemiAxisLength_constraint; +ber_type_decoder_f SemiAxisLength_decode_ber; +der_type_encoder_f SemiAxisLength_encode_der; +xer_type_decoder_f SemiAxisLength_decode_xer; +xer_type_encoder_f SemiAxisLength_encode_xer; +jer_type_encoder_f SemiAxisLength_encode_jer; +oer_type_decoder_f SemiAxisLength_decode_oer; +oer_type_encoder_f SemiAxisLength_encode_oer; +per_type_decoder_f SemiAxisLength_decode_uper; +per_type_encoder_f SemiAxisLength_encode_uper; +per_type_decoder_f SemiAxisLength_decode_aper; +per_type_encoder_f SemiAxisLength_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SemiAxisLength_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformation.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformation.h new file mode 100644 index 000000000..e531d1eaf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformation.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-SensorInformationContainer" + * found in "/input/CPM-SensorInformationContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/SensorType.h" +#include "etsi_its_cpm_coding/ConfidenceLevel.h" +#include +#include +#ifndef _SensorInformation_H_ +#define _SensorInformation_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Shape; + +/* SensorInformation */ +typedef struct SensorInformation { + Identifier1B_t sensorId; + SensorType_t sensorType; + struct Shape *perceptionRegionShape; /* OPTIONAL */ + ConfidenceLevel_t *perceptionRegionConfidence; /* OPTIONAL */ + BOOLEAN_t shadowingApplies; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SensorInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SensorInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_SensorInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_SensorInformation_1[5]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/Shape.h" + +#endif /* _SensorInformation_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformationContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformationContainer.h new file mode 100644 index 000000000..ab580b7bc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorInformationContainer.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-SensorInformationContainer" + * found in "/input/CPM-SensorInformationContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _SensorInformationContainer_H_ +#define _SensorInformationContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SensorInformation; + +/* SensorInformationContainer */ +typedef struct SensorInformationContainer { + A_SEQUENCE_OF(struct SensorInformation) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SensorInformationContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SensorInformationContainer; +extern asn_SET_OF_specifics_t asn_SPC_SensorInformationContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_SensorInformationContainer_1[1]; +extern asn_per_constraints_t asn_PER_type_SensorInformationContainer_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/SensorInformation.h" + +#endif /* _SensorInformationContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorType.h new file mode 100644 index 000000000..e66e6f0e6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SensorType.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SensorType_H_ +#define _SensorType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SensorType { + SensorType_undefined = 0, + SensorType_radar = 1, + SensorType_lidar = 2, + SensorType_monovideo = 3, + SensorType_stereovision = 4, + SensorType_nightvision = 5, + SensorType_ultrasonic = 6, + SensorType_pmd = 7, + SensorType_inductionLoop = 8, + SensorType_sphericalCamera = 9, + SensorType_uwb = 10, + SensorType_acoustic = 11, + SensorType_localAggregation = 12, + SensorType_itsAggregation = 13 +} e_SensorType; + +/* SensorType */ +typedef long SensorType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SensorType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SensorType; +asn_struct_free_f SensorType_free; +asn_struct_print_f SensorType_print; +asn_constr_check_f SensorType_constraint; +ber_type_decoder_f SensorType_decode_ber; +der_type_encoder_f SensorType_encode_der; +xer_type_decoder_f SensorType_decode_xer; +xer_type_encoder_f SensorType_encode_xer; +jer_type_encoder_f SensorType_encode_jer; +oer_type_decoder_f SensorType_decode_oer; +oer_type_encoder_f SensorType_encode_oer; +per_type_decoder_f SensorType_decode_uper; +per_type_encoder_f SensorType_encode_uper; +per_type_decoder_f SensorType_decode_aper; +per_type_encoder_f SensorType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SensorType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceNumber.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceNumber.h new file mode 100644 index 000000000..c97fe0071 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceNumber.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SequenceNumber_H_ +#define _SequenceNumber_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SequenceNumber */ +typedef long SequenceNumber_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SequenceNumber_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SequenceNumber; +asn_struct_free_f SequenceNumber_free; +asn_struct_print_f SequenceNumber_print; +asn_constr_check_f SequenceNumber_constraint; +ber_type_decoder_f SequenceNumber_decode_ber; +der_type_encoder_f SequenceNumber_encode_der; +xer_type_decoder_f SequenceNumber_decode_xer; +xer_type_encoder_f SequenceNumber_encode_xer; +jer_type_encoder_f SequenceNumber_encode_jer; +oer_type_decoder_f SequenceNumber_decode_oer; +oer_type_encoder_f SequenceNumber_encode_oer; +per_type_decoder_f SequenceNumber_decode_uper; +per_type_encoder_f SequenceNumber_encode_uper; +per_type_decoder_f SequenceNumber_decode_aper; +per_type_encoder_f SequenceNumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SequenceNumber_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h new file mode 100644 index 000000000..200df952b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _SequenceOfCartesianPosition3d_H_ +#define _SequenceOfCartesianPosition3d_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CartesianPosition3d; + +/* SequenceOfCartesianPosition3d */ +typedef struct SequenceOfCartesianPosition3d { + A_SEQUENCE_OF(struct CartesianPosition3d) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SequenceOfCartesianPosition3d_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SequenceOfCartesianPosition3d; +extern asn_SET_OF_specifics_t asn_SPC_SequenceOfCartesianPosition3d_specs_1; +extern asn_TYPE_member_t asn_MBR_SequenceOfCartesianPosition3d_1[1]; +extern asn_per_constraints_t asn_PER_type_SequenceOfCartesianPosition3d_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +#endif /* _SequenceOfCartesianPosition3d_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfIdentifier1B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfIdentifier1B.h new file mode 100644 index 000000000..f913390a4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfIdentifier1B.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include +#include +#ifndef _SequenceOfIdentifier1B_H_ +#define _SequenceOfIdentifier1B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SequenceOfIdentifier1B */ +typedef struct SequenceOfIdentifier1B { + A_SEQUENCE_OF(Identifier1B_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SequenceOfIdentifier1B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SequenceOfIdentifier1B; +extern asn_SET_OF_specifics_t asn_SPC_SequenceOfIdentifier1B_specs_1; +extern asn_TYPE_member_t asn_MBR_SequenceOfIdentifier1B_1[1]; +extern asn_per_constraints_t asn_PER_type_SequenceOfIdentifier1B_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SequenceOfIdentifier1B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfSafeDistanceIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfSafeDistanceIndication.h new file mode 100644 index 000000000..59c5e656b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfSafeDistanceIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _SequenceOfSafeDistanceIndication_H_ +#define _SequenceOfSafeDistanceIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SafeDistanceIndication; + +/* SequenceOfSafeDistanceIndication */ +typedef struct SequenceOfSafeDistanceIndication { + A_SEQUENCE_OF(struct SafeDistanceIndication) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SequenceOfSafeDistanceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SequenceOfSafeDistanceIndication; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/SafeDistanceIndication.h" + +#endif /* _SequenceOfSafeDistanceIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfTrajectoryInterceptionIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfTrajectoryInterceptionIndication.h new file mode 100644 index 000000000..d1ec95f0f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SequenceOfTrajectoryInterceptionIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _SequenceOfTrajectoryInterceptionIndication_H_ +#define _SequenceOfTrajectoryInterceptionIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrajectoryInterceptionIndication; + +/* SequenceOfTrajectoryInterceptionIndication */ +typedef struct SequenceOfTrajectoryInterceptionIndication { + A_SEQUENCE_OF(struct TrajectoryInterceptionIndication) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SequenceOfTrajectoryInterceptionIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SequenceOfTrajectoryInterceptionIndication; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/TrajectoryInterceptionIndication.h" + +#endif /* _SequenceOfTrajectoryInterceptionIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Shape.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Shape.h new file mode 100644 index 000000000..d32454441 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Shape.h @@ -0,0 +1,71 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/RectangularShape.h" +#include "etsi_its_cpm_coding/CircularShape.h" +#include "etsi_its_cpm_coding/PolygonalShape.h" +#include "etsi_its_cpm_coding/EllipticalShape.h" +#include "etsi_its_cpm_coding/RadialShape.h" +#include "etsi_its_cpm_coding/RadialShapes.h" +#include +#ifndef _Shape_H_ +#define _Shape_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Shape_PR { + Shape_PR_NOTHING, /* No components present */ + Shape_PR_rectangular, + Shape_PR_circular, + Shape_PR_polygonal, + Shape_PR_elliptical, + Shape_PR_radial, + Shape_PR_radialShapes + /* Extensions may appear below */ + +} Shape_PR; + +/* Shape */ +typedef struct Shape { + Shape_PR present; + union Shape_u { + RectangularShape_t rectangular; + CircularShape_t circular; + PolygonalShape_t polygonal; + EllipticalShape_t elliptical; + RadialShape_t radial; + RadialShapes_t radialShapes; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Shape_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Shape; +extern asn_CHOICE_specifics_t asn_SPC_Shape_specs_1; +extern asn_TYPE_member_t asn_MBR_Shape_1[6]; +extern asn_per_constraints_t asn_PER_type_Shape_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Shape_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SignalViolationSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SignalViolationSubCauseCode.h new file mode 100644 index 000000000..e9c061b7c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SignalViolationSubCauseCode.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SignalViolationSubCauseCode_H_ +#define _SignalViolationSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SignalViolationSubCauseCode { + SignalViolationSubCauseCode_unavailable = 0, + SignalViolationSubCauseCode_stopSignViolation = 1, + SignalViolationSubCauseCode_trafficLightViolation = 2, + SignalViolationSubCauseCode_turningRegulationViolation = 3 +} e_SignalViolationSubCauseCode; + +/* SignalViolationSubCauseCode */ +typedef long SignalViolationSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SignalViolationSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SignalViolationSubCauseCode; +asn_struct_free_f SignalViolationSubCauseCode_free; +asn_struct_print_f SignalViolationSubCauseCode_print; +asn_constr_check_f SignalViolationSubCauseCode_constraint; +ber_type_decoder_f SignalViolationSubCauseCode_decode_ber; +der_type_encoder_f SignalViolationSubCauseCode_encode_der; +xer_type_decoder_f SignalViolationSubCauseCode_decode_xer; +xer_type_encoder_f SignalViolationSubCauseCode_encode_xer; +jer_type_encoder_f SignalViolationSubCauseCode_encode_jer; +oer_type_decoder_f SignalViolationSubCauseCode_decode_oer; +oer_type_encoder_f SignalViolationSubCauseCode_encode_oer; +per_type_decoder_f SignalViolationSubCauseCode_decode_uper; +per_type_encoder_f SignalViolationSubCauseCode_encode_uper; +per_type_decoder_f SignalViolationSubCauseCode_decode_aper; +per_type_encoder_f SignalViolationSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SignalViolationSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SlowVehicleSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SlowVehicleSubCauseCode.h new file mode 100644 index 000000000..e45c4ff41 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SlowVehicleSubCauseCode.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SlowVehicleSubCauseCode_H_ +#define _SlowVehicleSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SlowVehicleSubCauseCode { + SlowVehicleSubCauseCode_unavailable = 0, + SlowVehicleSubCauseCode_maintenanceVehicle = 1, + SlowVehicleSubCauseCode_vehiclesSlowingToLookAtAccident = 2, + SlowVehicleSubCauseCode_abnormalLoad = 3, + SlowVehicleSubCauseCode_abnormalWideLoad = 4, + SlowVehicleSubCauseCode_convoy = 5, + SlowVehicleSubCauseCode_snowplough = 6, + SlowVehicleSubCauseCode_deicing = 7, + SlowVehicleSubCauseCode_saltingVehicles = 8 +} e_SlowVehicleSubCauseCode; + +/* SlowVehicleSubCauseCode */ +typedef long SlowVehicleSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SlowVehicleSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SlowVehicleSubCauseCode; +asn_struct_free_f SlowVehicleSubCauseCode_free; +asn_struct_print_f SlowVehicleSubCauseCode_print; +asn_constr_check_f SlowVehicleSubCauseCode_constraint; +ber_type_decoder_f SlowVehicleSubCauseCode_decode_ber; +der_type_encoder_f SlowVehicleSubCauseCode_encode_der; +xer_type_decoder_f SlowVehicleSubCauseCode_decode_xer; +xer_type_encoder_f SlowVehicleSubCauseCode_encode_xer; +jer_type_encoder_f SlowVehicleSubCauseCode_encode_jer; +oer_type_decoder_f SlowVehicleSubCauseCode_decode_oer; +oer_type_encoder_f SlowVehicleSubCauseCode_encode_oer; +per_type_decoder_f SlowVehicleSubCauseCode_decode_uper; +per_type_encoder_f SlowVehicleSubCauseCode_encode_uper; +per_type_decoder_f SlowVehicleSubCauseCode_decode_aper; +per_type_encoder_f SlowVehicleSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SlowVehicleSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpecialTransportType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpecialTransportType.h new file mode 100644 index 000000000..ba2eabf72 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpecialTransportType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SpecialTransportType_H_ +#define _SpecialTransportType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpecialTransportType { + SpecialTransportType_heavyLoad = 0, + SpecialTransportType_excessWidth = 1, + SpecialTransportType_excessLength = 2, + SpecialTransportType_excessHeight = 3 +} e_SpecialTransportType; + +/* SpecialTransportType */ +typedef BIT_STRING_t SpecialTransportType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpecialTransportType; +asn_struct_free_f SpecialTransportType_free; +asn_struct_print_f SpecialTransportType_print; +asn_constr_check_f SpecialTransportType_constraint; +ber_type_decoder_f SpecialTransportType_decode_ber; +der_type_encoder_f SpecialTransportType_encode_der; +xer_type_decoder_f SpecialTransportType_decode_xer; +xer_type_encoder_f SpecialTransportType_encode_xer; +jer_type_encoder_f SpecialTransportType_encode_jer; +oer_type_decoder_f SpecialTransportType_decode_oer; +oer_type_encoder_f SpecialTransportType_encode_oer; +per_type_decoder_f SpecialTransportType_decode_uper; +per_type_encoder_f SpecialTransportType_encode_uper; +per_type_decoder_f SpecialTransportType_decode_aper; +per_type_encoder_f SpecialTransportType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpecialTransportType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Speed.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Speed.h new file mode 100644 index 000000000..d5753ca78 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Speed.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SpeedValue.h" +#include "etsi_its_cpm_coding/SpeedConfidence.h" +#include +#ifndef _Speed_H_ +#define _Speed_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Speed */ +typedef struct Speed { + SpeedValue_t speedValue; + SpeedConfidence_t speedConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Speed_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Speed; +extern asn_SEQUENCE_specifics_t asn_SPC_Speed_specs_1; +extern asn_TYPE_member_t asn_MBR_Speed_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Speed_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedConfidence.h new file mode 100644 index 000000000..34deac85f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SpeedConfidence_H_ +#define _SpeedConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpeedConfidence { + SpeedConfidence_outOfRange = 126, + SpeedConfidence_unavailable = 127 +} e_SpeedConfidence; + +/* SpeedConfidence */ +typedef long SpeedConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedConfidence; +asn_struct_free_f SpeedConfidence_free; +asn_struct_print_f SpeedConfidence_print; +asn_constr_check_f SpeedConfidence_constraint; +ber_type_decoder_f SpeedConfidence_decode_ber; +der_type_encoder_f SpeedConfidence_encode_der; +xer_type_decoder_f SpeedConfidence_decode_xer; +xer_type_encoder_f SpeedConfidence_encode_xer; +jer_type_encoder_f SpeedConfidence_encode_jer; +oer_type_decoder_f SpeedConfidence_decode_oer; +oer_type_encoder_f SpeedConfidence_encode_oer; +per_type_decoder_f SpeedConfidence_decode_uper; +per_type_encoder_f SpeedConfidence_encode_uper; +per_type_decoder_f SpeedConfidence_decode_aper; +per_type_encoder_f SpeedConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedLimit.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedLimit.h new file mode 100644 index 000000000..9aedc9df3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedLimit.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SpeedLimit_H_ +#define _SpeedLimit_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpeedLimit */ +typedef long SpeedLimit_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpeedLimit; +asn_struct_free_f SpeedLimit_free; +asn_struct_print_f SpeedLimit_print; +asn_constr_check_f SpeedLimit_constraint; +ber_type_decoder_f SpeedLimit_decode_ber; +der_type_encoder_f SpeedLimit_encode_der; +xer_type_decoder_f SpeedLimit_decode_xer; +xer_type_encoder_f SpeedLimit_encode_xer; +jer_type_encoder_f SpeedLimit_encode_jer; +oer_type_decoder_f SpeedLimit_decode_oer; +oer_type_encoder_f SpeedLimit_encode_oer; +per_type_decoder_f SpeedLimit_decode_uper; +per_type_encoder_f SpeedLimit_encode_uper; +per_type_decoder_f SpeedLimit_decode_aper; +per_type_encoder_f SpeedLimit_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedLimit_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedValue.h new file mode 100644 index 000000000..b95d701b0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SpeedValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SpeedValue_H_ +#define _SpeedValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpeedValue { + SpeedValue_standstill = 0, + SpeedValue_outOfRange = 16382, + SpeedValue_unavailable = 16383 +} e_SpeedValue; + +/* SpeedValue */ +typedef long SpeedValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpeedValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpeedValue; +asn_struct_free_f SpeedValue_free; +asn_struct_print_f SpeedValue_print; +asn_constr_check_f SpeedValue_constraint; +ber_type_decoder_f SpeedValue_decode_ber; +der_type_encoder_f SpeedValue_encode_der; +xer_type_decoder_f SpeedValue_decode_xer; +xer_type_encoder_f SpeedValue_encode_xer; +jer_type_encoder_f SpeedValue_encode_jer; +oer_type_decoder_f SpeedValue_decode_oer; +oer_type_encoder_f SpeedValue_encode_oer; +per_type_decoder_f SpeedValue_decode_uper; +per_type_encoder_f SpeedValue_encode_uper; +per_type_decoder_f SpeedValue_decode_aper; +per_type_encoder_f SpeedValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpeedValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityChangeIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityChangeIndication.h new file mode 100644 index 000000000..ea62a2f1f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityChangeIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StabilityLossProbability.h" +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" +#include +#ifndef _StabilityChangeIndication_H_ +#define _StabilityChangeIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StabilityChangeIndication */ +typedef struct StabilityChangeIndication { + StabilityLossProbability_t lossProbability; + DeltaTimeTenthOfSecond_t actionDeltaTime; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} StabilityChangeIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_StabilityChangeIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _StabilityChangeIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityLossProbability.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityLossProbability.h new file mode 100644 index 000000000..aaad2319c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StabilityLossProbability.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StabilityLossProbability_H_ +#define _StabilityLossProbability_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StabilityLossProbability { + StabilityLossProbability_stable = 0, + StabilityLossProbability_totalLossOfStability = 50, + StabilityLossProbability_unavailable = 63 +} e_StabilityLossProbability; + +/* StabilityLossProbability */ +typedef long StabilityLossProbability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StabilityLossProbability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StabilityLossProbability; +asn_struct_free_f StabilityLossProbability_free; +asn_struct_print_f StabilityLossProbability_print; +asn_constr_check_f StabilityLossProbability_constraint; +ber_type_decoder_f StabilityLossProbability_decode_ber; +der_type_encoder_f StabilityLossProbability_encode_der; +xer_type_decoder_f StabilityLossProbability_decode_xer; +xer_type_encoder_f StabilityLossProbability_encode_xer; +jer_type_encoder_f StabilityLossProbability_encode_jer; +oer_type_decoder_f StabilityLossProbability_decode_oer; +oer_type_encoder_f StabilityLossProbability_encode_oer; +per_type_decoder_f StabilityLossProbability_decode_uper; +per_type_encoder_f StabilityLossProbability_encode_uper; +per_type_decoder_f StabilityLossProbability_decode_aper; +per_type_encoder_f StabilityLossProbability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StabilityLossProbability_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength12b.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength12b.h new file mode 100644 index 000000000..adc477660 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength12b.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StandardLength12b_H_ +#define _StandardLength12b_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StandardLength12b */ +typedef long StandardLength12b_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StandardLength12b_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StandardLength12b; +asn_struct_free_f StandardLength12b_free; +asn_struct_print_f StandardLength12b_print; +asn_constr_check_f StandardLength12b_constraint; +ber_type_decoder_f StandardLength12b_decode_ber; +der_type_encoder_f StandardLength12b_encode_der; +xer_type_decoder_f StandardLength12b_decode_xer; +xer_type_encoder_f StandardLength12b_encode_xer; +jer_type_encoder_f StandardLength12b_encode_jer; +oer_type_decoder_f StandardLength12b_decode_oer; +oer_type_encoder_f StandardLength12b_encode_oer; +per_type_decoder_f StandardLength12b_decode_uper; +per_type_encoder_f StandardLength12b_encode_uper; +per_type_decoder_f StandardLength12b_decode_aper; +per_type_encoder_f StandardLength12b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StandardLength12b_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength1B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength1B.h new file mode 100644 index 000000000..1e603defc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength1B.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StandardLength1B_H_ +#define _StandardLength1B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StandardLength1B */ +typedef long StandardLength1B_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StandardLength1B_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StandardLength1B; +asn_struct_free_f StandardLength1B_free; +asn_struct_print_f StandardLength1B_print; +asn_constr_check_f StandardLength1B_constraint; +ber_type_decoder_f StandardLength1B_decode_ber; +der_type_encoder_f StandardLength1B_encode_der; +xer_type_decoder_f StandardLength1B_decode_xer; +xer_type_encoder_f StandardLength1B_encode_xer; +jer_type_encoder_f StandardLength1B_encode_jer; +oer_type_decoder_f StandardLength1B_decode_oer; +oer_type_encoder_f StandardLength1B_encode_oer; +per_type_decoder_f StandardLength1B_decode_uper; +per_type_encoder_f StandardLength1B_encode_uper; +per_type_decoder_f StandardLength1B_decode_aper; +per_type_encoder_f StandardLength1B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StandardLength1B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength2B.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength2B.h new file mode 100644 index 000000000..e4119b2cb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength2B.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StandardLength2B_H_ +#define _StandardLength2B_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StandardLength2B */ +typedef long StandardLength2B_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_StandardLength2B; +asn_struct_free_f StandardLength2B_free; +asn_struct_print_f StandardLength2B_print; +asn_constr_check_f StandardLength2B_constraint; +ber_type_decoder_f StandardLength2B_decode_ber; +der_type_encoder_f StandardLength2B_encode_der; +xer_type_decoder_f StandardLength2B_decode_xer; +xer_type_encoder_f StandardLength2B_encode_xer; +jer_type_encoder_f StandardLength2B_encode_jer; +oer_type_decoder_f StandardLength2B_decode_oer; +oer_type_encoder_f StandardLength2B_encode_oer; +per_type_decoder_f StandardLength2B_decode_uper; +per_type_encoder_f StandardLength2B_encode_uper; +per_type_decoder_f StandardLength2B_decode_aper; +per_type_encoder_f StandardLength2B_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StandardLength2B_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength3b.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength3b.h new file mode 100644 index 000000000..03449b664 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength3b.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StandardLength3b_H_ +#define _StandardLength3b_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StandardLength3b { + StandardLength3b_lessThan50m = 0, + StandardLength3b_lessThan100m = 1, + StandardLength3b_lessThan200m = 2, + StandardLength3b_lessThan500m = 3, + StandardLength3b_lessThan1000m = 4, + StandardLength3b_lessThan5km = 5, + StandardLength3b_lessThan10km = 6, + StandardLength3b_over10km = 7 +} e_StandardLength3b; + +/* StandardLength3b */ +typedef long StandardLength3b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_StandardLength3b; +asn_struct_free_f StandardLength3b_free; +asn_struct_print_f StandardLength3b_print; +asn_constr_check_f StandardLength3b_constraint; +ber_type_decoder_f StandardLength3b_decode_ber; +der_type_encoder_f StandardLength3b_encode_der; +xer_type_decoder_f StandardLength3b_decode_xer; +xer_type_encoder_f StandardLength3b_encode_xer; +jer_type_encoder_f StandardLength3b_encode_jer; +oer_type_decoder_f StandardLength3b_decode_oer; +oer_type_encoder_f StandardLength3b_encode_oer; +per_type_decoder_f StandardLength3b_decode_uper; +per_type_encoder_f StandardLength3b_encode_uper; +per_type_decoder_f StandardLength3b_decode_aper; +per_type_encoder_f StandardLength3b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StandardLength3b_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength9b.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength9b.h new file mode 100644 index 000000000..097bab033 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StandardLength9b.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StandardLength9b_H_ +#define _StandardLength9b_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StandardLength9b */ +typedef long StandardLength9b_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_StandardLength9b; +asn_struct_free_f StandardLength9b_free; +asn_struct_print_f StandardLength9b_print; +asn_constr_check_f StandardLength9b_constraint; +ber_type_decoder_f StandardLength9b_decode_ber; +der_type_encoder_f StandardLength9b_encode_der; +xer_type_decoder_f StandardLength9b_decode_xer; +xer_type_encoder_f StandardLength9b_encode_xer; +jer_type_encoder_f StandardLength9b_encode_jer; +oer_type_decoder_f StandardLength9b_decode_oer; +oer_type_encoder_f StandardLength9b_encode_oer; +per_type_decoder_f StandardLength9b_decode_uper; +per_type_encoder_f StandardLength9b_encode_uper; +per_type_decoder_f StandardLength9b_decode_aper; +per_type_encoder_f StandardLength9b_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StandardLength9b_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationID.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationID.h new file mode 100644 index 000000000..9dda2c00b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationID.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StationID_H_ +#define _StationID_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StationID */ +typedef unsigned long StationID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StationID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StationID; +extern const asn_INTEGER_specifics_t asn_SPC_StationID_specs_1; +asn_struct_free_f StationID_free; +asn_struct_print_f StationID_print; +asn_constr_check_f StationID_constraint; +ber_type_decoder_f StationID_decode_ber; +der_type_encoder_f StationID_encode_der; +xer_type_decoder_f StationID_decode_xer; +xer_type_encoder_f StationID_encode_xer; +jer_type_encoder_f StationID_encode_jer; +oer_type_decoder_f StationID_decode_oer; +oer_type_encoder_f StationID_encode_oer; +per_type_decoder_f StationID_decode_uper; +per_type_encoder_f StationID_encode_uper; +per_type_decoder_f StationID_decode_aper; +per_type_encoder_f StationID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationID_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationId.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationId.h new file mode 100644 index 000000000..a8faf97bb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationId.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StationId_H_ +#define _StationId_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* StationId */ +typedef unsigned long StationId_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StationId_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StationId; +extern const asn_INTEGER_specifics_t asn_SPC_StationId_specs_1; +asn_struct_free_f StationId_free; +asn_struct_print_f StationId_print; +asn_constr_check_f StationId_constraint; +ber_type_decoder_f StationId_decode_ber; +der_type_encoder_f StationId_encode_der; +xer_type_decoder_f StationId_decode_xer; +xer_type_encoder_f StationId_encode_xer; +jer_type_encoder_f StationId_encode_jer; +oer_type_decoder_f StationId_decode_oer; +oer_type_encoder_f StationId_encode_oer; +per_type_decoder_f StationId_decode_uper; +per_type_encoder_f StationId_encode_uper; +per_type_decoder_f StationId_decode_aper; +per_type_encoder_f StationId_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationId_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationType.h new file mode 100644 index 000000000..463ce8760 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationType.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StationType_H_ +#define _StationType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StationType { + StationType_unknown = 0, + StationType_pedestrian = 1, + StationType_cyclist = 2, + StationType_moped = 3, + StationType_motorcycle = 4, + StationType_passengerCar = 5, + StationType_bus = 6, + StationType_lightTruck = 7, + StationType_heavyTruck = 8, + StationType_trailer = 9, + StationType_specialVehicle = 10, + StationType_tram = 11, + StationType_lightVruVehicle = 12, + StationType_animal = 13, + StationType_roadSideUnit = 15 +} e_StationType; + +/* StationType */ +typedef long StationType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StationType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StationType; +asn_struct_free_f StationType_free; +asn_struct_print_f StationType_print; +asn_constr_check_f StationType_constraint; +ber_type_decoder_f StationType_decode_ber; +der_type_encoder_f StationType_encode_der; +xer_type_decoder_f StationType_decode_xer; +xer_type_encoder_f StationType_encode_xer; +jer_type_encoder_f StationType_encode_jer; +oer_type_decoder_f StationType_decode_oer; +oer_type_encoder_f StationType_encode_oer; +per_type_decoder_f StationType_decode_uper; +per_type_encoder_f StationType_encode_uper; +per_type_decoder_f StationType_decode_aper; +per_type_encoder_f StationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationarySince.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationarySince.h new file mode 100644 index 000000000..8b8ff2d96 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationarySince.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StationarySince_H_ +#define _StationarySince_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StationarySince { + StationarySince_lessThan1Minute = 0, + StationarySince_lessThan2Minutes = 1, + StationarySince_lessThan15Minutes = 2, + StationarySince_equalOrGreater15Minutes = 3 +} e_StationarySince; + +/* StationarySince */ +typedef long StationarySince_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_StationarySince; +asn_struct_free_f StationarySince_free; +asn_struct_print_f StationarySince_print; +asn_constr_check_f StationarySince_constraint; +ber_type_decoder_f StationarySince_decode_ber; +der_type_encoder_f StationarySince_encode_der; +xer_type_decoder_f StationarySince_decode_xer; +xer_type_encoder_f StationarySince_encode_xer; +jer_type_encoder_f StationarySince_encode_jer; +oer_type_decoder_f StationarySince_decode_oer; +oer_type_encoder_f StationarySince_encode_oer; +per_type_decoder_f StationarySince_decode_uper; +per_type_encoder_f StationarySince_encode_uper; +per_type_decoder_f StationarySince_decode_aper; +per_type_encoder_f StationarySince_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationarySince_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h new file mode 100644 index 000000000..ef5d825df --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _StationaryVehicleSubCauseCode_H_ +#define _StationaryVehicleSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum StationaryVehicleSubCauseCode { + StationaryVehicleSubCauseCode_unavailable = 0, + StationaryVehicleSubCauseCode_humanProblem = 1, + StationaryVehicleSubCauseCode_vehicleBreakdown = 2, + StationaryVehicleSubCauseCode_postCrash = 3, + StationaryVehicleSubCauseCode_publicTransportStop = 4, + StationaryVehicleSubCauseCode_carryingDangerousGoods = 5, + StationaryVehicleSubCauseCode_vehicleOnFire = 6 +} e_StationaryVehicleSubCauseCode; + +/* StationaryVehicleSubCauseCode */ +typedef long StationaryVehicleSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_StationaryVehicleSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_StationaryVehicleSubCauseCode; +asn_struct_free_f StationaryVehicleSubCauseCode_free; +asn_struct_print_f StationaryVehicleSubCauseCode_print; +asn_constr_check_f StationaryVehicleSubCauseCode_constraint; +ber_type_decoder_f StationaryVehicleSubCauseCode_decode_ber; +der_type_encoder_f StationaryVehicleSubCauseCode_encode_der; +xer_type_decoder_f StationaryVehicleSubCauseCode_decode_xer; +xer_type_encoder_f StationaryVehicleSubCauseCode_encode_xer; +jer_type_encoder_f StationaryVehicleSubCauseCode_encode_jer; +oer_type_decoder_f StationaryVehicleSubCauseCode_decode_oer; +oer_type_encoder_f StationaryVehicleSubCauseCode_encode_oer; +per_type_decoder_f StationaryVehicleSubCauseCode_decode_uper; +per_type_encoder_f StationaryVehicleSubCauseCode_encode_uper; +per_type_decoder_f StationaryVehicleSubCauseCode_decode_aper; +per_type_encoder_f StationaryVehicleSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _StationaryVehicleSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngle.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngle.h new file mode 100644 index 000000000..a5bdd88d2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngle.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/SteeringWheelAngleValue.h" +#include "etsi_its_cpm_coding/SteeringWheelAngleConfidence.h" +#include +#ifndef _SteeringWheelAngle_H_ +#define _SteeringWheelAngle_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SteeringWheelAngle */ +typedef struct SteeringWheelAngle { + SteeringWheelAngleValue_t steeringWheelAngleValue; + SteeringWheelAngleConfidence_t steeringWheelAngleConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SteeringWheelAngle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngle; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngle_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleConfidence.h new file mode 100644 index 000000000..a0044da10 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SteeringWheelAngleConfidence_H_ +#define _SteeringWheelAngleConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SteeringWheelAngleConfidence { + SteeringWheelAngleConfidence_outOfRange = 126, + SteeringWheelAngleConfidence_unavailable = 127 +} e_SteeringWheelAngleConfidence; + +/* SteeringWheelAngleConfidence */ +typedef long SteeringWheelAngleConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringWheelAngleConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleConfidence; +asn_struct_free_f SteeringWheelAngleConfidence_free; +asn_struct_print_f SteeringWheelAngleConfidence_print; +asn_constr_check_f SteeringWheelAngleConfidence_constraint; +ber_type_decoder_f SteeringWheelAngleConfidence_decode_ber; +der_type_encoder_f SteeringWheelAngleConfidence_encode_der; +xer_type_decoder_f SteeringWheelAngleConfidence_decode_xer; +xer_type_encoder_f SteeringWheelAngleConfidence_encode_xer; +jer_type_encoder_f SteeringWheelAngleConfidence_encode_jer; +oer_type_decoder_f SteeringWheelAngleConfidence_decode_oer; +oer_type_encoder_f SteeringWheelAngleConfidence_encode_oer; +per_type_decoder_f SteeringWheelAngleConfidence_decode_uper; +per_type_encoder_f SteeringWheelAngleConfidence_encode_uper; +per_type_decoder_f SteeringWheelAngleConfidence_decode_aper; +per_type_encoder_f SteeringWheelAngleConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngleConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleValue.h new file mode 100644 index 000000000..59ca1b7cb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SteeringWheelAngleValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SteeringWheelAngleValue_H_ +#define _SteeringWheelAngleValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SteeringWheelAngleValue { + SteeringWheelAngleValue_negativeOutOfRange = -511, + SteeringWheelAngleValue_positiveOutOfRange = 511, + SteeringWheelAngleValue_unavailable = 512 +} e_SteeringWheelAngleValue; + +/* SteeringWheelAngleValue */ +typedef long SteeringWheelAngleValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SteeringWheelAngleValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleValue; +asn_struct_free_f SteeringWheelAngleValue_free; +asn_struct_print_f SteeringWheelAngleValue_print; +asn_constr_check_f SteeringWheelAngleValue_constraint; +ber_type_decoder_f SteeringWheelAngleValue_decode_ber; +der_type_encoder_f SteeringWheelAngleValue_encode_der; +xer_type_decoder_f SteeringWheelAngleValue_decode_xer; +xer_type_encoder_f SteeringWheelAngleValue_encode_xer; +jer_type_encoder_f SteeringWheelAngleValue_encode_jer; +oer_type_decoder_f SteeringWheelAngleValue_decode_oer; +oer_type_encoder_f SteeringWheelAngleValue_encode_oer; +per_type_decoder_f SteeringWheelAngleValue_decode_uper; +per_type_encoder_f SteeringWheelAngleValue_encode_uper; +per_type_decoder_f SteeringWheelAngleValue_decode_aper; +per_type_encoder_f SteeringWheelAngleValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SteeringWheelAngleValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SubCauseCodeType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SubCauseCodeType.h new file mode 100644 index 000000000..bae2aca5c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/SubCauseCodeType.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _SubCauseCodeType_H_ +#define _SubCauseCodeType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* SubCauseCodeType */ +typedef long SubCauseCodeType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubCauseCodeType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubCauseCodeType; +asn_struct_free_f SubCauseCodeType_free; +asn_struct_print_f SubCauseCodeType_print; +asn_constr_check_f SubCauseCodeType_constraint; +ber_type_decoder_f SubCauseCodeType_decode_ber; +der_type_encoder_f SubCauseCodeType_encode_der; +xer_type_decoder_f SubCauseCodeType_decode_xer; +xer_type_encoder_f SubCauseCodeType_encode_xer; +jer_type_encoder_f SubCauseCodeType_encode_jer; +oer_type_decoder_f SubCauseCodeType_decode_oer; +oer_type_encoder_f SubCauseCodeType_encode_oer; +per_type_decoder_f SubCauseCodeType_decode_uper; +per_type_encoder_f SubCauseCodeType_encode_uper; +per_type_decoder_f SubCauseCodeType_decode_aper; +per_type_encoder_f SubCauseCodeType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubCauseCodeType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Temperature.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Temperature.h new file mode 100644 index 000000000..e00bc9e85 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Temperature.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Temperature_H_ +#define _Temperature_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Temperature { + Temperature_equalOrSmallerThanMinus60Deg = -60, + Temperature_equalOrGreaterThan67Deg = 67 +} e_Temperature; + +/* Temperature */ +typedef long Temperature_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Temperature; +asn_struct_free_f Temperature_free; +asn_struct_print_f Temperature_print; +asn_constr_check_f Temperature_constraint; +ber_type_decoder_f Temperature_decode_ber; +der_type_encoder_f Temperature_encode_der; +xer_type_decoder_f Temperature_decode_xer; +xer_type_encoder_f Temperature_encode_xer; +jer_type_encoder_f Temperature_encode_jer; +oer_type_decoder_f Temperature_decode_oer; +oer_type_encoder_f Temperature_encode_oer; +per_type_decoder_f Temperature_decode_uper; +per_type_encoder_f Temperature_encode_uper; +per_type_decoder_f Temperature_decode_aper; +per_type_encoder_f Temperature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Temperature_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TimestampIts.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TimestampIts.h new file mode 100644 index 000000000..5362cd4b8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TimestampIts.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TimestampIts_H_ +#define _TimestampIts_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimestampIts */ +typedef INTEGER_t TimestampIts_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimestampIts_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimestampIts; +asn_struct_free_f TimestampIts_free; +asn_struct_print_f TimestampIts_print; +asn_constr_check_f TimestampIts_constraint; +ber_type_decoder_f TimestampIts_decode_ber; +der_type_encoder_f TimestampIts_encode_der; +xer_type_decoder_f TimestampIts_decode_xer; +xer_type_encoder_f TimestampIts_encode_xer; +jer_type_encoder_f TimestampIts_encode_jer; +oer_type_decoder_f TimestampIts_decode_oer; +oer_type_encoder_f TimestampIts_encode_oer; +per_type_decoder_f TimestampIts_decode_uper; +per_type_encoder_f TimestampIts_encode_uper; +per_type_decoder_f TimestampIts_decode_aper; +per_type_encoder_f TimestampIts_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimestampIts_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Traces.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Traces.h new file mode 100644 index 000000000..12ad43102 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Traces.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _Traces_H_ +#define _Traces_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Path; + +/* Traces */ +typedef struct Traces { + A_SEQUENCE_OF(struct Path) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Traces_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Traces; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/Path.h" + +#endif /* _Traces_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficConditionSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficConditionSubCauseCode.h new file mode 100644 index 000000000..34a5b0004 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficConditionSubCauseCode.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrafficConditionSubCauseCode_H_ +#define _TrafficConditionSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficConditionSubCauseCode { + TrafficConditionSubCauseCode_unavailable = 0, + TrafficConditionSubCauseCode_increasedVolumeOfTraffic = 1, + TrafficConditionSubCauseCode_trafficJamSlowlyIncreasing = 2, + TrafficConditionSubCauseCode_trafficJamIncreasing = 3, + TrafficConditionSubCauseCode_trafficJamStronglyIncreasing = 4, + TrafficConditionSubCauseCode_trafficStationary = 5, + TrafficConditionSubCauseCode_trafficJamSlightlyDecreasing = 6, + TrafficConditionSubCauseCode_trafficJamDecreasing = 7, + TrafficConditionSubCauseCode_trafficJamStronglyDecreasing = 8 +} e_TrafficConditionSubCauseCode; + +/* TrafficConditionSubCauseCode */ +typedef long TrafficConditionSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrafficConditionSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrafficConditionSubCauseCode; +asn_struct_free_f TrafficConditionSubCauseCode_free; +asn_struct_print_f TrafficConditionSubCauseCode_print; +asn_constr_check_f TrafficConditionSubCauseCode_constraint; +ber_type_decoder_f TrafficConditionSubCauseCode_decode_ber; +der_type_encoder_f TrafficConditionSubCauseCode_encode_der; +xer_type_decoder_f TrafficConditionSubCauseCode_decode_xer; +xer_type_encoder_f TrafficConditionSubCauseCode_encode_xer; +jer_type_encoder_f TrafficConditionSubCauseCode_encode_jer; +oer_type_decoder_f TrafficConditionSubCauseCode_decode_oer; +oer_type_encoder_f TrafficConditionSubCauseCode_encode_oer; +per_type_decoder_f TrafficConditionSubCauseCode_decode_uper; +per_type_encoder_f TrafficConditionSubCauseCode_encode_uper; +per_type_decoder_f TrafficConditionSubCauseCode_decode_aper; +per_type_encoder_f TrafficConditionSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficConditionSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficDirection.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficDirection.h new file mode 100644 index 000000000..6b5cc748f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficDirection.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrafficDirection_H_ +#define _TrafficDirection_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficDirection { + TrafficDirection_allTrafficDirections = 0, + TrafficDirection_upstreamTraffic = 1, + TrafficDirection_downstreamTraffic = 2, + TrafficDirection_oppositeTraffic = 3 +} e_TrafficDirection; + +/* TrafficDirection */ +typedef long TrafficDirection_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficDirection; +asn_struct_free_f TrafficDirection_free; +asn_struct_print_f TrafficDirection_print; +asn_constr_check_f TrafficDirection_constraint; +ber_type_decoder_f TrafficDirection_decode_ber; +der_type_encoder_f TrafficDirection_encode_der; +xer_type_decoder_f TrafficDirection_decode_xer; +xer_type_encoder_f TrafficDirection_encode_xer; +jer_type_encoder_f TrafficDirection_encode_jer; +oer_type_decoder_f TrafficDirection_decode_oer; +oer_type_encoder_f TrafficDirection_encode_oer; +per_type_decoder_f TrafficDirection_decode_uper; +per_type_encoder_f TrafficDirection_encode_uper; +per_type_decoder_f TrafficDirection_decode_aper; +per_type_encoder_f TrafficDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficDirection_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficIslandPosition.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficIslandPosition.h new file mode 100644 index 000000000..af2aff2b2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficIslandPosition.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/LanePositionAndType.h" +#include +#ifndef _TrafficIslandPosition_H_ +#define _TrafficIslandPosition_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrafficIslandPosition */ +typedef struct TrafficIslandPosition { + LanePositionAndType_t oneSide; + LanePositionAndType_t otherSide; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrafficIslandPosition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficIslandPosition; +extern asn_SEQUENCE_specifics_t asn_SPC_TrafficIslandPosition_specs_1; +extern asn_TYPE_member_t asn_MBR_TrafficIslandPosition_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficIslandPosition_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficParticipantType.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficParticipantType.h new file mode 100644 index 000000000..0810213bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficParticipantType.h @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrafficParticipantType_H_ +#define _TrafficParticipantType_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficParticipantType { + TrafficParticipantType_unknown = 0, + TrafficParticipantType_pedestrian = 1, + TrafficParticipantType_cyclist = 2, + TrafficParticipantType_moped = 3, + TrafficParticipantType_motorcycle = 4, + TrafficParticipantType_passengerCar = 5, + TrafficParticipantType_bus = 6, + TrafficParticipantType_lightTruck = 7, + TrafficParticipantType_heavyTruck = 8, + TrafficParticipantType_trailer = 9, + TrafficParticipantType_specialVehicle = 10, + TrafficParticipantType_tram = 11, + TrafficParticipantType_lightVruVehicle = 12, + TrafficParticipantType_animal = 13, + TrafficParticipantType_agricultural = 14, + TrafficParticipantType_roadSideUnit = 15 +} e_TrafficParticipantType; + +/* TrafficParticipantType */ +typedef long TrafficParticipantType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrafficParticipantType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrafficParticipantType; +asn_struct_free_f TrafficParticipantType_free; +asn_struct_print_f TrafficParticipantType_print; +asn_constr_check_f TrafficParticipantType_constraint; +ber_type_decoder_f TrafficParticipantType_decode_ber; +der_type_encoder_f TrafficParticipantType_encode_der; +xer_type_decoder_f TrafficParticipantType_decode_xer; +xer_type_encoder_f TrafficParticipantType_encode_xer; +jer_type_encoder_f TrafficParticipantType_encode_jer; +oer_type_decoder_f TrafficParticipantType_decode_oer; +oer_type_encoder_f TrafficParticipantType_encode_oer; +per_type_decoder_f TrafficParticipantType_decode_uper; +per_type_encoder_f TrafficParticipantType_encode_uper; +per_type_decoder_f TrafficParticipantType_decode_aper; +per_type_encoder_f TrafficParticipantType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficParticipantType_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficRule.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficRule.h new file mode 100644 index 000000000..3dbcfc05f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrafficRule.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrafficRule_H_ +#define _TrafficRule_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrafficRule { + TrafficRule_noPassing = 0, + TrafficRule_noPassingForTrucks = 1, + TrafficRule_passToRight = 2, + TrafficRule_passToLeft = 3 + /* + * Enumeration is extensible + */ +} e_TrafficRule; + +/* TrafficRule */ +typedef long TrafficRule_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrafficRule; +asn_struct_free_f TrafficRule_free; +asn_struct_print_f TrafficRule_print; +asn_constr_check_f TrafficRule_constraint; +ber_type_decoder_f TrafficRule_decode_ber; +der_type_encoder_f TrafficRule_encode_der; +xer_type_decoder_f TrafficRule_decode_xer; +xer_type_encoder_f TrafficRule_encode_xer; +jer_type_encoder_f TrafficRule_encode_jer; +oer_type_decoder_f TrafficRule_decode_oer; +oer_type_encoder_f TrafficRule_encode_oer; +per_type_decoder_f TrafficRule_decode_uper; +per_type_encoder_f TrafficRule_encode_uper; +per_type_decoder_f TrafficRule_decode_aper; +per_type_encoder_f TrafficRule_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrafficRule_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerData.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerData.h new file mode 100644 index 000000000..d204a548a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerData.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/StandardLength1B.h" +#include "etsi_its_cpm_coding/VehicleWidth.h" +#include "etsi_its_cpm_coding/CartesianAngle.h" +#include +#ifndef _TrailerData_H_ +#define _TrailerData_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrailerData */ +typedef struct TrailerData { + Identifier1B_t refPointId; + StandardLength1B_t hitchPointOffset; + StandardLength1B_t *frontOverhang; /* OPTIONAL */ + StandardLength1B_t *rearOverhang; /* OPTIONAL */ + VehicleWidth_t *trailerWidth; /* OPTIONAL */ + CartesianAngle_t hitchAngle; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerData_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerData; +extern asn_SEQUENCE_specifics_t asn_SPC_TrailerData_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerData_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerData_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerDataSet.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerDataSet.h new file mode 100644 index 000000000..ca46ddff4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerDataSet.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _TrailerDataSet_H_ +#define _TrailerDataSet_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TrailerData; + +/* TrailerDataSet */ +typedef struct TrailerDataSet { + A_SEQUENCE_OF(struct TrailerData) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrailerDataSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrailerDataSet; +extern asn_SET_OF_specifics_t asn_SPC_TrailerDataSet_specs_1; +extern asn_TYPE_member_t asn_MBR_TrailerDataSet_1[1]; +extern asn_per_constraints_t asn_PER_type_TrailerDataSet_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/TrailerData.h" + +#endif /* _TrailerDataSet_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerPresenceInformation.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerPresenceInformation.h new file mode 100644 index 000000000..8ea05425e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrailerPresenceInformation.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrailerPresenceInformation_H_ +#define _TrailerPresenceInformation_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrailerPresenceInformation { + TrailerPresenceInformation_noTrailerPresent = 0, + TrailerPresenceInformation_trailerPresentWithKnownLength = 1, + TrailerPresenceInformation_trailerPresentWithUnknownLength = 2, + TrailerPresenceInformation_trailerPresenceIsUnknown = 3, + TrailerPresenceInformation_unavailable = 4 +} e_TrailerPresenceInformation; + +/* TrailerPresenceInformation */ +typedef long TrailerPresenceInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrailerPresenceInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrailerPresenceInformation; +extern const asn_INTEGER_specifics_t asn_SPC_TrailerPresenceInformation_specs_1; +asn_struct_free_f TrailerPresenceInformation_free; +asn_struct_print_f TrailerPresenceInformation_print; +asn_constr_check_f TrailerPresenceInformation_constraint; +ber_type_decoder_f TrailerPresenceInformation_decode_ber; +der_type_encoder_f TrailerPresenceInformation_encode_der; +xer_type_decoder_f TrailerPresenceInformation_decode_xer; +xer_type_encoder_f TrailerPresenceInformation_encode_xer; +jer_type_encoder_f TrailerPresenceInformation_encode_jer; +oer_type_decoder_f TrailerPresenceInformation_decode_oer; +oer_type_encoder_f TrailerPresenceInformation_encode_oer; +per_type_decoder_f TrailerPresenceInformation_decode_uper; +per_type_encoder_f TrailerPresenceInformation_encode_uper; +per_type_decoder_f TrailerPresenceInformation_decode_aper; +per_type_encoder_f TrailerPresenceInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrailerPresenceInformation_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h new file mode 100644 index 000000000..8f6d3a6f0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrajectoryInterceptionConfidence_H_ +#define _TrajectoryInterceptionConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrajectoryInterceptionConfidence { + TrajectoryInterceptionConfidence_lessthan50percent = 0, + TrajectoryInterceptionConfidence_between50and70Percent = 1, + TrajectoryInterceptionConfidence_between70and90Percent = 2, + TrajectoryInterceptionConfidence_above90Percent = 3 +} e_TrajectoryInterceptionConfidence; + +/* TrajectoryInterceptionConfidence */ +typedef long TrajectoryInterceptionConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrajectoryInterceptionConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionConfidence; +asn_struct_free_f TrajectoryInterceptionConfidence_free; +asn_struct_print_f TrajectoryInterceptionConfidence_print; +asn_constr_check_f TrajectoryInterceptionConfidence_constraint; +ber_type_decoder_f TrajectoryInterceptionConfidence_decode_ber; +der_type_encoder_f TrajectoryInterceptionConfidence_encode_der; +xer_type_decoder_f TrajectoryInterceptionConfidence_decode_xer; +xer_type_encoder_f TrajectoryInterceptionConfidence_encode_xer; +jer_type_encoder_f TrajectoryInterceptionConfidence_encode_jer; +oer_type_decoder_f TrajectoryInterceptionConfidence_decode_oer; +oer_type_encoder_f TrajectoryInterceptionConfidence_encode_oer; +per_type_decoder_f TrajectoryInterceptionConfidence_decode_uper; +per_type_encoder_f TrajectoryInterceptionConfidence_encode_uper; +per_type_decoder_f TrajectoryInterceptionConfidence_decode_aper; +per_type_encoder_f TrajectoryInterceptionConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrajectoryInterceptionConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionIndication.h new file mode 100644 index 000000000..975158166 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionIndication.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/StationId.h" +#include "etsi_its_cpm_coding/TrajectoryInterceptionProbability.h" +#include "etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h" +#include +#ifndef _TrajectoryInterceptionIndication_H_ +#define _TrajectoryInterceptionIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* TrajectoryInterceptionIndication */ +typedef struct TrajectoryInterceptionIndication { + StationId_t *subjectStation; /* OPTIONAL */ + TrajectoryInterceptionProbability_t trajectoryInterceptionProbability; + TrajectoryInterceptionConfidence_t *trajectoryInterceptionConfidence; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TrajectoryInterceptionIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_TrajectoryInterceptionIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_TrajectoryInterceptionIndication_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrajectoryInterceptionIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionProbability.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionProbability.h new file mode 100644 index 000000000..bf116ba5f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TrajectoryInterceptionProbability.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TrajectoryInterceptionProbability_H_ +#define _TrajectoryInterceptionProbability_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TrajectoryInterceptionProbability { + TrajectoryInterceptionProbability_unavailable = 63 +} e_TrajectoryInterceptionProbability; + +/* TrajectoryInterceptionProbability */ +typedef long TrajectoryInterceptionProbability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TrajectoryInterceptionProbability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionProbability; +asn_struct_free_f TrajectoryInterceptionProbability_free; +asn_struct_print_f TrajectoryInterceptionProbability_print; +asn_constr_check_f TrajectoryInterceptionProbability_constraint; +ber_type_decoder_f TrajectoryInterceptionProbability_decode_ber; +der_type_encoder_f TrajectoryInterceptionProbability_encode_der; +xer_type_decoder_f TrajectoryInterceptionProbability_decode_xer; +xer_type_encoder_f TrajectoryInterceptionProbability_encode_xer; +jer_type_encoder_f TrajectoryInterceptionProbability_encode_jer; +oer_type_decoder_f TrajectoryInterceptionProbability_decode_oer; +oer_type_encoder_f TrajectoryInterceptionProbability_encode_oer; +per_type_decoder_f TrajectoryInterceptionProbability_decode_uper; +per_type_encoder_f TrajectoryInterceptionProbability_encode_uper; +per_type_decoder_f TrajectoryInterceptionProbability_decode_aper; +per_type_encoder_f TrajectoryInterceptionProbability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TrajectoryInterceptionProbability_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TransmissionInterval.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TransmissionInterval.h new file mode 100644 index 000000000..7f7c7abcf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TransmissionInterval.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TransmissionInterval_H_ +#define _TransmissionInterval_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransmissionInterval */ +typedef long TransmissionInterval_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TransmissionInterval; +asn_struct_free_f TransmissionInterval_free; +asn_struct_print_f TransmissionInterval_print; +asn_constr_check_f TransmissionInterval_constraint; +ber_type_decoder_f TransmissionInterval_decode_ber; +der_type_encoder_f TransmissionInterval_encode_der; +xer_type_decoder_f TransmissionInterval_decode_xer; +xer_type_encoder_f TransmissionInterval_encode_xer; +jer_type_encoder_f TransmissionInterval_encode_jer; +oer_type_decoder_f TransmissionInterval_decode_oer; +oer_type_encoder_f TransmissionInterval_encode_oer; +per_type_decoder_f TransmissionInterval_decode_uper; +per_type_encoder_f TransmissionInterval_encode_uper; +per_type_decoder_f TransmissionInterval_decode_aper; +per_type_encoder_f TransmissionInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransmissionInterval_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningDirection.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningDirection.h new file mode 100644 index 000000000..fea83590c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningDirection.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TurningDirection_H_ +#define _TurningDirection_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TurningDirection { + TurningDirection_left = 0, + TurningDirection_right = 1 +} e_TurningDirection; + +/* TurningDirection */ +typedef long TurningDirection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TurningDirection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TurningDirection; +extern const asn_INTEGER_specifics_t asn_SPC_TurningDirection_specs_1; +asn_struct_free_f TurningDirection_free; +asn_struct_print_f TurningDirection_print; +asn_constr_check_f TurningDirection_constraint; +ber_type_decoder_f TurningDirection_decode_ber; +der_type_encoder_f TurningDirection_encode_der; +xer_type_decoder_f TurningDirection_decode_xer; +xer_type_encoder_f TurningDirection_encode_xer; +jer_type_encoder_f TurningDirection_encode_jer; +oer_type_decoder_f TurningDirection_decode_oer; +oer_type_encoder_f TurningDirection_encode_oer; +per_type_decoder_f TurningDirection_decode_uper; +per_type_encoder_f TurningDirection_encode_uper; +per_type_decoder_f TurningDirection_decode_aper; +per_type_encoder_f TurningDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TurningDirection_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningRadius.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningRadius.h new file mode 100644 index 000000000..6b436fd91 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/TurningRadius.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _TurningRadius_H_ +#define _TurningRadius_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TurningRadius { + TurningRadius_outOfRange = 254, + TurningRadius_unavailable = 255 +} e_TurningRadius; + +/* TurningRadius */ +typedef long TurningRadius_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TurningRadius; +asn_struct_free_f TurningRadius_free; +asn_struct_print_f TurningRadius_print; +asn_constr_check_f TurningRadius_constraint; +ber_type_decoder_f TurningRadius_decode_ber; +der_type_encoder_f TurningRadius_encode_der; +xer_type_decoder_f TurningRadius_decode_xer; +xer_type_encoder_f TurningRadius_encode_xer; +jer_type_encoder_f TurningRadius_encode_jer; +oer_type_decoder_f TurningRadius_decode_oer; +oer_type_encoder_f TurningRadius_encode_oer; +per_type_decoder_f TurningRadius_decode_uper; +per_type_encoder_f TurningRadius_encode_uper; +per_type_decoder_f TurningRadius_decode_aper; +per_type_encoder_f TurningRadius_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TurningRadius_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/UTF8String.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/UTF8String.h new file mode 100644 index 000000000..5c902b19d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/UTF8String.h @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UTF8String_H_ +#define _UTF8String_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t UTF8String_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_UTF8String; +extern asn_TYPE_operation_t asn_OP_UTF8String; + +#define UTF8String_free OCTET_STRING_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f UTF8String_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +#define UTF8String_compare OCTET_STRING_compare + +asn_constr_check_f UTF8String_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define UTF8String_decode_ber OCTET_STRING_decode_ber +#define UTF8String_encode_der OCTET_STRING_encode_der +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define UTF8String_decode_xer OCTET_STRING_decode_xer_utf8 +#define UTF8String_encode_xer OCTET_STRING_encode_xer_utf8 +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#define UTF8String_encode_jer OCTET_STRING_encode_jer_utf8 +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define UTF8String_decode_uper OCTET_STRING_decode_uper +#define UTF8String_encode_uper OCTET_STRING_encode_uper +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define UTF8String_decode_aper OCTET_STRING_decode_aper +#define UTF8String_encode_aper OCTET_STRING_encode_aper +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f UTF8String_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +/* + * Returns length of the given UTF-8 string in characters, + * or a negative error code: + * -1: UTF-8 sequence truncated + * -2: Illegal UTF-8 sequence start + * -3: Continuation expectation failed + * -4: Not minimal length encoding + * -5: Invalid arguments + */ +ssize_t UTF8String_length(const UTF8String_t *st); + +/* + * Convert the UTF-8 string into a sequence of wide characters. + * Returns the number of characters necessary. + * Returned value might be greater than dstlen. + * In case of conversion error, 0 is returned. + * + * If st points to a valid UTF-8 string, calling + * UTF8String_to_wcs(st, 0, 0); + * is equivalent to + * UTF8String_length(const UTF8String_t *st); + */ +size_t UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen); + +#ifdef __cplusplus +} +#endif + +#endif /* _UTF8String_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VDS.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VDS.h new file mode 100644 index 000000000..7e654b0b6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VDS.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VDS_H_ +#define _VDS_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VDS */ +typedef IA5String_t VDS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VDS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VDS; +asn_struct_free_f VDS_free; +asn_struct_print_f VDS_print; +asn_constr_check_f VDS_constraint; +ber_type_decoder_f VDS_decode_ber; +der_type_encoder_f VDS_encode_der; +xer_type_decoder_f VDS_decode_xer; +xer_type_encoder_f VDS_encode_xer; +jer_type_encoder_f VDS_encode_jer; +oer_type_decoder_f VDS_decode_oer; +oer_type_encoder_f VDS_encode_oer; +per_type_decoder_f VDS_decode_uper; +per_type_encoder_f VDS_encode_uper; +per_type_decoder_f VDS_decode_aper; +per_type_encoder_f VDS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VDS_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ValidityDuration.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ValidityDuration.h new file mode 100644 index 000000000..71cf41cd0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ValidityDuration.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _ValidityDuration_H_ +#define _ValidityDuration_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ValidityDuration { + ValidityDuration_timeOfDetection = 0, + ValidityDuration_oneSecondAfterDetection = 1 +} e_ValidityDuration; + +/* ValidityDuration */ +typedef long ValidityDuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ValidityDuration; +asn_struct_free_f ValidityDuration_free; +asn_struct_print_f ValidityDuration_print; +asn_constr_check_f ValidityDuration_constraint; +ber_type_decoder_f ValidityDuration_decode_ber; +der_type_encoder_f ValidityDuration_encode_der; +xer_type_decoder_f ValidityDuration_decode_xer; +xer_type_encoder_f ValidityDuration_encode_xer; +jer_type_encoder_f ValidityDuration_encode_jer; +oer_type_decoder_f ValidityDuration_decode_oer; +oer_type_encoder_f ValidityDuration_encode_oer; +per_type_decoder_f ValidityDuration_decode_uper; +per_type_encoder_f ValidityDuration_encode_uper; +per_type_decoder_f ValidityDuration_decode_aper; +per_type_encoder_f ValidityDuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ValidityDuration_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VarLengthNumber.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VarLengthNumber.h new file mode 100644 index 000000000..0aa82a879 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VarLengthNumber.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include "etsi_its_cpm_coding/Ext1.h" +#include +#ifndef _VarLengthNumber_H_ +#define _VarLengthNumber_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VarLengthNumber_PR { + VarLengthNumber_PR_NOTHING, /* No components present */ + VarLengthNumber_PR_content, + VarLengthNumber_PR_extension +} VarLengthNumber_PR; + +/* VarLengthNumber */ +typedef struct VarLengthNumber { + VarLengthNumber_PR present; + union VarLengthNumber_u { + long content; + Ext1_t extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VarLengthNumber_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VarLengthNumber; + +#ifdef __cplusplus +} +#endif + +#endif /* _VarLengthNumber_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h new file mode 100644 index 000000000..5bed971d2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleBreakdownSubCauseCode_H_ +#define _VehicleBreakdownSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleBreakdownSubCauseCode { + VehicleBreakdownSubCauseCode_unavailable = 0, + VehicleBreakdownSubCauseCode_lackOfFuel = 1, + VehicleBreakdownSubCauseCode_lackOfBatteryPower = 2, + VehicleBreakdownSubCauseCode_engineProblem = 3, + VehicleBreakdownSubCauseCode_transmissionProblem = 4, + VehicleBreakdownSubCauseCode_engineCoolingProblem = 5, + VehicleBreakdownSubCauseCode_brakingSystemProblem = 6, + VehicleBreakdownSubCauseCode_steeringProblem = 7, + VehicleBreakdownSubCauseCode_tyrePuncture = 8, + VehicleBreakdownSubCauseCode_tyrePressureProblem = 9, + VehicleBreakdownSubCauseCode_vehicleOnFire = 10 +} e_VehicleBreakdownSubCauseCode; + +/* VehicleBreakdownSubCauseCode */ +typedef long VehicleBreakdownSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleBreakdownSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleBreakdownSubCauseCode; +asn_struct_free_f VehicleBreakdownSubCauseCode_free; +asn_struct_print_f VehicleBreakdownSubCauseCode_print; +asn_constr_check_f VehicleBreakdownSubCauseCode_constraint; +ber_type_decoder_f VehicleBreakdownSubCauseCode_decode_ber; +der_type_encoder_f VehicleBreakdownSubCauseCode_encode_der; +xer_type_decoder_f VehicleBreakdownSubCauseCode_decode_xer; +xer_type_encoder_f VehicleBreakdownSubCauseCode_encode_xer; +jer_type_encoder_f VehicleBreakdownSubCauseCode_encode_jer; +oer_type_decoder_f VehicleBreakdownSubCauseCode_decode_oer; +oer_type_encoder_f VehicleBreakdownSubCauseCode_encode_oer; +per_type_decoder_f VehicleBreakdownSubCauseCode_decode_uper; +per_type_encoder_f VehicleBreakdownSubCauseCode_encode_uper; +per_type_decoder_f VehicleBreakdownSubCauseCode_decode_aper; +per_type_encoder_f VehicleBreakdownSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleBreakdownSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleHeight.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleHeight.h new file mode 100644 index 000000000..af1065ddc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleHeight.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleHeight_H_ +#define _VehicleHeight_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleHeight { + VehicleHeight_outOfRange = 126, + VehicleHeight_unavailable = 127 +} e_VehicleHeight; + +/* VehicleHeight */ +typedef long VehicleHeight_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleHeight; +asn_struct_free_f VehicleHeight_free; +asn_struct_print_f VehicleHeight_print; +asn_constr_check_f VehicleHeight_constraint; +ber_type_decoder_f VehicleHeight_decode_ber; +der_type_encoder_f VehicleHeight_encode_der; +xer_type_decoder_f VehicleHeight_decode_xer; +xer_type_encoder_f VehicleHeight_encode_xer; +jer_type_encoder_f VehicleHeight_encode_jer; +oer_type_decoder_f VehicleHeight_decode_oer; +oer_type_encoder_f VehicleHeight_encode_oer; +per_type_decoder_f VehicleHeight_decode_uper; +per_type_encoder_f VehicleHeight_encode_uper; +per_type_decoder_f VehicleHeight_decode_aper; +per_type_encoder_f VehicleHeight_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleHeight_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleIdentification.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleIdentification.h new file mode 100644 index 000000000..10e822223 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleIdentification.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/WMInumber.h" +#include "etsi_its_cpm_coding/VDS.h" +#include +#ifndef _VehicleIdentification_H_ +#define _VehicleIdentification_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleIdentification */ +typedef struct VehicleIdentification { + WMInumber_t *wMInumber; /* OPTIONAL */ + VDS_t *vDS; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleIdentification_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleIdentification; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleIdentification_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLength.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLength.h new file mode 100644 index 000000000..fcdc4f95d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLength.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VehicleLengthValue.h" +#include "etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h" +#include +#ifndef _VehicleLength_H_ +#define _VehicleLength_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleLength */ +typedef struct VehicleLength { + VehicleLengthValue_t vehicleLengthValue; + VehicleLengthConfidenceIndication_t vehicleLengthConfidenceIndication; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleLength_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleLength; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleLength_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h new file mode 100644 index 000000000..7a7dcf95c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleLengthConfidenceIndication_H_ +#define _VehicleLengthConfidenceIndication_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleLengthConfidenceIndication { + VehicleLengthConfidenceIndication_noTrailerPresent = 0, + VehicleLengthConfidenceIndication_trailerPresentWithKnownLength = 1, + VehicleLengthConfidenceIndication_trailerPresentWithUnknownLength = 2, + VehicleLengthConfidenceIndication_trailerPresenceIsUnknown = 3, + VehicleLengthConfidenceIndication_unavailable = 4 +} e_VehicleLengthConfidenceIndication; + +/* VehicleLengthConfidenceIndication */ +typedef long VehicleLengthConfidenceIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleLengthConfidenceIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleLengthConfidenceIndication; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleLengthConfidenceIndication_specs_1; +asn_struct_free_f VehicleLengthConfidenceIndication_free; +asn_struct_print_f VehicleLengthConfidenceIndication_print; +asn_constr_check_f VehicleLengthConfidenceIndication_constraint; +ber_type_decoder_f VehicleLengthConfidenceIndication_decode_ber; +der_type_encoder_f VehicleLengthConfidenceIndication_encode_der; +xer_type_decoder_f VehicleLengthConfidenceIndication_decode_xer; +xer_type_encoder_f VehicleLengthConfidenceIndication_encode_xer; +jer_type_encoder_f VehicleLengthConfidenceIndication_encode_jer; +oer_type_decoder_f VehicleLengthConfidenceIndication_decode_oer; +oer_type_encoder_f VehicleLengthConfidenceIndication_encode_oer; +per_type_decoder_f VehicleLengthConfidenceIndication_decode_uper; +per_type_encoder_f VehicleLengthConfidenceIndication_encode_uper; +per_type_decoder_f VehicleLengthConfidenceIndication_decode_aper; +per_type_encoder_f VehicleLengthConfidenceIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleLengthConfidenceIndication_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthV2.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthV2.h new file mode 100644 index 000000000..b2e661f2e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthV2.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VehicleLengthValue.h" +#include "etsi_its_cpm_coding/TrailerPresenceInformation.h" +#include +#ifndef _VehicleLengthV2_H_ +#define _VehicleLengthV2_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VehicleLengthV2 */ +typedef struct VehicleLengthV2 { + VehicleLengthValue_t vehicleLengthValue; + TrailerPresenceInformation_t trailerPresenceInformation; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VehicleLengthV2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleLengthV2; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleLengthV2_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthValue.h new file mode 100644 index 000000000..716d36693 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleLengthValue.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleLengthValue_H_ +#define _VehicleLengthValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleLengthValue { + VehicleLengthValue_outOfRange = 1022, + VehicleLengthValue_unavailable = 1023 +} e_VehicleLengthValue; + +/* VehicleLengthValue */ +typedef long VehicleLengthValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleLengthValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleLengthValue; +asn_struct_free_f VehicleLengthValue_free; +asn_struct_print_f VehicleLengthValue_print; +asn_constr_check_f VehicleLengthValue_constraint; +ber_type_decoder_f VehicleLengthValue_decode_ber; +der_type_encoder_f VehicleLengthValue_encode_der; +xer_type_decoder_f VehicleLengthValue_decode_xer; +xer_type_encoder_f VehicleLengthValue_encode_xer; +jer_type_encoder_f VehicleLengthValue_encode_jer; +oer_type_decoder_f VehicleLengthValue_decode_oer; +oer_type_encoder_f VehicleLengthValue_encode_oer; +per_type_decoder_f VehicleLengthValue_decode_uper; +per_type_encoder_f VehicleLengthValue_encode_uper; +per_type_decoder_f VehicleLengthValue_decode_aper; +per_type_encoder_f VehicleLengthValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleLengthValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleMass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleMass.h new file mode 100644 index 000000000..0b1507fee --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleMass.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleMass_H_ +#define _VehicleMass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleMass { + VehicleMass_outOfRange = 1023, + VehicleMass_unavailable = 1024 +} e_VehicleMass; + +/* VehicleMass */ +typedef long VehicleMass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleMass; +asn_struct_free_f VehicleMass_free; +asn_struct_print_f VehicleMass_print; +asn_constr_check_f VehicleMass_constraint; +ber_type_decoder_f VehicleMass_decode_ber; +der_type_encoder_f VehicleMass_encode_der; +xer_type_decoder_f VehicleMass_decode_xer; +xer_type_encoder_f VehicleMass_encode_xer; +jer_type_encoder_f VehicleMass_encode_jer; +oer_type_decoder_f VehicleMass_decode_oer; +oer_type_encoder_f VehicleMass_encode_oer; +per_type_decoder_f VehicleMass_decode_uper; +per_type_encoder_f VehicleMass_encode_uper; +per_type_decoder_f VehicleMass_decode_aper; +per_type_encoder_f VehicleMass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleMass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleRole.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleRole.h new file mode 100644 index 000000000..d3b4fc2a7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleRole.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleRole_H_ +#define _VehicleRole_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleRole { + VehicleRole_default = 0, + VehicleRole_publicTransport = 1, + VehicleRole_specialTransport = 2, + VehicleRole_dangerousGoods = 3, + VehicleRole_roadWork = 4, + VehicleRole_rescue = 5, + VehicleRole_emergency = 6, + VehicleRole_safetyCar = 7, + VehicleRole_agriculture = 8, + VehicleRole_commercial = 9, + VehicleRole_military = 10, + VehicleRole_roadOperator = 11, + VehicleRole_taxi = 12, + VehicleRole_reserved1 = 13, + VehicleRole_reserved2 = 14, + VehicleRole_reserved3 = 15 +} e_VehicleRole; + +/* VehicleRole */ +typedef long VehicleRole_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VehicleRole; +asn_struct_free_f VehicleRole_free; +asn_struct_print_f VehicleRole_print; +asn_constr_check_f VehicleRole_constraint; +ber_type_decoder_f VehicleRole_decode_ber; +der_type_encoder_f VehicleRole_encode_der; +xer_type_decoder_f VehicleRole_decode_xer; +xer_type_encoder_f VehicleRole_encode_xer; +jer_type_encoder_f VehicleRole_encode_jer; +oer_type_decoder_f VehicleRole_decode_oer; +oer_type_encoder_f VehicleRole_encode_oer; +per_type_decoder_f VehicleRole_decode_uper; +per_type_encoder_f VehicleRole_encode_uper; +per_type_decoder_f VehicleRole_decode_aper; +per_type_encoder_f VehicleRole_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleRole_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleWidth.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleWidth.h new file mode 100644 index 000000000..58932a9a4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VehicleWidth.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VehicleWidth_H_ +#define _VehicleWidth_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleWidth { + VehicleWidth_outOfRange = 61, + VehicleWidth_unavailable = 62 +} e_VehicleWidth; + +/* VehicleWidth */ +typedef long VehicleWidth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleWidth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleWidth; +asn_struct_free_f VehicleWidth_free; +asn_struct_print_f VehicleWidth_print; +asn_constr_check_f VehicleWidth_constraint; +ber_type_decoder_f VehicleWidth_decode_ber; +der_type_encoder_f VehicleWidth_encode_der; +xer_type_decoder_f VehicleWidth_decode_xer; +xer_type_encoder_f VehicleWidth_encode_xer; +jer_type_encoder_f VehicleWidth_encode_jer; +oer_type_decoder_f VehicleWidth_decode_oer; +oer_type_encoder_f VehicleWidth_encode_oer; +per_type_decoder_f VehicleWidth_decode_uper; +per_type_encoder_f VehicleWidth_encode_uper; +per_type_decoder_f VehicleWidth_decode_aper; +per_type_encoder_f VehicleWidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleWidth_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Velocity3dWithConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Velocity3dWithConfidence.h new file mode 100644 index 000000000..f081f4438 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Velocity3dWithConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VelocityPolarWithZ.h" +#include "etsi_its_cpm_coding/VelocityCartesian.h" +#include +#ifndef _Velocity3dWithConfidence_H_ +#define _Velocity3dWithConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Velocity3dWithConfidence_PR { + Velocity3dWithConfidence_PR_NOTHING, /* No components present */ + Velocity3dWithConfidence_PR_polarVelocity, + Velocity3dWithConfidence_PR_cartesianVelocity +} Velocity3dWithConfidence_PR; + +/* Velocity3dWithConfidence */ +typedef struct Velocity3dWithConfidence { + Velocity3dWithConfidence_PR present; + union Velocity3dWithConfidence_u { + VelocityPolarWithZ_t polarVelocity; + VelocityCartesian_t cartesianVelocity; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Velocity3dWithConfidence_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Velocity3dWithConfidence; +extern asn_CHOICE_specifics_t asn_SPC_Velocity3dWithConfidence_specs_1; +extern asn_TYPE_member_t asn_MBR_Velocity3dWithConfidence_1[2]; +extern asn_per_constraints_t asn_PER_type_Velocity3dWithConfidence_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Velocity3dWithConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityCartesian.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityCartesian.h new file mode 100644 index 000000000..d8bb1938f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityCartesian.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VelocityComponent.h" +#include +#ifndef _VelocityCartesian_H_ +#define _VelocityCartesian_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VelocityComponent; + +/* VelocityCartesian */ +typedef struct VelocityCartesian { + VelocityComponent_t xVelocity; + VelocityComponent_t yVelocity; + struct VelocityComponent *zVelocity; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VelocityCartesian_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VelocityCartesian; +extern asn_SEQUENCE_specifics_t asn_SPC_VelocityCartesian_specs_1; +extern asn_TYPE_member_t asn_MBR_VelocityCartesian_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/VelocityComponent.h" + +#endif /* _VelocityCartesian_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponent.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponent.h new file mode 100644 index 000000000..0912f33f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponent.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VelocityComponentValue.h" +#include "etsi_its_cpm_coding/SpeedConfidence.h" +#include +#ifndef _VelocityComponent_H_ +#define _VelocityComponent_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VelocityComponent */ +typedef struct VelocityComponent { + VelocityComponentValue_t value; + SpeedConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VelocityComponent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VelocityComponent; +extern asn_SEQUENCE_specifics_t asn_SPC_VelocityComponent_specs_1; +extern asn_TYPE_member_t asn_MBR_VelocityComponent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _VelocityComponent_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponentValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponentValue.h new file mode 100644 index 000000000..d5f491973 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityComponentValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VelocityComponentValue_H_ +#define _VelocityComponentValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VelocityComponentValue { + VelocityComponentValue_negativeOutOfRange = -16383, + VelocityComponentValue_positiveOutOfRange = 16382, + VelocityComponentValue_unavailable = 16383 +} e_VelocityComponentValue; + +/* VelocityComponentValue */ +typedef long VelocityComponentValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VelocityComponentValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VelocityComponentValue; +asn_struct_free_f VelocityComponentValue_free; +asn_struct_print_f VelocityComponentValue_print; +asn_constr_check_f VelocityComponentValue_constraint; +ber_type_decoder_f VelocityComponentValue_decode_ber; +der_type_encoder_f VelocityComponentValue_encode_der; +xer_type_decoder_f VelocityComponentValue_decode_xer; +xer_type_encoder_f VelocityComponentValue_encode_xer; +jer_type_encoder_f VelocityComponentValue_encode_jer; +oer_type_decoder_f VelocityComponentValue_decode_oer; +oer_type_encoder_f VelocityComponentValue_encode_oer; +per_type_decoder_f VelocityComponentValue_decode_uper; +per_type_encoder_f VelocityComponentValue_encode_uper; +per_type_decoder_f VelocityComponentValue_decode_aper; +per_type_encoder_f VelocityComponentValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VelocityComponentValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityPolarWithZ.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityPolarWithZ.h new file mode 100644 index 000000000..25ae2da3c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VelocityPolarWithZ.h @@ -0,0 +1,49 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Speed.h" +#include "etsi_its_cpm_coding/CartesianAngle.h" +#include +#ifndef _VelocityPolarWithZ_H_ +#define _VelocityPolarWithZ_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct VelocityComponent; + +/* VelocityPolarWithZ */ +typedef struct VelocityPolarWithZ { + Speed_t velocityMagnitude; + CartesianAngle_t velocityDirection; + struct VelocityComponent *zVelocity; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VelocityPolarWithZ_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VelocityPolarWithZ; +extern asn_SEQUENCE_specifics_t asn_SPC_VelocityPolarWithZ_specs_1; +extern asn_TYPE_member_t asn_MBR_VelocityPolarWithZ_1[3]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/VelocityComponent.h" + +#endif /* _VelocityPolarWithZ_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAcceleration.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAcceleration.h new file mode 100644 index 000000000..0eec008c5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAcceleration.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VerticalAccelerationValue.h" +#include "etsi_its_cpm_coding/AccelerationConfidence.h" +#include +#ifndef _VerticalAcceleration_H_ +#define _VerticalAcceleration_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VerticalAcceleration */ +typedef struct VerticalAcceleration { + VerticalAccelerationValue_t verticalAccelerationValue; + AccelerationConfidence_t verticalAccelerationConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VerticalAcceleration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VerticalAcceleration; + +#ifdef __cplusplus +} +#endif + +#endif /* _VerticalAcceleration_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAccelerationValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAccelerationValue.h new file mode 100644 index 000000000..dd7423212 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VerticalAccelerationValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VerticalAccelerationValue_H_ +#define _VerticalAccelerationValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VerticalAccelerationValue { + VerticalAccelerationValue_negativeOutOfRange = -160, + VerticalAccelerationValue_positiveOutOfRange = 160, + VerticalAccelerationValue_unavailable = 161 +} e_VerticalAccelerationValue; + +/* VerticalAccelerationValue */ +typedef long VerticalAccelerationValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VerticalAccelerationValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VerticalAccelerationValue; +asn_struct_free_f VerticalAccelerationValue_free; +asn_struct_print_f VerticalAccelerationValue_print; +asn_constr_check_f VerticalAccelerationValue_constraint; +ber_type_decoder_f VerticalAccelerationValue_decode_ber; +der_type_encoder_f VerticalAccelerationValue_encode_der; +xer_type_decoder_f VerticalAccelerationValue_decode_xer; +xer_type_encoder_f VerticalAccelerationValue_encode_xer; +jer_type_encoder_f VerticalAccelerationValue_encode_jer; +oer_type_decoder_f VerticalAccelerationValue_decode_oer; +oer_type_encoder_f VerticalAccelerationValue_encode_oer; +per_type_decoder_f VerticalAccelerationValue_decode_uper; +per_type_encoder_f VerticalAccelerationValue_encode_uper; +per_type_decoder_f VerticalAccelerationValue_decode_aper; +per_type_encoder_f VerticalAccelerationValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VerticalAccelerationValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterInformation.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterInformation.h new file mode 100644 index 000000000..0b230da02 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterInformation.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Identifier1B.h" +#include "etsi_its_cpm_coding/CardinalNumber1B.h" +#include "etsi_its_cpm_coding/VruClusterProfiles.h" +#include +#ifndef _VruClusterInformation_H_ +#define _VruClusterInformation_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Shape; + +/* VruClusterInformation */ +typedef struct VruClusterInformation { + Identifier1B_t *clusterId; /* OPTIONAL */ + struct Shape *clusterBoundingBoxShape; /* OPTIONAL */ + CardinalNumber1B_t clusterCardinalitySize; + VruClusterProfiles_t *clusterProfiles; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VruClusterInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruClusterInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_VruClusterInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_VruClusterInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/Shape.h" + +#endif /* _VruClusterInformation_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterProfiles.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterProfiles.h new file mode 100644 index 000000000..d15dddf26 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruClusterProfiles.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruClusterProfiles_H_ +#define _VruClusterProfiles_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruClusterProfiles { + VruClusterProfiles_pedestrian = 0, + VruClusterProfiles_bicyclist = 1, + VruClusterProfiles_motorcyclist = 2, + VruClusterProfiles_animal = 3 +} e_VruClusterProfiles; + +/* VruClusterProfiles */ +typedef BIT_STRING_t VruClusterProfiles_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruClusterProfiles_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruClusterProfiles; +asn_struct_free_f VruClusterProfiles_free; +asn_struct_print_f VruClusterProfiles_print; +asn_constr_check_f VruClusterProfiles_constraint; +ber_type_decoder_f VruClusterProfiles_decode_ber; +der_type_encoder_f VruClusterProfiles_encode_der; +xer_type_decoder_f VruClusterProfiles_decode_xer; +xer_type_encoder_f VruClusterProfiles_encode_xer; +jer_type_encoder_f VruClusterProfiles_encode_jer; +oer_type_decoder_f VruClusterProfiles_decode_oer; +oer_type_encoder_f VruClusterProfiles_encode_oer; +per_type_decoder_f VruClusterProfiles_decode_uper; +per_type_encoder_f VruClusterProfiles_encode_uper; +per_type_decoder_f VruClusterProfiles_decode_aper; +per_type_encoder_f VruClusterProfiles_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruClusterProfiles_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruDeviceUsage.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruDeviceUsage.h new file mode 100644 index 000000000..dd17d8042 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruDeviceUsage.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruDeviceUsage_H_ +#define _VruDeviceUsage_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruDeviceUsage { + VruDeviceUsage_unavailable = 0, + VruDeviceUsage_other = 1, + VruDeviceUsage_idle = 2, + VruDeviceUsage_listeningToAudio = 3, + VruDeviceUsage_typing = 4, + VruDeviceUsage_calling = 5, + VruDeviceUsage_playingGames = 6, + VruDeviceUsage_reading = 7, + VruDeviceUsage_viewing = 8, + VruDeviceUsage_max = 255 +} e_VruDeviceUsage; + +/* VruDeviceUsage */ +typedef long VruDeviceUsage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruDeviceUsage; +asn_struct_free_f VruDeviceUsage_free; +asn_struct_print_f VruDeviceUsage_print; +asn_constr_check_f VruDeviceUsage_constraint; +ber_type_decoder_f VruDeviceUsage_decode_ber; +der_type_encoder_f VruDeviceUsage_encode_der; +xer_type_decoder_f VruDeviceUsage_decode_xer; +xer_type_encoder_f VruDeviceUsage_encode_xer; +jer_type_encoder_f VruDeviceUsage_encode_jer; +oer_type_decoder_f VruDeviceUsage_decode_oer; +oer_type_encoder_f VruDeviceUsage_encode_oer; +per_type_decoder_f VruDeviceUsage_decode_uper; +per_type_encoder_f VruDeviceUsage_encode_uper; +per_type_decoder_f VruDeviceUsage_decode_aper; +per_type_encoder_f VruDeviceUsage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruDeviceUsage_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruEnvironment.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruEnvironment.h new file mode 100644 index 000000000..169d4bb64 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruEnvironment.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruEnvironment_H_ +#define _VruEnvironment_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruEnvironment { + VruEnvironment_unavailable = 0, + VruEnvironment_intersectionCrossing = 1, + VruEnvironment_zebraCrossing = 2, + VruEnvironment_sidewalk = 3, + VruEnvironment_onVehicleRoad = 4, + VruEnvironment_protectedGeographicArea = 5, + VruEnvironment_max = 255 +} e_VruEnvironment; + +/* VruEnvironment */ +typedef long VruEnvironment_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruEnvironment; +asn_struct_free_f VruEnvironment_free; +asn_struct_print_f VruEnvironment_print; +asn_constr_check_f VruEnvironment_constraint; +ber_type_decoder_f VruEnvironment_decode_ber; +der_type_encoder_f VruEnvironment_encode_der; +xer_type_decoder_f VruEnvironment_decode_xer; +xer_type_encoder_f VruEnvironment_encode_xer; +jer_type_encoder_f VruEnvironment_encode_jer; +oer_type_decoder_f VruEnvironment_decode_oer; +oer_type_encoder_f VruEnvironment_encode_oer; +per_type_decoder_f VruEnvironment_decode_uper; +per_type_encoder_f VruEnvironment_encode_uper; +per_type_decoder_f VruEnvironment_decode_aper; +per_type_encoder_f VruEnvironment_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruEnvironment_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruExteriorLights.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruExteriorLights.h new file mode 100644 index 000000000..60e5b7768 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruExteriorLights.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/ExteriorLights.h" +#include "etsi_its_cpm_coding/VruSpecificExteriorLights.h" +#include +#ifndef _VruExteriorLights_H_ +#define _VruExteriorLights_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* VruExteriorLights */ +typedef struct VruExteriorLights { + ExteriorLights_t vehicular; + VruSpecificExteriorLights_t vruSpecific; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VruExteriorLights_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruExteriorLights; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruExteriorLights_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruMovementControl.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruMovementControl.h new file mode 100644 index 000000000..1ba21e2d2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruMovementControl.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruMovementControl_H_ +#define _VruMovementControl_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruMovementControl { + VruMovementControl_unavailable = 0, + VruMovementControl_braking = 1, + VruMovementControl_hardBraking = 2, + VruMovementControl_stopPedaling = 3, + VruMovementControl_brakingAndStopPedaling = 4, + VruMovementControl_hardBrakingAndStopPedaling = 5, + VruMovementControl_noReaction = 6, + VruMovementControl_max = 255 +} e_VruMovementControl; + +/* VruMovementControl */ +typedef long VruMovementControl_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruMovementControl; +asn_struct_free_f VruMovementControl_free; +asn_struct_print_f VruMovementControl_print; +asn_constr_check_f VruMovementControl_constraint; +ber_type_decoder_f VruMovementControl_decode_ber; +der_type_encoder_f VruMovementControl_encode_der; +xer_type_decoder_f VruMovementControl_decode_xer; +xer_type_encoder_f VruMovementControl_encode_xer; +jer_type_encoder_f VruMovementControl_encode_jer; +oer_type_decoder_f VruMovementControl_decode_oer; +oer_type_encoder_f VruMovementControl_encode_oer; +per_type_decoder_f VruMovementControl_decode_uper; +per_type_encoder_f VruMovementControl_encode_uper; +per_type_decoder_f VruMovementControl_decode_aper; +per_type_encoder_f VruMovementControl_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruMovementControl_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruProfileAndSubprofile.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruProfileAndSubprofile.h new file mode 100644 index 000000000..077f3bc39 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruProfileAndSubprofile.h @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/VruSubProfilePedestrian.h" +#include "etsi_its_cpm_coding/VruSubProfileBicyclist.h" +#include "etsi_its_cpm_coding/VruSubProfileMotorcyclist.h" +#include "etsi_its_cpm_coding/VruSubProfileAnimal.h" +#include +#ifndef _VruProfileAndSubprofile_H_ +#define _VruProfileAndSubprofile_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruProfileAndSubprofile_PR { + VruProfileAndSubprofile_PR_NOTHING, /* No components present */ + VruProfileAndSubprofile_PR_pedestrian, + VruProfileAndSubprofile_PR_bicyclistAndLightVruVehicle, + VruProfileAndSubprofile_PR_motorcyclist, + VruProfileAndSubprofile_PR_animal + /* Extensions may appear below */ + +} VruProfileAndSubprofile_PR; + +/* VruProfileAndSubprofile */ +typedef struct VruProfileAndSubprofile { + VruProfileAndSubprofile_PR present; + union VruProfileAndSubprofile_u { + VruSubProfilePedestrian_t pedestrian; + VruSubProfileBicyclist_t bicyclistAndLightVruVehicle; + VruSubProfileMotorcyclist_t motorcyclist; + VruSubProfileAnimal_t animal; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} VruProfileAndSubprofile_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruProfileAndSubprofile; +extern asn_CHOICE_specifics_t asn_SPC_VruProfileAndSubprofile_specs_1; +extern asn_TYPE_member_t asn_MBR_VruProfileAndSubprofile_1[4]; +extern asn_per_constraints_t asn_PER_type_VruProfileAndSubprofile_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruProfileAndSubprofile_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSizeClass.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSizeClass.h new file mode 100644 index 000000000..3b0abcd28 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSizeClass.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSizeClass_H_ +#define _VruSizeClass_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSizeClass { + VruSizeClass_unavailable = 0, + VruSizeClass_low = 1, + VruSizeClass_medium = 2, + VruSizeClass_high = 3, + VruSizeClass_max = 15 +} e_VruSizeClass; + +/* VruSizeClass */ +typedef long VruSizeClass_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_VruSizeClass; +asn_struct_free_f VruSizeClass_free; +asn_struct_print_f VruSizeClass_print; +asn_constr_check_f VruSizeClass_constraint; +ber_type_decoder_f VruSizeClass_decode_ber; +der_type_encoder_f VruSizeClass_encode_der; +xer_type_decoder_f VruSizeClass_decode_xer; +xer_type_encoder_f VruSizeClass_encode_xer; +jer_type_encoder_f VruSizeClass_encode_jer; +oer_type_decoder_f VruSizeClass_decode_oer; +oer_type_encoder_f VruSizeClass_encode_oer; +per_type_decoder_f VruSizeClass_decode_uper; +per_type_encoder_f VruSizeClass_encode_uper; +per_type_decoder_f VruSizeClass_decode_aper; +per_type_encoder_f VruSizeClass_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSizeClass_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSpecificExteriorLights.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSpecificExteriorLights.h new file mode 100644 index 000000000..b6450245e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSpecificExteriorLights.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSpecificExteriorLights_H_ +#define _VruSpecificExteriorLights_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSpecificExteriorLights { + VruSpecificExteriorLights_unavailable = 0, + VruSpecificExteriorLights_backFlashLight = 1, + VruSpecificExteriorLights_helmetLight = 2, + VruSpecificExteriorLights_armLight = 3, + VruSpecificExteriorLights_legLight = 4, + VruSpecificExteriorLights_wheelLight = 5 +} e_VruSpecificExteriorLights; + +/* VruSpecificExteriorLights */ +typedef BIT_STRING_t VruSpecificExteriorLights_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruSpecificExteriorLights_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruSpecificExteriorLights; +asn_struct_free_f VruSpecificExteriorLights_free; +asn_struct_print_f VruSpecificExteriorLights_print; +asn_constr_check_f VruSpecificExteriorLights_constraint; +ber_type_decoder_f VruSpecificExteriorLights_decode_ber; +der_type_encoder_f VruSpecificExteriorLights_encode_der; +xer_type_decoder_f VruSpecificExteriorLights_decode_xer; +xer_type_encoder_f VruSpecificExteriorLights_encode_xer; +jer_type_encoder_f VruSpecificExteriorLights_encode_jer; +oer_type_decoder_f VruSpecificExteriorLights_decode_oer; +oer_type_encoder_f VruSpecificExteriorLights_encode_oer; +per_type_decoder_f VruSpecificExteriorLights_decode_uper; +per_type_encoder_f VruSpecificExteriorLights_encode_uper; +per_type_decoder_f VruSpecificExteriorLights_decode_aper; +per_type_encoder_f VruSpecificExteriorLights_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSpecificExteriorLights_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileAnimal.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileAnimal.h new file mode 100644 index 000000000..f5c436082 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileAnimal.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSubProfileAnimal_H_ +#define _VruSubProfileAnimal_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSubProfileAnimal { + VruSubProfileAnimal_unavailable = 0, + VruSubProfileAnimal_wild_animal = 1, + VruSubProfileAnimal_farm_animal = 2, + VruSubProfileAnimal_service_animal = 3, + VruSubProfileAnimal_max = 15 +} e_VruSubProfileAnimal; + +/* VruSubProfileAnimal */ +typedef long VruSubProfileAnimal_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruSubProfileAnimal_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruSubProfileAnimal; +extern const asn_INTEGER_specifics_t asn_SPC_VruSubProfileAnimal_specs_1; +asn_struct_free_f VruSubProfileAnimal_free; +asn_struct_print_f VruSubProfileAnimal_print; +asn_constr_check_f VruSubProfileAnimal_constraint; +ber_type_decoder_f VruSubProfileAnimal_decode_ber; +der_type_encoder_f VruSubProfileAnimal_encode_der; +xer_type_decoder_f VruSubProfileAnimal_decode_xer; +xer_type_encoder_f VruSubProfileAnimal_encode_xer; +jer_type_encoder_f VruSubProfileAnimal_encode_jer; +oer_type_decoder_f VruSubProfileAnimal_decode_oer; +oer_type_encoder_f VruSubProfileAnimal_encode_oer; +per_type_decoder_f VruSubProfileAnimal_decode_uper; +per_type_encoder_f VruSubProfileAnimal_encode_uper; +per_type_decoder_f VruSubProfileAnimal_decode_aper; +per_type_encoder_f VruSubProfileAnimal_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSubProfileAnimal_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileBicyclist.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileBicyclist.h new file mode 100644 index 000000000..040690121 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileBicyclist.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSubProfileBicyclist_H_ +#define _VruSubProfileBicyclist_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSubProfileBicyclist { + VruSubProfileBicyclist_unavailable = 0, + VruSubProfileBicyclist_bicyclist = 1, + VruSubProfileBicyclist_wheelchair_user = 2, + VruSubProfileBicyclist_horse_and_rider = 3, + VruSubProfileBicyclist_rollerskater = 4, + VruSubProfileBicyclist_e_scooter = 5, + VruSubProfileBicyclist_personal_transporter = 6, + VruSubProfileBicyclist_pedelec = 7, + VruSubProfileBicyclist_speed_pedelec = 8, + VruSubProfileBicyclist_max = 15 +} e_VruSubProfileBicyclist; + +/* VruSubProfileBicyclist */ +typedef long VruSubProfileBicyclist_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruSubProfileBicyclist_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruSubProfileBicyclist; +extern const asn_INTEGER_specifics_t asn_SPC_VruSubProfileBicyclist_specs_1; +asn_struct_free_f VruSubProfileBicyclist_free; +asn_struct_print_f VruSubProfileBicyclist_print; +asn_constr_check_f VruSubProfileBicyclist_constraint; +ber_type_decoder_f VruSubProfileBicyclist_decode_ber; +der_type_encoder_f VruSubProfileBicyclist_encode_der; +xer_type_decoder_f VruSubProfileBicyclist_decode_xer; +xer_type_encoder_f VruSubProfileBicyclist_encode_xer; +jer_type_encoder_f VruSubProfileBicyclist_encode_jer; +oer_type_decoder_f VruSubProfileBicyclist_decode_oer; +oer_type_encoder_f VruSubProfileBicyclist_encode_oer; +per_type_decoder_f VruSubProfileBicyclist_decode_uper; +per_type_encoder_f VruSubProfileBicyclist_encode_uper; +per_type_decoder_f VruSubProfileBicyclist_decode_aper; +per_type_encoder_f VruSubProfileBicyclist_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSubProfileBicyclist_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileMotorcyclist.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileMotorcyclist.h new file mode 100644 index 000000000..b6cdde53b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfileMotorcyclist.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSubProfileMotorcyclist_H_ +#define _VruSubProfileMotorcyclist_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSubProfileMotorcyclist { + VruSubProfileMotorcyclist_unavailable = 0, + VruSubProfileMotorcyclist_moped = 1, + VruSubProfileMotorcyclist_motorcycle = 2, + VruSubProfileMotorcyclist_motorcycle_and_sidecar_right = 3, + VruSubProfileMotorcyclist_motorcycle_and_sidecar_left = 4, + VruSubProfileMotorcyclist_max = 15 +} e_VruSubProfileMotorcyclist; + +/* VruSubProfileMotorcyclist */ +typedef long VruSubProfileMotorcyclist_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruSubProfileMotorcyclist_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruSubProfileMotorcyclist; +extern const asn_INTEGER_specifics_t asn_SPC_VruSubProfileMotorcyclist_specs_1; +asn_struct_free_f VruSubProfileMotorcyclist_free; +asn_struct_print_f VruSubProfileMotorcyclist_print; +asn_constr_check_f VruSubProfileMotorcyclist_constraint; +ber_type_decoder_f VruSubProfileMotorcyclist_decode_ber; +der_type_encoder_f VruSubProfileMotorcyclist_encode_der; +xer_type_decoder_f VruSubProfileMotorcyclist_decode_xer; +xer_type_encoder_f VruSubProfileMotorcyclist_encode_xer; +jer_type_encoder_f VruSubProfileMotorcyclist_encode_jer; +oer_type_decoder_f VruSubProfileMotorcyclist_decode_oer; +oer_type_encoder_f VruSubProfileMotorcyclist_encode_oer; +per_type_decoder_f VruSubProfileMotorcyclist_decode_uper; +per_type_encoder_f VruSubProfileMotorcyclist_encode_uper; +per_type_decoder_f VruSubProfileMotorcyclist_decode_aper; +per_type_encoder_f VruSubProfileMotorcyclist_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSubProfileMotorcyclist_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfilePedestrian.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfilePedestrian.h new file mode 100644 index 000000000..05501db83 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/VruSubProfilePedestrian.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _VruSubProfilePedestrian_H_ +#define _VruSubProfilePedestrian_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VruSubProfilePedestrian { + VruSubProfilePedestrian_unavailable = 0, + VruSubProfilePedestrian_ordinary_pedestrian = 1, + VruSubProfilePedestrian_road_worker = 2, + VruSubProfilePedestrian_first_responder = 3, + VruSubProfilePedestrian_max = 15 +} e_VruSubProfilePedestrian; + +/* VruSubProfilePedestrian */ +typedef long VruSubProfilePedestrian_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VruSubProfilePedestrian_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VruSubProfilePedestrian; +extern const asn_INTEGER_specifics_t asn_SPC_VruSubProfilePedestrian_specs_1; +asn_struct_free_f VruSubProfilePedestrian_free; +asn_struct_print_f VruSubProfilePedestrian_print; +asn_constr_check_f VruSubProfilePedestrian_constraint; +ber_type_decoder_f VruSubProfilePedestrian_decode_ber; +der_type_encoder_f VruSubProfilePedestrian_encode_der; +xer_type_decoder_f VruSubProfilePedestrian_decode_xer; +xer_type_encoder_f VruSubProfilePedestrian_encode_xer; +jer_type_encoder_f VruSubProfilePedestrian_encode_jer; +oer_type_decoder_f VruSubProfilePedestrian_decode_oer; +oer_type_encoder_f VruSubProfilePedestrian_encode_oer; +per_type_decoder_f VruSubProfilePedestrian_decode_uper; +per_type_encoder_f VruSubProfilePedestrian_encode_uper; +per_type_decoder_f VruSubProfilePedestrian_decode_aper; +per_type_encoder_f VruSubProfilePedestrian_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VruSubProfilePedestrian_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WMInumber.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WMInumber.h new file mode 100644 index 000000000..f7ec804f4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WMInumber.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _WMInumber_H_ +#define _WMInumber_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* WMInumber */ +typedef IA5String_t WMInumber_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WMInumber_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WMInumber; +asn_struct_free_f WMInumber_free; +asn_struct_print_f WMInumber_print; +asn_constr_check_f WMInumber_constraint; +ber_type_decoder_f WMInumber_decode_ber; +der_type_encoder_f WMInumber_encode_der; +xer_type_decoder_f WMInumber_decode_xer; +xer_type_encoder_f WMInumber_encode_xer; +jer_type_encoder_f WMInumber_encode_jer; +oer_type_decoder_f WMInumber_decode_oer; +oer_type_encoder_f WMInumber_encode_oer; +per_type_decoder_f WMInumber_decode_uper; +per_type_encoder_f WMInumber_encode_uper; +per_type_decoder_f WMInumber_decode_aper; +per_type_encoder_f WMInumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WMInumber_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84Angle.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84Angle.h new file mode 100644 index 000000000..4f79f1142 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84Angle.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" +#include "etsi_its_cpm_coding/Wgs84AngleConfidence.h" +#include +#ifndef _Wgs84Angle_H_ +#define _Wgs84Angle_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Wgs84Angle */ +typedef struct Wgs84Angle { + Wgs84AngleValue_t value; + Wgs84AngleConfidence_t confidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Wgs84Angle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Wgs84Angle; +extern asn_SEQUENCE_specifics_t asn_SPC_Wgs84Angle_specs_1; +extern asn_TYPE_member_t asn_MBR_Wgs84Angle_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Wgs84Angle_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleConfidence.h new file mode 100644 index 000000000..8d14b5a2d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleConfidence.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Wgs84AngleConfidence_H_ +#define _Wgs84AngleConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Wgs84AngleConfidence { + Wgs84AngleConfidence_outOfRange = 126, + Wgs84AngleConfidence_unavailable = 127 +} e_Wgs84AngleConfidence; + +/* Wgs84AngleConfidence */ +typedef long Wgs84AngleConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Wgs84AngleConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Wgs84AngleConfidence; +asn_struct_free_f Wgs84AngleConfidence_free; +asn_struct_print_f Wgs84AngleConfidence_print; +asn_constr_check_f Wgs84AngleConfidence_constraint; +ber_type_decoder_f Wgs84AngleConfidence_decode_ber; +der_type_encoder_f Wgs84AngleConfidence_encode_der; +xer_type_decoder_f Wgs84AngleConfidence_decode_xer; +xer_type_encoder_f Wgs84AngleConfidence_encode_xer; +jer_type_encoder_f Wgs84AngleConfidence_encode_jer; +oer_type_decoder_f Wgs84AngleConfidence_decode_oer; +oer_type_encoder_f Wgs84AngleConfidence_encode_oer; +per_type_decoder_f Wgs84AngleConfidence_decode_uper; +per_type_encoder_f Wgs84AngleConfidence_encode_uper; +per_type_decoder_f Wgs84AngleConfidence_decode_aper; +per_type_encoder_f Wgs84AngleConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Wgs84AngleConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleValue.h new file mode 100644 index 000000000..c05cb1d9c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/Wgs84AngleValue.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _Wgs84AngleValue_H_ +#define _Wgs84AngleValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Wgs84AngleValue { + Wgs84AngleValue_wgs84North = 0, + Wgs84AngleValue_wgs84East = 900, + Wgs84AngleValue_wgs84South = 1800, + Wgs84AngleValue_wgs84West = 2700, + Wgs84AngleValue_doNotUse = 3600, + Wgs84AngleValue_unavailable = 3601 +} e_Wgs84AngleValue; + +/* Wgs84AngleValue */ +typedef long Wgs84AngleValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Wgs84AngleValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Wgs84AngleValue; +asn_struct_free_f Wgs84AngleValue_free; +asn_struct_print_f Wgs84AngleValue_print; +asn_constr_check_f Wgs84AngleValue_constraint; +ber_type_decoder_f Wgs84AngleValue_decode_ber; +der_type_encoder_f Wgs84AngleValue_encode_der; +xer_type_decoder_f Wgs84AngleValue_decode_xer; +xer_type_encoder_f Wgs84AngleValue_encode_xer; +jer_type_encoder_f Wgs84AngleValue_encode_jer; +oer_type_decoder_f Wgs84AngleValue_decode_oer; +oer_type_encoder_f Wgs84AngleValue_encode_oer; +per_type_decoder_f Wgs84AngleValue_decode_uper; +per_type_encoder_f Wgs84AngleValue_encode_uper; +per_type_decoder_f Wgs84AngleValue_decode_aper; +per_type_encoder_f Wgs84AngleValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Wgs84AngleValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WheelBaseVehicle.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WheelBaseVehicle.h new file mode 100644 index 000000000..1a7efa457 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WheelBaseVehicle.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _WheelBaseVehicle_H_ +#define _WheelBaseVehicle_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WheelBaseVehicle { + WheelBaseVehicle_outOfRange = 126, + WheelBaseVehicle_unavailable = 127 +} e_WheelBaseVehicle; + +/* WheelBaseVehicle */ +typedef long WheelBaseVehicle_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WheelBaseVehicle; +asn_struct_free_f WheelBaseVehicle_free; +asn_struct_print_f WheelBaseVehicle_print; +asn_constr_check_f WheelBaseVehicle_constraint; +ber_type_decoder_f WheelBaseVehicle_decode_ber; +der_type_encoder_f WheelBaseVehicle_encode_der; +xer_type_decoder_f WheelBaseVehicle_decode_xer; +xer_type_encoder_f WheelBaseVehicle_encode_xer; +jer_type_encoder_f WheelBaseVehicle_encode_jer; +oer_type_decoder_f WheelBaseVehicle_decode_oer; +oer_type_encoder_f WheelBaseVehicle_encode_oer; +per_type_decoder_f WheelBaseVehicle_decode_uper; +per_type_encoder_f WheelBaseVehicle_encode_uper; +per_type_decoder_f WheelBaseVehicle_decode_aper; +per_type_encoder_f WheelBaseVehicle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WheelBaseVehicle_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainer.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainer.h new file mode 100644 index 000000000..5f54cf0f1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainer.h @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/CpmContainerId.h" +#include +#include +#include "etsi_its_cpm_coding/OriginatingVehicleContainer.h" +#include "etsi_its_cpm_coding/OriginatingRsuContainer.h" +#include "etsi_its_cpm_coding/SensorInformationContainer.h" +#include "etsi_its_cpm_coding/PerceptionRegionContainer.h" +#include "etsi_its_cpm_coding/PerceivedObjectContainer.h" +#include +#include +#include +#ifndef _WrappedCpmContainer_H_ +#define _WrappedCpmContainer_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WrappedCpmContainer__containerData_PR { + WrappedCpmContainer__containerData_PR_NOTHING, /* No components present */ + WrappedCpmContainer__containerData_PR_OriginatingVehicleContainer, + WrappedCpmContainer__containerData_PR_OriginatingRsuContainer, + WrappedCpmContainer__containerData_PR_SensorInformationContainer, + WrappedCpmContainer__containerData_PR_PerceptionRegionContainer, + WrappedCpmContainer__containerData_PR_PerceivedObjectContainer +} WrappedCpmContainer__containerData_PR; + +/* WrappedCpmContainer */ +typedef struct WrappedCpmContainer { + CpmContainerId_t containerId; + struct WrappedCpmContainer__containerData { + WrappedCpmContainer__containerData_PR present; + union WrappedCpmContainer__containerData_u { + OriginatingVehicleContainer_t OriginatingVehicleContainer; + OriginatingRsuContainer_t OriginatingRsuContainer; + SensorInformationContainer_t SensorInformationContainer; + PerceptionRegionContainer_t PerceptionRegionContainer; + PerceivedObjectContainer_t PerceivedObjectContainer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } containerData; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WrappedCpmContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WrappedCpmContainer; +extern asn_SEQUENCE_specifics_t asn_SPC_WrappedCpmContainer_specs_1; +extern asn_TYPE_member_t asn_MBR_WrappedCpmContainer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WrappedCpmContainer_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainers.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainers.h new file mode 100644 index 000000000..deb6ef4c5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrappedCpmContainers.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#include +#ifndef _WrappedCpmContainers_H_ +#define _WrappedCpmContainers_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct WrappedCpmContainer; + +/* WrappedCpmContainers */ +typedef struct WrappedCpmContainers { + A_SEQUENCE_OF(struct WrappedCpmContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WrappedCpmContainers_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WrappedCpmContainers; +extern asn_SET_OF_specifics_t asn_SPC_WrappedCpmContainers_specs_1; +extern asn_TYPE_member_t asn_MBR_WrappedCpmContainers_1[1]; +extern asn_per_constraints_t asn_PER_type_WrappedCpmContainers_constr_1; + +#ifdef __cplusplus +} +#endif + +/* Referred external types */ +#include "etsi_its_cpm_coding/WrappedCpmContainer.h" + +#endif /* _WrappedCpmContainers_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h new file mode 100644 index 000000000..08aa709f8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _WrongWayDrivingSubCauseCode_H_ +#define _WrongWayDrivingSubCauseCode_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WrongWayDrivingSubCauseCode { + WrongWayDrivingSubCauseCode_unavailable = 0, + WrongWayDrivingSubCauseCode_wrongLane = 1, + WrongWayDrivingSubCauseCode_wrongDirection = 2 +} e_WrongWayDrivingSubCauseCode; + +/* WrongWayDrivingSubCauseCode */ +typedef long WrongWayDrivingSubCauseCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WrongWayDrivingSubCauseCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WrongWayDrivingSubCauseCode; +asn_struct_free_f WrongWayDrivingSubCauseCode_free; +asn_struct_print_f WrongWayDrivingSubCauseCode_print; +asn_constr_check_f WrongWayDrivingSubCauseCode_constraint; +ber_type_decoder_f WrongWayDrivingSubCauseCode_decode_ber; +der_type_encoder_f WrongWayDrivingSubCauseCode_encode_der; +xer_type_decoder_f WrongWayDrivingSubCauseCode_decode_xer; +xer_type_encoder_f WrongWayDrivingSubCauseCode_encode_xer; +jer_type_encoder_f WrongWayDrivingSubCauseCode_encode_jer; +oer_type_decoder_f WrongWayDrivingSubCauseCode_decode_oer; +oer_type_encoder_f WrongWayDrivingSubCauseCode_encode_oer; +per_type_decoder_f WrongWayDrivingSubCauseCode_decode_uper; +per_type_encoder_f WrongWayDrivingSubCauseCode_encode_uper; +per_type_decoder_f WrongWayDrivingSubCauseCode_decode_aper; +per_type_encoder_f WrongWayDrivingSubCauseCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WrongWayDrivingSubCauseCode_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRate.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRate.h new file mode 100644 index 000000000..c458a5742 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRate.h @@ -0,0 +1,40 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include "etsi_its_cpm_coding/YawRateValue.h" +#include "etsi_its_cpm_coding/YawRateConfidence.h" +#include +#ifndef _YawRate_H_ +#define _YawRate_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* YawRate */ +typedef struct YawRate { + YawRateValue_t yawRateValue; + YawRateConfidence_t yawRateConfidence; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} YawRate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_YawRate; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawRate_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateConfidence.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateConfidence.h new file mode 100644 index 000000000..0af1f3e86 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateConfidence.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _YawRateConfidence_H_ +#define _YawRateConfidence_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum YawRateConfidence { + YawRateConfidence_degSec_000_01 = 0, + YawRateConfidence_degSec_000_05 = 1, + YawRateConfidence_degSec_000_10 = 2, + YawRateConfidence_degSec_001_00 = 3, + YawRateConfidence_degSec_005_00 = 4, + YawRateConfidence_degSec_010_00 = 5, + YawRateConfidence_degSec_100_00 = 6, + YawRateConfidence_outOfRange = 7, + YawRateConfidence_unavailable = 8 +} e_YawRateConfidence; + +/* YawRateConfidence */ +typedef long YawRateConfidence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_YawRateConfidence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_YawRateConfidence; +extern const asn_INTEGER_specifics_t asn_SPC_YawRateConfidence_specs_1; +asn_struct_free_f YawRateConfidence_free; +asn_struct_print_f YawRateConfidence_print; +asn_constr_check_f YawRateConfidence_constraint; +ber_type_decoder_f YawRateConfidence_decode_ber; +der_type_encoder_f YawRateConfidence_encode_der; +xer_type_decoder_f YawRateConfidence_decode_xer; +xer_type_encoder_f YawRateConfidence_encode_xer; +jer_type_encoder_f YawRateConfidence_encode_jer; +oer_type_decoder_f YawRateConfidence_decode_oer; +oer_type_encoder_f YawRateConfidence_encode_oer; +per_type_decoder_f YawRateConfidence_decode_uper; +per_type_encoder_f YawRateConfidence_encode_uper; +per_type_decoder_f YawRateConfidence_decode_aper; +per_type_encoder_f YawRateConfidence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawRateConfidence_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateValue.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateValue.h new file mode 100644 index 000000000..997433d3f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/YawRateValue.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + + +/* Including external dependencies */ +#include +#ifndef _YawRateValue_H_ +#define _YawRateValue_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum YawRateValue { + YawRateValue_negativeOutOfRange = -32766, + YawRateValue_positiveOutOfRange = 32766, + YawRateValue_unavailable = 32767 +} e_YawRateValue; + +/* YawRateValue */ +typedef long YawRateValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_YawRateValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_YawRateValue; +asn_struct_free_f YawRateValue_free; +asn_struct_print_f YawRateValue_print; +asn_constr_check_f YawRateValue_constraint; +ber_type_decoder_f YawRateValue_decode_ber; +der_type_encoder_f YawRateValue_encode_der; +xer_type_decoder_f YawRateValue_decode_xer; +xer_type_encoder_f YawRateValue_encode_xer; +jer_type_encoder_f YawRateValue_encode_jer; +oer_type_decoder_f YawRateValue_decode_oer; +oer_type_encoder_f YawRateValue_encode_oer; +per_type_decoder_f YawRateValue_decode_uper; +per_type_encoder_f YawRateValue_encode_uper; +per_type_decoder_f YawRateValue_decode_aper; +per_type_encoder_f YawRateValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _YawRateValue_H_ */ +#include diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_decoder.h new file mode 100644 index 000000000..cbe43c330 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_DECODER_H_ +#define _APER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_DECODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_encoder.h new file mode 100644 index 000000000..90d4c8f02 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_encoder.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_ENCODER_H_ +#define _APER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Aligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of aper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of aper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of aper_encode() and aper_encode_to_buffer(). + */ +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_opentype.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_opentype.h new file mode 100644 index 000000000..a3b86b93a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_opentype.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_OPENTYPE_H_ +#define _APER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_OPENTYPE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_support.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_support.h new file mode 100644 index 000000000..8a2b96374 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/aper_support.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _APER_SUPPORT_H_ +#define _APER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Aligned PER stream. + */ +ssize_t aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" to the Aligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-n is needed. + * In that case, invoke aper_put_length(po, -1, -1, 0, NULL) after encoding the + * last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, + int *opt_need_eom); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _APER_SUPPORT_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SEQUENCE_OF.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SEQUENCE_OF.h new file mode 100644 index 000000000..fb6e7eee6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SET_OF.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SET_OF.h new file mode 100644 index 000000000..882e1a47d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_application.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_application.h new file mode 100644 index 000000000..a6d2e52f5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_application.h @@ -0,0 +1,173 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "etsi_its_cpm_coding/asn_system.h" /* for platform-dependent types */ +#include "etsi_its_cpm_coding/asn_codecs.h" /* for ASN.1 codecs specifics */ +#include "etsi_its_cpm_coding/asn_config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER, + ATS_JER, +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "etsi_its_cpm_coding/constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_bit_data.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_bit_data.h new file mode 100644 index 000000000..9cff0c213 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs.h new file mode 100644 index 000000000..e75c2709c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs_prim.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs_prim.h new file mode 100644 index 000000000..7cb082d29 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_codecs_prim.h @@ -0,0 +1,56 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_config.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_config.h new file mode 100644 index 000000000..551bcc7fc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_config.h @@ -0,0 +1,2 @@ +// Generated automatically. Don't edit manually! + diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_constant.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_constant.h new file mode 100644 index 000000000..f11a168b9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_constant.h @@ -0,0 +1,268 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define min_val_CpmContainerId (1) +#define max_val_CpmContainerId (16) +#define min_val_AccelerationConfidence (0) +#define max_val_AccelerationConfidence (102) +#define min_val_AccelerationMagnitudeValue (0) +#define max_val_AccelerationMagnitudeValue (161) +#define min_val_AccelerationValue (-160) +#define max_val_AccelerationValue (161) +#define min_val_AccidentSubCauseCode (0) +#define max_val_AccidentSubCauseCode (255) +#define min_val_AdverseWeatherCondition_AdhesionSubCauseCode (0) +#define max_val_AdverseWeatherCondition_AdhesionSubCauseCode (255) +#define min_val_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode (0) +#define max_val_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode (255) +#define min_val_AdverseWeatherCondition_PrecipitationSubCauseCode (0) +#define max_val_AdverseWeatherCondition_PrecipitationSubCauseCode (255) +#define min_val_AdverseWeatherCondition_VisibilitySubCauseCode (0) +#define max_val_AdverseWeatherCondition_VisibilitySubCauseCode (255) +#define min_val_AirHumidity (1) +#define max_val_AirHumidity (1001) +#define min_val_AltitudeValue (-100000) +#define max_val_AltitudeValue (800001) +#define min_val_AngleConfidence (1) +#define max_val_AngleConfidence (127) +#define min_val_AxlesCount (2) +#define max_val_AxlesCount (1002) +#define min_val_BarometricPressure (2999) +#define max_val_BarometricPressure (12002) +#define min_val_BogiesCount (2) +#define max_val_BogiesCount (101) +#define min_val_CardinalNumber1B (0) +#define max_val_CardinalNumber1B (255) +#define min_val_CardinalNumber3b (1) +#define max_val_CardinalNumber3b (8) +#define min_val_CartesianAngleValue (0) +#define max_val_CartesianAngleValue (3601) +#define min_val_CartesianAngularAccelerationComponentValue (-255) +#define max_val_CartesianAngularAccelerationComponentValue (256) +#define min_val_CartesianAngularVelocityComponentValue (-255) +#define max_val_CartesianAngularVelocityComponentValue (256) +#define min_val_CauseCodeType (0) +#define max_val_CauseCodeType (255) +#define min_val_CartesianCoordinateSmall (-3094) +#define max_val_CartesianCoordinateSmall (1001) +#define min_val_CartesianCoordinate (-32768) +#define max_val_CartesianCoordinate (32767) +#define min_val_CartesianCoordinateLarge (-131072) +#define max_val_CartesianCoordinateLarge (131071) +#define min_val_CollisionRiskSubCauseCode (0) +#define max_val_CollisionRiskSubCauseCode (255) +#define min_val_ConfidenceLevel (1) +#define max_val_ConfidenceLevel (101) +#define min_val_CoordinateConfidence (1) +#define max_val_CoordinateConfidence (4096) +#define min_val_CorrelationCellValue (-100) +#define max_val_CorrelationCellValue (101) +#define min_val_CurvatureValue (-1023) +#define max_val_CurvatureValue (1023) +#define min_val_DangerousEndOfQueueSubCauseCode (0) +#define max_val_DangerousEndOfQueueSubCauseCode (255) +#define min_val_DangerousSituationSubCauseCode (0) +#define max_val_DangerousSituationSubCauseCode (255) +#define min_val_DeltaAltitude (-12700) +#define max_val_DeltaAltitude (12800) +#define min_val_DeltaLatitude (-131071) +#define max_val_DeltaLatitude (131072) +#define min_val_DeltaLongitude (-131071) +#define max_val_DeltaLongitude (131072) +#define min_val_DeltaTimeMilliSecondPositive (1) +#define max_val_DeltaTimeMilliSecondPositive (10000) +#define min_val_DeltaTimeMilliSecondSigned (-2048) +#define max_val_DeltaTimeMilliSecondSigned (2047) +#define min_val_DeltaTimeQuarterSecond (1) +#define max_val_DeltaTimeQuarterSecond (255) +#define min_val_DeltaTimeTenthOfSecond (0) +#define max_val_DeltaTimeTenthOfSecond (127) +#define min_val_DeltaTimeSecond (0) +#define max_val_DeltaTimeSecond (86400) +#define min_val_Direction (0) +#define max_val_Direction (3) +#define min_val_EmergencyVehicleApproachingSubCauseCode (0) +#define max_val_EmergencyVehicleApproachingSubCauseCode (255) +#define min_val_GenerationDeltaTime (0) +#define max_val_GenerationDeltaTime (65535) +#define min_val_HazardousLocation_AnimalOnTheRoadSubCauseCode (0) +#define max_val_HazardousLocation_AnimalOnTheRoadSubCauseCode (255) +#define min_val_HazardousLocation_DangerousCurveSubCauseCode (0) +#define max_val_HazardousLocation_DangerousCurveSubCauseCode (255) +#define min_val_HazardousLocation_ObstacleOnTheRoadSubCauseCode (0) +#define max_val_HazardousLocation_ObstacleOnTheRoadSubCauseCode (255) +#define min_val_HazardousLocation_SurfaceConditionSubCauseCode (0) +#define max_val_HazardousLocation_SurfaceConditionSubCauseCode (255) +#define min_val_HeadingConfidence (1) +#define max_val_HeadingConfidence (127) +#define min_val_HeadingValue (0) +#define max_val_HeadingValue (3601) +#define min_val_HeightLonCarr (1) +#define max_val_HeightLonCarr (100) +#define min_val_HumanPresenceOnTheRoadSubCauseCode (0) +#define max_val_HumanPresenceOnTheRoadSubCauseCode (255) +#define min_val_HumanProblemSubCauseCode (0) +#define max_val_HumanProblemSubCauseCode (255) +#define min_val_Identifier1B (0) +#define max_val_Identifier1B (255) +#define min_val_Identifier2B (0) +#define max_val_Identifier2B (65535) +#define min_val_InformationQuality (0) +#define max_val_InformationQuality (7) +#define min_val_Iso3833VehicleType (0) +#define max_val_Iso3833VehicleType (255) +#define min_val_LanePosition (-1) +#define max_val_LanePosition (14) +#define min_val_LaneType (0) +#define max_val_LaneType (31) +#define min_val_LaneWidth (0) +#define max_val_LaneWidth (1023) +#define min_val_Latitude (-900000000) +#define max_val_Latitude (900000001) +#define min_val_LateralAccelerationValue (-160) +#define max_val_LateralAccelerationValue (161) +#define min_val_Longitude (-1800000000) +#define max_val_Longitude (1800000001) +#define min_val_LongitudinalAccelerationValue (-160) +#define max_val_LongitudinalAccelerationValue (161) +#define min_val_LongitudinalLanePositionValue (0) +#define max_val_LongitudinalLanePositionValue (32767) +#define min_val_LongitudinalLanePositionConfidence (0) +#define max_val_LongitudinalLanePositionConfidence (1023) +#define min_val_MessageId (0) +#define max_val_MessageId (255) +#define min_val_NumberOfOccupants (0) +#define max_val_NumberOfOccupants (127) +#define min_val_ObjectPerceptionQuality (0) +#define max_val_ObjectPerceptionQuality (15) +#define min_val_ObjectDimensionValue (1) +#define max_val_ObjectDimensionValue (256) +#define min_val_ObjectDimensionConfidence (1) +#define max_val_ObjectDimensionConfidence (32) +#define min_val_OrdinalNumber1B (0) +#define max_val_OrdinalNumber1B (255) +#define min_val_OrdinalNumber3b (1) +#define max_val_OrdinalNumber3b (8) +#define min_val_OtherSubClass (0) +#define max_val_OtherSubClass (255) +#define min_val_PerformanceClass (0) +#define max_val_PerformanceClass (7) +#define min_val_PosCentMass (1) +#define max_val_PosCentMass (63) +#define min_val_PosFrontAx (1) +#define max_val_PosFrontAx (20) +#define min_val_PosLonCarr (1) +#define max_val_PosLonCarr (127) +#define min_val_PosPillar (1) +#define max_val_PosPillar (30) +#define min_val_PostCrashSubCauseCode (0) +#define max_val_PostCrashSubCauseCode (255) +#define min_val_PrecipitationIntensity (1) +#define max_val_PrecipitationIntensity (2001) +#define min_val_ProtectedZoneId (0) +#define max_val_ProtectedZoneId (134217727) +#define min_val_PtActivationType (0) +#define max_val_PtActivationType (255) +#define min_val_RailwayLevelCrossingSubCauseCode (0) +#define max_val_RailwayLevelCrossingSubCauseCode (255) +#define min_val_RescueAndRecoveryWorkInProgressSubCauseCode (0) +#define max_val_RescueAndRecoveryWorkInProgressSubCauseCode (255) +#define min_val_RoadworksSubCauseCode (0) +#define max_val_RoadworksSubCauseCode (255) +#define min_val_SemiAxisLength (0) +#define max_val_SemiAxisLength (4095) +#define min_val_SensorType (0) +#define max_val_SensorType (31) +#define min_val_SequenceNumber (0) +#define max_val_SequenceNumber (65535) +#define min_val_SignalViolationSubCauseCode (0) +#define max_val_SignalViolationSubCauseCode (255) +#define min_val_SlowVehicleSubCauseCode (0) +#define max_val_SlowVehicleSubCauseCode (255) +#define min_val_SpeedConfidence (1) +#define max_val_SpeedConfidence (127) +#define min_val_SpeedLimit (1) +#define max_val_SpeedLimit (255) +#define min_val_SpeedValue (0) +#define max_val_SpeedValue (16383) +#define min_val_VelocityComponentValue (-16383) +#define max_val_VelocityComponentValue (16383) +#define min_val_StabilityLossProbability (0) +#define max_val_StabilityLossProbability (63) +#define min_val_StandardLength12b (0) +#define max_val_StandardLength12b (4095) +#define min_val_StandardLength9b (0) +#define max_val_StandardLength9b (511) +#define min_val_StandardLength1B (0) +#define max_val_StandardLength1B (255) +#define min_val_StandardLength2B (0) +#define max_val_StandardLength2B (65535) +#define min_val_StationaryVehicleSubCauseCode (0) +#define max_val_StationaryVehicleSubCauseCode (255) +#define min_val_StationId (0) +#define max_val_StationId (4294967295) +#define min_val_StationID (0) +#define max_val_StationID (4294967295) +#define min_val_StationType (0) +#define max_val_StationType (255) +#define min_val_SteeringWheelAngleConfidence (1) +#define max_val_SteeringWheelAngleConfidence (127) +#define min_val_SteeringWheelAngleValue (-511) +#define max_val_SteeringWheelAngleValue (512) +#define min_val_SubCauseCodeType (0) +#define max_val_SubCauseCodeType (255) +#define min_val_Temperature (-60) +#define max_val_Temperature (67) +#define min_val_TimestampIts (0) +#define max_val_TimestampIts (4398046511103) +#define min_val_TrafficConditionSubCauseCode (0) +#define max_val_TrafficConditionSubCauseCode (255) +#define min_val_TrafficParticipantType (0) +#define max_val_TrafficParticipantType (255) +#define min_val_TrajectoryInterceptionProbability (0) +#define max_val_TrajectoryInterceptionProbability (63) +#define min_val_TrajectoryInterceptionConfidence (0) +#define max_val_TrajectoryInterceptionConfidence (3) +#define min_val_TransmissionInterval (1) +#define max_val_TransmissionInterval (10000) +#define min_val_TurningRadius (1) +#define max_val_TurningRadius (255) +#define min_val_ValidityDuration (0) +#define max_val_ValidityDuration (86400) +#define min_val_VehicleBreakdownSubCauseCode (0) +#define max_val_VehicleBreakdownSubCauseCode (255) +#define min_val_VehicleHeight (1) +#define max_val_VehicleHeight (128) +#define min_val_VehicleLengthValue (1) +#define max_val_VehicleLengthValue (1023) +#define min_val_VehicleMass (1) +#define max_val_VehicleMass (1024) +#define min_val_VehicleWidth (1) +#define max_val_VehicleWidth (62) +#define min_val_VerticalAccelerationValue (-160) +#define max_val_VerticalAccelerationValue (161) +#define min_val_WheelBaseVehicle (1) +#define max_val_WheelBaseVehicle (127) +#define min_val_Wgs84AngleConfidence (1) +#define max_val_Wgs84AngleConfidence (127) +#define min_val_Wgs84AngleValue (0) +#define max_val_Wgs84AngleValue (3601) +#define min_val_WrongWayDrivingSubCauseCode (0) +#define max_val_WrongWayDrivingSubCauseCode (255) +#define min_val_YawRateValue (-32766) +#define max_val_YawRateValue (32767) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_internal.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_internal.h new file mode 100644 index 000000000..9bac59cba --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_internal.h @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ /* for Sun */ +#endif + +#include "etsi_its_cpm_coding/asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#include +#include +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +#ifndef ASN_INTERNAL_C +extern +#endif +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ + +/* Since GCC 13, AddressSanitizer started defaulting to +* ASAN_OPTIONS="detect_stack_use_after_return=1", which makes this check +* fail due to apparently jumping stack pointers. +* Hence, disable this check if building with ASan, as documented in: +* GCC: https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html +* Clang: https://clang.llvm.org/docs/AddressSanitizer.html#conditional-compilation-with-has-feature-address-sanitizer +*/ +#if defined(__SANITIZE_ADDRESS__) + #define ASN__SANITIZE_ENABLED 1 +#elif defined(__has_feature) +#if __has_feature(address_sanitizer) + #define ASN__SANITIZE_ENABLED 1 +#endif +#endif + +#define ASN__DEFAULT_STACK_MAX (30000) + +#if defined(ASN__SANITIZE_ENABLED) || defined(ASN_DISABLE_STACK_OVERFLOW_CHECK) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + (void)ctx; + return 0; +} +#else +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_ioc.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_ioc.h new file mode 100644 index 000000000..75e41c84f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_random_fill.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_random_fill.h new file mode 100644 index 000000000..47f9b8af0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_system.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_system.h new file mode 100644 index 000000000..43f7821c5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/asn_system.h @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ +#include /* for PRIdMAX */ + +#ifdef _WIN32 + +#include +#ifndef __MINGW32__ +#define snprintf _snprintf +#define vsnprintf _vsnprintf +#endif + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#ifndef inline +#define inline __inline +#endif +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#ifndef isnan +#define isnan _isnan +#endif +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#define random rand +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#ifdef HAVE_NETINET_IN_H +#include /* for ntohl() */ +#endif +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#if defined(__GNUC__) && ((__GNUC__ == 4 && __GNUC_MINOR__>= 4) || __GNUC__ > 4) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(gnu_printf, fmt, var)) +#elif defined(__GNUC__) +#if defined(ANDROID) +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(__format__(__printf__, fmt, var)) +#else +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#endif +#else +#define CC_PRINTFLIKE(fmt, var) +#endif +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#if __GNUC__ < 8 +#define CC_ATTR_NO_SANITIZE(what) +#else +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#if _MSC_VER >= 1800 +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#endif +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_decoder.h new file mode 100644 index 000000000..a9df55cc0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_length.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_length.h new file mode 100644 index 000000000..d1e4d48dd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_tag.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_tag.h new file mode 100644 index 000000000..ce227add6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_CHOICE.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_CHOICE.h new file mode 100644 index 000000000..488b17ef8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_CHOICE.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f CHOICE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f CHOICE_compare; + +asn_constr_check_f CHOICE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f CHOICE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f CHOICE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +asn_outmost_tag_f CHOICE_outmost_tag; + +extern asn_TYPE_operation_t asn_OP_CHOICE; + +unsigned _fetch_present_idx( + const void *struct_ptr, + unsigned off, + unsigned size); + +void _set_present_idx( + void *sptr, + unsigned offset, + unsigned size, + unsigned present); + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE.h new file mode 100644 index 000000000..2d237d036 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE.h @@ -0,0 +1,95 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SEQUENCE_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_compare; + +asn_constr_check_f SEQUENCE_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SEQUENCE_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE_OF.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE_OF.h new file mode 100644 index 000000000..354c00470 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SEQUENCE_OF.h @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +#define SEQUENCE_OF_free SET_OF_free + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +#define SEQUENCE_OF_print SET_OF_print +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SEQUENCE_OF_compare; + +#define SEQUENCE_OF_constraint SET_OF_constraint + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +der_type_encoder_f SEQUENCE_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +xer_type_encoder_f SEQUENCE_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SEQUENCE_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +per_type_encoder_f SEQUENCE_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +per_type_encoder_f SEQUENCE_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#define SEQUENCE_OF_random_fill SET_OF_random_fill +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SET_OF.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SET_OF.h new file mode 100644 index 000000000..7af2d3c82 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_SET_OF.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; + +#if !defined(ASN_DISABLE_PRINT_SUPPORT) +asn_struct_print_f SET_OF_print; +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + +asn_struct_compare_f SET_OF_compare; + +asn_constr_check_f SET_OF_constraint; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +jer_type_encoder_f SET_OF_encode_jer; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +asn_random_fill_f SET_OF_random_fill; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +extern asn_TYPE_operation_t asn_OP_SET_OF; + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER, /* Canonical Unaligned Packed Encoding Rules */ + SOES_CAPER /* Canonical Aligned Packed Encoding Rules */ +}; + +struct _el_buffer * SET_OF__encode_sorted( + const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method); + +void SET_OF__encode_sorted_free( + struct _el_buffer *el_buf, + size_t count); + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_TYPE.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_TYPE.h new file mode 100644 index 000000000..d6661ec8e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constr_TYPE.h @@ -0,0 +1,296 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ + char* start; +} asn_struct_ctx_t; + +#if !defined(ASN_DISABLE_BER_SUPPORT) +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#else +typedef void (ber_type_decoder_f)(void); +typedef void (der_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#else +typedef void (xer_type_decoder_f)(void); +typedef void (xer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) +#include /* Encoder into JER (JSON, text) */ +#else +typedef void (jer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#else +typedef void (per_type_decoder_f)(void); +typedef void (per_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + +#include /* Subtype constraints support */ + +#if !defined(ASN_DISABLE_RFILL_SUPPORT) +#include /* Random structures support */ +#else +typedef void (asn_random_fill_f)(void); +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#else +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + jer_type_encoder_f *jer_encoder; /* Generic JER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { +#if !defined(ASN_DISABLE_OER_SUPPORT) + const struct asn_oer_constraints_s *oer_constraints; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const struct asn_per_constraints_s *per_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurrence of the el_tag, relative */ + int toff_last; /* Last occurrence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constraints.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constraints.h new file mode 100644 index 000000000..ae6e1f5c2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/constraints.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/der_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/der_encoder.h new file mode 100644 index 000000000..b81236eb0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/jer_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/jer_encoder.h new file mode 100644 index 000000000..847cf0f5e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/jer_encoder.h @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _JER_ENCODER_H_ +#define _JER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the jer_encode() and (*jer_type_encoder_f), defined below + * + * This isn't actually used, it might be used in the future to support + * both normal JSON and prettified JSON output or removed. + * It came from XER + */ +enum jer_encoder_flags_e { + /* Mode of encoding */ + JER_F = 0x01, /* JER (pretty-printing) */ +}; + +/* + * The JER encoder of any type. May be invoked by the application. + * Produces JER output. + */ +asn_enc_rval_t jer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the JER + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int jer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses JER encoding/decoding to verify that: + * - Both structures encode into the same JER. + * - Both resulting JER byte streams can be decoded back. + * - Both decoded structures encode into the same JER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum jer_equivalence_e { + JEQ_SUCCESS, /* The only completely positive return value */ + JEQ_FAILURE, /* General failure */ + JEQ_ENCODE1_FAILED, /* First structure JER encoding failed */ + JEQ_ENCODE2_FAILED, /* Second structure JER encoding failed */ + JEQ_DIFFERENT, /* Structures encoded into different JER */ + JEQ_DECODE_FAILED, /* Decode of the JER data failed */ + JEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum jer_equivalence_e jer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic JER encoder. + */ +typedef asn_enc_rval_t(jer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum jer_encoder_flags_e jer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _JER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_decoder.h new file mode 100644 index 000000000..6155d177e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_decoder.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_DECODER_H +#define OER_DECODER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type. + * This function may be invoked directly by the application. + * Parses CANONICAL-OER and BASIC-OER. + */ +asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ + ); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(oer_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + void **struct_ptr, + const void *buf_ptr, + size_t size); + +/* + * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null. + * RETURN VALUES: + * -1: Fatal error deciphering length. + * 0: More data expected than bufptr contains. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_skip(const void *bufptr, size_t size); + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + void **struct_ptr, const void *bufptr, size_t size); + +/* + * Length-prefixed buffer decoding for primitive types. + */ +oer_type_decoder_f oer_decode_primitive; + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_DECODER_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_encoder.h new file mode 100644 index 000000000..ec139f113 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_encoder.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_ENCODER_H +#define OER_ENCODER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. + * This function may be invoked directly by the application. + * Produces CANONICAL-OER output compatible with CANONICAL-OER + * and BASIC-OER decoders. + */ +asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of oer_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t oer_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic OER encoder. + */ +typedef asn_enc_rval_t(oer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * Write out the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * -1: Fatal error encoding the type. + * >0: Number of bytes serialized. + */ +ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + + +/* + * Length-prefixed buffer encoding for primitive types. + */ +oer_type_encoder_f oer_encode_primitive; + +#ifdef __cplusplus +} +#endif + +#endif /* OER_ENCODER_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_support.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_support.h new file mode 100644 index 000000000..67a72cdfe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/oer_support.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_SUPPORT_H +#define OER_SUPPORT_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed OER constraints. + */ +typedef struct asn_oer_constraint_number_s { + unsigned width; /* ±8,4,2,1 fixed bytes */ + unsigned positive; /* 1 for unsigned number, 0 for signed */ +} asn_oer_constraint_number_t; +typedef struct asn_oer_constraints_s { + asn_oer_constraint_number_t value; + ssize_t size; /* -1 (no constraint) or >= 0 */ +} asn_oer_constraints_t; + + +/* + * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r); + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key); + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_SUPPORT_H */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_decoder.h new file mode 100644 index 000000000..52d03b761 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_decoder.h @@ -0,0 +1,30 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_encoder.h new file mode 100644 index 000000000..ab33b504e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_encoder.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +int ignore_output(const void *data, size_t size, void *app_key); + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +int encode_dyn_cb(const void *buffer, size_t size, void *key); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_opentype.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_opentype.h new file mode 100644 index 000000000..565b9e3a1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_opentype.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_sot_suck( + const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_support.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_support.h new file mode 100644 index 000000000..d97fa50dc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/per_support.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + intmax_t lower_bound; /* "lb" value */ + intmax_t upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_decoder.h new file mode 100644 index 000000000..6591c4405 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_decoder.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_DECODER_H_ +#define _UPER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_DECODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_encoder.h new file mode 100644 index 000000000..1f6e95616 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_encoder.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_ENCODER_H_ +#define _UPER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_opentype.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_opentype.h new file mode 100644 index 000000000..eea673040 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_opentype.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_OPENTYPE_H_ +#define _UPER_OPENTYPE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_OPENTYPE_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_support.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_support.h new file mode 100644 index 000000000..ba6c39597 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/uper_support.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _UPER_SUPPORT_H_ +#define _UPER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *v, int nbits); + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long, intmax_t lb, intmax_t ub, unsigned long *output); +int per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp); +int per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +#ifdef __cplusplus +} +#endif + +#endif /* _UPER_SUPPORT_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_decoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_decoder.h new file mode 100644 index 000000000..3c69ce391 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_encoder.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_encoder.h new file mode 100644 index 000000000..6ab25c54b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First structure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_support.h b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_support.h new file mode 100644 index 000000000..29429f88a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/include/etsi_its_cpm_coding/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaningful data is found. + * This function returns number of bytes consumed from the buffer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/package.xml b/etsi_its_coding/etsi_its_cpm_coding/package.xml new file mode 100644 index 000000000..d73659e05 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/package.xml @@ -0,0 +1,28 @@ + + + + etsi_its_cpm_coding + 2.0.2 + C++ compatible C source code for ETSI ITS CPMs generated from ASN.1 using asn1c + + Jean-Pierre Busch + Guido Küppers + Lennart Reiher + + Jean-Pierre Busch + Guido Küppers + Lennart Reiher + + MIT + + ros_environment + + catkin + ament_cmake + + + catkin + ament_cmake + + + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY.c new file mode 100644 index 000000000..9ee5b3d25 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + ANY_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + ANY_decode_uper, + ANY_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + ANY_decode_aper, + ANY_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_aper.c new file mode 100644 index 000000000..1e9820365 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_aper.c @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = aper_put_length(po, -1, -1, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && aper_put_length(po, -1, -1, 0, NULL)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_ber.c new file mode 100644 index 000000000..a6cf416b3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_ber.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_jer.c new file mode 100644 index 000000000..0251038bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_jer.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +ANY_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + ASN__ENCODE_FAILED; + + /* Dump as binary */ + return OCTET_STRING_encode_jer(td, sptr, ilevel, flags, cb, app_key); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_uper.c new file mode 100644 index 000000000..797339416 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_uper.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ANY_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_xer.c new file mode 100644 index 000000000..1d56614ef --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ANY_xer.c @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Acceleration3dWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/Acceleration3dWithConfidence.c new file mode 100644 index 000000000..e0dd36540 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Acceleration3dWithConfidence.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Acceleration3dWithConfidence.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Acceleration3dWithConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Acceleration3dWithConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Acceleration3dWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Acceleration3dWithConfidence, choice.polarAcceleration), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationPolarWithZ, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "polarAcceleration" + }, + { ATF_NOFLAGS, 0, offsetof(struct Acceleration3dWithConfidence, choice.cartesianAcceleration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationCartesian, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cartesianAcceleration" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Acceleration3dWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* polarAcceleration */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cartesianAcceleration */ +}; +asn_CHOICE_specifics_t asn_SPC_Acceleration3dWithConfidence_specs_1 = { + sizeof(struct Acceleration3dWithConfidence), + offsetof(struct Acceleration3dWithConfidence, _asn_ctx), + offsetof(struct Acceleration3dWithConfidence, present), + sizeof(((struct Acceleration3dWithConfidence *)0)->present), + asn_MAP_Acceleration3dWithConfidence_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Acceleration3dWithConfidence = { + "Acceleration3dWithConfidence", + "Acceleration3dWithConfidence", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Acceleration3dWithConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Acceleration3dWithConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Acceleration3dWithConfidence_1, + 2, /* Elements count */ + &asn_SPC_Acceleration3dWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationCartesian.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationCartesian.c new file mode 100644 index 000000000..22c50943e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationCartesian.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationCartesian.h" + +asn_TYPE_member_t asn_MBR_AccelerationCartesian_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationCartesian, xAcceleration), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xAcceleration" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationCartesian, yAcceleration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yAcceleration" + }, + { ATF_POINTER, 1, offsetof(struct AccelerationCartesian, zAcceleration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zAcceleration" + }, +}; +static const int asn_MAP_AccelerationCartesian_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_AccelerationCartesian_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationCartesian_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xAcceleration */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yAcceleration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zAcceleration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelerationCartesian_specs_1 = { + sizeof(struct AccelerationCartesian), + offsetof(struct AccelerationCartesian, _asn_ctx), + asn_MAP_AccelerationCartesian_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_AccelerationCartesian_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationCartesian = { + "AccelerationCartesian", + "AccelerationCartesian", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationCartesian_tags_1, + sizeof(asn_DEF_AccelerationCartesian_tags_1) + /sizeof(asn_DEF_AccelerationCartesian_tags_1[0]), /* 1 */ + asn_DEF_AccelerationCartesian_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationCartesian_tags_1) + /sizeof(asn_DEF_AccelerationCartesian_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationCartesian_1, + 3, /* Elements count */ + &asn_SPC_AccelerationCartesian_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChange.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChange.c new file mode 100644 index 000000000..44b34a738 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChange.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationChange.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationChange_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccelerationChange_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AccelerationChange_value2enum_1[] = { + { 0, 10, "accelerate" }, + { 1, 10, "decelerate" } +}; +static const unsigned int asn_MAP_AccelerationChange_enum2value_1[] = { + 0, /* accelerate(0) */ + 1 /* decelerate(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AccelerationChange_specs_1 = { + asn_MAP_AccelerationChange_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AccelerationChange_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AccelerationChange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationChange = { + "AccelerationChange", + "AccelerationChange", + &asn_OP_NativeEnumerated, + asn_DEF_AccelerationChange_tags_1, + sizeof(asn_DEF_AccelerationChange_tags_1) + /sizeof(asn_DEF_AccelerationChange_tags_1[0]), /* 1 */ + asn_DEF_AccelerationChange_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationChange_tags_1) + /sizeof(asn_DEF_AccelerationChange_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationChange_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationChange_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AccelerationChange_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChangeIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChangeIndication.c new file mode 100644 index 000000000..03db736c1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationChangeIndication.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationChangeIndication.h" + +static asn_TYPE_member_t asn_MBR_AccelerationChangeIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationChangeIndication, accelOrDecel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationChange, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelOrDecel" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationChangeIndication, actionDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeTenthOfSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDeltaTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_AccelerationChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationChangeIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accelOrDecel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDeltaTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_AccelerationChangeIndication_specs_1 = { + sizeof(struct AccelerationChangeIndication), + offsetof(struct AccelerationChangeIndication, _asn_ctx), + asn_MAP_AccelerationChangeIndication_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationChangeIndication = { + "AccelerationChangeIndication", + "AccelerationChangeIndication", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationChangeIndication_tags_1, + sizeof(asn_DEF_AccelerationChangeIndication_tags_1) + /sizeof(asn_DEF_AccelerationChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_AccelerationChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationChangeIndication_tags_1) + /sizeof(asn_DEF_AccelerationChangeIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationChangeIndication_1, + 2, /* Elements count */ + &asn_SPC_AccelerationChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationComponent.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationComponent.c new file mode 100644 index 000000000..52f7c6fd4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationComponent.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationComponent.h" + +asn_TYPE_member_t asn_MBR_AccelerationComponent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationComponent, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationComponent, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_AccelerationComponent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationComponent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelerationComponent_specs_1 = { + sizeof(struct AccelerationComponent), + offsetof(struct AccelerationComponent, _asn_ctx), + asn_MAP_AccelerationComponent_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationComponent = { + "AccelerationComponent", + "AccelerationComponent", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationComponent_tags_1, + sizeof(asn_DEF_AccelerationComponent_tags_1) + /sizeof(asn_DEF_AccelerationComponent_tags_1[0]), /* 1 */ + asn_DEF_AccelerationComponent_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationComponent_tags_1) + /sizeof(asn_DEF_AccelerationComponent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationComponent_1, + 2, /* Elements count */ + &asn_SPC_AccelerationComponent_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationConfidence.c new file mode 100644 index 000000000..0ef6fcd93 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationConfidence.h" + +int +AccelerationConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 102)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..102) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccelerationConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 102 } /* (0..102) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AccelerationConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationConfidence = { + "AccelerationConfidence", + "AccelerationConfidence", + &asn_OP_NativeInteger, + asn_DEF_AccelerationConfidence_tags_1, + sizeof(asn_DEF_AccelerationConfidence_tags_1) + /sizeof(asn_DEF_AccelerationConfidence_tags_1[0]), /* 1 */ + asn_DEF_AccelerationConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationConfidence_tags_1) + /sizeof(asn_DEF_AccelerationConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AccelerationConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationControl.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationControl.c new file mode 100644 index 000000000..3facd2daa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationControl.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationControl.h" + +int +AccelerationControl_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationControl_constr_1 CC_NOTUSED = { + { 0, 0 }, + 7 /* (SIZE(7..7)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_AccelerationControl_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AccelerationControl_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationControl = { + "AccelerationControl", + "AccelerationControl", + &asn_OP_BIT_STRING, + asn_DEF_AccelerationControl_tags_1, + sizeof(asn_DEF_AccelerationControl_tags_1) + /sizeof(asn_DEF_AccelerationControl_tags_1[0]), /* 1 */ + asn_DEF_AccelerationControl_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationControl_tags_1) + /sizeof(asn_DEF_AccelerationControl_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationControl_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationControl_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AccelerationControl_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitude.c new file mode 100644 index 000000000..63211773d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitude.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationMagnitude.h" + +asn_TYPE_member_t asn_MBR_AccelerationMagnitude_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationMagnitude, accelerationMagnitudeValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationMagnitudeValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelerationMagnitudeValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationMagnitude, accelerationConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelerationConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_AccelerationMagnitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationMagnitude_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accelerationMagnitudeValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* accelerationConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelerationMagnitude_specs_1 = { + sizeof(struct AccelerationMagnitude), + offsetof(struct AccelerationMagnitude, _asn_ctx), + asn_MAP_AccelerationMagnitude_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationMagnitude = { + "AccelerationMagnitude", + "AccelerationMagnitude", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationMagnitude_tags_1, + sizeof(asn_DEF_AccelerationMagnitude_tags_1) + /sizeof(asn_DEF_AccelerationMagnitude_tags_1[0]), /* 1 */ + asn_DEF_AccelerationMagnitude_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationMagnitude_tags_1) + /sizeof(asn_DEF_AccelerationMagnitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationMagnitude_1, + 2, /* Elements count */ + &asn_SPC_AccelerationMagnitude_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitudeValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitudeValue.c new file mode 100644 index 000000000..dd76add8d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationMagnitudeValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationMagnitudeValue.h" + +int +AccelerationMagnitudeValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 161)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationMagnitudeValue_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..161) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccelerationMagnitudeValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 161 } /* (0..161) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AccelerationMagnitudeValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationMagnitudeValue = { + "AccelerationMagnitudeValue", + "AccelerationMagnitudeValue", + &asn_OP_NativeInteger, + asn_DEF_AccelerationMagnitudeValue_tags_1, + sizeof(asn_DEF_AccelerationMagnitudeValue_tags_1) + /sizeof(asn_DEF_AccelerationMagnitudeValue_tags_1[0]), /* 1 */ + asn_DEF_AccelerationMagnitudeValue_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationMagnitudeValue_tags_1) + /sizeof(asn_DEF_AccelerationMagnitudeValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationMagnitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationMagnitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AccelerationMagnitudeValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationPolarWithZ.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationPolarWithZ.c new file mode 100644 index 000000000..d1b169fc2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationPolarWithZ.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationPolarWithZ.h" + +asn_TYPE_member_t asn_MBR_AccelerationPolarWithZ_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AccelerationPolarWithZ, accelerationMagnitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationMagnitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelerationMagnitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct AccelerationPolarWithZ, accelerationDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accelerationDirection" + }, + { ATF_POINTER, 1, offsetof(struct AccelerationPolarWithZ, zAcceleration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zAcceleration" + }, +}; +static const int asn_MAP_AccelerationPolarWithZ_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_AccelerationPolarWithZ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AccelerationPolarWithZ_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accelerationMagnitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* accelerationDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zAcceleration */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AccelerationPolarWithZ_specs_1 = { + sizeof(struct AccelerationPolarWithZ), + offsetof(struct AccelerationPolarWithZ, _asn_ctx), + asn_MAP_AccelerationPolarWithZ_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_AccelerationPolarWithZ_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationPolarWithZ = { + "AccelerationPolarWithZ", + "AccelerationPolarWithZ", + &asn_OP_SEQUENCE, + asn_DEF_AccelerationPolarWithZ_tags_1, + sizeof(asn_DEF_AccelerationPolarWithZ_tags_1) + /sizeof(asn_DEF_AccelerationPolarWithZ_tags_1[0]), /* 1 */ + asn_DEF_AccelerationPolarWithZ_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationPolarWithZ_tags_1) + /sizeof(asn_DEF_AccelerationPolarWithZ_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_AccelerationPolarWithZ_1, + 3, /* Elements count */ + &asn_SPC_AccelerationPolarWithZ_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationValue.c new file mode 100644 index 000000000..2ec782cd5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccelerationValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccelerationValue.h" + +int +AccelerationValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -160 && value <= 161)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccelerationValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-160..161) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccelerationValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -160, 161 } /* (-160..161) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AccelerationValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccelerationValue = { + "AccelerationValue", + "AccelerationValue", + &asn_OP_NativeInteger, + asn_DEF_AccelerationValue_tags_1, + sizeof(asn_DEF_AccelerationValue_tags_1) + /sizeof(asn_DEF_AccelerationValue_tags_1[0]), /* 1 */ + asn_DEF_AccelerationValue_tags_1, /* Same as above */ + sizeof(asn_DEF_AccelerationValue_tags_1) + /sizeof(asn_DEF_AccelerationValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AccelerationValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccessTechnologyClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccessTechnologyClass.c new file mode 100644 index 000000000..00b37b204 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccessTechnologyClass.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccessTechnologyClass.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccessTechnologyClass_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccessTechnologyClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AccessTechnologyClass_value2enum_1[] = { + { 0, 3, "any" }, + { 1, 10, "itsg5Class" }, + { 2, 11, "ltev2xClass" }, + { 3, 10, "nrv2xClass" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AccessTechnologyClass_enum2value_1[] = { + 0, /* any(0) */ + 1, /* itsg5Class(1) */ + 2, /* ltev2xClass(2) */ + 3 /* nrv2xClass(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AccessTechnologyClass_specs_1 = { + asn_MAP_AccessTechnologyClass_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AccessTechnologyClass_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AccessTechnologyClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccessTechnologyClass = { + "AccessTechnologyClass", + "AccessTechnologyClass", + &asn_OP_NativeEnumerated, + asn_DEF_AccessTechnologyClass_tags_1, + sizeof(asn_DEF_AccessTechnologyClass_tags_1) + /sizeof(asn_DEF_AccessTechnologyClass_tags_1[0]), /* 1 */ + asn_DEF_AccessTechnologyClass_tags_1, /* Same as above */ + sizeof(asn_DEF_AccessTechnologyClass_tags_1) + /sizeof(asn_DEF_AccessTechnologyClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccessTechnologyClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccessTechnologyClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AccessTechnologyClass_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AccidentSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/AccidentSubCauseCode.c new file mode 100644 index 000000000..ded2a5722 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AccidentSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AccidentSubCauseCode.h" + +int +AccidentSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AccidentSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AccidentSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AccidentSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AccidentSubCauseCode = { + "AccidentSubCauseCode", + "AccidentSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_AccidentSubCauseCode_tags_1, + sizeof(asn_DEF_AccidentSubCauseCode_tags_1) + /sizeof(asn_DEF_AccidentSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_AccidentSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_AccidentSubCauseCode_tags_1) + /sizeof(asn_DEF_AccidentSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AccidentSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AccidentSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AccidentSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ActionID.c b/etsi_its_coding/etsi_its_cpm_coding/src/ActionID.c new file mode 100644 index 000000000..66dc3e4f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ActionID.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ActionID.h" + +static asn_TYPE_member_t asn_MBR_ActionID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionID, originatingStationId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationID, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "originatingStationId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionID, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SequenceNumber, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* originatingStationId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sequenceNumber */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ActionID_specs_1 = { + sizeof(struct ActionID), + offsetof(struct ActionID, _asn_ctx), + asn_MAP_ActionID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionID = { + "ActionID", + "ActionID", + &asn_OP_SEQUENCE, + asn_DEF_ActionID_tags_1, + sizeof(asn_DEF_ActionID_tags_1) + /sizeof(asn_DEF_ActionID_tags_1[0]), /* 1 */ + asn_DEF_ActionID_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionID_tags_1) + /sizeof(asn_DEF_ActionID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ActionID_1, + 2, /* Elements count */ + &asn_SPC_ActionID_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ActionId.c b/etsi_its_coding/etsi_its_cpm_coding/src/ActionId.c new file mode 100644 index 000000000..a09d41add --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ActionId.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ActionId.h" + +asn_TYPE_member_t asn_MBR_ActionId_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionId, originatingStationId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "originatingStationId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionId, sequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SequenceNumber, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sequenceNumber" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActionId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionId_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* originatingStationId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sequenceNumber */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActionId_specs_1 = { + sizeof(struct ActionId), + offsetof(struct ActionId, _asn_ctx), + asn_MAP_ActionId_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionId = { + "ActionId", + "ActionId", + &asn_OP_SEQUENCE, + asn_DEF_ActionId_tags_1, + sizeof(asn_DEF_ActionId_tags_1) + /sizeof(asn_DEF_ActionId_tags_1[0]), /* 1 */ + asn_DEF_ActionId_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionId_tags_1) + /sizeof(asn_DEF_ActionId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ActionId_1, + 2, /* Elements count */ + &asn_SPC_ActionId_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ActionIdList.c b/etsi_its_coding/etsi_its_cpm_coding/src/ActionIdList.c new file mode 100644 index 000000000..2e996d999 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ActionIdList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ActionIdList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ActionIdList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ActionIdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (SIZE(1..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ActionIdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActionId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActionIdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ActionIdList_specs_1 = { + sizeof(struct ActionIdList), + offsetof(struct ActionIdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionIdList = { + "ActionIdList", + "ActionIdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ActionIdList_tags_1, + sizeof(asn_DEF_ActionIdList_tags_1) + /sizeof(asn_DEF_ActionIdList_tags_1[0]), /* 1 */ + asn_DEF_ActionIdList_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionIdList_tags_1) + /sizeof(asn_DEF_ActionIdList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ActionIdList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ActionIdList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ActionIdList_1, + 1, /* Single element */ + &asn_SPC_ActionIdList_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-AdhesionSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-AdhesionSubCauseCode.c new file mode 100644 index 000000000..3c46ba932 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-AdhesionSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AdverseWeatherCondition-AdhesionSubCauseCode.h" + +int +AdverseWeatherCondition_AdhesionSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdverseWeatherCondition_AdhesionSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_AdhesionSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode = { + "AdverseWeatherCondition-AdhesionSubCauseCode", + "AdverseWeatherCondition-AdhesionSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1, + sizeof(asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdverseWeatherCondition_AdhesionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdverseWeatherCondition_AdhesionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AdverseWeatherCondition_AdhesionSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.c new file mode 100644 index 000000000..cd06e1d36 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode.h" + +int +AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode = { + "AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode", + "AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1, + sizeof(asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-PrecipitationSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-PrecipitationSubCauseCode.c new file mode 100644 index 000000000..b5bb3a015 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-PrecipitationSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AdverseWeatherCondition-PrecipitationSubCauseCode.h" + +int +AdverseWeatherCondition_PrecipitationSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdverseWeatherCondition_PrecipitationSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_PrecipitationSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode = { + "AdverseWeatherCondition-PrecipitationSubCauseCode", + "AdverseWeatherCondition-PrecipitationSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1, + sizeof(asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdverseWeatherCondition_PrecipitationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdverseWeatherCondition_PrecipitationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AdverseWeatherCondition_PrecipitationSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-VisibilitySubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-VisibilitySubCauseCode.c new file mode 100644 index 000000000..49f1673f5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AdverseWeatherCondition-VisibilitySubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AdverseWeatherCondition-VisibilitySubCauseCode.h" + +int +AdverseWeatherCondition_VisibilitySubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AdverseWeatherCondition_VisibilitySubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AdverseWeatherCondition_VisibilitySubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode = { + "AdverseWeatherCondition-VisibilitySubCauseCode", + "AdverseWeatherCondition-VisibilitySubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1, + sizeof(asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1) + /sizeof(asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AdverseWeatherCondition_VisibilitySubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AdverseWeatherCondition_VisibilitySubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AdverseWeatherCondition_VisibilitySubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AirHumidity.c b/etsi_its_coding/etsi_its_cpm_coding/src/AirHumidity.c new file mode 100644 index 000000000..0b578707a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AirHumidity.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AirHumidity.h" + +int +AirHumidity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AirHumidity_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..1001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_AirHumidity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 1, 1001 } /* (1..1001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AirHumidity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AirHumidity = { + "AirHumidity", + "AirHumidity", + &asn_OP_NativeInteger, + asn_DEF_AirHumidity_tags_1, + sizeof(asn_DEF_AirHumidity_tags_1) + /sizeof(asn_DEF_AirHumidity_tags_1[0]), /* 1 */ + asn_DEF_AirHumidity_tags_1, /* Same as above */ + sizeof(asn_DEF_AirHumidity_tags_1) + /sizeof(asn_DEF_AirHumidity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AirHumidity_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AirHumidity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AirHumidity_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Altitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/Altitude.c new file mode 100644 index 000000000..6897d7670 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Altitude.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Altitude.h" + +asn_TYPE_member_t asn_MBR_Altitude_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Altitude, altitudeValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "altitudeValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct Altitude, altitudeConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "altitudeConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Altitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Altitude_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* altitudeValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* altitudeConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Altitude_specs_1 = { + sizeof(struct Altitude), + offsetof(struct Altitude, _asn_ctx), + asn_MAP_Altitude_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Altitude = { + "Altitude", + "Altitude", + &asn_OP_SEQUENCE, + asn_DEF_Altitude_tags_1, + sizeof(asn_DEF_Altitude_tags_1) + /sizeof(asn_DEF_Altitude_tags_1[0]), /* 1 */ + asn_DEF_Altitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Altitude_tags_1) + /sizeof(asn_DEF_Altitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Altitude_1, + 2, /* Elements count */ + &asn_SPC_Altitude_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeConfidence.c new file mode 100644 index 000000000..b56be5a83 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeConfidence.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AltitudeConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AltitudeConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AltitudeConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AltitudeConfidence_value2enum_1[] = { + { 0, 10, "alt-000-01" }, + { 1, 10, "alt-000-02" }, + { 2, 10, "alt-000-05" }, + { 3, 10, "alt-000-10" }, + { 4, 10, "alt-000-20" }, + { 5, 10, "alt-000-50" }, + { 6, 10, "alt-001-00" }, + { 7, 10, "alt-002-00" }, + { 8, 10, "alt-005-00" }, + { 9, 10, "alt-010-00" }, + { 10, 10, "alt-020-00" }, + { 11, 10, "alt-050-00" }, + { 12, 10, "alt-100-00" }, + { 13, 10, "alt-200-00" }, + { 14, 10, "outOfRange" }, + { 15, 11, "unavailable" } +}; +static const unsigned int asn_MAP_AltitudeConfidence_enum2value_1[] = { + 0, /* alt-000-01(0) */ + 1, /* alt-000-02(1) */ + 2, /* alt-000-05(2) */ + 3, /* alt-000-10(3) */ + 4, /* alt-000-20(4) */ + 5, /* alt-000-50(5) */ + 6, /* alt-001-00(6) */ + 7, /* alt-002-00(7) */ + 8, /* alt-005-00(8) */ + 9, /* alt-010-00(9) */ + 10, /* alt-020-00(10) */ + 11, /* alt-050-00(11) */ + 12, /* alt-100-00(12) */ + 13, /* alt-200-00(13) */ + 14, /* outOfRange(14) */ + 15 /* unavailable(15) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AltitudeConfidence_specs_1 = { + asn_MAP_AltitudeConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AltitudeConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AltitudeConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AltitudeConfidence = { + "AltitudeConfidence", + "AltitudeConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_AltitudeConfidence_tags_1, + sizeof(asn_DEF_AltitudeConfidence_tags_1) + /sizeof(asn_DEF_AltitudeConfidence_tags_1[0]), /* 1 */ + asn_DEF_AltitudeConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AltitudeConfidence_tags_1) + /sizeof(asn_DEF_AltitudeConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AltitudeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AltitudeConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AltitudeConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeValue.c new file mode 100644 index 000000000..37c6a14c0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AltitudeValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AltitudeValue.h" + +int +AltitudeValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -100000 && value <= 800001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AltitudeValue_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-100000..800001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AltitudeValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, -100000, 800001 } /* (-100000..800001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AltitudeValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AltitudeValue = { + "AltitudeValue", + "AltitudeValue", + &asn_OP_NativeInteger, + asn_DEF_AltitudeValue_tags_1, + sizeof(asn_DEF_AltitudeValue_tags_1) + /sizeof(asn_DEF_AltitudeValue_tags_1[0]), /* 1 */ + asn_DEF_AltitudeValue_tags_1, /* Same as above */ + sizeof(asn_DEF_AltitudeValue_tags_1) + /sizeof(asn_DEF_AltitudeValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AltitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AltitudeValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AltitudeValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AngleConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/AngleConfidence.c new file mode 100644 index 000000000..8e7a11157 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AngleConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AngleConfidence.h" + +int +AngleConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AngleConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AngleConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AngleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AngleConfidence = { + "AngleConfidence", + "AngleConfidence", + &asn_OP_NativeInteger, + asn_DEF_AngleConfidence_tags_1, + sizeof(asn_DEF_AngleConfidence_tags_1) + /sizeof(asn_DEF_AngleConfidence_tags_1[0]), /* 1 */ + asn_DEF_AngleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AngleConfidence_tags_1) + /sizeof(asn_DEF_AngleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AngleConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AngularAccelerationConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/AngularAccelerationConfidence.c new file mode 100644 index 000000000..140bf8b9c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AngularAccelerationConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AngularAccelerationConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AngularAccelerationConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AngularAccelerationConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AngularAccelerationConfidence_value2enum_1[] = { + { 0, 16, "degSecSquared-01" }, + { 1, 16, "degSecSquared-02" }, + { 2, 16, "degSecSquared-05" }, + { 3, 16, "degSecSquared-10" }, + { 4, 16, "degSecSquared-20" }, + { 5, 16, "degSecSquared-50" }, + { 6, 10, "outOfRange" }, + { 7, 11, "unavailable" } +}; +static const unsigned int asn_MAP_AngularAccelerationConfidence_enum2value_1[] = { + 0, /* degSecSquared-01(0) */ + 1, /* degSecSquared-02(1) */ + 2, /* degSecSquared-05(2) */ + 3, /* degSecSquared-10(3) */ + 4, /* degSecSquared-20(4) */ + 5, /* degSecSquared-50(5) */ + 6, /* outOfRange(6) */ + 7 /* unavailable(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AngularAccelerationConfidence_specs_1 = { + asn_MAP_AngularAccelerationConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AngularAccelerationConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AngularAccelerationConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AngularAccelerationConfidence = { + "AngularAccelerationConfidence", + "AngularAccelerationConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_AngularAccelerationConfidence_tags_1, + sizeof(asn_DEF_AngularAccelerationConfidence_tags_1) + /sizeof(asn_DEF_AngularAccelerationConfidence_tags_1[0]), /* 1 */ + asn_DEF_AngularAccelerationConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AngularAccelerationConfidence_tags_1) + /sizeof(asn_DEF_AngularAccelerationConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AngularAccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AngularAccelerationConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AngularAccelerationConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AngularSpeedConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/AngularSpeedConfidence.c new file mode 100644 index 000000000..864d2b837 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AngularSpeedConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AngularSpeedConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AngularSpeedConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_AngularSpeedConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_AngularSpeedConfidence_value2enum_1[] = { + { 0, 9, "degSec-01" }, + { 1, 9, "degSec-02" }, + { 2, 9, "degSec-05" }, + { 3, 9, "degSec-10" }, + { 4, 9, "degSec-20" }, + { 5, 9, "degSec-50" }, + { 6, 10, "outOfRange" }, + { 7, 11, "unavailable" } +}; +static const unsigned int asn_MAP_AngularSpeedConfidence_enum2value_1[] = { + 0, /* degSec-01(0) */ + 1, /* degSec-02(1) */ + 2, /* degSec-05(2) */ + 3, /* degSec-10(3) */ + 4, /* degSec-20(4) */ + 5, /* degSec-50(5) */ + 6, /* outOfRange(6) */ + 7 /* unavailable(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_AngularSpeedConfidence_specs_1 = { + asn_MAP_AngularSpeedConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AngularSpeedConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AngularSpeedConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AngularSpeedConfidence = { + "AngularSpeedConfidence", + "AngularSpeedConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_AngularSpeedConfidence_tags_1, + sizeof(asn_DEF_AngularSpeedConfidence_tags_1) + /sizeof(asn_DEF_AngularSpeedConfidence_tags_1[0]), /* 1 */ + asn_DEF_AngularSpeedConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_AngularSpeedConfidence_tags_1) + /sizeof(asn_DEF_AngularSpeedConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AngularSpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AngularSpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AngularSpeedConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/AxlesCount.c b/etsi_its_coding/etsi_its_cpm_coding/src/AxlesCount.c new file mode 100644 index 000000000..8bf1c5813 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/AxlesCount.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/AxlesCount.h" + +int +AxlesCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 2 && value <= 1002)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_AxlesCount_constr_1 CC_NOTUSED = { + { 2, 1 } /* (2..1002) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_AxlesCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 2, 1002 } /* (2..1002) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_AxlesCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AxlesCount = { + "AxlesCount", + "AxlesCount", + &asn_OP_NativeInteger, + asn_DEF_AxlesCount_tags_1, + sizeof(asn_DEF_AxlesCount_tags_1) + /sizeof(asn_DEF_AxlesCount_tags_1[0]), /* 1 */ + asn_DEF_AxlesCount_tags_1, /* Same as above */ + sizeof(asn_DEF_AxlesCount_tags_1) + /sizeof(asn_DEF_AxlesCount_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_AxlesCount_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_AxlesCount_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + AxlesCount_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING.c new file mode 100644 index 000000000..edcbf1996 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING.c @@ -0,0 +1,213 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BIT_STRING_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BIT_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BIT_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BIT_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BIT_STRING_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + (void)specs; + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_jer.c new file mode 100644 index 000000000..7e1e97fc6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_jer.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + const char * const h2c = "0123456789ABCDEF"; + char scratch[16 * 3 + 4]; + char *p = scratch; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Hex dump + */ + *p++ = '"'; + for(int i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int ubits = st->bits_unused; + uint8_t v = *buf & (0xff << ubits); + *p++ = h2c[v >> 4]; + *p++ = h2c[v & 0x0F]; + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = '"'; + ASN__CALLBACK(scratch, p - scratch); + ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_oer.c new file mode 100644 index 000000000..405868ba9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_oer.c @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BIT_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + (void)opt_codec_ctx; + + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = (ct_size + 7) >> 3; + st->bits_unused = (8 - (ct_size & 7)) & 7; + } else { + /* + * X.696 (08/2015) #13.3.1 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length < 1) { + ASN__DECODE_FAILED; + } else if(expected_length > size) { + ASN__DECODE_STARVED; + } + + st->bits_unused = ((const uint8_t *)ptr)[0]; + if(st->bits_unused & ~7) { + ASN_DEBUG("%s: unused bits outside of 0..7 range", td->name); + ASN__DECODE_FAILED; + } + ptr = (const char *)ptr + 1; + size--; + expected_length--; + rval.consumed = len_len + 1; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + if(expected_length > 0) { + buf[expected_length - 1] &= (0xff << st->bits_unused); + } + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BIT_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t erval = {0, 0, 0}; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + size_t trailing_zeros = 0; + int fix_last_byte = 0; + + if(!st) ASN__ENCODE_FAILED; + + if(st->bits_unused & ~7) { + ASN_DEBUG("BIT STRING unused bits %d out of 0..7 range", + st->bits_unused); + ASN__ENCODE_FAILED; + } + if(st->bits_unused && !(st->size && st->buf)) { + ASN_DEBUG("BIT STRING %s size 0 can't support unused bits %d", td->name, + st->bits_unused); + ASN__ENCODE_FAILED; + } + + if(ct_size >= 0) { + size_t ct_bytes = (ct_size + 7) >> 3; + if(st->size > ct_bytes) { + ASN_DEBUG("More bits in BIT STRING %s (%" ASN_PRI_SSIZE ") than constrained %" ASN_PRI_SSIZE "", + td->name, 8 * st->size - st->bits_unused, ct_size); + ASN__ENCODE_FAILED; + } + trailing_zeros = ct_bytes - st->size; /* Allow larger constraint */ + } else { + uint8_t ub = st->bits_unused & 7; + ssize_t len_len = oer_serialize_length(1 + st->size, cb, app_key); + if(len_len < 0) ASN__ENCODE_FAILED; + if(cb(&ub, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + erval.encoded += len_len + 1; + } + + if(st->bits_unused) { + if(st->buf[st->size - 1] & (0xff << st->bits_unused)) { + fix_last_byte = 1; + } + } + + if(cb(st->buf, st->size - fix_last_byte, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + if(fix_last_byte) { + uint8_t b = st->buf[st->size - 1] & (0xff << st->bits_unused); + if(cb(&b, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + erval.encoded += st->size; + + if(trailing_zeros) { + static uint8_t zeros[16]; + while(trailing_zeros > 0) { + int ret; + if(trailing_zeros < sizeof(zeros)) { + ret = cb(zeros, trailing_zeros, app_key); + erval.encoded += trailing_zeros; + } else { + ret = cb(zeros, sizeof(zeros), app_key); + erval.encoded += sizeof(zeros); + } + if(ret < 0) ASN__ENCODE_FAILED; + } + } + + return erval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_print.c new file mode 100644 index 000000000..03a38e9ca --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_print.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_rfill.c new file mode 100644 index 000000000..eb8118b74 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_rfill.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_uper.c new file mode 100644 index 000000000..b6e53b4c9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_uper.c @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_xer.c new file mode 100644 index 000000000..8706fc703 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BIT_STRING_xer.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN.c new file mode 100644 index 000000000..117695e6c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN.c @@ -0,0 +1,128 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + BOOLEAN_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + BOOLEAN_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + BOOLEAN_decode_ber, + BOOLEAN_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + BOOLEAN_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + BOOLEAN_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_aper.c new file mode 100644 index 000000000..180acbb84 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_aper.c @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_ber.c new file mode 100644 index 000000000..75a8f4c8c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_ber.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_jer.c new file mode 100644 index 000000000..8f5a0b309 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_jer.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_enc_rval_t +BOOLEAN_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("true", 4); + } else { + ASN__CALLBACK("false", 5); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_oer.c new file mode 100644 index 000000000..ce8ed1286 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_oer.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_print.c new file mode 100644 index 000000000..04da9e539 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_print.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_rfill.c new file mode 100644 index 000000000..94c1b0811 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_rfill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_uper.c new file mode 100644 index 000000000..6f13d0dfc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_uper.c @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_xer.c new file mode 100644 index 000000000..09a23ff52 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BOOLEAN_xer.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BarometricPressure.c b/etsi_its_coding/etsi_its_cpm_coding/src/BarometricPressure.c new file mode 100644 index 000000000..90e0213c8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BarometricPressure.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/BarometricPressure.h" + +int +BarometricPressure_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 2999 && value <= 12002)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BarometricPressure_constr_1 CC_NOTUSED = { + { 2, 1 } /* (2999..12002) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_BarometricPressure_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 2999, 12002 } /* (2999..12002) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BarometricPressure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BarometricPressure = { + "BarometricPressure", + "BarometricPressure", + &asn_OP_NativeInteger, + asn_DEF_BarometricPressure_tags_1, + sizeof(asn_DEF_BarometricPressure_tags_1) + /sizeof(asn_DEF_BarometricPressure_tags_1[0]), /* 1 */ + asn_DEF_BarometricPressure_tags_1, /* Same as above */ + sizeof(asn_DEF_BarometricPressure_tags_1) + /sizeof(asn_DEF_BarometricPressure_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BarometricPressure_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BarometricPressure_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BarometricPressure_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BasicContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/BasicContainer.c new file mode 100644 index 000000000..92ef6b4e0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BasicContainer.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/BasicContainer.h" + +static asn_TYPE_member_t asn_MBR_BasicContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BasicContainer, stationType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficParticipantType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct BasicContainer, referencePosition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReferencePositionWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "referencePosition" + }, +}; +static const ber_tlv_tag_t asn_DEF_BasicContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BasicContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stationType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* referencePosition */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_BasicContainer_specs_1 = { + sizeof(struct BasicContainer), + offsetof(struct BasicContainer, _asn_ctx), + asn_MAP_BasicContainer_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BasicContainer = { + "BasicContainer", + "BasicContainer", + &asn_OP_SEQUENCE, + asn_DEF_BasicContainer_tags_1, + sizeof(asn_DEF_BasicContainer_tags_1) + /sizeof(asn_DEF_BasicContainer_tags_1[0]), /* 1 */ + asn_DEF_BasicContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_BasicContainer_tags_1) + /sizeof(asn_DEF_BasicContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_BasicContainer_1, + 2, /* Elements count */ + &asn_SPC_BasicContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/BogiesCount.c b/etsi_its_coding/etsi_its_cpm_coding/src/BogiesCount.c new file mode 100644 index 000000000..9f850441f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/BogiesCount.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/BogiesCount.h" + +int +BogiesCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 2 && value <= 101)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_BogiesCount_constr_1 CC_NOTUSED = { + { 1, 1 } /* (2..101) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_BogiesCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 2, 101 } /* (2..101) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_BogiesCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BogiesCount = { + "BogiesCount", + "BogiesCount", + &asn_OP_NativeInteger, + asn_DEF_BogiesCount_tags_1, + sizeof(asn_DEF_BogiesCount_tags_1) + /sizeof(asn_DEF_BogiesCount_tags_1[0]), /* 1 */ + asn_DEF_BogiesCount_tags_1, /* Same as above */ + sizeof(asn_DEF_BogiesCount_tags_1) + /sizeof(asn_DEF_BogiesCount_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_BogiesCount_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_BogiesCount_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BogiesCount_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber1B.c b/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber1B.c new file mode 100644 index 000000000..b1823ffd5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber1B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CardinalNumber1B.h" + +int +CardinalNumber1B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CardinalNumber1B_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CardinalNumber1B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CardinalNumber1B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CardinalNumber1B = { + "CardinalNumber1B", + "CardinalNumber1B", + &asn_OP_NativeInteger, + asn_DEF_CardinalNumber1B_tags_1, + sizeof(asn_DEF_CardinalNumber1B_tags_1) + /sizeof(asn_DEF_CardinalNumber1B_tags_1[0]), /* 1 */ + asn_DEF_CardinalNumber1B_tags_1, /* Same as above */ + sizeof(asn_DEF_CardinalNumber1B_tags_1) + /sizeof(asn_DEF_CardinalNumber1B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CardinalNumber1B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CardinalNumber1B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CardinalNumber1B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber3b.c b/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber3b.c new file mode 100644 index 000000000..d7955a1cb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CardinalNumber3b.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CardinalNumber3b.h" + +int +CardinalNumber3b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CardinalNumber3b_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..8) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CardinalNumber3b_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (1..8) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CardinalNumber3b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CardinalNumber3b = { + "CardinalNumber3b", + "CardinalNumber3b", + &asn_OP_NativeInteger, + asn_DEF_CardinalNumber3b_tags_1, + sizeof(asn_DEF_CardinalNumber3b_tags_1) + /sizeof(asn_DEF_CardinalNumber3b_tags_1[0]), /* 1 */ + asn_DEF_CardinalNumber3b_tags_1, /* Same as above */ + sizeof(asn_DEF_CardinalNumber3b_tags_1) + /sizeof(asn_DEF_CardinalNumber3b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CardinalNumber3b_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CardinalNumber3b_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CardinalNumber3b_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngle.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngle.c new file mode 100644 index 000000000..cb635614b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngle.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngle.h" + +asn_TYPE_member_t asn_MBR_CartesianAngle_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngle, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngle, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_CartesianAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianAngle_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CartesianAngle_specs_1 = { + sizeof(struct CartesianAngle), + offsetof(struct CartesianAngle, _asn_ctx), + asn_MAP_CartesianAngle_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngle = { + "CartesianAngle", + "CartesianAngle", + &asn_OP_SEQUENCE, + asn_DEF_CartesianAngle_tags_1, + sizeof(asn_DEF_CartesianAngle_tags_1) + /sizeof(asn_DEF_CartesianAngle_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngle_tags_1) + /sizeof(asn_DEF_CartesianAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianAngle_1, + 2, /* Elements count */ + &asn_SPC_CartesianAngle_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngleValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngleValue.c new file mode 100644 index 000000000..47b1df367 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngleValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngleValue.h" + +int +CartesianAngleValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3601)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianAngleValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..3601) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianAngleValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 3601 } /* (0..3601) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianAngleValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngleValue = { + "CartesianAngleValue", + "CartesianAngleValue", + &asn_OP_NativeInteger, + asn_DEF_CartesianAngleValue_tags_1, + sizeof(asn_DEF_CartesianAngleValue_tags_1) + /sizeof(asn_DEF_CartesianAngleValue_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngleValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngleValue_tags_1) + /sizeof(asn_DEF_CartesianAngleValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianAngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianAngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianAngleValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponent.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponent.c new file mode 100644 index 000000000..210bc1826 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponent.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngularAccelerationComponent.h" + +static asn_TYPE_member_t asn_MBR_CartesianAngularAccelerationComponent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngularAccelerationComponent, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngularAccelerationComponentValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngularAccelerationComponent, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AngularAccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_CartesianAngularAccelerationComponent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianAngularAccelerationComponent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CartesianAngularAccelerationComponent_specs_1 = { + sizeof(struct CartesianAngularAccelerationComponent), + offsetof(struct CartesianAngularAccelerationComponent, _asn_ctx), + asn_MAP_CartesianAngularAccelerationComponent_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngularAccelerationComponent = { + "CartesianAngularAccelerationComponent", + "CartesianAngularAccelerationComponent", + &asn_OP_SEQUENCE, + asn_DEF_CartesianAngularAccelerationComponent_tags_1, + sizeof(asn_DEF_CartesianAngularAccelerationComponent_tags_1) + /sizeof(asn_DEF_CartesianAngularAccelerationComponent_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngularAccelerationComponent_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngularAccelerationComponent_tags_1) + /sizeof(asn_DEF_CartesianAngularAccelerationComponent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianAngularAccelerationComponent_1, + 2, /* Elements count */ + &asn_SPC_CartesianAngularAccelerationComponent_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponentValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponentValue.c new file mode 100644 index 000000000..12f855a94 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularAccelerationComponentValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngularAccelerationComponentValue.h" + +int +CartesianAngularAccelerationComponentValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -255 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianAngularAccelerationComponentValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-255..256) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianAngularAccelerationComponentValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -255, 256 } /* (-255..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianAngularAccelerationComponentValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngularAccelerationComponentValue = { + "CartesianAngularAccelerationComponentValue", + "CartesianAngularAccelerationComponentValue", + &asn_OP_NativeInteger, + asn_DEF_CartesianAngularAccelerationComponentValue_tags_1, + sizeof(asn_DEF_CartesianAngularAccelerationComponentValue_tags_1) + /sizeof(asn_DEF_CartesianAngularAccelerationComponentValue_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngularAccelerationComponentValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngularAccelerationComponentValue_tags_1) + /sizeof(asn_DEF_CartesianAngularAccelerationComponentValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianAngularAccelerationComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianAngularAccelerationComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianAngularAccelerationComponentValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponent.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponent.c new file mode 100644 index 000000000..36848c5ee --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponent.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngularVelocityComponent.h" + +asn_TYPE_member_t asn_MBR_CartesianAngularVelocityComponent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngularVelocityComponent, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngularVelocityComponentValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianAngularVelocityComponent, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AngularSpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_CartesianAngularVelocityComponent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianAngularVelocityComponent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CartesianAngularVelocityComponent_specs_1 = { + sizeof(struct CartesianAngularVelocityComponent), + offsetof(struct CartesianAngularVelocityComponent, _asn_ctx), + asn_MAP_CartesianAngularVelocityComponent_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngularVelocityComponent = { + "CartesianAngularVelocityComponent", + "CartesianAngularVelocityComponent", + &asn_OP_SEQUENCE, + asn_DEF_CartesianAngularVelocityComponent_tags_1, + sizeof(asn_DEF_CartesianAngularVelocityComponent_tags_1) + /sizeof(asn_DEF_CartesianAngularVelocityComponent_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngularVelocityComponent_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngularVelocityComponent_tags_1) + /sizeof(asn_DEF_CartesianAngularVelocityComponent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianAngularVelocityComponent_1, + 2, /* Elements count */ + &asn_SPC_CartesianAngularVelocityComponent_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponentValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponentValue.c new file mode 100644 index 000000000..6e4e9241c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianAngularVelocityComponentValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianAngularVelocityComponentValue.h" + +int +CartesianAngularVelocityComponentValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -255 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianAngularVelocityComponentValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-255..256) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianAngularVelocityComponentValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -255, 256 } /* (-255..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianAngularVelocityComponentValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianAngularVelocityComponentValue = { + "CartesianAngularVelocityComponentValue", + "CartesianAngularVelocityComponentValue", + &asn_OP_NativeInteger, + asn_DEF_CartesianAngularVelocityComponentValue_tags_1, + sizeof(asn_DEF_CartesianAngularVelocityComponentValue_tags_1) + /sizeof(asn_DEF_CartesianAngularVelocityComponentValue_tags_1[0]), /* 1 */ + asn_DEF_CartesianAngularVelocityComponentValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianAngularVelocityComponentValue_tags_1) + /sizeof(asn_DEF_CartesianAngularVelocityComponentValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianAngularVelocityComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianAngularVelocityComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianAngularVelocityComponentValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinate.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinate.c new file mode 100644 index 000000000..8bfd8ce0a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinate.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianCoordinate.h" + +int +CartesianCoordinate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32768 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianCoordinate_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32768..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianCoordinate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32768, 32767 } /* (-32768..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianCoordinate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianCoordinate = { + "CartesianCoordinate", + "CartesianCoordinate", + &asn_OP_NativeInteger, + asn_DEF_CartesianCoordinate_tags_1, + sizeof(asn_DEF_CartesianCoordinate_tags_1) + /sizeof(asn_DEF_CartesianCoordinate_tags_1[0]), /* 1 */ + asn_DEF_CartesianCoordinate_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianCoordinate_tags_1) + /sizeof(asn_DEF_CartesianCoordinate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianCoordinate_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianCoordinate_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianCoordinate_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateLarge.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateLarge.c new file mode 100644 index 000000000..259129a1a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateLarge.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianCoordinateLarge.h" + +int +CartesianCoordinateLarge_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -131072 && value <= 131071)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianCoordinateLarge_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-131072..131071) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianCoordinateLarge_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, -131072, 131071 } /* (-131072..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianCoordinateLarge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateLarge = { + "CartesianCoordinateLarge", + "CartesianCoordinateLarge", + &asn_OP_NativeInteger, + asn_DEF_CartesianCoordinateLarge_tags_1, + sizeof(asn_DEF_CartesianCoordinateLarge_tags_1) + /sizeof(asn_DEF_CartesianCoordinateLarge_tags_1[0]), /* 1 */ + asn_DEF_CartesianCoordinateLarge_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianCoordinateLarge_tags_1) + /sizeof(asn_DEF_CartesianCoordinateLarge_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianCoordinateLarge_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianCoordinateLarge_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianCoordinateLarge_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateSmall.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateSmall.c new file mode 100644 index 000000000..187a0a999 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateSmall.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianCoordinateSmall.h" + +int +CartesianCoordinateSmall_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -3094 && value <= 1001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CartesianCoordinateSmall_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-3094..1001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CartesianCoordinateSmall_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -3094, 1001 } /* (-3094..1001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CartesianCoordinateSmall_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateSmall = { + "CartesianCoordinateSmall", + "CartesianCoordinateSmall", + &asn_OP_NativeInteger, + asn_DEF_CartesianCoordinateSmall_tags_1, + sizeof(asn_DEF_CartesianCoordinateSmall_tags_1) + /sizeof(asn_DEF_CartesianCoordinateSmall_tags_1[0]), /* 1 */ + asn_DEF_CartesianCoordinateSmall_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianCoordinateSmall_tags_1) + /sizeof(asn_DEF_CartesianCoordinateSmall_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CartesianCoordinateSmall_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CartesianCoordinateSmall_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CartesianCoordinateSmall_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateWithConfidence.c new file mode 100644 index 000000000..c145d7093 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianCoordinateWithConfidence.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianCoordinateWithConfidence.h" + +asn_TYPE_member_t asn_MBR_CartesianCoordinateWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianCoordinateWithConfidence, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateLarge, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianCoordinateWithConfidence, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoordinateConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_CartesianCoordinateWithConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianCoordinateWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CartesianCoordinateWithConfidence_specs_1 = { + sizeof(struct CartesianCoordinateWithConfidence), + offsetof(struct CartesianCoordinateWithConfidence, _asn_ctx), + asn_MAP_CartesianCoordinateWithConfidence_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianCoordinateWithConfidence = { + "CartesianCoordinateWithConfidence", + "CartesianCoordinateWithConfidence", + &asn_OP_SEQUENCE, + asn_DEF_CartesianCoordinateWithConfidence_tags_1, + sizeof(asn_DEF_CartesianCoordinateWithConfidence_tags_1) + /sizeof(asn_DEF_CartesianCoordinateWithConfidence_tags_1[0]), /* 1 */ + asn_DEF_CartesianCoordinateWithConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianCoordinateWithConfidence_tags_1) + /sizeof(asn_DEF_CartesianCoordinateWithConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianCoordinateWithConfidence_1, + 2, /* Elements count */ + &asn_SPC_CartesianCoordinateWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3d.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3d.c new file mode 100644 index 000000000..4846e3051 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3d.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianPosition3d.h" + +asn_TYPE_member_t asn_MBR_CartesianPosition3d_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianPosition3d, xCoordinate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xCoordinate" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianPosition3d, yCoordinate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yCoordinate" + }, + { ATF_POINTER, 1, offsetof(struct CartesianPosition3d, zCoordinate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinate, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zCoordinate" + }, +}; +static const int asn_MAP_CartesianPosition3d_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CartesianPosition3d_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianPosition3d_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zCoordinate */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CartesianPosition3d_specs_1 = { + sizeof(struct CartesianPosition3d), + offsetof(struct CartesianPosition3d, _asn_ctx), + asn_MAP_CartesianPosition3d_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CartesianPosition3d_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianPosition3d = { + "CartesianPosition3d", + "CartesianPosition3d", + &asn_OP_SEQUENCE, + asn_DEF_CartesianPosition3d_tags_1, + sizeof(asn_DEF_CartesianPosition3d_tags_1) + /sizeof(asn_DEF_CartesianPosition3d_tags_1[0]), /* 1 */ + asn_DEF_CartesianPosition3d_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianPosition3d_tags_1) + /sizeof(asn_DEF_CartesianPosition3d_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianPosition3d_1, + 3, /* Elements count */ + &asn_SPC_CartesianPosition3d_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3dWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3dWithConfidence.c new file mode 100644 index 000000000..034643673 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CartesianPosition3dWithConfidence.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CartesianPosition3dWithConfidence.h" + +asn_TYPE_member_t asn_MBR_CartesianPosition3dWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CartesianPosition3dWithConfidence, xCoordinate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xCoordinate" + }, + { ATF_NOFLAGS, 0, offsetof(struct CartesianPosition3dWithConfidence, yCoordinate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yCoordinate" + }, + { ATF_POINTER, 1, offsetof(struct CartesianPosition3dWithConfidence, zCoordinate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zCoordinate" + }, +}; +static const int asn_MAP_CartesianPosition3dWithConfidence_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CartesianPosition3dWithConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CartesianPosition3dWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zCoordinate */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CartesianPosition3dWithConfidence_specs_1 = { + sizeof(struct CartesianPosition3dWithConfidence), + offsetof(struct CartesianPosition3dWithConfidence, _asn_ctx), + asn_MAP_CartesianPosition3dWithConfidence_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CartesianPosition3dWithConfidence_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CartesianPosition3dWithConfidence = { + "CartesianPosition3dWithConfidence", + "CartesianPosition3dWithConfidence", + &asn_OP_SEQUENCE, + asn_DEF_CartesianPosition3dWithConfidence_tags_1, + sizeof(asn_DEF_CartesianPosition3dWithConfidence_tags_1) + /sizeof(asn_DEF_CartesianPosition3dWithConfidence_tags_1[0]), /* 1 */ + asn_DEF_CartesianPosition3dWithConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_CartesianPosition3dWithConfidence_tags_1) + /sizeof(asn_DEF_CartesianPosition3dWithConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CartesianPosition3dWithConfidence_1, + 3, /* Elements count */ + &asn_SPC_CartesianPosition3dWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCode.c new file mode 100644 index 000000000..05c2445c7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCode.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CauseCode.h" + +static asn_TYPE_member_t asn_MBR_CauseCode_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CauseCode, causeCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "causeCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCode, subCauseCode), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subCauseCode" + }, +}; +static const ber_tlv_tag_t asn_DEF_CauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CauseCode_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* causeCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subCauseCode */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CauseCode_specs_1 = { + sizeof(struct CauseCode), + offsetof(struct CauseCode, _asn_ctx), + asn_MAP_CauseCode_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CauseCode = { + "CauseCode", + "CauseCode", + &asn_OP_SEQUENCE, + asn_DEF_CauseCode_tags_1, + sizeof(asn_DEF_CauseCode_tags_1) + /sizeof(asn_DEF_CauseCode_tags_1[0]), /* 1 */ + asn_DEF_CauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseCode_tags_1) + /sizeof(asn_DEF_CauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CauseCode_1, + 2, /* Elements count */ + &asn_SPC_CauseCode_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeChoice.c b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeChoice.c new file mode 100644 index 000000000..94a9d06b0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeChoice.c @@ -0,0 +1,2379 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CauseCodeChoice.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CauseCodeChoice_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseCodeChoice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 128 } /* (0..128) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_CauseCodeChoice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved0), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved0" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.trafficCondition1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficConditionSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trafficCondition1" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.accident2), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccidentSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accident2" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.roadworks3), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadworksSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadworks3" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved4), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved4" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.impassability5), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "impassability5" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.adverseWeatherCondition_Adhesion6), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdverseWeatherCondition_AdhesionSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "adverseWeatherCondition-Adhesion6" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.aquaplaning7), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "aquaplaning7" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved8), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved8" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.hazardousLocation_SurfaceCondition9), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hazardousLocation-SurfaceCondition9" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.hazardousLocation_ObstacleOnTheRoad10), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hazardousLocation-ObstacleOnTheRoad10" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.hazardousLocation_AnimalOnTheRoad11), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hazardousLocation-AnimalOnTheRoad11" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.humanPresenceOnTheRoad12), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HumanPresenceOnTheRoadSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "humanPresenceOnTheRoad12" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved13), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved13" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.wrongWayDriving14), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WrongWayDrivingSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wrongWayDriving14" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.rescueAndRecoveryWorkInProgress15), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rescueAndRecoveryWorkInProgress15" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved16), + (ASN_TAG_CLASS_CONTEXT | (16 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved16" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.adverseWeatherCondition_ExtremeWeatherCondition17), + (ASN_TAG_CLASS_CONTEXT | (17 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "adverseWeatherCondition-ExtremeWeatherCondition17" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.adverseWeatherCondition_Visibility18), + (ASN_TAG_CLASS_CONTEXT | (18 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdverseWeatherCondition_VisibilitySubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "adverseWeatherCondition-Visibility18" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.adverseWeatherCondition_Precipitation19), + (ASN_TAG_CLASS_CONTEXT | (19 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdverseWeatherCondition_PrecipitationSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "adverseWeatherCondition-Precipitation19" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.violence20), + (ASN_TAG_CLASS_CONTEXT | (20 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "violence20" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved21), + (ASN_TAG_CLASS_CONTEXT | (21 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved21" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved22), + (ASN_TAG_CLASS_CONTEXT | (22 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved22" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved23), + (ASN_TAG_CLASS_CONTEXT | (23 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved23" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved24), + (ASN_TAG_CLASS_CONTEXT | (24 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved24" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved25), + (ASN_TAG_CLASS_CONTEXT | (25 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved25" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.slowVehicle26), + (ASN_TAG_CLASS_CONTEXT | (26 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SlowVehicleSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "slowVehicle26" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.dangerousEndOfQueue27), + (ASN_TAG_CLASS_CONTEXT | (27 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DangerousEndOfQueueSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dangerousEndOfQueue27" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved28), + (ASN_TAG_CLASS_CONTEXT | (28 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved28" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved29), + (ASN_TAG_CLASS_CONTEXT | (29 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved29" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved30), + (ASN_TAG_CLASS_CONTEXT | (30 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved30" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved31), + (ASN_TAG_CLASS_CONTEXT | (31 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved31" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved32), + (ASN_TAG_CLASS_CONTEXT | (32 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved32" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved33), + (ASN_TAG_CLASS_CONTEXT | (33 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved33" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved34), + (ASN_TAG_CLASS_CONTEXT | (34 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved34" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved35), + (ASN_TAG_CLASS_CONTEXT | (35 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved35" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved36), + (ASN_TAG_CLASS_CONTEXT | (36 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved36" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved37), + (ASN_TAG_CLASS_CONTEXT | (37 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved37" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved38), + (ASN_TAG_CLASS_CONTEXT | (38 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved38" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved39), + (ASN_TAG_CLASS_CONTEXT | (39 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved39" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved40), + (ASN_TAG_CLASS_CONTEXT | (40 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved40" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved41), + (ASN_TAG_CLASS_CONTEXT | (41 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved41" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved42), + (ASN_TAG_CLASS_CONTEXT | (42 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved42" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved43), + (ASN_TAG_CLASS_CONTEXT | (43 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved43" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved44), + (ASN_TAG_CLASS_CONTEXT | (44 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved44" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved45), + (ASN_TAG_CLASS_CONTEXT | (45 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved45" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved46), + (ASN_TAG_CLASS_CONTEXT | (46 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved46" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved47), + (ASN_TAG_CLASS_CONTEXT | (47 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved47" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved48), + (ASN_TAG_CLASS_CONTEXT | (48 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved48" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved49), + (ASN_TAG_CLASS_CONTEXT | (49 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved49" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved50), + (ASN_TAG_CLASS_CONTEXT | (50 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved50" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved51), + (ASN_TAG_CLASS_CONTEXT | (51 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved51" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved52), + (ASN_TAG_CLASS_CONTEXT | (52 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved52" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved53), + (ASN_TAG_CLASS_CONTEXT | (53 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved53" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved54), + (ASN_TAG_CLASS_CONTEXT | (54 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved54" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved55), + (ASN_TAG_CLASS_CONTEXT | (55 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved55" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved56), + (ASN_TAG_CLASS_CONTEXT | (56 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved56" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved57), + (ASN_TAG_CLASS_CONTEXT | (57 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved57" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved58), + (ASN_TAG_CLASS_CONTEXT | (58 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved58" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved59), + (ASN_TAG_CLASS_CONTEXT | (59 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved59" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved60), + (ASN_TAG_CLASS_CONTEXT | (60 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved60" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved61), + (ASN_TAG_CLASS_CONTEXT | (61 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved61" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved62), + (ASN_TAG_CLASS_CONTEXT | (62 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved62" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved63), + (ASN_TAG_CLASS_CONTEXT | (63 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved63" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved64), + (ASN_TAG_CLASS_CONTEXT | (64 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved64" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved65), + (ASN_TAG_CLASS_CONTEXT | (65 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved65" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved66), + (ASN_TAG_CLASS_CONTEXT | (66 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved66" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved67), + (ASN_TAG_CLASS_CONTEXT | (67 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved67" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved68), + (ASN_TAG_CLASS_CONTEXT | (68 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved68" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved69), + (ASN_TAG_CLASS_CONTEXT | (69 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved69" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved70), + (ASN_TAG_CLASS_CONTEXT | (70 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved70" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved71), + (ASN_TAG_CLASS_CONTEXT | (71 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved71" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved72), + (ASN_TAG_CLASS_CONTEXT | (72 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved72" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved73), + (ASN_TAG_CLASS_CONTEXT | (73 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved73" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved74), + (ASN_TAG_CLASS_CONTEXT | (74 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved74" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved75), + (ASN_TAG_CLASS_CONTEXT | (75 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved75" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved76), + (ASN_TAG_CLASS_CONTEXT | (76 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved76" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved77), + (ASN_TAG_CLASS_CONTEXT | (77 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved77" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved78), + (ASN_TAG_CLASS_CONTEXT | (78 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved78" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved79), + (ASN_TAG_CLASS_CONTEXT | (79 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved79" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved80), + (ASN_TAG_CLASS_CONTEXT | (80 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved80" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved81), + (ASN_TAG_CLASS_CONTEXT | (81 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved81" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved82), + (ASN_TAG_CLASS_CONTEXT | (82 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved82" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved83), + (ASN_TAG_CLASS_CONTEXT | (83 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved83" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved84), + (ASN_TAG_CLASS_CONTEXT | (84 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved84" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved85), + (ASN_TAG_CLASS_CONTEXT | (85 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved85" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved86), + (ASN_TAG_CLASS_CONTEXT | (86 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved86" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved87), + (ASN_TAG_CLASS_CONTEXT | (87 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved87" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved88), + (ASN_TAG_CLASS_CONTEXT | (88 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved88" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved89), + (ASN_TAG_CLASS_CONTEXT | (89 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved89" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved90), + (ASN_TAG_CLASS_CONTEXT | (90 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved90" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.vehicleBreakdown91), + (ASN_TAG_CLASS_CONTEXT | (91 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleBreakdownSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleBreakdown91" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.postCrash92), + (ASN_TAG_CLASS_CONTEXT | (92 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PostCrashSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "postCrash92" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.humanProblem93), + (ASN_TAG_CLASS_CONTEXT | (93 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HumanProblemSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "humanProblem93" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.stationaryVehicle94), + (ASN_TAG_CLASS_CONTEXT | (94 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationaryVehicleSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationaryVehicle94" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.emergencyVehicleApproaching95), + (ASN_TAG_CLASS_CONTEXT | (95 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EmergencyVehicleApproachingSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "emergencyVehicleApproaching95" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.hazardousLocation_DangerousCurve96), + (ASN_TAG_CLASS_CONTEXT | (96 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HazardousLocation_DangerousCurveSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hazardousLocation-DangerousCurve96" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.collisionRisk97), + (ASN_TAG_CLASS_CONTEXT | (97 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CollisionRiskSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "collisionRisk97" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.signalViolation98), + (ASN_TAG_CLASS_CONTEXT | (98 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SignalViolationSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "signalViolation98" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.dangerousSituation99), + (ASN_TAG_CLASS_CONTEXT | (99 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DangerousSituationSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dangerousSituation99" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.railwayLevelCrossing100), + (ASN_TAG_CLASS_CONTEXT | (100 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RailwayLevelCrossingSubCauseCode, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "railwayLevelCrossing100" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved101), + (ASN_TAG_CLASS_CONTEXT | (101 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved101" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved102), + (ASN_TAG_CLASS_CONTEXT | (102 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved102" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved103), + (ASN_TAG_CLASS_CONTEXT | (103 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved103" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved104), + (ASN_TAG_CLASS_CONTEXT | (104 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved104" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved105), + (ASN_TAG_CLASS_CONTEXT | (105 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved105" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved106), + (ASN_TAG_CLASS_CONTEXT | (106 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved106" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved107), + (ASN_TAG_CLASS_CONTEXT | (107 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved107" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved108), + (ASN_TAG_CLASS_CONTEXT | (108 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved108" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved109), + (ASN_TAG_CLASS_CONTEXT | (109 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved109" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved110), + (ASN_TAG_CLASS_CONTEXT | (110 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved110" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved111), + (ASN_TAG_CLASS_CONTEXT | (111 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved111" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved112), + (ASN_TAG_CLASS_CONTEXT | (112 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved112" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved113), + (ASN_TAG_CLASS_CONTEXT | (113 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved113" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved114), + (ASN_TAG_CLASS_CONTEXT | (114 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved114" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved115), + (ASN_TAG_CLASS_CONTEXT | (115 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved115" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved116), + (ASN_TAG_CLASS_CONTEXT | (116 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved116" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved117), + (ASN_TAG_CLASS_CONTEXT | (117 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved117" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved118), + (ASN_TAG_CLASS_CONTEXT | (118 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved118" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved119), + (ASN_TAG_CLASS_CONTEXT | (119 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved119" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved120), + (ASN_TAG_CLASS_CONTEXT | (120 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved120" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved121), + (ASN_TAG_CLASS_CONTEXT | (121 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved121" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved122), + (ASN_TAG_CLASS_CONTEXT | (122 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved122" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved123), + (ASN_TAG_CLASS_CONTEXT | (123 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved123" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved124), + (ASN_TAG_CLASS_CONTEXT | (124 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved124" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved125), + (ASN_TAG_CLASS_CONTEXT | (125 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved125" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved126), + (ASN_TAG_CLASS_CONTEXT | (126 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved126" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved127), + (ASN_TAG_CLASS_CONTEXT | (127 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved127" + }, + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeChoice, choice.reserved128), + (ASN_TAG_CLASS_CONTEXT | (128 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubCauseCodeType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "reserved128" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_CauseCodeChoice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reserved0 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trafficCondition1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* accident2 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* roadworks3 */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* reserved4 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* impassability5 */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* adverseWeatherCondition-Adhesion6 */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* aquaplaning7 */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* reserved8 */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* hazardousLocation-SurfaceCondition9 */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* hazardousLocation-ObstacleOnTheRoad10 */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* hazardousLocation-AnimalOnTheRoad11 */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* humanPresenceOnTheRoad12 */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* reserved13 */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* wrongWayDriving14 */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* rescueAndRecoveryWorkInProgress15 */ + { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* reserved16 */ + { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* adverseWeatherCondition-ExtremeWeatherCondition17 */ + { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* adverseWeatherCondition-Visibility18 */ + { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* adverseWeatherCondition-Precipitation19 */ + { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* violence20 */ + { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* reserved21 */ + { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* reserved22 */ + { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 }, /* reserved23 */ + { (ASN_TAG_CLASS_CONTEXT | (24 << 2)), 24, 0, 0 }, /* reserved24 */ + { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 25, 0, 0 }, /* reserved25 */ + { (ASN_TAG_CLASS_CONTEXT | (26 << 2)), 26, 0, 0 }, /* slowVehicle26 */ + { (ASN_TAG_CLASS_CONTEXT | (27 << 2)), 27, 0, 0 }, /* dangerousEndOfQueue27 */ + { (ASN_TAG_CLASS_CONTEXT | (28 << 2)), 28, 0, 0 }, /* reserved28 */ + { (ASN_TAG_CLASS_CONTEXT | (29 << 2)), 29, 0, 0 }, /* reserved29 */ + { (ASN_TAG_CLASS_CONTEXT | (30 << 2)), 30, 0, 0 }, /* reserved30 */ + { (ASN_TAG_CLASS_CONTEXT | (31 << 2)), 31, 0, 0 }, /* reserved31 */ + { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 32, 0, 0 }, /* reserved32 */ + { (ASN_TAG_CLASS_CONTEXT | (33 << 2)), 33, 0, 0 }, /* reserved33 */ + { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 34, 0, 0 }, /* reserved34 */ + { (ASN_TAG_CLASS_CONTEXT | (35 << 2)), 35, 0, 0 }, /* reserved35 */ + { (ASN_TAG_CLASS_CONTEXT | (36 << 2)), 36, 0, 0 }, /* reserved36 */ + { (ASN_TAG_CLASS_CONTEXT | (37 << 2)), 37, 0, 0 }, /* reserved37 */ + { (ASN_TAG_CLASS_CONTEXT | (38 << 2)), 38, 0, 0 }, /* reserved38 */ + { (ASN_TAG_CLASS_CONTEXT | (39 << 2)), 39, 0, 0 }, /* reserved39 */ + { (ASN_TAG_CLASS_CONTEXT | (40 << 2)), 40, 0, 0 }, /* reserved40 */ + { (ASN_TAG_CLASS_CONTEXT | (41 << 2)), 41, 0, 0 }, /* reserved41 */ + { (ASN_TAG_CLASS_CONTEXT | (42 << 2)), 42, 0, 0 }, /* reserved42 */ + { (ASN_TAG_CLASS_CONTEXT | (43 << 2)), 43, 0, 0 }, /* reserved43 */ + { (ASN_TAG_CLASS_CONTEXT | (44 << 2)), 44, 0, 0 }, /* reserved44 */ + { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 45, 0, 0 }, /* reserved45 */ + { (ASN_TAG_CLASS_CONTEXT | (46 << 2)), 46, 0, 0 }, /* reserved46 */ + { (ASN_TAG_CLASS_CONTEXT | (47 << 2)), 47, 0, 0 }, /* reserved47 */ + { (ASN_TAG_CLASS_CONTEXT | (48 << 2)), 48, 0, 0 }, /* reserved48 */ + { (ASN_TAG_CLASS_CONTEXT | (49 << 2)), 49, 0, 0 }, /* reserved49 */ + { (ASN_TAG_CLASS_CONTEXT | (50 << 2)), 50, 0, 0 }, /* reserved50 */ + { (ASN_TAG_CLASS_CONTEXT | (51 << 2)), 51, 0, 0 }, /* reserved51 */ + { (ASN_TAG_CLASS_CONTEXT | (52 << 2)), 52, 0, 0 }, /* reserved52 */ + { (ASN_TAG_CLASS_CONTEXT | (53 << 2)), 53, 0, 0 }, /* reserved53 */ + { (ASN_TAG_CLASS_CONTEXT | (54 << 2)), 54, 0, 0 }, /* reserved54 */ + { (ASN_TAG_CLASS_CONTEXT | (55 << 2)), 55, 0, 0 }, /* reserved55 */ + { (ASN_TAG_CLASS_CONTEXT | (56 << 2)), 56, 0, 0 }, /* reserved56 */ + { (ASN_TAG_CLASS_CONTEXT | (57 << 2)), 57, 0, 0 }, /* reserved57 */ + { (ASN_TAG_CLASS_CONTEXT | (58 << 2)), 58, 0, 0 }, /* reserved58 */ + { (ASN_TAG_CLASS_CONTEXT | (59 << 2)), 59, 0, 0 }, /* reserved59 */ + { (ASN_TAG_CLASS_CONTEXT | (60 << 2)), 60, 0, 0 }, /* reserved60 */ + { (ASN_TAG_CLASS_CONTEXT | (61 << 2)), 61, 0, 0 }, /* reserved61 */ + { (ASN_TAG_CLASS_CONTEXT | (62 << 2)), 62, 0, 0 }, /* reserved62 */ + { (ASN_TAG_CLASS_CONTEXT | (63 << 2)), 63, 0, 0 }, /* reserved63 */ + { (ASN_TAG_CLASS_CONTEXT | (64 << 2)), 64, 0, 0 }, /* reserved64 */ + { (ASN_TAG_CLASS_CONTEXT | (65 << 2)), 65, 0, 0 }, /* reserved65 */ + { (ASN_TAG_CLASS_CONTEXT | (66 << 2)), 66, 0, 0 }, /* reserved66 */ + { (ASN_TAG_CLASS_CONTEXT | (67 << 2)), 67, 0, 0 }, /* reserved67 */ + { (ASN_TAG_CLASS_CONTEXT | (68 << 2)), 68, 0, 0 }, /* reserved68 */ + { (ASN_TAG_CLASS_CONTEXT | (69 << 2)), 69, 0, 0 }, /* reserved69 */ + { (ASN_TAG_CLASS_CONTEXT | (70 << 2)), 70, 0, 0 }, /* reserved70 */ + { (ASN_TAG_CLASS_CONTEXT | (71 << 2)), 71, 0, 0 }, /* reserved71 */ + { (ASN_TAG_CLASS_CONTEXT | (72 << 2)), 72, 0, 0 }, /* reserved72 */ + { (ASN_TAG_CLASS_CONTEXT | (73 << 2)), 73, 0, 0 }, /* reserved73 */ + { (ASN_TAG_CLASS_CONTEXT | (74 << 2)), 74, 0, 0 }, /* reserved74 */ + { (ASN_TAG_CLASS_CONTEXT | (75 << 2)), 75, 0, 0 }, /* reserved75 */ + { (ASN_TAG_CLASS_CONTEXT | (76 << 2)), 76, 0, 0 }, /* reserved76 */ + { (ASN_TAG_CLASS_CONTEXT | (77 << 2)), 77, 0, 0 }, /* reserved77 */ + { (ASN_TAG_CLASS_CONTEXT | (78 << 2)), 78, 0, 0 }, /* reserved78 */ + { (ASN_TAG_CLASS_CONTEXT | (79 << 2)), 79, 0, 0 }, /* reserved79 */ + { (ASN_TAG_CLASS_CONTEXT | (80 << 2)), 80, 0, 0 }, /* reserved80 */ + { (ASN_TAG_CLASS_CONTEXT | (81 << 2)), 81, 0, 0 }, /* reserved81 */ + { (ASN_TAG_CLASS_CONTEXT | (82 << 2)), 82, 0, 0 }, /* reserved82 */ + { (ASN_TAG_CLASS_CONTEXT | (83 << 2)), 83, 0, 0 }, /* reserved83 */ + { (ASN_TAG_CLASS_CONTEXT | (84 << 2)), 84, 0, 0 }, /* reserved84 */ + { (ASN_TAG_CLASS_CONTEXT | (85 << 2)), 85, 0, 0 }, /* reserved85 */ + { (ASN_TAG_CLASS_CONTEXT | (86 << 2)), 86, 0, 0 }, /* reserved86 */ + { (ASN_TAG_CLASS_CONTEXT | (87 << 2)), 87, 0, 0 }, /* reserved87 */ + { (ASN_TAG_CLASS_CONTEXT | (88 << 2)), 88, 0, 0 }, /* reserved88 */ + { (ASN_TAG_CLASS_CONTEXT | (89 << 2)), 89, 0, 0 }, /* reserved89 */ + { (ASN_TAG_CLASS_CONTEXT | (90 << 2)), 90, 0, 0 }, /* reserved90 */ + { (ASN_TAG_CLASS_CONTEXT | (91 << 2)), 91, 0, 0 }, /* vehicleBreakdown91 */ + { (ASN_TAG_CLASS_CONTEXT | (92 << 2)), 92, 0, 0 }, /* postCrash92 */ + { (ASN_TAG_CLASS_CONTEXT | (93 << 2)), 93, 0, 0 }, /* humanProblem93 */ + { (ASN_TAG_CLASS_CONTEXT | (94 << 2)), 94, 0, 0 }, /* stationaryVehicle94 */ + { (ASN_TAG_CLASS_CONTEXT | (95 << 2)), 95, 0, 0 }, /* emergencyVehicleApproaching95 */ + { (ASN_TAG_CLASS_CONTEXT | (96 << 2)), 96, 0, 0 }, /* hazardousLocation-DangerousCurve96 */ + { (ASN_TAG_CLASS_CONTEXT | (97 << 2)), 97, 0, 0 }, /* collisionRisk97 */ + { (ASN_TAG_CLASS_CONTEXT | (98 << 2)), 98, 0, 0 }, /* signalViolation98 */ + { (ASN_TAG_CLASS_CONTEXT | (99 << 2)), 99, 0, 0 }, /* dangerousSituation99 */ + { (ASN_TAG_CLASS_CONTEXT | (100 << 2)), 100, 0, 0 }, /* railwayLevelCrossing100 */ + { (ASN_TAG_CLASS_CONTEXT | (101 << 2)), 101, 0, 0 }, /* reserved101 */ + { (ASN_TAG_CLASS_CONTEXT | (102 << 2)), 102, 0, 0 }, /* reserved102 */ + { (ASN_TAG_CLASS_CONTEXT | (103 << 2)), 103, 0, 0 }, /* reserved103 */ + { (ASN_TAG_CLASS_CONTEXT | (104 << 2)), 104, 0, 0 }, /* reserved104 */ + { (ASN_TAG_CLASS_CONTEXT | (105 << 2)), 105, 0, 0 }, /* reserved105 */ + { (ASN_TAG_CLASS_CONTEXT | (106 << 2)), 106, 0, 0 }, /* reserved106 */ + { (ASN_TAG_CLASS_CONTEXT | (107 << 2)), 107, 0, 0 }, /* reserved107 */ + { (ASN_TAG_CLASS_CONTEXT | (108 << 2)), 108, 0, 0 }, /* reserved108 */ + { (ASN_TAG_CLASS_CONTEXT | (109 << 2)), 109, 0, 0 }, /* reserved109 */ + { (ASN_TAG_CLASS_CONTEXT | (110 << 2)), 110, 0, 0 }, /* reserved110 */ + { (ASN_TAG_CLASS_CONTEXT | (111 << 2)), 111, 0, 0 }, /* reserved111 */ + { (ASN_TAG_CLASS_CONTEXT | (112 << 2)), 112, 0, 0 }, /* reserved112 */ + { (ASN_TAG_CLASS_CONTEXT | (113 << 2)), 113, 0, 0 }, /* reserved113 */ + { (ASN_TAG_CLASS_CONTEXT | (114 << 2)), 114, 0, 0 }, /* reserved114 */ + { (ASN_TAG_CLASS_CONTEXT | (115 << 2)), 115, 0, 0 }, /* reserved115 */ + { (ASN_TAG_CLASS_CONTEXT | (116 << 2)), 116, 0, 0 }, /* reserved116 */ + { (ASN_TAG_CLASS_CONTEXT | (117 << 2)), 117, 0, 0 }, /* reserved117 */ + { (ASN_TAG_CLASS_CONTEXT | (118 << 2)), 118, 0, 0 }, /* reserved118 */ + { (ASN_TAG_CLASS_CONTEXT | (119 << 2)), 119, 0, 0 }, /* reserved119 */ + { (ASN_TAG_CLASS_CONTEXT | (120 << 2)), 120, 0, 0 }, /* reserved120 */ + { (ASN_TAG_CLASS_CONTEXT | (121 << 2)), 121, 0, 0 }, /* reserved121 */ + { (ASN_TAG_CLASS_CONTEXT | (122 << 2)), 122, 0, 0 }, /* reserved122 */ + { (ASN_TAG_CLASS_CONTEXT | (123 << 2)), 123, 0, 0 }, /* reserved123 */ + { (ASN_TAG_CLASS_CONTEXT | (124 << 2)), 124, 0, 0 }, /* reserved124 */ + { (ASN_TAG_CLASS_CONTEXT | (125 << 2)), 125, 0, 0 }, /* reserved125 */ + { (ASN_TAG_CLASS_CONTEXT | (126 << 2)), 126, 0, 0 }, /* reserved126 */ + { (ASN_TAG_CLASS_CONTEXT | (127 << 2)), 127, 0, 0 }, /* reserved127 */ + { (ASN_TAG_CLASS_CONTEXT | (128 << 2)), 128, 0, 0 } /* reserved128 */ +}; +asn_CHOICE_specifics_t asn_SPC_CauseCodeChoice_specs_1 = { + sizeof(struct CauseCodeChoice), + offsetof(struct CauseCodeChoice, _asn_ctx), + offsetof(struct CauseCodeChoice, present), + sizeof(((struct CauseCodeChoice *)0)->present), + asn_MAP_CauseCodeChoice_tag2el_1, + 129, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_CauseCodeChoice = { + "CauseCodeChoice", + "CauseCodeChoice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CauseCodeChoice_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseCodeChoice_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_CauseCodeChoice_1, + 129, /* Elements count */ + &asn_SPC_CauseCodeChoice_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeType.c b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeType.c new file mode 100644 index 000000000..4872c9542 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CauseCodeType.h" + +int +CauseCodeType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CauseCodeType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CauseCodeType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CauseCodeType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseCodeType = { + "CauseCodeType", + "CauseCodeType", + &asn_OP_NativeInteger, + asn_DEF_CauseCodeType_tags_1, + sizeof(asn_DEF_CauseCodeType_tags_1) + /sizeof(asn_DEF_CauseCodeType_tags_1[0]), /* 1 */ + asn_DEF_CauseCodeType_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseCodeType_tags_1) + /sizeof(asn_DEF_CauseCodeType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CauseCodeType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CauseCodeType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CauseCodeType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeV2.c b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeV2.c new file mode 100644 index 000000000..dfe68e814 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CauseCodeV2.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CauseCodeV2.h" + +static asn_TYPE_member_t asn_MBR_CauseCodeV2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CauseCodeV2, ccAndScc), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_CauseCodeChoice, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ccAndScc" + }, +}; +static const ber_tlv_tag_t asn_DEF_CauseCodeV2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CauseCodeV2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ccAndScc */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CauseCodeV2_specs_1 = { + sizeof(struct CauseCodeV2), + offsetof(struct CauseCodeV2, _asn_ctx), + asn_MAP_CauseCodeV2_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CauseCodeV2 = { + "CauseCodeV2", + "CauseCodeV2", + &asn_OP_SEQUENCE, + asn_DEF_CauseCodeV2_tags_1, + sizeof(asn_DEF_CauseCodeV2_tags_1) + /sizeof(asn_DEF_CauseCodeV2_tags_1[0]), /* 1 */ + asn_DEF_CauseCodeV2_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseCodeV2_tags_1) + /sizeof(asn_DEF_CauseCodeV2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CauseCodeV2_1, + 1, /* Elements count */ + &asn_SPC_CauseCodeV2_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZone.c b/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZone.c new file mode 100644 index 000000000..6555400d3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZone.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CenDsrcTollingZone.h" + +static asn_TYPE_member_t asn_MBR_CenDsrcTollingZone_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CenDsrcTollingZone, protectedZoneLatitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneLatitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct CenDsrcTollingZone, protectedZoneLongitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneLongitude" + }, + { ATF_POINTER, 1, offsetof(struct CenDsrcTollingZone, cenDsrcTollingZoneId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedZoneId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cenDsrcTollingZoneId" + }, +}; +static const int asn_MAP_CenDsrcTollingZone_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CenDsrcTollingZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CenDsrcTollingZone_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* protectedZoneLatitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* protectedZoneLongitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cenDsrcTollingZoneId */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CenDsrcTollingZone_specs_1 = { + sizeof(struct CenDsrcTollingZone), + offsetof(struct CenDsrcTollingZone, _asn_ctx), + asn_MAP_CenDsrcTollingZone_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CenDsrcTollingZone_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CenDsrcTollingZone = { + "CenDsrcTollingZone", + "CenDsrcTollingZone", + &asn_OP_SEQUENCE, + asn_DEF_CenDsrcTollingZone_tags_1, + sizeof(asn_DEF_CenDsrcTollingZone_tags_1) + /sizeof(asn_DEF_CenDsrcTollingZone_tags_1[0]), /* 1 */ + asn_DEF_CenDsrcTollingZone_tags_1, /* Same as above */ + sizeof(asn_DEF_CenDsrcTollingZone_tags_1) + /sizeof(asn_DEF_CenDsrcTollingZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CenDsrcTollingZone_1, + 3, /* Elements count */ + &asn_SPC_CenDsrcTollingZone_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZoneID.c b/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZoneID.c new file mode 100644 index 000000000..0f7f018b1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CenDsrcTollingZoneID.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CenDsrcTollingZoneID.h" + +int +CenDsrcTollingZoneID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 134217727)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using ProtectedZoneId, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CenDsrcTollingZoneID_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..134217727) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_CenDsrcTollingZoneID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 27, -1, 0, 134217727 } /* (0..134217727) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CenDsrcTollingZoneID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CenDsrcTollingZoneID = { + "CenDsrcTollingZoneID", + "CenDsrcTollingZoneID", + &asn_OP_NativeInteger, + asn_DEF_CenDsrcTollingZoneID_tags_1, + sizeof(asn_DEF_CenDsrcTollingZoneID_tags_1) + /sizeof(asn_DEF_CenDsrcTollingZoneID_tags_1[0]), /* 1 */ + asn_DEF_CenDsrcTollingZoneID_tags_1, /* Same as above */ + sizeof(asn_DEF_CenDsrcTollingZoneID_tags_1) + /sizeof(asn_DEF_CenDsrcTollingZoneID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CenDsrcTollingZoneID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CenDsrcTollingZoneID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CenDsrcTollingZoneID_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CircularShape.c b/etsi_its_coding/etsi_its_cpm_coding/src/CircularShape.c new file mode 100644 index 000000000..7fb59645e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CircularShape.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CircularShape.h" + +asn_TYPE_member_t asn_MBR_CircularShape_1[] = { + { ATF_POINTER, 1, offsetof(struct CircularShape, shapeReferencePoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shapeReferencePoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct CircularShape, radius), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radius" + }, + { ATF_POINTER, 1, offsetof(struct CircularShape, height), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, +}; +static const int asn_MAP_CircularShape_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_CircularShape_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CircularShape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shapeReferencePoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* radius */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* height */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CircularShape_specs_1 = { + sizeof(struct CircularShape), + offsetof(struct CircularShape, _asn_ctx), + asn_MAP_CircularShape_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CircularShape_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CircularShape = { + "CircularShape", + "CircularShape", + &asn_OP_SEQUENCE, + asn_DEF_CircularShape_tags_1, + sizeof(asn_DEF_CircularShape_tags_1) + /sizeof(asn_DEF_CircularShape_tags_1[0]), /* 1 */ + asn_DEF_CircularShape_tags_1, /* Same as above */ + sizeof(asn_DEF_CircularShape_tags_1) + /sizeof(asn_DEF_CircularShape_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CircularShape_1, + 3, /* Elements count */ + &asn_SPC_CircularShape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClosedLanes.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClosedLanes.c new file mode 100644 index 000000000..8d3d09718 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClosedLanes.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClosedLanes.h" + +static asn_TYPE_member_t asn_MBR_ClosedLanes_1[] = { + { ATF_POINTER, 3, offsetof(struct ClosedLanes, innerhardShoulderStatus), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HardShoulderStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "innerhardShoulderStatus" + }, + { ATF_POINTER, 2, offsetof(struct ClosedLanes, outerhardShoulderStatus), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HardShoulderStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "outerhardShoulderStatus" + }, + { ATF_POINTER, 1, offsetof(struct ClosedLanes, drivingLaneStatus), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DrivingLaneStatus, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "drivingLaneStatus" + }, +}; +static const int asn_MAP_ClosedLanes_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ClosedLanes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ClosedLanes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* innerhardShoulderStatus */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* outerhardShoulderStatus */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* drivingLaneStatus */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ClosedLanes_specs_1 = { + sizeof(struct ClosedLanes), + offsetof(struct ClosedLanes, _asn_ctx), + asn_MAP_ClosedLanes_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ClosedLanes_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ClosedLanes = { + "ClosedLanes", + "ClosedLanes", + &asn_OP_SEQUENCE, + asn_DEF_ClosedLanes_tags_1, + sizeof(asn_DEF_ClosedLanes_tags_1) + /sizeof(asn_DEF_ClosedLanes_tags_1[0]), /* 1 */ + asn_DEF_ClosedLanes_tags_1, /* Same as above */ + sizeof(asn_DEF_ClosedLanes_tags_1) + /sizeof(asn_DEF_ClosedLanes_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ClosedLanes_1, + 3, /* Elements count */ + &asn_SPC_ClosedLanes_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupInfo.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupInfo.c new file mode 100644 index 000000000..f834ff7d6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClusterBreakupInfo.h" + +static asn_TYPE_member_t asn_MBR_ClusterBreakupInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ClusterBreakupInfo, clusterBreakupReason), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ClusterBreakupReason, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterBreakupReason" + }, + { ATF_NOFLAGS, 0, offsetof(struct ClusterBreakupInfo, breakupTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeQuarterSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "breakupTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_ClusterBreakupInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ClusterBreakupInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* clusterBreakupReason */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* breakupTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ClusterBreakupInfo_specs_1 = { + sizeof(struct ClusterBreakupInfo), + offsetof(struct ClusterBreakupInfo, _asn_ctx), + asn_MAP_ClusterBreakupInfo_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ClusterBreakupInfo = { + "ClusterBreakupInfo", + "ClusterBreakupInfo", + &asn_OP_SEQUENCE, + asn_DEF_ClusterBreakupInfo_tags_1, + sizeof(asn_DEF_ClusterBreakupInfo_tags_1) + /sizeof(asn_DEF_ClusterBreakupInfo_tags_1[0]), /* 1 */ + asn_DEF_ClusterBreakupInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_ClusterBreakupInfo_tags_1) + /sizeof(asn_DEF_ClusterBreakupInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ClusterBreakupInfo_1, + 2, /* Elements count */ + &asn_SPC_ClusterBreakupInfo_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupReason.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupReason.c new file mode 100644 index 000000000..61cfe6b04 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterBreakupReason.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClusterBreakupReason.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ClusterBreakupReason_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ClusterBreakupReason_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 6 } /* (0..6) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ClusterBreakupReason_value2enum_1[] = { + { 0, 11, "notProvided" }, + { 1, 26, "clusteringPurposeCompleted" }, + { 2, 34, "leaderMovedOutOfClusterBoundingBox" }, + { 3, 21, "joiningAnotherCluster" }, + { 4, 30, "enteringLowRiskAreaBasedOnMaps" }, + { 5, 31, "receptionOfCpmContainingCluster" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_ClusterBreakupReason_enum2value_1[] = { + 1, /* clusteringPurposeCompleted(1) */ + 4, /* enteringLowRiskAreaBasedOnMaps(4) */ + 3, /* joiningAnotherCluster(3) */ + 2, /* leaderMovedOutOfClusterBoundingBox(2) */ + 6, /* max(15) */ + 0, /* notProvided(0) */ + 5 /* receptionOfCpmContainingCluster(5) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ClusterBreakupReason_specs_1 = { + asn_MAP_ClusterBreakupReason_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ClusterBreakupReason_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ClusterBreakupReason_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ClusterBreakupReason = { + "ClusterBreakupReason", + "ClusterBreakupReason", + &asn_OP_NativeEnumerated, + asn_DEF_ClusterBreakupReason_tags_1, + sizeof(asn_DEF_ClusterBreakupReason_tags_1) + /sizeof(asn_DEF_ClusterBreakupReason_tags_1[0]), /* 1 */ + asn_DEF_ClusterBreakupReason_tags_1, /* Same as above */ + sizeof(asn_DEF_ClusterBreakupReason_tags_1) + /sizeof(asn_DEF_ClusterBreakupReason_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ClusterBreakupReason_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ClusterBreakupReason_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ClusterBreakupReason_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClusterJoinInfo.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterJoinInfo.c new file mode 100644 index 000000000..7e34e974e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterJoinInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClusterJoinInfo.h" + +static asn_TYPE_member_t asn_MBR_ClusterJoinInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ClusterJoinInfo, clusterId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ClusterJoinInfo, joinTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeQuarterSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "joinTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_ClusterJoinInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ClusterJoinInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* clusterId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* joinTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ClusterJoinInfo_specs_1 = { + sizeof(struct ClusterJoinInfo), + offsetof(struct ClusterJoinInfo, _asn_ctx), + asn_MAP_ClusterJoinInfo_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ClusterJoinInfo = { + "ClusterJoinInfo", + "ClusterJoinInfo", + &asn_OP_SEQUENCE, + asn_DEF_ClusterJoinInfo_tags_1, + sizeof(asn_DEF_ClusterJoinInfo_tags_1) + /sizeof(asn_DEF_ClusterJoinInfo_tags_1[0]), /* 1 */ + asn_DEF_ClusterJoinInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_ClusterJoinInfo_tags_1) + /sizeof(asn_DEF_ClusterJoinInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ClusterJoinInfo_1, + 2, /* Elements count */ + &asn_SPC_ClusterJoinInfo_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveInfo.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveInfo.c new file mode 100644 index 000000000..ad58690bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClusterLeaveInfo.h" + +static asn_TYPE_member_t asn_MBR_ClusterLeaveInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ClusterLeaveInfo, clusterId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ClusterLeaveInfo, clusterLeaveReason), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ClusterLeaveReason, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterLeaveReason" + }, +}; +static const ber_tlv_tag_t asn_DEF_ClusterLeaveInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ClusterLeaveInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* clusterId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* clusterLeaveReason */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ClusterLeaveInfo_specs_1 = { + sizeof(struct ClusterLeaveInfo), + offsetof(struct ClusterLeaveInfo, _asn_ctx), + asn_MAP_ClusterLeaveInfo_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ClusterLeaveInfo = { + "ClusterLeaveInfo", + "ClusterLeaveInfo", + &asn_OP_SEQUENCE, + asn_DEF_ClusterLeaveInfo_tags_1, + sizeof(asn_DEF_ClusterLeaveInfo_tags_1) + /sizeof(asn_DEF_ClusterLeaveInfo_tags_1[0]), /* 1 */ + asn_DEF_ClusterLeaveInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_ClusterLeaveInfo_tags_1) + /sizeof(asn_DEF_ClusterLeaveInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ClusterLeaveInfo_1, + 2, /* Elements count */ + &asn_SPC_ClusterLeaveInfo_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveReason.c b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveReason.c new file mode 100644 index 000000000..cc831ecdc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ClusterLeaveReason.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ClusterLeaveReason.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ClusterLeaveReason_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ClusterLeaveReason_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 9 } /* (0..9) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ClusterLeaveReason_value2enum_1[] = { + { 0, 11, "notProvided" }, + { 1, 17, "clusterLeaderLost" }, + { 2, 24, "clusterDisbandedByLeader" }, + { 3, 23, "outOfClusterBoundingBox" }, + { 4, 22, "outOfClusterSpeedRange" }, + { 5, 21, "joiningAnotherCluster" }, + { 6, 13, "cancelledJoin" }, + { 7, 10, "failedJoin" }, + { 8, 15, "safetyCondition" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_ClusterLeaveReason_enum2value_1[] = { + 6, /* cancelledJoin(6) */ + 2, /* clusterDisbandedByLeader(2) */ + 1, /* clusterLeaderLost(1) */ + 7, /* failedJoin(7) */ + 5, /* joiningAnotherCluster(5) */ + 9, /* max(15) */ + 0, /* notProvided(0) */ + 3, /* outOfClusterBoundingBox(3) */ + 4, /* outOfClusterSpeedRange(4) */ + 8 /* safetyCondition(8) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ClusterLeaveReason_specs_1 = { + asn_MAP_ClusterLeaveReason_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ClusterLeaveReason_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ClusterLeaveReason_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ClusterLeaveReason = { + "ClusterLeaveReason", + "ClusterLeaveReason", + &asn_OP_NativeEnumerated, + asn_DEF_ClusterLeaveReason_tags_1, + sizeof(asn_DEF_ClusterLeaveReason_tags_1) + /sizeof(asn_DEF_ClusterLeaveReason_tags_1[0]), /* 1 */ + asn_DEF_ClusterLeaveReason_tags_1, /* Same as above */ + sizeof(asn_DEF_ClusterLeaveReason_tags_1) + /sizeof(asn_DEF_ClusterLeaveReason_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ClusterLeaveReason_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ClusterLeaveReason_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ClusterLeaveReason_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CollectivePerceptionMessage.c b/etsi_its_coding/etsi_its_cpm_coding/src/CollectivePerceptionMessage.c new file mode 100644 index 000000000..c59e25684 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CollectivePerceptionMessage.c @@ -0,0 +1,115 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CollectivePerceptionMessage.h" + +static int +memb_header_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_header_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_header_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_CollectivePerceptionMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CollectivePerceptionMessage, header), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ItsPduHeader, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_header_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_header_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_header_constraint_1 + }, + 0, 0, /* No default value */ + "header" + }, + { ATF_NOFLAGS, 0, offsetof(struct CollectivePerceptionMessage, payload), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CpmPayload, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "payload" + }, +}; +static const ber_tlv_tag_t asn_DEF_CollectivePerceptionMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CollectivePerceptionMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* header */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* payload */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CollectivePerceptionMessage_specs_1 = { + sizeof(struct CollectivePerceptionMessage), + offsetof(struct CollectivePerceptionMessage, _asn_ctx), + asn_MAP_CollectivePerceptionMessage_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CollectivePerceptionMessage = { + "CollectivePerceptionMessage", + "CollectivePerceptionMessage", + &asn_OP_SEQUENCE, + asn_DEF_CollectivePerceptionMessage_tags_1, + sizeof(asn_DEF_CollectivePerceptionMessage_tags_1) + /sizeof(asn_DEF_CollectivePerceptionMessage_tags_1[0]), /* 1 */ + asn_DEF_CollectivePerceptionMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_CollectivePerceptionMessage_tags_1) + /sizeof(asn_DEF_CollectivePerceptionMessage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CollectivePerceptionMessage_1, + 2, /* Elements count */ + &asn_SPC_CollectivePerceptionMessage_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CollisionRiskSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/CollisionRiskSubCauseCode.c new file mode 100644 index 000000000..0ac312b41 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CollisionRiskSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CollisionRiskSubCauseCode.h" + +int +CollisionRiskSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CollisionRiskSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CollisionRiskSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CollisionRiskSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CollisionRiskSubCauseCode = { + "CollisionRiskSubCauseCode", + "CollisionRiskSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_CollisionRiskSubCauseCode_tags_1, + sizeof(asn_DEF_CollisionRiskSubCauseCode_tags_1) + /sizeof(asn_DEF_CollisionRiskSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_CollisionRiskSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_CollisionRiskSubCauseCode_tags_1) + /sizeof(asn_DEF_CollisionRiskSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CollisionRiskSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CollisionRiskSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CollisionRiskSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ConfidenceLevel.c b/etsi_its_coding/etsi_its_cpm_coding/src/ConfidenceLevel.c new file mode 100644 index 000000000..f621e2476 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ConfidenceLevel.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ConfidenceLevel.h" + +int +ConfidenceLevel_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 101)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ConfidenceLevel_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..101) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ConfidenceLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 101 } /* (1..101) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ConfidenceLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ConfidenceLevel = { + "ConfidenceLevel", + "ConfidenceLevel", + &asn_OP_NativeInteger, + asn_DEF_ConfidenceLevel_tags_1, + sizeof(asn_DEF_ConfidenceLevel_tags_1) + /sizeof(asn_DEF_ConfidenceLevel_tags_1[0]), /* 1 */ + asn_DEF_ConfidenceLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_ConfidenceLevel_tags_1) + /sizeof(asn_DEF_ConfidenceLevel_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ConfidenceLevel_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ConfidenceLevel_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ConfidenceLevel_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ConstraintWrappedCpmContainers.c b/etsi_its_coding/etsi_its_cpm_coding/src/ConstraintWrappedCpmContainers.c new file mode 100644 index 000000000..da92eb412 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ConstraintWrappedCpmContainers.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ConstraintWrappedCpmContainers.h" + +int +ConstraintWrappedCpmContainers_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 8)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using WrappedCpmContainers, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ConstraintWrappedCpmContainers_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ConstraintWrappedCpmContainers_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ConstraintWrappedCpmContainers_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ConstraintWrappedCpmContainers = { + "ConstraintWrappedCpmContainers", + "ConstraintWrappedCpmContainers", + &asn_OP_SEQUENCE_OF, + asn_DEF_ConstraintWrappedCpmContainers_tags_1, + sizeof(asn_DEF_ConstraintWrappedCpmContainers_tags_1) + /sizeof(asn_DEF_ConstraintWrappedCpmContainers_tags_1[0]), /* 1 */ + asn_DEF_ConstraintWrappedCpmContainers_tags_1, /* Same as above */ + sizeof(asn_DEF_ConstraintWrappedCpmContainers_tags_1) + /sizeof(asn_DEF_ConstraintWrappedCpmContainers_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ConstraintWrappedCpmContainers_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ConstraintWrappedCpmContainers_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ConstraintWrappedCpmContainers_constraint + }, + asn_MBR_WrappedCpmContainers_1, + 1, /* Single element */ + &asn_SPC_WrappedCpmContainers_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CoordinateConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/CoordinateConfidence.c new file mode 100644 index 000000000..dee8ec2f1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CoordinateConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CoordinateConfidence.h" + +int +CoordinateConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 4096)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CoordinateConfidence_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..4096) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CoordinateConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (1..4096) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CoordinateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CoordinateConfidence = { + "CoordinateConfidence", + "CoordinateConfidence", + &asn_OP_NativeInteger, + asn_DEF_CoordinateConfidence_tags_1, + sizeof(asn_DEF_CoordinateConfidence_tags_1) + /sizeof(asn_DEF_CoordinateConfidence_tags_1[0]), /* 1 */ + asn_DEF_CoordinateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_CoordinateConfidence_tags_1) + /sizeof(asn_DEF_CoordinateConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CoordinateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CoordinateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CoordinateConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationCellValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationCellValue.c new file mode 100644 index 000000000..dbfefdc0f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationCellValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CorrelationCellValue.h" + +int +CorrelationCellValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -100 && value <= 101)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CorrelationCellValue_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-100..101) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CorrelationCellValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, -100, 101 } /* (-100..101) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CorrelationCellValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CorrelationCellValue = { + "CorrelationCellValue", + "CorrelationCellValue", + &asn_OP_NativeInteger, + asn_DEF_CorrelationCellValue_tags_1, + sizeof(asn_DEF_CorrelationCellValue_tags_1) + /sizeof(asn_DEF_CorrelationCellValue_tags_1[0]), /* 1 */ + asn_DEF_CorrelationCellValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CorrelationCellValue_tags_1) + /sizeof(asn_DEF_CorrelationCellValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CorrelationCellValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CorrelationCellValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CorrelationCellValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationColumn.c b/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationColumn.c new file mode 100644 index 000000000..4e978eafd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CorrelationColumn.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CorrelationColumn.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CorrelationColumn_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CorrelationColumn_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 13 } /* (SIZE(1..13,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_CorrelationColumn_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_CorrelationCellValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CorrelationColumn_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CorrelationColumn_specs_1 = { + sizeof(struct CorrelationColumn), + offsetof(struct CorrelationColumn, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CorrelationColumn = { + "CorrelationColumn", + "CorrelationColumn", + &asn_OP_SEQUENCE_OF, + asn_DEF_CorrelationColumn_tags_1, + sizeof(asn_DEF_CorrelationColumn_tags_1) + /sizeof(asn_DEF_CorrelationColumn_tags_1[0]), /* 1 */ + asn_DEF_CorrelationColumn_tags_1, /* Same as above */ + sizeof(asn_DEF_CorrelationColumn_tags_1) + /sizeof(asn_DEF_CorrelationColumn_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CorrelationColumn_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CorrelationColumn_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_CorrelationColumn_1, + 1, /* Single element */ + &asn_SPC_CorrelationColumn_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CpmContainerId.c b/etsi_its_coding/etsi_its_cpm_coding/src/CpmContainerId.c new file mode 100644 index 000000000..55568fa21 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CpmContainerId.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CpmContainerId.h" + +int +CpmContainerId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CpmContainerId_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..16) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CpmContainerId_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (1..16) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CpmContainerId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CpmContainerId = { + "CpmContainerId", + "CpmContainerId", + &asn_OP_NativeInteger, + asn_DEF_CpmContainerId_tags_1, + sizeof(asn_DEF_CpmContainerId_tags_1) + /sizeof(asn_DEF_CpmContainerId_tags_1[0]), /* 1 */ + asn_DEF_CpmContainerId_tags_1, /* Same as above */ + sizeof(asn_DEF_CpmContainerId_tags_1) + /sizeof(asn_DEF_CpmContainerId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CpmContainerId_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CpmContainerId_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CpmContainerId_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CpmPayload.c b/etsi_its_coding/etsi_its_cpm_coding/src/CpmPayload.c new file mode 100644 index 000000000..e2185a68d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CpmPayload.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CpmPayload.h" + +asn_TYPE_member_t asn_MBR_CpmPayload_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CpmPayload, managementContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ManagementContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "managementContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct CpmPayload, cpmContainers), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConstraintWrappedCpmContainers, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cpmContainers" + }, +}; +static const ber_tlv_tag_t asn_DEF_CpmPayload_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CpmPayload_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* managementContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cpmContainers */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CpmPayload_specs_1 = { + sizeof(struct CpmPayload), + offsetof(struct CpmPayload, _asn_ctx), + asn_MAP_CpmPayload_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CpmPayload = { + "CpmPayload", + "CpmPayload", + &asn_OP_SEQUENCE, + asn_DEF_CpmPayload_tags_1, + sizeof(asn_DEF_CpmPayload_tags_1) + /sizeof(asn_DEF_CpmPayload_tags_1[0]), /* 1 */ + asn_DEF_CpmPayload_tags_1, /* Same as above */ + sizeof(asn_DEF_CpmPayload_tags_1) + /sizeof(asn_DEF_CpmPayload_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_CpmPayload_1, + 2, /* Elements count */ + &asn_SPC_CpmPayload_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Curvature.c b/etsi_its_coding/etsi_its_cpm_coding/src/Curvature.c new file mode 100644 index 000000000..5dba47841 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Curvature.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Curvature.h" + +static asn_TYPE_member_t asn_MBR_Curvature_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Curvature, curvatureValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CurvatureValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "curvatureValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct Curvature, curvatureConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CurvatureConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "curvatureConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Curvature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Curvature_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* curvatureValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* curvatureConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Curvature_specs_1 = { + sizeof(struct Curvature), + offsetof(struct Curvature, _asn_ctx), + asn_MAP_Curvature_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Curvature = { + "Curvature", + "Curvature", + &asn_OP_SEQUENCE, + asn_DEF_Curvature_tags_1, + sizeof(asn_DEF_Curvature_tags_1) + /sizeof(asn_DEF_Curvature_tags_1[0]), /* 1 */ + asn_DEF_Curvature_tags_1, /* Same as above */ + sizeof(asn_DEF_Curvature_tags_1) + /sizeof(asn_DEF_Curvature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Curvature_1, + 2, /* Elements count */ + &asn_SPC_Curvature_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureCalculationMode.c b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureCalculationMode.c new file mode 100644 index 000000000..537908918 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureCalculationMode.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CurvatureCalculationMode.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CurvatureCalculationMode_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_CurvatureCalculationMode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CurvatureCalculationMode_value2enum_1[] = { + { 0, 11, "yawRateUsed" }, + { 1, 14, "yawRateNotUsed" }, + { 2, 11, "unavailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CurvatureCalculationMode_enum2value_1[] = { + 2, /* unavailable(2) */ + 1, /* yawRateNotUsed(1) */ + 0 /* yawRateUsed(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_CurvatureCalculationMode_specs_1 = { + asn_MAP_CurvatureCalculationMode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CurvatureCalculationMode_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CurvatureCalculationMode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CurvatureCalculationMode = { + "CurvatureCalculationMode", + "CurvatureCalculationMode", + &asn_OP_NativeEnumerated, + asn_DEF_CurvatureCalculationMode_tags_1, + sizeof(asn_DEF_CurvatureCalculationMode_tags_1) + /sizeof(asn_DEF_CurvatureCalculationMode_tags_1[0]), /* 1 */ + asn_DEF_CurvatureCalculationMode_tags_1, /* Same as above */ + sizeof(asn_DEF_CurvatureCalculationMode_tags_1) + /sizeof(asn_DEF_CurvatureCalculationMode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CurvatureCalculationMode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CurvatureCalculationMode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CurvatureCalculationMode_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureConfidence.c new file mode 100644 index 000000000..22b6ca95b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureConfidence.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CurvatureConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CurvatureConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CurvatureConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_CurvatureConfidence_value2enum_1[] = { + { 0, 19, "onePerMeter-0-00002" }, + { 1, 18, "onePerMeter-0-0001" }, + { 2, 18, "onePerMeter-0-0005" }, + { 3, 17, "onePerMeter-0-002" }, + { 4, 16, "onePerMeter-0-01" }, + { 5, 15, "onePerMeter-0-1" }, + { 6, 10, "outOfRange" }, + { 7, 11, "unavailable" } +}; +static const unsigned int asn_MAP_CurvatureConfidence_enum2value_1[] = { + 0, /* onePerMeter-0-00002(0) */ + 1, /* onePerMeter-0-0001(1) */ + 2, /* onePerMeter-0-0005(2) */ + 3, /* onePerMeter-0-002(3) */ + 4, /* onePerMeter-0-01(4) */ + 5, /* onePerMeter-0-1(5) */ + 6, /* outOfRange(6) */ + 7 /* unavailable(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_CurvatureConfidence_specs_1 = { + asn_MAP_CurvatureConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CurvatureConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CurvatureConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CurvatureConfidence = { + "CurvatureConfidence", + "CurvatureConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_CurvatureConfidence_tags_1, + sizeof(asn_DEF_CurvatureConfidence_tags_1) + /sizeof(asn_DEF_CurvatureConfidence_tags_1[0]), /* 1 */ + asn_DEF_CurvatureConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_CurvatureConfidence_tags_1) + /sizeof(asn_DEF_CurvatureConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CurvatureConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CurvatureConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CurvatureConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureValue.c new file mode 100644 index 000000000..e8ce145f0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/CurvatureValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/CurvatureValue.h" + +int +CurvatureValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1023 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_CurvatureValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-1023..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_CurvatureValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, -1023, 1023 } /* (-1023..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_CurvatureValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CurvatureValue = { + "CurvatureValue", + "CurvatureValue", + &asn_OP_NativeInteger, + asn_DEF_CurvatureValue_tags_1, + sizeof(asn_DEF_CurvatureValue_tags_1) + /sizeof(asn_DEF_CurvatureValue_tags_1[0]), /* 1 */ + asn_DEF_CurvatureValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CurvatureValue_tags_1) + /sizeof(asn_DEF_CurvatureValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_CurvatureValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_CurvatureValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CurvatureValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DangerousEndOfQueueSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousEndOfQueueSubCauseCode.c new file mode 100644 index 000000000..c3b62f418 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousEndOfQueueSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DangerousEndOfQueueSubCauseCode.h" + +int +DangerousEndOfQueueSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DangerousEndOfQueueSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DangerousEndOfQueueSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DangerousEndOfQueueSubCauseCode = { + "DangerousEndOfQueueSubCauseCode", + "DangerousEndOfQueueSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1, + sizeof(asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1) + /sizeof(asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1) + /sizeof(asn_DEF_DangerousEndOfQueueSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DangerousEndOfQueueSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DangerousEndOfQueueSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DangerousEndOfQueueSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsBasic.c b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsBasic.c new file mode 100644 index 000000000..efaffe728 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsBasic.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DangerousGoodsBasic.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DangerousGoodsBasic_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DangerousGoodsBasic_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 19 } /* (0..19) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_DangerousGoodsBasic_value2enum_1[] = { + { 0, 11, "explosives1" }, + { 1, 11, "explosives2" }, + { 2, 11, "explosives3" }, + { 3, 11, "explosives4" }, + { 4, 11, "explosives5" }, + { 5, 11, "explosives6" }, + { 6, 14, "flammableGases" }, + { 7, 17, "nonFlammableGases" }, + { 8, 10, "toxicGases" }, + { 9, 16, "flammableLiquids" }, + { 10, 15, "flammableSolids" }, + { 11, 39, "substancesLiableToSpontaneousCombustion" }, + { 12, 52, "substancesEmittingFlammableGasesUponContactWithWater" }, + { 13, 19, "oxidizingSubstances" }, + { 14, 16, "organicPeroxides" }, + { 15, 15, "toxicSubstances" }, + { 16, 20, "infectiousSubstances" }, + { 17, 19, "radioactiveMaterial" }, + { 18, 19, "corrosiveSubstances" }, + { 19, 32, "miscellaneousDangerousSubstances" } +}; +static const unsigned int asn_MAP_DangerousGoodsBasic_enum2value_1[] = { + 18, /* corrosiveSubstances(18) */ + 0, /* explosives1(0) */ + 1, /* explosives2(1) */ + 2, /* explosives3(2) */ + 3, /* explosives4(3) */ + 4, /* explosives5(4) */ + 5, /* explosives6(5) */ + 6, /* flammableGases(6) */ + 9, /* flammableLiquids(9) */ + 10, /* flammableSolids(10) */ + 16, /* infectiousSubstances(16) */ + 19, /* miscellaneousDangerousSubstances(19) */ + 7, /* nonFlammableGases(7) */ + 14, /* organicPeroxides(14) */ + 13, /* oxidizingSubstances(13) */ + 17, /* radioactiveMaterial(17) */ + 12, /* substancesEmittingFlammableGasesUponContactWithWater(12) */ + 11, /* substancesLiableToSpontaneousCombustion(11) */ + 8, /* toxicGases(8) */ + 15 /* toxicSubstances(15) */ +}; +const asn_INTEGER_specifics_t asn_SPC_DangerousGoodsBasic_specs_1 = { + asn_MAP_DangerousGoodsBasic_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DangerousGoodsBasic_enum2value_1, /* N => "tag"; sorted by N */ + 20, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DangerousGoodsBasic_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DangerousGoodsBasic = { + "DangerousGoodsBasic", + "DangerousGoodsBasic", + &asn_OP_NativeEnumerated, + asn_DEF_DangerousGoodsBasic_tags_1, + sizeof(asn_DEF_DangerousGoodsBasic_tags_1) + /sizeof(asn_DEF_DangerousGoodsBasic_tags_1[0]), /* 1 */ + asn_DEF_DangerousGoodsBasic_tags_1, /* Same as above */ + sizeof(asn_DEF_DangerousGoodsBasic_tags_1) + /sizeof(asn_DEF_DangerousGoodsBasic_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DangerousGoodsBasic_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DangerousGoodsBasic_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DangerousGoodsBasic_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsExtended.c b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsExtended.c new file mode 100644 index 000000000..fd51353de --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousGoodsExtended.c @@ -0,0 +1,327 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DangerousGoodsExtended.h" + +static int check_permitted_alphabet_7(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +static int +memb_unNumber_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9999)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_emergencyActionCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 24) + && !check_permitted_alphabet_7(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_companyName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = UTF8String_length(st); + if((ssize_t)size < 0) { + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8: broken encoding (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((size >= 1 && size <= 24)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_unNumber_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..9999) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_unNumber_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 9999 } /* (0..9999) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_emergencyActionCode_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..24)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_emergencyActionCode_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 5, 5, 1, 24 } /* (SIZE(1..24)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_companyName_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_companyName_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_DangerousGoodsExtended_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DangerousGoodsExtended, dangerousGoodsType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DangerousGoodsBasic, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "dangerousGoodsType" + }, + { ATF_NOFLAGS, 0, offsetof(struct DangerousGoodsExtended, unNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_unNumber_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_unNumber_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_unNumber_constraint_1 + }, + 0, 0, /* No default value */ + "unNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct DangerousGoodsExtended, elevatedTemperature), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elevatedTemperature" + }, + { ATF_NOFLAGS, 0, offsetof(struct DangerousGoodsExtended, tunnelsRestricted), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "tunnelsRestricted" + }, + { ATF_NOFLAGS, 0, offsetof(struct DangerousGoodsExtended, limitedQuantity), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "limitedQuantity" + }, + { ATF_POINTER, 3, offsetof(struct DangerousGoodsExtended, emergencyActionCode), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IA5String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_emergencyActionCode_constr_7, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_emergencyActionCode_constr_7, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_emergencyActionCode_constraint_1 + }, + 0, 0, /* No default value */ + "emergencyActionCode" + }, + { ATF_POINTER, 2, offsetof(struct DangerousGoodsExtended, phoneNumber), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PhoneNumber, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "phoneNumber" + }, + { ATF_POINTER, 1, offsetof(struct DangerousGoodsExtended, companyName), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UTF8String, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_companyName_constr_9, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_companyName_constr_9, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_companyName_constraint_1 + }, + 0, 0, /* No default value */ + "companyName" + }, +}; +static const int asn_MAP_DangerousGoodsExtended_oms_1[] = { 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_DangerousGoodsExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DangerousGoodsExtended_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dangerousGoodsType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* unNumber */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* elevatedTemperature */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* tunnelsRestricted */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* limitedQuantity */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* emergencyActionCode */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* phoneNumber */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* companyName */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DangerousGoodsExtended_specs_1 = { + sizeof(struct DangerousGoodsExtended), + offsetof(struct DangerousGoodsExtended, _asn_ctx), + asn_MAP_DangerousGoodsExtended_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_DangerousGoodsExtended_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DangerousGoodsExtended = { + "DangerousGoodsExtended", + "DangerousGoodsExtended", + &asn_OP_SEQUENCE, + asn_DEF_DangerousGoodsExtended_tags_1, + sizeof(asn_DEF_DangerousGoodsExtended_tags_1) + /sizeof(asn_DEF_DangerousGoodsExtended_tags_1[0]), /* 1 */ + asn_DEF_DangerousGoodsExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_DangerousGoodsExtended_tags_1) + /sizeof(asn_DEF_DangerousGoodsExtended_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DangerousGoodsExtended_1, + 8, /* Elements count */ + &asn_SPC_DangerousGoodsExtended_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DangerousSituationSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousSituationSubCauseCode.c new file mode 100644 index 000000000..907566ea1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DangerousSituationSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DangerousSituationSubCauseCode.h" + +int +DangerousSituationSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DangerousSituationSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DangerousSituationSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DangerousSituationSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DangerousSituationSubCauseCode = { + "DangerousSituationSubCauseCode", + "DangerousSituationSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_DangerousSituationSubCauseCode_tags_1, + sizeof(asn_DEF_DangerousSituationSubCauseCode_tags_1) + /sizeof(asn_DEF_DangerousSituationSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_DangerousSituationSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_DangerousSituationSubCauseCode_tags_1) + /sizeof(asn_DEF_DangerousSituationSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DangerousSituationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DangerousSituationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DangerousSituationSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaAltitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaAltitude.c new file mode 100644 index 000000000..f14d4ca45 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaAltitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaAltitude.h" + +int +DeltaAltitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -12700 && value <= 12800)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaAltitude_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-12700..12800) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaAltitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, -12700, 12800 } /* (-12700..12800) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaAltitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaAltitude = { + "DeltaAltitude", + "DeltaAltitude", + &asn_OP_NativeInteger, + asn_DEF_DeltaAltitude_tags_1, + sizeof(asn_DEF_DeltaAltitude_tags_1) + /sizeof(asn_DEF_DeltaAltitude_tags_1[0]), /* 1 */ + asn_DEF_DeltaAltitude_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaAltitude_tags_1) + /sizeof(asn_DEF_DeltaAltitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaAltitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaAltitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaAltitude_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLatitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLatitude.c new file mode 100644 index 000000000..cdfefc066 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLatitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaLatitude.h" + +int +DeltaLatitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -131071 && value <= 131072)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaLatitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-131071..131072) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaLatitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, -131071, 131072 } /* (-131071..131072) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaLatitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaLatitude = { + "DeltaLatitude", + "DeltaLatitude", + &asn_OP_NativeInteger, + asn_DEF_DeltaLatitude_tags_1, + sizeof(asn_DEF_DeltaLatitude_tags_1) + /sizeof(asn_DEF_DeltaLatitude_tags_1[0]), /* 1 */ + asn_DEF_DeltaLatitude_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaLatitude_tags_1) + /sizeof(asn_DEF_DeltaLatitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaLatitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaLatitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaLatitude_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLongitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLongitude.c new file mode 100644 index 000000000..f089d8adb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaLongitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaLongitude.h" + +int +DeltaLongitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -131071 && value <= 131072)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaLongitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-131071..131072) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaLongitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, -131071, 131072 } /* (-131071..131072) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaLongitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaLongitude = { + "DeltaLongitude", + "DeltaLongitude", + &asn_OP_NativeInteger, + asn_DEF_DeltaLongitude_tags_1, + sizeof(asn_DEF_DeltaLongitude_tags_1) + /sizeof(asn_DEF_DeltaLongitude_tags_1[0]), /* 1 */ + asn_DEF_DeltaLongitude_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaLongitude_tags_1) + /sizeof(asn_DEF_DeltaLongitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaLongitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaLongitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaLongitude_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaReferencePosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaReferencePosition.c new file mode 100644 index 000000000..119b2ac61 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaReferencePosition.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaReferencePosition.h" + +asn_TYPE_member_t asn_MBR_DeltaReferencePosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DeltaReferencePosition, deltaLatitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaLatitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "deltaLatitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct DeltaReferencePosition, deltaLongitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaLongitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "deltaLongitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct DeltaReferencePosition, deltaAltitude), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaAltitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "deltaAltitude" + }, +}; +static const ber_tlv_tag_t asn_DEF_DeltaReferencePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DeltaReferencePosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* deltaLatitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* deltaLongitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* deltaAltitude */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DeltaReferencePosition_specs_1 = { + sizeof(struct DeltaReferencePosition), + offsetof(struct DeltaReferencePosition, _asn_ctx), + asn_MAP_DeltaReferencePosition_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DeltaReferencePosition = { + "DeltaReferencePosition", + "DeltaReferencePosition", + &asn_OP_SEQUENCE, + asn_DEF_DeltaReferencePosition_tags_1, + sizeof(asn_DEF_DeltaReferencePosition_tags_1) + /sizeof(asn_DEF_DeltaReferencePosition_tags_1[0]), /* 1 */ + asn_DEF_DeltaReferencePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaReferencePosition_tags_1) + /sizeof(asn_DEF_DeltaReferencePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_DeltaReferencePosition_1, + 3, /* Elements count */ + &asn_SPC_DeltaReferencePosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondPositive.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondPositive.c new file mode 100644 index 000000000..bb1ee49cb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondPositive.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaTimeMilliSecondPositive.h" + +int +DeltaTimeMilliSecondPositive_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 10000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTimeMilliSecondPositive_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..10000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_DeltaTimeMilliSecondPositive_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 1, 10000 } /* (1..10000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTimeMilliSecondPositive_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTimeMilliSecondPositive = { + "DeltaTimeMilliSecondPositive", + "DeltaTimeMilliSecondPositive", + &asn_OP_NativeInteger, + asn_DEF_DeltaTimeMilliSecondPositive_tags_1, + sizeof(asn_DEF_DeltaTimeMilliSecondPositive_tags_1) + /sizeof(asn_DEF_DeltaTimeMilliSecondPositive_tags_1[0]), /* 1 */ + asn_DEF_DeltaTimeMilliSecondPositive_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTimeMilliSecondPositive_tags_1) + /sizeof(asn_DEF_DeltaTimeMilliSecondPositive_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTimeMilliSecondPositive_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTimeMilliSecondPositive_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTimeMilliSecondPositive_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondSigned.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondSigned.c new file mode 100644 index 000000000..3e9a95edc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeMilliSecondSigned.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaTimeMilliSecondSigned.h" + +int +DeltaTimeMilliSecondSigned_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -2048 && value <= 2047)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTimeMilliSecondSigned_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-2048..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaTimeMilliSecondSigned_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, -2048, 2047 } /* (-2048..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTimeMilliSecondSigned_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTimeMilliSecondSigned = { + "DeltaTimeMilliSecondSigned", + "DeltaTimeMilliSecondSigned", + &asn_OP_NativeInteger, + asn_DEF_DeltaTimeMilliSecondSigned_tags_1, + sizeof(asn_DEF_DeltaTimeMilliSecondSigned_tags_1) + /sizeof(asn_DEF_DeltaTimeMilliSecondSigned_tags_1[0]), /* 1 */ + asn_DEF_DeltaTimeMilliSecondSigned_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTimeMilliSecondSigned_tags_1) + /sizeof(asn_DEF_DeltaTimeMilliSecondSigned_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTimeMilliSecondSigned_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTimeMilliSecondSigned_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTimeMilliSecondSigned_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeQuarterSecond.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeQuarterSecond.c new file mode 100644 index 000000000..0907eb2d2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeQuarterSecond.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaTimeQuarterSecond.h" + +int +DeltaTimeQuarterSecond_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTimeQuarterSecond_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaTimeQuarterSecond_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (1..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTimeQuarterSecond_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTimeQuarterSecond = { + "DeltaTimeQuarterSecond", + "DeltaTimeQuarterSecond", + &asn_OP_NativeInteger, + asn_DEF_DeltaTimeQuarterSecond_tags_1, + sizeof(asn_DEF_DeltaTimeQuarterSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeQuarterSecond_tags_1[0]), /* 1 */ + asn_DEF_DeltaTimeQuarterSecond_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTimeQuarterSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeQuarterSecond_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTimeQuarterSecond_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTimeQuarterSecond_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTimeQuarterSecond_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeSecond.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeSecond.c new file mode 100644 index 000000000..564afdf21 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeSecond.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaTimeSecond.h" + +int +DeltaTimeSecond_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTimeSecond_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..86400) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_DeltaTimeSecond_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 0, 86400 } /* (0..86400) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTimeSecond_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTimeSecond = { + "DeltaTimeSecond", + "DeltaTimeSecond", + &asn_OP_NativeInteger, + asn_DEF_DeltaTimeSecond_tags_1, + sizeof(asn_DEF_DeltaTimeSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeSecond_tags_1[0]), /* 1 */ + asn_DEF_DeltaTimeSecond_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTimeSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeSecond_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTimeSecond_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTimeSecond_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTimeSecond_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeTenthOfSecond.c b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeTenthOfSecond.c new file mode 100644 index 000000000..44abbc182 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DeltaTimeTenthOfSecond.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DeltaTimeTenthOfSecond.h" + +int +DeltaTimeTenthOfSecond_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DeltaTimeTenthOfSecond_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DeltaTimeTenthOfSecond_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DeltaTimeTenthOfSecond_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeltaTimeTenthOfSecond = { + "DeltaTimeTenthOfSecond", + "DeltaTimeTenthOfSecond", + &asn_OP_NativeInteger, + asn_DEF_DeltaTimeTenthOfSecond_tags_1, + sizeof(asn_DEF_DeltaTimeTenthOfSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeTenthOfSecond_tags_1[0]), /* 1 */ + asn_DEF_DeltaTimeTenthOfSecond_tags_1, /* Same as above */ + sizeof(asn_DEF_DeltaTimeTenthOfSecond_tags_1) + /sizeof(asn_DEF_DeltaTimeTenthOfSecond_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DeltaTimeTenthOfSecond_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DeltaTimeTenthOfSecond_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DeltaTimeTenthOfSecond_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DigitalMap.c b/etsi_its_coding/etsi_its_cpm_coding/src/DigitalMap.c new file mode 100644 index 000000000..13ff56be9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DigitalMap.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DigitalMap.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DigitalMap_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_DigitalMap_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_DigitalMap_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReferencePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_DigitalMap_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_DigitalMap_specs_1 = { + sizeof(struct DigitalMap), + offsetof(struct DigitalMap, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_DigitalMap = { + "DigitalMap", + "DigitalMap", + &asn_OP_SEQUENCE_OF, + asn_DEF_DigitalMap_tags_1, + sizeof(asn_DEF_DigitalMap_tags_1) + /sizeof(asn_DEF_DigitalMap_tags_1[0]), /* 1 */ + asn_DEF_DigitalMap_tags_1, /* Same as above */ + sizeof(asn_DEF_DigitalMap_tags_1) + /sizeof(asn_DEF_DigitalMap_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DigitalMap_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DigitalMap_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_DigitalMap_1, + 1, /* Single element */ + &asn_SPC_DigitalMap_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Direction.c b/etsi_its_coding/etsi_its_cpm_coding/src/Direction.c new file mode 100644 index 000000000..31f7fe51d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Direction.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Direction.h" + +int +Direction_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Direction_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..3) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Direction_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Direction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Direction = { + "Direction", + "Direction", + &asn_OP_NativeInteger, + asn_DEF_Direction_tags_1, + sizeof(asn_DEF_Direction_tags_1) + /sizeof(asn_DEF_Direction_tags_1[0]), /* 1 */ + asn_DEF_Direction_tags_1, /* Same as above */ + sizeof(asn_DEF_Direction_tags_1) + /sizeof(asn_DEF_Direction_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Direction_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Direction_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Direction_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DriveDirection.c b/etsi_its_coding/etsi_its_cpm_coding/src/DriveDirection.c new file mode 100644 index 000000000..a6b3d545b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DriveDirection.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DriveDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DriveDirection_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_DriveDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_DriveDirection_value2enum_1[] = { + { 0, 7, "forward" }, + { 1, 8, "backward" }, + { 2, 11, "unavailable" } +}; +static const unsigned int asn_MAP_DriveDirection_enum2value_1[] = { + 1, /* backward(1) */ + 0, /* forward(0) */ + 2 /* unavailable(2) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_DriveDirection_specs_1 = { + asn_MAP_DriveDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DriveDirection_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DriveDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DriveDirection = { + "DriveDirection", + "DriveDirection", + &asn_OP_NativeEnumerated, + asn_DEF_DriveDirection_tags_1, + sizeof(asn_DEF_DriveDirection_tags_1) + /sizeof(asn_DEF_DriveDirection_tags_1[0]), /* 1 */ + asn_DEF_DriveDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_DriveDirection_tags_1) + /sizeof(asn_DEF_DriveDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DriveDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DriveDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DriveDirection_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/DrivingLaneStatus.c b/etsi_its_coding/etsi_its_cpm_coding/src/DrivingLaneStatus.c new file mode 100644 index 000000000..458e7dcdf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/DrivingLaneStatus.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/DrivingLaneStatus.h" + +int +DrivingLaneStatus_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 13)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_DrivingLaneStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..13)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_DrivingLaneStatus_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 13 } /* (SIZE(1..13)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_DrivingLaneStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DrivingLaneStatus = { + "DrivingLaneStatus", + "DrivingLaneStatus", + &asn_OP_BIT_STRING, + asn_DEF_DrivingLaneStatus_tags_1, + sizeof(asn_DEF_DrivingLaneStatus_tags_1) + /sizeof(asn_DEF_DrivingLaneStatus_tags_1[0]), /* 1 */ + asn_DEF_DrivingLaneStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_DrivingLaneStatus_tags_1) + /sizeof(asn_DEF_DrivingLaneStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_DrivingLaneStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_DrivingLaneStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + DrivingLaneStatus_constraint + }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EXTERNAL.c b/etsi_its_coding/etsi_its_cpm_coding/src/EXTERNAL.c new file mode 100644 index 000000000..8f7b7a387 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EXTERNAL.c @@ -0,0 +1,228 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ASN1C-UsefulInformationObjectClasses" + * found in "/usr/local/share/asn1c/standard-modules/ASN1C-UsefulInformationObjectClasses.asn1" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EXTERNAL.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_encoding_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_encoding_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_encoding_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.single_ASN1_type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ANY, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "single-ASN1-type" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.octet_aligned), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "octet-aligned" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL__encoding, choice.arbitrary), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "arbitrary" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_encoding_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* arbitrary */ +}; +static asn_CHOICE_specifics_t asn_SPC_encoding_specs_5 = { + sizeof(struct EXTERNAL__encoding), + offsetof(struct EXTERNAL__encoding, _asn_ctx), + offsetof(struct EXTERNAL__encoding, present), + sizeof(((struct EXTERNAL__encoding *)0)->present), + asn_MAP_encoding_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_encoding_5 = { + "encoding", + "encoding", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_encoding_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_encoding_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_encoding_5, + 3, /* Elements count */ + &asn_SPC_encoding_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_EXTERNAL_1[] = { + { ATF_POINTER, 3, offsetof(struct EXTERNAL, direct_reference), + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), + 0, + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direct-reference" + }, + { ATF_POINTER, 2, offsetof(struct EXTERNAL, indirect_reference), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "indirect-reference" + }, + { ATF_POINTER, 1, offsetof(struct EXTERNAL, data_value_descriptor), + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), + 0, + &asn_DEF_ObjectDescriptor, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "data-value-descriptor" + }, + { ATF_NOFLAGS, 0, offsetof(struct EXTERNAL, encoding), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_encoding_5, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "encoding" + }, +}; +static const int asn_MAP_EXTERNAL_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_EXTERNAL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (8 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EXTERNAL_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* indirect-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 0, 0, 0 }, /* direct-reference */ + { (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), 2, 0, 0 }, /* data-value-descriptor */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* single-ASN1-type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* octet-aligned */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 } /* arbitrary */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EXTERNAL_specs_1 = { + sizeof(struct EXTERNAL), + offsetof(struct EXTERNAL, _asn_ctx), + asn_MAP_EXTERNAL_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_EXTERNAL_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EXTERNAL = { + "EXTERNAL", + "EXTERNAL", + &asn_OP_SEQUENCE, + asn_DEF_EXTERNAL_tags_1, + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]) - 1, /* 1 */ + asn_DEF_EXTERNAL_tags_1, /* Same as above */ + sizeof(asn_DEF_EXTERNAL_tags_1) + /sizeof(asn_DEF_EXTERNAL_tags_1[0]), /* 2 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EXTERNAL_1, + 4, /* Elements count */ + &asn_SPC_EXTERNAL_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EllipticalShape.c b/etsi_its_coding/etsi_its_cpm_coding/src/EllipticalShape.c new file mode 100644 index 000000000..5fd4d7fcc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EllipticalShape.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EllipticalShape.h" + +asn_TYPE_member_t asn_MBR_EllipticalShape_1[] = { + { ATF_POINTER, 1, offsetof(struct EllipticalShape, shapeReferencePoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shapeReferencePoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct EllipticalShape, semiMajorAxisLength), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajorAxisLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct EllipticalShape, semiMinorAxisLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMinorAxisLength" + }, + { ATF_POINTER, 2, offsetof(struct EllipticalShape, orientation), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "orientation" + }, + { ATF_POINTER, 1, offsetof(struct EllipticalShape, height), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, +}; +static const int asn_MAP_EllipticalShape_oms_1[] = { 0, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_EllipticalShape_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EllipticalShape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shapeReferencePoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiMajorAxisLength */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* semiMinorAxisLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* orientation */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* height */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EllipticalShape_specs_1 = { + sizeof(struct EllipticalShape), + offsetof(struct EllipticalShape, _asn_ctx), + asn_MAP_EllipticalShape_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_EllipticalShape_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EllipticalShape = { + "EllipticalShape", + "EllipticalShape", + &asn_OP_SEQUENCE, + asn_DEF_EllipticalShape_tags_1, + sizeof(asn_DEF_EllipticalShape_tags_1) + /sizeof(asn_DEF_EllipticalShape_tags_1[0]), /* 1 */ + asn_DEF_EllipticalShape_tags_1, /* Same as above */ + sizeof(asn_DEF_EllipticalShape_tags_1) + /sizeof(asn_DEF_EllipticalShape_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EllipticalShape_1, + 5, /* Elements count */ + &asn_SPC_EllipticalShape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EmbarkationStatus.c b/etsi_its_coding/etsi_its_cpm_coding/src/EmbarkationStatus.c new file mode 100644 index 000000000..0d589a890 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EmbarkationStatus.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EmbarkationStatus.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_EmbarkationStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EmbarkationStatus = { + "EmbarkationStatus", + "EmbarkationStatus", + &asn_OP_BOOLEAN, + asn_DEF_EmbarkationStatus_tags_1, + sizeof(asn_DEF_EmbarkationStatus_tags_1) + /sizeof(asn_DEF_EmbarkationStatus_tags_1[0]), /* 1 */ + asn_DEF_EmbarkationStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_EmbarkationStatus_tags_1) + /sizeof(asn_DEF_EmbarkationStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyPriority.c b/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyPriority.c new file mode 100644 index 000000000..2454ce324 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyPriority.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EmergencyPriority.h" + +int +EmergencyPriority_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EmergencyPriority_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_EmergencyPriority_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EmergencyPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EmergencyPriority = { + "EmergencyPriority", + "EmergencyPriority", + &asn_OP_BIT_STRING, + asn_DEF_EmergencyPriority_tags_1, + sizeof(asn_DEF_EmergencyPriority_tags_1) + /sizeof(asn_DEF_EmergencyPriority_tags_1[0]), /* 1 */ + asn_DEF_EmergencyPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_EmergencyPriority_tags_1) + /sizeof(asn_DEF_EmergencyPriority_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EmergencyPriority_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EmergencyPriority_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EmergencyPriority_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyVehicleApproachingSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyVehicleApproachingSubCauseCode.c new file mode 100644 index 000000000..2400a1eec --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EmergencyVehicleApproachingSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EmergencyVehicleApproachingSubCauseCode.h" + +int +EmergencyVehicleApproachingSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EmergencyVehicleApproachingSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EmergencyVehicleApproachingSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EmergencyVehicleApproachingSubCauseCode = { + "EmergencyVehicleApproachingSubCauseCode", + "EmergencyVehicleApproachingSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1, + sizeof(asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1) + /sizeof(asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1) + /sizeof(asn_DEF_EmergencyVehicleApproachingSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EmergencyVehicleApproachingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EmergencyVehicleApproachingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EmergencyVehicleApproachingSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EnergyStorageType.c b/etsi_its_coding/etsi_its_cpm_coding/src/EnergyStorageType.c new file mode 100644 index 000000000..616930e8a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EnergyStorageType.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EnergyStorageType.h" + +int +EnergyStorageType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EnergyStorageType_constr_1 CC_NOTUSED = { + { 0, 0 }, + 7 /* (SIZE(7..7)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_EnergyStorageType_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EnergyStorageType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EnergyStorageType = { + "EnergyStorageType", + "EnergyStorageType", + &asn_OP_BIT_STRING, + asn_DEF_EnergyStorageType_tags_1, + sizeof(asn_DEF_EnergyStorageType_tags_1) + /sizeof(asn_DEF_EnergyStorageType_tags_1[0]), /* 1 */ + asn_DEF_EnergyStorageType_tags_1, /* Same as above */ + sizeof(asn_DEF_EnergyStorageType_tags_1) + /sizeof(asn_DEF_EnergyStorageType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EnergyStorageType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EnergyStorageType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EnergyStorageType_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryCode.c new file mode 100644 index 000000000..d24213178 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryCode.c @@ -0,0 +1,165 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EuVehicleCategoryCode.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EuVehicleCategoryCode_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_EuVehicleCategoryCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 5 } /* (0..5) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_EuVehicleCategoryCode_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryL), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EuVehicleCategoryL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryL" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryM), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EuVehicleCategoryM, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryM" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryN), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EuVehicleCategoryN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryN" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryO), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EuVehicleCategoryO, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryO" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryT), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryT" + }, + { ATF_NOFLAGS, 0, offsetof(struct EuVehicleCategoryCode, choice.euVehicleCategoryG), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "euVehicleCategoryG" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_EuVehicleCategoryCode_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* euVehicleCategoryL */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* euVehicleCategoryM */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* euVehicleCategoryN */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* euVehicleCategoryO */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* euVehicleCategoryT */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* euVehicleCategoryG */ +}; +static asn_CHOICE_specifics_t asn_SPC_EuVehicleCategoryCode_specs_1 = { + sizeof(struct EuVehicleCategoryCode), + offsetof(struct EuVehicleCategoryCode, _asn_ctx), + offsetof(struct EuVehicleCategoryCode, present), + sizeof(((struct EuVehicleCategoryCode *)0)->present), + asn_MAP_EuVehicleCategoryCode_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryCode = { + "EuVehicleCategoryCode", + "EuVehicleCategoryCode", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EuVehicleCategoryCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EuVehicleCategoryCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_EuVehicleCategoryCode_1, + 6, /* Elements count */ + &asn_SPC_EuVehicleCategoryCode_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryL.c b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryL.c new file mode 100644 index 000000000..a87dec4ca --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryL.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EuVehicleCategoryL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EuVehicleCategoryL_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EuVehicleCategoryL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 6 } /* (0..6) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EuVehicleCategoryL_value2enum_1[] = { + { 0, 2, "l1" }, + { 1, 2, "l2" }, + { 2, 2, "l3" }, + { 3, 2, "l4" }, + { 4, 2, "l5" }, + { 5, 2, "l6" }, + { 6, 2, "l7" } +}; +static const unsigned int asn_MAP_EuVehicleCategoryL_enum2value_1[] = { + 0, /* l1(0) */ + 1, /* l2(1) */ + 2, /* l3(2) */ + 3, /* l4(3) */ + 4, /* l5(4) */ + 5, /* l6(5) */ + 6 /* l7(6) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryL_specs_1 = { + asn_MAP_EuVehicleCategoryL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EuVehicleCategoryL_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EuVehicleCategoryL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryL = { + "EuVehicleCategoryL", + "EuVehicleCategoryL", + &asn_OP_NativeEnumerated, + asn_DEF_EuVehicleCategoryL_tags_1, + sizeof(asn_DEF_EuVehicleCategoryL_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryL_tags_1[0]), /* 1 */ + asn_DEF_EuVehicleCategoryL_tags_1, /* Same as above */ + sizeof(asn_DEF_EuVehicleCategoryL_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryL_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EuVehicleCategoryL_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EuVehicleCategoryL_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EuVehicleCategoryL_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryM.c b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryM.c new file mode 100644 index 000000000..fb75d4b62 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryM.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EuVehicleCategoryM.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EuVehicleCategoryM_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EuVehicleCategoryM_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EuVehicleCategoryM_value2enum_1[] = { + { 0, 2, "m1" }, + { 1, 2, "m2" }, + { 2, 2, "m3" } +}; +static const unsigned int asn_MAP_EuVehicleCategoryM_enum2value_1[] = { + 0, /* m1(0) */ + 1, /* m2(1) */ + 2 /* m3(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryM_specs_1 = { + asn_MAP_EuVehicleCategoryM_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EuVehicleCategoryM_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EuVehicleCategoryM_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryM = { + "EuVehicleCategoryM", + "EuVehicleCategoryM", + &asn_OP_NativeEnumerated, + asn_DEF_EuVehicleCategoryM_tags_1, + sizeof(asn_DEF_EuVehicleCategoryM_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryM_tags_1[0]), /* 1 */ + asn_DEF_EuVehicleCategoryM_tags_1, /* Same as above */ + sizeof(asn_DEF_EuVehicleCategoryM_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryM_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EuVehicleCategoryM_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EuVehicleCategoryM_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EuVehicleCategoryM_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryN.c b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryN.c new file mode 100644 index 000000000..a3adf83a5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryN.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EuVehicleCategoryN.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EuVehicleCategoryN_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EuVehicleCategoryN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EuVehicleCategoryN_value2enum_1[] = { + { 0, 2, "n1" }, + { 1, 2, "n2" }, + { 2, 2, "n3" } +}; +static const unsigned int asn_MAP_EuVehicleCategoryN_enum2value_1[] = { + 0, /* n1(0) */ + 1, /* n2(1) */ + 2 /* n3(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryN_specs_1 = { + asn_MAP_EuVehicleCategoryN_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EuVehicleCategoryN_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EuVehicleCategoryN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryN = { + "EuVehicleCategoryN", + "EuVehicleCategoryN", + &asn_OP_NativeEnumerated, + asn_DEF_EuVehicleCategoryN_tags_1, + sizeof(asn_DEF_EuVehicleCategoryN_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryN_tags_1[0]), /* 1 */ + asn_DEF_EuVehicleCategoryN_tags_1, /* Same as above */ + sizeof(asn_DEF_EuVehicleCategoryN_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryN_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EuVehicleCategoryN_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EuVehicleCategoryN_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EuVehicleCategoryN_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryO.c b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryO.c new file mode 100644 index 000000000..8bba83264 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EuVehicleCategoryO.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EuVehicleCategoryO.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EuVehicleCategoryO_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EuVehicleCategoryO_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_EuVehicleCategoryO_value2enum_1[] = { + { 0, 2, "o1" }, + { 1, 2, "o2" }, + { 2, 2, "o3" }, + { 3, 2, "o4" } +}; +static const unsigned int asn_MAP_EuVehicleCategoryO_enum2value_1[] = { + 0, /* o1(0) */ + 1, /* o2(1) */ + 2, /* o3(2) */ + 3 /* o4(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_EuVehicleCategoryO_specs_1 = { + asn_MAP_EuVehicleCategoryO_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EuVehicleCategoryO_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EuVehicleCategoryO_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EuVehicleCategoryO = { + "EuVehicleCategoryO", + "EuVehicleCategoryO", + &asn_OP_NativeEnumerated, + asn_DEF_EuVehicleCategoryO_tags_1, + sizeof(asn_DEF_EuVehicleCategoryO_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryO_tags_1[0]), /* 1 */ + asn_DEF_EuVehicleCategoryO_tags_1, /* Same as above */ + sizeof(asn_DEF_EuVehicleCategoryO_tags_1) + /sizeof(asn_DEF_EuVehicleCategoryO_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EuVehicleCategoryO_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EuVehicleCategoryO_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EuVehicleCategoryO_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EulerAnglesWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/EulerAnglesWithConfidence.c new file mode 100644 index 000000000..faeafbfb9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EulerAnglesWithConfidence.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EulerAnglesWithConfidence.h" + +asn_TYPE_member_t asn_MBR_EulerAnglesWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EulerAnglesWithConfidence, zAngle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zAngle" + }, + { ATF_POINTER, 2, offsetof(struct EulerAnglesWithConfidence, yAngle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yAngle" + }, + { ATF_POINTER, 1, offsetof(struct EulerAnglesWithConfidence, xAngle), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xAngle" + }, +}; +static const int asn_MAP_EulerAnglesWithConfidence_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_EulerAnglesWithConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EulerAnglesWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* zAngle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yAngle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* xAngle */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EulerAnglesWithConfidence_specs_1 = { + sizeof(struct EulerAnglesWithConfidence), + offsetof(struct EulerAnglesWithConfidence, _asn_ctx), + asn_MAP_EulerAnglesWithConfidence_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_EulerAnglesWithConfidence_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EulerAnglesWithConfidence = { + "EulerAnglesWithConfidence", + "EulerAnglesWithConfidence", + &asn_OP_SEQUENCE, + asn_DEF_EulerAnglesWithConfidence_tags_1, + sizeof(asn_DEF_EulerAnglesWithConfidence_tags_1) + /sizeof(asn_DEF_EulerAnglesWithConfidence_tags_1[0]), /* 1 */ + asn_DEF_EulerAnglesWithConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_EulerAnglesWithConfidence_tags_1) + /sizeof(asn_DEF_EulerAnglesWithConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EulerAnglesWithConfidence_1, + 3, /* Elements count */ + &asn_SPC_EulerAnglesWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EventHistory.c b/etsi_its_coding/etsi_its_cpm_coding/src/EventHistory.c new file mode 100644 index 000000000..1d602ad58 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EventHistory.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EventHistory.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EventHistory_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..23)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_EventHistory_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 23 } /* (SIZE(1..23)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_EventHistory_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EventPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_EventHistory_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_EventHistory_specs_1 = { + sizeof(struct EventHistory), + offsetof(struct EventHistory, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_EventHistory = { + "EventHistory", + "EventHistory", + &asn_OP_SEQUENCE_OF, + asn_DEF_EventHistory_tags_1, + sizeof(asn_DEF_EventHistory_tags_1) + /sizeof(asn_DEF_EventHistory_tags_1[0]), /* 1 */ + asn_DEF_EventHistory_tags_1, /* Same as above */ + sizeof(asn_DEF_EventHistory_tags_1) + /sizeof(asn_DEF_EventHistory_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EventHistory_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EventHistory_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_EventHistory_1, + 1, /* Single element */ + &asn_SPC_EventHistory_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EventPoint.c b/etsi_its_coding/etsi_its_cpm_coding/src/EventPoint.c new file mode 100644 index 000000000..09f52049d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EventPoint.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EventPoint.h" + +asn_TYPE_member_t asn_MBR_EventPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EventPoint, eventPosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaReferencePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventPosition" + }, + { ATF_POINTER, 1, offsetof(struct EventPoint, eventDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathDeltaTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "eventDeltaTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct EventPoint, informationQuality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InformationQuality, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "informationQuality" + }, +}; +static const int asn_MAP_EventPoint_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_EventPoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EventPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventPosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventDeltaTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* informationQuality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EventPoint_specs_1 = { + sizeof(struct EventPoint), + offsetof(struct EventPoint, _asn_ctx), + asn_MAP_EventPoint_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_EventPoint_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EventPoint = { + "EventPoint", + "EventPoint", + &asn_OP_SEQUENCE, + asn_DEF_EventPoint_tags_1, + sizeof(asn_DEF_EventPoint_tags_1) + /sizeof(asn_DEF_EventPoint_tags_1[0]), /* 1 */ + asn_DEF_EventPoint_tags_1, /* Same as above */ + sizeof(asn_DEF_EventPoint_tags_1) + /sizeof(asn_DEF_EventPoint_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_EventPoint_1, + 3, /* Elements count */ + &asn_SPC_EventPoint_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/EventZone.c b/etsi_its_coding/etsi_its_cpm_coding/src/EventZone.c new file mode 100644 index 000000000..a27936c0b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/EventZone.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/EventZone.h" + +int +EventZone_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 23)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using EventHistory, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_EventZone_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..23)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_EventZone_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 23 } /* (SIZE(1..23)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_EventZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EventZone = { + "EventZone", + "EventZone", + &asn_OP_SEQUENCE_OF, + asn_DEF_EventZone_tags_1, + sizeof(asn_DEF_EventZone_tags_1) + /sizeof(asn_DEF_EventZone_tags_1[0]), /* 1 */ + asn_DEF_EventZone_tags_1, /* Same as above */ + sizeof(asn_DEF_EventZone_tags_1) + /sizeof(asn_DEF_EventZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_EventZone_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_EventZone_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + EventZone_constraint + }, + asn_MBR_EventHistory_1, + 1, /* Single element */ + &asn_SPC_EventHistory_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Ext1.c b/etsi_its_coding/etsi_its_cpm_coding/src/Ext1.c new file mode 100644 index 000000000..fbd2168aa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Ext1.c @@ -0,0 +1,130 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Ext1.h" + +static int +memb_content_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 128 && value <= 16511)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_content_constr_2 CC_NOTUSED = { + { 2, 1 } /* (128..16511) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_content_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 128, 16511 } /* (128..16511) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Ext1_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Ext1_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Ext1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Ext1, choice.content), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_content_constraint_1 + }, + 0, 0, /* No default value */ + "content" + }, + { ATF_NOFLAGS, 0, offsetof(struct Ext1, choice.extension), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Ext2, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extension" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Ext1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* content */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* extension */ +}; +asn_CHOICE_specifics_t asn_SPC_Ext1_specs_1 = { + sizeof(struct Ext1), + offsetof(struct Ext1, _asn_ctx), + offsetof(struct Ext1, present), + sizeof(((struct Ext1 *)0)->present), + asn_MAP_Ext1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Ext1 = { + "Ext1", + "Ext1", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Ext1_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Ext1_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Ext1_1, + 2, /* Elements count */ + &asn_SPC_Ext1_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Ext2.c b/etsi_its_coding/etsi_its_cpm_coding/src/Ext2.c new file mode 100644 index 000000000..50c1a42d0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Ext2.c @@ -0,0 +1,130 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Ext2.h" + +static int +memb_content_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 16512 && value <= 2113663)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_content_constr_2 CC_NOTUSED = { + { 4, 1 } /* (16512..2113663) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_content_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 21, -1, 16512, 2113663 } /* (16512..2113663) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Ext2_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Ext2_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Ext2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Ext2, choice.content), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_content_constraint_1 + }, + 0, 0, /* No default value */ + "content" + }, + { ATF_NOFLAGS, 0, offsetof(struct Ext2, choice.extension), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Ext3, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extension" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Ext2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* content */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* extension */ +}; +asn_CHOICE_specifics_t asn_SPC_Ext2_specs_1 = { + sizeof(struct Ext2), + offsetof(struct Ext2, _asn_ctx), + offsetof(struct Ext2, present), + sizeof(((struct Ext2 *)0)->present), + asn_MAP_Ext2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Ext2 = { + "Ext2", + "Ext2", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Ext2_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Ext2_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Ext2_1, + 2, /* Elements count */ + &asn_SPC_Ext2_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Ext3.c b/etsi_its_coding/etsi_its_cpm_coding/src/Ext3.c new file mode 100644 index 000000000..c1afea411 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Ext3.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Ext3.h" + +int +Ext3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 2113664 && value <= 270549119)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Ext3_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Ext3_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 28, -1, 2113664, 270549119 } /* (2113664..270549119,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Ext3_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Ext3 = { + "Ext3", + "Ext3", + &asn_OP_NativeInteger, + asn_DEF_Ext3_tags_1, + sizeof(asn_DEF_Ext3_tags_1) + /sizeof(asn_DEF_Ext3_tags_1[0]), /* 1 */ + asn_DEF_Ext3_tags_1, /* Same as above */ + sizeof(asn_DEF_Ext3_tags_1) + /sizeof(asn_DEF_Ext3_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Ext3_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Ext3_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Ext3_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ExteriorLights.c b/etsi_its_coding/etsi_its_cpm_coding/src/ExteriorLights.c new file mode 100644 index 000000000..75b922e07 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ExteriorLights.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ExteriorLights.h" + +int +ExteriorLights_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ExteriorLights_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ExteriorLights_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ExteriorLights_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExteriorLights = { + "ExteriorLights", + "ExteriorLights", + &asn_OP_BIT_STRING, + asn_DEF_ExteriorLights_tags_1, + sizeof(asn_DEF_ExteriorLights_tags_1) + /sizeof(asn_DEF_ExteriorLights_tags_1[0]), /* 1 */ + asn_DEF_ExteriorLights_tags_1, /* Same as above */ + sizeof(asn_DEF_ExteriorLights_tags_1) + /sizeof(asn_DEF_ExteriorLights_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ExteriorLights_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/GeneralizedLanePosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/GeneralizedLanePosition.c new file mode 100644 index 000000000..7523d8b48 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/GeneralizedLanePosition.c @@ -0,0 +1,129 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/GeneralizedLanePosition.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GeneralizedLanePosition_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_GeneralizedLanePosition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_GeneralizedLanePosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GeneralizedLanePosition, choice.trafficLanePosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LanePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trafficLanePosition" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeneralizedLanePosition, choice.nonTrafficLanePosition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LanePositionAndType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "nonTrafficLanePosition" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeneralizedLanePosition, choice.trafficIslandPosition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficIslandPosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trafficIslandPosition" + }, + { ATF_NOFLAGS, 0, offsetof(struct GeneralizedLanePosition, choice.mapPosition), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MapPosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mapPosition" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GeneralizedLanePosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trafficLanePosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nonTrafficLanePosition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* trafficIslandPosition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* mapPosition */ +}; +static asn_CHOICE_specifics_t asn_SPC_GeneralizedLanePosition_specs_1 = { + sizeof(struct GeneralizedLanePosition), + offsetof(struct GeneralizedLanePosition, _asn_ctx), + offsetof(struct GeneralizedLanePosition, present), + sizeof(((struct GeneralizedLanePosition *)0)->present), + asn_MAP_GeneralizedLanePosition_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GeneralizedLanePosition = { + "GeneralizedLanePosition", + "GeneralizedLanePosition", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GeneralizedLanePosition_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GeneralizedLanePosition_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_GeneralizedLanePosition_1, + 4, /* Elements count */ + &asn_SPC_GeneralizedLanePosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/GenerationDeltaTime.c b/etsi_its_coding/etsi_its_cpm_coding/src/GenerationDeltaTime.c new file mode 100644 index 000000000..08073b375 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/GenerationDeltaTime.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/GenerationDeltaTime.h" + +int +GenerationDeltaTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_GenerationDeltaTime_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_GenerationDeltaTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_GenerationDeltaTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GenerationDeltaTime = { + "GenerationDeltaTime", + "GenerationDeltaTime", + &asn_OP_NativeInteger, + asn_DEF_GenerationDeltaTime_tags_1, + sizeof(asn_DEF_GenerationDeltaTime_tags_1) + /sizeof(asn_DEF_GenerationDeltaTime_tags_1[0]), /* 1 */ + asn_DEF_GenerationDeltaTime_tags_1, /* Same as above */ + sizeof(asn_DEF_GenerationDeltaTime_tags_1) + /sizeof(asn_DEF_GenerationDeltaTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_GenerationDeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_GenerationDeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + GenerationDeltaTime_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/GraphicString.c b/etsi_its_coding/etsi_its_cpm_coding/src/GraphicString.c new file mode 100644 index 000000000..ccb9a2d40 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/GraphicString.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * GraphicString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_GraphicString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (25 << 2)), /* [UNIVERSAL 25] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_GraphicString = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* non-ascii string */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, /* Can't expect it to be ASCII/UTF8 */ +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_GraphicString = { + "GraphicString", + "GraphicString", + &asn_OP_GraphicString, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]) - 1, + asn_DEF_GraphicString_tags, + sizeof(asn_DEF_GraphicString_tags) + / sizeof(asn_DEF_GraphicString_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HardShoulderStatus.c b/etsi_its_coding/etsi_its_cpm_coding/src/HardShoulderStatus.c new file mode 100644 index 000000000..b66eee8a9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HardShoulderStatus.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HardShoulderStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HardShoulderStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HardShoulderStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_HardShoulderStatus_value2enum_1[] = { + { 0, 20, "availableForStopping" }, + { 1, 6, "closed" }, + { 2, 19, "availableForDriving" } +}; +static const unsigned int asn_MAP_HardShoulderStatus_enum2value_1[] = { + 2, /* availableForDriving(2) */ + 0, /* availableForStopping(0) */ + 1 /* closed(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_HardShoulderStatus_specs_1 = { + asn_MAP_HardShoulderStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HardShoulderStatus_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HardShoulderStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HardShoulderStatus = { + "HardShoulderStatus", + "HardShoulderStatus", + &asn_OP_NativeEnumerated, + asn_DEF_HardShoulderStatus_tags_1, + sizeof(asn_DEF_HardShoulderStatus_tags_1) + /sizeof(asn_DEF_HardShoulderStatus_tags_1[0]), /* 1 */ + asn_DEF_HardShoulderStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_HardShoulderStatus_tags_1) + /sizeof(asn_DEF_HardShoulderStatus_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HardShoulderStatus_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HardShoulderStatus_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HardShoulderStatus_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-AnimalOnTheRoadSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-AnimalOnTheRoadSubCauseCode.c new file mode 100644 index 000000000..954199e32 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-AnimalOnTheRoadSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HazardousLocation-AnimalOnTheRoadSubCauseCode.h" + +int +HazardousLocation_AnimalOnTheRoadSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HazardousLocation_AnimalOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HazardousLocation_AnimalOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode = { + "HazardousLocation-AnimalOnTheRoadSubCauseCode", + "HazardousLocation-AnimalOnTheRoadSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1, + sizeof(asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_AnimalOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HazardousLocation_AnimalOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HazardousLocation_AnimalOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HazardousLocation_AnimalOnTheRoadSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-DangerousCurveSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-DangerousCurveSubCauseCode.c new file mode 100644 index 000000000..c8f973263 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-DangerousCurveSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HazardousLocation-DangerousCurveSubCauseCode.h" + +int +HazardousLocation_DangerousCurveSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HazardousLocation_DangerousCurveSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HazardousLocation_DangerousCurveSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HazardousLocation_DangerousCurveSubCauseCode = { + "HazardousLocation-DangerousCurveSubCauseCode", + "HazardousLocation-DangerousCurveSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1, + sizeof(asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_DangerousCurveSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HazardousLocation_DangerousCurveSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HazardousLocation_DangerousCurveSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HazardousLocation_DangerousCurveSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-ObstacleOnTheRoadSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-ObstacleOnTheRoadSubCauseCode.c new file mode 100644 index 000000000..a0024945a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-ObstacleOnTheRoadSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HazardousLocation-ObstacleOnTheRoadSubCauseCode.h" + +int +HazardousLocation_ObstacleOnTheRoadSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HazardousLocation_ObstacleOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HazardousLocation_ObstacleOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode = { + "HazardousLocation-ObstacleOnTheRoadSubCauseCode", + "HazardousLocation-ObstacleOnTheRoadSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1, + sizeof(asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_ObstacleOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HazardousLocation_ObstacleOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HazardousLocation_ObstacleOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HazardousLocation_ObstacleOnTheRoadSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-SurfaceConditionSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-SurfaceConditionSubCauseCode.c new file mode 100644 index 000000000..75b7127d4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HazardousLocation-SurfaceConditionSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HazardousLocation-SurfaceConditionSubCauseCode.h" + +int +HazardousLocation_SurfaceConditionSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HazardousLocation_SurfaceConditionSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HazardousLocation_SurfaceConditionSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode = { + "HazardousLocation-SurfaceConditionSubCauseCode", + "HazardousLocation-SurfaceConditionSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1, + sizeof(asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_HazardousLocation_SurfaceConditionSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HazardousLocation_SurfaceConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HazardousLocation_SurfaceConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HazardousLocation_SurfaceConditionSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Heading.c b/etsi_its_coding/etsi_its_cpm_coding/src/Heading.c new file mode 100644 index 000000000..93eed8757 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Heading.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Heading.h" + +static asn_TYPE_member_t asn_MBR_Heading_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Heading, headingValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "headingValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct Heading, headingConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "headingConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Heading_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Heading_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* headingValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* headingConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Heading_specs_1 = { + sizeof(struct Heading), + offsetof(struct Heading, _asn_ctx), + asn_MAP_Heading_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Heading = { + "Heading", + "Heading", + &asn_OP_SEQUENCE, + asn_DEF_Heading_tags_1, + sizeof(asn_DEF_Heading_tags_1) + /sizeof(asn_DEF_Heading_tags_1[0]), /* 1 */ + asn_DEF_Heading_tags_1, /* Same as above */ + sizeof(asn_DEF_Heading_tags_1) + /sizeof(asn_DEF_Heading_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Heading_1, + 2, /* Elements count */ + &asn_SPC_Heading_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HeadingChangeIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingChangeIndication.c new file mode 100644 index 000000000..b70615893 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingChangeIndication.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HeadingChangeIndication.h" + +static asn_TYPE_member_t asn_MBR_HeadingChangeIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HeadingChangeIndication, direction), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TurningDirection, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "direction" + }, + { ATF_NOFLAGS, 0, offsetof(struct HeadingChangeIndication, actionDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeTenthOfSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDeltaTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_HeadingChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HeadingChangeIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* direction */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDeltaTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HeadingChangeIndication_specs_1 = { + sizeof(struct HeadingChangeIndication), + offsetof(struct HeadingChangeIndication, _asn_ctx), + asn_MAP_HeadingChangeIndication_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HeadingChangeIndication = { + "HeadingChangeIndication", + "HeadingChangeIndication", + &asn_OP_SEQUENCE, + asn_DEF_HeadingChangeIndication_tags_1, + sizeof(asn_DEF_HeadingChangeIndication_tags_1) + /sizeof(asn_DEF_HeadingChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_HeadingChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_HeadingChangeIndication_tags_1) + /sizeof(asn_DEF_HeadingChangeIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_HeadingChangeIndication_1, + 2, /* Elements count */ + &asn_SPC_HeadingChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HeadingConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingConfidence.c new file mode 100644 index 000000000..bea82dba1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HeadingConfidence.h" + +int +HeadingConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HeadingConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HeadingConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HeadingConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HeadingConfidence = { + "HeadingConfidence", + "HeadingConfidence", + &asn_OP_NativeInteger, + asn_DEF_HeadingConfidence_tags_1, + sizeof(asn_DEF_HeadingConfidence_tags_1) + /sizeof(asn_DEF_HeadingConfidence_tags_1[0]), /* 1 */ + asn_DEF_HeadingConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_HeadingConfidence_tags_1) + /sizeof(asn_DEF_HeadingConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HeadingConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HeadingConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HeadingConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HeadingValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingValue.c new file mode 100644 index 000000000..a2686e564 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HeadingValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HeadingValue.h" + +int +HeadingValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3601)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HeadingValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..3601) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HeadingValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 3601 } /* (0..3601) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HeadingValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HeadingValue = { + "HeadingValue", + "HeadingValue", + &asn_OP_NativeInteger, + asn_DEF_HeadingValue_tags_1, + sizeof(asn_DEF_HeadingValue_tags_1) + /sizeof(asn_DEF_HeadingValue_tags_1[0]), /* 1 */ + asn_DEF_HeadingValue_tags_1, /* Same as above */ + sizeof(asn_DEF_HeadingValue_tags_1) + /sizeof(asn_DEF_HeadingValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HeadingValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HeadingValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HeadingValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HeightLonCarr.c b/etsi_its_coding/etsi_its_cpm_coding/src/HeightLonCarr.c new file mode 100644 index 000000000..bc256a9d0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HeightLonCarr.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HeightLonCarr.h" + +int +HeightLonCarr_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HeightLonCarr_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..100) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_HeightLonCarr_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 100 } /* (1..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HeightLonCarr_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HeightLonCarr = { + "HeightLonCarr", + "HeightLonCarr", + &asn_OP_NativeInteger, + asn_DEF_HeightLonCarr_tags_1, + sizeof(asn_DEF_HeightLonCarr_tags_1) + /sizeof(asn_DEF_HeightLonCarr_tags_1[0]), /* 1 */ + asn_DEF_HeightLonCarr_tags_1, /* Same as above */ + sizeof(asn_DEF_HeightLonCarr_tags_1) + /sizeof(asn_DEF_HeightLonCarr_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HeightLonCarr_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HeightLonCarr_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HeightLonCarr_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HumanPresenceOnTheRoadSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HumanPresenceOnTheRoadSubCauseCode.c new file mode 100644 index 000000000..62aa8fb5d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HumanPresenceOnTheRoadSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HumanPresenceOnTheRoadSubCauseCode.h" + +int +HumanPresenceOnTheRoadSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HumanPresenceOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HumanPresenceOnTheRoadSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HumanPresenceOnTheRoadSubCauseCode = { + "HumanPresenceOnTheRoadSubCauseCode", + "HumanPresenceOnTheRoadSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1, + sizeof(asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1) + /sizeof(asn_DEF_HumanPresenceOnTheRoadSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HumanPresenceOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HumanPresenceOnTheRoadSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HumanPresenceOnTheRoadSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/HumanProblemSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/HumanProblemSubCauseCode.c new file mode 100644 index 000000000..b41bb8f8c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/HumanProblemSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/HumanProblemSubCauseCode.h" + +int +HumanProblemSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_HumanProblemSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_HumanProblemSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_HumanProblemSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HumanProblemSubCauseCode = { + "HumanProblemSubCauseCode", + "HumanProblemSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_HumanProblemSubCauseCode_tags_1, + sizeof(asn_DEF_HumanProblemSubCauseCode_tags_1) + /sizeof(asn_DEF_HumanProblemSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_HumanProblemSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_HumanProblemSubCauseCode_tags_1) + /sizeof(asn_DEF_HumanProblemSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_HumanProblemSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_HumanProblemSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + HumanProblemSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/IA5String.c b/etsi_its_coding/etsi_its_cpm_coding/src/IA5String.c new file mode 100644 index 000000000..f249fe7b2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/IA5String.c @@ -0,0 +1,133 @@ +/*- + * Copyright (c) 2003 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * IA5String basic type description. + */ +static const ber_tlv_tag_t asn_DEF_IA5String_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), /* [UNIVERSAL 22] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_DEF_IA5String_per_constraints = { + { APC_CONSTRAINED, 7, 7, 0, 0x7f }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + 0, 0 +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_operation_t asn_OP_IA5String = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* ASCII subset */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_IA5String = { + "IA5String", + "IA5String", + &asn_OP_IA5String, + asn_DEF_IA5String_tags, + sizeof(asn_DEF_IA5String_tags) + / sizeof(asn_DEF_IA5String_tags[0]) - 1, + asn_DEF_IA5String_tags, + sizeof(asn_DEF_IA5String_tags) + / sizeof(asn_DEF_IA5String_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_DEF_IA5String_per_constraints, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + IA5String_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +IA5String_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + /* + * IA5String is generally equivalent to 7bit ASCII. + * ISO/ITU-T T.50, 1963. + */ + for(; buf < end; buf++) { + if(*buf > 0x7F) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld out of range: " + "%d > 127 (%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER.c new file mode 100644 index 000000000..dc0447719 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER.c @@ -0,0 +1,738 @@ +/* + * Copyright (c) 2003-2019 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + INTEGER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + INTEGER_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + INTEGER_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + INTEGER_decode_xer, + INTEGER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + INTEGER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + INTEGER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ +0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * INTEGER specific human-readable output. + */ +ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + + const intmax_t asn1_intmax_max = ((~(uintmax_t)0) >> 1); + const intmax_t upper_boundary = asn1_intmax_max / 10; + intmax_t last_digit_max = asn1_intmax_max % 10; + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + if(*str >= 0x30 && *str <= 0x39) { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + + const uintmax_t asn1_uintmax_max = ((~(uintmax_t)0)); + const uintmax_t upper_boundary = asn1_uintmax_max / 10; + uintmax_t last_digit_max = asn1_uintmax_max % 10; + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + if(*str >= 0x30 && *str <= 0x39) { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + str += 1; + if(str < *end) { + // If digits continue, we're guaranteed out of range. + *end = str; + if(*str >= 0x30 && *str <= 0x39) { + return ASN_STRTOX_ERROR_RANGE; + } else { + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + break; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_aper.c new file mode 100644 index 000000000..dbb9e9587 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_aper.c @@ -0,0 +1,308 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %lld", + value, (long long int)ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %lld", + value, (long long int)ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%zu) lb %lld ub %lld %s", + uval, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%zu) lb %lld ub %lld %s", + value, st->buf[0], st->size, + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lld) with range %d bits", + value, (long long int)(value - ct->lower_bound), + ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + int range = ct->upper_bound - ct->lower_bound + 1; + if (ct->range_bits < 8 || (ct->range_bits == 8 && range < 256)) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %lld", (long long int)ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = aper_put_length(po, -1, -1, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_ber.c new file mode 100644 index 000000000..4e14799d3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_ber.c @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: + if((buf[1] & 0x80) == 0) continue; + break; + case 0xff: + if((buf[1] & 0x80)) continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_jer.c new file mode 100644 index 000000000..3e7f312d1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_jer.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +INTEGER_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_oer.c new file mode 100644 index 000000000..740f4b2db --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_oer.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + INTEGER_t *st = (INTEGER_t *)*sptr; + struct asn_oer_constraint_number_s ct = {0, 0}; + size_t req_bytes; + + (void)opt_codec_ctx; + (void)specs; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + if(ct.width) { + req_bytes = ct.width; + } else { + /* No lower bound and no upper bound, effectively */ + + ssize_t consumed = oer_fetch_length(ptr, size, &req_bytes); + if(consumed == 0) { + ASN__DECODE_STARVED; + } else if(consumed == -1) { + ASN__DECODE_FAILED; + } + rval.consumed += consumed; + ptr = (const char *)ptr + consumed; + size -= consumed; + } + + if(req_bytes > size) { + ASN__DECODE_STARVED; + } + + if(ct.positive) { + /* X.969 08/2015 10.2(a) */ + unsigned msb; /* Most significant bit */ + size_t useful_size; + + /* Check most significant bit */ + msb = *(const uint8_t *)ptr >> 7; /* yields 0 or 1 */ + useful_size = msb + req_bytes; + st->buf = (uint8_t *)MALLOC(useful_size + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + /* + * Record a large unsigned in a way not to confuse it + * with signed value. + */ + st->buf[0] = '\0'; + memcpy(st->buf + msb, ptr, req_bytes); + st->buf[useful_size] = '\0'; /* Just in case, 0-terminate */ + st->size = useful_size; + + rval.consumed += req_bytes; + return rval; + } else { + /* X.969 08/2015 10.2(b) */ + st->buf = (uint8_t *)MALLOC(req_bytes + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + memcpy(st->buf, ptr, req_bytes); + st->buf[req_bytes] = '\0'; /* Just in case, 0-terminate */ + st->size = req_bytes; + + rval.consumed += req_bytes; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +INTEGER_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = sptr; + asn_enc_rval_t er = {0,0,0}; + struct asn_oer_constraint_number_s ct = {0, 0}; + const uint8_t *buf; + const uint8_t *end; + size_t useful_bytes; + size_t req_bytes = 0; + int sign = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size; + + sign = (buf && buf < end) ? buf[0] & 0x80 : 0; + + /* Ignore 9 leading zeroes or ones */ + if(ct.positive) { + if(sign) { + /* The value given is a signed value. Can't proceed. */ + ASN__ENCODE_FAILED; + } + /* Remove leading zeros. */ + for(; buf + 1 < end; buf++) { + if(buf[0] != 0x0) break; + } + } else { + for(; buf + 1 < end; buf++) { + if(buf[0] == 0x0 && (buf[1] & 0x80) == 0) { + continue; + } else if(buf[0] == 0xff && (buf[1] & 0x80) != 0) { + continue; + } + break; + } + } + + useful_bytes = end - buf; + if(ct.width) { + req_bytes = ct.width; + } else { + ssize_t r = oer_serialize_length(useful_bytes, cb, app_key); + if(r < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += r; + req_bytes = useful_bytes; + } + + if(req_bytes < useful_bytes) { + ASN__ENCODE_FAILED; + } + + er.encoded += req_bytes; + + for(; req_bytes > useful_bytes; req_bytes--) { + if(cb(sign?"\xff":"\0", 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + if(cb(buf, useful_bytes, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_print.c new file mode 100644 index 000000000..10f97e232 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_print.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_rfill.c new file mode 100644 index 000000000..ee99b6c20 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_rfill.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_uper.c new file mode 100644 index 000000000..3f2be06de --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_uper.c @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(uintmax_t)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + uintmax_t uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_umax2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + uintmax_t uvalue = 0; + intmax_t svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_imax_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_imax2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetic. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + union { + intmax_t s; + uintmax_t u; + } value; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + if(asn_INTEGER2umax(st, &value.u)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.u < (uintmax_t)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.u < (uintmax_t)ct->lower_bound + || value.u > (uintmax_t)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + value.u, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } else { + if(asn_INTEGER2imax(st, &value.s)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value.s < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value.s < ct->lower_bound + || value.s > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value.s, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + uintmax_t v; + /* #11.5.6 -> #11.3 */ + if(specs && specs->field_unsigned) { + if(((uintmax_t)ct->lower_bound > (uintmax_t)(ct->upper_bound) + || (value.u < (uintmax_t)ct->lower_bound)) + || (value.u > (uintmax_t)ct->upper_bound)) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value.u, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = value.u - (uintmax_t)ct->lower_bound; + } else { + if(per_imax_range_rebase(value.s, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + ASN_DEBUG("Encoding integer %lu with range %d bits", + v, ct->range_bits); + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_xer.c new file mode 100644 index 000000000..eebef7b06 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/INTEGER_xer.c @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Identifier1B.c b/etsi_its_coding/etsi_its_cpm_coding/src/Identifier1B.c new file mode 100644 index 000000000..4d2cb7e02 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Identifier1B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Identifier1B.h" + +int +Identifier1B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Identifier1B_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Identifier1B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Identifier1B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Identifier1B = { + "Identifier1B", + "Identifier1B", + &asn_OP_NativeInteger, + asn_DEF_Identifier1B_tags_1, + sizeof(asn_DEF_Identifier1B_tags_1) + /sizeof(asn_DEF_Identifier1B_tags_1[0]), /* 1 */ + asn_DEF_Identifier1B_tags_1, /* Same as above */ + sizeof(asn_DEF_Identifier1B_tags_1) + /sizeof(asn_DEF_Identifier1B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Identifier1B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Identifier1B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Identifier1B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Identifier2B.c b/etsi_its_coding/etsi_its_cpm_coding/src/Identifier2B.c new file mode 100644 index 000000000..0348722f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Identifier2B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Identifier2B.h" + +int +Identifier2B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Identifier2B_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Identifier2B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Identifier2B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Identifier2B = { + "Identifier2B", + "Identifier2B", + &asn_OP_NativeInteger, + asn_DEF_Identifier2B_tags_1, + sizeof(asn_DEF_Identifier2B_tags_1) + /sizeof(asn_DEF_Identifier2B_tags_1[0]), /* 1 */ + asn_DEF_Identifier2B_tags_1, /* Same as above */ + sizeof(asn_DEF_Identifier2B_tags_1) + /sizeof(asn_DEF_Identifier2B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Identifier2B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Identifier2B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Identifier2B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InformationQuality.c b/etsi_its_coding/etsi_its_cpm_coding/src/InformationQuality.c new file mode 100644 index 000000000..bef8a53db --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InformationQuality.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InformationQuality.h" + +int +InformationQuality_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_InformationQuality_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..7) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_InformationQuality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_InformationQuality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InformationQuality = { + "InformationQuality", + "InformationQuality", + &asn_OP_NativeInteger, + asn_DEF_InformationQuality_tags_1, + sizeof(asn_DEF_InformationQuality_tags_1) + /sizeof(asn_DEF_InformationQuality_tags_1[0]), /* 1 */ + asn_DEF_InformationQuality_tags_1, /* Same as above */ + sizeof(asn_DEF_InformationQuality_tags_1) + /sizeof(asn_DEF_InformationQuality_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_InformationQuality_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InformationQuality_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + InformationQuality_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementChannel.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementChannel.c new file mode 100644 index 000000000..9209b44b0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementChannel.c @@ -0,0 +1,213 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementChannel.h" + +static int +memb_centreFrequency_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 99999)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_channelWidth_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9999)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_exponent_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_centreFrequency_constr_2 CC_NOTUSED = { + { 4, 1 } /* (1..99999) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_centreFrequency_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 1, 99999 } /* (1..99999) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_channelWidth_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..9999) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_channelWidth_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 9999 } /* (0..9999) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_exponent_constr_4 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_exponent_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_InterferenceManagementChannel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementChannel, centreFrequency), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_centreFrequency_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_centreFrequency_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_centreFrequency_constraint_1 + }, + 0, 0, /* No default value */ + "centreFrequency" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementChannel, channelWidth), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_channelWidth_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_channelWidth_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_channelWidth_constraint_1 + }, + 0, 0, /* No default value */ + "channelWidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementChannel, exponent), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_exponent_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_exponent_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_exponent_constraint_1 + }, + 0, 0, /* No default value */ + "exponent" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementChannel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterferenceManagementChannel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* centreFrequency */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* channelWidth */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* exponent */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementChannel_specs_1 = { + sizeof(struct InterferenceManagementChannel), + offsetof(struct InterferenceManagementChannel, _asn_ctx), + asn_MAP_InterferenceManagementChannel_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementChannel = { + "InterferenceManagementChannel", + "InterferenceManagementChannel", + &asn_OP_SEQUENCE, + asn_DEF_InterferenceManagementChannel_tags_1, + sizeof(asn_DEF_InterferenceManagementChannel_tags_1) + /sizeof(asn_DEF_InterferenceManagementChannel_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementChannel_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementChannel_tags_1) + /sizeof(asn_DEF_InterferenceManagementChannel_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterferenceManagementChannel_1, + 3, /* Elements count */ + &asn_SPC_InterferenceManagementChannel_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfo.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfo.c new file mode 100644 index 000000000..3574df40c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfo.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementInfo.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_InterferenceManagementInfo_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_InterferenceManagementInfo_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (SIZE(1..16,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_InterferenceManagementInfo_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_InterferenceManagementInfoPerChannel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_InterferenceManagementInfo_specs_1 = { + sizeof(struct InterferenceManagementInfo), + offsetof(struct InterferenceManagementInfo, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementInfo = { + "InterferenceManagementInfo", + "InterferenceManagementInfo", + &asn_OP_SEQUENCE_OF, + asn_DEF_InterferenceManagementInfo_tags_1, + sizeof(asn_DEF_InterferenceManagementInfo_tags_1) + /sizeof(asn_DEF_InterferenceManagementInfo_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementInfo_tags_1) + /sizeof(asn_DEF_InterferenceManagementInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_InterferenceManagementInfo_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InterferenceManagementInfo_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_InterferenceManagementInfo_1, + 1, /* Single element */ + &asn_SPC_InterferenceManagementInfo_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfoPerChannel.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfoPerChannel.c new file mode 100644 index 000000000..ab56b259b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementInfoPerChannel.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementInfoPerChannel.h" + +asn_TYPE_member_t asn_MBR_InterferenceManagementInfoPerChannel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementInfoPerChannel, interferenceManagementChannel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterferenceManagementChannel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementChannel" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementInfoPerChannel, interferenceManagementZoneType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterferenceManagementZoneType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementZoneType" + }, + { ATF_POINTER, 2, offsetof(struct InterferenceManagementInfoPerChannel, interferenceManagementMitigationType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MitigationForTechnologies, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementMitigationType" + }, + { ATF_POINTER, 1, offsetof(struct InterferenceManagementInfoPerChannel, expiryTime), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimestampIts, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "expiryTime" + }, +}; +static const int asn_MAP_InterferenceManagementInfoPerChannel_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementInfoPerChannel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterferenceManagementInfoPerChannel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interferenceManagementChannel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interferenceManagementZoneType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* interferenceManagementMitigationType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* expiryTime */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementInfoPerChannel_specs_1 = { + sizeof(struct InterferenceManagementInfoPerChannel), + offsetof(struct InterferenceManagementInfoPerChannel, _asn_ctx), + asn_MAP_InterferenceManagementInfoPerChannel_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_InterferenceManagementInfoPerChannel_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementInfoPerChannel = { + "InterferenceManagementInfoPerChannel", + "InterferenceManagementInfoPerChannel", + &asn_OP_SEQUENCE, + asn_DEF_InterferenceManagementInfoPerChannel_tags_1, + sizeof(asn_DEF_InterferenceManagementInfoPerChannel_tags_1) + /sizeof(asn_DEF_InterferenceManagementInfoPerChannel_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementInfoPerChannel_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementInfoPerChannel_tags_1) + /sizeof(asn_DEF_InterferenceManagementInfoPerChannel_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterferenceManagementInfoPerChannel_1, + 4, /* Elements count */ + &asn_SPC_InterferenceManagementInfoPerChannel_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZone.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZone.c new file mode 100644 index 000000000..a7f1b3c5e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZone.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementZone.h" + +asn_TYPE_member_t asn_MBR_InterferenceManagementZone_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementZone, zoneDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterferenceManagementZoneDefinition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zoneDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementZone, managementInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterferenceManagementInfo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "managementInfo" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterferenceManagementZone_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* zoneDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* managementInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementZone_specs_1 = { + sizeof(struct InterferenceManagementZone), + offsetof(struct InterferenceManagementZone, _asn_ctx), + asn_MAP_InterferenceManagementZone_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZone = { + "InterferenceManagementZone", + "InterferenceManagementZone", + &asn_OP_SEQUENCE, + asn_DEF_InterferenceManagementZone_tags_1, + sizeof(asn_DEF_InterferenceManagementZone_tags_1) + /sizeof(asn_DEF_InterferenceManagementZone_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementZone_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementZone_tags_1) + /sizeof(asn_DEF_InterferenceManagementZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterferenceManagementZone_1, + 2, /* Elements count */ + &asn_SPC_InterferenceManagementZone_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneDefinition.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneDefinition.c new file mode 100644 index 000000000..b9da7cf66 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneDefinition.c @@ -0,0 +1,153 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementZoneDefinition.h" + +static int +memb_interferenceManagementZoneShape_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_interferenceManagementZoneShape_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_interferenceManagementZoneShape_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_InterferenceManagementZoneDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementZoneDefinition, interferenceManagementZoneLatitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementZoneLatitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterferenceManagementZoneDefinition, interferenceManagementZoneLongitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementZoneLongitude" + }, + { ATF_POINTER, 2, offsetof(struct InterferenceManagementZoneDefinition, interferenceManagementZoneId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedZoneId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "interferenceManagementZoneId" + }, + { ATF_POINTER, 1, offsetof(struct InterferenceManagementZoneDefinition, interferenceManagementZoneShape), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Shape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_interferenceManagementZoneShape_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_interferenceManagementZoneShape_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_interferenceManagementZoneShape_constraint_1 + }, + 0, 0, /* No default value */ + "interferenceManagementZoneShape" + }, +}; +static const int asn_MAP_InterferenceManagementZoneDefinition_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementZoneDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterferenceManagementZoneDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interferenceManagementZoneLatitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interferenceManagementZoneLongitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* interferenceManagementZoneId */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* interferenceManagementZoneShape */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterferenceManagementZoneDefinition_specs_1 = { + sizeof(struct InterferenceManagementZoneDefinition), + offsetof(struct InterferenceManagementZoneDefinition, _asn_ctx), + asn_MAP_InterferenceManagementZoneDefinition_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_InterferenceManagementZoneDefinition_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZoneDefinition = { + "InterferenceManagementZoneDefinition", + "InterferenceManagementZoneDefinition", + &asn_OP_SEQUENCE, + asn_DEF_InterferenceManagementZoneDefinition_tags_1, + sizeof(asn_DEF_InterferenceManagementZoneDefinition_tags_1) + /sizeof(asn_DEF_InterferenceManagementZoneDefinition_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementZoneDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementZoneDefinition_tags_1) + /sizeof(asn_DEF_InterferenceManagementZoneDefinition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_InterferenceManagementZoneDefinition_1, + 4, /* Elements count */ + &asn_SPC_InterferenceManagementZoneDefinition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneType.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneType.c new file mode 100644 index 000000000..c45e5c768 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZoneType.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementZoneType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_InterferenceManagementZoneType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_InterferenceManagementZoneType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_InterferenceManagementZoneType_value2enum_1[] = { + { 0, 23, "permanentCenDsrcTolling" }, + { 1, 23, "temporaryCenDsrcTolling" }, + { 2, 11, "unavailable" }, + { 3, 9, "urbanRail" }, + { 4, 16, "satelliteStation" }, + { 5, 10, "fixedLinks" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterferenceManagementZoneType_enum2value_1[] = { + 5, /* fixedLinks(5) */ + 0, /* permanentCenDsrcTolling(0) */ + 4, /* satelliteStation(4) */ + 1, /* temporaryCenDsrcTolling(1) */ + 2, /* unavailable(2) */ + 3 /* urbanRail(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InterferenceManagementZoneType_specs_1 = { + asn_MAP_InterferenceManagementZoneType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterferenceManagementZoneType_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementZoneType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZoneType = { + "InterferenceManagementZoneType", + "InterferenceManagementZoneType", + &asn_OP_NativeEnumerated, + asn_DEF_InterferenceManagementZoneType_tags_1, + sizeof(asn_DEF_InterferenceManagementZoneType_tags_1) + /sizeof(asn_DEF_InterferenceManagementZoneType_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementZoneType_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementZoneType_tags_1) + /sizeof(asn_DEF_InterferenceManagementZoneType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_InterferenceManagementZoneType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InterferenceManagementZoneType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterferenceManagementZoneType_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZones.c b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZones.c new file mode 100644 index 000000000..2e18ff35a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/InterferenceManagementZones.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/InterferenceManagementZones.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_InterferenceManagementZones_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_InterferenceManagementZones_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (SIZE(1..16,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_InterferenceManagementZones_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_InterferenceManagementZone, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterferenceManagementZones_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_InterferenceManagementZones_specs_1 = { + sizeof(struct InterferenceManagementZones), + offsetof(struct InterferenceManagementZones, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_InterferenceManagementZones = { + "InterferenceManagementZones", + "InterferenceManagementZones", + &asn_OP_SEQUENCE_OF, + asn_DEF_InterferenceManagementZones_tags_1, + sizeof(asn_DEF_InterferenceManagementZones_tags_1) + /sizeof(asn_DEF_InterferenceManagementZones_tags_1[0]), /* 1 */ + asn_DEF_InterferenceManagementZones_tags_1, /* Same as above */ + sizeof(asn_DEF_InterferenceManagementZones_tags_1) + /sizeof(asn_DEF_InterferenceManagementZones_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_InterferenceManagementZones_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_InterferenceManagementZones_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_InterferenceManagementZones_1, + 1, /* Single element */ + &asn_SPC_InterferenceManagementZones_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/IntersectionReferenceId.c b/etsi_its_coding/etsi_its_cpm_coding/src/IntersectionReferenceId.c new file mode 100644 index 000000000..758b4269e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/IntersectionReferenceId.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/IntersectionReferenceId.h" + +asn_TYPE_member_t asn_MBR_IntersectionReferenceId_1[] = { + { ATF_POINTER, 1, offsetof(struct IntersectionReferenceId, region), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "region" + }, + { ATF_NOFLAGS, 0, offsetof(struct IntersectionReferenceId, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, +}; +static const int asn_MAP_IntersectionReferenceId_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_IntersectionReferenceId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_IntersectionReferenceId_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* region */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_IntersectionReferenceId_specs_1 = { + sizeof(struct IntersectionReferenceId), + offsetof(struct IntersectionReferenceId, _asn_ctx), + asn_MAP_IntersectionReferenceId_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_IntersectionReferenceId_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_IntersectionReferenceId = { + "IntersectionReferenceId", + "IntersectionReferenceId", + &asn_OP_SEQUENCE, + asn_DEF_IntersectionReferenceId_tags_1, + sizeof(asn_DEF_IntersectionReferenceId_tags_1) + /sizeof(asn_DEF_IntersectionReferenceId_tags_1[0]), /* 1 */ + asn_DEF_IntersectionReferenceId_tags_1, /* Same as above */ + sizeof(asn_DEF_IntersectionReferenceId_tags_1) + /sizeof(asn_DEF_IntersectionReferenceId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_IntersectionReferenceId_1, + 2, /* Elements count */ + &asn_SPC_IntersectionReferenceId_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Iso3833VehicleType.c b/etsi_its_coding/etsi_its_cpm_coding/src/Iso3833VehicleType.c new file mode 100644 index 000000000..56733620f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Iso3833VehicleType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Iso3833VehicleType.h" + +int +Iso3833VehicleType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Iso3833VehicleType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Iso3833VehicleType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Iso3833VehicleType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Iso3833VehicleType = { + "Iso3833VehicleType", + "Iso3833VehicleType", + &asn_OP_NativeInteger, + asn_DEF_Iso3833VehicleType_tags_1, + sizeof(asn_DEF_Iso3833VehicleType_tags_1) + /sizeof(asn_DEF_Iso3833VehicleType_tags_1[0]), /* 1 */ + asn_DEF_Iso3833VehicleType_tags_1, /* Same as above */ + sizeof(asn_DEF_Iso3833VehicleType_tags_1) + /sizeof(asn_DEF_Iso3833VehicleType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Iso3833VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Iso3833VehicleType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Iso3833VehicleType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ItineraryPath.c b/etsi_its_coding/etsi_its_cpm_coding/src/ItineraryPath.c new file mode 100644 index 000000000..9903942f5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ItineraryPath.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ItineraryPath.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ItineraryPath_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..40)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ItineraryPath_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 40 } /* (SIZE(1..40)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ItineraryPath_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReferencePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ItineraryPath_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ItineraryPath_specs_1 = { + sizeof(struct ItineraryPath), + offsetof(struct ItineraryPath, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ItineraryPath = { + "ItineraryPath", + "ItineraryPath", + &asn_OP_SEQUENCE_OF, + asn_DEF_ItineraryPath_tags_1, + sizeof(asn_DEF_ItineraryPath_tags_1) + /sizeof(asn_DEF_ItineraryPath_tags_1[0]), /* 1 */ + asn_DEF_ItineraryPath_tags_1, /* Same as above */ + sizeof(asn_DEF_ItineraryPath_tags_1) + /sizeof(asn_DEF_ItineraryPath_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ItineraryPath_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ItineraryPath_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ItineraryPath_1, + 1, /* Single element */ + &asn_SPC_ItineraryPath_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ItsPduHeader.c b/etsi_its_coding/etsi_its_cpm_coding/src/ItsPduHeader.c new file mode 100644 index 000000000..de815eb37 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ItsPduHeader.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ItsPduHeader.h" + +asn_TYPE_member_t asn_MBR_ItsPduHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ItsPduHeader, protocolVersion), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OrdinalNumber1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protocolVersion" + }, + { ATF_NOFLAGS, 0, offsetof(struct ItsPduHeader, messageId), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MessageId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ItsPduHeader, stationId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationId" + }, +}; +static const ber_tlv_tag_t asn_DEF_ItsPduHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ItsPduHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* protocolVersion */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* messageId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* stationId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ItsPduHeader_specs_1 = { + sizeof(struct ItsPduHeader), + offsetof(struct ItsPduHeader, _asn_ctx), + asn_MAP_ItsPduHeader_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ItsPduHeader = { + "ItsPduHeader", + "ItsPduHeader", + &asn_OP_SEQUENCE, + asn_DEF_ItsPduHeader_tags_1, + sizeof(asn_DEF_ItsPduHeader_tags_1) + /sizeof(asn_DEF_ItsPduHeader_tags_1[0]), /* 1 */ + asn_DEF_ItsPduHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_ItsPduHeader_tags_1) + /sizeof(asn_DEF_ItsPduHeader_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ItsPduHeader_1, + 3, /* Elements count */ + &asn_SPC_ItsPduHeader_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LanePosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/LanePosition.c new file mode 100644 index 000000000..03152ed41 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LanePosition.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LanePosition.h" + +int +LanePosition_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1 && value <= 14)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LanePosition_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-1..14) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LanePosition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, -1, 14 } /* (-1..14) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LanePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LanePosition = { + "LanePosition", + "LanePosition", + &asn_OP_NativeInteger, + asn_DEF_LanePosition_tags_1, + sizeof(asn_DEF_LanePosition_tags_1) + /sizeof(asn_DEF_LanePosition_tags_1[0]), /* 1 */ + asn_DEF_LanePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_LanePosition_tags_1) + /sizeof(asn_DEF_LanePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LanePosition_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LanePosition_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LanePosition_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LanePositionAndType.c b/etsi_its_coding/etsi_its_cpm_coding/src/LanePositionAndType.c new file mode 100644 index 000000000..585170709 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LanePositionAndType.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LanePositionAndType.h" + +asn_TYPE_member_t asn_MBR_LanePositionAndType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LanePositionAndType, transversalPosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LanePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "transversalPosition" + }, + { ATF_NOFLAGS, 0, offsetof(struct LanePositionAndType, laneType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LaneType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneType" + }, +}; +static const ber_tlv_tag_t asn_DEF_LanePositionAndType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LanePositionAndType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transversalPosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* laneType */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LanePositionAndType_specs_1 = { + sizeof(struct LanePositionAndType), + offsetof(struct LanePositionAndType, _asn_ctx), + asn_MAP_LanePositionAndType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LanePositionAndType = { + "LanePositionAndType", + "LanePositionAndType", + &asn_OP_SEQUENCE, + asn_DEF_LanePositionAndType_tags_1, + sizeof(asn_DEF_LanePositionAndType_tags_1) + /sizeof(asn_DEF_LanePositionAndType_tags_1[0]), /* 1 */ + asn_DEF_LanePositionAndType_tags_1, /* Same as above */ + sizeof(asn_DEF_LanePositionAndType_tags_1) + /sizeof(asn_DEF_LanePositionAndType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LanePositionAndType_1, + 2, /* Elements count */ + &asn_SPC_LanePositionAndType_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LaneType.c b/etsi_its_coding/etsi_its_cpm_coding/src/LaneType.c new file mode 100644 index 000000000..23e62aabc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LaneType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LaneType.h" + +int +LaneType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 31)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LaneType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneType = { + "LaneType", + "LaneType", + &asn_OP_NativeInteger, + asn_DEF_LaneType_tags_1, + sizeof(asn_DEF_LaneType_tags_1) + /sizeof(asn_DEF_LaneType_tags_1[0]), /* 1 */ + asn_DEF_LaneType_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneType_tags_1) + /sizeof(asn_DEF_LaneType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LaneWidth.c b/etsi_its_coding/etsi_its_cpm_coding/src/LaneWidth.c new file mode 100644 index 000000000..5e0f84df0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LaneWidth.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LaneWidth.h" + +int +LaneWidth_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LaneWidth_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_LaneWidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LaneWidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LaneWidth = { + "LaneWidth", + "LaneWidth", + &asn_OP_NativeInteger, + asn_DEF_LaneWidth_tags_1, + sizeof(asn_DEF_LaneWidth_tags_1) + /sizeof(asn_DEF_LaneWidth_tags_1[0]), /* 1 */ + asn_DEF_LaneWidth_tags_1, /* Same as above */ + sizeof(asn_DEF_LaneWidth_tags_1) + /sizeof(asn_DEF_LaneWidth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LaneWidth_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LaneWidth_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LaneWidth_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LateralAcceleration.c b/etsi_its_coding/etsi_its_cpm_coding/src/LateralAcceleration.c new file mode 100644 index 000000000..c11414c03 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LateralAcceleration.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LateralAcceleration.h" + +static asn_TYPE_member_t asn_MBR_LateralAcceleration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LateralAcceleration, lateralAccelerationValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LateralAccelerationValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lateralAccelerationValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct LateralAcceleration, lateralAccelerationConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lateralAccelerationConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_LateralAcceleration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LateralAcceleration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lateralAccelerationValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lateralAccelerationConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_LateralAcceleration_specs_1 = { + sizeof(struct LateralAcceleration), + offsetof(struct LateralAcceleration, _asn_ctx), + asn_MAP_LateralAcceleration_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LateralAcceleration = { + "LateralAcceleration", + "LateralAcceleration", + &asn_OP_SEQUENCE, + asn_DEF_LateralAcceleration_tags_1, + sizeof(asn_DEF_LateralAcceleration_tags_1) + /sizeof(asn_DEF_LateralAcceleration_tags_1[0]), /* 1 */ + asn_DEF_LateralAcceleration_tags_1, /* Same as above */ + sizeof(asn_DEF_LateralAcceleration_tags_1) + /sizeof(asn_DEF_LateralAcceleration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LateralAcceleration_1, + 2, /* Elements count */ + &asn_SPC_LateralAcceleration_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LateralAccelerationValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/LateralAccelerationValue.c new file mode 100644 index 000000000..febe04274 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LateralAccelerationValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LateralAccelerationValue.h" + +int +LateralAccelerationValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -160 && value <= 161)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LateralAccelerationValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-160..161) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LateralAccelerationValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -160, 161 } /* (-160..161) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LateralAccelerationValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LateralAccelerationValue = { + "LateralAccelerationValue", + "LateralAccelerationValue", + &asn_OP_NativeInteger, + asn_DEF_LateralAccelerationValue_tags_1, + sizeof(asn_DEF_LateralAccelerationValue_tags_1) + /sizeof(asn_DEF_LateralAccelerationValue_tags_1[0]), /* 1 */ + asn_DEF_LateralAccelerationValue_tags_1, /* Same as above */ + sizeof(asn_DEF_LateralAccelerationValue_tags_1) + /sizeof(asn_DEF_LateralAccelerationValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LateralAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LateralAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LateralAccelerationValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Latitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/Latitude.c new file mode 100644 index 000000000..692ecdb83 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Latitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Latitude.h" + +int +Latitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -900000000 && value <= 900000001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Latitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-900000000..900000001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Latitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 31, -1, -900000000, 900000001 } /* (-900000000..900000001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Latitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Latitude = { + "Latitude", + "Latitude", + &asn_OP_NativeInteger, + asn_DEF_Latitude_tags_1, + sizeof(asn_DEF_Latitude_tags_1) + /sizeof(asn_DEF_Latitude_tags_1[0]), /* 1 */ + asn_DEF_Latitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Latitude_tags_1) + /sizeof(asn_DEF_Latitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Latitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Latitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Latitude_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LightBarSirenInUse.c b/etsi_its_coding/etsi_its_cpm_coding/src/LightBarSirenInUse.c new file mode 100644 index 000000000..b3a22a1d9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LightBarSirenInUse.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LightBarSirenInUse.h" + +int +LightBarSirenInUse_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LightBarSirenInUse_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_LightBarSirenInUse_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LightBarSirenInUse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LightBarSirenInUse = { + "LightBarSirenInUse", + "LightBarSirenInUse", + &asn_OP_BIT_STRING, + asn_DEF_LightBarSirenInUse_tags_1, + sizeof(asn_DEF_LightBarSirenInUse_tags_1) + /sizeof(asn_DEF_LightBarSirenInUse_tags_1[0]), /* 1 */ + asn_DEF_LightBarSirenInUse_tags_1, /* Same as above */ + sizeof(asn_DEF_LightBarSirenInUse_tags_1) + /sizeof(asn_DEF_LightBarSirenInUse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LightBarSirenInUse_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LightBarSirenInUse_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LightBarSirenInUse_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Longitude.c b/etsi_its_coding/etsi_its_cpm_coding/src/Longitude.c new file mode 100644 index 000000000..adacbe037 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Longitude.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Longitude.h" + +int +Longitude_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -1800000000 && value <= 1800000001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Longitude_constr_1 CC_NOTUSED = { + { 4, 0 } /* (-1800000000..1800000001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Longitude_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, -1800000000, 1800000001 } /* (-1800000000..1800000001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Longitude_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Longitude = { + "Longitude", + "Longitude", + &asn_OP_NativeInteger, + asn_DEF_Longitude_tags_1, + sizeof(asn_DEF_Longitude_tags_1) + /sizeof(asn_DEF_Longitude_tags_1[0]), /* 1 */ + asn_DEF_Longitude_tags_1, /* Same as above */ + sizeof(asn_DEF_Longitude_tags_1) + /sizeof(asn_DEF_Longitude_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Longitude_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Longitude_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Longitude_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAcceleration.c b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAcceleration.c new file mode 100644 index 000000000..b2df6a853 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAcceleration.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LongitudinalAcceleration.h" + +static asn_TYPE_member_t asn_MBR_LongitudinalAcceleration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LongitudinalAcceleration, longitudinalAccelerationValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudinalAccelerationValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitudinalAccelerationValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct LongitudinalAcceleration, longitudinalAccelerationConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitudinalAccelerationConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_LongitudinalAcceleration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LongitudinalAcceleration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* longitudinalAccelerationValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* longitudinalAccelerationConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_LongitudinalAcceleration_specs_1 = { + sizeof(struct LongitudinalAcceleration), + offsetof(struct LongitudinalAcceleration, _asn_ctx), + asn_MAP_LongitudinalAcceleration_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LongitudinalAcceleration = { + "LongitudinalAcceleration", + "LongitudinalAcceleration", + &asn_OP_SEQUENCE, + asn_DEF_LongitudinalAcceleration_tags_1, + sizeof(asn_DEF_LongitudinalAcceleration_tags_1) + /sizeof(asn_DEF_LongitudinalAcceleration_tags_1[0]), /* 1 */ + asn_DEF_LongitudinalAcceleration_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudinalAcceleration_tags_1) + /sizeof(asn_DEF_LongitudinalAcceleration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LongitudinalAcceleration_1, + 2, /* Elements count */ + &asn_SPC_LongitudinalAcceleration_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAccelerationValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAccelerationValue.c new file mode 100644 index 000000000..3ba9b59c2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalAccelerationValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LongitudinalAccelerationValue.h" + +int +LongitudinalAccelerationValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -160 && value <= 161)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LongitudinalAccelerationValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-160..161) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LongitudinalAccelerationValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -160, 161 } /* (-160..161) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LongitudinalAccelerationValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LongitudinalAccelerationValue = { + "LongitudinalAccelerationValue", + "LongitudinalAccelerationValue", + &asn_OP_NativeInteger, + asn_DEF_LongitudinalAccelerationValue_tags_1, + sizeof(asn_DEF_LongitudinalAccelerationValue_tags_1) + /sizeof(asn_DEF_LongitudinalAccelerationValue_tags_1[0]), /* 1 */ + asn_DEF_LongitudinalAccelerationValue_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudinalAccelerationValue_tags_1) + /sizeof(asn_DEF_LongitudinalAccelerationValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LongitudinalAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LongitudinalAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LongitudinalAccelerationValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePosition.c new file mode 100644 index 000000000..cac0e4e32 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePosition.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LongitudinalLanePosition.h" + +asn_TYPE_member_t asn_MBR_LongitudinalLanePosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LongitudinalLanePosition, longitudinalLanePositionValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudinalLanePositionValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitudinalLanePositionValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct LongitudinalLanePosition, longitudinalLanePositionConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudinalLanePositionConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitudinalLanePositionConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_LongitudinalLanePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LongitudinalLanePosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* longitudinalLanePositionValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* longitudinalLanePositionConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LongitudinalLanePosition_specs_1 = { + sizeof(struct LongitudinalLanePosition), + offsetof(struct LongitudinalLanePosition, _asn_ctx), + asn_MAP_LongitudinalLanePosition_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePosition = { + "LongitudinalLanePosition", + "LongitudinalLanePosition", + &asn_OP_SEQUENCE, + asn_DEF_LongitudinalLanePosition_tags_1, + sizeof(asn_DEF_LongitudinalLanePosition_tags_1) + /sizeof(asn_DEF_LongitudinalLanePosition_tags_1[0]), /* 1 */ + asn_DEF_LongitudinalLanePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudinalLanePosition_tags_1) + /sizeof(asn_DEF_LongitudinalLanePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LongitudinalLanePosition_1, + 2, /* Elements count */ + &asn_SPC_LongitudinalLanePosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionConfidence.c new file mode 100644 index 000000000..c2109efab --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LongitudinalLanePositionConfidence.h" + +int +LongitudinalLanePositionConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LongitudinalLanePositionConfidence_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LongitudinalLanePositionConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LongitudinalLanePositionConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePositionConfidence = { + "LongitudinalLanePositionConfidence", + "LongitudinalLanePositionConfidence", + &asn_OP_NativeInteger, + asn_DEF_LongitudinalLanePositionConfidence_tags_1, + sizeof(asn_DEF_LongitudinalLanePositionConfidence_tags_1) + /sizeof(asn_DEF_LongitudinalLanePositionConfidence_tags_1[0]), /* 1 */ + asn_DEF_LongitudinalLanePositionConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudinalLanePositionConfidence_tags_1) + /sizeof(asn_DEF_LongitudinalLanePositionConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LongitudinalLanePositionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LongitudinalLanePositionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LongitudinalLanePositionConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionValue.c new file mode 100644 index 000000000..079df0495 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LongitudinalLanePositionValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LongitudinalLanePositionValue.h" + +int +LongitudinalLanePositionValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LongitudinalLanePositionValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LongitudinalLanePositionValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_LongitudinalLanePositionValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LongitudinalLanePositionValue = { + "LongitudinalLanePositionValue", + "LongitudinalLanePositionValue", + &asn_OP_NativeInteger, + asn_DEF_LongitudinalLanePositionValue_tags_1, + sizeof(asn_DEF_LongitudinalLanePositionValue_tags_1) + /sizeof(asn_DEF_LongitudinalLanePositionValue_tags_1[0]), /* 1 */ + asn_DEF_LongitudinalLanePositionValue_tags_1, /* Same as above */ + sizeof(asn_DEF_LongitudinalLanePositionValue_tags_1) + /sizeof(asn_DEF_LongitudinalLanePositionValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LongitudinalLanePositionValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LongitudinalLanePositionValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + LongitudinalLanePositionValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrices.c b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrices.c new file mode 100644 index 000000000..95714d4cf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrices.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrices.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LowerTriangularPositiveSemidefiniteMatrices_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LowerTriangularPositiveSemidefiniteMatrices_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrices_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LowerTriangularPositiveSemidefiniteMatrix, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrices_specs_1 = { + sizeof(struct LowerTriangularPositiveSemidefiniteMatrices), + offsetof(struct LowerTriangularPositiveSemidefiniteMatrices, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrices = { + "LowerTriangularPositiveSemidefiniteMatrices", + "LowerTriangularPositiveSemidefiniteMatrices", + &asn_OP_SEQUENCE_OF, + asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1, + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1[0]), /* 1 */ + asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1, /* Same as above */ + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrices_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LowerTriangularPositiveSemidefiniteMatrices_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LowerTriangularPositiveSemidefiniteMatrices_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_LowerTriangularPositiveSemidefiniteMatrices_1, + 1, /* Single element */ + &asn_SPC_LowerTriangularPositiveSemidefiniteMatrices_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrix.c b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrix.c new file mode 100644 index 000000000..0c43fc7d5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrix.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrix.h" + +asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrix_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LowerTriangularPositiveSemidefiniteMatrix, componentsIncludedIntheMatrix), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MatrixIncludedComponents, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "componentsIncludedIntheMatrix" + }, + { ATF_NOFLAGS, 0, offsetof(struct LowerTriangularPositiveSemidefiniteMatrix, matrix), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "matrix" + }, +}; +static const ber_tlv_tag_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LowerTriangularPositiveSemidefiniteMatrix_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* componentsIncludedIntheMatrix */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* matrix */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrix_specs_1 = { + sizeof(struct LowerTriangularPositiveSemidefiniteMatrix), + offsetof(struct LowerTriangularPositiveSemidefiniteMatrix, _asn_ctx), + asn_MAP_LowerTriangularPositiveSemidefiniteMatrix_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrix = { + "LowerTriangularPositiveSemidefiniteMatrix", + "LowerTriangularPositiveSemidefiniteMatrix", + &asn_OP_SEQUENCE, + asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1, + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1[0]), /* 1 */ + asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1, /* Same as above */ + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrix_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_LowerTriangularPositiveSemidefiniteMatrix_1, + 2, /* Elements count */ + &asn_SPC_LowerTriangularPositiveSemidefiniteMatrix_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrixColumns.c b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrixColumns.c new file mode 100644 index 000000000..af9e25a58 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/LowerTriangularPositiveSemidefiniteMatrixColumns.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/LowerTriangularPositiveSemidefiniteMatrixColumns.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_LowerTriangularPositiveSemidefiniteMatrixColumns_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..13)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_LowerTriangularPositiveSemidefiniteMatrixColumns_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 13 } /* (SIZE(1..13)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_LowerTriangularPositiveSemidefiniteMatrixColumns_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CorrelationColumn, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_LowerTriangularPositiveSemidefiniteMatrixColumns_specs_1 = { + sizeof(struct LowerTriangularPositiveSemidefiniteMatrixColumns), + offsetof(struct LowerTriangularPositiveSemidefiniteMatrixColumns, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns = { + "LowerTriangularPositiveSemidefiniteMatrixColumns", + "LowerTriangularPositiveSemidefiniteMatrixColumns", + &asn_OP_SEQUENCE_OF, + asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1, + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1[0]), /* 1 */ + asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1, /* Same as above */ + sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1) + /sizeof(asn_DEF_LowerTriangularPositiveSemidefiniteMatrixColumns_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_LowerTriangularPositiveSemidefiniteMatrixColumns_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_LowerTriangularPositiveSemidefiniteMatrixColumns_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_LowerTriangularPositiveSemidefiniteMatrixColumns_1, + 1, /* Single element */ + &asn_SPC_LowerTriangularPositiveSemidefiniteMatrixColumns_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ManagementContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/ManagementContainer.c new file mode 100644 index 000000000..edf63c870 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ManagementContainer.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ManagementContainer.h" + +asn_TYPE_member_t asn_MBR_ManagementContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ManagementContainer, referenceTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimestampIts, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "referenceTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct ManagementContainer, referencePosition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReferencePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "referencePosition" + }, + { ATF_POINTER, 2, offsetof(struct ManagementContainer, segmentationInfo), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MessageSegmentationInfo, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "segmentationInfo" + }, + { ATF_POINTER, 1, offsetof(struct ManagementContainer, messageRateRange), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MessageRateRange, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageRateRange" + }, +}; +static const int asn_MAP_ManagementContainer_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ManagementContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ManagementContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* referenceTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* referencePosition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* segmentationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* messageRateRange */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ManagementContainer_specs_1 = { + sizeof(struct ManagementContainer), + offsetof(struct ManagementContainer, _asn_ctx), + asn_MAP_ManagementContainer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ManagementContainer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ManagementContainer = { + "ManagementContainer", + "ManagementContainer", + &asn_OP_SEQUENCE, + asn_DEF_ManagementContainer_tags_1, + sizeof(asn_DEF_ManagementContainer_tags_1) + /sizeof(asn_DEF_ManagementContainer_tags_1[0]), /* 1 */ + asn_DEF_ManagementContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_ManagementContainer_tags_1) + /sizeof(asn_DEF_ManagementContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ManagementContainer_1, + 4, /* Elements count */ + &asn_SPC_ManagementContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MapPosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/MapPosition.c new file mode 100644 index 000000000..ab480f0f4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MapPosition.c @@ -0,0 +1,134 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MapPosition.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MapPosition_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MapPosition_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MapPosition_1[] = { + { ATF_POINTER, 4, offsetof(struct MapPosition, mapReference), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MapReference, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mapReference" + }, + { ATF_POINTER, 3, offsetof(struct MapPosition, laneId), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "laneId" + }, + { ATF_POINTER, 2, offsetof(struct MapPosition, connectionId), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "connectionId" + }, + { ATF_POINTER, 1, offsetof(struct MapPosition, longitudinalLanePosition), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LongitudinalLanePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitudinalLanePosition" + }, +}; +static const int asn_MAP_MapPosition_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_MapPosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MapPosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mapReference */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* laneId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* connectionId */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* longitudinalLanePosition */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MapPosition_specs_1 = { + sizeof(struct MapPosition), + offsetof(struct MapPosition, _asn_ctx), + asn_MAP_MapPosition_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MapPosition_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MapPosition = { + "MapPosition", + "MapPosition", + &asn_OP_SEQUENCE, + asn_DEF_MapPosition_tags_1, + sizeof(asn_DEF_MapPosition_tags_1) + /sizeof(asn_DEF_MapPosition_tags_1[0]), /* 1 */ + asn_DEF_MapPosition_tags_1, /* Same as above */ + sizeof(asn_DEF_MapPosition_tags_1) + /sizeof(asn_DEF_MapPosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MapPosition_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MapPosition_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MapPosition_1, + 4, /* Elements count */ + &asn_SPC_MapPosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MapReference.c b/etsi_its_coding/etsi_its_cpm_coding/src/MapReference.c new file mode 100644 index 000000000..03f9a6806 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MapReference.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MapReference.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MapReference_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MapReference_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MapReference_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MapReference, choice.roadsegment), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RoadSegmentReferenceId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "roadsegment" + }, + { ATF_NOFLAGS, 0, offsetof(struct MapReference, choice.intersection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntersectionReferenceId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "intersection" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MapReference_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* roadsegment */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* intersection */ +}; +asn_CHOICE_specifics_t asn_SPC_MapReference_specs_1 = { + sizeof(struct MapReference), + offsetof(struct MapReference, _asn_ctx), + offsetof(struct MapReference, present), + sizeof(((struct MapReference *)0)->present), + asn_MAP_MapReference_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MapReference = { + "MapReference", + "MapReference", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MapReference_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MapReference_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_MapReference_1, + 2, /* Elements count */ + &asn_SPC_MapReference_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MatrixIncludedComponents.c b/etsi_its_coding/etsi_its_cpm_coding/src/MatrixIncludedComponents.c new file mode 100644 index 000000000..d2b0c782c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MatrixIncludedComponents.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MatrixIncludedComponents.h" + +int +MatrixIncludedComponents_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 13)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MatrixIncludedComponents_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MatrixIncludedComponents_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 13, 13 } /* (SIZE(13..13,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MatrixIncludedComponents_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MatrixIncludedComponents = { + "MatrixIncludedComponents", + "MatrixIncludedComponents", + &asn_OP_BIT_STRING, + asn_DEF_MatrixIncludedComponents_tags_1, + sizeof(asn_DEF_MatrixIncludedComponents_tags_1) + /sizeof(asn_DEF_MatrixIncludedComponents_tags_1[0]), /* 1 */ + asn_DEF_MatrixIncludedComponents_tags_1, /* Same as above */ + sizeof(asn_DEF_MatrixIncludedComponents_tags_1) + /sizeof(asn_DEF_MatrixIncludedComponents_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MatrixIncludedComponents_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MatrixIncludedComponents_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MatrixIncludedComponents_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MessageId.c b/etsi_its_coding/etsi_its_cpm_coding/src/MessageId.c new file mode 100644 index 000000000..1b97f50e5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MessageId.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MessageId.h" + +int +MessageId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MessageId_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MessageId_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_MessageId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MessageId = { + "MessageId", + "MessageId", + &asn_OP_NativeInteger, + asn_DEF_MessageId_tags_1, + sizeof(asn_DEF_MessageId_tags_1) + /sizeof(asn_DEF_MessageId_tags_1[0]), /* 1 */ + asn_DEF_MessageId_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageId_tags_1) + /sizeof(asn_DEF_MessageId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MessageId_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MessageId_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + MessageId_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateHz.c b/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateHz.c new file mode 100644 index 000000000..f522b278c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateHz.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MessageRateHz.h" + +static int +memb_mantissa_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_exponent_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -5 && value <= 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_mantissa_constr_2 CC_NOTUSED = { + { 1, 1 } /* (1..100) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_mantissa_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 100 } /* (1..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_exponent_constr_3 CC_NOTUSED = { + { 1, 0 } /* (-5..2) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_exponent_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, -5, 2 } /* (-5..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MessageRateHz_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MessageRateHz, mantissa), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_mantissa_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_mantissa_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_mantissa_constraint_1 + }, + 0, 0, /* No default value */ + "mantissa" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageRateHz, exponent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_exponent_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_exponent_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_exponent_constraint_1 + }, + 0, 0, /* No default value */ + "exponent" + }, +}; +static const ber_tlv_tag_t asn_DEF_MessageRateHz_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MessageRateHz_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mantissa */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* exponent */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MessageRateHz_specs_1 = { + sizeof(struct MessageRateHz), + offsetof(struct MessageRateHz, _asn_ctx), + asn_MAP_MessageRateHz_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MessageRateHz = { + "MessageRateHz", + "MessageRateHz", + &asn_OP_SEQUENCE, + asn_DEF_MessageRateHz_tags_1, + sizeof(asn_DEF_MessageRateHz_tags_1) + /sizeof(asn_DEF_MessageRateHz_tags_1[0]), /* 1 */ + asn_DEF_MessageRateHz_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageRateHz_tags_1) + /sizeof(asn_DEF_MessageRateHz_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MessageRateHz_1, + 2, /* Elements count */ + &asn_SPC_MessageRateHz_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateRange.c b/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateRange.c new file mode 100644 index 000000000..65e4b49f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MessageRateRange.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MessageRateRange.h" + +asn_TYPE_member_t asn_MBR_MessageRateRange_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MessageRateRange, messageRateMin), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MessageRateHz, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageRateMin" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageRateRange, messageRateMax), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MessageRateHz, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "messageRateMax" + }, +}; +static const ber_tlv_tag_t asn_DEF_MessageRateRange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MessageRateRange_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageRateMin */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageRateMax */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MessageRateRange_specs_1 = { + sizeof(struct MessageRateRange), + offsetof(struct MessageRateRange, _asn_ctx), + asn_MAP_MessageRateRange_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MessageRateRange = { + "MessageRateRange", + "MessageRateRange", + &asn_OP_SEQUENCE, + asn_DEF_MessageRateRange_tags_1, + sizeof(asn_DEF_MessageRateRange_tags_1) + /sizeof(asn_DEF_MessageRateRange_tags_1[0]), /* 1 */ + asn_DEF_MessageRateRange_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageRateRange_tags_1) + /sizeof(asn_DEF_MessageRateRange_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MessageRateRange_1, + 2, /* Elements count */ + &asn_SPC_MessageRateRange_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MessageSegmentationInfo.c b/etsi_its_coding/etsi_its_cpm_coding/src/MessageSegmentationInfo.c new file mode 100644 index 000000000..dd41555af --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MessageSegmentationInfo.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MessageSegmentationInfo.h" + +asn_TYPE_member_t asn_MBR_MessageSegmentationInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MessageSegmentationInfo, totalMsgNo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CardinalNumber3b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "totalMsgNo" + }, + { ATF_NOFLAGS, 0, offsetof(struct MessageSegmentationInfo, thisMsgNo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OrdinalNumber3b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "thisMsgNo" + }, +}; +static const ber_tlv_tag_t asn_DEF_MessageSegmentationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MessageSegmentationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* totalMsgNo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* thisMsgNo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MessageSegmentationInfo_specs_1 = { + sizeof(struct MessageSegmentationInfo), + offsetof(struct MessageSegmentationInfo, _asn_ctx), + asn_MAP_MessageSegmentationInfo_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MessageSegmentationInfo = { + "MessageSegmentationInfo", + "MessageSegmentationInfo", + &asn_OP_SEQUENCE, + asn_DEF_MessageSegmentationInfo_tags_1, + sizeof(asn_DEF_MessageSegmentationInfo_tags_1) + /sizeof(asn_DEF_MessageSegmentationInfo_tags_1[0]), /* 1 */ + asn_DEF_MessageSegmentationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_MessageSegmentationInfo_tags_1) + /sizeof(asn_DEF_MessageSegmentationInfo_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MessageSegmentationInfo_1, + 2, /* Elements count */ + &asn_SPC_MessageSegmentationInfo_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MitigationForTechnologies.c b/etsi_its_coding/etsi_its_cpm_coding/src/MitigationForTechnologies.c new file mode 100644 index 000000000..ff5edc0da --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MitigationForTechnologies.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MitigationForTechnologies.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_MitigationForTechnologies_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_MitigationForTechnologies_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MitigationForTechnologies_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MitigationPerTechnologyClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MitigationForTechnologies_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MitigationForTechnologies_specs_1 = { + sizeof(struct MitigationForTechnologies), + offsetof(struct MitigationForTechnologies, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MitigationForTechnologies = { + "MitigationForTechnologies", + "MitigationForTechnologies", + &asn_OP_SEQUENCE_OF, + asn_DEF_MitigationForTechnologies_tags_1, + sizeof(asn_DEF_MitigationForTechnologies_tags_1) + /sizeof(asn_DEF_MitigationForTechnologies_tags_1[0]), /* 1 */ + asn_DEF_MitigationForTechnologies_tags_1, /* Same as above */ + sizeof(asn_DEF_MitigationForTechnologies_tags_1) + /sizeof(asn_DEF_MitigationForTechnologies_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_MitigationForTechnologies_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_MitigationForTechnologies_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_MitigationForTechnologies_1, + 1, /* Single element */ + &asn_SPC_MitigationForTechnologies_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/MitigationPerTechnologyClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/MitigationPerTechnologyClass.c new file mode 100644 index 000000000..a33b6ceac --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/MitigationPerTechnologyClass.c @@ -0,0 +1,288 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/MitigationPerTechnologyClass.h" + +static int +memb_lowDutyCycle_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 10000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_powerReduction_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 30)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_dmcToffLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1200)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_dmcTonLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_lowDutyCycle_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..10000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_lowDutyCycle_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 10000 } /* (0..10000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_powerReduction_constr_4 CC_NOTUSED = { + { 1, 1 } /* (0..30) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_powerReduction_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 30 } /* (0..30) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_dmcToffLimit_constr_5 CC_NOTUSED = { + { 2, 1 } /* (0..1200) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_dmcToffLimit_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 1200 } /* (0..1200) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_dmcTonLimit_constr_6 CC_NOTUSED = { + { 1, 1 } /* (0..20) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_dmcTonLimit_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 20 } /* (0..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_MitigationPerTechnologyClass_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MitigationPerTechnologyClass, accessTechnologyClass), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccessTechnologyClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "accessTechnologyClass" + }, + { ATF_POINTER, 4, offsetof(struct MitigationPerTechnologyClass, lowDutyCycle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_lowDutyCycle_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_lowDutyCycle_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_lowDutyCycle_constraint_1 + }, + 0, 0, /* No default value */ + "lowDutyCycle" + }, + { ATF_POINTER, 3, offsetof(struct MitigationPerTechnologyClass, powerReduction), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_powerReduction_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_powerReduction_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_powerReduction_constraint_1 + }, + 0, 0, /* No default value */ + "powerReduction" + }, + { ATF_POINTER, 2, offsetof(struct MitigationPerTechnologyClass, dmcToffLimit), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_dmcToffLimit_constr_5, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_dmcToffLimit_constr_5, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_dmcToffLimit_constraint_1 + }, + 0, 0, /* No default value */ + "dmcToffLimit" + }, + { ATF_POINTER, 1, offsetof(struct MitigationPerTechnologyClass, dmcTonLimit), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_dmcTonLimit_constr_6, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_dmcTonLimit_constr_6, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_dmcTonLimit_constraint_1 + }, + 0, 0, /* No default value */ + "dmcTonLimit" + }, +}; +static const int asn_MAP_MitigationPerTechnologyClass_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_MitigationPerTechnologyClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MitigationPerTechnologyClass_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accessTechnologyClass */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lowDutyCycle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* powerReduction */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dmcToffLimit */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* dmcTonLimit */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MitigationPerTechnologyClass_specs_1 = { + sizeof(struct MitigationPerTechnologyClass), + offsetof(struct MitigationPerTechnologyClass, _asn_ctx), + asn_MAP_MitigationPerTechnologyClass_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_MitigationPerTechnologyClass_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MitigationPerTechnologyClass = { + "MitigationPerTechnologyClass", + "MitigationPerTechnologyClass", + &asn_OP_SEQUENCE, + asn_DEF_MitigationPerTechnologyClass_tags_1, + sizeof(asn_DEF_MitigationPerTechnologyClass_tags_1) + /sizeof(asn_DEF_MitigationPerTechnologyClass_tags_1[0]), /* 1 */ + asn_DEF_MitigationPerTechnologyClass_tags_1, /* Same as above */ + sizeof(asn_DEF_MitigationPerTechnologyClass_tags_1) + /sizeof(asn_DEF_MitigationPerTechnologyClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_MitigationPerTechnologyClass_1, + 5, /* Elements count */ + &asn_SPC_MitigationPerTechnologyClass_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL.c new file mode 100644 index 000000000..b8e762130 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL.c @@ -0,0 +1,113 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + NULL_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NULL_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NULL_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NULL_decode_ber, + NULL_encode_der, /* Special handling of DER encoding */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NULL_decode_xer, + NULL_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NULL_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NULL_decode_oer, + NULL_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NULL_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +NULL_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(NULL_t)); + break; + } + } +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_aper.c new file mode 100644 index 000000000..20c2f0daa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_aper.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_ber.c new file mode 100644 index 000000000..58a776698 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_ber.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode NULL type. + */ +asn_dec_rval_t +NULL_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + NULL_t *st = (NULL_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + if(st == NULL) { + st = (NULL_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as NULL (tm=%d)", td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, tag_mode, 0, + &length, 0); + if(rval.code != RC_OK) { + return rval; + } + + // X.690-201508, #8.8.2, length shall be zero. + if(length != 0) { + ASN_DEBUG("Decoding %s as NULL failed: too much data", td->name); + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + return rval; +} + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_jer.c new file mode 100644 index 000000000..e729e66c5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_jer.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +NULL_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_oer.c new file mode 100644 index 000000000..bb301be0a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_oer.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_print.c new file mode 100644 index 000000000..26a5d5260 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_print.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_rfill.c new file mode 100644 index 000000000..813637225 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_rfill.c @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_uper.c new file mode 100644 index 000000000..f34ff0d15 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_uper.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NULL_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_xer.c new file mode 100644 index 000000000..62f74f17d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NULL_xer.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated.c new file mode 100644 index 000000000..bdc620a15 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated.c @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeEnumerated_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeEnumerated_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_aper.c new file mode 100644 index 000000000..29b697225 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_aper.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset = %zu Padding bits = %d", + td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %llu", + td->name, (unsigned long long)ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + + /* XXX handle indefinite index length > 64k */ + value = aper_get_nsnnwn(pd, 65537); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + //if(value >= specs->map_count) + // ASN__DECODE_FAILED; + if(value >= specs->map_count) { + ASN_DEBUG("Decoded unknown index value %s = %ld", td->name, value); + /* unknown index. Workaround => set the first enumeration value */ + *native = specs->value2enum[0].nat_value; + return rval; + } + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0, range_bits = 1; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) range_bits = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(range_bits && ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(aper_put_nsnnwn(po, + ct->upper_bound - ct->lower_bound + 1, + value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_jer.c new file mode 100644 index 000000000..d8ad57696 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_jer.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeEnumerated_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "\"%s\"", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_oer.c new file mode 100644 index 000000000..05114fa76 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_oer.c @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static long +asn__nativeenumerated_convert(const uint8_t *b, const uint8_t *end) { + unsigned long value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (unsigned long)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +asn_dec_rval_t +NativeEnumerated_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + const uint8_t *b = ptr; + + (void)opt_codec_ctx; + (void)constraints; + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if((*b & 0x80) == 0) { + /* + * X.696 (08/2015) #11.2 Short form for Enumerated. + */ + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = *b; + rval.consumed = 1; + } else { + /* + * X.696 (08/2015) #11.4 Long form for Enumerated. + */ + size_t length = *b & 0x7f; + const uint8_t *bend; + long value; + + if(length < 1 || length > sizeof(*native)) { + ASN__DECODE_FAILED; + } + if((1 + length) > size) { + ASN__DECODE_STARVED; + } + b++; + bend = b + length; + + value = asn__nativeenumerated_convert(b, bend); + if(value < 0) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + ASN__DECODE_FAILED; + } + } + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = value; + + rval.consumed = (1 + length); + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeEnumerated_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + long native; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + if(native >= 0 && native <= 127) { + /* #11.2 Short form */ + uint8_t b = native; + er.encoded = 1; + if(cb(&b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } else { + /* #11.2 Long form */ + uint8_t buf[1 + sizeof(native)]; + uint8_t *b = &buf[sizeof(native)]; /* Last addressable */ + long final_pattern = -1 * (native < 0); + + for(;;) { + *b-- = native; + native >>= 8; + if(native == final_pattern) { + if(final_pattern) { + if((b[1] & 0x80)) break; + } else { + if(!(b[1] & 0x80)) break; + } + } + } + *b = 0x80 | (&buf[sizeof(native)] - b); + er.encoded = 1 + (&buf[sizeof(native)] - b); + if(cb(b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_uper.c new file mode 100644 index 000000000..c11910937 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_uper.c @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_xer.c new file mode 100644 index 000000000..bf33c3e47 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeEnumerated_xer.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger.c new file mode 100644 index 000000000..dc0a65bc8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger.c @@ -0,0 +1,152 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + NativeInteger_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + NativeInteger_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + NativeInteger_decode_ber, + NativeInteger_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + NativeInteger_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + NativeInteger_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_aper.c new file mode 100644 index 000000000..e8df0fde2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_aper.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_ber.c new file mode 100644 index 000000000..60382a5f6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_ber.c @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occurred, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_jer.c new file mode 100644 index 000000000..e74265d27 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_jer.c @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +NativeInteger_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_oer.c new file mode 100644 index 000000000..2d8f0adb2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_oer.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + INTEGER_t tmpint; + INTEGER_t *tmpintptr = &tmpint; + + memset(&tmpint, 0, sizeof(tmpint)); + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + /* + * OPTIMIZATION: Encode directly rather than passing through INTEGER. + * Saves a memory allocation. + */ + rval = INTEGER_decode_oer(opt_codec_ctx, td, constraints, + (void **)&tmpintptr, ptr, size); + if(rval.code != RC_OK) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return rval; + } + + if(specs && specs->field_unsigned) { + unsigned long ul; + int ok = asn_INTEGER2ulong(&tmpint, &ul) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = ul; + } else { + rval.code = RC_FAIL; + return rval; + } + } else { + long l; + int ok = asn_INTEGER2long(&tmpint, &l) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = l; + } else { + rval.code = RC_FAIL; + return rval; + } + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeInteger_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t tmpint; + long native; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + memset(&tmpint, 0, sizeof(tmpint)); + + ASN_DEBUG("Encoding %s %ld as NativeInteger", td ? td->name : "", native); + + if((specs && specs->field_unsigned) ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t er = + INTEGER_encode_oer(td, constraints, &tmpint, cb, app_key); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_print.c new file mode 100644 index 000000000..926253a1d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_print.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_rfill.c new file mode 100644 index 000000000..3a3af8412 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_rfill.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + const asn_per_constraints_t *ct; + + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_uper.c new file mode 100644 index 000000000..b3bfa75aa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_uper.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_xer.c new file mode 100644 index 000000000..a2c4e7e5b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NativeInteger_xer.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NumberOfOccupants.c b/etsi_its_coding/etsi_its_cpm_coding/src/NumberOfOccupants.c new file mode 100644 index 000000000..e3ebaf438 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NumberOfOccupants.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/NumberOfOccupants.h" + +int +NumberOfOccupants_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_NumberOfOccupants_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_NumberOfOccupants_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_NumberOfOccupants_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NumberOfOccupants = { + "NumberOfOccupants", + "NumberOfOccupants", + &asn_OP_NativeInteger, + asn_DEF_NumberOfOccupants_tags_1, + sizeof(asn_DEF_NumberOfOccupants_tags_1) + /sizeof(asn_DEF_NumberOfOccupants_tags_1[0]), /* 1 */ + asn_DEF_NumberOfOccupants_tags_1, /* Same as above */ + sizeof(asn_DEF_NumberOfOccupants_tags_1) + /sizeof(asn_DEF_NumberOfOccupants_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_NumberOfOccupants_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_NumberOfOccupants_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NumberOfOccupants_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/NumericString.c b/etsi_its_coding/etsi_its_cpm_coding/src/NumericString.c new file mode 100644 index 000000000..bca0739f3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/NumericString.c @@ -0,0 +1,157 @@ +/*- + * Copyright (c) 2003, 2006 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * NumericString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NumericString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (18 << 2)), /* [UNIVERSAL 18] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static int asn_DEF_NumericString_v2c(unsigned int value) { + switch(value) { + case 0x20: return 0; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + return value - (0x30 - 1); + } + return -1; +} +static int asn_DEF_NumericString_c2v(unsigned int code) { + if(code > 0) { + if(code <= 10) + return code + (0x30 - 1); + else + return -1; + } else { + return 0x20; + } +} +static asn_per_constraints_t asn_DEF_NumericString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_NumericString_v2c, + asn_DEF_NumericString_c2v +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_operation_t asn_OP_NumericString = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* ASCII subset */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NumericString = { + "NumericString", + "NumericString", + &asn_OP_NumericString, + asn_DEF_NumericString_tags, + sizeof(asn_DEF_NumericString_tags) + / sizeof(asn_DEF_NumericString_tags[0]) - 1, + asn_DEF_NumericString_tags, + sizeof(asn_DEF_NumericString_tags) + / sizeof(asn_DEF_NumericString_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_DEF_NumericString_per_constraints, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NumericString_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +NumericString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const NumericString_t *st = (const NumericString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the NumericString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + switch(*buf) { + case 0x20: + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + continue; + } + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in NumericString alphabet (%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER.c b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER.c new file mode 100644 index 000000000..5d909c548 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER.c @@ -0,0 +1,532 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OBJECT_IDENTIFIER_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ +#if !defined(ASN_DISABLE_BER_SUPPORT) + ber_decode_primitive, + der_encode_primitive, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OBJECT_IDENTIFIER_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OBJECT_IDENTIFIER_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OBJECT_IDENTIFIER_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0 = 0; + asn_oid_arc_t arc1 = 0; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0 = 0; + asn_oid_arc_t arc1 = 0; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_jer.c new file mode 100644 index 000000000..1b0467090 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_jer.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_print.c new file mode 100644 index 000000000..723f607b9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_print.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_rfill.c new file mode 100644 index 000000000..dd3bbcfd0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_rfill.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_xer.c new file mode 100644 index 000000000..112190d61 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OBJECT_IDENTIFIER_xer.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + (void)chunk_end; + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING.c new file mode 100644 index 000000000..4f8b9d8e1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING.c @@ -0,0 +1,383 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + OCTET_STRING_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_no_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + + if(!td || !st) + return; + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + +#if !defined(ASN_DISABLE_BER_SUPPORT) + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Remove decode-time stack. + */ + struct _stack *stck; + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + (void)specs; + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_aper.c new file mode 100644 index 000000000..aca5ea00f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_aper.c @@ -0,0 +1,414 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* + case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %lld .. %lld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + (long long int)csiz->lower_bound, (long long int)csiz->upper_bound, + csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + /* X.691 #16 NOTE 1 for fixed length (<= 16 bits) strings */ + if (st->size > 2 || csiz->range_bits != 0) { + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %lld", + (long long int)csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %lld", + (long long int)csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + repeat = 0; + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings */ + if ((raw_len > 2) || (csiz->upper_bound > 2) || (csiz->range_bits != 0)) + { + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], + raw_len, bpc, + unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: +/* + case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* + if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%lld..%lld, effective %d)%s", + td->name, sizeinunits, unit_bits, + (long long int)csiz->lower_bound, + (long long int)csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %zu bytes (%lld), length in %d bits", + st->size, (long long int)(sizeinunits - csiz->lower_bound), + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->lower_bound, csiz->upper_bound, + sizeinunits - csiz->lower_bound, NULL); + if(ret < 0) ASN__ENCODE_FAILED; + } + if (csiz->effective_bits > 0 || (st->size > 2) + || (csiz->upper_bound > (2 * 8 / unit_bits)) + || (csiz->range_bits != 0)) + { /* X.691 #16 NOTE 1 for fixed length (<=16 bits) strings*/ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %zu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, -1, 0, NULL) < 0) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, sizeinunits, &need_eom); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, maySave, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_ber.c new file mode 100644 index 000000000..551863793 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_ber.c @@ -0,0 +1,525 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef _CH_PHASE +#define _CH_PHASE(ctx, inc) do {\ + if(ctx->phase == 0)\ + ctx->context = 0;\ + ctx->phase += inc;\ + } while(0) + +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#undef PREV_PHASE +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do {\ + size_t num = (num_bytes);\ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num;\ + consumed_myself += num;\ + } while(0) + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do {\ + size_t _bs = (bufsize); /* Append size */\ + size_t _ns = ctx->context; /* Allocated now */\ + size_t _es = st->size + _bs; /* Expected size */\ + /* int is really a typeof(st->size): */\ + if((int)_es < 0) RETURN(RC_FAIL);\ + if(_ns <= _es) {\ + void *ptr;\ + /* Be nice and round to the memory allocator */\ + do { _ns = _ns ? _ns << 1 : 16; }\ + while(_ns <= _es);\ + /* int is really a typeof(st->size): */\ + if((int)_ns < 0) RETURN(RC_FAIL);\ + ptr = REALLOC(st->buf, _ns);\ + if(ptr) {\ + st->buf = (uint8_t *)ptr;\ + ctx->context = _ns;\ + } else {\ + RETURN(RC_FAIL);\ + }\ + ASN_DEBUG("Reallocating into %ld", (long)_ns);\ + }\ + memcpy(st->buf + st->size, bufptr, _bs);\ + /* Convenient nul-termination */\ + st->buf[_es] = '\0';\ + st->size = _es;\ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that acquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_jer.c new file mode 100644 index 000000000..a892960f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_jer.c @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +asn_enc_rval_t +OCTET_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + ASN__CALLBACK("\"", 1); + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + if(p - scratch) { + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } + ASN__CALLBACK("\"", 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__jer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__jer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +asn_enc_rval_t +OCTET_STRING_encode_jer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__jer_escape_table) + / sizeof(OCTET_STRING__jer_escape_table[0]) + && (s_len = OCTET_STRING__jer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__jer_escape_table[ch].string, s_len, app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_oer.c new file mode 100644 index 000000000..42963fc89 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_oer.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +OCTET_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to decode BIT STRING"); + ASN__DECODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + (void)opt_codec_ctx; + + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = unit_bytes * ct_size; + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length % unit_bytes != 0) { + ASN_DEBUG( + "Data size %" ASN_PRI_SIZE " bytes is not consistent with multiplier %" ASN_PRI_SIZE "", + expected_length, unit_bytes); + ASN__DECODE_FAILED; + } + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +OCTET_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_enc_rval_t er = {0, 0, 0}; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s %" ASN_PRI_SIZE " as OCTET STRING", td ? td->name : "", st->size); + + if(ct_size >= 0) { + /* + * Check that available data matches the constraint + */ + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to encode BIT STRING"); + ASN__ENCODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + if(st->size != unit_bytes * (size_t)ct_size) { + ASN_DEBUG( + "Trying to encode %s (%" ASN_PRI_SIZE " bytes) which doesn't fit SIZE " + "constraint (%" ASN_PRI_SIZE ")", + td->name, st->size, ct_size); + ASN__ENCODE_FAILED; + } + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + } + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_print.c new file mode 100644 index 000000000..fdc014dd5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_print.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = (buf == NULL)? NULL : buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_rfill.c new file mode 100644 index 000000000..2b25410b6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_rfill.c @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else { +#else + if(!constraints) constraints = &td->encoding_constraints; + { +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + } + + return rnd_len; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_uper.c new file mode 100644 index 000000000..320c2f636 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_uper.c @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +#undef RETURN +#define RETURN(_code) do {\ + asn_dec_rval_t tmprval;\ + tmprval.code = _code;\ + tmprval.consumed = consumed_myself;\ + return tmprval;\ + } while(0) + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, + bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, + pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints + ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_xer.c new file mode 100644 index 000000000..9dd771cb3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OCTET_STRING_xer.c @@ -0,0 +1,627 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + / sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, + opt_unexpected_tag_decoder, + body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, + OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, + OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE.c new file mode 100644 index 000000000..9787457ba --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OPEN_TYPE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OPEN_TYPE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OPEN_TYPE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Random fill is not supported for open type */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_aper.c new file mode 100644 index 000000000..d334241b7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_aper.c @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +int OPEN_TYPE_aper_is_unknown_type(const asn_TYPE_descriptor_t *td, void *sptr, const asn_TYPE_member_t *elm) { + asn_type_selector_result_t selected; + + if(!elm->type_selector) { + return 1; + } + else { + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + return 1; + } + } + return 0; +} + +asn_dec_rval_t +OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) { +#define ASN_DUMMY_BYTES 256 + unsigned char dummy[ASN_DUMMY_BYTES], *dummy_ptr = NULL; + ssize_t bytes; + int repeat; + asn_dec_rval_t rv; + + rv.consumed = 0; + rv.code = RC_FAIL; + + do { + bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if (bytes > 10 * ASN_DUMMY_BYTES) + { + return rv; + } + else if (bytes > ASN_DUMMY_BYTES) + { + dummy_ptr = CALLOC(1, bytes); + if (!dummy_ptr) + return rv; + } + + per_get_many_bits(pd, (dummy_ptr ? dummy_ptr : dummy), 0, bytes << 3); + + if (dummy_ptr) + { + FREEMEM(dummy_ptr); + dummy_ptr = NULL; + } + } while (repeat); + + rv.code = RC_OK; + return rv; +#undef ASN_DUMMY_BYTES +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_ber.c new file mode 100644 index 000000000..8c15bfe6a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_ber.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_oer.c new file mode 100644 index 000000000..d2f86074d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_oer.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + asn_TYPE_member_t *elm, const void *ptr, size_t size) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + size_t ot_ret; + + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ot_ret = oer_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, ptr, size); + switch(ot_ret) { + default: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = ot_ret; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case -1: + rv.code = RC_FAIL; + rv.consumed = ot_ret; + break; + case 0: + rv.code = RC_WMORE; + rv.consumed = 0; + break; + } + + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + return rv; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_uper.c new file mode 100644 index 000000000..9bddd3671 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_uper.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_xer.c new file mode 100644 index 000000000..2e9862f7a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OPEN_TYPE_xer.c @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClass.c new file mode 100644 index 000000000..86b5d7d27 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClass.c @@ -0,0 +1,197 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectClass.h" + +static int +memb_vehicleSubClass_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value == 0) || (value >= 5 && value <= 11) || (value == 14))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_groupSubClass_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_vehicleSubClass_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..14) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_vehicleSubClass_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 14 } /* (0..14) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_groupSubClass_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_groupSubClass_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectClass_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ObjectClass_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObjectClass, choice.vehicleSubClass), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrafficParticipantType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_vehicleSubClass_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_vehicleSubClass_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_vehicleSubClass_constraint_1 + }, + 0, 0, /* No default value */ + "vehicleSubClass" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObjectClass, choice.vruSubClass), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_VruProfileAndSubprofile, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vruSubClass" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObjectClass, choice.groupSubClass), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruClusterInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_groupSubClass_constr_4, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_groupSubClass_constr_4, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_groupSubClass_constraint_1 + }, + 0, 0, /* No default value */ + "groupSubClass" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObjectClass, choice.otherSubClass), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OtherSubClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "otherSubClass" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ObjectClass_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleSubClass */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vruSubClass */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* groupSubClass */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* otherSubClass */ +}; +asn_CHOICE_specifics_t asn_SPC_ObjectClass_specs_1 = { + sizeof(struct ObjectClass), + offsetof(struct ObjectClass, _asn_ctx), + offsetof(struct ObjectClass, present), + sizeof(((struct ObjectClass *)0)->present), + asn_MAP_ObjectClass_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectClass = { + "ObjectClass", + "ObjectClass", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_ObjectClass_1, + 4, /* Elements count */ + &asn_SPC_ObjectClass_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassDescription.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassDescription.c new file mode 100644 index 000000000..1a0b821df --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassDescription.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectClassDescription.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectClassDescription_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectClassDescription_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_ObjectClassDescription_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ObjectClassWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ObjectClassDescription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ObjectClassDescription_specs_1 = { + sizeof(struct ObjectClassDescription), + offsetof(struct ObjectClassDescription, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectClassDescription = { + "ObjectClassDescription", + "ObjectClassDescription", + &asn_OP_SEQUENCE_OF, + asn_DEF_ObjectClassDescription_tags_1, + sizeof(asn_DEF_ObjectClassDescription_tags_1) + /sizeof(asn_DEF_ObjectClassDescription_tags_1[0]), /* 1 */ + asn_DEF_ObjectClassDescription_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectClassDescription_tags_1) + /sizeof(asn_DEF_ObjectClassDescription_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectClassDescription_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectClassDescription_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ObjectClassDescription_1, + 1, /* Single element */ + &asn_SPC_ObjectClassDescription_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassWithConfidence.c new file mode 100644 index 000000000..94e78138f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectClassWithConfidence.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectClassWithConfidence.h" + +asn_TYPE_member_t asn_MBR_ObjectClassWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObjectClassWithConfidence, objectClass), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ObjectClass, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectClass" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObjectClassWithConfidence, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConfidenceLevel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_ObjectClassWithConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ObjectClassWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* objectClass */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ObjectClassWithConfidence_specs_1 = { + sizeof(struct ObjectClassWithConfidence), + offsetof(struct ObjectClassWithConfidence, _asn_ctx), + asn_MAP_ObjectClassWithConfidence_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectClassWithConfidence = { + "ObjectClassWithConfidence", + "ObjectClassWithConfidence", + &asn_OP_SEQUENCE, + asn_DEF_ObjectClassWithConfidence_tags_1, + sizeof(asn_DEF_ObjectClassWithConfidence_tags_1) + /sizeof(asn_DEF_ObjectClassWithConfidence_tags_1[0]), /* 1 */ + asn_DEF_ObjectClassWithConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectClassWithConfidence_tags_1) + /sizeof(asn_DEF_ObjectClassWithConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ObjectClassWithConfidence_1, + 2, /* Elements count */ + &asn_SPC_ObjectClassWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDescriptor.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDescriptor.c new file mode 100644 index 000000000..1e6ff5686 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDescriptor.c @@ -0,0 +1,91 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ObjectDescriptor basic type description. + */ +static const ber_tlv_tag_t asn_DEF_ObjectDescriptor_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (7 << 2)), /* [UNIVERSAL 7] IMPLICIT ... */ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_ObjectDescriptor = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + OCTET_STRING_print_utf8, /* Treat as ASCII subset (it's not) */ +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, + 0, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + 0, /* Not supported for ObjectDescriptor */ +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDescriptor = { + "ObjectDescriptor", + "ObjectDescriptor", + &asn_OP_ObjectDescriptor, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]) - 1, + asn_DEF_ObjectDescriptor_tags, + sizeof(asn_DEF_ObjectDescriptor_tags) + / sizeof(asn_DEF_ObjectDescriptor_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + asn_generic_unknown_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimension.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimension.c new file mode 100644 index 000000000..f29f3fb12 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimension.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectDimension.h" + +asn_TYPE_member_t asn_MBR_ObjectDimension_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ObjectDimension, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDimensionValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct ObjectDimension, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDimensionConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_ObjectDimension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ObjectDimension_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ObjectDimension_specs_1 = { + sizeof(struct ObjectDimension), + offsetof(struct ObjectDimension, _asn_ctx), + asn_MAP_ObjectDimension_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDimension = { + "ObjectDimension", + "ObjectDimension", + &asn_OP_SEQUENCE, + asn_DEF_ObjectDimension_tags_1, + sizeof(asn_DEF_ObjectDimension_tags_1) + /sizeof(asn_DEF_ObjectDimension_tags_1[0]), /* 1 */ + asn_DEF_ObjectDimension_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectDimension_tags_1) + /sizeof(asn_DEF_ObjectDimension_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ObjectDimension_1, + 2, /* Elements count */ + &asn_SPC_ObjectDimension_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionConfidence.c new file mode 100644 index 000000000..93be39140 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectDimensionConfidence.h" + +int +ObjectDimensionConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectDimensionConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..32) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectDimensionConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (1..32) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObjectDimensionConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDimensionConfidence = { + "ObjectDimensionConfidence", + "ObjectDimensionConfidence", + &asn_OP_NativeInteger, + asn_DEF_ObjectDimensionConfidence_tags_1, + sizeof(asn_DEF_ObjectDimensionConfidence_tags_1) + /sizeof(asn_DEF_ObjectDimensionConfidence_tags_1[0]), /* 1 */ + asn_DEF_ObjectDimensionConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectDimensionConfidence_tags_1) + /sizeof(asn_DEF_ObjectDimensionConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectDimensionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectDimensionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObjectDimensionConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionValue.c new file mode 100644 index 000000000..8a4ff5f01 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectDimensionValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectDimensionValue.h" + +int +ObjectDimensionValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectDimensionValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..256) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectDimensionValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObjectDimensionValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectDimensionValue = { + "ObjectDimensionValue", + "ObjectDimensionValue", + &asn_OP_NativeInteger, + asn_DEF_ObjectDimensionValue_tags_1, + sizeof(asn_DEF_ObjectDimensionValue_tags_1) + /sizeof(asn_DEF_ObjectDimensionValue_tags_1[0]), /* 1 */ + asn_DEF_ObjectDimensionValue_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectDimensionValue_tags_1) + /sizeof(asn_DEF_ObjectDimensionValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectDimensionValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectDimensionValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObjectDimensionValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectFace.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectFace.c new file mode 100644 index 000000000..400ff91fe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectFace.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectFace.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectFace_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ObjectFace_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 5 } /* (0..5) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ObjectFace_value2enum_1[] = { + { 0, 5, "front" }, + { 1, 13, "sideLeftFront" }, + { 2, 12, "sideLeftBack" }, + { 3, 14, "sideRightFront" }, + { 4, 13, "sideRightBack" }, + { 5, 4, "back" } +}; +static const unsigned int asn_MAP_ObjectFace_enum2value_1[] = { + 5, /* back(5) */ + 0, /* front(0) */ + 2, /* sideLeftBack(2) */ + 1, /* sideLeftFront(1) */ + 4, /* sideRightBack(4) */ + 3 /* sideRightFront(3) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_ObjectFace_specs_1 = { + asn_MAP_ObjectFace_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ObjectFace_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ObjectFace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectFace = { + "ObjectFace", + "ObjectFace", + &asn_OP_NativeEnumerated, + asn_DEF_ObjectFace_tags_1, + sizeof(asn_DEF_ObjectFace_tags_1) + /sizeof(asn_DEF_ObjectFace_tags_1[0]), /* 1 */ + asn_DEF_ObjectFace_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectFace_tags_1) + /sizeof(asn_DEF_ObjectFace_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectFace_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectFace_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ObjectFace_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ObjectPerceptionQuality.c b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectPerceptionQuality.c new file mode 100644 index 000000000..4d5ff5313 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ObjectPerceptionQuality.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ObjectPerceptionQuality.h" + +int +ObjectPerceptionQuality_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ObjectPerceptionQuality_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ObjectPerceptionQuality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ObjectPerceptionQuality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ObjectPerceptionQuality = { + "ObjectPerceptionQuality", + "ObjectPerceptionQuality", + &asn_OP_NativeInteger, + asn_DEF_ObjectPerceptionQuality_tags_1, + sizeof(asn_DEF_ObjectPerceptionQuality_tags_1) + /sizeof(asn_DEF_ObjectPerceptionQuality_tags_1[0]), /* 1 */ + asn_DEF_ObjectPerceptionQuality_tags_1, /* Same as above */ + sizeof(asn_DEF_ObjectPerceptionQuality_tags_1) + /sizeof(asn_DEF_ObjectPerceptionQuality_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ObjectPerceptionQuality_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ObjectPerceptionQuality_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ObjectPerceptionQuality_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OpeningDaysHours.c b/etsi_its_coding/etsi_its_cpm_coding/src/OpeningDaysHours.c new file mode 100644 index 000000000..79788fb7a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OpeningDaysHours.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OpeningDaysHours.h" + +/* + * This type is implemented using UTF8String, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_OpeningDaysHours_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OpeningDaysHours = { + "OpeningDaysHours", + "OpeningDaysHours", + &asn_OP_UTF8String, + asn_DEF_OpeningDaysHours_tags_1, + sizeof(asn_DEF_OpeningDaysHours_tags_1) + /sizeof(asn_DEF_OpeningDaysHours_tags_1[0]), /* 1 */ + asn_DEF_OpeningDaysHours_tags_1, /* Same as above */ + sizeof(asn_DEF_OpeningDaysHours_tags_1) + /sizeof(asn_DEF_OpeningDaysHours_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + UTF8String_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber1B.c b/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber1B.c new file mode 100644 index 000000000..d8c1d0769 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber1B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OrdinalNumber1B.h" + +int +OrdinalNumber1B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OrdinalNumber1B_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OrdinalNumber1B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OrdinalNumber1B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OrdinalNumber1B = { + "OrdinalNumber1B", + "OrdinalNumber1B", + &asn_OP_NativeInteger, + asn_DEF_OrdinalNumber1B_tags_1, + sizeof(asn_DEF_OrdinalNumber1B_tags_1) + /sizeof(asn_DEF_OrdinalNumber1B_tags_1[0]), /* 1 */ + asn_DEF_OrdinalNumber1B_tags_1, /* Same as above */ + sizeof(asn_DEF_OrdinalNumber1B_tags_1) + /sizeof(asn_DEF_OrdinalNumber1B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OrdinalNumber1B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OrdinalNumber1B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OrdinalNumber1B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber3b.c b/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber3b.c new file mode 100644 index 000000000..fb507aa40 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OrdinalNumber3b.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OrdinalNumber3b.h" + +int +OrdinalNumber3b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OrdinalNumber3b_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..8) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OrdinalNumber3b_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (1..8) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OrdinalNumber3b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OrdinalNumber3b = { + "OrdinalNumber3b", + "OrdinalNumber3b", + &asn_OP_NativeInteger, + asn_DEF_OrdinalNumber3b_tags_1, + sizeof(asn_DEF_OrdinalNumber3b_tags_1) + /sizeof(asn_DEF_OrdinalNumber3b_tags_1[0]), /* 1 */ + asn_DEF_OrdinalNumber3b_tags_1, /* Same as above */ + sizeof(asn_DEF_OrdinalNumber3b_tags_1) + /sizeof(asn_DEF_OrdinalNumber3b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OrdinalNumber3b_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OrdinalNumber3b_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OrdinalNumber3b_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingRsuContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingRsuContainer.c new file mode 100644 index 000000000..10e73a67f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingRsuContainer.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OriginatingRsuContainer.h" + +asn_TYPE_member_t asn_MBR_OriginatingRsuContainer_1[] = { + { ATF_POINTER, 1, offsetof(struct OriginatingRsuContainer, mapReference), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MapReference, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mapReference" + }, +}; +static const int asn_MAP_OriginatingRsuContainer_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_OriginatingRsuContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_OriginatingRsuContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* mapReference */ +}; +asn_SEQUENCE_specifics_t asn_SPC_OriginatingRsuContainer_specs_1 = { + sizeof(struct OriginatingRsuContainer), + offsetof(struct OriginatingRsuContainer, _asn_ctx), + asn_MAP_OriginatingRsuContainer_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_OriginatingRsuContainer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_OriginatingRsuContainer = { + "OriginatingRsuContainer", + "OriginatingRsuContainer", + &asn_OP_SEQUENCE, + asn_DEF_OriginatingRsuContainer_tags_1, + sizeof(asn_DEF_OriginatingRsuContainer_tags_1) + /sizeof(asn_DEF_OriginatingRsuContainer_tags_1[0]), /* 1 */ + asn_DEF_OriginatingRsuContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_OriginatingRsuContainer_tags_1) + /sizeof(asn_DEF_OriginatingRsuContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_OriginatingRsuContainer_1, + 1, /* Elements count */ + &asn_SPC_OriginatingRsuContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingVehicleContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingVehicleContainer.c new file mode 100644 index 000000000..eecf6b7ba --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OriginatingVehicleContainer.c @@ -0,0 +1,122 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OriginatingVehicleContainer.h" + +asn_TYPE_member_t asn_MBR_OriginatingVehicleContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct OriginatingVehicleContainer, orientationAngle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84Angle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "orientationAngle" + }, + { ATF_POINTER, 3, offsetof(struct OriginatingVehicleContainer, pitchAngle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pitchAngle" + }, + { ATF_POINTER, 2, offsetof(struct OriginatingVehicleContainer, rollAngle), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rollAngle" + }, + { ATF_POINTER, 1, offsetof(struct OriginatingVehicleContainer, trailerDataSet), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerDataSet, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerDataSet" + }, +}; +static const int asn_MAP_OriginatingVehicleContainer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_OriginatingVehicleContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_OriginatingVehicleContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* orientationAngle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pitchAngle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rollAngle */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* trailerDataSet */ +}; +asn_SEQUENCE_specifics_t asn_SPC_OriginatingVehicleContainer_specs_1 = { + sizeof(struct OriginatingVehicleContainer), + offsetof(struct OriginatingVehicleContainer, _asn_ctx), + asn_MAP_OriginatingVehicleContainer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_OriginatingVehicleContainer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_OriginatingVehicleContainer = { + "OriginatingVehicleContainer", + "OriginatingVehicleContainer", + &asn_OP_SEQUENCE, + asn_DEF_OriginatingVehicleContainer_tags_1, + sizeof(asn_DEF_OriginatingVehicleContainer_tags_1) + /sizeof(asn_DEF_OriginatingVehicleContainer_tags_1[0]), /* 1 */ + asn_DEF_OriginatingVehicleContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_OriginatingVehicleContainer_tags_1) + /sizeof(asn_DEF_OriginatingVehicleContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_OriginatingVehicleContainer_1, + 4, /* Elements count */ + &asn_SPC_OriginatingVehicleContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/OtherSubClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/OtherSubClass.c new file mode 100644 index 000000000..be7766547 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/OtherSubClass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/OtherSubClass.h" + +int +OtherSubClass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_OtherSubClass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_OtherSubClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_OtherSubClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OtherSubClass = { + "OtherSubClass", + "OtherSubClass", + &asn_OP_NativeInteger, + asn_DEF_OtherSubClass_tags_1, + sizeof(asn_DEF_OtherSubClass_tags_1) + /sizeof(asn_DEF_OtherSubClass_tags_1[0]), /* 1 */ + asn_DEF_OtherSubClass_tags_1, /* Same as above */ + sizeof(asn_DEF_OtherSubClass_tags_1) + /sizeof(asn_DEF_OtherSubClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_OtherSubClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_OtherSubClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OtherSubClass_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Path.c b/etsi_its_coding/etsi_its_cpm_coding/src/Path.c new file mode 100644 index 000000000..859bd00ed --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Path.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Path.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Path_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..40)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Path_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 40 } /* (SIZE(0..40)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Path_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PathPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Path_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_Path_specs_1 = { + sizeof(struct Path), + offsetof(struct Path, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Path = { + "Path", + "Path", + &asn_OP_SEQUENCE_OF, + asn_DEF_Path_tags_1, + sizeof(asn_DEF_Path_tags_1) + /sizeof(asn_DEF_Path_tags_1[0]), /* 1 */ + asn_DEF_Path_tags_1, /* Same as above */ + sizeof(asn_DEF_Path_tags_1) + /sizeof(asn_DEF_Path_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Path_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Path_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_Path_1, + 1, /* Single element */ + &asn_SPC_Path_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PathDeltaTime.c b/etsi_its_coding/etsi_its_cpm_coding/src/PathDeltaTime.c new file mode 100644 index 000000000..2bd08e488 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PathDeltaTime.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PathDeltaTime.h" + +int +PathDeltaTime_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PathDeltaTime_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PathDeltaTime_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 16, 16, 1, 65535 } /* (1..65535,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PathDeltaTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PathDeltaTime = { + "PathDeltaTime", + "PathDeltaTime", + &asn_OP_NativeInteger, + asn_DEF_PathDeltaTime_tags_1, + sizeof(asn_DEF_PathDeltaTime_tags_1) + /sizeof(asn_DEF_PathDeltaTime_tags_1[0]), /* 1 */ + asn_DEF_PathDeltaTime_tags_1, /* Same as above */ + sizeof(asn_DEF_PathDeltaTime_tags_1) + /sizeof(asn_DEF_PathDeltaTime_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PathDeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PathDeltaTime_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PathDeltaTime_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PathHistory.c b/etsi_its_coding/etsi_its_cpm_coding/src/PathHistory.c new file mode 100644 index 000000000..e42ccd976 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PathHistory.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PathHistory.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PathHistory_constr_1 CC_NOTUSED = { + { 0, 0 }, + 40 /* (SIZE(40..40)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PathHistory_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_PathHistory_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PathPoint, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PathHistory_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_PathHistory_specs_1 = { + sizeof(struct PathHistory), + offsetof(struct PathHistory, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PathHistory = { + "PathHistory", + "PathHistory", + &asn_OP_SEQUENCE_OF, + asn_DEF_PathHistory_tags_1, + sizeof(asn_DEF_PathHistory_tags_1) + /sizeof(asn_DEF_PathHistory_tags_1[0]), /* 1 */ + asn_DEF_PathHistory_tags_1, /* Same as above */ + sizeof(asn_DEF_PathHistory_tags_1) + /sizeof(asn_DEF_PathHistory_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PathHistory_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PathHistory_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PathHistory_1, + 1, /* Single element */ + &asn_SPC_PathHistory_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PathPoint.c b/etsi_its_coding/etsi_its_cpm_coding/src/PathPoint.c new file mode 100644 index 000000000..901746ea4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PathPoint.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PathPoint.h" + +asn_TYPE_member_t asn_MBR_PathPoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PathPoint, pathPosition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaReferencePosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathPosition" + }, + { ATF_POINTER, 1, offsetof(struct PathPoint, pathDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PathDeltaTime, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathDeltaTime" + }, +}; +static const int asn_MAP_PathPoint_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_PathPoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathPoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pathPosition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pathDeltaTime */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathPoint_specs_1 = { + sizeof(struct PathPoint), + offsetof(struct PathPoint, _asn_ctx), + asn_MAP_PathPoint_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_PathPoint_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathPoint = { + "PathPoint", + "PathPoint", + &asn_OP_SEQUENCE, + asn_DEF_PathPoint_tags_1, + sizeof(asn_DEF_PathPoint_tags_1) + /sizeof(asn_DEF_PathPoint_tags_1[0]), /* 1 */ + asn_DEF_PathPoint_tags_1, /* Same as above */ + sizeof(asn_DEF_PathPoint_tags_1) + /sizeof(asn_DEF_PathPoint_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PathPoint_1, + 2, /* Elements count */ + &asn_SPC_PathPoint_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PathPointPredicted.c b/etsi_its_coding/etsi_its_cpm_coding/src/PathPointPredicted.c new file mode 100644 index 000000000..e9ba8fcae --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PathPointPredicted.c @@ -0,0 +1,204 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PathPointPredicted.h" + +static int asn_DFL_5_cmp_12800(const void *sptr) { + const DeltaAltitude_t *st = sptr; + + if(!st) { + return -1; /* No value is not a default value */ + } + + /* Test default value 12800 */ + return (*st != 12800); +} +static int asn_DFL_5_set_12800(void **sptr) { + DeltaAltitude_t *st = *sptr; + + if(!st) { + st = (*sptr = CALLOC(1, sizeof(*st))); + if(!st) return -1; + } + + /* Install default value 12800 */ + *st = 12800; + return 0; +} +static int asn_DFL_6_cmp_15(const void *sptr) { + const AltitudeConfidence_t *st = sptr; + + if(!st) { + return -1; /* No value is not a default value */ + } + + /* Test default value 15 */ + return (*st != 15); +} +static int asn_DFL_6_set_15(void **sptr) { + AltitudeConfidence_t *st = *sptr; + + if(!st) { + st = (*sptr = CALLOC(1, sizeof(*st))); + if(!st) return -1; + } + + /* Install default value 15 */ + *st = 15; + return 0; +} +asn_TYPE_member_t asn_MBR_PathPointPredicted_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PathPointPredicted, deltaLatitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaLatitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "deltaLatitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathPointPredicted, deltaLongitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaLongitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "deltaLongitude" + }, + { ATF_POINTER, 3, offsetof(struct PathPointPredicted, horizontalPositionConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PosConfidenceEllipse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "horizontalPositionConfidence" + }, + { ATF_POINTER, 2, offsetof(struct PathPointPredicted, deltaAltitude), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaAltitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + &asn_DFL_5_cmp_12800, /* Compare DEFAULT 12800 */ + &asn_DFL_5_set_12800, /* Set DEFAULT 12800 */ + "deltaAltitude" + }, + { ATF_POINTER, 1, offsetof(struct PathPointPredicted, altitudeConfidence), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AltitudeConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + &asn_DFL_6_cmp_15, /* Compare DEFAULT 15 */ + &asn_DFL_6_set_15, /* Set DEFAULT 15 */ + "altitudeConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct PathPointPredicted, pathDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeTenthOfSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pathDeltaTime" + }, +}; +static const int asn_MAP_PathPointPredicted_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_PathPointPredicted_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PathPointPredicted_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* deltaLatitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* deltaLongitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* horizontalPositionConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* deltaAltitude */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* altitudeConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* pathDeltaTime */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PathPointPredicted_specs_1 = { + sizeof(struct PathPointPredicted), + offsetof(struct PathPointPredicted, _asn_ctx), + asn_MAP_PathPointPredicted_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_PathPointPredicted_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PathPointPredicted = { + "PathPointPredicted", + "PathPointPredicted", + &asn_OP_SEQUENCE, + asn_DEF_PathPointPredicted_tags_1, + sizeof(asn_DEF_PathPointPredicted_tags_1) + /sizeof(asn_DEF_PathPointPredicted_tags_1[0]), /* 1 */ + asn_DEF_PathPointPredicted_tags_1, /* Same as above */ + sizeof(asn_DEF_PathPointPredicted_tags_1) + /sizeof(asn_DEF_PathPointPredicted_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PathPointPredicted_1, + 6, /* Elements count */ + &asn_SPC_PathPointPredicted_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PathPredicted.c b/etsi_its_coding/etsi_its_cpm_coding/src/PathPredicted.c new file mode 100644 index 000000000..289fefaf9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PathPredicted.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PathPredicted.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PathPredicted_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PathPredicted_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (SIZE(0..15,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_PathPredicted_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PathPointPredicted, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PathPredicted_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_PathPredicted_specs_1 = { + sizeof(struct PathPredicted), + offsetof(struct PathPredicted, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PathPredicted = { + "PathPredicted", + "PathPredicted", + &asn_OP_SEQUENCE_OF, + asn_DEF_PathPredicted_tags_1, + sizeof(asn_DEF_PathPredicted_tags_1) + /sizeof(asn_DEF_PathPredicted_tags_1[0]), /* 1 */ + asn_DEF_PathPredicted_tags_1, /* Same as above */ + sizeof(asn_DEF_PathPredicted_tags_1) + /sizeof(asn_DEF_PathPredicted_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PathPredicted_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PathPredicted_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PathPredicted_1, + 1, /* Single element */ + &asn_SPC_PathPredicted_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObject.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObject.c new file mode 100644 index 000000000..c93bca193 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObject.c @@ -0,0 +1,375 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceivedObject.h" + +static int +memb_objectAge_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 2047)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_objectAge_constr_13 CC_NOTUSED = { + { 2, 1 } /* (0..2047) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_objectAge_constr_13 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 2047 } /* (0..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PerceivedObject_1[] = { + { ATF_POINTER, 1, offsetof(struct PerceivedObject, objectId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectId" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceivedObject, measurementDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeMilliSecondSigned, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measurementDeltaTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceivedObject, position), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3dWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "position" + }, + { ATF_POINTER, 13, offsetof(struct PerceivedObject, velocity), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Velocity3dWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "velocity" + }, + { ATF_POINTER, 12, offsetof(struct PerceivedObject, acceleration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Acceleration3dWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "acceleration" + }, + { ATF_POINTER, 11, offsetof(struct PerceivedObject, angles), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EulerAnglesWithConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "angles" + }, + { ATF_POINTER, 10, offsetof(struct PerceivedObject, zAngularVelocity), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngularVelocityComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zAngularVelocity" + }, + { ATF_POINTER, 9, offsetof(struct PerceivedObject, lowerTriangularCorrelationMatrices), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LowerTriangularPositiveSemidefiniteMatrices, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lowerTriangularCorrelationMatrices" + }, + { ATF_POINTER, 8, offsetof(struct PerceivedObject, objectDimensionZ), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDimension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectDimensionZ" + }, + { ATF_POINTER, 7, offsetof(struct PerceivedObject, objectDimensionY), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDimension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectDimensionY" + }, + { ATF_POINTER, 6, offsetof(struct PerceivedObject, objectDimensionX), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectDimension, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectDimensionX" + }, + { ATF_POINTER, 5, offsetof(struct PerceivedObject, objectAge), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeMilliSecondSigned, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_objectAge_constr_13, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_objectAge_constr_13, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_objectAge_constraint_1 + }, + 0, 0, /* No default value */ + "objectAge" + }, + { ATF_POINTER, 4, offsetof(struct PerceivedObject, objectPerceptionQuality), + (ASN_TAG_CLASS_CONTEXT | (12 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectPerceptionQuality, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "objectPerceptionQuality" + }, + { ATF_POINTER, 3, offsetof(struct PerceivedObject, sensorIdList), + (ASN_TAG_CLASS_CONTEXT | (13 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SequenceOfIdentifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sensorIdList" + }, + { ATF_POINTER, 2, offsetof(struct PerceivedObject, classification), + (ASN_TAG_CLASS_CONTEXT | (14 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ObjectClassDescription, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "classification" + }, + { ATF_POINTER, 1, offsetof(struct PerceivedObject, mapPosition), + (ASN_TAG_CLASS_CONTEXT | (15 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MapPosition, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "mapPosition" + }, +}; +static const int asn_MAP_PerceivedObject_oms_1[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; +static const ber_tlv_tag_t asn_DEF_PerceivedObject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PerceivedObject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* objectId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measurementDeltaTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* position */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* velocity */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* acceleration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* angles */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* zAngularVelocity */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* lowerTriangularCorrelationMatrices */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* objectDimensionZ */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* objectDimensionY */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* objectDimensionX */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* objectAge */ + { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* objectPerceptionQuality */ + { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* sensorIdList */ + { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* classification */ + { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* mapPosition */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PerceivedObject_specs_1 = { + sizeof(struct PerceivedObject), + offsetof(struct PerceivedObject, _asn_ctx), + asn_MAP_PerceivedObject_tag2el_1, + 16, /* Count of tags in the map */ + asn_MAP_PerceivedObject_oms_1, /* Optional members */ + 14, 0, /* Root/Additions */ + 16, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceivedObject = { + "PerceivedObject", + "PerceivedObject", + &asn_OP_SEQUENCE, + asn_DEF_PerceivedObject_tags_1, + sizeof(asn_DEF_PerceivedObject_tags_1) + /sizeof(asn_DEF_PerceivedObject_tags_1[0]), /* 1 */ + asn_DEF_PerceivedObject_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceivedObject_tags_1) + /sizeof(asn_DEF_PerceivedObject_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PerceivedObject_1, + 16, /* Elements count */ + &asn_SPC_PerceivedObject_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectContainer.c new file mode 100644 index 000000000..e125c1e4a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectContainer.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceivedObjectContainer" + * found in "/input/CPM-PerceivedObjectContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceivedObjectContainer.h" + +asn_TYPE_member_t asn_MBR_PerceivedObjectContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PerceivedObjectContainer, numberOfPerceivedObjects), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CardinalNumber1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "numberOfPerceivedObjects" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceivedObjectContainer, perceivedObjects), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PerceivedObjects, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceivedObjects" + }, +}; +static const ber_tlv_tag_t asn_DEF_PerceivedObjectContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PerceivedObjectContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* numberOfPerceivedObjects */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* perceivedObjects */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PerceivedObjectContainer_specs_1 = { + sizeof(struct PerceivedObjectContainer), + offsetof(struct PerceivedObjectContainer, _asn_ctx), + asn_MAP_PerceivedObjectContainer_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceivedObjectContainer = { + "PerceivedObjectContainer", + "PerceivedObjectContainer", + &asn_OP_SEQUENCE, + asn_DEF_PerceivedObjectContainer_tags_1, + sizeof(asn_DEF_PerceivedObjectContainer_tags_1) + /sizeof(asn_DEF_PerceivedObjectContainer_tags_1[0]), /* 1 */ + asn_DEF_PerceivedObjectContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceivedObjectContainer_tags_1) + /sizeof(asn_DEF_PerceivedObjectContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PerceivedObjectContainer_1, + 2, /* Elements count */ + &asn_SPC_PerceivedObjectContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectIds.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectIds.c new file mode 100644 index 000000000..877e9f33b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjectIds.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceivedObjectIds.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PerceivedObjectIds_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PerceivedObjectIds_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (SIZE(0..255,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PerceivedObjectIds_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PerceivedObjectIds_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PerceivedObjectIds_specs_1 = { + sizeof(struct PerceivedObjectIds), + offsetof(struct PerceivedObjectIds, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceivedObjectIds = { + "PerceivedObjectIds", + "PerceivedObjectIds", + &asn_OP_SEQUENCE_OF, + asn_DEF_PerceivedObjectIds_tags_1, + sizeof(asn_DEF_PerceivedObjectIds_tags_1) + /sizeof(asn_DEF_PerceivedObjectIds_tags_1[0]), /* 1 */ + asn_DEF_PerceivedObjectIds_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceivedObjectIds_tags_1) + /sizeof(asn_DEF_PerceivedObjectIds_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PerceivedObjectIds_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PerceivedObjectIds_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PerceivedObjectIds_1, + 1, /* Single element */ + &asn_SPC_PerceivedObjectIds_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjects.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjects.c new file mode 100644 index 000000000..fd0e6155a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceivedObjects.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceivedObjectContainer" + * found in "/input/CPM-PerceivedObjectContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceivedObjects.h" + +static int +memb_PerceivedObject_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_Member_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_Member_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PerceivedObjects_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PerceivedObjects_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 0, 255 } /* (SIZE(0..255,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PerceivedObjects_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PerceivedObject, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_Member_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_Member_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_PerceivedObject_constraint_1 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PerceivedObjects_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PerceivedObjects_specs_1 = { + sizeof(struct PerceivedObjects), + offsetof(struct PerceivedObjects, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceivedObjects = { + "PerceivedObjects", + "PerceivedObjects", + &asn_OP_SEQUENCE_OF, + asn_DEF_PerceivedObjects_tags_1, + sizeof(asn_DEF_PerceivedObjects_tags_1) + /sizeof(asn_DEF_PerceivedObjects_tags_1[0]), /* 1 */ + asn_DEF_PerceivedObjects_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceivedObjects_tags_1) + /sizeof(asn_DEF_PerceivedObjects_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PerceivedObjects_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PerceivedObjects_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PerceivedObjects_1, + 1, /* Single element */ + &asn_SPC_PerceivedObjects_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegion.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegion.c new file mode 100644 index 000000000..79cd8595f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegion.c @@ -0,0 +1,176 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceptionRegion.h" + +asn_TYPE_member_t asn_MBR_PerceptionRegion_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PerceptionRegion, measurementDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeMilliSecondSigned, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "measurementDeltaTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceptionRegion, perceptionRegionConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConfidenceLevel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceptionRegionConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceptionRegion, perceptionRegionShape), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Shape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceptionRegionShape" + }, + { ATF_NOFLAGS, 0, offsetof(struct PerceptionRegion, shadowingApplies), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shadowingApplies" + }, + { ATF_POINTER, 3, offsetof(struct PerceptionRegion, sensorIdList), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SequenceOfIdentifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sensorIdList" + }, + { ATF_POINTER, 2, offsetof(struct PerceptionRegion, numberOfPerceivedObjects), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CardinalNumber1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "numberOfPerceivedObjects" + }, + { ATF_POINTER, 1, offsetof(struct PerceptionRegion, perceivedObjectIds), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PerceivedObjectIds, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceivedObjectIds" + }, +}; +static const int asn_MAP_PerceptionRegion_oms_1[] = { 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_PerceptionRegion_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PerceptionRegion_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementDeltaTime */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* perceptionRegionConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* perceptionRegionShape */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* shadowingApplies */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sensorIdList */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* numberOfPerceivedObjects */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* perceivedObjectIds */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PerceptionRegion_specs_1 = { + sizeof(struct PerceptionRegion), + offsetof(struct PerceptionRegion, _asn_ctx), + asn_MAP_PerceptionRegion_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_PerceptionRegion_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceptionRegion = { + "PerceptionRegion", + "PerceptionRegion", + &asn_OP_SEQUENCE, + asn_DEF_PerceptionRegion_tags_1, + sizeof(asn_DEF_PerceptionRegion_tags_1) + /sizeof(asn_DEF_PerceptionRegion_tags_1[0]), /* 1 */ + asn_DEF_PerceptionRegion_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceptionRegion_tags_1) + /sizeof(asn_DEF_PerceptionRegion_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PerceptionRegion_1, + 7, /* Elements count */ + &asn_SPC_PerceptionRegion_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegionContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegionContainer.c new file mode 100644 index 000000000..92bf77f8e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerceptionRegionContainer.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PerceptionRegionContainer" + * found in "/input/CPM-PerceptionRegionContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerceptionRegionContainer.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PerceptionRegionContainer_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PerceptionRegionContainer_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (SIZE(1..256,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PerceptionRegionContainer_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PerceptionRegion, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PerceptionRegionContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PerceptionRegionContainer_specs_1 = { + sizeof(struct PerceptionRegionContainer), + offsetof(struct PerceptionRegionContainer, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PerceptionRegionContainer = { + "PerceptionRegionContainer", + "PerceptionRegionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_PerceptionRegionContainer_tags_1, + sizeof(asn_DEF_PerceptionRegionContainer_tags_1) + /sizeof(asn_DEF_PerceptionRegionContainer_tags_1[0]), /* 1 */ + asn_DEF_PerceptionRegionContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_PerceptionRegionContainer_tags_1) + /sizeof(asn_DEF_PerceptionRegionContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PerceptionRegionContainer_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PerceptionRegionContainer_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PerceptionRegionContainer_1, + 1, /* Single element */ + &asn_SPC_PerceptionRegionContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PerformanceClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/PerformanceClass.c new file mode 100644 index 000000000..7314cceee --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PerformanceClass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PerformanceClass.h" + +int +PerformanceClass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PerformanceClass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..7) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PerformanceClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PerformanceClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PerformanceClass = { + "PerformanceClass", + "PerformanceClass", + &asn_OP_NativeInteger, + asn_DEF_PerformanceClass_tags_1, + sizeof(asn_DEF_PerformanceClass_tags_1) + /sizeof(asn_DEF_PerformanceClass_tags_1[0]), /* 1 */ + asn_DEF_PerformanceClass_tags_1, /* Same as above */ + sizeof(asn_DEF_PerformanceClass_tags_1) + /sizeof(asn_DEF_PerformanceClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PerformanceClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PerformanceClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PerformanceClass_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PhoneNumber.c b/etsi_its_coding/etsi_its_cpm_coding/src/PhoneNumber.c new file mode 100644 index 000000000..e2b770f0f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PhoneNumber.c @@ -0,0 +1,113 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PhoneNumber.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* . */ + 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 0, 0, 0, 0, 0, /* 0123456789 */ +}; +static const int permitted_alphabet_code2value_1[11] = { +32,48,49,50,51,52,53,54,55,56,57,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is NumericString */ + const NumericString_t *st = (const NumericString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +PhoneNumber_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const NumericString_t *st = (const NumericString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 16) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_PhoneNumber_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_PhoneNumber_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using NumericString, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PhoneNumber_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PhoneNumber_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 32, 57 } /* (32..57) */, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + asn_PER_MAP_PhoneNumber_1_v2c, /* Value to PER code map */ + asn_PER_MAP_PhoneNumber_1_c2v /* PER code to value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PhoneNumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (18 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PhoneNumber = { + "PhoneNumber", + "PhoneNumber", + &asn_OP_NumericString, + asn_DEF_PhoneNumber_tags_1, + sizeof(asn_DEF_PhoneNumber_tags_1) + /sizeof(asn_DEF_PhoneNumber_tags_1[0]), /* 1 */ + asn_DEF_PhoneNumber_tags_1, /* Same as above */ + sizeof(asn_DEF_PhoneNumber_tags_1) + /sizeof(asn_DEF_PhoneNumber_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PhoneNumber_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PhoneNumber_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PhoneNumber_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PolygonalShape.c b/etsi_its_coding/etsi_its_cpm_coding/src/PolygonalShape.c new file mode 100644 index 000000000..c2cadecc9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PolygonalShape.c @@ -0,0 +1,142 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PolygonalShape.h" + +static int +memb_polygon_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 3 && size <= 16)) { + /* Perform validation of the inner elements */ + return SEQUENCE_OF_constraint(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_polygon_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_polygon_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 3, 16 } /* (SIZE(3..16,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_PolygonalShape_1[] = { + { ATF_POINTER, 1, offsetof(struct PolygonalShape, shapeReferencePoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shapeReferencePoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct PolygonalShape, polygon), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SequenceOfCartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_polygon_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_polygon_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_polygon_constraint_1 + }, + 0, 0, /* No default value */ + "polygon" + }, + { ATF_POINTER, 1, offsetof(struct PolygonalShape, height), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, +}; +static const int asn_MAP_PolygonalShape_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_PolygonalShape_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PolygonalShape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shapeReferencePoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* polygon */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* height */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PolygonalShape_specs_1 = { + sizeof(struct PolygonalShape), + offsetof(struct PolygonalShape, _asn_ctx), + asn_MAP_PolygonalShape_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_PolygonalShape_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PolygonalShape = { + "PolygonalShape", + "PolygonalShape", + &asn_OP_SEQUENCE, + asn_DEF_PolygonalShape_tags_1, + sizeof(asn_DEF_PolygonalShape_tags_1) + /sizeof(asn_DEF_PolygonalShape_tags_1[0]), /* 1 */ + asn_DEF_PolygonalShape_tags_1, /* Same as above */ + sizeof(asn_DEF_PolygonalShape_tags_1) + /sizeof(asn_DEF_PolygonalShape_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PolygonalShape_1, + 3, /* Elements count */ + &asn_SPC_PolygonalShape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PosCentMass.c b/etsi_its_coding/etsi_its_cpm_coding/src/PosCentMass.c new file mode 100644 index 000000000..b2e1ecc49 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PosCentMass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PosCentMass.h" + +int +PosCentMass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PosCentMass_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PosCentMass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (1..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PosCentMass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PosCentMass = { + "PosCentMass", + "PosCentMass", + &asn_OP_NativeInteger, + asn_DEF_PosCentMass_tags_1, + sizeof(asn_DEF_PosCentMass_tags_1) + /sizeof(asn_DEF_PosCentMass_tags_1[0]), /* 1 */ + asn_DEF_PosCentMass_tags_1, /* Same as above */ + sizeof(asn_DEF_PosCentMass_tags_1) + /sizeof(asn_DEF_PosCentMass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PosCentMass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PosCentMass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PosCentMass_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PosConfidenceEllipse.c b/etsi_its_coding/etsi_its_cpm_coding/src/PosConfidenceEllipse.c new file mode 100644 index 000000000..00b00b32a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PosConfidenceEllipse.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PosConfidenceEllipse.h" + +asn_TYPE_member_t asn_MBR_PosConfidenceEllipse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PosConfidenceEllipse, semiMajorConfidence), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiAxisLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajorConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct PosConfidenceEllipse, semiMinorConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiAxisLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMinorConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct PosConfidenceEllipse, semiMajorOrientation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HeadingValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajorOrientation" + }, +}; +static const ber_tlv_tag_t asn_DEF_PosConfidenceEllipse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PosConfidenceEllipse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* semiMajorConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiMinorConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* semiMajorOrientation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PosConfidenceEllipse_specs_1 = { + sizeof(struct PosConfidenceEllipse), + offsetof(struct PosConfidenceEllipse, _asn_ctx), + asn_MAP_PosConfidenceEllipse_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PosConfidenceEllipse = { + "PosConfidenceEllipse", + "PosConfidenceEllipse", + &asn_OP_SEQUENCE, + asn_DEF_PosConfidenceEllipse_tags_1, + sizeof(asn_DEF_PosConfidenceEllipse_tags_1) + /sizeof(asn_DEF_PosConfidenceEllipse_tags_1[0]), /* 1 */ + asn_DEF_PosConfidenceEllipse_tags_1, /* Same as above */ + sizeof(asn_DEF_PosConfidenceEllipse_tags_1) + /sizeof(asn_DEF_PosConfidenceEllipse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PosConfidenceEllipse_1, + 3, /* Elements count */ + &asn_SPC_PosConfidenceEllipse_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PosFrontAx.c b/etsi_its_coding/etsi_its_cpm_coding/src/PosFrontAx.c new file mode 100644 index 000000000..ba58e444d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PosFrontAx.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PosFrontAx.h" + +int +PosFrontAx_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PosFrontAx_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..20) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PosFrontAx_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 1, 20 } /* (1..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PosFrontAx_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PosFrontAx = { + "PosFrontAx", + "PosFrontAx", + &asn_OP_NativeInteger, + asn_DEF_PosFrontAx_tags_1, + sizeof(asn_DEF_PosFrontAx_tags_1) + /sizeof(asn_DEF_PosFrontAx_tags_1[0]), /* 1 */ + asn_DEF_PosFrontAx_tags_1, /* Same as above */ + sizeof(asn_DEF_PosFrontAx_tags_1) + /sizeof(asn_DEF_PosFrontAx_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PosFrontAx_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PosFrontAx_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PosFrontAx_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PosLonCarr.c b/etsi_its_coding/etsi_its_cpm_coding/src/PosLonCarr.c new file mode 100644 index 000000000..b22981557 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PosLonCarr.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PosLonCarr.h" + +int +PosLonCarr_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PosLonCarr_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PosLonCarr_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PosLonCarr_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PosLonCarr = { + "PosLonCarr", + "PosLonCarr", + &asn_OP_NativeInteger, + asn_DEF_PosLonCarr_tags_1, + sizeof(asn_DEF_PosLonCarr_tags_1) + /sizeof(asn_DEF_PosLonCarr_tags_1[0]), /* 1 */ + asn_DEF_PosLonCarr_tags_1, /* Same as above */ + sizeof(asn_DEF_PosLonCarr_tags_1) + /sizeof(asn_DEF_PosLonCarr_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PosLonCarr_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PosLonCarr_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PosLonCarr_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PosPillar.c b/etsi_its_coding/etsi_its_cpm_coding/src/PosPillar.c new file mode 100644 index 000000000..934d34be5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PosPillar.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PosPillar.h" + +int +PosPillar_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 30)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PosPillar_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..30) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PosPillar_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 1, 30 } /* (1..30) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PosPillar_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PosPillar = { + "PosPillar", + "PosPillar", + &asn_OP_NativeInteger, + asn_DEF_PosPillar_tags_1, + sizeof(asn_DEF_PosPillar_tags_1) + /sizeof(asn_DEF_PosPillar_tags_1[0]), /* 1 */ + asn_DEF_PosPillar_tags_1, /* Same as above */ + sizeof(asn_DEF_PosPillar_tags_1) + /sizeof(asn_DEF_PosPillar_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PosPillar_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PosPillar_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PosPillar_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PositionConfidenceEllipse.c b/etsi_its_coding/etsi_its_cpm_coding/src/PositionConfidenceEllipse.c new file mode 100644 index 000000000..bdf29f0a2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PositionConfidenceEllipse.c @@ -0,0 +1,102 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PositionConfidenceEllipse.h" + +asn_TYPE_member_t asn_MBR_PositionConfidenceEllipse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PositionConfidenceEllipse, semiMajorAxisLength), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiAxisLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajorAxisLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionConfidenceEllipse, semiMinorAxisLength), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SemiAxisLength, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMinorAxisLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct PositionConfidenceEllipse, semiMajorAxisOrientation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiMajorAxisOrientation" + }, +}; +static const ber_tlv_tag_t asn_DEF_PositionConfidenceEllipse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PositionConfidenceEllipse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* semiMajorAxisLength */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiMinorAxisLength */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* semiMajorAxisOrientation */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PositionConfidenceEllipse_specs_1 = { + sizeof(struct PositionConfidenceEllipse), + offsetof(struct PositionConfidenceEllipse, _asn_ctx), + asn_MAP_PositionConfidenceEllipse_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PositionConfidenceEllipse = { + "PositionConfidenceEllipse", + "PositionConfidenceEllipse", + &asn_OP_SEQUENCE, + asn_DEF_PositionConfidenceEllipse_tags_1, + sizeof(asn_DEF_PositionConfidenceEllipse_tags_1) + /sizeof(asn_DEF_PositionConfidenceEllipse_tags_1[0]), /* 1 */ + asn_DEF_PositionConfidenceEllipse_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionConfidenceEllipse_tags_1) + /sizeof(asn_DEF_PositionConfidenceEllipse_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PositionConfidenceEllipse_1, + 3, /* Elements count */ + &asn_SPC_PositionConfidenceEllipse_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfOccupants.c b/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfOccupants.c new file mode 100644 index 000000000..8e136bcaa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfOccupants.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PositionOfOccupants.h" + +int +PositionOfOccupants_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PositionOfOccupants_constr_1 CC_NOTUSED = { + { 0, 0 }, + 20 /* (SIZE(20..20)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PositionOfOccupants_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PositionOfOccupants_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PositionOfOccupants = { + "PositionOfOccupants", + "PositionOfOccupants", + &asn_OP_BIT_STRING, + asn_DEF_PositionOfOccupants_tags_1, + sizeof(asn_DEF_PositionOfOccupants_tags_1) + /sizeof(asn_DEF_PositionOfOccupants_tags_1[0]), /* 1 */ + asn_DEF_PositionOfOccupants_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionOfOccupants_tags_1) + /sizeof(asn_DEF_PositionOfOccupants_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PositionOfOccupants_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PositionOfOccupants_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PositionOfOccupants_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfPillars.c b/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfPillars.c new file mode 100644 index 000000000..95c6bd09b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PositionOfPillars.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PositionOfPillars.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PositionOfPillars_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PositionOfPillars_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 1, 3 } /* (SIZE(1..3,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_PositionOfPillars_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_PosPillar, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PositionOfPillars_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_PositionOfPillars_specs_1 = { + sizeof(struct PositionOfPillars), + offsetof(struct PositionOfPillars, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PositionOfPillars = { + "PositionOfPillars", + "PositionOfPillars", + &asn_OP_SEQUENCE_OF, + asn_DEF_PositionOfPillars_tags_1, + sizeof(asn_DEF_PositionOfPillars_tags_1) + /sizeof(asn_DEF_PositionOfPillars_tags_1[0]), /* 1 */ + asn_DEF_PositionOfPillars_tags_1, /* Same as above */ + sizeof(asn_DEF_PositionOfPillars_tags_1) + /sizeof(asn_DEF_PositionOfPillars_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PositionOfPillars_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PositionOfPillars_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_PositionOfPillars_1, + 1, /* Single element */ + &asn_SPC_PositionOfPillars_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PositioningSolutionType.c b/etsi_its_coding/etsi_its_cpm_coding/src/PositioningSolutionType.c new file mode 100644 index 000000000..c45113b1d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PositioningSolutionType.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PositioningSolutionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PositioningSolutionType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PositioningSolutionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_PositioningSolutionType_value2enum_1[] = { + { 0, 21, "noPositioningSolution" }, + { 1, 5, "sGNSS" }, + { 2, 5, "dGNSS" }, + { 3, 11, "sGNSSplusDR" }, + { 4, 11, "dGNSSplusDR" }, + { 5, 2, "dR" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PositioningSolutionType_enum2value_1[] = { + 2, /* dGNSS(2) */ + 4, /* dGNSSplusDR(4) */ + 5, /* dR(5) */ + 0, /* noPositioningSolution(0) */ + 1, /* sGNSS(1) */ + 3 /* sGNSSplusDR(3) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_PositioningSolutionType_specs_1 = { + asn_MAP_PositioningSolutionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PositioningSolutionType_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PositioningSolutionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PositioningSolutionType = { + "PositioningSolutionType", + "PositioningSolutionType", + &asn_OP_NativeEnumerated, + asn_DEF_PositioningSolutionType_tags_1, + sizeof(asn_DEF_PositioningSolutionType_tags_1) + /sizeof(asn_DEF_PositioningSolutionType_tags_1[0]), /* 1 */ + asn_DEF_PositioningSolutionType_tags_1, /* Same as above */ + sizeof(asn_DEF_PositioningSolutionType_tags_1) + /sizeof(asn_DEF_PositioningSolutionType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PositioningSolutionType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PositioningSolutionType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PositioningSolutionType_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PostCrashSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/PostCrashSubCauseCode.c new file mode 100644 index 000000000..e9ad65b7e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PostCrashSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PostCrashSubCauseCode.h" + +int +PostCrashSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PostCrashSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PostCrashSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PostCrashSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PostCrashSubCauseCode = { + "PostCrashSubCauseCode", + "PostCrashSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_PostCrashSubCauseCode_tags_1, + sizeof(asn_DEF_PostCrashSubCauseCode_tags_1) + /sizeof(asn_DEF_PostCrashSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_PostCrashSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_PostCrashSubCauseCode_tags_1) + /sizeof(asn_DEF_PostCrashSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PostCrashSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PostCrashSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PostCrashSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PrecipitationIntensity.c b/etsi_its_coding/etsi_its_cpm_coding/src/PrecipitationIntensity.c new file mode 100644 index 000000000..4a0667474 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PrecipitationIntensity.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PrecipitationIntensity.h" + +int +PrecipitationIntensity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 2001)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PrecipitationIntensity_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..2001) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_PrecipitationIntensity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 1, 2001 } /* (1..2001) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PrecipitationIntensity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PrecipitationIntensity = { + "PrecipitationIntensity", + "PrecipitationIntensity", + &asn_OP_NativeInteger, + asn_DEF_PrecipitationIntensity_tags_1, + sizeof(asn_DEF_PrecipitationIntensity_tags_1) + /sizeof(asn_DEF_PrecipitationIntensity_tags_1[0]), /* 1 */ + asn_DEF_PrecipitationIntensity_tags_1, /* Same as above */ + sizeof(asn_DEF_PrecipitationIntensity_tags_1) + /sizeof(asn_DEF_PrecipitationIntensity_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PrecipitationIntensity_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PrecipitationIntensity_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PrecipitationIntensity_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZone.c b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZone.c new file mode 100644 index 000000000..4878d48e4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZone.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ProtectedCommunicationZone.h" + +asn_TYPE_member_t asn_MBR_ProtectedCommunicationZone_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedCommunicationZone, protectedZoneType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedZoneType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneType" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedCommunicationZone, expiryTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimestampIts, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "expiryTime" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedCommunicationZone, protectedZoneLatitude), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneLatitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedCommunicationZone, protectedZoneLongitude), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneLongitude" + }, + { ATF_POINTER, 2, offsetof(struct ProtectedCommunicationZone, protectedZoneRadius), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedZoneRadius, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneRadius" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedCommunicationZone, protectedZoneId), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedZoneId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "protectedZoneId" + }, +}; +static const int asn_MAP_ProtectedCommunicationZone_oms_1[] = { 1, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_ProtectedCommunicationZone_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedCommunicationZone_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* protectedZoneType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expiryTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protectedZoneLatitude */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protectedZoneLongitude */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* protectedZoneRadius */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* protectedZoneId */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedCommunicationZone_specs_1 = { + sizeof(struct ProtectedCommunicationZone), + offsetof(struct ProtectedCommunicationZone, _asn_ctx), + asn_MAP_ProtectedCommunicationZone_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_ProtectedCommunicationZone_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedCommunicationZone = { + "ProtectedCommunicationZone", + "ProtectedCommunicationZone", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedCommunicationZone_tags_1, + sizeof(asn_DEF_ProtectedCommunicationZone_tags_1) + /sizeof(asn_DEF_ProtectedCommunicationZone_tags_1[0]), /* 1 */ + asn_DEF_ProtectedCommunicationZone_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedCommunicationZone_tags_1) + /sizeof(asn_DEF_ProtectedCommunicationZone_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ProtectedCommunicationZone_1, + 6, /* Elements count */ + &asn_SPC_ProtectedCommunicationZone_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZonesRSU.c b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZonesRSU.c new file mode 100644 index 000000000..5aa75fb00 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedCommunicationZonesRSU.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ProtectedCommunicationZonesRSU.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ProtectedCommunicationZonesRSU_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ProtectedCommunicationZonesRSU_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_ProtectedCommunicationZonesRSU_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedCommunicationZone, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedCommunicationZonesRSU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ProtectedCommunicationZonesRSU_specs_1 = { + sizeof(struct ProtectedCommunicationZonesRSU), + offsetof(struct ProtectedCommunicationZonesRSU, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedCommunicationZonesRSU = { + "ProtectedCommunicationZonesRSU", + "ProtectedCommunicationZonesRSU", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtectedCommunicationZonesRSU_tags_1, + sizeof(asn_DEF_ProtectedCommunicationZonesRSU_tags_1) + /sizeof(asn_DEF_ProtectedCommunicationZonesRSU_tags_1[0]), /* 1 */ + asn_DEF_ProtectedCommunicationZonesRSU_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedCommunicationZonesRSU_tags_1) + /sizeof(asn_DEF_ProtectedCommunicationZonesRSU_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ProtectedCommunicationZonesRSU_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtectedCommunicationZonesRSU_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_ProtectedCommunicationZonesRSU_1, + 1, /* Single element */ + &asn_SPC_ProtectedCommunicationZonesRSU_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneId.c b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneId.c new file mode 100644 index 000000000..5fbe0ed37 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneId.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ProtectedZoneId.h" + +int +ProtectedZoneId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 134217727)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ProtectedZoneId_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..134217727) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtectedZoneId_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 27, -1, 0, 134217727 } /* (0..134217727) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ProtectedZoneId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedZoneId = { + "ProtectedZoneId", + "ProtectedZoneId", + &asn_OP_NativeInteger, + asn_DEF_ProtectedZoneId_tags_1, + sizeof(asn_DEF_ProtectedZoneId_tags_1) + /sizeof(asn_DEF_ProtectedZoneId_tags_1[0]), /* 1 */ + asn_DEF_ProtectedZoneId_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedZoneId_tags_1) + /sizeof(asn_DEF_ProtectedZoneId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ProtectedZoneId_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtectedZoneId_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ProtectedZoneId_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneRadius.c b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneRadius.c new file mode 100644 index 000000000..2cce30850 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneRadius.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ProtectedZoneRadius.h" + +int +ProtectedZoneRadius_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ProtectedZoneRadius_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtectedZoneRadius_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 255 } /* (1..255,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ProtectedZoneRadius_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedZoneRadius = { + "ProtectedZoneRadius", + "ProtectedZoneRadius", + &asn_OP_NativeInteger, + asn_DEF_ProtectedZoneRadius_tags_1, + sizeof(asn_DEF_ProtectedZoneRadius_tags_1) + /sizeof(asn_DEF_ProtectedZoneRadius_tags_1[0]), /* 1 */ + asn_DEF_ProtectedZoneRadius_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedZoneRadius_tags_1) + /sizeof(asn_DEF_ProtectedZoneRadius_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ProtectedZoneRadius_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtectedZoneRadius_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ProtectedZoneRadius_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneType.c b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneType.c new file mode 100644 index 000000000..71e5e1189 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ProtectedZoneType.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ProtectedZoneType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ProtectedZoneType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_ProtectedZoneType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_ProtectedZoneType_value2enum_1[] = { + { 0, 23, "permanentCenDsrcTolling" }, + { 1, 23, "temporaryCenDsrcTolling" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProtectedZoneType_enum2value_1[] = { + 0, /* permanentCenDsrcTolling(0) */ + 1 /* temporaryCenDsrcTolling(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProtectedZoneType_specs_1 = { + asn_MAP_ProtectedZoneType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProtectedZoneType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProtectedZoneType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedZoneType = { + "ProtectedZoneType", + "ProtectedZoneType", + &asn_OP_NativeEnumerated, + asn_DEF_ProtectedZoneType_tags_1, + sizeof(asn_DEF_ProtectedZoneType_tags_1) + /sizeof(asn_DEF_ProtectedZoneType_tags_1[0]), /* 1 */ + asn_DEF_ProtectedZoneType_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedZoneType_tags_1) + /sizeof(asn_DEF_ProtectedZoneType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ProtectedZoneType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ProtectedZoneType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProtectedZoneType_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PtActivation.c b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivation.c new file mode 100644 index 000000000..2e8aae49c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivation.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PtActivation.h" + +static asn_TYPE_member_t asn_MBR_PtActivation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PtActivation, ptActivationType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PtActivationType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ptActivationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct PtActivation, ptActivationData), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PtActivationData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "ptActivationData" + }, +}; +static const ber_tlv_tag_t asn_DEF_PtActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PtActivation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ptActivationType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ptActivationData */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PtActivation_specs_1 = { + sizeof(struct PtActivation), + offsetof(struct PtActivation, _asn_ctx), + asn_MAP_PtActivation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PtActivation = { + "PtActivation", + "PtActivation", + &asn_OP_SEQUENCE, + asn_DEF_PtActivation_tags_1, + sizeof(asn_DEF_PtActivation_tags_1) + /sizeof(asn_DEF_PtActivation_tags_1[0]), /* 1 */ + asn_DEF_PtActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_PtActivation_tags_1) + /sizeof(asn_DEF_PtActivation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_PtActivation_1, + 2, /* Elements count */ + &asn_SPC_PtActivation_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationData.c b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationData.c new file mode 100644 index 000000000..92726c08b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationData.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PtActivationData.h" + +int +PtActivationData_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PtActivationData_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..20)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PtActivationData_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 20 } /* (SIZE(1..20)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PtActivationData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PtActivationData = { + "PtActivationData", + "PtActivationData", + &asn_OP_OCTET_STRING, + asn_DEF_PtActivationData_tags_1, + sizeof(asn_DEF_PtActivationData_tags_1) + /sizeof(asn_DEF_PtActivationData_tags_1[0]), /* 1 */ + asn_DEF_PtActivationData_tags_1, /* Same as above */ + sizeof(asn_DEF_PtActivationData_tags_1) + /sizeof(asn_DEF_PtActivationData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PtActivationData_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PtActivationData_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PtActivationData_constraint + }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationType.c b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationType.c new file mode 100644 index 000000000..5f0b7ebbf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/PtActivationType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/PtActivationType.h" + +int +PtActivationType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_PtActivationType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_PtActivationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_PtActivationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PtActivationType = { + "PtActivationType", + "PtActivationType", + &asn_OP_NativeInteger, + asn_DEF_PtActivationType_tags_1, + sizeof(asn_DEF_PtActivationType_tags_1) + /sizeof(asn_DEF_PtActivationType_tags_1[0]), /* 1 */ + asn_DEF_PtActivationType_tags_1, /* Same as above */ + sizeof(asn_DEF_PtActivationType_tags_1) + /sizeof(asn_DEF_PtActivationType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_PtActivationType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_PtActivationType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + PtActivationType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RadialShape.c b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShape.c new file mode 100644 index 000000000..7afe52a21 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShape.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RadialShape.h" + +asn_TYPE_member_t asn_MBR_RadialShape_1[] = { + { ATF_POINTER, 1, offsetof(struct RadialShape, shapeReferencePoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shapeReferencePoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShape, range), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "range" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShape, stationaryHorizontalOpeningAngleStart), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationaryHorizontalOpeningAngleStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShape, stationaryHorizontalOpeningAngleEnd), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "stationaryHorizontalOpeningAngleEnd" + }, + { ATF_POINTER, 2, offsetof(struct RadialShape, verticalOpeningAngleStart), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalOpeningAngleStart" + }, + { ATF_POINTER, 1, offsetof(struct RadialShape, verticalOpeningAngleEnd), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalOpeningAngleEnd" + }, +}; +static const int asn_MAP_RadialShape_oms_1[] = { 0, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_RadialShape_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadialShape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shapeReferencePoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* range */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* stationaryHorizontalOpeningAngleStart */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* stationaryHorizontalOpeningAngleEnd */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* verticalOpeningAngleStart */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* verticalOpeningAngleEnd */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadialShape_specs_1 = { + sizeof(struct RadialShape), + offsetof(struct RadialShape, _asn_ctx), + asn_MAP_RadialShape_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_RadialShape_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadialShape = { + "RadialShape", + "RadialShape", + &asn_OP_SEQUENCE, + asn_DEF_RadialShape_tags_1, + sizeof(asn_DEF_RadialShape_tags_1) + /sizeof(asn_DEF_RadialShape_tags_1[0]), /* 1 */ + asn_DEF_RadialShape_tags_1, /* Same as above */ + sizeof(asn_DEF_RadialShape_tags_1) + /sizeof(asn_DEF_RadialShape_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RadialShape_1, + 6, /* Elements count */ + &asn_SPC_RadialShape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapeDetails.c b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapeDetails.c new file mode 100644 index 000000000..429ff56c8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapeDetails.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RadialShapeDetails.h" + +asn_TYPE_member_t asn_MBR_RadialShapeDetails_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadialShapeDetails, range), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "range" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShapeDetails, horizontalOpeningAngleStart), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "horizontalOpeningAngleStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShapeDetails, horizontalOpeningAngleEnd), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "horizontalOpeningAngleEnd" + }, + { ATF_POINTER, 2, offsetof(struct RadialShapeDetails, verticalOpeningAngleStart), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalOpeningAngleStart" + }, + { ATF_POINTER, 1, offsetof(struct RadialShapeDetails, verticalOpeningAngleEnd), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalOpeningAngleEnd" + }, +}; +static const int asn_MAP_RadialShapeDetails_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_RadialShapeDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadialShapeDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* range */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* horizontalOpeningAngleStart */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* horizontalOpeningAngleEnd */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* verticalOpeningAngleStart */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* verticalOpeningAngleEnd */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadialShapeDetails_specs_1 = { + sizeof(struct RadialShapeDetails), + offsetof(struct RadialShapeDetails, _asn_ctx), + asn_MAP_RadialShapeDetails_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RadialShapeDetails_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadialShapeDetails = { + "RadialShapeDetails", + "RadialShapeDetails", + &asn_OP_SEQUENCE, + asn_DEF_RadialShapeDetails_tags_1, + sizeof(asn_DEF_RadialShapeDetails_tags_1) + /sizeof(asn_DEF_RadialShapeDetails_tags_1[0]), /* 1 */ + asn_DEF_RadialShapeDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_RadialShapeDetails_tags_1) + /sizeof(asn_DEF_RadialShapeDetails_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RadialShapeDetails_1, + 5, /* Elements count */ + &asn_SPC_RadialShapeDetails_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapes.c b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapes.c new file mode 100644 index 000000000..c81310b0e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapes.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RadialShapes.h" + +asn_TYPE_member_t asn_MBR_RadialShapes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadialShapes, refPointId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "refPointId" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShapes, xCoordinate), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateSmall, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xCoordinate" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShapes, yCoordinate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateSmall, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yCoordinate" + }, + { ATF_POINTER, 1, offsetof(struct RadialShapes, zCoordinate), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianCoordinateSmall, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zCoordinate" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadialShapes, radialShapesList), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadialShapesList, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radialShapesList" + }, +}; +static const int asn_MAP_RadialShapes_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_RadialShapes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadialShapes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* refPointId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* xCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* yCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* zCoordinate */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* radialShapesList */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadialShapes_specs_1 = { + sizeof(struct RadialShapes), + offsetof(struct RadialShapes, _asn_ctx), + asn_MAP_RadialShapes_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RadialShapes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadialShapes = { + "RadialShapes", + "RadialShapes", + &asn_OP_SEQUENCE, + asn_DEF_RadialShapes_tags_1, + sizeof(asn_DEF_RadialShapes_tags_1) + /sizeof(asn_DEF_RadialShapes_tags_1[0]), /* 1 */ + asn_DEF_RadialShapes_tags_1, /* Same as above */ + sizeof(asn_DEF_RadialShapes_tags_1) + /sizeof(asn_DEF_RadialShapes_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RadialShapes_1, + 5, /* Elements count */ + &asn_SPC_RadialShapes_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapesList.c b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapesList.c new file mode 100644 index 000000000..45e61c612 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RadialShapesList.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RadialShapesList.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RadialShapesList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RadialShapesList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (SIZE(1..16,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_RadialShapesList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RadialShapeDetails, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RadialShapesList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RadialShapesList_specs_1 = { + sizeof(struct RadialShapesList), + offsetof(struct RadialShapesList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RadialShapesList = { + "RadialShapesList", + "RadialShapesList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RadialShapesList_tags_1, + sizeof(asn_DEF_RadialShapesList_tags_1) + /sizeof(asn_DEF_RadialShapesList_tags_1[0]), /* 1 */ + asn_DEF_RadialShapesList_tags_1, /* Same as above */ + sizeof(asn_DEF_RadialShapesList_tags_1) + /sizeof(asn_DEF_RadialShapesList_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RadialShapesList_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RadialShapesList_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RadialShapesList_1, + 1, /* Single element */ + &asn_SPC_RadialShapesList_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RailwayLevelCrossingSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/RailwayLevelCrossingSubCauseCode.c new file mode 100644 index 000000000..7568d3469 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RailwayLevelCrossingSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RailwayLevelCrossingSubCauseCode.h" + +int +RailwayLevelCrossingSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RailwayLevelCrossingSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RailwayLevelCrossingSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RailwayLevelCrossingSubCauseCode = { + "RailwayLevelCrossingSubCauseCode", + "RailwayLevelCrossingSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1, + sizeof(asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1) + /sizeof(asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1) + /sizeof(asn_DEF_RailwayLevelCrossingSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RailwayLevelCrossingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RailwayLevelCrossingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RailwayLevelCrossingSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RectangularShape.c b/etsi_its_coding/etsi_its_cpm_coding/src/RectangularShape.c new file mode 100644 index 000000000..b687e96d5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RectangularShape.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RectangularShape.h" + +asn_TYPE_member_t asn_MBR_RectangularShape_1[] = { + { ATF_POINTER, 1, offsetof(struct RectangularShape, centerPoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "centerPoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct RectangularShape, semiLength), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct RectangularShape, semiBreadth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "semiBreadth" + }, + { ATF_POINTER, 2, offsetof(struct RectangularShape, orientation), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "orientation" + }, + { ATF_POINTER, 1, offsetof(struct RectangularShape, height), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength12b, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "height" + }, +}; +static const int asn_MAP_RectangularShape_oms_1[] = { 0, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_RectangularShape_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RectangularShape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* centerPoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiLength */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* semiBreadth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* orientation */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* height */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RectangularShape_specs_1 = { + sizeof(struct RectangularShape), + offsetof(struct RectangularShape, _asn_ctx), + asn_MAP_RectangularShape_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_RectangularShape_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RectangularShape = { + "RectangularShape", + "RectangularShape", + &asn_OP_SEQUENCE, + asn_DEF_RectangularShape_tags_1, + sizeof(asn_DEF_RectangularShape_tags_1) + /sizeof(asn_DEF_RectangularShape_tags_1[0]), /* 1 */ + asn_DEF_RectangularShape_tags_1, /* Same as above */ + sizeof(asn_DEF_RectangularShape_tags_1) + /sizeof(asn_DEF_RectangularShape_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RectangularShape_1, + 5, /* Elements count */ + &asn_SPC_RectangularShape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePosition.c new file mode 100644 index 000000000..26d6380ce --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePosition.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ReferencePosition.h" + +asn_TYPE_member_t asn_MBR_ReferencePosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReferencePosition, latitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "latitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePosition, longitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePosition, positionConfidenceEllipse), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PosConfidenceEllipse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "positionConfidenceEllipse" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePosition, altitude), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Altitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "altitude" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReferencePosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReferencePosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* longitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* positionConfidenceEllipse */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* altitude */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReferencePosition_specs_1 = { + sizeof(struct ReferencePosition), + offsetof(struct ReferencePosition, _asn_ctx), + asn_MAP_ReferencePosition_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReferencePosition = { + "ReferencePosition", + "ReferencePosition", + &asn_OP_SEQUENCE, + asn_DEF_ReferencePosition_tags_1, + sizeof(asn_DEF_ReferencePosition_tags_1) + /sizeof(asn_DEF_ReferencePosition_tags_1[0]), /* 1 */ + asn_DEF_ReferencePosition_tags_1, /* Same as above */ + sizeof(asn_DEF_ReferencePosition_tags_1) + /sizeof(asn_DEF_ReferencePosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ReferencePosition_1, + 4, /* Elements count */ + &asn_SPC_ReferencePosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePositionWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePositionWithConfidence.c new file mode 100644 index 000000000..3532afc65 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ReferencePositionWithConfidence.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ReferencePositionWithConfidence.h" + +asn_TYPE_member_t asn_MBR_ReferencePositionWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReferencePositionWithConfidence, latitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Latitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "latitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePositionWithConfidence, longitude), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Longitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "longitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePositionWithConfidence, positionConfidenceEllipse), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PositionConfidenceEllipse, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "positionConfidenceEllipse" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReferencePositionWithConfidence, altitude), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Altitude, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "altitude" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReferencePositionWithConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReferencePositionWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* latitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* longitude */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* positionConfidenceEllipse */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* altitude */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReferencePositionWithConfidence_specs_1 = { + sizeof(struct ReferencePositionWithConfidence), + offsetof(struct ReferencePositionWithConfidence, _asn_ctx), + asn_MAP_ReferencePositionWithConfidence_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReferencePositionWithConfidence = { + "ReferencePositionWithConfidence", + "ReferencePositionWithConfidence", + &asn_OP_SEQUENCE, + asn_DEF_ReferencePositionWithConfidence_tags_1, + sizeof(asn_DEF_ReferencePositionWithConfidence_tags_1) + /sizeof(asn_DEF_ReferencePositionWithConfidence_tags_1[0]), /* 1 */ + asn_DEF_ReferencePositionWithConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_ReferencePositionWithConfidence_tags_1) + /sizeof(asn_DEF_ReferencePositionWithConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_ReferencePositionWithConfidence_1, + 4, /* Elements count */ + &asn_SPC_ReferencePositionWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceDistance.c b/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceDistance.c new file mode 100644 index 000000000..2cefb3866 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceDistance.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RelevanceDistance.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RelevanceDistance_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_RelevanceDistance_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RelevanceDistance_value2enum_1[] = { + { 0, 11, "lessThan50m" }, + { 1, 12, "lessThan100m" }, + { 2, 12, "lessThan200m" }, + { 3, 12, "lessThan500m" }, + { 4, 13, "lessThan1000m" }, + { 5, 11, "lessThan5km" }, + { 6, 12, "lessThan10km" }, + { 7, 8, "over10km" } +}; +static const unsigned int asn_MAP_RelevanceDistance_enum2value_1[] = { + 4, /* lessThan1000m(4) */ + 1, /* lessThan100m(1) */ + 6, /* lessThan10km(6) */ + 2, /* lessThan200m(2) */ + 3, /* lessThan500m(3) */ + 0, /* lessThan50m(0) */ + 5, /* lessThan5km(5) */ + 7 /* over10km(7) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RelevanceDistance_specs_1 = { + asn_MAP_RelevanceDistance_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RelevanceDistance_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RelevanceDistance_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RelevanceDistance = { + "RelevanceDistance", + "RelevanceDistance", + &asn_OP_NativeEnumerated, + asn_DEF_RelevanceDistance_tags_1, + sizeof(asn_DEF_RelevanceDistance_tags_1) + /sizeof(asn_DEF_RelevanceDistance_tags_1[0]), /* 1 */ + asn_DEF_RelevanceDistance_tags_1, /* Same as above */ + sizeof(asn_DEF_RelevanceDistance_tags_1) + /sizeof(asn_DEF_RelevanceDistance_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RelevanceDistance_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RelevanceDistance_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RelevanceDistance_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceTrafficDirection.c b/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceTrafficDirection.c new file mode 100644 index 000000000..675f9a1ea --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RelevanceTrafficDirection.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RelevanceTrafficDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RelevanceTrafficDirection_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_RelevanceTrafficDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RelevanceTrafficDirection_value2enum_1[] = { + { 0, 20, "allTrafficDirections" }, + { 1, 15, "upstreamTraffic" }, + { 2, 17, "downstreamTraffic" }, + { 3, 15, "oppositeTraffic" } +}; +static const unsigned int asn_MAP_RelevanceTrafficDirection_enum2value_1[] = { + 0, /* allTrafficDirections(0) */ + 2, /* downstreamTraffic(2) */ + 3, /* oppositeTraffic(3) */ + 1 /* upstreamTraffic(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RelevanceTrafficDirection_specs_1 = { + asn_MAP_RelevanceTrafficDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RelevanceTrafficDirection_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RelevanceTrafficDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RelevanceTrafficDirection = { + "RelevanceTrafficDirection", + "RelevanceTrafficDirection", + &asn_OP_NativeEnumerated, + asn_DEF_RelevanceTrafficDirection_tags_1, + sizeof(asn_DEF_RelevanceTrafficDirection_tags_1) + /sizeof(asn_DEF_RelevanceTrafficDirection_tags_1[0]), /* 1 */ + asn_DEF_RelevanceTrafficDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_RelevanceTrafficDirection_tags_1) + /sizeof(asn_DEF_RelevanceTrafficDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RelevanceTrafficDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RelevanceTrafficDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RelevanceTrafficDirection_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RequestResponseIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/RequestResponseIndication.c new file mode 100644 index 000000000..a4e180d24 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RequestResponseIndication.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RequestResponseIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RequestResponseIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_RequestResponseIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RequestResponseIndication_value2enum_1[] = { + { 0, 7, "request" }, + { 1, 8, "response" } +}; +static const unsigned int asn_MAP_RequestResponseIndication_enum2value_1[] = { + 0, /* request(0) */ + 1 /* response(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RequestResponseIndication_specs_1 = { + asn_MAP_RequestResponseIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RequestResponseIndication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RequestResponseIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RequestResponseIndication = { + "RequestResponseIndication", + "RequestResponseIndication", + &asn_OP_NativeEnumerated, + asn_DEF_RequestResponseIndication_tags_1, + sizeof(asn_DEF_RequestResponseIndication_tags_1) + /sizeof(asn_DEF_RequestResponseIndication_tags_1[0]), /* 1 */ + asn_DEF_RequestResponseIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_RequestResponseIndication_tags_1) + /sizeof(asn_DEF_RequestResponseIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RequestResponseIndication_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RequestResponseIndication_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RequestResponseIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RescueAndRecoveryWorkInProgressSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/RescueAndRecoveryWorkInProgressSubCauseCode.c new file mode 100644 index 000000000..15983b59e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RescueAndRecoveryWorkInProgressSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RescueAndRecoveryWorkInProgressSubCauseCode.h" + +int +RescueAndRecoveryWorkInProgressSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RescueAndRecoveryWorkInProgressSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RescueAndRecoveryWorkInProgressSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode = { + "RescueAndRecoveryWorkInProgressSubCauseCode", + "RescueAndRecoveryWorkInProgressSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1, + sizeof(asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1) + /sizeof(asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1) + /sizeof(asn_DEF_RescueAndRecoveryWorkInProgressSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RescueAndRecoveryWorkInProgressSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RescueAndRecoveryWorkInProgressSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RescueAndRecoveryWorkInProgressSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RestrictedTypes.c b/etsi_its_coding/etsi_its_cpm_coding/src/RestrictedTypes.c new file mode 100644 index 000000000..a1a70ed4c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RestrictedTypes.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RestrictedTypes.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RestrictedTypes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_RestrictedTypes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 1, 3 } /* (SIZE(1..3,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_RestrictedTypes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_StationType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RestrictedTypes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RestrictedTypes_specs_1 = { + sizeof(struct RestrictedTypes), + offsetof(struct RestrictedTypes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RestrictedTypes = { + "RestrictedTypes", + "RestrictedTypes", + &asn_OP_SEQUENCE_OF, + asn_DEF_RestrictedTypes_tags_1, + sizeof(asn_DEF_RestrictedTypes_tags_1) + /sizeof(asn_DEF_RestrictedTypes_tags_1[0]), /* 1 */ + asn_DEF_RestrictedTypes_tags_1, /* Same as above */ + sizeof(asn_DEF_RestrictedTypes_tags_1) + /sizeof(asn_DEF_RestrictedTypes_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RestrictedTypes_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RestrictedTypes_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_RestrictedTypes_1, + 1, /* Single element */ + &asn_SPC_RestrictedTypes_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RoadSegmentReferenceId.c b/etsi_its_coding/etsi_its_cpm_coding/src/RoadSegmentReferenceId.c new file mode 100644 index 000000000..f798444bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RoadSegmentReferenceId.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RoadSegmentReferenceId.h" + +asn_TYPE_member_t asn_MBR_RoadSegmentReferenceId_1[] = { + { ATF_POINTER, 1, offsetof(struct RoadSegmentReferenceId, region), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "region" + }, + { ATF_NOFLAGS, 0, offsetof(struct RoadSegmentReferenceId, id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier2B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "id" + }, +}; +static const int asn_MAP_RoadSegmentReferenceId_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_RoadSegmentReferenceId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RoadSegmentReferenceId_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* region */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RoadSegmentReferenceId_specs_1 = { + sizeof(struct RoadSegmentReferenceId), + offsetof(struct RoadSegmentReferenceId, _asn_ctx), + asn_MAP_RoadSegmentReferenceId_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_RoadSegmentReferenceId_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RoadSegmentReferenceId = { + "RoadSegmentReferenceId", + "RoadSegmentReferenceId", + &asn_OP_SEQUENCE, + asn_DEF_RoadSegmentReferenceId_tags_1, + sizeof(asn_DEF_RoadSegmentReferenceId_tags_1) + /sizeof(asn_DEF_RoadSegmentReferenceId_tags_1[0]), /* 1 */ + asn_DEF_RoadSegmentReferenceId_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadSegmentReferenceId_tags_1) + /sizeof(asn_DEF_RoadSegmentReferenceId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_RoadSegmentReferenceId_1, + 2, /* Elements count */ + &asn_SPC_RoadSegmentReferenceId_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RoadType.c b/etsi_its_coding/etsi_its_cpm_coding/src/RoadType.c new file mode 100644 index 000000000..957b84e9b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RoadType.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RoadType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_RoadType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_RoadType_value2enum_1[] = { + { 0, 43, "urban-NoStructuralSeparationToOppositeLanes" }, + { 1, 45, "urban-WithStructuralSeparationToOppositeLanes" }, + { 2, 46, "nonUrban-NoStructuralSeparationToOppositeLanes" }, + { 3, 48, "nonUrban-WithStructuralSeparationToOppositeLanes" } +}; +static const unsigned int asn_MAP_RoadType_enum2value_1[] = { + 2, /* nonUrban-NoStructuralSeparationToOppositeLanes(2) */ + 3, /* nonUrban-WithStructuralSeparationToOppositeLanes(3) */ + 0, /* urban-NoStructuralSeparationToOppositeLanes(0) */ + 1 /* urban-WithStructuralSeparationToOppositeLanes(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RoadType_specs_1 = { + asn_MAP_RoadType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RoadType_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RoadType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RoadType = { + "RoadType", + "RoadType", + &asn_OP_NativeEnumerated, + asn_DEF_RoadType_tags_1, + sizeof(asn_DEF_RoadType_tags_1) + /sizeof(asn_DEF_RoadType_tags_1[0]), /* 1 */ + asn_DEF_RoadType_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadType_tags_1) + /sizeof(asn_DEF_RoadType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RoadType_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/RoadworksSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/RoadworksSubCauseCode.c new file mode 100644 index 000000000..23f28672e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/RoadworksSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/RoadworksSubCauseCode.h" + +int +RoadworksSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_RoadworksSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_RoadworksSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_RoadworksSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RoadworksSubCauseCode = { + "RoadworksSubCauseCode", + "RoadworksSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_RoadworksSubCauseCode_tags_1, + sizeof(asn_DEF_RoadworksSubCauseCode_tags_1) + /sizeof(asn_DEF_RoadworksSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_RoadworksSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_RoadworksSubCauseCode_tags_1) + /sizeof(asn_DEF_RoadworksSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_RoadworksSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_RoadworksSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + RoadworksSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndication.c new file mode 100644 index 000000000..60a65e92c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndication.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SafeDistanceIndication.h" + +asn_TYPE_member_t asn_MBR_SafeDistanceIndication_1[] = { + { ATF_POINTER, 1, offsetof(struct SafeDistanceIndication, subjectStation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subjectStation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SafeDistanceIndication, safeDistanceIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SafeDistanceIndicator, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "safeDistanceIndicator" + }, + { ATF_POINTER, 1, offsetof(struct SafeDistanceIndication, timeToCollision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeTenthOfSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "timeToCollision" + }, +}; +static const int asn_MAP_SafeDistanceIndication_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_SafeDistanceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SafeDistanceIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subjectStation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* safeDistanceIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timeToCollision */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SafeDistanceIndication_specs_1 = { + sizeof(struct SafeDistanceIndication), + offsetof(struct SafeDistanceIndication, _asn_ctx), + asn_MAP_SafeDistanceIndication_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SafeDistanceIndication_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SafeDistanceIndication = { + "SafeDistanceIndication", + "SafeDistanceIndication", + &asn_OP_SEQUENCE, + asn_DEF_SafeDistanceIndication_tags_1, + sizeof(asn_DEF_SafeDistanceIndication_tags_1) + /sizeof(asn_DEF_SafeDistanceIndication_tags_1[0]), /* 1 */ + asn_DEF_SafeDistanceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SafeDistanceIndication_tags_1) + /sizeof(asn_DEF_SafeDistanceIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SafeDistanceIndication_1, + 3, /* Elements count */ + &asn_SPC_SafeDistanceIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndicator.c b/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndicator.c new file mode 100644 index 000000000..cf3f64ff5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SafeDistanceIndicator.c @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SafeDistanceIndicator.h" + +/* + * This type is implemented using BOOLEAN, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SafeDistanceIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SafeDistanceIndicator = { + "SafeDistanceIndicator", + "SafeDistanceIndicator", + &asn_OP_BOOLEAN, + asn_DEF_SafeDistanceIndicator_tags_1, + sizeof(asn_DEF_SafeDistanceIndicator_tags_1) + /sizeof(asn_DEF_SafeDistanceIndicator_tags_1[0]), /* 1 */ + asn_DEF_SafeDistanceIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_SafeDistanceIndicator_tags_1) + /sizeof(asn_DEF_SafeDistanceIndicator_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + BOOLEAN_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SemiAxisLength.c b/etsi_its_coding/etsi_its_cpm_coding/src/SemiAxisLength.c new file mode 100644 index 000000000..9f53c0a92 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SemiAxisLength.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SemiAxisLength.h" + +int +SemiAxisLength_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SemiAxisLength_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SemiAxisLength_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SemiAxisLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SemiAxisLength = { + "SemiAxisLength", + "SemiAxisLength", + &asn_OP_NativeInteger, + asn_DEF_SemiAxisLength_tags_1, + sizeof(asn_DEF_SemiAxisLength_tags_1) + /sizeof(asn_DEF_SemiAxisLength_tags_1[0]), /* 1 */ + asn_DEF_SemiAxisLength_tags_1, /* Same as above */ + sizeof(asn_DEF_SemiAxisLength_tags_1) + /sizeof(asn_DEF_SemiAxisLength_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SemiAxisLength_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SemiAxisLength_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SemiAxisLength_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformation.c b/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformation.c new file mode 100644 index 000000000..725e4bdbe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformation.c @@ -0,0 +1,140 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-SensorInformationContainer" + * found in "/input/CPM-SensorInformationContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SensorInformation.h" + +asn_TYPE_member_t asn_MBR_SensorInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SensorInformation, sensorId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sensorId" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorInformation, sensorType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SensorType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "sensorType" + }, + { ATF_POINTER, 2, offsetof(struct SensorInformation, perceptionRegionShape), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Shape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceptionRegionShape" + }, + { ATF_POINTER, 1, offsetof(struct SensorInformation, perceptionRegionConfidence), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ConfidenceLevel, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "perceptionRegionConfidence" + }, + { ATF_NOFLAGS, 0, offsetof(struct SensorInformation, shadowingApplies), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "shadowingApplies" + }, +}; +static const int asn_MAP_SensorInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_SensorInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SensorInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sensorId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sensorType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* perceptionRegionShape */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* perceptionRegionConfidence */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* shadowingApplies */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SensorInformation_specs_1 = { + sizeof(struct SensorInformation), + offsetof(struct SensorInformation, _asn_ctx), + asn_MAP_SensorInformation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_SensorInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SensorInformation = { + "SensorInformation", + "SensorInformation", + &asn_OP_SEQUENCE, + asn_DEF_SensorInformation_tags_1, + sizeof(asn_DEF_SensorInformation_tags_1) + /sizeof(asn_DEF_SensorInformation_tags_1[0]), /* 1 */ + asn_DEF_SensorInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SensorInformation_tags_1) + /sizeof(asn_DEF_SensorInformation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SensorInformation_1, + 5, /* Elements count */ + &asn_SPC_SensorInformation_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformationContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformationContainer.c new file mode 100644 index 000000000..b97cdcbc5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SensorInformationContainer.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-SensorInformationContainer" + * found in "/input/CPM-SensorInformationContainer.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SensorInformationContainer.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SensorInformationContainer_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SensorInformationContainer_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 128 } /* (SIZE(1..128,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SensorInformationContainer_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SensorInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SensorInformationContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SensorInformationContainer_specs_1 = { + sizeof(struct SensorInformationContainer), + offsetof(struct SensorInformationContainer, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SensorInformationContainer = { + "SensorInformationContainer", + "SensorInformationContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_SensorInformationContainer_tags_1, + sizeof(asn_DEF_SensorInformationContainer_tags_1) + /sizeof(asn_DEF_SensorInformationContainer_tags_1[0]), /* 1 */ + asn_DEF_SensorInformationContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_SensorInformationContainer_tags_1) + /sizeof(asn_DEF_SensorInformationContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SensorInformationContainer_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SensorInformationContainer_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SensorInformationContainer_1, + 1, /* Single element */ + &asn_SPC_SensorInformationContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SensorType.c b/etsi_its_coding/etsi_its_cpm_coding/src/SensorType.c new file mode 100644 index 000000000..1a760a159 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SensorType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SensorType.h" + +int +SensorType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 31)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SensorType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..31) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SensorType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 0, 31 } /* (0..31) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SensorType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SensorType = { + "SensorType", + "SensorType", + &asn_OP_NativeInteger, + asn_DEF_SensorType_tags_1, + sizeof(asn_DEF_SensorType_tags_1) + /sizeof(asn_DEF_SensorType_tags_1[0]), /* 1 */ + asn_DEF_SensorType_tags_1, /* Same as above */ + sizeof(asn_DEF_SensorType_tags_1) + /sizeof(asn_DEF_SensorType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SensorType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SensorType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SensorType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SequenceNumber.c b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceNumber.c new file mode 100644 index 000000000..a8d0d5617 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceNumber.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SequenceNumber.h" + +int +SequenceNumber_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SequenceNumber_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SequenceNumber_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SequenceNumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SequenceNumber = { + "SequenceNumber", + "SequenceNumber", + &asn_OP_NativeInteger, + asn_DEF_SequenceNumber_tags_1, + sizeof(asn_DEF_SequenceNumber_tags_1) + /sizeof(asn_DEF_SequenceNumber_tags_1[0]), /* 1 */ + asn_DEF_SequenceNumber_tags_1, /* Same as above */ + sizeof(asn_DEF_SequenceNumber_tags_1) + /sizeof(asn_DEF_SequenceNumber_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SequenceNumber_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SequenceNumber_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SequenceNumber_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfCartesianPosition3d.c b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfCartesianPosition3d.c new file mode 100644 index 000000000..f95e45f4e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfCartesianPosition3d.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SequenceOfCartesianPosition3d.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SequenceOfCartesianPosition3d_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SequenceOfCartesianPosition3d_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (SIZE(1..16,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SequenceOfCartesianPosition3d_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CartesianPosition3d, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SequenceOfCartesianPosition3d_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SequenceOfCartesianPosition3d_specs_1 = { + sizeof(struct SequenceOfCartesianPosition3d), + offsetof(struct SequenceOfCartesianPosition3d, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SequenceOfCartesianPosition3d = { + "SequenceOfCartesianPosition3d", + "SequenceOfCartesianPosition3d", + &asn_OP_SEQUENCE_OF, + asn_DEF_SequenceOfCartesianPosition3d_tags_1, + sizeof(asn_DEF_SequenceOfCartesianPosition3d_tags_1) + /sizeof(asn_DEF_SequenceOfCartesianPosition3d_tags_1[0]), /* 1 */ + asn_DEF_SequenceOfCartesianPosition3d_tags_1, /* Same as above */ + sizeof(asn_DEF_SequenceOfCartesianPosition3d_tags_1) + /sizeof(asn_DEF_SequenceOfCartesianPosition3d_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SequenceOfCartesianPosition3d_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SequenceOfCartesianPosition3d_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SequenceOfCartesianPosition3d_1, + 1, /* Single element */ + &asn_SPC_SequenceOfCartesianPosition3d_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfIdentifier1B.c b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfIdentifier1B.c new file mode 100644 index 000000000..276119287 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfIdentifier1B.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SequenceOfIdentifier1B.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SequenceOfIdentifier1B_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SequenceOfIdentifier1B_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 128 } /* (SIZE(1..128,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_SequenceOfIdentifier1B_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SequenceOfIdentifier1B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SequenceOfIdentifier1B_specs_1 = { + sizeof(struct SequenceOfIdentifier1B), + offsetof(struct SequenceOfIdentifier1B, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SequenceOfIdentifier1B = { + "SequenceOfIdentifier1B", + "SequenceOfIdentifier1B", + &asn_OP_SEQUENCE_OF, + asn_DEF_SequenceOfIdentifier1B_tags_1, + sizeof(asn_DEF_SequenceOfIdentifier1B_tags_1) + /sizeof(asn_DEF_SequenceOfIdentifier1B_tags_1[0]), /* 1 */ + asn_DEF_SequenceOfIdentifier1B_tags_1, /* Same as above */ + sizeof(asn_DEF_SequenceOfIdentifier1B_tags_1) + /sizeof(asn_DEF_SequenceOfIdentifier1B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SequenceOfIdentifier1B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SequenceOfIdentifier1B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SequenceOfIdentifier1B_1, + 1, /* Single element */ + &asn_SPC_SequenceOfIdentifier1B_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfSafeDistanceIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfSafeDistanceIndication.c new file mode 100644 index 000000000..7b6c97fd4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfSafeDistanceIndication.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SequenceOfSafeDistanceIndication.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SequenceOfSafeDistanceIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SequenceOfSafeDistanceIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (SIZE(1..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_SequenceOfSafeDistanceIndication_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SafeDistanceIndication, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SequenceOfSafeDistanceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_SequenceOfSafeDistanceIndication_specs_1 = { + sizeof(struct SequenceOfSafeDistanceIndication), + offsetof(struct SequenceOfSafeDistanceIndication, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SequenceOfSafeDistanceIndication = { + "SequenceOfSafeDistanceIndication", + "SequenceOfSafeDistanceIndication", + &asn_OP_SEQUENCE_OF, + asn_DEF_SequenceOfSafeDistanceIndication_tags_1, + sizeof(asn_DEF_SequenceOfSafeDistanceIndication_tags_1) + /sizeof(asn_DEF_SequenceOfSafeDistanceIndication_tags_1[0]), /* 1 */ + asn_DEF_SequenceOfSafeDistanceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SequenceOfSafeDistanceIndication_tags_1) + /sizeof(asn_DEF_SequenceOfSafeDistanceIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SequenceOfSafeDistanceIndication_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SequenceOfSafeDistanceIndication_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SequenceOfSafeDistanceIndication_1, + 1, /* Single element */ + &asn_SPC_SequenceOfSafeDistanceIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfTrajectoryInterceptionIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfTrajectoryInterceptionIndication.c new file mode 100644 index 000000000..86a1eb863 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SequenceOfTrajectoryInterceptionIndication.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SequenceOfTrajectoryInterceptionIndication.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SequenceOfTrajectoryInterceptionIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SequenceOfTrajectoryInterceptionIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (SIZE(1..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_SequenceOfTrajectoryInterceptionIndication_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TrajectoryInterceptionIndication, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_SequenceOfTrajectoryInterceptionIndication_specs_1 = { + sizeof(struct SequenceOfTrajectoryInterceptionIndication), + offsetof(struct SequenceOfTrajectoryInterceptionIndication, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SequenceOfTrajectoryInterceptionIndication = { + "SequenceOfTrajectoryInterceptionIndication", + "SequenceOfTrajectoryInterceptionIndication", + &asn_OP_SEQUENCE_OF, + asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1, + sizeof(asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1) + /sizeof(asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1[0]), /* 1 */ + asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1) + /sizeof(asn_DEF_SequenceOfTrajectoryInterceptionIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SequenceOfTrajectoryInterceptionIndication_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SequenceOfTrajectoryInterceptionIndication_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_SequenceOfTrajectoryInterceptionIndication_1, + 1, /* Single element */ + &asn_SPC_SequenceOfTrajectoryInterceptionIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Shape.c b/etsi_its_coding/etsi_its_cpm_coding/src/Shape.c new file mode 100644 index 000000000..19726a5cb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Shape.c @@ -0,0 +1,165 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Shape.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Shape_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Shape_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Shape_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.rectangular), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RectangularShape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rectangular" + }, + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.circular), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CircularShape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "circular" + }, + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.polygonal), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PolygonalShape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "polygonal" + }, + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.elliptical), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EllipticalShape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "elliptical" + }, + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.radial), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadialShape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radial" + }, + { ATF_NOFLAGS, 0, offsetof(struct Shape, choice.radialShapes), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadialShapes, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "radialShapes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Shape_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rectangular */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* circular */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* polygonal */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* elliptical */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* radial */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* radialShapes */ +}; +asn_CHOICE_specifics_t asn_SPC_Shape_specs_1 = { + sizeof(struct Shape), + offsetof(struct Shape, _asn_ctx), + offsetof(struct Shape, present), + sizeof(((struct Shape *)0)->present), + asn_MAP_Shape_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Shape = { + "Shape", + "Shape", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Shape_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Shape_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Shape_1, + 6, /* Elements count */ + &asn_SPC_Shape_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SignalViolationSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/SignalViolationSubCauseCode.c new file mode 100644 index 000000000..802e08381 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SignalViolationSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SignalViolationSubCauseCode.h" + +int +SignalViolationSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SignalViolationSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SignalViolationSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SignalViolationSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SignalViolationSubCauseCode = { + "SignalViolationSubCauseCode", + "SignalViolationSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_SignalViolationSubCauseCode_tags_1, + sizeof(asn_DEF_SignalViolationSubCauseCode_tags_1) + /sizeof(asn_DEF_SignalViolationSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_SignalViolationSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_SignalViolationSubCauseCode_tags_1) + /sizeof(asn_DEF_SignalViolationSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SignalViolationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SignalViolationSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SignalViolationSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SlowVehicleSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/SlowVehicleSubCauseCode.c new file mode 100644 index 000000000..b87a29536 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SlowVehicleSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SlowVehicleSubCauseCode.h" + +int +SlowVehicleSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SlowVehicleSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SlowVehicleSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SlowVehicleSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SlowVehicleSubCauseCode = { + "SlowVehicleSubCauseCode", + "SlowVehicleSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_SlowVehicleSubCauseCode_tags_1, + sizeof(asn_DEF_SlowVehicleSubCauseCode_tags_1) + /sizeof(asn_DEF_SlowVehicleSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_SlowVehicleSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_SlowVehicleSubCauseCode_tags_1) + /sizeof(asn_DEF_SlowVehicleSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SlowVehicleSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SlowVehicleSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SlowVehicleSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SpecialTransportType.c b/etsi_its_coding/etsi_its_cpm_coding/src/SpecialTransportType.c new file mode 100644 index 000000000..a16985c72 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SpecialTransportType.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SpecialTransportType.h" + +int +SpecialTransportType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpecialTransportType_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SpecialTransportType_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpecialTransportType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpecialTransportType = { + "SpecialTransportType", + "SpecialTransportType", + &asn_OP_BIT_STRING, + asn_DEF_SpecialTransportType_tags_1, + sizeof(asn_DEF_SpecialTransportType_tags_1) + /sizeof(asn_DEF_SpecialTransportType_tags_1[0]), /* 1 */ + asn_DEF_SpecialTransportType_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialTransportType_tags_1) + /sizeof(asn_DEF_SpecialTransportType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpecialTransportType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpecialTransportType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpecialTransportType_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Speed.c b/etsi_its_coding/etsi_its_cpm_coding/src/Speed.c new file mode 100644 index 000000000..6d934c1c7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Speed.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Speed.h" + +asn_TYPE_member_t asn_MBR_Speed_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Speed, speedValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct Speed, speedConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "speedConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Speed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Speed_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* speedValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* speedConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Speed_specs_1 = { + sizeof(struct Speed), + offsetof(struct Speed, _asn_ctx), + asn_MAP_Speed_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Speed = { + "Speed", + "Speed", + &asn_OP_SEQUENCE, + asn_DEF_Speed_tags_1, + sizeof(asn_DEF_Speed_tags_1) + /sizeof(asn_DEF_Speed_tags_1[0]), /* 1 */ + asn_DEF_Speed_tags_1, /* Same as above */ + sizeof(asn_DEF_Speed_tags_1) + /sizeof(asn_DEF_Speed_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Speed_1, + 2, /* Elements count */ + &asn_SPC_Speed_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SpeedConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedConfidence.c new file mode 100644 index 000000000..52acdd5ca --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SpeedConfidence.h" + +int +SpeedConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpeedConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedConfidence = { + "SpeedConfidence", + "SpeedConfidence", + &asn_OP_NativeInteger, + asn_DEF_SpeedConfidence_tags_1, + sizeof(asn_DEF_SpeedConfidence_tags_1) + /sizeof(asn_DEF_SpeedConfidence_tags_1[0]), /* 1 */ + asn_DEF_SpeedConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedConfidence_tags_1) + /sizeof(asn_DEF_SpeedConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpeedConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SpeedLimit.c b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedLimit.c new file mode 100644 index 000000000..a185a97ad --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedLimit.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SpeedLimit.h" + +int +SpeedLimit_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedLimit_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_SpeedLimit_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (1..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpeedLimit_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedLimit = { + "SpeedLimit", + "SpeedLimit", + &asn_OP_NativeInteger, + asn_DEF_SpeedLimit_tags_1, + sizeof(asn_DEF_SpeedLimit_tags_1) + /sizeof(asn_DEF_SpeedLimit_tags_1[0]), /* 1 */ + asn_DEF_SpeedLimit_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedLimit_tags_1) + /sizeof(asn_DEF_SpeedLimit_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedLimit_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedLimit_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpeedLimit_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SpeedValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedValue.c new file mode 100644 index 000000000..1204e61ef --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SpeedValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SpeedValue.h" + +int +SpeedValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 16383)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SpeedValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..16383) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SpeedValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 16383 } /* (0..16383) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SpeedValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpeedValue = { + "SpeedValue", + "SpeedValue", + &asn_OP_NativeInteger, + asn_DEF_SpeedValue_tags_1, + sizeof(asn_DEF_SpeedValue_tags_1) + /sizeof(asn_DEF_SpeedValue_tags_1[0]), /* 1 */ + asn_DEF_SpeedValue_tags_1, /* Same as above */ + sizeof(asn_DEF_SpeedValue_tags_1) + /sizeof(asn_DEF_SpeedValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SpeedValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SpeedValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SpeedValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StabilityChangeIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/StabilityChangeIndication.c new file mode 100644 index 000000000..5f681a3cf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StabilityChangeIndication.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StabilityChangeIndication.h" + +static asn_TYPE_member_t asn_MBR_StabilityChangeIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct StabilityChangeIndication, lossProbability), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StabilityLossProbability, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "lossProbability" + }, + { ATF_NOFLAGS, 0, offsetof(struct StabilityChangeIndication, actionDeltaTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeltaTimeTenthOfSecond, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "actionDeltaTime" + }, +}; +static const ber_tlv_tag_t asn_DEF_StabilityChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_StabilityChangeIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lossProbability */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDeltaTime */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_StabilityChangeIndication_specs_1 = { + sizeof(struct StabilityChangeIndication), + offsetof(struct StabilityChangeIndication, _asn_ctx), + asn_MAP_StabilityChangeIndication_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_StabilityChangeIndication = { + "StabilityChangeIndication", + "StabilityChangeIndication", + &asn_OP_SEQUENCE, + asn_DEF_StabilityChangeIndication_tags_1, + sizeof(asn_DEF_StabilityChangeIndication_tags_1) + /sizeof(asn_DEF_StabilityChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_StabilityChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_StabilityChangeIndication_tags_1) + /sizeof(asn_DEF_StabilityChangeIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_StabilityChangeIndication_1, + 2, /* Elements count */ + &asn_SPC_StabilityChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StabilityLossProbability.c b/etsi_its_coding/etsi_its_cpm_coding/src/StabilityLossProbability.c new file mode 100644 index 000000000..dc245115c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StabilityLossProbability.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StabilityLossProbability.h" + +int +StabilityLossProbability_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StabilityLossProbability_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StabilityLossProbability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StabilityLossProbability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StabilityLossProbability = { + "StabilityLossProbability", + "StabilityLossProbability", + &asn_OP_NativeInteger, + asn_DEF_StabilityLossProbability_tags_1, + sizeof(asn_DEF_StabilityLossProbability_tags_1) + /sizeof(asn_DEF_StabilityLossProbability_tags_1[0]), /* 1 */ + asn_DEF_StabilityLossProbability_tags_1, /* Same as above */ + sizeof(asn_DEF_StabilityLossProbability_tags_1) + /sizeof(asn_DEF_StabilityLossProbability_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StabilityLossProbability_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StabilityLossProbability_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StabilityLossProbability_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength12b.c b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength12b.c new file mode 100644 index 000000000..a1fab2d1f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength12b.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StandardLength12b.h" + +int +StandardLength12b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StandardLength12b_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StandardLength12b_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StandardLength12b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StandardLength12b = { + "StandardLength12b", + "StandardLength12b", + &asn_OP_NativeInteger, + asn_DEF_StandardLength12b_tags_1, + sizeof(asn_DEF_StandardLength12b_tags_1) + /sizeof(asn_DEF_StandardLength12b_tags_1[0]), /* 1 */ + asn_DEF_StandardLength12b_tags_1, /* Same as above */ + sizeof(asn_DEF_StandardLength12b_tags_1) + /sizeof(asn_DEF_StandardLength12b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StandardLength12b_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StandardLength12b_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StandardLength12b_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength1B.c b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength1B.c new file mode 100644 index 000000000..a50e43367 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength1B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StandardLength1B.h" + +int +StandardLength1B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StandardLength1B_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StandardLength1B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StandardLength1B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StandardLength1B = { + "StandardLength1B", + "StandardLength1B", + &asn_OP_NativeInteger, + asn_DEF_StandardLength1B_tags_1, + sizeof(asn_DEF_StandardLength1B_tags_1) + /sizeof(asn_DEF_StandardLength1B_tags_1[0]), /* 1 */ + asn_DEF_StandardLength1B_tags_1, /* Same as above */ + sizeof(asn_DEF_StandardLength1B_tags_1) + /sizeof(asn_DEF_StandardLength1B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StandardLength1B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StandardLength1B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StandardLength1B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength2B.c b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength2B.c new file mode 100644 index 000000000..7770b04b4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength2B.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StandardLength2B.h" + +int +StandardLength2B_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StandardLength2B_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_StandardLength2B_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StandardLength2B_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StandardLength2B = { + "StandardLength2B", + "StandardLength2B", + &asn_OP_NativeInteger, + asn_DEF_StandardLength2B_tags_1, + sizeof(asn_DEF_StandardLength2B_tags_1) + /sizeof(asn_DEF_StandardLength2B_tags_1[0]), /* 1 */ + asn_DEF_StandardLength2B_tags_1, /* Same as above */ + sizeof(asn_DEF_StandardLength2B_tags_1) + /sizeof(asn_DEF_StandardLength2B_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StandardLength2B_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StandardLength2B_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StandardLength2B_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength3b.c b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength3b.c new file mode 100644 index 000000000..40dc9c314 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength3b.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StandardLength3b.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StandardLength3b_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_StandardLength3b_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_StandardLength3b_value2enum_1[] = { + { 0, 11, "lessThan50m" }, + { 1, 12, "lessThan100m" }, + { 2, 12, "lessThan200m" }, + { 3, 12, "lessThan500m" }, + { 4, 13, "lessThan1000m" }, + { 5, 11, "lessThan5km" }, + { 6, 12, "lessThan10km" }, + { 7, 8, "over10km" } +}; +static const unsigned int asn_MAP_StandardLength3b_enum2value_1[] = { + 4, /* lessThan1000m(4) */ + 1, /* lessThan100m(1) */ + 6, /* lessThan10km(6) */ + 2, /* lessThan200m(2) */ + 3, /* lessThan500m(3) */ + 0, /* lessThan50m(0) */ + 5, /* lessThan5km(5) */ + 7 /* over10km(7) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_StandardLength3b_specs_1 = { + asn_MAP_StandardLength3b_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_StandardLength3b_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_StandardLength3b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StandardLength3b = { + "StandardLength3b", + "StandardLength3b", + &asn_OP_NativeEnumerated, + asn_DEF_StandardLength3b_tags_1, + sizeof(asn_DEF_StandardLength3b_tags_1) + /sizeof(asn_DEF_StandardLength3b_tags_1[0]), /* 1 */ + asn_DEF_StandardLength3b_tags_1, /* Same as above */ + sizeof(asn_DEF_StandardLength3b_tags_1) + /sizeof(asn_DEF_StandardLength3b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StandardLength3b_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StandardLength3b_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_StandardLength3b_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength9b.c b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength9b.c new file mode 100644 index 000000000..d20ef90e8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StandardLength9b.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StandardLength9b.h" + +int +StandardLength9b_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 511)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StandardLength9b_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..511) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_StandardLength9b_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, 0, 511 } /* (0..511) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StandardLength9b_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StandardLength9b = { + "StandardLength9b", + "StandardLength9b", + &asn_OP_NativeInteger, + asn_DEF_StandardLength9b_tags_1, + sizeof(asn_DEF_StandardLength9b_tags_1) + /sizeof(asn_DEF_StandardLength9b_tags_1[0]), /* 1 */ + asn_DEF_StandardLength9b_tags_1, /* Same as above */ + sizeof(asn_DEF_StandardLength9b_tags_1) + /sizeof(asn_DEF_StandardLength9b_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StandardLength9b_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StandardLength9b_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StandardLength9b_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StationID.c b/etsi_its_coding/etsi_its_cpm_coding/src/StationID.c new file mode 100644 index 000000000..ce49ba0d0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StationID.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StationID.h" + +int +StationID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationID_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..4294967295) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StationID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_StationID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_StationID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationID = { + "StationID", + "StationID", + &asn_OP_NativeInteger, + asn_DEF_StationID_tags_1, + sizeof(asn_DEF_StationID_tags_1) + /sizeof(asn_DEF_StationID_tags_1[0]), /* 1 */ + asn_DEF_StationID_tags_1, /* Same as above */ + sizeof(asn_DEF_StationID_tags_1) + /sizeof(asn_DEF_StationID_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationID_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationID_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StationID_constraint + }, + 0, 0, /* No members */ + &asn_SPC_StationID_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StationId.c b/etsi_its_coding/etsi_its_cpm_coding/src/StationId.c new file mode 100644 index 000000000..9126fd5d5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StationId.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StationId.h" + +int +StationId_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationId_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..4294967295) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StationId_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +const asn_INTEGER_specifics_t asn_SPC_StationId_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_StationId_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationId = { + "StationId", + "StationId", + &asn_OP_NativeInteger, + asn_DEF_StationId_tags_1, + sizeof(asn_DEF_StationId_tags_1) + /sizeof(asn_DEF_StationId_tags_1[0]), /* 1 */ + asn_DEF_StationId_tags_1, /* Same as above */ + sizeof(asn_DEF_StationId_tags_1) + /sizeof(asn_DEF_StationId_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationId_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationId_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StationId_constraint + }, + 0, 0, /* No members */ + &asn_SPC_StationId_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StationType.c b/etsi_its_coding/etsi_its_cpm_coding/src/StationType.c new file mode 100644 index 000000000..c2b797868 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StationType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StationType.h" + +int +StationType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationType = { + "StationType", + "StationType", + &asn_OP_NativeInteger, + asn_DEF_StationType_tags_1, + sizeof(asn_DEF_StationType_tags_1) + /sizeof(asn_DEF_StationType_tags_1[0]), /* 1 */ + asn_DEF_StationType_tags_1, /* Same as above */ + sizeof(asn_DEF_StationType_tags_1) + /sizeof(asn_DEF_StationType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StationType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StationarySince.c b/etsi_its_coding/etsi_its_cpm_coding/src/StationarySince.c new file mode 100644 index 000000000..710e9185b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StationarySince.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StationarySince.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationarySince_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_StationarySince_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_StationarySince_value2enum_1[] = { + { 0, 15, "lessThan1Minute" }, + { 1, 16, "lessThan2Minutes" }, + { 2, 17, "lessThan15Minutes" }, + { 3, 23, "equalOrGreater15Minutes" } +}; +static const unsigned int asn_MAP_StationarySince_enum2value_1[] = { + 3, /* equalOrGreater15Minutes(3) */ + 2, /* lessThan15Minutes(2) */ + 0, /* lessThan1Minute(0) */ + 1 /* lessThan2Minutes(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_StationarySince_specs_1 = { + asn_MAP_StationarySince_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_StationarySince_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_StationarySince_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationarySince = { + "StationarySince", + "StationarySince", + &asn_OP_NativeEnumerated, + asn_DEF_StationarySince_tags_1, + sizeof(asn_DEF_StationarySince_tags_1) + /sizeof(asn_DEF_StationarySince_tags_1[0]), /* 1 */ + asn_DEF_StationarySince_tags_1, /* Same as above */ + sizeof(asn_DEF_StationarySince_tags_1) + /sizeof(asn_DEF_StationarySince_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationarySince_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationarySince_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_StationarySince_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/StationaryVehicleSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/StationaryVehicleSubCauseCode.c new file mode 100644 index 000000000..46b403b36 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/StationaryVehicleSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/StationaryVehicleSubCauseCode.h" + +int +StationaryVehicleSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_StationaryVehicleSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_StationaryVehicleSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_StationaryVehicleSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_StationaryVehicleSubCauseCode = { + "StationaryVehicleSubCauseCode", + "StationaryVehicleSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_StationaryVehicleSubCauseCode_tags_1, + sizeof(asn_DEF_StationaryVehicleSubCauseCode_tags_1) + /sizeof(asn_DEF_StationaryVehicleSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_StationaryVehicleSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_StationaryVehicleSubCauseCode_tags_1) + /sizeof(asn_DEF_StationaryVehicleSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_StationaryVehicleSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_StationaryVehicleSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + StationaryVehicleSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngle.c b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngle.c new file mode 100644 index 000000000..360a77506 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngle.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SteeringWheelAngle.h" + +static asn_TYPE_member_t asn_MBR_SteeringWheelAngle_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SteeringWheelAngle, steeringWheelAngleValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steeringWheelAngleValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct SteeringWheelAngle, steeringWheelAngleConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SteeringWheelAngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "steeringWheelAngleConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SteeringWheelAngle_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* steeringWheelAngleValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* steeringWheelAngleConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SteeringWheelAngle_specs_1 = { + sizeof(struct SteeringWheelAngle), + offsetof(struct SteeringWheelAngle, _asn_ctx), + asn_MAP_SteeringWheelAngle_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngle = { + "SteeringWheelAngle", + "SteeringWheelAngle", + &asn_OP_SEQUENCE, + asn_DEF_SteeringWheelAngle_tags_1, + sizeof(asn_DEF_SteeringWheelAngle_tags_1) + /sizeof(asn_DEF_SteeringWheelAngle_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngle_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngle_tags_1) + /sizeof(asn_DEF_SteeringWheelAngle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_SteeringWheelAngle_1, + 2, /* Elements count */ + &asn_SPC_SteeringWheelAngle_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleConfidence.c new file mode 100644 index 000000000..35942dc68 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SteeringWheelAngleConfidence.h" + +int +SteeringWheelAngleConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringWheelAngleConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringWheelAngleConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleConfidence = { + "SteeringWheelAngleConfidence", + "SteeringWheelAngleConfidence", + &asn_OP_NativeInteger, + asn_DEF_SteeringWheelAngleConfidence_tags_1, + sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringWheelAngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringWheelAngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringWheelAngleConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleValue.c new file mode 100644 index 000000000..6b35eb7cc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SteeringWheelAngleValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SteeringWheelAngleValue.h" + +int +SteeringWheelAngleValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -511 && value <= 512)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SteeringWheelAngleValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-511..512) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SteeringWheelAngleValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, -511, 512 } /* (-511..512) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SteeringWheelAngleValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SteeringWheelAngleValue = { + "SteeringWheelAngleValue", + "SteeringWheelAngleValue", + &asn_OP_NativeInteger, + asn_DEF_SteeringWheelAngleValue_tags_1, + sizeof(asn_DEF_SteeringWheelAngleValue_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleValue_tags_1[0]), /* 1 */ + asn_DEF_SteeringWheelAngleValue_tags_1, /* Same as above */ + sizeof(asn_DEF_SteeringWheelAngleValue_tags_1) + /sizeof(asn_DEF_SteeringWheelAngleValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SteeringWheelAngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SteeringWheelAngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SteeringWheelAngleValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/SubCauseCodeType.c b/etsi_its_coding/etsi_its_cpm_coding/src/SubCauseCodeType.c new file mode 100644 index 000000000..c240ea0f0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/SubCauseCodeType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/SubCauseCodeType.h" + +int +SubCauseCodeType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_SubCauseCodeType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_SubCauseCodeType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_SubCauseCodeType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubCauseCodeType = { + "SubCauseCodeType", + "SubCauseCodeType", + &asn_OP_NativeInteger, + asn_DEF_SubCauseCodeType_tags_1, + sizeof(asn_DEF_SubCauseCodeType_tags_1) + /sizeof(asn_DEF_SubCauseCodeType_tags_1[0]), /* 1 */ + asn_DEF_SubCauseCodeType_tags_1, /* Same as above */ + sizeof(asn_DEF_SubCauseCodeType_tags_1) + /sizeof(asn_DEF_SubCauseCodeType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_SubCauseCodeType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_SubCauseCodeType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SubCauseCodeType_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Temperature.c b/etsi_its_coding/etsi_its_cpm_coding/src/Temperature.c new file mode 100644 index 000000000..e74ff1426 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Temperature.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Temperature.h" + +int +Temperature_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -60 && value <= 67)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Temperature_constr_1 CC_NOTUSED = { + { 1, 0 } /* (-60..67) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Temperature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, -60, 67 } /* (-60..67) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Temperature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Temperature = { + "Temperature", + "Temperature", + &asn_OP_NativeInteger, + asn_DEF_Temperature_tags_1, + sizeof(asn_DEF_Temperature_tags_1) + /sizeof(asn_DEF_Temperature_tags_1[0]), /* 1 */ + asn_DEF_Temperature_tags_1, /* Same as above */ + sizeof(asn_DEF_Temperature_tags_1) + /sizeof(asn_DEF_Temperature_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Temperature_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Temperature_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Temperature_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TimestampIts.c b/etsi_its_coding/etsi_its_cpm_coding/src/TimestampIts.c new file mode 100644 index 000000000..9c0b3703f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TimestampIts.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TimestampIts.h" + +int +TimestampIts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 4398046511103)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TimestampIts_constr_1 CC_NOTUSED = { + { 8, 1 } /* (0..4398046511103) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TimestampIts_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 42, -1, 0, 4398046511103 } /* (0..4398046511103) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TimestampIts_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimestampIts = { + "TimestampIts", + "TimestampIts", + &asn_OP_INTEGER, + asn_DEF_TimestampIts_tags_1, + sizeof(asn_DEF_TimestampIts_tags_1) + /sizeof(asn_DEF_TimestampIts_tags_1[0]), /* 1 */ + asn_DEF_TimestampIts_tags_1, /* Same as above */ + sizeof(asn_DEF_TimestampIts_tags_1) + /sizeof(asn_DEF_TimestampIts_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TimestampIts_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TimestampIts_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TimestampIts_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Traces.c b/etsi_its_coding/etsi_its_cpm_coding/src/Traces.c new file mode 100644 index 000000000..7bfed97f3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Traces.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Traces.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Traces_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..7)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_Traces_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 7 } /* (SIZE(1..7)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_Traces_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Path, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Traces_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Traces_specs_1 = { + sizeof(struct Traces), + offsetof(struct Traces, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Traces = { + "Traces", + "Traces", + &asn_OP_SEQUENCE_OF, + asn_DEF_Traces_tags_1, + sizeof(asn_DEF_Traces_tags_1) + /sizeof(asn_DEF_Traces_tags_1[0]), /* 1 */ + asn_DEF_Traces_tags_1, /* Same as above */ + sizeof(asn_DEF_Traces_tags_1) + /sizeof(asn_DEF_Traces_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Traces_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Traces_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_Traces_1, + 1, /* Single element */ + &asn_SPC_Traces_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrafficConditionSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficConditionSubCauseCode.c new file mode 100644 index 000000000..8f62e25f7 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficConditionSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrafficConditionSubCauseCode.h" + +int +TrafficConditionSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrafficConditionSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrafficConditionSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrafficConditionSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficConditionSubCauseCode = { + "TrafficConditionSubCauseCode", + "TrafficConditionSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_TrafficConditionSubCauseCode_tags_1, + sizeof(asn_DEF_TrafficConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_TrafficConditionSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_TrafficConditionSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficConditionSubCauseCode_tags_1) + /sizeof(asn_DEF_TrafficConditionSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrafficConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrafficConditionSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrafficConditionSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrafficDirection.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficDirection.c new file mode 100644 index 000000000..615f2c2fc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficDirection.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrafficDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrafficDirection_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_TrafficDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TrafficDirection_value2enum_1[] = { + { 0, 20, "allTrafficDirections" }, + { 1, 15, "upstreamTraffic" }, + { 2, 17, "downstreamTraffic" }, + { 3, 15, "oppositeTraffic" } +}; +static const unsigned int asn_MAP_TrafficDirection_enum2value_1[] = { + 0, /* allTrafficDirections(0) */ + 2, /* downstreamTraffic(2) */ + 3, /* oppositeTraffic(3) */ + 1 /* upstreamTraffic(1) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TrafficDirection_specs_1 = { + asn_MAP_TrafficDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TrafficDirection_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TrafficDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficDirection = { + "TrafficDirection", + "TrafficDirection", + &asn_OP_NativeEnumerated, + asn_DEF_TrafficDirection_tags_1, + sizeof(asn_DEF_TrafficDirection_tags_1) + /sizeof(asn_DEF_TrafficDirection_tags_1[0]), /* 1 */ + asn_DEF_TrafficDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficDirection_tags_1) + /sizeof(asn_DEF_TrafficDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrafficDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrafficDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TrafficDirection_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrafficIslandPosition.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficIslandPosition.c new file mode 100644 index 000000000..4444c7c24 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficIslandPosition.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrafficIslandPosition.h" + +asn_TYPE_member_t asn_MBR_TrafficIslandPosition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrafficIslandPosition, oneSide), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LanePositionAndType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "oneSide" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrafficIslandPosition, otherSide), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LanePositionAndType, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "otherSide" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrafficIslandPosition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrafficIslandPosition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneSide */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* otherSide */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrafficIslandPosition_specs_1 = { + sizeof(struct TrafficIslandPosition), + offsetof(struct TrafficIslandPosition, _asn_ctx), + asn_MAP_TrafficIslandPosition_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrafficIslandPosition = { + "TrafficIslandPosition", + "TrafficIslandPosition", + &asn_OP_SEQUENCE, + asn_DEF_TrafficIslandPosition_tags_1, + sizeof(asn_DEF_TrafficIslandPosition_tags_1) + /sizeof(asn_DEF_TrafficIslandPosition_tags_1[0]), /* 1 */ + asn_DEF_TrafficIslandPosition_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficIslandPosition_tags_1) + /sizeof(asn_DEF_TrafficIslandPosition_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrafficIslandPosition_1, + 2, /* Elements count */ + &asn_SPC_TrafficIslandPosition_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrafficParticipantType.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficParticipantType.c new file mode 100644 index 000000000..be8c3370d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficParticipantType.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrafficParticipantType.h" + +int +TrafficParticipantType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrafficParticipantType_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrafficParticipantType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrafficParticipantType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficParticipantType = { + "TrafficParticipantType", + "TrafficParticipantType", + &asn_OP_NativeInteger, + asn_DEF_TrafficParticipantType_tags_1, + sizeof(asn_DEF_TrafficParticipantType_tags_1) + /sizeof(asn_DEF_TrafficParticipantType_tags_1[0]), /* 1 */ + asn_DEF_TrafficParticipantType_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficParticipantType_tags_1) + /sizeof(asn_DEF_TrafficParticipantType_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrafficParticipantType_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrafficParticipantType_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrafficParticipantType_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrafficRule.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficRule.c new file mode 100644 index 000000000..34f133b62 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrafficRule.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrafficRule.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrafficRule_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_TrafficRule_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TrafficRule_value2enum_1[] = { + { 0, 9, "noPassing" }, + { 1, 18, "noPassingForTrucks" }, + { 2, 11, "passToRight" }, + { 3, 10, "passToLeft" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TrafficRule_enum2value_1[] = { + 0, /* noPassing(0) */ + 1, /* noPassingForTrucks(1) */ + 3, /* passToLeft(3) */ + 2 /* passToRight(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TrafficRule_specs_1 = { + asn_MAP_TrafficRule_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TrafficRule_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TrafficRule_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrafficRule = { + "TrafficRule", + "TrafficRule", + &asn_OP_NativeEnumerated, + asn_DEF_TrafficRule_tags_1, + sizeof(asn_DEF_TrafficRule_tags_1) + /sizeof(asn_DEF_TrafficRule_tags_1[0]), /* 1 */ + asn_DEF_TrafficRule_tags_1, /* Same as above */ + sizeof(asn_DEF_TrafficRule_tags_1) + /sizeof(asn_DEF_TrafficRule_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrafficRule_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrafficRule_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TrafficRule_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrailerData.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerData.c new file mode 100644 index 000000000..76f7385fa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerData.c @@ -0,0 +1,158 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrailerData.h" + +asn_TYPE_member_t asn_MBR_TrailerData_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, refPointId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "refPointId" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, hitchPointOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hitchPointOffset" + }, + { ATF_POINTER, 3, offsetof(struct TrailerData, frontOverhang), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "frontOverhang" + }, + { ATF_POINTER, 2, offsetof(struct TrailerData, rearOverhang), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StandardLength1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "rearOverhang" + }, + { ATF_POINTER, 1, offsetof(struct TrailerData, trailerWidth), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleWidth, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerWidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrailerData, hitchAngle), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "hitchAngle" + }, +}; +static const int asn_MAP_TrailerData_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_TrailerData_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrailerData_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* refPointId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hitchPointOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* frontOverhang */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rearOverhang */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* trailerWidth */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* hitchAngle */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrailerData_specs_1 = { + sizeof(struct TrailerData), + offsetof(struct TrailerData, _asn_ctx), + asn_MAP_TrailerData_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_TrailerData_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerData = { + "TrailerData", + "TrailerData", + &asn_OP_SEQUENCE, + asn_DEF_TrailerData_tags_1, + sizeof(asn_DEF_TrailerData_tags_1) + /sizeof(asn_DEF_TrailerData_tags_1[0]), /* 1 */ + asn_DEF_TrailerData_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerData_tags_1) + /sizeof(asn_DEF_TrailerData_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrailerData_1, + 6, /* Elements count */ + &asn_SPC_TrailerData_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrailerDataSet.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerDataSet.c new file mode 100644 index 000000000..06266aa93 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerDataSet.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-OriginatingStationContainers" + * found in "/input/CPM-OriginatingStationContainers.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrailerDataSet.h" + +static int +memb_TrailerData_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_Member_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_Member_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerDataSet_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerDataSet_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (SIZE(1..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_TrailerDataSet_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TrailerData, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_Member_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_Member_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_TrailerData_constraint_1 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TrailerDataSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TrailerDataSet_specs_1 = { + sizeof(struct TrailerDataSet), + offsetof(struct TrailerDataSet, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TrailerDataSet = { + "TrailerDataSet", + "TrailerDataSet", + &asn_OP_SEQUENCE_OF, + asn_DEF_TrailerDataSet_tags_1, + sizeof(asn_DEF_TrailerDataSet_tags_1) + /sizeof(asn_DEF_TrailerDataSet_tags_1[0]), /* 1 */ + asn_DEF_TrailerDataSet_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerDataSet_tags_1) + /sizeof(asn_DEF_TrailerDataSet_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerDataSet_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerDataSet_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_TrailerDataSet_1, + 1, /* Single element */ + &asn_SPC_TrailerDataSet_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrailerPresenceInformation.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerPresenceInformation.c new file mode 100644 index 000000000..c8d1394f1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrailerPresenceInformation.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrailerPresenceInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrailerPresenceInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrailerPresenceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TrailerPresenceInformation_value2enum_1[] = { + { 0, 16, "noTrailerPresent" }, + { 1, 29, "trailerPresentWithKnownLength" }, + { 2, 31, "trailerPresentWithUnknownLength" }, + { 3, 24, "trailerPresenceIsUnknown" }, + { 4, 11, "unavailable" } +}; +static const unsigned int asn_MAP_TrailerPresenceInformation_enum2value_1[] = { + 0, /* noTrailerPresent(0) */ + 3, /* trailerPresenceIsUnknown(3) */ + 1, /* trailerPresentWithKnownLength(1) */ + 2, /* trailerPresentWithUnknownLength(2) */ + 4 /* unavailable(4) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TrailerPresenceInformation_specs_1 = { + asn_MAP_TrailerPresenceInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TrailerPresenceInformation_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TrailerPresenceInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrailerPresenceInformation = { + "TrailerPresenceInformation", + "TrailerPresenceInformation", + &asn_OP_NativeEnumerated, + asn_DEF_TrailerPresenceInformation_tags_1, + sizeof(asn_DEF_TrailerPresenceInformation_tags_1) + /sizeof(asn_DEF_TrailerPresenceInformation_tags_1[0]), /* 1 */ + asn_DEF_TrailerPresenceInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_TrailerPresenceInformation_tags_1) + /sizeof(asn_DEF_TrailerPresenceInformation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrailerPresenceInformation_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrailerPresenceInformation_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TrailerPresenceInformation_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionConfidence.c new file mode 100644 index 000000000..2a3f7e3e8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrajectoryInterceptionConfidence.h" + +int +TrajectoryInterceptionConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrajectoryInterceptionConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..3) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrajectoryInterceptionConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrajectoryInterceptionConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionConfidence = { + "TrajectoryInterceptionConfidence", + "TrajectoryInterceptionConfidence", + &asn_OP_NativeInteger, + asn_DEF_TrajectoryInterceptionConfidence_tags_1, + sizeof(asn_DEF_TrajectoryInterceptionConfidence_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionConfidence_tags_1[0]), /* 1 */ + asn_DEF_TrajectoryInterceptionConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_TrajectoryInterceptionConfidence_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrajectoryInterceptionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrajectoryInterceptionConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrajectoryInterceptionConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionIndication.c new file mode 100644 index 000000000..6b4768b33 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionIndication.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrajectoryInterceptionIndication.h" + +asn_TYPE_member_t asn_MBR_TrajectoryInterceptionIndication_1[] = { + { ATF_POINTER, 1, offsetof(struct TrajectoryInterceptionIndication, subjectStation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_StationId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "subjectStation" + }, + { ATF_NOFLAGS, 0, offsetof(struct TrajectoryInterceptionIndication, trajectoryInterceptionProbability), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrajectoryInterceptionProbability, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trajectoryInterceptionProbability" + }, + { ATF_POINTER, 1, offsetof(struct TrajectoryInterceptionIndication, trajectoryInterceptionConfidence), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrajectoryInterceptionConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trajectoryInterceptionConfidence" + }, +}; +static const int asn_MAP_TrajectoryInterceptionIndication_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_TrajectoryInterceptionIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TrajectoryInterceptionIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subjectStation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trajectoryInterceptionProbability */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* trajectoryInterceptionConfidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TrajectoryInterceptionIndication_specs_1 = { + sizeof(struct TrajectoryInterceptionIndication), + offsetof(struct TrajectoryInterceptionIndication, _asn_ctx), + asn_MAP_TrajectoryInterceptionIndication_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TrajectoryInterceptionIndication_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionIndication = { + "TrajectoryInterceptionIndication", + "TrajectoryInterceptionIndication", + &asn_OP_SEQUENCE, + asn_DEF_TrajectoryInterceptionIndication_tags_1, + sizeof(asn_DEF_TrajectoryInterceptionIndication_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionIndication_tags_1[0]), /* 1 */ + asn_DEF_TrajectoryInterceptionIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_TrajectoryInterceptionIndication_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_TrajectoryInterceptionIndication_1, + 3, /* Elements count */ + &asn_SPC_TrajectoryInterceptionIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionProbability.c b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionProbability.c new file mode 100644 index 000000000..878a28df4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TrajectoryInterceptionProbability.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TrajectoryInterceptionProbability.h" + +int +TrajectoryInterceptionProbability_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TrajectoryInterceptionProbability_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..63) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TrajectoryInterceptionProbability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TrajectoryInterceptionProbability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TrajectoryInterceptionProbability = { + "TrajectoryInterceptionProbability", + "TrajectoryInterceptionProbability", + &asn_OP_NativeInteger, + asn_DEF_TrajectoryInterceptionProbability_tags_1, + sizeof(asn_DEF_TrajectoryInterceptionProbability_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionProbability_tags_1[0]), /* 1 */ + asn_DEF_TrajectoryInterceptionProbability_tags_1, /* Same as above */ + sizeof(asn_DEF_TrajectoryInterceptionProbability_tags_1) + /sizeof(asn_DEF_TrajectoryInterceptionProbability_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TrajectoryInterceptionProbability_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TrajectoryInterceptionProbability_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TrajectoryInterceptionProbability_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TransmissionInterval.c b/etsi_its_coding/etsi_its_cpm_coding/src/TransmissionInterval.c new file mode 100644 index 000000000..7469e9a74 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TransmissionInterval.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TransmissionInterval.h" + +int +TransmissionInterval_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 10000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TransmissionInterval_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..10000) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_TransmissionInterval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 1, 10000 } /* (1..10000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TransmissionInterval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransmissionInterval = { + "TransmissionInterval", + "TransmissionInterval", + &asn_OP_NativeInteger, + asn_DEF_TransmissionInterval_tags_1, + sizeof(asn_DEF_TransmissionInterval_tags_1) + /sizeof(asn_DEF_TransmissionInterval_tags_1[0]), /* 1 */ + asn_DEF_TransmissionInterval_tags_1, /* Same as above */ + sizeof(asn_DEF_TransmissionInterval_tags_1) + /sizeof(asn_DEF_TransmissionInterval_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TransmissionInterval_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TransmissionInterval_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TransmissionInterval_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TurningDirection.c b/etsi_its_coding/etsi_its_cpm_coding/src/TurningDirection.c new file mode 100644 index 000000000..1b3390a45 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TurningDirection.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TurningDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TurningDirection_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_TurningDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_TurningDirection_value2enum_1[] = { + { 0, 4, "left" }, + { 1, 5, "right" } +}; +static const unsigned int asn_MAP_TurningDirection_enum2value_1[] = { + 0, /* left(0) */ + 1 /* right(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TurningDirection_specs_1 = { + asn_MAP_TurningDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TurningDirection_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TurningDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TurningDirection = { + "TurningDirection", + "TurningDirection", + &asn_OP_NativeEnumerated, + asn_DEF_TurningDirection_tags_1, + sizeof(asn_DEF_TurningDirection_tags_1) + /sizeof(asn_DEF_TurningDirection_tags_1[0]), /* 1 */ + asn_DEF_TurningDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_TurningDirection_tags_1) + /sizeof(asn_DEF_TurningDirection_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TurningDirection_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TurningDirection_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TurningDirection_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/TurningRadius.c b/etsi_its_coding/etsi_its_cpm_coding/src/TurningRadius.c new file mode 100644 index 000000000..2e4ade671 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/TurningRadius.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/TurningRadius.h" + +int +TurningRadius_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_TurningRadius_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_TurningRadius_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (1..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_TurningRadius_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TurningRadius = { + "TurningRadius", + "TurningRadius", + &asn_OP_NativeInteger, + asn_DEF_TurningRadius_tags_1, + sizeof(asn_DEF_TurningRadius_tags_1) + /sizeof(asn_DEF_TurningRadius_tags_1[0]), /* 1 */ + asn_DEF_TurningRadius_tags_1, /* Same as above */ + sizeof(asn_DEF_TurningRadius_tags_1) + /sizeof(asn_DEF_TurningRadius_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_TurningRadius_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_TurningRadius_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + TurningRadius_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String.c b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String.c new file mode 100644 index 000000000..585ea0cb6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String.c @@ -0,0 +1,224 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * UTF8String basic type description. + */ +static const ber_tlv_tag_t asn_DEF_UTF8String_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), /* [UNIVERSAL 12] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), /* ... OCTET STRING */ +}; +asn_TYPE_operation_t asn_OP_UTF8String = { + OCTET_STRING_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + UTF8String_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + OCTET_STRING_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + OCTET_STRING_encode_jer_utf8, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + UTF8String_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_UTF8String = { + "UTF8String", + "UTF8String", + &asn_OP_UTF8String, + asn_DEF_UTF8String_tags, + sizeof(asn_DEF_UTF8String_tags) + / sizeof(asn_DEF_UTF8String_tags[0]) - 1, + asn_DEF_UTF8String_tags, + sizeof(asn_DEF_UTF8String_tags) + / sizeof(asn_DEF_UTF8String_tags[0]), + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + UTF8String_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * This is the table of length expectations. + * The second half of this table is only applicable to the long sequences. + */ +static const int UTF8String_ht[2][16] = { + { /* 0x0 ... 0x7 */ + /* 0000..0111 */ + 1, 1, 1, 1, 1, 1, 1, 1, + /* 1000..1011(0), 1100..1101(2), 1110(3), 1111(-1) */ + 0, 0, 0, 0, 2, 2, 3, -1 }, + { /* 0xF0 .. 0xF7 */ + /* 11110000..11110111 */ + 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 6, 6, -1, -1 } +}; +static const int32_t UTF8String_mv[7] = { 0, 0, + 0x00000080, + 0x00000800, + 0x00010000, + 0x00200000, + 0x04000000 +}; + +/* Internal aliases for return codes */ +#define U8E_TRUNC -1 /* UTF-8 sequence truncated */ +#define U8E_ILLSTART -2 /* Illegal UTF-8 sequence start */ +#define U8E_NOTCONT -3 /* Continuation expectation failed */ +#define U8E_NOTMIN -4 /* Not minimal length encoding */ +#define U8E_EINVAL -5 /* Invalid arguments */ + +int +UTF8String_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + ssize_t len = UTF8String_length((const UTF8String_t *)sptr); + switch(len) { + case U8E_EINVAL: + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given", td->name); + break; + case U8E_TRUNC: + ASN__CTFAIL(app_key, td, sptr, + "%s: truncated UTF-8 sequence (%s:%d)", + td->name, __FILE__, __LINE__); + break; + case U8E_ILLSTART: + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8 illegal start of encoding (%s:%d)", + td->name, __FILE__, __LINE__); + break; + case U8E_NOTCONT: + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8 not continuation (%s:%d)", + td->name, __FILE__, __LINE__); + break; + case U8E_NOTMIN: + ASN__CTFAIL(app_key, td, sptr, + "%s: UTF-8 not minimal sequence (%s:%d)", + td->name, __FILE__, __LINE__); + break; + } + return (len < 0) ? -1 : 0; +} + +static ssize_t +UTF8String__process(const UTF8String_t *st, uint32_t *dst, size_t dstlen) { + size_t length = 0; + uint8_t *buf = (st == NULL)? NULL : st->buf; + uint8_t *end = (buf == NULL)? NULL : buf + st->size; + uint32_t *dstend = (dst == NULL)? NULL : dst + dstlen; + + for(length = 0; buf < end; length++) { + int ch = *buf; + uint8_t *cend; + int32_t value; + int want; + + /* Compute the sequence length */ + want = UTF8String_ht[0][ch >> 4]; + switch(want) { + case -1: + /* Second half of the table, long sequence */ + want = UTF8String_ht[1][ch & 0x0F]; + if(want != -1) break; + /* Fall through */ + case 0: + return U8E_ILLSTART; + } + + /* assert(want >= 1 && want <= 6) */ + + /* Check character sequence length */ + if(buf + want > end) return U8E_TRUNC; + + value = ch & (0xff >> want); + cend = buf + want; + for(buf++; buf < cend; buf++) { + ch = *buf; + if(ch < 0x80 || ch > 0xbf) return U8E_NOTCONT; + value = (value << 6) | (ch & 0x3F); + } + if(value < UTF8String_mv[want]) + return U8E_NOTMIN; + if(dst < dstend) + *dst++ = value; /* Record value */ + } + + if(dst < dstend) *dst = 0; /* zero-terminate */ + + return length; +} + + +ssize_t +UTF8String_length(const UTF8String_t *st) { + if(st && st->buf) { + return UTF8String__process(st, 0, 0); + } else { + return U8E_EINVAL; + } +} + +size_t +UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen) { + if(st && st->buf) { + ssize_t ret = UTF8String__process(st, dst, dstlen); + return (ret < 0) ? 0 : ret; + } else { + return 0; + } +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_print.c new file mode 100644 index 000000000..64d7b3c1b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_print.c @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +UTF8String_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const UTF8String_t *st = (const UTF8String_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && st->buf) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_rfill.c new file mode 100644 index 000000000..ff7059b23 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/UTF8String_rfill.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Biased function for randomizing UTF-8 sequences. + */ +static size_t +UTF8String__random_char(uint8_t *b, size_t size) { + static const struct rnd_value { + const char *value; + size_t size; + } values[] = {{"\0", 1}, + {"\x01", 1}, + {"\x7f", 1}, + {"\xc2\xa2", 2}, + {"\xe2\x82\xac", 3}, + {"\xf0\x90\x8d\x88", 4}, + {"\xf4\x8f\xbf\xbf", 4}}; + + const struct rnd_value *v; + size_t max_idx = 0; + + switch(size) { + case 0: + assert(size != 0); + return 0; + case 1: + max_idx = 2; + break; + case 2: + max_idx = 3; + break; + default: + case 4: + max_idx = sizeof(values) / sizeof(values[0]) - 1; + break; + } + + v = &values[asn_random_between(0, max_idx)]; + memcpy(b, v->value, v->size); + return v->size; +} + +asn_random_fill_result_t +UTF8String_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + size_t idx; + UTF8String_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + /* Figure out how far we should go */ + rnd_len = OCTET_STRING_random_length_constrained(td, constraints, + max_length / 4); + + buf = CALLOC(4, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[4 * rnd_len]; + + for(b = buf, idx = 0; idx < rnd_len; idx++) { + b += UTF8String__random_char(b, (bend - b)); + } + *(uint8_t *)b = 0; + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, sizeof(UTF8String_t))); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = b - buf; + + assert(UTF8String_length(st) == (ssize_t)rnd_len); + + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VDS.c b/etsi_its_coding/etsi_its_cpm_coding/src/VDS.c new file mode 100644 index 000000000..5f7e4c7d1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VDS.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VDS.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +VDS_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 6) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VDS_constr_1 CC_NOTUSED = { + { 0, 0 }, + 6 /* (SIZE(6..6)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VDS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VDS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VDS = { + "VDS", + "VDS", + &asn_OP_IA5String, + asn_DEF_VDS_tags_1, + sizeof(asn_DEF_VDS_tags_1) + /sizeof(asn_DEF_VDS_tags_1[0]), /* 1 */ + asn_DEF_VDS_tags_1, /* Same as above */ + sizeof(asn_DEF_VDS_tags_1) + /sizeof(asn_DEF_VDS_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VDS_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VDS_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VDS_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ValidityDuration.c b/etsi_its_coding/etsi_its_cpm_coding/src/ValidityDuration.c new file mode 100644 index 000000000..d850057da --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ValidityDuration.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/ValidityDuration.h" + +int +ValidityDuration_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_ValidityDuration_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..86400) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_ValidityDuration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 0, 86400 } /* (0..86400) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_ValidityDuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ValidityDuration = { + "ValidityDuration", + "ValidityDuration", + &asn_OP_NativeInteger, + asn_DEF_ValidityDuration_tags_1, + sizeof(asn_DEF_ValidityDuration_tags_1) + /sizeof(asn_DEF_ValidityDuration_tags_1[0]), /* 1 */ + asn_DEF_ValidityDuration_tags_1, /* Same as above */ + sizeof(asn_DEF_ValidityDuration_tags_1) + /sizeof(asn_DEF_ValidityDuration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_ValidityDuration_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_ValidityDuration_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + ValidityDuration_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VarLengthNumber.c b/etsi_its_coding/etsi_its_cpm_coding/src/VarLengthNumber.c new file mode 100644 index 000000000..fb8424cd1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VarLengthNumber.c @@ -0,0 +1,130 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VarLengthNumber.h" + +static int +memb_content_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_content_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_content_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VarLengthNumber_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VarLengthNumber_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_VarLengthNumber_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VarLengthNumber, choice.content), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_content_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_content_constraint_1 + }, + 0, 0, /* No default value */ + "content" + }, + { ATF_NOFLAGS, 0, offsetof(struct VarLengthNumber, choice.extension), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Ext1, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "extension" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_VarLengthNumber_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* content */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* extension */ +}; +static asn_CHOICE_specifics_t asn_SPC_VarLengthNumber_specs_1 = { + sizeof(struct VarLengthNumber), + offsetof(struct VarLengthNumber, _asn_ctx), + offsetof(struct VarLengthNumber, present), + sizeof(((struct VarLengthNumber *)0)->present), + asn_MAP_VarLengthNumber_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_VarLengthNumber = { + "VarLengthNumber", + "VarLengthNumber", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VarLengthNumber_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VarLengthNumber_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_VarLengthNumber_1, + 2, /* Elements count */ + &asn_SPC_VarLengthNumber_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleBreakdownSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleBreakdownSubCauseCode.c new file mode 100644 index 000000000..272fc3769 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleBreakdownSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleBreakdownSubCauseCode.h" + +int +VehicleBreakdownSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleBreakdownSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleBreakdownSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleBreakdownSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleBreakdownSubCauseCode = { + "VehicleBreakdownSubCauseCode", + "VehicleBreakdownSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_VehicleBreakdownSubCauseCode_tags_1, + sizeof(asn_DEF_VehicleBreakdownSubCauseCode_tags_1) + /sizeof(asn_DEF_VehicleBreakdownSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_VehicleBreakdownSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleBreakdownSubCauseCode_tags_1) + /sizeof(asn_DEF_VehicleBreakdownSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleBreakdownSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleBreakdownSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleBreakdownSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleHeight.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleHeight.c new file mode 100644 index 000000000..8f754e0e9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleHeight.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleHeight.h" + +int +VehicleHeight_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 128)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleHeight_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..128) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VehicleHeight_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 128 } /* (1..128) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleHeight_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleHeight = { + "VehicleHeight", + "VehicleHeight", + &asn_OP_NativeInteger, + asn_DEF_VehicleHeight_tags_1, + sizeof(asn_DEF_VehicleHeight_tags_1) + /sizeof(asn_DEF_VehicleHeight_tags_1[0]), /* 1 */ + asn_DEF_VehicleHeight_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleHeight_tags_1) + /sizeof(asn_DEF_VehicleHeight_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleHeight_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleHeight_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleHeight_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleIdentification.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleIdentification.c new file mode 100644 index 000000000..87d9d651c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleIdentification.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleIdentification.h" + +static asn_TYPE_member_t asn_MBR_VehicleIdentification_1[] = { + { ATF_POINTER, 2, offsetof(struct VehicleIdentification, wMInumber), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WMInumber, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "wMInumber" + }, + { ATF_POINTER, 1, offsetof(struct VehicleIdentification, vDS), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VDS, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vDS" + }, +}; +static const int asn_MAP_VehicleIdentification_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_VehicleIdentification_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleIdentification_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wMInumber */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* vDS */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_VehicleIdentification_specs_1 = { + sizeof(struct VehicleIdentification), + offsetof(struct VehicleIdentification, _asn_ctx), + asn_MAP_VehicleIdentification_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_VehicleIdentification_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleIdentification = { + "VehicleIdentification", + "VehicleIdentification", + &asn_OP_SEQUENCE, + asn_DEF_VehicleIdentification_tags_1, + sizeof(asn_DEF_VehicleIdentification_tags_1) + /sizeof(asn_DEF_VehicleIdentification_tags_1[0]), /* 1 */ + asn_DEF_VehicleIdentification_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleIdentification_tags_1) + /sizeof(asn_DEF_VehicleIdentification_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleIdentification_1, + 2, /* Elements count */ + &asn_SPC_VehicleIdentification_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLength.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLength.c new file mode 100644 index 000000000..036a84ca5 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLength.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleLength.h" + +static asn_TYPE_member_t asn_MBR_VehicleLength_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleLength, vehicleLengthValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleLengthValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleLengthValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleLength, vehicleLengthConfidenceIndication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleLengthConfidenceIndication, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleLengthConfidenceIndication" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleLength_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleLengthValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* vehicleLengthConfidenceIndication */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_VehicleLength_specs_1 = { + sizeof(struct VehicleLength), + offsetof(struct VehicleLength, _asn_ctx), + asn_MAP_VehicleLength_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleLength = { + "VehicleLength", + "VehicleLength", + &asn_OP_SEQUENCE, + asn_DEF_VehicleLength_tags_1, + sizeof(asn_DEF_VehicleLength_tags_1) + /sizeof(asn_DEF_VehicleLength_tags_1[0]), /* 1 */ + asn_DEF_VehicleLength_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleLength_tags_1) + /sizeof(asn_DEF_VehicleLength_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleLength_1, + 2, /* Elements count */ + &asn_SPC_VehicleLength_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthConfidenceIndication.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthConfidenceIndication.c new file mode 100644 index 000000000..377dac4d9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthConfidenceIndication.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleLengthConfidenceIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleLengthConfidenceIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleLengthConfidenceIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VehicleLengthConfidenceIndication_value2enum_1[] = { + { 0, 16, "noTrailerPresent" }, + { 1, 29, "trailerPresentWithKnownLength" }, + { 2, 31, "trailerPresentWithUnknownLength" }, + { 3, 24, "trailerPresenceIsUnknown" }, + { 4, 11, "unavailable" } +}; +static const unsigned int asn_MAP_VehicleLengthConfidenceIndication_enum2value_1[] = { + 0, /* noTrailerPresent(0) */ + 3, /* trailerPresenceIsUnknown(3) */ + 1, /* trailerPresentWithKnownLength(1) */ + 2, /* trailerPresentWithUnknownLength(2) */ + 4 /* unavailable(4) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleLengthConfidenceIndication_specs_1 = { + asn_MAP_VehicleLengthConfidenceIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleLengthConfidenceIndication_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleLengthConfidenceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleLengthConfidenceIndication = { + "VehicleLengthConfidenceIndication", + "VehicleLengthConfidenceIndication", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleLengthConfidenceIndication_tags_1, + sizeof(asn_DEF_VehicleLengthConfidenceIndication_tags_1) + /sizeof(asn_DEF_VehicleLengthConfidenceIndication_tags_1[0]), /* 1 */ + asn_DEF_VehicleLengthConfidenceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleLengthConfidenceIndication_tags_1) + /sizeof(asn_DEF_VehicleLengthConfidenceIndication_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleLengthConfidenceIndication_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleLengthConfidenceIndication_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleLengthConfidenceIndication_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthV2.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthV2.c new file mode 100644 index 000000000..776fe8177 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthV2.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleLengthV2.h" + +static asn_TYPE_member_t asn_MBR_VehicleLengthV2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VehicleLengthV2, vehicleLengthValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleLengthValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicleLengthValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct VehicleLengthV2, trailerPresenceInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TrailerPresenceInformation, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "trailerPresenceInformation" + }, +}; +static const ber_tlv_tag_t asn_DEF_VehicleLengthV2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VehicleLengthV2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleLengthValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* trailerPresenceInformation */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_VehicleLengthV2_specs_1 = { + sizeof(struct VehicleLengthV2), + offsetof(struct VehicleLengthV2, _asn_ctx), + asn_MAP_VehicleLengthV2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VehicleLengthV2 = { + "VehicleLengthV2", + "VehicleLengthV2", + &asn_OP_SEQUENCE, + asn_DEF_VehicleLengthV2_tags_1, + sizeof(asn_DEF_VehicleLengthV2_tags_1) + /sizeof(asn_DEF_VehicleLengthV2_tags_1[0]), /* 1 */ + asn_DEF_VehicleLengthV2_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleLengthV2_tags_1) + /sizeof(asn_DEF_VehicleLengthV2_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VehicleLengthV2_1, + 2, /* Elements count */ + &asn_SPC_VehicleLengthV2_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthValue.c new file mode 100644 index 000000000..ce91855a6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleLengthValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleLengthValue.h" + +int +VehicleLengthValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleLengthValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..1023) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleLengthValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 1, 1023 } /* (1..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleLengthValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleLengthValue = { + "VehicleLengthValue", + "VehicleLengthValue", + &asn_OP_NativeInteger, + asn_DEF_VehicleLengthValue_tags_1, + sizeof(asn_DEF_VehicleLengthValue_tags_1) + /sizeof(asn_DEF_VehicleLengthValue_tags_1[0]), /* 1 */ + asn_DEF_VehicleLengthValue_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleLengthValue_tags_1) + /sizeof(asn_DEF_VehicleLengthValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleLengthValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleLengthValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleLengthValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleMass.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleMass.c new file mode 100644 index 000000000..c5967f046 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleMass.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleMass.h" + +int +VehicleMass_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1024)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleMass_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..1024) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VehicleMass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (1..1024) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleMass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleMass = { + "VehicleMass", + "VehicleMass", + &asn_OP_NativeInteger, + asn_DEF_VehicleMass_tags_1, + sizeof(asn_DEF_VehicleMass_tags_1) + /sizeof(asn_DEF_VehicleMass_tags_1[0]), /* 1 */ + asn_DEF_VehicleMass_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleMass_tags_1) + /sizeof(asn_DEF_VehicleMass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleMass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleMass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleMass_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleRole.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleRole.c new file mode 100644 index 000000000..77cd9d334 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleRole.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleRole.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleRole_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VehicleRole_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VehicleRole_value2enum_1[] = { + { 0, 7, "default" }, + { 1, 15, "publicTransport" }, + { 2, 16, "specialTransport" }, + { 3, 14, "dangerousGoods" }, + { 4, 8, "roadWork" }, + { 5, 6, "rescue" }, + { 6, 9, "emergency" }, + { 7, 9, "safetyCar" }, + { 8, 11, "agriculture" }, + { 9, 10, "commercial" }, + { 10, 8, "military" }, + { 11, 12, "roadOperator" }, + { 12, 4, "taxi" }, + { 13, 9, "reserved1" }, + { 14, 9, "reserved2" }, + { 15, 9, "reserved3" } +}; +static const unsigned int asn_MAP_VehicleRole_enum2value_1[] = { + 8, /* agriculture(8) */ + 9, /* commercial(9) */ + 3, /* dangerousGoods(3) */ + 0, /* default(0) */ + 6, /* emergency(6) */ + 10, /* military(10) */ + 1, /* publicTransport(1) */ + 5, /* rescue(5) */ + 13, /* reserved1(13) */ + 14, /* reserved2(14) */ + 15, /* reserved3(15) */ + 11, /* roadOperator(11) */ + 4, /* roadWork(4) */ + 7, /* safetyCar(7) */ + 2, /* specialTransport(2) */ + 12 /* taxi(12) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_VehicleRole_specs_1 = { + asn_MAP_VehicleRole_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleRole_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleRole_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleRole = { + "VehicleRole", + "VehicleRole", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleRole_tags_1, + sizeof(asn_DEF_VehicleRole_tags_1) + /sizeof(asn_DEF_VehicleRole_tags_1[0]), /* 1 */ + asn_DEF_VehicleRole_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleRole_tags_1) + /sizeof(asn_DEF_VehicleRole_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleRole_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleRole_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleRole_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VehicleWidth.c b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleWidth.c new file mode 100644 index 000000000..63fe53bb2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VehicleWidth.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VehicleWidth.h" + +int +VehicleWidth_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 62)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VehicleWidth_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..62) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VehicleWidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 1, 62 } /* (1..62) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VehicleWidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleWidth = { + "VehicleWidth", + "VehicleWidth", + &asn_OP_NativeInteger, + asn_DEF_VehicleWidth_tags_1, + sizeof(asn_DEF_VehicleWidth_tags_1) + /sizeof(asn_DEF_VehicleWidth_tags_1[0]), /* 1 */ + asn_DEF_VehicleWidth_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleWidth_tags_1) + /sizeof(asn_DEF_VehicleWidth_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VehicleWidth_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VehicleWidth_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VehicleWidth_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Velocity3dWithConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/Velocity3dWithConfidence.c new file mode 100644 index 000000000..16e8a85cd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Velocity3dWithConfidence.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Velocity3dWithConfidence.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Velocity3dWithConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Velocity3dWithConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_Velocity3dWithConfidence_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Velocity3dWithConfidence, choice.polarVelocity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityPolarWithZ, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "polarVelocity" + }, + { ATF_NOFLAGS, 0, offsetof(struct Velocity3dWithConfidence, choice.cartesianVelocity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityCartesian, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "cartesianVelocity" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Velocity3dWithConfidence_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* polarVelocity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cartesianVelocity */ +}; +asn_CHOICE_specifics_t asn_SPC_Velocity3dWithConfidence_specs_1 = { + sizeof(struct Velocity3dWithConfidence), + offsetof(struct Velocity3dWithConfidence, _asn_ctx), + offsetof(struct Velocity3dWithConfidence, present), + sizeof(((struct Velocity3dWithConfidence *)0)->present), + asn_MAP_Velocity3dWithConfidence_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Velocity3dWithConfidence = { + "Velocity3dWithConfidence", + "Velocity3dWithConfidence", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Velocity3dWithConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Velocity3dWithConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_Velocity3dWithConfidence_1, + 2, /* Elements count */ + &asn_SPC_Velocity3dWithConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VelocityCartesian.c b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityCartesian.c new file mode 100644 index 000000000..b603a46eb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityCartesian.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VelocityCartesian.h" + +asn_TYPE_member_t asn_MBR_VelocityCartesian_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VelocityCartesian, xVelocity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "xVelocity" + }, + { ATF_NOFLAGS, 0, offsetof(struct VelocityCartesian, yVelocity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yVelocity" + }, + { ATF_POINTER, 1, offsetof(struct VelocityCartesian, zVelocity), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zVelocity" + }, +}; +static const int asn_MAP_VelocityCartesian_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_VelocityCartesian_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VelocityCartesian_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* xVelocity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* yVelocity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zVelocity */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VelocityCartesian_specs_1 = { + sizeof(struct VelocityCartesian), + offsetof(struct VelocityCartesian, _asn_ctx), + asn_MAP_VelocityCartesian_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_VelocityCartesian_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VelocityCartesian = { + "VelocityCartesian", + "VelocityCartesian", + &asn_OP_SEQUENCE, + asn_DEF_VelocityCartesian_tags_1, + sizeof(asn_DEF_VelocityCartesian_tags_1) + /sizeof(asn_DEF_VelocityCartesian_tags_1[0]), /* 1 */ + asn_DEF_VelocityCartesian_tags_1, /* Same as above */ + sizeof(asn_DEF_VelocityCartesian_tags_1) + /sizeof(asn_DEF_VelocityCartesian_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VelocityCartesian_1, + 3, /* Elements count */ + &asn_SPC_VelocityCartesian_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponent.c b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponent.c new file mode 100644 index 000000000..738598978 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponent.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VelocityComponent.h" + +asn_TYPE_member_t asn_MBR_VelocityComponent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VelocityComponent, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityComponentValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct VelocityComponent, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpeedConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_VelocityComponent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VelocityComponent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VelocityComponent_specs_1 = { + sizeof(struct VelocityComponent), + offsetof(struct VelocityComponent, _asn_ctx), + asn_MAP_VelocityComponent_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VelocityComponent = { + "VelocityComponent", + "VelocityComponent", + &asn_OP_SEQUENCE, + asn_DEF_VelocityComponent_tags_1, + sizeof(asn_DEF_VelocityComponent_tags_1) + /sizeof(asn_DEF_VelocityComponent_tags_1[0]), /* 1 */ + asn_DEF_VelocityComponent_tags_1, /* Same as above */ + sizeof(asn_DEF_VelocityComponent_tags_1) + /sizeof(asn_DEF_VelocityComponent_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VelocityComponent_1, + 2, /* Elements count */ + &asn_SPC_VelocityComponent_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponentValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponentValue.c new file mode 100644 index 000000000..e4e8f6a79 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityComponentValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VelocityComponentValue.h" + +int +VelocityComponentValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -16383 && value <= 16383)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VelocityComponentValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-16383..16383) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VelocityComponentValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, -16383, 16383 } /* (-16383..16383) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VelocityComponentValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VelocityComponentValue = { + "VelocityComponentValue", + "VelocityComponentValue", + &asn_OP_NativeInteger, + asn_DEF_VelocityComponentValue_tags_1, + sizeof(asn_DEF_VelocityComponentValue_tags_1) + /sizeof(asn_DEF_VelocityComponentValue_tags_1[0]), /* 1 */ + asn_DEF_VelocityComponentValue_tags_1, /* Same as above */ + sizeof(asn_DEF_VelocityComponentValue_tags_1) + /sizeof(asn_DEF_VelocityComponentValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VelocityComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VelocityComponentValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VelocityComponentValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VelocityPolarWithZ.c b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityPolarWithZ.c new file mode 100644 index 000000000..d99220f72 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VelocityPolarWithZ.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VelocityPolarWithZ.h" + +asn_TYPE_member_t asn_MBR_VelocityPolarWithZ_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VelocityPolarWithZ, velocityMagnitude), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Speed, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "velocityMagnitude" + }, + { ATF_NOFLAGS, 0, offsetof(struct VelocityPolarWithZ, velocityDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CartesianAngle, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "velocityDirection" + }, + { ATF_POINTER, 1, offsetof(struct VelocityPolarWithZ, zVelocity), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VelocityComponent, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "zVelocity" + }, +}; +static const int asn_MAP_VelocityPolarWithZ_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_VelocityPolarWithZ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VelocityPolarWithZ_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* velocityMagnitude */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* velocityDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* zVelocity */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VelocityPolarWithZ_specs_1 = { + sizeof(struct VelocityPolarWithZ), + offsetof(struct VelocityPolarWithZ, _asn_ctx), + asn_MAP_VelocityPolarWithZ_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_VelocityPolarWithZ_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VelocityPolarWithZ = { + "VelocityPolarWithZ", + "VelocityPolarWithZ", + &asn_OP_SEQUENCE, + asn_DEF_VelocityPolarWithZ_tags_1, + sizeof(asn_DEF_VelocityPolarWithZ_tags_1) + /sizeof(asn_DEF_VelocityPolarWithZ_tags_1[0]), /* 1 */ + asn_DEF_VelocityPolarWithZ_tags_1, /* Same as above */ + sizeof(asn_DEF_VelocityPolarWithZ_tags_1) + /sizeof(asn_DEF_VelocityPolarWithZ_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VelocityPolarWithZ_1, + 3, /* Elements count */ + &asn_SPC_VelocityPolarWithZ_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAcceleration.c b/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAcceleration.c new file mode 100644 index 000000000..ca0f02209 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAcceleration.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VerticalAcceleration.h" + +static asn_TYPE_member_t asn_MBR_VerticalAcceleration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VerticalAcceleration, verticalAccelerationValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VerticalAccelerationValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalAccelerationValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct VerticalAcceleration, verticalAccelerationConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AccelerationConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "verticalAccelerationConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_VerticalAcceleration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VerticalAcceleration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* verticalAccelerationValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* verticalAccelerationConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_VerticalAcceleration_specs_1 = { + sizeof(struct VerticalAcceleration), + offsetof(struct VerticalAcceleration, _asn_ctx), + asn_MAP_VerticalAcceleration_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VerticalAcceleration = { + "VerticalAcceleration", + "VerticalAcceleration", + &asn_OP_SEQUENCE, + asn_DEF_VerticalAcceleration_tags_1, + sizeof(asn_DEF_VerticalAcceleration_tags_1) + /sizeof(asn_DEF_VerticalAcceleration_tags_1[0]), /* 1 */ + asn_DEF_VerticalAcceleration_tags_1, /* Same as above */ + sizeof(asn_DEF_VerticalAcceleration_tags_1) + /sizeof(asn_DEF_VerticalAcceleration_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VerticalAcceleration_1, + 2, /* Elements count */ + &asn_SPC_VerticalAcceleration_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAccelerationValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAccelerationValue.c new file mode 100644 index 000000000..c041ed0bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VerticalAccelerationValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VerticalAccelerationValue.h" + +int +VerticalAccelerationValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -160 && value <= 161)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VerticalAccelerationValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-160..161) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VerticalAccelerationValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 9, 9, -160, 161 } /* (-160..161) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VerticalAccelerationValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VerticalAccelerationValue = { + "VerticalAccelerationValue", + "VerticalAccelerationValue", + &asn_OP_NativeInteger, + asn_DEF_VerticalAccelerationValue_tags_1, + sizeof(asn_DEF_VerticalAccelerationValue_tags_1) + /sizeof(asn_DEF_VerticalAccelerationValue_tags_1[0]), /* 1 */ + asn_DEF_VerticalAccelerationValue_tags_1, /* Same as above */ + sizeof(asn_DEF_VerticalAccelerationValue_tags_1) + /sizeof(asn_DEF_VerticalAccelerationValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VerticalAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VerticalAccelerationValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VerticalAccelerationValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterInformation.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterInformation.c new file mode 100644 index 000000000..8e0e8ad09 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterInformation.c @@ -0,0 +1,153 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruClusterInformation.h" + +static int +memb_clusterBoundingBoxShape_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_clusterBoundingBoxShape_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_clusterBoundingBoxShape_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VruClusterInformation_1[] = { + { ATF_POINTER, 2, offsetof(struct VruClusterInformation, clusterId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Identifier1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterId" + }, + { ATF_POINTER, 1, offsetof(struct VruClusterInformation, clusterBoundingBoxShape), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Shape, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_clusterBoundingBoxShape_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_clusterBoundingBoxShape_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_clusterBoundingBoxShape_constraint_1 + }, + 0, 0, /* No default value */ + "clusterBoundingBoxShape" + }, + { ATF_NOFLAGS, 0, offsetof(struct VruClusterInformation, clusterCardinalitySize), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CardinalNumber1B, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterCardinalitySize" + }, + { ATF_POINTER, 1, offsetof(struct VruClusterInformation, clusterProfiles), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruClusterProfiles, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "clusterProfiles" + }, +}; +static const int asn_MAP_VruClusterInformation_oms_1[] = { 0, 1, 3 }; +static const ber_tlv_tag_t asn_DEF_VruClusterInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VruClusterInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* clusterId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* clusterBoundingBoxShape */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* clusterCardinalitySize */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* clusterProfiles */ +}; +asn_SEQUENCE_specifics_t asn_SPC_VruClusterInformation_specs_1 = { + sizeof(struct VruClusterInformation), + offsetof(struct VruClusterInformation, _asn_ctx), + asn_MAP_VruClusterInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_VruClusterInformation_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VruClusterInformation = { + "VruClusterInformation", + "VruClusterInformation", + &asn_OP_SEQUENCE, + asn_DEF_VruClusterInformation_tags_1, + sizeof(asn_DEF_VruClusterInformation_tags_1) + /sizeof(asn_DEF_VruClusterInformation_tags_1[0]), /* 1 */ + asn_DEF_VruClusterInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_VruClusterInformation_tags_1) + /sizeof(asn_DEF_VruClusterInformation_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VruClusterInformation_1, + 4, /* Elements count */ + &asn_SPC_VruClusterInformation_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterProfiles.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterProfiles.c new file mode 100644 index 000000000..e63beae7b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruClusterProfiles.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruClusterProfiles.h" + +int +VruClusterProfiles_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruClusterProfiles_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruClusterProfiles_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VruClusterProfiles_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruClusterProfiles = { + "VruClusterProfiles", + "VruClusterProfiles", + &asn_OP_BIT_STRING, + asn_DEF_VruClusterProfiles_tags_1, + sizeof(asn_DEF_VruClusterProfiles_tags_1) + /sizeof(asn_DEF_VruClusterProfiles_tags_1[0]), /* 1 */ + asn_DEF_VruClusterProfiles_tags_1, /* Same as above */ + sizeof(asn_DEF_VruClusterProfiles_tags_1) + /sizeof(asn_DEF_VruClusterProfiles_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruClusterProfiles_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruClusterProfiles_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VruClusterProfiles_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruDeviceUsage.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruDeviceUsage.c new file mode 100644 index 000000000..ba1081c59 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruDeviceUsage.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruDeviceUsage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruDeviceUsage_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VruDeviceUsage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 9 } /* (0..9) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruDeviceUsage_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 5, "other" }, + { 2, 4, "idle" }, + { 3, 16, "listeningToAudio" }, + { 4, 6, "typing" }, + { 5, 7, "calling" }, + { 6, 12, "playingGames" }, + { 7, 7, "reading" }, + { 8, 7, "viewing" }, + { 255, 3, "max" } +}; +static const unsigned int asn_MAP_VruDeviceUsage_enum2value_1[] = { + 5, /* calling(5) */ + 2, /* idle(2) */ + 3, /* listeningToAudio(3) */ + 9, /* max(255) */ + 1, /* other(1) */ + 6, /* playingGames(6) */ + 7, /* reading(7) */ + 4, /* typing(4) */ + 0, /* unavailable(0) */ + 8 /* viewing(8) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_VruDeviceUsage_specs_1 = { + asn_MAP_VruDeviceUsage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruDeviceUsage_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruDeviceUsage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruDeviceUsage = { + "VruDeviceUsage", + "VruDeviceUsage", + &asn_OP_NativeEnumerated, + asn_DEF_VruDeviceUsage_tags_1, + sizeof(asn_DEF_VruDeviceUsage_tags_1) + /sizeof(asn_DEF_VruDeviceUsage_tags_1[0]), /* 1 */ + asn_DEF_VruDeviceUsage_tags_1, /* Same as above */ + sizeof(asn_DEF_VruDeviceUsage_tags_1) + /sizeof(asn_DEF_VruDeviceUsage_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruDeviceUsage_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruDeviceUsage_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruDeviceUsage_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruEnvironment.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruEnvironment.c new file mode 100644 index 000000000..bbf58df62 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruEnvironment.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruEnvironment.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruEnvironment_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VruEnvironment_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 6 } /* (0..6) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruEnvironment_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 20, "intersectionCrossing" }, + { 2, 13, "zebraCrossing" }, + { 3, 8, "sidewalk" }, + { 4, 13, "onVehicleRoad" }, + { 5, 23, "protectedGeographicArea" }, + { 255, 3, "max" } +}; +static const unsigned int asn_MAP_VruEnvironment_enum2value_1[] = { + 1, /* intersectionCrossing(1) */ + 6, /* max(255) */ + 4, /* onVehicleRoad(4) */ + 5, /* protectedGeographicArea(5) */ + 3, /* sidewalk(3) */ + 0, /* unavailable(0) */ + 2 /* zebraCrossing(2) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_VruEnvironment_specs_1 = { + asn_MAP_VruEnvironment_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruEnvironment_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruEnvironment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruEnvironment = { + "VruEnvironment", + "VruEnvironment", + &asn_OP_NativeEnumerated, + asn_DEF_VruEnvironment_tags_1, + sizeof(asn_DEF_VruEnvironment_tags_1) + /sizeof(asn_DEF_VruEnvironment_tags_1[0]), /* 1 */ + asn_DEF_VruEnvironment_tags_1, /* Same as above */ + sizeof(asn_DEF_VruEnvironment_tags_1) + /sizeof(asn_DEF_VruEnvironment_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruEnvironment_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruEnvironment_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruEnvironment_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruExteriorLights.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruExteriorLights.c new file mode 100644 index 000000000..f54d00da8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruExteriorLights.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruExteriorLights.h" + +static asn_TYPE_member_t asn_MBR_VruExteriorLights_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VruExteriorLights, vehicular), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExteriorLights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vehicular" + }, + { ATF_NOFLAGS, 0, offsetof(struct VruExteriorLights, vruSpecific), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruSpecificExteriorLights, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "vruSpecific" + }, +}; +static const ber_tlv_tag_t asn_DEF_VruExteriorLights_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_VruExteriorLights_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicular */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* vruSpecific */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_VruExteriorLights_specs_1 = { + sizeof(struct VruExteriorLights), + offsetof(struct VruExteriorLights, _asn_ctx), + asn_MAP_VruExteriorLights_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_VruExteriorLights = { + "VruExteriorLights", + "VruExteriorLights", + &asn_OP_SEQUENCE, + asn_DEF_VruExteriorLights_tags_1, + sizeof(asn_DEF_VruExteriorLights_tags_1) + /sizeof(asn_DEF_VruExteriorLights_tags_1[0]), /* 1 */ + asn_DEF_VruExteriorLights_tags_1, /* Same as above */ + sizeof(asn_DEF_VruExteriorLights_tags_1) + /sizeof(asn_DEF_VruExteriorLights_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_VruExteriorLights_1, + 2, /* Elements count */ + &asn_SPC_VruExteriorLights_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruMovementControl.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruMovementControl.c new file mode 100644 index 000000000..3e9ed57c3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruMovementControl.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruMovementControl.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruMovementControl_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VruMovementControl_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruMovementControl_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 7, "braking" }, + { 2, 11, "hardBraking" }, + { 3, 12, "stopPedaling" }, + { 4, 22, "brakingAndStopPedaling" }, + { 5, 26, "hardBrakingAndStopPedaling" }, + { 6, 10, "noReaction" }, + { 255, 3, "max" } +}; +static const unsigned int asn_MAP_VruMovementControl_enum2value_1[] = { + 1, /* braking(1) */ + 4, /* brakingAndStopPedaling(4) */ + 2, /* hardBraking(2) */ + 5, /* hardBrakingAndStopPedaling(5) */ + 7, /* max(255) */ + 6, /* noReaction(6) */ + 3, /* stopPedaling(3) */ + 0 /* unavailable(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_VruMovementControl_specs_1 = { + asn_MAP_VruMovementControl_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruMovementControl_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruMovementControl_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruMovementControl = { + "VruMovementControl", + "VruMovementControl", + &asn_OP_NativeEnumerated, + asn_DEF_VruMovementControl_tags_1, + sizeof(asn_DEF_VruMovementControl_tags_1) + /sizeof(asn_DEF_VruMovementControl_tags_1[0]), /* 1 */ + asn_DEF_VruMovementControl_tags_1, /* Same as above */ + sizeof(asn_DEF_VruMovementControl_tags_1) + /sizeof(asn_DEF_VruMovementControl_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruMovementControl_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruMovementControl_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruMovementControl_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruProfileAndSubprofile.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruProfileAndSubprofile.c new file mode 100644 index 000000000..2785c2d0c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruProfileAndSubprofile.c @@ -0,0 +1,129 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruProfileAndSubprofile.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruProfileAndSubprofile_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruProfileAndSubprofile_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_VruProfileAndSubprofile_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct VruProfileAndSubprofile, choice.pedestrian), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruSubProfilePedestrian, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "pedestrian" + }, + { ATF_NOFLAGS, 0, offsetof(struct VruProfileAndSubprofile, choice.bicyclistAndLightVruVehicle), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruSubProfileBicyclist, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "bicyclistAndLightVruVehicle" + }, + { ATF_NOFLAGS, 0, offsetof(struct VruProfileAndSubprofile, choice.motorcyclist), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruSubProfileMotorcyclist, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "motorcyclist" + }, + { ATF_NOFLAGS, 0, offsetof(struct VruProfileAndSubprofile, choice.animal), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VruSubProfileAnimal, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "animal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_VruProfileAndSubprofile_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pedestrian */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bicyclistAndLightVruVehicle */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* motorcyclist */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* animal */ +}; +asn_CHOICE_specifics_t asn_SPC_VruProfileAndSubprofile_specs_1 = { + sizeof(struct VruProfileAndSubprofile), + offsetof(struct VruProfileAndSubprofile, _asn_ctx), + offsetof(struct VruProfileAndSubprofile, present), + sizeof(((struct VruProfileAndSubprofile *)0)->present), + asn_MAP_VruProfileAndSubprofile_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_VruProfileAndSubprofile = { + "VruProfileAndSubprofile", + "VruProfileAndSubprofile", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruProfileAndSubprofile_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruProfileAndSubprofile_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + CHOICE_constraint + }, + asn_MBR_VruProfileAndSubprofile_1, + 4, /* Elements count */ + &asn_SPC_VruProfileAndSubprofile_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSizeClass.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSizeClass.c new file mode 100644 index 000000000..78152456b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSizeClass.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSizeClass.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSizeClass_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_VruSizeClass_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruSizeClass_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 3, "low" }, + { 2, 6, "medium" }, + { 3, 4, "high" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_VruSizeClass_enum2value_1[] = { + 3, /* high(3) */ + 1, /* low(1) */ + 4, /* max(15) */ + 2, /* medium(2) */ + 0 /* unavailable(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_VruSizeClass_specs_1 = { + asn_MAP_VruSizeClass_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruSizeClass_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruSizeClass_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSizeClass = { + "VruSizeClass", + "VruSizeClass", + &asn_OP_NativeEnumerated, + asn_DEF_VruSizeClass_tags_1, + sizeof(asn_DEF_VruSizeClass_tags_1) + /sizeof(asn_DEF_VruSizeClass_tags_1[0]), /* 1 */ + asn_DEF_VruSizeClass_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSizeClass_tags_1) + /sizeof(asn_DEF_VruSizeClass_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSizeClass_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSizeClass_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruSizeClass_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSpecificExteriorLights.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSpecificExteriorLights.c new file mode 100644 index 000000000..f1a00b6be --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSpecificExteriorLights.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSpecificExteriorLights.h" + +int +VruSpecificExteriorLights_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSpecificExteriorLights_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruSpecificExteriorLights_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_VruSpecificExteriorLights_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSpecificExteriorLights = { + "VruSpecificExteriorLights", + "VruSpecificExteriorLights", + &asn_OP_BIT_STRING, + asn_DEF_VruSpecificExteriorLights_tags_1, + sizeof(asn_DEF_VruSpecificExteriorLights_tags_1) + /sizeof(asn_DEF_VruSpecificExteriorLights_tags_1[0]), /* 1 */ + asn_DEF_VruSpecificExteriorLights_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSpecificExteriorLights_tags_1) + /sizeof(asn_DEF_VruSpecificExteriorLights_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSpecificExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSpecificExteriorLights_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + VruSpecificExteriorLights_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileAnimal.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileAnimal.c new file mode 100644 index 000000000..28b421d93 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileAnimal.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSubProfileAnimal.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSubProfileAnimal_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruSubProfileAnimal_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruSubProfileAnimal_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 11, "wild-animal" }, + { 2, 11, "farm-animal" }, + { 3, 14, "service-animal" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_VruSubProfileAnimal_enum2value_1[] = { + 2, /* farm-animal(2) */ + 4, /* max(15) */ + 3, /* service-animal(3) */ + 0, /* unavailable(0) */ + 1 /* wild-animal(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VruSubProfileAnimal_specs_1 = { + asn_MAP_VruSubProfileAnimal_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruSubProfileAnimal_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruSubProfileAnimal_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSubProfileAnimal = { + "VruSubProfileAnimal", + "VruSubProfileAnimal", + &asn_OP_NativeEnumerated, + asn_DEF_VruSubProfileAnimal_tags_1, + sizeof(asn_DEF_VruSubProfileAnimal_tags_1) + /sizeof(asn_DEF_VruSubProfileAnimal_tags_1[0]), /* 1 */ + asn_DEF_VruSubProfileAnimal_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSubProfileAnimal_tags_1) + /sizeof(asn_DEF_VruSubProfileAnimal_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSubProfileAnimal_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSubProfileAnimal_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruSubProfileAnimal_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileBicyclist.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileBicyclist.c new file mode 100644 index 000000000..1fb045304 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileBicyclist.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSubProfileBicyclist.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSubProfileBicyclist_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruSubProfileBicyclist_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 9 } /* (0..9) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruSubProfileBicyclist_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 9, "bicyclist" }, + { 2, 15, "wheelchair-user" }, + { 3, 15, "horse-and-rider" }, + { 4, 12, "rollerskater" }, + { 5, 9, "e-scooter" }, + { 6, 20, "personal-transporter" }, + { 7, 7, "pedelec" }, + { 8, 13, "speed-pedelec" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_VruSubProfileBicyclist_enum2value_1[] = { + 1, /* bicyclist(1) */ + 5, /* e-scooter(5) */ + 3, /* horse-and-rider(3) */ + 9, /* max(15) */ + 7, /* pedelec(7) */ + 6, /* personal-transporter(6) */ + 4, /* rollerskater(4) */ + 8, /* speed-pedelec(8) */ + 0, /* unavailable(0) */ + 2 /* wheelchair-user(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VruSubProfileBicyclist_specs_1 = { + asn_MAP_VruSubProfileBicyclist_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruSubProfileBicyclist_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruSubProfileBicyclist_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSubProfileBicyclist = { + "VruSubProfileBicyclist", + "VruSubProfileBicyclist", + &asn_OP_NativeEnumerated, + asn_DEF_VruSubProfileBicyclist_tags_1, + sizeof(asn_DEF_VruSubProfileBicyclist_tags_1) + /sizeof(asn_DEF_VruSubProfileBicyclist_tags_1[0]), /* 1 */ + asn_DEF_VruSubProfileBicyclist_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSubProfileBicyclist_tags_1) + /sizeof(asn_DEF_VruSubProfileBicyclist_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSubProfileBicyclist_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSubProfileBicyclist_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruSubProfileBicyclist_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileMotorcyclist.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileMotorcyclist.c new file mode 100644 index 000000000..f3e175b1c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfileMotorcyclist.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSubProfileMotorcyclist.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSubProfileMotorcyclist_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruSubProfileMotorcyclist_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 5 } /* (0..5) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruSubProfileMotorcyclist_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 5, "moped" }, + { 2, 10, "motorcycle" }, + { 3, 28, "motorcycle-and-sidecar-right" }, + { 4, 27, "motorcycle-and-sidecar-left" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_VruSubProfileMotorcyclist_enum2value_1[] = { + 5, /* max(15) */ + 1, /* moped(1) */ + 2, /* motorcycle(2) */ + 4, /* motorcycle-and-sidecar-left(4) */ + 3, /* motorcycle-and-sidecar-right(3) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VruSubProfileMotorcyclist_specs_1 = { + asn_MAP_VruSubProfileMotorcyclist_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruSubProfileMotorcyclist_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruSubProfileMotorcyclist_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSubProfileMotorcyclist = { + "VruSubProfileMotorcyclist", + "VruSubProfileMotorcyclist", + &asn_OP_NativeEnumerated, + asn_DEF_VruSubProfileMotorcyclist_tags_1, + sizeof(asn_DEF_VruSubProfileMotorcyclist_tags_1) + /sizeof(asn_DEF_VruSubProfileMotorcyclist_tags_1[0]), /* 1 */ + asn_DEF_VruSubProfileMotorcyclist_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSubProfileMotorcyclist_tags_1) + /sizeof(asn_DEF_VruSubProfileMotorcyclist_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSubProfileMotorcyclist_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSubProfileMotorcyclist_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruSubProfileMotorcyclist_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfilePedestrian.c b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfilePedestrian.c new file mode 100644 index 000000000..251562c4b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/VruSubProfilePedestrian.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/VruSubProfilePedestrian.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_VruSubProfilePedestrian_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_VruSubProfilePedestrian_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 4 } /* (0..4) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_VruSubProfilePedestrian_value2enum_1[] = { + { 0, 11, "unavailable" }, + { 1, 19, "ordinary-pedestrian" }, + { 2, 11, "road-worker" }, + { 3, 15, "first-responder" }, + { 15, 3, "max" } +}; +static const unsigned int asn_MAP_VruSubProfilePedestrian_enum2value_1[] = { + 3, /* first-responder(3) */ + 4, /* max(15) */ + 1, /* ordinary-pedestrian(1) */ + 2, /* road-worker(2) */ + 0 /* unavailable(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_VruSubProfilePedestrian_specs_1 = { + asn_MAP_VruSubProfilePedestrian_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VruSubProfilePedestrian_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VruSubProfilePedestrian_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VruSubProfilePedestrian = { + "VruSubProfilePedestrian", + "VruSubProfilePedestrian", + &asn_OP_NativeEnumerated, + asn_DEF_VruSubProfilePedestrian_tags_1, + sizeof(asn_DEF_VruSubProfilePedestrian_tags_1) + /sizeof(asn_DEF_VruSubProfilePedestrian_tags_1[0]), /* 1 */ + asn_DEF_VruSubProfilePedestrian_tags_1, /* Same as above */ + sizeof(asn_DEF_VruSubProfilePedestrian_tags_1) + /sizeof(asn_DEF_VruSubProfilePedestrian_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_VruSubProfilePedestrian_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_VruSubProfilePedestrian_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VruSubProfilePedestrian_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/WMInumber.c b/etsi_its_coding/etsi_its_cpm_coding/src/WMInumber.c new file mode 100644 index 000000000..cc4d96e04 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/WMInumber.c @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/WMInumber.h" + +static int check_permitted_alphabet_1(const void *sptr) { + /* The underlying type is IA5String */ + const IA5String_t *st = (const IA5String_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!(cv <= 127)) return -1; + } + return 0; +} + +int +WMInumber_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const IA5String_t *st = (const IA5String_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 3) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using IA5String, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WMInumber_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..3)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WMInumber_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 127 } /* (0..127) */, + { APC_CONSTRAINED, 2, 2, 1, 3 } /* (SIZE(1..3)) */, + 0, 0 /* No PER character map necessary */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_WMInumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WMInumber = { + "WMInumber", + "WMInumber", + &asn_OP_IA5String, + asn_DEF_WMInumber_tags_1, + sizeof(asn_DEF_WMInumber_tags_1) + /sizeof(asn_DEF_WMInumber_tags_1[0]), /* 1 */ + asn_DEF_WMInumber_tags_1, /* Same as above */ + sizeof(asn_DEF_WMInumber_tags_1) + /sizeof(asn_DEF_WMInumber_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WMInumber_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WMInumber_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + WMInumber_constraint + }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84Angle.c b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84Angle.c new file mode 100644 index 000000000..b059b9d7f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84Angle.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Wgs84Angle.h" + +asn_TYPE_member_t asn_MBR_Wgs84Angle_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Wgs84Angle, value), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "value" + }, + { ATF_NOFLAGS, 0, offsetof(struct Wgs84Angle, confidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Wgs84AngleConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "confidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_Wgs84Angle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Wgs84Angle_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* value */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* confidence */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Wgs84Angle_specs_1 = { + sizeof(struct Wgs84Angle), + offsetof(struct Wgs84Angle, _asn_ctx), + asn_MAP_Wgs84Angle_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Wgs84Angle = { + "Wgs84Angle", + "Wgs84Angle", + &asn_OP_SEQUENCE, + asn_DEF_Wgs84Angle_tags_1, + sizeof(asn_DEF_Wgs84Angle_tags_1) + /sizeof(asn_DEF_Wgs84Angle_tags_1[0]), /* 1 */ + asn_DEF_Wgs84Angle_tags_1, /* Same as above */ + sizeof(asn_DEF_Wgs84Angle_tags_1) + /sizeof(asn_DEF_Wgs84Angle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_Wgs84Angle_1, + 2, /* Elements count */ + &asn_SPC_Wgs84Angle_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleConfidence.c new file mode 100644 index 000000000..2dec61bdb --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleConfidence.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Wgs84AngleConfidence.h" + +int +Wgs84AngleConfidence_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Wgs84AngleConfidence_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Wgs84AngleConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Wgs84AngleConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Wgs84AngleConfidence = { + "Wgs84AngleConfidence", + "Wgs84AngleConfidence", + &asn_OP_NativeInteger, + asn_DEF_Wgs84AngleConfidence_tags_1, + sizeof(asn_DEF_Wgs84AngleConfidence_tags_1) + /sizeof(asn_DEF_Wgs84AngleConfidence_tags_1[0]), /* 1 */ + asn_DEF_Wgs84AngleConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_Wgs84AngleConfidence_tags_1) + /sizeof(asn_DEF_Wgs84AngleConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Wgs84AngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Wgs84AngleConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Wgs84AngleConfidence_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleValue.c new file mode 100644 index 000000000..d41ad9170 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/Wgs84AngleValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/Wgs84AngleValue.h" + +int +Wgs84AngleValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3601)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_Wgs84AngleValue_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..3601) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_Wgs84AngleValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 3601 } /* (0..3601) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_Wgs84AngleValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Wgs84AngleValue = { + "Wgs84AngleValue", + "Wgs84AngleValue", + &asn_OP_NativeInteger, + asn_DEF_Wgs84AngleValue_tags_1, + sizeof(asn_DEF_Wgs84AngleValue_tags_1) + /sizeof(asn_DEF_Wgs84AngleValue_tags_1[0]), /* 1 */ + asn_DEF_Wgs84AngleValue_tags_1, /* Same as above */ + sizeof(asn_DEF_Wgs84AngleValue_tags_1) + /sizeof(asn_DEF_Wgs84AngleValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_Wgs84AngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_Wgs84AngleValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + Wgs84AngleValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/WheelBaseVehicle.c b/etsi_its_coding/etsi_its_cpm_coding/src/WheelBaseVehicle.c new file mode 100644 index 000000000..328d7543d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/WheelBaseVehicle.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/WheelBaseVehicle.h" + +int +WheelBaseVehicle_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 127)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WheelBaseVehicle_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..127) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_type_WheelBaseVehicle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 127 } /* (1..127) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_WheelBaseVehicle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WheelBaseVehicle = { + "WheelBaseVehicle", + "WheelBaseVehicle", + &asn_OP_NativeInteger, + asn_DEF_WheelBaseVehicle_tags_1, + sizeof(asn_DEF_WheelBaseVehicle_tags_1) + /sizeof(asn_DEF_WheelBaseVehicle_tags_1[0]), /* 1 */ + asn_DEF_WheelBaseVehicle_tags_1, /* Same as above */ + sizeof(asn_DEF_WheelBaseVehicle_tags_1) + /sizeof(asn_DEF_WheelBaseVehicle_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WheelBaseVehicle_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WheelBaseVehicle_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + WheelBaseVehicle_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainer.c b/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainer.c new file mode 100644 index 000000000..a1fb9ca47 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainer.c @@ -0,0 +1,326 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/WrappedCpmContainer.h" + +static const long asn_VAL_1_originatingVehicleContainer = 1; +static const long asn_VAL_2_originatingRsuContainer = 2; +static const long asn_VAL_3_sensorInformationContainer = 3; +static const long asn_VAL_4_perceptionRegionContainer = 4; +static const long asn_VAL_5_perceivedObjectContainer = 5; +static const asn_ioc_cell_t asn_IOS_CpmContainers_1_rows[] = { + { "&id", aioc__value, &asn_DEF_CpmContainerId, &asn_VAL_1_originatingVehicleContainer }, + { "&Type", aioc__type, &asn_DEF_OriginatingVehicleContainer }, + { "&id", aioc__value, &asn_DEF_CpmContainerId, &asn_VAL_2_originatingRsuContainer }, + { "&Type", aioc__type, &asn_DEF_OriginatingRsuContainer }, + { "&id", aioc__value, &asn_DEF_CpmContainerId, &asn_VAL_3_sensorInformationContainer }, + { "&Type", aioc__type, &asn_DEF_SensorInformationContainer }, + { "&id", aioc__value, &asn_DEF_CpmContainerId, &asn_VAL_4_perceptionRegionContainer }, + { "&Type", aioc__type, &asn_DEF_PerceptionRegionContainer }, + { "&id", aioc__value, &asn_DEF_CpmContainerId, &asn_VAL_5_perceivedObjectContainer }, + { "&Type", aioc__type, &asn_DEF_PerceivedObjectContainer } +}; +static const asn_ioc_set_t asn_IOS_CpmContainers_1[] = { + { 5, 2, asn_IOS_CpmContainers_1_rows } +}; +static int +memb_containerId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_WrappedCpmContainer_containerData_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CpmContainers_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &Type */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct WrappedCpmContainer, containerId)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_containerData_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_containerId_constr_2 CC_NOTUSED = { + { 1, 1 } /* (1..16) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_containerId_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (1..16) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_memb_containerData_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +static asn_per_constraints_t asn_PER_memb_containerData_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static asn_TYPE_member_t asn_MBR_containerData_3[] = { + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer__containerData, choice.OriginatingVehicleContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_OriginatingVehicleContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "OriginatingVehicleContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer__containerData, choice.OriginatingRsuContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_OriginatingRsuContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "OriginatingRsuContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer__containerData, choice.SensorInformationContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SensorInformationContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "SensorInformationContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer__containerData, choice.PerceptionRegionContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PerceptionRegionContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "PerceptionRegionContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer__containerData, choice.PerceivedObjectContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PerceivedObjectContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "PerceivedObjectContainer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_containerData_tag2el_3[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* OriginatingVehicleContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* OriginatingRsuContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* SensorInformationContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* PerceptionRegionContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* PerceivedObjectContainer */ +}; +static asn_CHOICE_specifics_t asn_SPC_containerData_specs_3 = { + sizeof(struct WrappedCpmContainer__containerData), + offsetof(struct WrappedCpmContainer__containerData, _asn_ctx), + offsetof(struct WrappedCpmContainer__containerData, present), + sizeof(((struct WrappedCpmContainer__containerData *)0)->present), + asn_MAP_containerData_tag2el_3, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_containerData_3 = { + "containerData", + "containerData", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + OPEN_TYPE_constraint + }, + asn_MBR_containerData_3, + 5, /* Elements count */ + &asn_SPC_containerData_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WrappedCpmContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer, containerId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CpmContainerId, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_containerId_constr_2, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_containerId_constr_2, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_containerId_constraint_1 + }, + 0, 0, /* No default value */ + "containerId" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct WrappedCpmContainer, containerData), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_containerData_3, + select_WrappedCpmContainer_containerData_type, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_memb_containerData_constr_3, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_memb_containerData_constr_3, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + memb_containerData_constraint_1 + }, + 0, 0, /* No default value */ + "containerData" + }, +}; +static const ber_tlv_tag_t asn_DEF_WrappedCpmContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WrappedCpmContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* containerId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* containerData */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WrappedCpmContainer_specs_1 = { + sizeof(struct WrappedCpmContainer), + offsetof(struct WrappedCpmContainer, _asn_ctx), + asn_MAP_WrappedCpmContainer_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WrappedCpmContainer = { + "WrappedCpmContainer", + "WrappedCpmContainer", + &asn_OP_SEQUENCE, + asn_DEF_WrappedCpmContainer_tags_1, + sizeof(asn_DEF_WrappedCpmContainer_tags_1) + /sizeof(asn_DEF_WrappedCpmContainer_tags_1[0]), /* 1 */ + asn_DEF_WrappedCpmContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_WrappedCpmContainer_tags_1) + /sizeof(asn_DEF_WrappedCpmContainer_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_WrappedCpmContainer_1, + 2, /* Elements count */ + &asn_SPC_WrappedCpmContainer_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainers.c b/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainers.c new file mode 100644 index 000000000..8a7fd21e8 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/WrappedCpmContainers.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "CPM-PDU-Descriptions" + * found in "/input/CPM-PDU-Descriptions.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/WrappedCpmContainers.h" + +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WrappedCpmContainers_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WrappedCpmContainers_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (SIZE(1..8,...)) */, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +asn_TYPE_member_t asn_MBR_WrappedCpmContainers_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WrappedCpmContainer, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_WrappedCpmContainers_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_WrappedCpmContainers_specs_1 = { + sizeof(struct WrappedCpmContainers), + offsetof(struct WrappedCpmContainers, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_WrappedCpmContainers = { + "WrappedCpmContainers", + "WrappedCpmContainers", + &asn_OP_SEQUENCE_OF, + asn_DEF_WrappedCpmContainers_tags_1, + sizeof(asn_DEF_WrappedCpmContainers_tags_1) + /sizeof(asn_DEF_WrappedCpmContainers_tags_1[0]), /* 1 */ + asn_DEF_WrappedCpmContainers_tags_1, /* Same as above */ + sizeof(asn_DEF_WrappedCpmContainers_tags_1) + /sizeof(asn_DEF_WrappedCpmContainers_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WrappedCpmContainers_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WrappedCpmContainers_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_OF_constraint + }, + asn_MBR_WrappedCpmContainers_1, + 1, /* Single element */ + &asn_SPC_WrappedCpmContainers_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/WrongWayDrivingSubCauseCode.c b/etsi_its_coding/etsi_its_cpm_coding/src/WrongWayDrivingSubCauseCode.c new file mode 100644 index 000000000..eb2bb615a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/WrongWayDrivingSubCauseCode.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/WrongWayDrivingSubCauseCode.h" + +int +WrongWayDrivingSubCauseCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_WrongWayDrivingSubCauseCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_WrongWayDrivingSubCauseCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_WrongWayDrivingSubCauseCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WrongWayDrivingSubCauseCode = { + "WrongWayDrivingSubCauseCode", + "WrongWayDrivingSubCauseCode", + &asn_OP_NativeInteger, + asn_DEF_WrongWayDrivingSubCauseCode_tags_1, + sizeof(asn_DEF_WrongWayDrivingSubCauseCode_tags_1) + /sizeof(asn_DEF_WrongWayDrivingSubCauseCode_tags_1[0]), /* 1 */ + asn_DEF_WrongWayDrivingSubCauseCode_tags_1, /* Same as above */ + sizeof(asn_DEF_WrongWayDrivingSubCauseCode_tags_1) + /sizeof(asn_DEF_WrongWayDrivingSubCauseCode_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_WrongWayDrivingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_WrongWayDrivingSubCauseCode_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + WrongWayDrivingSubCauseCode_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/YawRate.c b/etsi_its_coding/etsi_its_cpm_coding/src/YawRate.c new file mode 100644 index 000000000..ce1e24953 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/YawRate.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/YawRate.h" + +static asn_TYPE_member_t asn_MBR_YawRate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct YawRate, yawRateValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRateValue, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yawRateValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct YawRate, yawRateConfidence), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_YawRateConfidence, + 0, + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + 0 + }, + 0, 0, /* No default value */ + "yawRateConfidence" + }, +}; +static const ber_tlv_tag_t asn_DEF_YawRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_YawRate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* yawRateValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* yawRateConfidence */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_YawRate_specs_1 = { + sizeof(struct YawRate), + offsetof(struct YawRate, _asn_ctx), + asn_MAP_YawRate_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_YawRate = { + "YawRate", + "YawRate", + &asn_OP_SEQUENCE, + asn_DEF_YawRate_tags_1, + sizeof(asn_DEF_YawRate_tags_1) + /sizeof(asn_DEF_YawRate_tags_1[0]), /* 1 */ + asn_DEF_YawRate_tags_1, /* Same as above */ + sizeof(asn_DEF_YawRate_tags_1) + /sizeof(asn_DEF_YawRate_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + SEQUENCE_constraint + }, + asn_MBR_YawRate_1, + 2, /* Elements count */ + &asn_SPC_YawRate_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/YawRateConfidence.c b/etsi_its_coding/etsi_its_cpm_coding/src/YawRateConfidence.c new file mode 100644 index 000000000..56746d893 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/YawRateConfidence.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/YawRateConfidence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_YawRateConfidence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_YawRateConfidence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 8 } /* (0..8) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const asn_INTEGER_enum_map_t asn_MAP_YawRateConfidence_value2enum_1[] = { + { 0, 13, "degSec-000-01" }, + { 1, 13, "degSec-000-05" }, + { 2, 13, "degSec-000-10" }, + { 3, 13, "degSec-001-00" }, + { 4, 13, "degSec-005-00" }, + { 5, 13, "degSec-010-00" }, + { 6, 13, "degSec-100-00" }, + { 7, 10, "outOfRange" }, + { 8, 11, "unavailable" } +}; +static const unsigned int asn_MAP_YawRateConfidence_enum2value_1[] = { + 0, /* degSec-000-01(0) */ + 1, /* degSec-000-05(1) */ + 2, /* degSec-000-10(2) */ + 3, /* degSec-001-00(3) */ + 4, /* degSec-005-00(4) */ + 5, /* degSec-010-00(5) */ + 6, /* degSec-100-00(6) */ + 7, /* outOfRange(7) */ + 8 /* unavailable(8) */ +}; +const asn_INTEGER_specifics_t asn_SPC_YawRateConfidence_specs_1 = { + asn_MAP_YawRateConfidence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_YawRateConfidence_enum2value_1, /* N => "tag"; sorted by N */ + 9, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_YawRateConfidence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_YawRateConfidence = { + "YawRateConfidence", + "YawRateConfidence", + &asn_OP_NativeEnumerated, + asn_DEF_YawRateConfidence_tags_1, + sizeof(asn_DEF_YawRateConfidence_tags_1) + /sizeof(asn_DEF_YawRateConfidence_tags_1[0]), /* 1 */ + asn_DEF_YawRateConfidence_tags_1, /* Same as above */ + sizeof(asn_DEF_YawRateConfidence_tags_1) + /sizeof(asn_DEF_YawRateConfidence_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_YawRateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_YawRateConfidence_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + NativeEnumerated_constraint + }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_YawRateConfidence_specs_1 /* Additional specs */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/YawRateValue.c b/etsi_its_coding/etsi_its_cpm_coding/src/YawRateValue.c new file mode 100644 index 000000000..846266c4a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/YawRateValue.c @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29-DF (http://lionet.info/asn1c) + * From ASN.1 module "ETSI-ITS-CDD" + * found in "/input/ETSI-ITS-CDD.asn" + * `asn1c -fcompound-names -no-gen-example -gen-UPER` + */ + +#include "etsi_its_cpm_coding/YawRateValue.h" + +int +YawRateValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -32766 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +#if !defined(ASN_DISABLE_OER_SUPPORT) +static asn_oer_constraints_t asn_OER_type_YawRateValue_constr_1 CC_NOTUSED = { + { 2, 0 } /* (-32766..32767) */, + -1}; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) +asn_per_constraints_t asn_PER_type_YawRateValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, -32766, 32767 } /* (-32766..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ +static const ber_tlv_tag_t asn_DEF_YawRateValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_YawRateValue = { + "YawRateValue", + "YawRateValue", + &asn_OP_NativeInteger, + asn_DEF_YawRateValue_tags_1, + sizeof(asn_DEF_YawRateValue_tags_1) + /sizeof(asn_DEF_YawRateValue_tags_1[0]), /* 1 */ + asn_DEF_YawRateValue_tags_1, /* Same as above */ + sizeof(asn_DEF_YawRateValue_tags_1) + /sizeof(asn_DEF_YawRateValue_tags_1[0]), /* 1 */ + { +#if !defined(ASN_DISABLE_OER_SUPPORT) + &asn_OER_type_YawRateValue_constr_1, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + &asn_PER_type_YawRateValue_constr_1, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + YawRateValue_constraint + }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/aper_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/aper_decoder.c new file mode 100644 index 000000000..a8f0f5210 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/aper_decoder.c @@ -0,0 +1,91 @@ +#include +#include +#include + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/aper_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/aper_encoder.c new file mode 100644 index 000000000..ccf996863 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/aper_encoder.c @@ -0,0 +1,129 @@ +#include +#include +#include + +/* + * Argument type and callback necessary for aper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/aper_opentype.c b/etsi_its_coding/etsi_its_cpm_coding/src/aper_opentype.c new file mode 100644 index 000000000..53b70f9ce --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/aper_opentype.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + int need_eom = 0; + ssize_t maySave = aper_put_length(po, -1, -1, toGo, &need_eom); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) { + FREEMEM(buf); + return -1; + } + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %zd + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/aper_support.c b/etsi_its_coding/etsi_its_cpm_coding/src/aper_support.c new file mode 100644 index 000000000..fd9cf038a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/aper_support.c @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, ssize_t lb, ssize_t ub, + int ebits, int *repeat) { + int constrained = (lb >= 0) && (ub >= 0); + ssize_t value; + + *repeat = 0; + + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_get_nsnnwn(pd, range); + } + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #11.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #11.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%zd", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + //return -1; + int length; + + /* handle indefinite range */ + length = per_get_few_bits(pd, 1); + if (length == 0) + return per_get_few_bits(pd, 6); + + if (aper_get_align(pd) < 0) + return -1; + + length = per_get_few_bits(pd, 8); + /* the length is not likely to be that big */ + if (length > 4) + return -1; + value = 0; + if (per_get_many_bits(pd, (uint8_t *)&value, 0, length * 8) < 0) + return -1; + return value; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, ssize_t lb, ssize_t ub, size_t n, int *need_eom) { + int constrained = (lb >= 0) && (ub >= 0); + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + *need_eom = 0; + + + ASN_DEBUG("APER put length %zu with range (%zd..%zd)", n, lb, ub); + + /* 11.9 X.691 Note 2 */ + if (constrained && ub < 65536) { + int range = ub - lb + 1; + return aper_put_nsnnwn(po, range, n) ? -1 : (ssize_t)n; + } + + if (aper_put_align(po) < 0) + return -1; + + if(n <= 127) { /* #11.9.3.6 */ + return per_put_few_bits(po, n, 8) + ? -1 : (ssize_t)n; + } + else if(n < 16384) /* #11.9.3.7 */ + return per_put_few_bits(po, n|0x8000, 16) + ? -1 : (ssize_t)n; + + *need_eom = 0 == (n & 16383); + n >>= 14; + if(n > 4) { + *need_eom = 0; + n = 4; + } + + return per_put_few_bits(po, 0xC0 | n, 8) + ? -1 : (ssize_t)(n << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, -1, length, NULL) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + if (number >= range) + return -1; + bytes = 1; + } else if(range <= 65536) { + if (number >= range) + return -1; + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_SEQUENCE_OF.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_SEQUENCE_OF.c new file mode 100644 index 000000000..68df606b1 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_SET_OF.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_SET_OF.c new file mode 100644 index 000000000..03cc7fcff --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_application.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_application.c new file mode 100644 index 000000000..89db63974 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_application.c @@ -0,0 +1,538 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; +#if !defined(ASN_DISABLE_XER_SUPPORT) + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + +#if !defined(ASN_DISABLE_BER_SUPPORT) + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; +#else + case ATS_BER: + case ATS_DER: + case ATS_CER: + errno = ENOENT; /* BER is not defined. */ + ASN__ENCODE_FAILED; + +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + +#if !defined(ASN_DISABLE_OER_SUPPORT) + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* OER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + +#if !defined(ASN_DISABLE_UPER_SUPPORT) + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + errno = ENOENT; /* UPER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* APER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + +#if !defined(ASN_DISABLE_XER_SUPPORT) + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#else + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + errno = ENOENT; /* XER is not defined. */ + ASN__ENCODE_FAILED; + break; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + +#if !defined(ASN_DISABLE_JER_SUPPORT) + case ATS_JER: + if(td->op->jer_encoder) { + er = jer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->jer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* JER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + + case ATS_DER: + case ATS_BER: +#if !defined(ASN_DISABLE_BER_SUPPORT) + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#if !defined(ASN_DISABLE_OER_SUPPORT) + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_UPER_SUPPORT) + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#if !defined(ASN_DISABLE_APER_SUPPORT) + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: +#if !defined(ASN_DISABLE_XER_SUPPORT) + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); +#else + errno = ENOENT; + ASN__DECODE_FAILED; +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ + } +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_bit_data.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_bit_data.c new file mode 100644 index 000000000..665a1e087 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim.c new file mode 100644 index 000000000..bcff995ec --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim.c @@ -0,0 +1,31 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_ber.c new file mode 100644 index 000000000..8b5e67aa2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_ber.c @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_xer.c new file mode 100644 index 000000000..10e4ecf4d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_codecs_prim_xer.c @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, + chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (chunk_buf == NULL)? NULL : ((const char *)chunk_buf + lead_wsp_size); + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, + chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, + xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_internal.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_internal.c new file mode 100644 index 000000000..fcaa75edd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_internal.c @@ -0,0 +1,49 @@ +#define ASN_INTERNAL_C +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + va_end(args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/asn_random_fill.c b/etsi_its_coding/etsi_its_cpm_coding/src/asn_random_fill.c new file mode 100644 index 000000000..3a6e49f62 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/asn_random_fill.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + (void)intmax_max; + int max = 0xffffff; + +#ifdef __WIN32__ + max = RAND_MAX-1; +#endif + + assert(RAND_MAX > max); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | max; +#ifdef HAVE_RANDOM + value = (value << 24) | (random() % max); +#else + value = (value << 24) | (rand() % max); +#endif + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ber_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/ber_decoder.c new file mode 100644 index 000000000..26d5297c4 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_length.c b/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_length.c new file mode 100644 index 000000000..96445829c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_tag.c b/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_tag.c new file mode 100644 index 000000000..a629a6e7e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accommodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE.c new file mode 100644 index 000000000..cebe6d7e2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE.c @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + CHOICE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + CHOICE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + CHOICE_decode_ber, + CHOICE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + CHOICE_decode_xer, + CHOICE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + CHOICE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + CHOICE_decode_oer, + CHOICE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + CHOICE_decode_uper, + CHOICE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + CHOICE_decode_aper, + CHOICE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + CHOICE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + CHOICE_outmost_tag +}; + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +/* + * See the definitions. + */ +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_aper.c new file mode 100644 index 000000000..4fe0066df --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_aper.c @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct = NULL; + asn_TYPE_member_t *elm = NULL; /* CHOICE's element */ + void *memb_ptr = NULL; + void **memb_ptr2 = NULL; + void *st = *sptr; + int value = 0; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + + if(specs && specs->tag2el_count > specs->ext_start) { + value = aper_get_nsnnwn(pd, specs->tag2el_count - specs->ext_start); /* extension elements range */ + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + int present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present = specs->to_canonical_order[present]; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && ct->range_bits >= 0) { + if(present < ct->lower_bound + || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + int n = present - specs->ext_start; + if(n <= 63) { + if(n < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n, 7)) ASN__ENCODE_FAILED; + } else + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_ber.c new file mode 100644 index 000000000..0ef847c5b --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_ber.c @@ -0,0 +1,447 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Subtracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, + elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb ? "Encoding" : "Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, + elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_jer.c new file mode 100644 index 000000000..b3cb5b0fe --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_jer.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef JER_ADVANCE +#define JER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_enc_rval_t +CHOICE_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + ASN__CALLBACK3("{\n\"", 3, mname, mlen, "\": ", 2); + + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK("}", 1); + // ASN__CALLBACK3("", 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_oer.c new file mode 100644 index 000000000..61a85ebd2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_oer.c @@ -0,0 +1,377 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val & 0x3F) != 0x3F) { + /* #8.7.1 */ + *tag_r = ((val & 0x3F) << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accommodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + +asn_dec_rval_t +CHOICE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + (void)constraints; + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + switch(ctx->phase) { + case 0: { + /* + * Discover the tag. + */ + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + + tag_len = oer_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case 0: + ASN__DECODE_STARVED; + case -1: + ASN__DECODE_FAILED; + } + ctx->start = ptr; + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + + t2m = (const asn_TYPE_tag2member_t *)bsearch( + &key, specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG( + "Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip open type extension */ + ASN_DEBUG( + "Not implemented skipping open type extension for tag %s", + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + } while(0); + + + ADVANCE(tag_len); + } + /* Fall through */ + case 1: { + asn_TYPE_member_t *elm = &elements[ctx->step]; /* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_dec_rval_t rval = {0,0}; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Set presence to be able to free it properly at any time */ + (void)CHOICE_variant_set_presence(td, st, ctx->step + 1); + + if(specs->ext_start >= 0 && specs->ext_start <= ctx->step) { + ssize_t got = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + if(got < 0) ASN__DECODE_FAILED; + if(got == 0) ASN__DECODE_STARVED; + rval.code = RC_OK; + rval.consumed = got; + } else { + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + rval.consumed += consumed_myself; + switch(rval.code) { + case RC_OK: + NEXT_PHASE(ctx); + case RC_WMORE: + break; + case RC_FAIL: + SET_PHASE(ctx, 3); /* => 3 */ + } + return rval; + } + case 2: + /* Already decoded everything */ + ctx->left = consumed_myself; + RETURN(RC_OK); + case 3: + /* Failed to decode, after all */ + RETURN(RC_FAIL); + } + + RETURN(RC_FAIL); +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_put_tag(ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + + if(tval < 0x3F) { + uint8_t b = (uint8_t)((tclass << 6) | tval); + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } else { + uint8_t buf[1 + 2 * sizeof(tval)]; + uint8_t *b = &buf[sizeof(buf)-1]; /* Last addressable */ + size_t encoded; + for(; ; tval >>= 7) { + if(tval >> 7) { + *b-- = 0x80 | (tval & 0x7f); + } else { + *b-- = tval & 0x7f; + break; + } + } + *b = (uint8_t)((tclass << 6) | 0x3F); + encoded = sizeof(buf) - (b - buf); + if(cb(b, encoded, app_key) < 0) { + return -1; + } + return encoded; + } + +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +CHOICE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + unsigned present; + const void *memb_ptr; + ber_tlv_tag_t tag; + ssize_t tag_len; + asn_enc_rval_t er = {0, 0, 0}; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("OER %s encoding as CHOICE", td->name); + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN_DEBUG("CHOICE %s member is not selected", td->name); + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + tag = asn_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); + if(tag == 0) { + ASN__ENCODE_FAILED; + } + + tag_len = oer_put_tag(tag, cb, app_key); + if(tag_len < 0) { + ASN__ENCODE_FAILED; + } + + if(specs->ext_start >= 0 && (unsigned)specs->ext_start <= (present-1)) { + ssize_t encoded = oer_open_type_put(elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(encoded < 0) ASN__ENCODE_FAILED; + er.encoded = tag_len + encoded; + } else { + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded >= 0) er.encoded += tag_len; + } + + return er; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_print.c new file mode 100644 index 000000000..ba6af2b2c --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_print.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_rfill.c new file mode 100644 index 000000000..8bf0fecd6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_rfill.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_uper.c new file mode 100644 index 000000000..cd0bfc14a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_uper.c @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_xer.c new file mode 100644 index 000000000..be38ccf26 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_CHOICE_xer.c @@ -0,0 +1,316 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, + elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, + specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, + specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE.c new file mode 100644 index 000000000..940b0c70e --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE.c @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_decode_ber, + SEQUENCE_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + asn_constr_check_f *constr; + int ret; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) + constr = elm->type->encoding_constraints.general_constraints; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF.c new file mode 100644 index 000000000..362b52b83 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF.c @@ -0,0 +1,92 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SEQUENCE_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SEQUENCE_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SEQUENCE_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SEQUENCE_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_aper.c new file mode 100644 index 000000000..0930b544a --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_aper.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (ct->lower_bound == ct->upper_bound && ct->upper_bound < 65536) { + /* No length determinant */ + } else if (aper_put_length(po, ct->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + int need_eom = 0; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, -1, list->count - seq, &need_eom); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_ber.c new file mode 100644 index 000000000..a2987976d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_ber.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_jer.c new file mode 100644 index 000000000..98ade2dfa --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_jer.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = 0; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + ASN__CALLBACK("[", 1); + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("{\"", 2, mname, mlen, "\":", 2); + } + + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("\"", 1, name, len, "\"", 1); + } + + if(mname) { + ASN__CALLBACK("}", 1); + } + if (i != list->count - 1) { + ASN__CALLBACK(",", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + ASN__CALLBACK("]", 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_uper.c new file mode 100644 index 000000000..47e068297 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_uper.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_xer.c new file mode 100644 index 000000000..de35b1c73 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_OF_xer.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_aper.c new file mode 100644 index 000000000..1f72c7e0d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_aper.c @@ -0,0 +1,457 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + if (OPEN_TYPE_aper_is_unknown_type(td, st, elm)) { + rv = OPEN_TYPE_aper_unknown_type_discard_bytes(pd); + FREEMEM(opres); + return rv; + } + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %zd bits (%x..)", + td->name, bmlength, *epres); + + /* Deal with padding */ + if (aper_get_align(pd) < 0) + ASN__DECODE_STARVED; + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%zu is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%zu) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%zu) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %zu not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_ber.c new file mode 100644 index 000000000..206238636 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_ber.c @@ -0,0 +1,612 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef PHASE_OUT +#define PHASE_OUT(ctx) \ + do { \ + ctx->phase = 10; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Subtracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_jer.c new file mode 100644 index 000000000..fc114cbd2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_jer.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_enc_rval_t SEQUENCE_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum jer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = 0; + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + int bAddComma = 0; + ASN__CALLBACK("{\n", 2); + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if (bAddComma == 1) { + ASN__CALLBACK(",", 1); + bAddComma = 0; + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("\"", 1, mname, mlen, "\": ", 3); + + /* Print the member itself */ + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if (edx != td->elements_count - 1) { + bAddComma = 1; + } + } + ASN__CALLBACK("}", 1); + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_oer.c new file mode 100644 index 000000000..10c56f0d3 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_oer.c @@ -0,0 +1,559 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +#define IN_ROOT_GROUP_PRED(edx) \ + edx < (specs->first_extension < 0 ? td->elements_count \ + : (size_t)specs->first_extension) + +#define FOR_IN_ROOT_GROUP(edx) for(edx = 0; IN_ROOT_GROUP_PRED(edx); edx++) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Return pointer to a member. + */ +static void ** +element_ptrptr(void *struct_ptr, asn_TYPE_member_t *elm, void **tmp_save_ptr) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return (void **)((char *)struct_ptr + elm->memb_offset); + } else { + assert(tmp_save_ptr); + *tmp_save_ptr = (void *)((char *)struct_ptr + elm->memb_offset); + return tmp_save_ptr; + } +} + +static const void * +element_ptr(const void *struct_ptr, const asn_TYPE_member_t *elm) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return *(const void *const *)((const char *)struct_ptr + + elm->memb_offset); + } else { + return (const void *)((const char *)struct_ptr + elm->memb_offset); + } +} + +asn_dec_rval_t +SEQUENCE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch preamble. + */ + asn_bit_data_t *preamble; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + size_t preamble_bytes = ((7 + preamble_bits) >> 3); + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 0", td->name); + + ASN_DEBUG( + "Expecting preamble bits %" ASN_PRI_SIZE " for %s (including %d extension bits)", + preamble_bits, td->name, has_extensions_bit); + ctx->start = ptr; + if(preamble_bytes > size) { + ASN__DECODE_STARVED; + } + + preamble = asn_bit_data_new_contiguous(ptr, preamble_bits); + if(!preamble) { + RETURN(RC_FAIL); + } + preamble->nboff = has_extensions_bit; + ctx->ptr = preamble; + ADVANCE(preamble_bytes); + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_bit_data_t *preamble = ctx->ptr; + size_t edx; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 1 (Root)", td->name); + + assert(preamble); + + for(edx = (ctx->step >> 1); IN_ROOT_GROUP_PRED(edx); + edx++, ctx->step = (ctx->step & ~1) + 2) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + ASN_DEBUG("Decoding %s->%s", td->name, elm->name); + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + if(ctx->step & 1) { + goto microphase2_decode_continues; + } + + + if(elm->optional) { + int32_t present = asn_get_few_bits(preamble, 1); + if(present < 0) { + ASN_DEBUG("Presence map ended prematurely: %d", present); + RETURN(RC_FAIL); + } else if(present == 0) { + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + void *tmp; + if(elm->default_value_set( + element_ptrptr(st, elm, &tmp))) { + RETURN(RC_FAIL); + } + } + /* The member is not present. */ + continue; + } + /* Present OPTIONAL or DEFAULT component. */ + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2_decode_continues: + if(elm->flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_oer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + void *save_memb_ptr; /* Temporary reference. */ + void **memb_ptr2; /* Pointer to a pointer to a memmber */ + + memb_ptr2 = element_ptrptr(st, elm, &save_memb_ptr); + + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + switch(rval.code) { + case RC_OK: + ctx->left = consumed_myself; + ADVANCE(rval.consumed); + break; + case RC_WMORE: + ASN_DEBUG("More bytes needed at element %s \"%s\"", td->name, + elm->name); + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + case RC_FAIL: + ASN_DEBUG("Decoding failed at element %s \"%s\"", td->name, + elm->name); + RETURN(RC_FAIL); + } + } /* for(all root members) */ + + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 2: + assert(ctx->ptr); + { + /* Cleanup preamble. */ + asn_bit_data_t *preamble = ctx->ptr; + asn_bit_data_t *extadds; + int has_extensions_bit = (specs->first_extension >= 0); + int extensions_present = + has_extensions_bit + && (preamble->buffer == NULL + || (((const uint8_t *)preamble->buffer)[0] & 0x80)); + uint8_t unused_bits; + size_t len = 0; + ssize_t len_len; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 2", td->name); + + preamble->buffer = 0; /* Will do extensions_present==1 next time. */ + + if(!extensions_present) { + ctx->phase = 10; + ctx->left = consumed_myself; + RETURN(RC_OK); + } + + /* + * X.696 (08/2015) #16.1 (c), #16.4 + * Read in the extension addition presence bitmap. + */ + + len_len = oer_fetch_length(ptr, size, &len); + if(len_len > 0) { + ADVANCE(len_len); + } else if(len_len < 0) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + + if(len == 0) { + /* 16.4.1-2 */ + RETURN(RC_FAIL); + } else if(len > size) { + RETURN(RC_WMORE); + } + + /* Account for unused bits */ + unused_bits = 0x7 & *(const uint8_t *)ptr; + ADVANCE(1); + len--; + if(unused_bits && len == 0) { + RETURN(RC_FAIL); + } + + /* Get the extensions map */ + extadds = asn_bit_data_new_contiguous(ptr, len * 8 - unused_bits); + if(!extadds) { + RETURN(RC_FAIL); + } + FREEMEM(preamble); + ctx->ptr = extadds; + ADVANCE(len); + } + NEXT_PHASE(ctx); + ctx->step = + (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + /* Fall through */ + case 3: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 3 (Extensions)", td->name); + for(; ctx->step < (signed)td->elements_count; ctx->step++) { + asn_bit_data_t *extadds = ctx->ptr; + size_t edx = ctx->step; + asn_TYPE_member_t *elm = &td->elements[edx]; + void *tmp_memb_ptr; + void **memb_ptr2 = element_ptrptr(st, elm, &tmp_memb_ptr); + + switch(asn_get_few_bits(extadds, 1)) { + case -1: + /* + * Not every one of our extensions is known to the remote side. + * Continue filling in their defaults though. + */ + /* Fall through */ + case 0: + /* Fill-in DEFAULT */ + if(elm->default_value_set + && elm->default_value_set(memb_ptr2)) { + RETURN(RC_FAIL); + } + continue; + case 1: { + /* Read OER open type */ + ssize_t ot_size = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + assert(ot_size <= (ssize_t)size); + if(ot_size > 0) { + ADVANCE(ot_size); + } else if(ot_size < 0) { + RETURN(RC_FAIL); + } else { + /* Roll back open type parsing */ + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + break; + } + default: + RETURN(RC_FAIL); + } + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 4: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 4", td->name); + /* Read in the rest of Open Types while ignoring them */ + for(;;) { + asn_bit_data_t *extadds = ctx->ptr; + switch(asn_get_few_bits(extadds, 1)) { + case 0: + continue; + case 1: { + ssize_t skipped = oer_open_type_skip(ptr, size); + if(skipped > 0) { + ADVANCE(skipped); + } else if(skipped < 0) { + RETURN(RC_FAIL); + } else { + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + continue; + } + case -1: + /* No more Open Type encoded components */ + break; + default: + RETURN(RC_FAIL); + } + break; + } + } + ctx->left = consumed_myself; + RETURN(RC_OK); +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SEQUENCE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + size_t computed_size = 0; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + uint32_t has_extensions = 0; + size_t edx; + int ret; + + (void)constraints; + + if(preamble_bits) { + asn_bit_outp_t preamble; + + memset(&preamble, 0, sizeof(preamble)); + preamble.output = cb; + preamble.op_key = app_key; + + if(has_extensions_bit) { + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default values in extensions */ + } else { + has_extensions = 1; + break; + } + } + } + ret = asn_put_few_bits(&preamble, has_extensions, 1); + assert(ret == 0); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Encode optional components bitmap. + */ + if(specs->roms_count) { + FOR_IN_ROOT_GROUP(edx) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + if(elm->optional) { + const void *memb_ptr = element_ptr(sptr, elm); + uint32_t has_component = memb_ptr != NULL; + if(has_component && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + has_component = 0; + } + ret = asn_put_few_bits(&preamble, has_component, 1); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + } + } + + asn_put_aligned_flush(&preamble); + computed_size += preamble.flushed_bytes; + } /* if(preamble_bits) */ + + /* + * Put root components and extensions root. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t er = {0,0,0}; + const void *memb_ptr; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Skip default values in encoding */ + continue; + } + } else { + if(elm->optional) continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + if(!elm->type->op->oer_encoder) { + ASN_DEBUG("OER encoder is not defined for type %s", elm->type->name); + ASN__ENCODE_FAILED; + } + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded == -1) { + ASN_DEBUG("... while encoding %s member \"%s\"\n", td->name, + elm->name); + return er; + } + computed_size += er.encoded; + } + + /* + * Before encode extensions, encode extensions additions presence bitmap + # X.696 (08/2015) #16.4. + */ + if(has_extensions) { + asn_bit_outp_t extadds; + + /* Special case allowing us to use exactly one byte for #8.6 */ + size_t aoms_length_bits = specs->aoms_count; + size_t aoms_length_bytes = (7 + aoms_length_bits) >> 3; + uint8_t unused_bits = 0x07 & (8 - (aoms_length_bits & 0x07)); + + assert(1 + aoms_length_bytes <= 127); + + memset(&extadds, 0, sizeof(extadds)); + extadds.output = cb; + extadds.op_key = app_key; + + /* #8.6 length determinant */ + ret = asn_put_few_bits(&extadds, (1 + aoms_length_bytes), 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Number of unused bytes, #16.4.2 */ + ret = asn_put_few_bits(&extadds, unused_bits, 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Encode presence bitmap #16.4.3 */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + memb_ptr = 0; /* Do not encode default value. */ + } + ret |= asn_put_few_bits(&extadds, memb_ptr ? 1 : 0, 1); + } + if(ret < 0) ASN__ENCODE_FAILED; + + asn_put_aligned_flush(&extadds); + computed_size += extadds.flushed_bytes; + + /* Now, encode extensions */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default value. */ + } else { + ssize_t wrote = oer_open_type_put( + elm->type, elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(wrote == -1) { + ASN__ENCODE_FAILED; + } + computed_size += wrote; + } + } else if(!elm->optional) { + ASN__ENCODE_FAILED; + } + } + } /* if(has_extensions) */ + + + { + asn_enc_rval_t er = {0, 0, 0}; + er.encoded = computed_size; + ASN__ENCODED_OK(er); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_print.c new file mode 100644 index 000000000..14a0af7dc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_print.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_rfill.c new file mode 100644 index 000000000..aae0e9e94 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_rfill.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_uper.c new file mode 100644 index 000000000..39a5c5653 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_uper.c @@ -0,0 +1,429 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_xer.c new file mode 100644 index 000000000..5ae814e01 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SEQUENCE_xer.c @@ -0,0 +1,348 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF.c new file mode 100644 index 000000000..a31f816cc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF.c @@ -0,0 +1,371 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, +#if !defined(ASN_DISABLE_PRINT_SUPPORT) + SET_OF_print, +#else + 0, +#endif /* !defined(ASN_DISABLE_PRINT_SUPPORT) */ + SET_OF_compare, +#if !defined(ASN_DISABLE_BER_SUPPORT) + SET_OF_decode_ber, + SET_OF_encode_der, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_XER_SUPPORT) + SET_OF_decode_xer, + SET_OF_encode_xer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_XER_SUPPORT) */ +#if !defined(ASN_DISABLE_JER_SUPPORT) + SET_OF_encode_jer, +#else + 0, +#endif /* !defined(ASN_DISABLE_JER_SUPPORT) */ +#if !defined(ASN_DISABLE_OER_SUPPORT) + SET_OF_decode_oer, + SET_OF_encode_oer, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_OER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + SET_OF_decode_uper, + SET_OF_encode_uper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + SET_OF_decode_aper, + SET_OF_encode_aper, +#else + 0, + 0, +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ +#if !defined(ASN_DISABLE_RFILL_SUPPORT) + SET_OF_random_fill, +#else + 0, +#endif /* !defined(ASN_DISABLE_RFILL_SUPPORT) */ + 0 /* Use generic outmost tag fetcher */ +}; + +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { +#if !defined(ASN_DISABLE_BER_SUPPORT) + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; +#endif /* !defined(ASN_DISABLE_BER_SUPPORT) */ +#if !defined(ASN_DISABLE_UPER_SUPPORT) + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) */ +#if !defined(ASN_DISABLE_APER_SUPPORT) + case SOES_CAPER: + erval = aper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; +#endif /* !defined(ASN_DISABLE_APER_SUPPORT) */ + + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_aper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_aper.c new file mode 100644 index 000000000..2abe91099 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_aper.c @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_enc_rval_t +SET_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SET OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %lld ub %lld %s", + (long long int)ct->lower_bound, + (long long int)ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + /*if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED;*/ + + if (aper_put_length(po, ct->lower_bound, ct->upper_bound, list->count - ct->lower_bound, 0) < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Canonical PER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CAPER); + + for(seq = 0; seq < list->count;) { + ssize_t may_encode; + int need_eom = 0; + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + aper_put_length(po, -1, -1, list->count - seq, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + while(may_encode--) { + const struct _el_buffer *el = &encoded_els[seq++]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + if(need_eom && (aper_put_length(po, -1, -1, 0, NULL) < 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%lld elements from %s", + (long)nelems, (long long int)ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + if (ct) + nelems = aper_get_length(pd, ct->lower_bound, ct->upper_bound, + ct->effective_bits, &repeat); + else + nelems = aper_get_length(pd, -1, -1, -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_ber.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_ber.c new file mode 100644 index 000000000..bcd327f36 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_ber.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef PHASE_OUT +#define PHASE_OUT(ctx) \ + do { \ + ctx->phase = 10; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Subtracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, + ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_jer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_jer.c new file mode 100644 index 000000000..ff62d79f2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_jer.c @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef struct jer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} jer_tmp_enc_t; + +static int +SET_OF_encode_jer_callback(const void *buffer, size_t size, void *key) { + jer_tmp_enc_t *t = (jer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} + +static int +SET_OF_jer_order(const void *aptr, const void *bptr) { + const jer_tmp_enc_t *a = (const jer_tmp_enc_t *)aptr; + const jer_tmp_enc_t *b = (const jer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + +asn_enc_rval_t +SET_OF_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = 0; + jer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (jer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_jer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("\"", 1, mname, mlen, "\": ", 3); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->jer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + /* if(mname) { */ + /* ASN__CALLBACK3("", 1); */ + /* } */ + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + jer_tmp_enc_t *enc = encs; + jer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_jer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_oer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_oer.c new file mode 100644 index 000000000..fa43ce5bc --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_oer.c @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t _rval; \ + _rval.code = _code; \ + _rval.consumed = consumed_myself; \ + return _rval; \ + } while(0) + +/* + * The SEQUENCE OF and SET OF values utilize a "quantity field". + * It is is a pointless combination of #8.6 (length determinant, capable + * of encoding tiny and huge numbers in the shortest possible number of octets) + * and the variable sized integer. What could have been encoded by #8.6 alone + * is required to be encoded by #8.6 followed by that number of unsigned octets. + * This doesn't make too much sense. It seems that the original version of OER + * standard have been using the unconstrained unsigned integer as a quantity + * field, and this legacy have gone through ISO/ITU-T standardization process. + */ +static ssize_t +oer_fetch_quantity(const void *ptr, size_t size, size_t *qty_r) { + const uint8_t *b; + const uint8_t *bend; + size_t len = 0; + size_t qty; + + ssize_t len_len = oer_fetch_length(ptr, size, &len); + if(len_len <= 0) { + *qty_r = 0; + return len_len; + } + + if((len_len + len) > size) { + *qty_r = 0; + return 0; + } + + b = (const uint8_t *)ptr + len_len; + bend = b + len; + + /* Skip the leading 0-bytes */ + for(; b < bend && *b == 0; b++) { + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *qty_r = 0; + return -1; + } + + for(qty = 0; b < bend; b++) { + qty = (qty << 8) + *b; + } + + if(qty > RSIZE_MAX) { /* A bit of C11 validation */ + *qty_r = 0; + return -1; + } + + *qty_r = qty; + assert((size_t)len_len + len == (size_t)(bend - (const uint8_t *)ptr)); + return len_len + len; +} + +asn_dec_rval_t +SET_OF_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch number of elements to decode. + */ + size_t length = 0; + size_t len_size = oer_fetch_quantity(ptr, size, &length); + switch(len_size) { + case 0: + RETURN(RC_WMORE); + case -1: + RETURN(RC_FAIL); + default: + ADVANCE(len_size); + ctx->left = length; + } + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + const void *base_ptr = ptr; + ber_tlv_len_t base_ctx_left = ctx->left; + + assert(td->elements_count == 1); + + ASN_DEBUG("OER SET OF %s Decoding PHASE 1", td->name); + + for(; ctx->left > 0; ctx->left--) { + asn_dec_rval_t rv = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, &ctx->ptr, ptr, + size); + ADVANCE(rv.consumed); + switch(rv.code) { + case RC_OK: + if(ASN_SET_ADD(list, ctx->ptr) != 0) { + RETURN(RC_FAIL); + } else { + ctx->ptr = 0; + /* + * This check is to avoid compression bomb with + * specs like SEQUENCE/SET OF NULL which don't + * consume data at all. + */ + if(rv.consumed == 0 && base_ptr == ptr + && (base_ctx_left - ctx->left) > 200) { + ASN__DECODE_FAILED; + } + break; + } + case RC_WMORE: + RETURN(RC_WMORE); + case RC_FAIL: + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + SET_PHASE(ctx, 3); + RETURN(RC_FAIL); + } + } + /* Decoded decently. */ + NEXT_PHASE(ctx); + } + /* Fall through */ + case 2: + /* Ignore fully decoded */ + assert(ctx->left == 0); + RETURN(RC_OK); + case 3: + /* Failed to decode. */ + RETURN(RC_FAIL); + } + + return rval; +} + +static ssize_t +oer_put_quantity(size_t qty, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t buf[1 + sizeof(size_t)]; + uint8_t *b = &buf[sizeof(size_t)]; /* Last addressable */ + size_t encoded; + + do { + *b-- = qty; + qty >>= 8; + } while(qty); + + *b = sizeof(buf) - (b-buf) - 1; + encoded = sizeof(buf) - (b-buf); + if(cb(b, encoded, app_key) < 0) + return -1; + return encoded; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SET_OF_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_TYPE_member_t *elm; + const asn_anonymous_set_ *list; + size_t computed_size = 0; + ssize_t qty_len; + int n; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + elm = td->elements; + list = _A_CSET_FROM_VOID(sptr); + + qty_len = oer_put_quantity(list->count, cb, app_key); + if(qty_len < 0) { + ASN__ENCODE_FAILED; + } + computed_size += qty_len; + + for(n = 0; n < list->count; n++) { + void *memb_ptr = list->array[n]; + asn_enc_rval_t er = {0,0,0}; + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded < 0) { + return er; + } else { + computed_size += er.encoded; + } + } + + { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_print.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_print.c new file mode 100644 index 000000000..c6bc5b6b0 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_print.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_rfill.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_rfill.c new file mode 100644 index 000000000..99f78b728 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_rfill.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } +#else + if(!constraints) constraints = &td->encoding_constraints; +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: +#if !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } +#endif /* !defined(ASN_DISABLE_UPER_SUPPORT) || !defined(ASN_DISABLE_APER_SUPPORT) */ + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_uper.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_uper.c new file mode 100644 index 000000000..4fb326e00 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_uper.c @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_xer.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_xer.c new file mode 100644 index 000000000..065bf705f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_SET_OF_xer.c @@ -0,0 +1,314 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0}; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, + &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; + +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} + +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constr_TYPE.c b/etsi_its_coding/etsi_its_cpm_coding/src/constr_TYPE.c new file mode 100644 index 000000000..48fe7396f --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/constraints.c b/etsi_its_coding/etsi_its_cpm_coding/src/constraints.c new file mode 100644 index 000000000..4733791da --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/constraints.c @@ -0,0 +1,94 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +CC_PRINTFLIKE(4, 5) +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/der_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/der_encoder.c new file mode 100644 index 000000000..15c0f4276 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/jer_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/jer_encoder.c new file mode 100644 index 000000000..6c36361b2 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/jer_encoder.c @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The JER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +jer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("{\n\"", 3, mname, mlen, "\":", 2); + + int xFlag = 0; + tmper = td->op->jer_encoder(td, sptr, 1, xFlag, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK("}", 1); + // ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for jer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +jer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +jer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = jer_encode(td, sptr, jer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/oer_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/oer_decoder.c new file mode 100644 index 000000000..f8b3a4186 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/oer_decoder.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER decoder of any type. + */ +asn_dec_rval_t +oer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->oer_decoder(opt_codec_ctx, type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + ptr, size /* Buffer and its size */ + ); +} + +/* + * Open Type is encoded as a length (#8.6) followed by that number of bytes. + * Since we're just skipping, reading the length would be enough. + */ +ssize_t +oer_open_type_skip(const void *bufptr, size_t size) { + size_t len = 0; + return oer_fetch_length(bufptr, size, &len); +} + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *bufptr, size_t size) { + asn_dec_rval_t dr; + size_t container_len = 0; + ssize_t len_len; + enum asn_struct_free_method dispose_method = + (*struct_ptr) ? ASFM_FREE_UNDERLYING_AND_RESET : ASFM_FREE_EVERYTHING; + + /* Get the size of a length determinant */ + len_len = oer_fetch_length(bufptr, size, &container_len); + if(len_len <= 0) { + return len_len; /* Error or more data expected */ + } + + /* + * len_len can't be bigger than size, but size without len_len + * should be bigger or equal to container length + */ + if(size - len_len < container_len) { + /* More data is expected */ + return 0; + } + + dr = td->op->oer_decoder(opt_codec_ctx, td, constraints, struct_ptr, + (const uint8_t *)bufptr + len_len, container_len); + if(dr.code == RC_OK) { + return len_len + container_len; + } else { + /* Even if RC_WMORE, we can't get more data into a closed container. */ + td->op->free_struct(td, *struct_ptr, dispose_method); + *struct_ptr = NULL; + return -1; + } +} + + +asn_dec_rval_t +oer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + ssize_t len_len; + + (void)td; + (void)opt_codec_ctx; + (void)constraints; + + if(!st) { + st = (ASN__PRIMITIVE_TYPE_t *)(*sptr = CALLOC( + 1, sizeof(ASN__PRIMITIVE_TYPE_t))); + if(!st) ASN__DECODE_FAILED; + } + + + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/oer_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/oer_encoder.c new file mode 100644 index 000000000..e573823dd --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/oer_encoder.c @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER encoder of any type. + */ +asn_enc_rval_t +oer_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("OER encoder invoked for %s", type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->oer_encoder( + type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for oer_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int +encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the oer_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +oer_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + if(type_descriptor->op->oer_encoder == NULL) { + ec.encoded = -1; + ec.failed_type = type_descriptor; + ec.structure_ptr = struct_ptr; + ASN_DEBUG("OER encoder is not defined for %s", + type_descriptor->name); + } else { + ec = type_descriptor->op->oer_encoder( + type_descriptor, constraints, + struct_ptr, /* Pointer to the destination structure */ + encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + } + return ec; +} + +asn_enc_rval_t +oer_encode_primitive(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + ssize_t ret; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s (%" ASN_PRI_SIZE " bytes)", td ? td->name : "", st->size); + + /* + * X.696 (08/2015) #27.2 + */ + ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +static int +oer__count_bytes(const void *buffer, size_t size, void *bytes_ptr) { + size_t *bytes = bytes_ptr; + (void)buffer; + *bytes += size; + return 0; +} + +ssize_t +oer_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t serialized_byte_count = 0; + asn_enc_rval_t er = {0,0,0}; + ssize_t len_len; + + er = td->op->oer_encoder(td, constraints, sptr, oer__count_bytes, + &serialized_byte_count); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + len_len = oer_serialize_length(serialized_byte_count, cb, app_key); + if(len_len == -1) return -1; + + er = td->op->oer_encoder(td, constraints, sptr, cb, app_key); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + return len_len + er.encoded; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/oer_support.c b/etsi_its_coding/etsi_its_cpm_coding/src/oer_support.c new file mode 100644 index 000000000..fd3563d9d --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/oer_support.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#include + +/* + * Fetch the length determinant (X.696 08/2015, #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_fetch_length(const void *bufptr, size_t size, size_t *len_r) { + uint8_t first_byte; + size_t len_len; /* Length of the length determinant */ + const uint8_t *b; + const uint8_t *bend; + size_t len; + + if(size == 0) { + *len_r = 0; + return 0; + } + + first_byte = *(const uint8_t *)bufptr; + if((first_byte & 0x80) == 0) { /* Short form */ + *len_r = first_byte; /* 0..127 */ + return 1; + } + + len_len = (first_byte & 0x7f); + if((1 + len_len) > size) { + *len_r = 0; + return 0; + } + + b = (const uint8_t *)bufptr + 1; + bend = b + len_len; + + for(; b < bend && *b == 0; b++) { + /* Skip the leading 0-bytes */ + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *len_r = 0; + return -1; + } + + for(len = 0; b < bend; b++) { + len = (len << 8) + *b; + } + + if(len > RSIZE_MAX) { /* A bit of C11 validation */ + *len_r = 0; + return -1; + } + + *len_r = len; + assert(len_len + 1 == (size_t)(bend - (const uint8_t *)bufptr)); + return len_len + 1; +} + + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t +oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, + void *app_key) { + uint8_t scratch[1 + sizeof(length)]; + uint8_t *sp = scratch; + int littleEndian = 1; /* Run-time detection */ + const uint8_t *pstart; + const uint8_t *pend; + const uint8_t *p; + int add; + + if(length <= 127) { + uint8_t b = length; + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } + + if(*(char *)&littleEndian) { + pstart = (const uint8_t *)&length + sizeof(length) - 1; + pend = (const uint8_t *)&length; + add = -1; + } else { + pstart = (const uint8_t *)&length; + pend = pstart + sizeof(length); + add = 1; + } + + for(p = pstart; p != pend; p += add) { + /* Skip leading zeros. */ + if(*p) break; + } + + for(sp = scratch + 1; ; p += add) { + *sp++ = *p; + if(p == pend) break; + } + assert((sp - scratch) - 1 <= 0x7f); + scratch[0] = 0x80 + ((sp - scratch) - 1); + + if(cb(scratch, sp - scratch, app_key) < 0) { + return -1; + } + + return sp - scratch; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/per_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/per_decoder.c new file mode 100644 index 000000000..8b1345628 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/per_decoder.c @@ -0,0 +1,5 @@ +#include +#include +#include + +// Absolutely nothing diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/per_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/per_encoder.c new file mode 100644 index 000000000..798c58693 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/per_encoder.c @@ -0,0 +1,35 @@ +#include +#include + +int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/per_opentype.c b/etsi_its_coding/etsi_its_cpm_coding/src/per_opentype.c new file mode 100644 index 000000000..db6232426 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/per_opentype.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +/* + * Internal functions. + */ + +asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/per_support.c b/etsi_its_coding/etsi_its_cpm_coding/src/per_support.c new file mode 100644 index 000000000..ef8c4c5b9 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/per_support.c @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +// Absolutely nothing diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/uper_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/uper_decoder.c new file mode 100644 index 000000000..f650ecb77 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/uper_decoder.c @@ -0,0 +1,96 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/uper_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/uper_encoder.c new file mode 100644 index 000000000..32f04a8c6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/uper_encoder.c @@ -0,0 +1,127 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/uper_opentype.c b/etsi_its_coding/etsi_its_cpm_coding/src/uper_opentype.c new file mode 100644 index 000000000..192c3a678 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/uper_opentype.c @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, (buf == NULL)? NULL : buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* No one would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/uper_support.c b/etsi_its_coding/etsi_its_cpm_coding/src/uper_support.c new file mode 100644 index 000000000..0be261cf6 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/uper_support.c @@ -0,0 +1,311 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, uintmax_t *out_value, int nbits) { + uintmax_t lhalf; /* Lower half of the number*/ + intmax_t half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((uintmax_t)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, uintmax_t v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__imax_range(intmax_t lb, intmax_t ub, uintmax_t *range_r) { + uintmax_t bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_imax_range_rebase(intmax_t v, intmax_t lb, intmax_t ub, uintmax_t *output) { + uintmax_t range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__imax_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(v+1) + (uintmax_t)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + uintmax_t rebased = 1 + (uintmax_t)-(lb+1) + (uintmax_t)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_rebase(long v, intmax_t lb, intmax_t ub, unsigned long *output) { + uintmax_t tmp = *output; + int rc = per_imax_range_rebase((intmax_t)v, lb, ub, &tmp); + *output = tmp; + return rc; +} + +int +per_imax_range_unrebase(uintmax_t inp, intmax_t lb, intmax_t ub, intmax_t *outp) { + uintmax_t range; + + if(per__imax_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= INTMAX_MAX) { + *outp = (intmax_t)inp + lb; + } else { + *outp = (lb + INTMAX_MAX + 1) + (intmax_t)((inp - INTMAX_MAX) - 1); + } + + return 0; +} + +int +per_long_range_unrebase(unsigned long inp, intmax_t lb, intmax_t ub, long *outp) { + intmax_t tmp = *outp; + int rc = per_imax_range_unrebase((uintmax_t)inp, lb, ub, &tmp); + *outp = tmp; + return rc; +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/xer_decoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/xer_decoder.c new file mode 100644 index 000000000..f41e607bf --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = (p == NULL)? NULL : p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/xer_encoder.c b/etsi_its_coding/etsi_its_cpm_coding/src/xer_encoder.c new file mode 100644 index 000000000..fc70eec07 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/etsi_its_coding/etsi_its_cpm_coding/src/xer_support.c b/etsi_its_coding/etsi_its_cpm_coding/src/xer_support.c new file mode 100644 index 000000000..54d64bd91 --- /dev/null +++ b/etsi_its_coding/etsi_its_cpm_coding/src/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} +