Skip to content
EfcDsrcApplication.asn 18.1 KiB
Newer Older
filatov's avatar
filatov committed
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
filatov's avatar
filatov committed
--
-- This ASN.1 was generated: 30.08.2016
filatov's avatar
filatov committed
--
-- This document contains a compile clean version of EfcDsrcApplication module
filatov's avatar
filatov committed
--
-- Published version location:
-- https://standards.iso.org/iso/14906/ed-3/en/ISO14906(2018)EfcDsrcApplicationv6.asn
filatov's avatar
filatov committed
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EfcDsrcApplication {iso(1) standard(0) 14906 application(0) version6(6)}
garciay's avatar
garciay committed
DEFINITIONS AUTOMATIC TAGS ::= BEGIN
EXPORTS ALL;
IMPORTS
CountryCode, CS5, AVIAEIIssuerIdentifier
garciay's avatar
garciay committed
FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} 
filatov's avatar
filatov committed
-- defined in ISO 14816 --
Yann Garcia's avatar
Yann Garcia committed
AttributeIdList, Attributes{}, AttributeList{}
FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version7(7)};
filatov's avatar
filatov committed
-- NOTE: The following are the definitions of the action and response
-- parameters
ActualNumberOfPassengers ::= Int1
garciay's avatar
garciay committed
AxleWeightLimits ::= SEQUENCE {
filatov's avatar
filatov committed
	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)
filatov's avatar
filatov committed
DieselEmissionValues::= SEQUENCE {
	particulate SEQUENCE {
garciay's avatar
garciay committed
    unitType UnitType,
    value INTEGER (0..32767)
filatov's avatar
filatov committed
	},
absorptionCoeff Int2 }
EFC-ContextMark ::= SEQUENCE {
contractProvider Provider,
typeOfContract OCTET STRING (SIZE(2)),
contextVersion INTEGER(0..127,...)
filatov's avatar
filatov committed
}

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),
garciay's avatar
garciay committed
	eev (15)
} -- 4 bits, EURO-Classes as defined in EC directive 88/77/EEC, annex 1
garciay's avatar
garciay committed
-- 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
filatov's avatar
filatov committed
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),
garciay's avatar
garciay committed
	solar (7),
	hybrid (8),
	hydrogen (9)
	-- (10-255) are reserved for future CEN use
filatov's avatar
filatov committed
} (0..255)
Engine ::= SEQUENCE{
engineCapacity Int2,
enginePower Int2
}
EquipmentOBUId ::= OCTET STRING
EquipmentStatus ::= BIT STRING (SIZE(16))
filatov's avatar
filatov committed
ExhaustEmissionValues ::= SEQUENCE {
	unitType UnitType,
garciay's avatar
garciay committed
	emissionCO INTEGER (0..32767),
filatov's avatar
filatov committed
	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
filatov's avatar
filatov committed
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
}
filatov's avatar
filatov committed
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.
filatov's avatar
filatov committed

garciay's avatar
garciay committed
Provider ::= SEQUENCE {
    countryCode CountryCode,
providerIdentifier AVIAEIIssuerIdentifier
}
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 EFC-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
}
EFC-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"
filatov's avatar
filatov committed
}

garciay's avatar
garciay committed
SoundLevel ::= SEQUENCE{
    soundstationary Int1,
    sounddriveby Int1
filatov's avatar
filatov committed
}
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
garciay's avatar
garciay committed
UnitType::= ENUMERATED {
filatov's avatar
filatov committed
	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
garciay's avatar
garciay committed
VehicleDimensions ::= SEQUENCE {
    vehicleLengthOverall Int1,
    vehicleHeigthOverall Int1,
    vehicleWidthOverall Int1
filatov's avatar
filatov committed
}
VehicleLicencePlateNumber ::= LPN
VehicleIdentificationNumber ::= CS5
VehicleSpecificCharacteristics ::= SEQUENCE {
environmentalCharacteristics EnvironmentalCharacteristics,
engineCharacteristics EngineCharacteristics,
descriptiveCharacteristics DescriptiveCharacteristics,
futureCharacteristics FutureCharacteristics
}
VehicleTotalDistance ::= Int4
VehicleWeightLaden ::= Int2
VehicleCurrentMaxTrainWeight ::= Int2
garciay's avatar
garciay committed
VehicleWeightLimits ::= SEQUENCE {
    vehicleMaxLadenWeight Int2,
    vehicleTrainMaximumWeight Int2,
    vehicleWeightUnladen Int2
filatov's avatar
filatov committed
}
filatov's avatar
filatov committed
END