-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ISO TS 14906 App -- -- This ASN.1 was generated: 30.08.2016 -- -- This document contains a compile clean version of EfcDsrcApplication module -- -- Published version location: -- https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcApplicationv6.asn -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EfcDsrcApplication {iso(1) standard(0) 14906 application(0) version6(6)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN EXPORTS ALL; IMPORTS CountryCode, CS5, IssuerIdentifier FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1) } -- defined in ISO 14816 -- AttributeIdList, Attributes{}, AttributeList{} FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version7(7)}; -- NOTE: The following are the definitions of the action and response -- parameters ActualNumberOfPassengers ::= Int1 AxleWeightLimits ::= SEQUENCE{ maxLadenweightOnAxle1 Int2, maxLadenweightOnAxle2 Int2, maxLadenweightOnAxle3 Int2, maxLadenweightOnAxle4 Int2, maxLadenweightOnAxle5 Int2 } AddRq::= SEQUENCE { attributeId INTEGER(0..127,...), value INTEGER } ChannelId::= INTEGER { obu (0), sam1 (1), -- secure application module sam2 (2), icc (3), -- integrated circuit(s) card display (4), buzzer (5), printer (6), serialInterface (7), -- serial interface: eg. RS232 and RS485 parallelInterface (8), gPS (9), tachograph (10), privateUse1 (11), -- free for proprietary use privateUse2 (12), -- free for proprietary use privateUse3 (13), -- free for proprietary use privateUse4 (14), -- free for proprietary use privateUse5 (15), -- free for proprietary use bluetooth (16) -- (17-255) are reserved for future CEN use } (0..255) ChannelRq::= SEQUENCE{ channelId ChannelId, apdu OCTET STRING -- format according to the interface -- of the channelId } ChannelRs::= SEQUENCE{ channelId ChannelId, apdu OCTET STRING -- format according to the interface -- of the channelId } CopyRq::= SEQUENCE { destinationEID INTEGER(0..127,...), attributeIdList AttributeIdList } CreditRq::= SEQUENCE { refund PaymentFee, nonce OCTET STRING, key INTEGER(0..255) } CreditRs ::= SEQUENCE { creditResult ResultFin, creditAuthenticator OCTET STRING } DebitRq::= SEQUENCE { debitPaymentFee PaymentFee, nonce OCTET STRING, keyRef INTEGER(0..255) } DebitRs ::= SEQUENCE { debitResult ResultFin, debitAuthenticator OCTET STRING } GetInstanceRq ::= SEQUENCE { posOfFirstInstance INTEGER(0..255), -- position of first instance to be retrieved posOfLastInstance INTEGER(0..255), -- position last instance to be retrieved attributeIdList AttributeIdList -- Ids of attributes to be retrieved } GetInstanceRs{Container}::= SEQUENCE (SIZE (0..127,...)) OF SEQUENCE { attributeId INTEGER(0..127,...), -- number of instances retrieved attributeValues Container (WITH COMPONENTS {octetstring PRESENT}) -- The octetstring shall contain the contatenation of -- the unaligned PER encodings of the values of the -- instances, with each encoding padded to an integral -- of octets as specified for a top-level type in -- ISO/IEC 8825-2 } GetStampedRq::= SEQUENCE { attributeIdList AttributeIdList, nonce OCTET STRING, -- e.g. a random number keyRef INTEGER(0..255) } GetStampedRs{Container}::= SEQUENCE { attributeList AttributeList{Container}, authenticator OCTET STRING } SetInstanceRq{Container} ::= SEQUENCE { posOfInstance INTEGER(0..255), attribute Attributes{Container} } SetMMIRq::= INTEGER { ok (0), -- operation / transaction successfully completed nok (1), -- operation / transaction not successfully completed contactOperator (2), -- e.g. due to low balance or battery noSignalling (255) -- no signalling -- (3-127) are reserved for future CEN use -- (128-254) are reserved for private use } (0..255) SetStampedRq{Container}::= SEQUENCE { attributeList AttributeList{Container}, nonce OCTET STRING, keyRef INTEGER(0..255) } SubRq::= SEQUENCE { attributeId INTEGER(0..127,...), value INTEGER } -- NOTE: The following are the definitions of EFC attributes CO2EmissionValue ::= Int2 ContractSerialNumber ::= Int4 ContractAuthenticator ::= OCTET STRING ContractValidity ::= SEQUENCE { contractRestrictions OCTET STRING (SIZE(4)), contractExpiryDate DateCompact } -- intended to support ISO/TR 1998 implemented systems ContractVehicle ::= LPN DateCompact::= SEQUENCE { year INTEGER (1990..2117), month INTEGER (0..12), -- Value zero shall not be used -- except with 1990 - see below. day INTEGER (0..31) -- Value zero shall not be used -- except with 1990 � see below. } -- The value "{year 1990, month 0, day 0}" is a 16-bit all-zero -- encoding, and is used to represent "no date". DescriptiveCharacteristics ::= INTEGER { noEntry (0), vehicleShape1 (1), vehicleShape2 (2), vehicleShape3 (3), vehicleShape4 (4), vehicleShape5 (5), vehicleShape6 (6), vehicleShape7 (7), vehicleShape8 (8), vehicleShape9 (9), vehicleShape10 (10), vehicleShape11 (11), vehicleShape12 (12), vehicleShape13 (13), vehicleShape14 (14), vehicleShape15 (15), vehicleShape16 (16), vehicleShape17 (17), vehicleShape18 (18), vehicleShape19 (19), vehicleShape20 (20), vehicleShape21 (21), vehicleShape22 (22), vehicleShape23 (23), vehicleShape24 (24), vehicleShape25 (25), vehicleShape26 (26), vehicleShape27 (27), vehicleShape28 (28), vehicleShape29 (29), vehicleShape30 (30), vehicleShape31 (31), vehicleShape32 (32), vehicleShape33 (33), vehicleShape34 (34), vehicleShape35 (35), vehicleShape36 (36), vehicleShape37 (37), vehicleShape38 (38), vehicleShape39 (39), vehicleShape40 (40), vehicleShape41 (41), vehicleShape42 (42), vehicleShape43 (43), vehicleShape44 (44), vehicleShape45 (45), vehicleShape46 (46), vehicleShape47 (47), vehicleShape48 (48), vehicleShape49 (49), vehicleShape50 (50) -- (1..50) are reserved for future CEN use -- (51..255) are reserved for private use } (0..255) DieselEmissionValues::= SEQUENCE { particulate SEQUENCE { unitType UnitType, value INTEGER (0..32767) }, absorptionCoeff Int2 } DriverCharacteristics ::= SEQUENCE { driverClass Int1, tripPurpose Int1 } EFC-ContextMark ::= SEQUENCE { contractProvider Provider, typeOfContract OCTET STRING (SIZE(2)), contextVersion INTEGER(0..127,...) } EnvironmentalCharacteristics::= SEQUENCE { euroValue EuroValue, copValue CopValue } EuroValue::= ENUMERATED { noEntry (0), euro-1 (1), euro-2 (2), euro-3 (3), euro-4 (4), euro-5 (5), euro-6 (6), reservedForUse1 (7), reservedForUse2 (8), reservedForUse3 (9), reservedForUse4 (10), reservedForUse5 (11), reservedForUse6 (12), reservedForUse7 (13), reservedForUse8 (14), eev (15) } -- 4 bits, EURO-Classes as defined in EC directive 88/77/EEC, annex 1 -- and in 91/542/EEC, 96/1/EC, 1999/96/EC, 2001/27/EC, regulation No 595/2009 -- and for EEV in Section 6.2.1 of Annex I in EC directive 2005/55/EC -- EUR-Class VI as defined in Regulation (EC) No 595/2009 CopValue::= ENUMERATED { noEntry (0), co2class1 (1), -- below 101 g/km co2class2 (2), -- 101 to 120 g/km co2class3 (3), -- 121 to 140 g/km co2class4 (4), -- 141 to 160 g/km co2class5 (5), -- 161 to 200 g/km co2class6 (6), -- 201 to 250 g/km co2class7 (7), -- above 250 g/km reservedforUse (8) -- reserved for future CEN and ISO use } -- 4 bits, reserved for carbon dioxide pollution values as defined in -- EC directive 2003/127/EC' EngineCharacteristics::= INTEGER { noEntry (0), noEngine (1), petrolUnleaded (2), petrolLeaded (3), diesel (4), lPG (5), battery (6), solar (7), hybrid (8), hydrogen (9) -- (10-255) are reserved for future CEN use } (0..255) Engine ::= SEQUENCE{ engineCapacity Int2, enginePower Int2 } EquipmentOBUId ::= OCTET STRING EquipmentStatus ::= BIT STRING (SIZE(16)) ExhaustEmissionValues ::= SEQUENCE { unitType UnitType, emissionCO INTEGER (0..32767), emissionHC Int2, emissionNOX Int2, emissionHCNOX Int2 } FutureCharacteristics ::= INTEGER { noEntry (0), airSuspension (1) -- (2..255) are reserved for future CEN use } (0..255) ICC-Id ::= OCTET STRING Int1 ::= INTEGER(0..255) Int2 ::= INTEGER(0..65535) Int3 ::= INTEGER(0..16777215) Int4 ::= INTEGER(0..4294967295) LPN::= SEQUENCE { countryCode CountryCode, alphabetIndicator ENUMERATED { latinAlphabetNo1 (1), -- encoded as 00 00 00'B latinAlphabetNo2 (2), -- encoded as 00 00 01'B etc latinAlphabetNo3 (3), latinAlphabetNo4 (4), latinCyrillicAlphabet (5), latinArabicAlphabet (6), latinGreekAlphabet (7), latinHebrewAlphabet (8), latinAlphabetNo5 (9), latinAlphabetNo6 (10), twoOctetBMP (11), fourOctetCanonical (12), reservedForUse1 (13), reservedForUse2 (14), reservedForUse3 (15), reservedForUse4 (16), reservedForUse5 (17), reservedForUse6 (18), reservedForUse7 (19), reservedForUse8 (20), reservedForUse9 (21), reservedForUse10 (22), reservedForUse11 (23), reservedForUse12 (24), reservedForUse13 (25), reservedForUse14 (26), reservedForUse15 (27), reservedForUse16 (28), reservedForUse17 (29), reservedForUse18 (30), reservedForUse19 (31), reservedForUse20 (32), reservedForUse21 (33) } -- 6 bits, latinAlphabetNo1 recommended -- , -- refer to Annex E for conversion from LatinAlphabetNo 2 -- and 5 to Latin AlphabetNo1 licencePlateNumber OCTET STRING } PassengerCapacity ::= SEQUENCE{ numberOfSeats Int1, numberOfStandingPlaces Int1 } PaymentFee ::= SEQUENCE { -- The fee (toll, charge or fare) which is requested by the -- service provider for the service provided or to be provided. paymentFeeAmount Int2, -- paymentFeeAmount is the value of the fee being charged for the -- service. If no unit (payment fee unit) is specified, then -- it is known by default. paymentFeeUnit PayUnit -- paymentFeeUnit is the unit in which the fee is expressed. } PaymentMeans ::= SEQUENCE { personalAccountNumber PersonalAccountNumber, paymentMeansExpiryDate DateCompact, pamentMeansUsageControl OCTET STRING(SIZE(2)) -- issuer's specified restrictions, on the geographic usage -- and services allowed for the applications } PaymentMeansBalance ::= SignedValue SignedValue ::= CHOICE { positive INTEGER (0..8388607), negative INTEGER (-8388608..-1) } -- corresponds to a �3 octets Signed Integer�, associated with the following -- examples of line codes: -- -8'388'608 : 80 00 00'H -- -1 : FF FF FF'H -- 0 : 00 00 00'H -- 1 : 00 00 01�H -- 8'388'607 : 7F FF FF'H PaymentMeansUnit ::= PayUnit PaymentSecurityData ::= OCTET STRING PayUnit ::= OCTET STRING (SIZE(2)) -- The unique designation of a Currency as defined in ISO 4217 -- using the ISO numeric binary coded decimal representation. -- The code can also express a company specific token or a -- "charging unit code" as used in the freight.unit in which -- the fee is expressed. -- Value Assignment : -- '0xxx'H Currency in main units -- '1xxx'H Currency in minor units of 10 :1 ('dime') -- '2xxx'H Currency in minor units of 100 :1 ('cents') -- '3xxx'H Currency in minor units of 1000 :1 -- '4xxx'H Currency in 'major' units / 10 -- (e.g. 10 Belgian Francs) -- '5xxx'H Currency in 'major' units / 100 -- (e.g. 100 Italian Lire) -- '6xxx'H Currency in 'major' units / 1000 -- '7xxx'H Currency in 'major' units / 10000 -- '8xxx'H Currency in 'major' units / 100000 -- where xxx is the BCD representation of "Currency" -- as defined in ISO 4217 -- '9xxx'H Tokens -- where xxx is Purse Provider specific coding. -- 'Axxx'H Charging Unit Codes, -- denoting quantification of the service provided -- (e.g. man-hours) PersonalAccountNumber ::= OCTET STRING (SIZE(10)) -- Personal account number structure � according to ISO/IEC 7812-1 -- Issuer identifier number (�BIN�) -- Major industry identifier (MII, 1 binary coded decimal, BCD) -- 0 : reserved for future use by ISO/TC68 -- 1 : airline sector -- 2 : extended airline sector -- 3 : travel and tourism sector -- 4 : financial banking sector -- 5 : financial banking sector -- 6 : commerce and banking sector -- 7 : petrol industry sector -- 8 : telecommunication sector -- 9 : reserved for national use -- Issuer identifier (5 BCD in the second edition of ISO/IEC 7812-1) -- Account number (max 12 BCD) -- Control digit (1 BCD) -- Padding bits, set to 1'B, in order to accomplish a -- total length of 10 octets. Provider ::= SEQUENCE { countryCode CountryCode, providerIdentifier IssuerIdentifier } PurseBalance ::= SEQUENCE { -- The balance on the (electronic) purse, consisting of -- the value and the unit in which it is expressed. purseValue SignedValue, -- The size of a balance expressed in a currency. -- This may be positive or negative. purseUnit PayUnit } ReceiptContract ::= SEQUENCE { sessionContractProvider Provider, sessionTypeOfContract OCTET STRING(SIZE(2)), sessionContractSerialNumber Int4 } ReceiptData1 ::= ReceiptData ReceiptData2 ::= ReceiptData ReceiptData ::= SEQUENCE { sessionTime DateAndTime, sessionServiceProvider Provider, locationOfStation Int2, sessionLocation SessionLocation, sessionType Int1, sessionResult ResultOp, sessionTariffClass Int1, sessionClaimedClass Int1, sessionFee PaymentFee, sessionContractProvider Provider, sessionTypeOfContract OCTET STRING (SIZE(2)), sessionContextVersion INTEGER (0..127,...), receiptDataAuthenticator OCTET STRING(SIZE(4)) } ReceiptDistance ::= Int3 ReceiptFinancialPart ::= SEQUENCE { personalAccountNumber PersonalAccountNumber, sessionPaymentFee PaymentFee, sessionCurrentBalance PurseBalance, receiptFinancialSerialNumber Int4 } ReceiptICC-Id ::= ICC-Id ReceiptOBUId ::= OCTET STRING ReceiptServicePart ::= SEQUENCE { sessionTime DateAndTime, sessionServiceProvider Provider, stationLocation INTEGER(0..1048575), sessionLocation BIT STRING (SIZE(8)), typeOfSession StationType, sessionResultOperational ResultOp, sessionResultFinancial ResultFin } ReceiptServiceSerialNumber ::= Int3 ReceiptAuthenticator ::= OCTET STRING ReceiptText ::= OCTET STRING ResultFin ::= OCTET STRING (SIZE(1)) -- A code designating whether a card transaction was completed successfully -- or not. Value Assignment : Hexadecimal -- Most significant 4 bits: 0 OK : -- '0x'H OK -- Most significant 4 bits > 0 Not OK : -- '1x'H Not OK, not specified further -- '2x'H Not OK, Abnormal (First or Previous) Event -- '3x'H Not OK, Contract not accepted -- '4x'H Not OK, Account or Purse not accepted -- 'x0'H not specified further -- 'x1'H Balance close to zero -- 'x2'H Balance now negative -- 'x3'H Balance Overflow -- 'x4'H Provider not accepted -- 'x5'H Authentication failure -- x6'H Vehicle Class incorrect ResultOp ::= INTEGER { correctTransaction (0), -- transaction correct obeStatusNotAccepted (1), equipmentStatusNotAccepted (2), contractNotInWhiteList (3), -- VST contract data not in white list contractIdentifierInBlackList (4), contractIdentifierNotCorrect (5), -- Luhn algorithm verification failure expiredContract (6), -- contract expired contractRestrictionsNotFulfilled (7), claimedVehicleCharacteristicsNotValid (8), vehicleClassAuthenticationFailed (9), entryVehicleClassDifferentFromExitVehicleClass (10), entryReceiptMissing (11), entryReceiptNotValid (12), entryTollStationNotValid (13), equipmentNotCertified (14), -- manufacturer or EquipClass not recognised timeDifference (15), -- problem with the time diff of the two latest receipts accessCredentialsNotAccepted (16), contractAuthenticatorNotAccepted (17), receiptAuthenticatorNotAccepted (18), claimedVehicleCharacteristicsMissing (19), paymentMeansNotAccepted (20), paymentAuthenticatorNotAccepted (21), paymentMeansInBlackList (22), paymentMeansNotCorrect (23), -- Luhn algorithm verification failure expiredPaymentMeans (24), -- PaymentMeans expired paymentMeansRestrictionsNotFulfilled (25) -- (26-255) are reserved for future CEN use } (0..255) SessionClass ::= SEQUENCE { sessionTariffClass Int1, sessionClaimedClass Int1 } SessionLocation ::= SEQUENCE { ascendingKilometrage BOOLEAN, -- travel direction indicator laneCodeNumber INTEGER(0..127) -- lane code number } StationType ::= ENUMERATED { unspecified (0), closedEntryWithPayment (1), closedEntryWithoutPayment (2), closedTransit (3), closedExit (4), closedCredit (5), mixed (6), passage (7), -- open exit checkpoint (8), reload (9), reservedForFutureCENUse1 (10), reservedForFutureCENUse2 (11), reservedForFutureCENUse3 (12), reservedForFutureCENUse4 (13), privateUse5 (14), privateUse6 (15) } DateAndTime ::= SEQUENCE { timeDate DateCompact, timeCompact SEQUENCE { -- expresses time of the day in hours, min, and sec hours INTEGER (0..23), -- number of hours after midnight mins INTEGER (0..59), -- number of minutes after the hour double-secs INTEGER (0..30) -- number of two-seconds after the minute } -- Midnight at the start of a day cannot be represented. -- Midnight at the end of a day is represented by -- {hours 23, mins 59, double-secs 30} -- The 16 bit zero value {hours 0, mins 0, double-secs 0} -- denotes "no time" } SoundLevel ::= SEQUENCE{ soundstationary Int1, sounddriveby Int1 } TrailerCharacteristics ::= SEQUENCE { trailerDetails TrailerDetails, trailerMaxLadenWeight Int2, trailerWeightUnladen Int2 } TrailerDetails::= SEQUENCE { trailerType INTEGER{ notPresent (0), -- trailer not attached or only one trailer attached, see -- VehicleAxlesNumber for more information trailer (1), -- also known as pull-bar trailer semitrailer (2) -- also known as articulate trailer -- (3..31) reserved for future CEN/ISO use } (0..31), trailerAxles TrailerAxles } TrailerLicencePlateNumber ::= LPN UnitType::= ENUMERATED { mg-km (0), mg-kWh (1) } ValidityOfContract ::= SEQUENCE { issuerRestrictions OCTET STRING (SIZE(2)), contractExpiryDate DateCompact } VehicleAuthenticator ::= OCTET STRING VehicleAxles ::= SEQUENCE { vehicleFirstAxleHeight Int1, vehicleAxlesNumber SEQUENCE { tyreType ENUMERATED{ notSpecified (0), singleTyre (1), -- single tyre on all axles dualTyres (2), -- dual tyres on at least one axle reservedForUse (3) -- reserved for future CEN use }, numberOfAxles SEQUENCE { trailerAxles TrailerAxles, tractorAxles TractorAxles } } } TrailerAxles ::= INTEGER (0..7) -- number of axles of the trailer when available TractorAxles ::= INTEGER (0..7) -- number of axles of the tractor VehicleClass ::= Int1 VehicleDimensions ::= SEQUENCE { vehicleLengthOverall Int1, vehicleHeigthOverall Int1, vehicleWidthOverall Int1 } VehicleLicencePlateNumber ::= LPN VehicleIdentificationNumber ::= CS5 VehicleSpecificCharacteristics ::= SEQUENCE { environmentalCharacteristics EnvironmentalCharacteristics, engineCharacteristics EngineCharacteristics, descriptiveCharacteristics DescriptiveCharacteristics, futureCharacteristics FutureCharacteristics } VehicleTotalDistance ::= Int4 VehicleWeightLaden ::= Int2 VehicleCurrentMaxTrainWeight ::= Int2 VehicleWeightLimits ::= SEQUENCE { vehicleMaxLadenWeight Int2, vehicleTrainMaximumWeight Int2, vehicleWeightUnladen Int2 } END