Ethm1 Op Int 2020-03-05 4f512412
Ethm1 Op Int 2020-03-05 4f512412
Short technical description: INT-RS v1.14 2020-01-23, INT-RS Plus v2.18 2020-01-23
and ETHM-1 v1.07 2015-03-02 / ETHM-1 Plus v2.05 2018-01-11
The INT-RS module is an INTEGRA LCD-bus to RS-232 converter. It is dedicated to work with INTEGRA v1.13 2015-03-14 or
newer. The ETHM-1 module converts INTEGRA LCD-bus to Ethernet network - its protocol is described in Function 2 chapter.
INT-RS Plus is 100% backward compatible with INT-RS.
Further in the document the name INT-RS will be used both for INT-RS and INT-RS Plus.
To properly configure INT-RS module with INTEGRA panel, the following steps should be done:
1) Set the module address using DIP-switches 3..1 (3-MSB, 1-LSB). Allowed addresses are:
- 0..3 - for INTEGRA 24 and 32 (i.e. DIP3='OFF')
- 0..7 - for INTEGRA 64, 128, 128-WRL, 64 Plus, 128 Plus and 256 Plus
E.g. to set the 6 address = 110bin, the DIP-switches should be moved to: DIP3='ON', DIP2='ON', DIP1='OFF'.
2) Set the module function using DIP-switches 8..4 (8-MSB, 4-LSB). Possible values are 0 to 31 = 00000 bin to 11111bin, but
only the first few functions are present (see description below).
3) Connect INT-RS module to INTEGRA LCD bus using 4-wire cable.
4) Enter the service mode, go to the Structure menu -> Hardware menu -> Identification menu -> LCD keypads id. function.
For more details refer to INTEGRA manuals.
RS-232 serial port of INT-RS module is configured as 4800/8/1/N. The DB9-male connector on the PCB uses the following lines:
- RX (pin 2) - serial input
- TX (pin 3) - serial output
- DTR (pin 4) - output - active when INT-RS module has communication with INTEGRA
- GND (pin 5) - signal ground
- DSR (pin 6) - input - the module can use this signal only to generate 'No external device DTR signal' event
The GND lines between INT-RS module and external device must be tied together.
The RX and TX lines should be swapped.
The DTR and DSR lines should also be swapped, if they are used.
In INTEGRA service mode it can be set that INT-RS module does or does not generate 'No external device DTR signal' event. It can
also be set that INT-RS module does or does not check '?',#13 command (see below). If set, a monitoring trouble arises if external
device does not ask INT-RS with '?',#13 question for a time longer that 32 seconds.
Communication between INT-RS module and external device is arranged is such a way that external device should ask INT-RS
module to check if a new event is ready to be send to a monitoring station. All data are ASCII chars ended with CR char (#13 = 0x0D
byte). Data exchange is no time dependent.
Commands that INT-RS module understands:
- '?',#13 - a question if a new event is ready (2 bytes: 0x3F, 0x0D)
- '+',m,#13 - confirmation of sending event with marker m (3 bytes: 0x2B, m, 0x0D)
- '-',m,#13 - error sending event with marker m (3 bytes: 0x2D, m, 0x0D)
An answer is returned only on '?',#13 question. Possible answers are listed below:
- 'OK',#13 - no new event to send
- 'EN=m,s,iiii,cc'#13 - 4/2 event to sent: m - event marker, s - monitoring station number ('1' or '2'),
iiii - event identifier, cc - event code
- 'EC=m,s,iiii,q,ccc,pp,nnn'#13 - Contact ID event to send: s - monitoring station number ('1' or '2'), m - event
marker, iiii - event identifier, q and ccc - event code, pp - partition number,
nnn - source number
Events format and what events should be sent (4/2 or Contact ID) are to be set in INTEGRA service mode.
Event marker m is a char between 'a' and 'z'. The current event and its marker remain unchanged upon successive '?',#13 questions,
until the event is confirmed by '+',m,#13 command from the external device or if INTEGRA time-out occurs (75 seconds). The next
event, if ready, will be submitted by INT-RS module with succeeding value of marker m.
-1-
SATEL 2020-03-05
RS-232 serial port of INT-RS module is configured as 19200/8/1/N. The DB9 connector uses the same lines as in Function 1.
Communication between INT-RS module and external device is arranged is such a way that external device should ask (send
command to) INT-RS module, and the module will answer immediately, if it is not marked otherwise.
Data exchange is no time dependent. The protocol uses the following frame structure (both ways - from and to INT-RS):
0xFE 0xFE cmd d1 d2 ... dn crc.high crc.low 0xFE 0x0D
The 16-bit crc sum is calculated as follows (see Appendix 4):
1) Set crc := 0x147A
2) For all successive bytes b = cmd, d1, d2, ..., dn perform the crc update steps:
a) crc := rl(crc) - rotate crc 1 bit left (msb=bit.15 shifts into lsb=bit.0 position)
b) crc := crc xor 0xFFFF
c) crc := crc + crc.high + b, e.g. if crc=0xFEDC and b=0xA9 then: 0xFEDC + 0xFE + 0xA9 = 0x0083
The 0xFE byte is special value:
1) Two (or more) successive 0xFE mean frame synchronization - i.e. if device waits for any data-frame byte and it receives
0xFE, 0xFE - it should interrupt collecting the current frame and start waiting for cmd.
2) If device is waiting for the 1st byte of a frame (i.e. waiting for cmd), receiving 0xFE should not change it - device should be
still waiting for cmd. So, cmd can not be 0xFE.
3) If any byte of the frame (i.e. cmd, d1, d2, ..., dn, crc.high, crc.low) to be sent is equal 0xFE, the following two bytes must be
sent instead of single 0xFE byte: 0xFE, 0xF0. In such case only single 0xFE should be used to update crc.
4) If 0xFE, 0x0D are received, it means the frame is completed and it can be processed - i.e. check crc and analyze.
5) If other value after 0xFE is received - treat it as 0xFE, 0xFE (i.e. treat it as synchronization sequence).
If frame is corrupted (i.e. wrong crc sum or interrupted by 0xFE, 0xFE before completed) or cmd is not know or data length is not
suitable for cmd - it is dropped and no answer is given back. External device should act the same way.
Exemplary frames: FE FE 09 D7 EB FE 0D FE FE 1C D7 FE F0 FE 0D
-2-
SATEL 2020-03-05
Note: for INTEGRA v1.12 and newer, both 0x09 and 0x0A commands indicate really armed partitions, regardless of suppression
arm status time.
-3-
SATEL 2020-03-05
Note: in INT-RS v2.xx all commands 0x00..0x2F can be sent as 2-bytes (i.e. command byte + 1 additional byte), but those of them
that are not marked with (*) in above list will answer the same way as were sent as 1-byte command.
Note: if any command returns data that contains more zones/outputs etc. than INTEGRA connected to INT-RS, the redundancy data
returned will be cleared. E.g. if INT-RS is connected to INTEGRA 24, the command 0x00 will return 16 data bytes in which
only the first 3 bytes could be non-zero (i.e. zones 1..24) and the remaining 13 bytes should be zeros. Using 0x00 + 1 byte
command (e.g. 0x00, 0x00 - in INT-RS v2.xx only) will return 32 bytes in which 29 last bytes should be zeros.
* In INT-RS v1.xx this command is only 1-byte long and it returns 16 bytes of data.
In INT-RS v2.xx this command can be used as 1-byte long (as in v1.xx) or as 2-bytes long - send it with 1 additional byte (no
matter of its value) and this command will return 32 bytes of data (i.e. list of 1..256 zones/outputs).
2-bytes version of this command is especially usefull in conjuction with INTEGRA 256 Plus.
**** Modules with Bit1=0 (see 0x7C) do not know this command, so they will not reply.
***** Modules ealier than 2013-11-08 do not know this command, so they will not reply.
-4-
SATEL 2020-03-05
-5-
SATEL 2020-03-05
0x7F +12 bytes (this command version is available only in INT-RS v2.xx module):
6 bytes - list of 0x00..0x2F commands to be sent automatically on changed data received from INTEGRA
6 bytes - list of 0x00..0x2F commands to be sent automatically on each data received from INTEGRA
If automatic mode should be stopped just send this command with 12 zeroes of data.
INT-RS with Bit1=1 (see 0x7C) can also serve this command in the following format:
+14 bytes:
7 bytes - list of 0x00..0x31 commands to be sent automatically on changed data received from INTEGRA
7 bytes - list of 0x00..0x31 commands to be sent automatically on each data received from INTEGRA
If automatic mode should be stopped just send this command with 12 or 14 zeroes of data.
After receiving the above command initially all commands specified in its first 6 (or 7) data bytes will be sent.
The data specified in this command is not shown as changes in response to 0x7F+0/1/2 command, since it will be automaically sent.
-6-
SATEL 2020-03-05
Answers description:
RTC and basic status bits - 7 bytes - time: YYYY-MM-DD hh:mm:ss - 0xYY, 0xYY, 0xMM, 0xDD, 0xhh, 0xmm, 0xss
1 byte - .210 - day of the week (0 = Monday, 1 = Tuesday, ..., 6 = Sunday)
.7 - 1 = service mode
.6 - 1 = troubles in the system (= flashing TROUBLE LED in keypad)
1 byte - .7 - 1 = ACU-100 are present in the system
.6 - 1 = INT-RX are present in the system
.5 - 1 = troubles memory is set in INTEGRA panel
.4 - 1 = Grade2/Grade3 option is set in INTEGRA panel
.3210 - INTEGRA type:
0 = INTEGRA 24
1 = INTEGRA 32
2 = INTEGRA 64 / INTEGRA 64 Plus
3 = INTEGRA 128 / INTEGRA 128 Plus
4 = INTEGRA 128-WRL
8 = INTEGRA 256 Plus
(to read detailed type use 0x7E command)
troubles part 6 - 15 bytes - radio devices with low battery (last 120 ACU-100 devices in INTEGRA 256 Plus)
15 bytes - radio devices with no communication (last 120 ACU-100 devices in INTEGRA 256 Plus)
15 bytes - radio outputs with no communication (last 120 ACU-100 devices in INTEGRA 256 Plus)
troubles part 7 - 16 bytes - troubles - technical zones 129..256 in INTEGRA 256 Plus
16 bytes - memory of troubles - technical zones 129..256 in INTEGRA 256 Plus
15 bytes - ACU-100 modules jam level (last 15 ACU-100 modules in INTEGRA 256 Plus)
-7-
SATEL 2020-03-05
troubles memory part 3 - 15 bytes - zeros, but INTEGRA 256 Plus sends here:
2 bytes - addressable zone expanders short circuit or jammed ACU-100 modules (last 14 modules)
2 bytes - memory of above
11 bytes - zeros
15 bytes - memory of radio devices with low battery
15 bytes - memory of radio devices with no communication
15 bytes - memory of radio outputs with no communication
-8-
SATEL 2020-03-05
troubles memory part 7 - 16 bytes - memory of long zones 129..256 violation in INTEGRA 256 Plus
16 bytes - memory of no zones 129..256 violation in INTEGRA 256 Plus
16 bytes - memory of zones 129..256 tamper in INTEGRA 256 Plus
-9-
SATEL 2020-03-05
0x80 arm in mode 0: + 8 bytes - user code (with prefix, if required by INTEGRA), e.g.:
if code is '1234', no prefixes: 0x12, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
if code is '1234', prefix is '97': 0x97, 0x12, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
+ 4 bytes - partition list, e.g.:
if partition 1, 2, and 29 have to be armed: 0x03, 0x00, 0x00, 0x10
Function should return the following codes (see the 0xEF command for details):
0x00 - ok
0x01 - requesting user code not found
0x11 - can not arm, but can use force arm
0x12 - can not arm
0x86 zones bypass + 8 bytes - user code - see example for 0x80
+ 16/32 bytes (*) - zone list, e.g.: if zone 1, 3, 62 and 120 have to be bypassed:
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00
If function is accepted, function result can be checked by observe the system state
0x8A open door + 8 bytes - user code - see example for 0x80
+ 16/32 bytes (*) - output list - see example for 0x86 - outputs of a 101 type can be 'opened'
+ 8 bytes - expander list, e.g.: if expander address 4 and 63 doors have to be opened:
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
If function is accepted, function result can be checked by observe the system state
- 10 -
SATEL 2020-03-05
0x8B clear trouble mem. + 8 bytes - user code - see example for 0x80
If function is accepted, function result can be checked by observe the system state
0x8C read event + 3 bytes - last event index. Start reading events with these 3 bytes equal:
0xFF, 0xFF, 0xFF - the last event from standard events log will be returned. Test if bit Z is 0 to
check if it is 'end of events' record (see table below)
0x00, 0xFF, 0xFF - the last event from Grade2/3 events log will be returned. Test if 1st byte is 0
to check if it is 'end of events' record (see table below)
To read previous event (if this one is not 'end of events' record), call this function with event index
returned by this function. Check if returned record is 'end of events' testing Z or 1st byte, depending on
how events reading was started (0xFF, 0xFF, 0xFF = standard log, 0x00, 0xFF, 0xFF = Grade2/3 log).
Function result - 15 bytes: 1 byte - 0x8C
8 bytes - event record - see the table below
3 bytes - event index
3 bytes - event index used to call the function
Bit: .7 .6 .5 .4 .3 .2 .1 .0
1st byte Y Y Z E S2 S2 S1 S1
2nd byte K K K D D D D D
3rd byte M M M M T T T T
4th byte t t t t t t t t
5th byte P P P P P R C C
6th byte c c c c c c c c
7th byte n n n n n n n n
8th byte S S S u u u u u
YY - year marker (i.e. YEAR mod 4, e.g. 2013 mod 4 = 1, 2014 mod 4 = 2)
Z - 1 = record not empty
E - 1 = event present (normally ZE should be both 00 or 11)
S1, S2 - status of monitoring to station 1 and 2, respectively:
00 - new event, not processed by monitoring service
01 - event sent
10 - event not sent
11 - event not monitored
KKK - event class: 000 - zone and tamper alarms
001 - partition and expander alarms
010 - arming, disarming, alarm clearing
011 - zone bypasses and unbypasses
100 - access control
101 - troubles
110 - user functions
111 - system events
DDDDD - day of the month (1..31)
MMMM - month (1..12)
TTTTtttttttt - time in minutes (e.g. 17:53 = 17*60+53 = 1073)
PPPPP - partition number
R - 1 = restore
CCcccccccc - event code - use command 0x8F to convert to text (or see Appendix 1 for event list)
nnnnnnnn - source number (e.g. zone number, user number) (see Appendix 1)
SSS - object number (0..7)
uuuuu - user control number - this number is increased everytime the user is created (i.e. it will be
changed after erase and create the user). This number is important only in those events
which have the user in its description (e.g. arming by user; but e.g. zone alarm - not)
0x8D enter 1st code + 8 bytes - user code - see example for 0x80
+ 4 bytes - partition list - see example for 0x80
+ 2 bytes - 1st code validity period (low,high) in seconds
+ 1 byte - action: 0 - enter 1st code for arm
1 - enter 1st code for disarm
2 - cancel 1st code (validity period inessential)
If function is accepted, function result can be checked by observe the system state
0x8E set RTC clock + 8 bytes - user code - see example for 0x80
+ 14 bytes - time and date to set (14 ASCII chars: yyyymmddhhmmss)
- 11 -
SATEL 2020-03-05
0x8F get event text + 2 bytes (high,low) - decode event code to text description:
.15 - 0 = short, 1 = long text description
11 lsb - event code (i.e. RCCcccccccc bits as in 0x8C command)
Function result - 22 or 52 bytes (depends on selection of short/long format) as follows:
1 byte - 0x8F
2 bytes - two bytes used to call this function
1 byte - kind of long description (see Appendix 2)
2 bytes - kind of short description (see Appendix 3)
16 or 46 bytes - event text
- 12 -
SATEL 2020-03-05
0xE0 read self-info + 4/8 bytes - if 4 bytes - user code only, e.g.:
if code '1234': 0x12, 0x34, 0xFF, 0xFF
if 8 bytes - recommended usage - prefix + user code, e.g.:
if prefix '987', code '1234': 0x98, 0x71, 0x23, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF
if no prefix, code '1234': 0x12, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Function result - 30 bytes:
1 byte - 0xE0
1 byte - user number - see above numbering scheme
2 bytes - if user - user telephone code
if master - 0x00, 0x00
if service - 1st byte - existing masters, 2nd byte - 0x00
4 bytes - user partitions
1 byte - XYIpTTTT: X - 1 = user did not changed his code yet
Y - 1 = user code is recognized by other user
I - user right - zones isolating
p - 1 = user has changed his telephone code
TTTT - user type: 0 - normal
1 - single
2 - time renewable
3 - time not renewable
4 - duress
5 - mono outputs
6 - bi outputs
7 - partitions temporary blocking
8 - access to cash machine
9 - guard
10 - schedule
1 byte - user time
3 bytes - user rights:
1st byte - .0 - arming
.1 - disarming
.2 - alarm clearing in own partitions
.3 - alarm clearing in own object
.4 - alarm clearing in whole system
.5 - arm deferring
.6 - code changing
.7 - users editing
2nd byte - .0 - zones bypassing
.1 - clock setting
.2 - troubles viewing
.3 - events viewing
.4 - zones resetting
.5 - options changing
.6 - tests
.7 - downloading
3rd byte - .0 - can always disarm (i.e. even if armed by other user)
.1 - voice messaging clearing
.2 - GUARDX using
.3 - access to temporary blocked partitions
.4 - entering 1st code
.5 - entering 2nd code
.6 - outputs control
.7 - clearing latched outputs
16 bytes - user name
1 byte - .7 - user right - Simple user
.6 - user right - master
.5 - 1 = need to change prefix (can be only for master or user with master right)
.4 - 1 = need to change telephone code (can be only for users)
.3 - 1 = need to change code (can be only for time renewable users)
if user/master - .210 = object number (0..7)
if service - .210 = 0
The user must have the 'GUARDX using' right set active, otherwise the error 'requesting user code not found' will be returned.
- 13 -
SATEL 2020-03-05
0xE1 read user + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number to read (1..240 - user, 241..248 - master)
Function result - 29 bytes:
1 byte - 0xE1
1 byte - user number:
1..240 - user
241..248 - master
255 - service
4 bytes - user partitions
1 byte - XYIpTTTT - see description for 0xE0
1 byte - user time
1 byte - user time - temporary value - valid only for schedule user
3 bytes - user rights - see description for 0xE0
16 bytes - user name
1 byte - .7 - user right - Simple user
.6 - user right - master
.210 - if user/master = object number (0..7)
- if service = 0
0xE2 read users list + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) which users list is to be read
Function result - 62 bytes:
1 byte - 0xE2
1 byte - user number
30 bytes - list of all existing users
30 bytes - list of users that can be edited by this user
0xE3 read user locks + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) which locks are to be read
Function result - 10 bytes:
1 byte - 0xE3
1 byte - user number
8 bytes - list of user locks
0xE4 write user locks + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) which locks are to be written
+ 8 bytes - list of user locks
0xE5 remove user + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) to remove
- 14 -
SATEL 2020-03-05
0xE6 create user + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) to create, 255 - auto
+ 4 bytes - user-to-create code
+ 2 bytes - user-to-create telephone code - 4 x BCD or 0xFFFF
+ 4 bytes - user-to-create partitions
+ 1 byte - .7 - user right - Simple user
.6 - user right - master
.5 - user right - zones isolating
.3210 - user-to-create type
+ 1 byte - user-to-create time
+ 1 byte - user-to-create temporary time - valid only for schedule user
+ 1 byte - user-to-create 1st byte of rights
+ 1 byte - user-to-create 2nd byte of rights
+ 1 byte - user-to-create 3rd byte of rights
+ 16 byte - user-to-create name
+1 byte - user-to-create object - valid only if service is the creator
0xE7 change user + 4/8 bytes - user code (see example for 0xE0)
+ 1 byte - user number (1..248) to change
+ 4 bytes - user-to-change code - will not be changed if equal 0xFFFFFFFF
+ 2 bytes - user-to-change telephone code - will not be changed if equal 0xFFFF
+ 4 bytes - user-to-change partitions
+ 1 byte - .7 - user right - Simple user
.6 - user right - master
.5 - user right - zones isolating
.3210 - user-to-change type
+ 1 byte - user-to-change time
+ 1 byte - user-to-change temporary time - valid only for schedule user
+ 1 byte - user-to-change 1st byte of rights
+ 1 byte - user-to-change 2nd byte of rights
+ 1 byte - user-to-change 3rd byte of rights
+ 16 byte - user-to-change name
For users of the 2 and 3 types in the field '+ 1 byte - user-to-create/change time' you should give how many days the user should exist.
For users of the 10 type in the field '+ 1 byte - user-to-create/change time' you should give user schedule number (1..8),
and in the field '+ 1 byte - user-to-create/change temporary time' you give how many days the user should exist (0..254 - 0..254 days,
255 - infinite).
For users of the 7 type the field '+ 1 byte - user-to-create/change time' stands for the blocking time (1..109 minutes).
For other user types these two fields are not important (give 0 as filling).
- 15 -
SATEL 2020-03-05
- 16 -
SATEL 2020-03-05
Function can give result as below in a case of command that does not return result or in a case of an error:
1 byte - 0xE8
1 byte - '?'
1 byte - repeated command (i.e. '0', '1', '2', '3', '4', '7', '8', '9' or 'A')
1 byte - user number (can be inessential in some cases, e.g. in a case of wrong command)
1 byte - conrifmation or error:
0x00 - ok
0x01 - unknown user code
0x02 - no rights to perform action (on selected user)
0x08 - unknown command
0x8? - other errors
0xE9 change user code + 4/8 bytes - user code (see example for 0xE0)
+ 4 bytes - new user code, e.g. for code '12347': 0x12, 0x34, 0x7F, 0xFF
The length of new user code should be at least as defined in INTEGRA (and max. 8 digits).
0xEA change user tel. code + 4/8 bytes - user code (see example for 0xE0)
+ 2 bytes - new user tel. code, e.g. for code '1234': 0x12, 0x34
New user tel. code should be four digits (0..9) long.
If user does not have tel. code, the new tel. code will not be created.
- 17 -
SATEL 2020-03-05
- 18 -
SATEL 2020-03-05
** This command is available in INT-RS v1.14 2020-01-23 or newer firmware version and in INT-RS v2.18 2020-01-23 or newer
firmware version along with INTEGRA v1.19 2020-01-23 or newer firmware version.
INT-RS module returns an answer on every command - function result or 0xEF result (described below), so after sending any
command to the module please wait for answer before sending the next one (or give the module e.g. 3 seconds time-out).
- 19 -
SATEL 2020-03-05
- 20 -
SATEL 2020-03-05
- 21 -
SATEL 2020-03-05
- 22 -
SATEL 2020-03-05
- 23 -
SATEL 2020-03-05
- 24 -
SATEL 2020-03-05
Note: in INTEGRA 256 Plus - if event record describes zone or output (1..128), so read the uuuuu field and:
if uuuuu = 00000 - the zone or output number is 1..128,
if uuuuu = 00001 - add 128 to the zone or output number - i.e. 1..128 becomes 129..256.
- 25 -
SATEL 2020-03-05
- 26 -
SATEL 2020-03-05
Appendix 5 - languages
List of language coding used in INTEGRA is given in the table below. The table contains countries instead of languages in fact. One
exception is EN which stands for language, not country.
0 PL Poland
1 EN English
2 UA Ukraine
3 RU Russia
4 DE Germany
5 SK Slovakia
6 IT Italy
7 CZ Czech
8 HU Hungary
9 NL Netherlands
10 IE Ireland
11 NO Norway
12 DK Denmark
13 IS Iceland
14 GR Greece
15 FR France
16 ES Spain
17 PT Portugal
18 FI Finland
19 SI Slovenia
20 SE Sweden
21 TR Turkey
22 RO Romania
23 EE Estonia
24 BG Bulgaria
25 LV Latvia
26 MK Macedonia
27 RS Serbia
28 AL Albania
255 UN unspecified / universal
Revision history
- 27 -