Newer
Older
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ISO TS 14906 App
-- This ASN.1 was generated: 30.08.2016
-- This document contains a compile clean version of EfcDsrcApplication module
-- 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, AVIAEIIssuerIdentifier
FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)}
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
maxLadenweightOnAxle1 Int2,
maxLadenweightOnAxle2 Int2,
maxLadenweightOnAxle3 Int2,
maxLadenweightOnAxle4 Int2,
maxLadenweightOnAxle5 Int2
}
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
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 {
absorptionCoeff Int2 }
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),
} -- 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
Engine ::= SEQUENCE{
engineCapacity Int2,
enginePower Int2
}
EquipmentOBUId ::= OCTET STRING
EquipmentStatus ::= BIT STRING (SIZE(16))
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
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
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
}
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
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,
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
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"
SoundLevel ::= SEQUENCE{
soundstationary Int1,
sounddriveby Int1
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
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