Hosts use a text-based protocol to communicate with RACE RESULT 4000/5000 Series System's decoders via TCP/IP on port 3601 or via RS232 using a USB-COM-port adapter. By default the RACE RESULT Decoder acts as server, but since protocol version 1.5 a client mode is also available. The default approach for getting passings is pull-based. Since version 1.5 the decoder can automatically push passings to the host as they appear, too.
Quick start/brief example
The following example assumes that you’ve successfully established a connection to the Decoder. You can establish a connection either with your own software or, for testing purposes, using a Telnet client like the one that Windows offers or PuTTY. For the remainder of the document, the following symbols are used:
← denotes commands that you send
→ responses from the decoder.
<CrLf> are the carriage return and line feed characters which needs to be added after every command. (Note: A telnet client will do this automatically when you press the enter key.)
For a complete description of a specific command refer to its individual section.
First set the protocol version to the latest version available at the time you are doing your implementation. That way you can use all available features. The newest protocol version might not be available if the decoder’s firmware is not up to date. Note: Newer (upcoming) firmware versions will always support older protocol versions.
← SETPROTOCOL;2.0<CrLf> → SETPROTOCOL;2.0<CrLf>
After start up, the decoder is in Test Mode and will not store passings. To switch to operation mode:
← STARTOPERATION<CrLf> → STARTOPERATION;OK;0000-00-00;00:00:00.000<CrLf>
Now passings are saved and the time is running on the decoder. You can query the current time using:
← GETTIME<CrLf> → GETTIME;0000-00-00;00:02:12.942<CrLf>
To check the current number of passings:
← PASSINGS<CrLf> → PASSINGS;1<CrLf>
This assumes that you have generated a passing on the decoder using a transponder or a marker detection.
To fetch that passing, simply send the number 1:
← 1<CrLf> → 1;592;0000-00-00;12:30:12.322;888;4;-52.778000;38cd1c;0;;;;;;;;D-4476<CrLf> <CrLf>
Note: You can query multiple passings by calling X:C where X is the first passing that should be returned and C is the max. number of passings that the call will return.
Instead of only querying the current time, you can request extended status information:
← GETSTATUS<CrLf> → GETSTATUS;0000-00-00;00:02:39.942;1;11111111;1;50;1;49.721,8.254939;1;0;;;;;;;1;0<CrLf>
You will most probably call the PASSINGS, GETTIME and GETSTATUS periodically and fetch new passings as soon as PASSINGS reports them. After your event has finished you can stop the operation mode so no new passings will be saved when the decoder detects transponders:
← STOPOPERATION<CrLf> → STOPOPERATION;OK<CrLf>
Basic commands
Get Protocol Version
In order to get protocol version information, the host sends
GETPROTOCOL<CrLf>
The decoder responds with:
GETPROTOCOL;<CurrentVersion>;<MinSupportedVersion>;<MaxSupportedVersion>
Where
<CurrentVersion> | current protocol version this connection uses for its communication |
<MinSupportedVersion> | minimal protocol version supported by this device |
<MaxSupportedVersion> | maximal protocol version supported by this device |
Protocol version
Available since protocol version 1.1
Example
← GETPROTOCOL<CrLf>
→ GETPROTOCOL;1.1;1.0;1.1<CrLf>
Set Protocol Version
To set protocol version used for this connection, the host sends
SETPROTOCOL;[<=]2.3<Version><CrLf>
where <Version> is the protocol version number. The version described in this document is 2.0.
Since protocol version 2.3 an optional <= can be specified to set the protocol version to the max. available version that is not greater than the given version.
The decoder responds with:
SETPROTOCOL;<VersionOrStatus>[;MinVersion;MaxVersion]2.3
Where <VersionOrStatus> is:
ERROR |
if the request could not be parsed |
UNKNOWN_VERSION |
if the requested version is unknown/not available |
<Version> |
otherwise |
and MinVersion and MaxVersion are the minimal respectively maximal supported protocol version.
Protocol version
Available since protocol version 1.1
Example
← SETPROTOCOL;1.4<CrLf> → SETPROTOCOL;1.4<CrLf>
Passing Record
Since protocol version 1.6:
<PassingNo>;<Bib/TranspCode>;<Date>;<Time>;[<EventID>];<Hits>;<MaxRSSI>;
<InternalData>;<IsActive>;[<Channel>];[<LoopID>];[<LoopOnly>];[<WakeupCounter>];
[<Battery>];[<Temperature>];[<InternalActiveData>];<BoxName>;<FileNumber>;[<MaxRSSIAntenna>];<BoxId><CrLf>
Older versions:
<PassingNo>;<Bib/TranspCode>;<Date>;<Time>;<EventID>;<Hits>;<MaxRSSI>
[;<InternalData>];<IsActive>[;<Channel>;<LoopID>;<LoopOnly>;<WakeupCounter>;<Battery>;<Temperature>;<InternalActiveData>]<CrLf>
Item | Description | Since protocol version | ||||||||||||||||
<PassingNo> |
Passings record number, starting at 1 for the first passing. |
1.0 | ||||||||||||||||
<Bib/TranspCode> |
Bib number of the transponder. (Since protocol version 1.2: Or transponder code in case of multi use tags or Active transponders.) |
1.0/1.2 | ||||||||||||||||
<Date> |
Format: yyyy-MM-dd |
1.0 |
||||||||||||||||
<Time> |
Time of the detection, format: hh:mm:ss.kkk |
1.0 |
||||||||||||||||
<EventID> |
ID of the bib set. The combination of <Bib> and <EventID> is unique for all RACE RESULT Bib Transponders ever produced. |
1.0 |
||||||||||||||||
<Hits> |
Number of times the tag was detected. |
1.0 |
||||||||||||||||
<MaxRSSI> |
Maximum RSSI value found while determining <Time>. |
1.1 |
||||||||||||||||
[<InternalData>] |
This field is only used for internal purposes and is optional. |
1.1 |
||||||||||||||||
<IsActive> |
1 if this passing is from an active transponder |
1.4 |
||||||||||||||||
[<Channel>] |
Channel ID (1..8) |
1.4 |
||||||||||||||||
[<LoopID>] |
Loop ID (1..8) |
1.4 |
||||||||||||||||
[<LoopOnly>] |
1, if this detection was generated in Store Mode. |
1.4 |
||||||||||||||||
[<WakeupCounter>] |
Overall wakeup counter of the transponder (new transponders start at 10000). |
1.4 |
||||||||||||||||
[<Battery>] |
Battery level in Volts. |
1.4 |
||||||||||||||||
[<Temperature>] |
Temperature in degrees Celsius. |
1.4 |
||||||||||||||||
[<InternalActiveData>] |
Data transmission details. One byte. Lowest three bits: channel busy counter (number of times, the passing could not be transmitted because the transponder could not access the channel). Next three bits: no ACK counter (number of times the passing was transmitted, but no acknowledgement was received.) Seventh bit: 1, if this passing could not be transmitted at all in a previous attempt (="stored passing", old passing), 0 otherwise. Highest bit: 1, if the transponder woke up from deep sleep because of the passing, 0 otherwise. Hint: You can check if a passing is a stored passing using[InternalData] & 0x40 == 0x40 (the seventh bit is set)
|
1.4 |
||||||||||||||||
<BoxName> |
Name of the decoder. Defaults to the Device ID. |
1.6 |
||||||||||||||||
<FileNumber> |
File number of the file to which this passing belongs. | 2.5 | ||||||||||||||||
[<MaxRSSIAntenna>] | Antenna number (1..8) which meassured the highest RSSI value. Empty for active. | 2.6 | ||||||||||||||||
<BoxId> | Device ID | 2.6 |
Note: Each individual passing record ends with <CrLf>.
Impulse Marker
Markers generated via the Decoder have always HITS=1 and RSSI=0. When using Active, the LoopID and Channel can be used to determine the source of the marker.
Get Single Passing
In order to receive a certain passing, the host sends the passing number followed by <CrLf>, e.g.
1423<CrLf>
The decoder responds with the passing record followed by <CrLf>. Therefore, the answer will end with <CrLf><CrLf>.
Examples
Single Use Tag:
1423;999;0000-00-00;12:30:45.492;888;4;-65.430000;c23fef;0;;;;;;;;D-4476<CrLf><CrLf>
Multi Use Tag:
1424;AAAA-0001;0000-00-00;12:30:45.492;0;4;-65.430000;160ca2;0;;;;;;;;D-4476<CrLf><CrLf>
Active [Pro]:
1;ZZZZZ52;0000-00-00;00:00:01.434;0;19;9;f2d3ef;1;0;0;10240;2.97;26.60;0;D-4476<CrLf><CrLf>
In case the requested passing number does not exist, the decoder responds with:
ONLY <N><CrLf>
where <N> is the number of passings available.
Get Multi Passing
In order to receive several passings, the host sends
<S>:<C><CrLf>
where <S> is the passing number of the first passing to be sent and <C> is the number of passings to be sent.
Example (to request passings 1 through to 3)
← 1:3<CrLf>
→ 1;592;0000-00-00;12:30:12.322;888;4;-52.778000;38cd1c;0;;;;;;;;D-4476<CrLf>
2;294;0000-00-00;12:30:14.991;888;3;-50.451000;a2233f;0;;;;;;;;D-4476<CrLf>
3;823;0000-00-00;12:30:18.322;312;12;-45.321000;5aabc8;0;;;;;;;;D-4476<CrLf>
<CrLf>
In case that <S> is greater than the total number of passings available, the decoder responds with:
→ ONLY <N><CrLf>
where <N> is the number of passings available.
In case that <S> is less than the total number of passings available, but <S>+<C>-1 is greater than or equal to the total number of passings, the decoder sends only <N>-<S>+1 passings. Example (for requesting passings 1 to 3, but only 2 passings are available on the device):
← 1:3<CrLf>
→ 1;592;0000-00-00;12:30:12.322;888;4;-52.778000;38cd1c;0;;;;;;;;D-4476<CrLf>
2;294;0000-00-00;12:30:14.991;888;3;-50.451000;a2233f;0;;;;;;;;D-4476<CrLf>
<CrLf>
Number of Passings
In order to receive the number of passings, the host sends
PASSINGS<CrLf>
The decoder responds with the following format:
PASSINGS;<N>;<FileNumber><CrLf>
Where
Since Protocol Version | ||
<N> |
Current number of passings | 1.0 |
<FileNumber> |
Current file number that is used to save the passings |
2.9 |
Example
← PASSINGS<CrLf> → PASSINGS;159;17<CrLf>
Get Time
To receive the current date and time of the decoder, the host sends
GETTIME<CrLf>
The decoder responds with
GETTIME;yyyy-MM-dd;hh:mm:ss.kkk<CrLf>
Example
← GETTIME<CrLf>
→ GETTIME;0000-00-00;12:43:29.942<CrLf>
Set Time
To set the current date and time of the decoder the host sends
SETTIME;yyyy-MM-dd;hh:mm:ss.kkk<CrLf>
This operation can only be done in Test Mode.
The decoder responds with
SETTIME;<Result><CrLf>
Where <Result> is:
• date and time with the format yyyy-MM-dd;hh:mm:ss.kkk, if the time was set successfully,
• ERROR, if an error occurred while parsing the request,
• OPERATIONMODE, if the Decoder is in Operation Mode.
Example
← SETTIME;0000-00-00;12:43:29.942<CrLf> → SETTIME;0000-00-00;12:43:29.942<CrLf>
Set Start Time
To set the start date and time of the decoder the host sends
SETSTARTTIME;yyyy-mmMM-dd;hh:nnmm:ss.kkk<CrLf>
This operation can only be done in Test Mode.
The decoder responds in the following format with:
SETSTARTTIME;<Result><CrLf>
Where <Result> is:
- date and time with the format yyyy-MM-dd;hh:nnmm:ss.kkk, if the time was set successfully,
- ERROR, if an error occurred while parsing the request,
- OPERATIONMODE, if the decoder is in Ooperation Mmode.
Example
← SETSTARTTIME;0000-00-00;12:43:29.942<CrLf>
→ SETSTARTTIME;0000-00-00;12:43:29.942<CrLf>
Set GPS Time
To set the current date and time of the Decoder, the host sends
SETGPSTIME[[[;<AllowEstimatedTime>];<Timeout>];<InBackground>]<CrLf>
Where
Since Protocol Version | ||
< |
If set to 1, after <Timeout > is reached, an estimated time of day will be set. |
1.4 |
< |
Timeout in seconds. Defaults to 30. |
2.4 |
<InBackground> |
Set time in background and return immediatly. | 2.9 |
This operation can only be executed in Test Mode.
The decoder responds with
SETGPSTIME;<Result><CrLf>
Where <Result> is:
-
date and time with the format yyyy-MM-dd;hh:mm:ss.kkk[;TimeIsEstimated], if the time was set successfully (where
TimeIsEstimated
is either1
or0
and is only available for protocol version >= 2.4), - NOSATELITES, if their is no receiption (or accessing the GPS module is blocked),
- ERROR, if an error occurred while parsing the request,
- OPERATIONMODE, if the decoder is in operation mode,
- BACKGROUND, if the request is executed in background.
Example
← SETGPSTIME<CrLf> → SETGPSTIME;2012-02-27;12:43:29.942<CrLf>
Get Status
In order to receive some general status information of the decoder, the host sends
GETSTATUS<CrLf>
The Decoder responds in the following format:
GETSTATUS;<Date>;<Time>;<HasPower>;<Antennas>;<IsInOperationMode>;<FileNumber>;<GPSHasFix>;<Latitude>,<Longitude>; <ReaderIsHealthy>;<BatteryCharge>;<BoardTemperature>;<ReaderTemperature>;<UHFFrequency>;<ActiveExtConnected>; [<Channel>];[<LoopID>];[<LoopPower>];[<LoopConnected>];[<LoopUnderPower>];<TimeIsRunning>;<TimeSource>; <ScheduledStandbyEnabled>;<IsInStandby>;<ErrorFlags>;[<External12Volt>]<CrLf>
Where
Since Protocol Version | ||||||||||||||||||
<Date> |
Current date of the decoder, format: yyyy-MM-dd |
1.0 | ||||||||||||||||
<Time> |
Current time of the decoder, format: hh:mm:ss.kkk |
1.0 |
||||||||||||||||
<HasPower> |
1 if the decoder has power via its Schuko AC power socket, 0 otherwise |
1.0 |
||||||||||||||||
<Antennas> |
A sequence of 8 antenna status indicators of the UHF unit. Each one is 1 if an antenna is connected, 0 otherwise. Eg. 00011001 |
1.0 |
||||||||||||||||
<IsInTimingMode> |
1 if the decoder is in Operation Mode, 0 otherwise |
1.0 |
||||||||||||||||
<FileNumber> |
Current file number that is used to save the passings |
1.0 |
||||||||||||||||
<GPSHasFix> |
1 if device has a GPS satellite fix, 0 otherwise |
1.0 |
||||||||||||||||
<Latitude> |
If the device has a GPS fix, the latitude of the device. Hemispheres indicated by +/- (prior 1.7 by N/S). Prior 1.7: Divide by 100 to get the real coordinate. |
1.0 |
||||||||||||||||
<Longitude> |
If the device has a GPS fix, the longitude of the device. Hemispheres indicated by +/- (prior 1.7 by E/W). Prior 1.7: Divide by 100 to get the real coordinate. |
1.0 |
||||||||||||||||
<ReaderIsHealthy> |
1, if the internal UHF module is in normal condition, 0 otherwise |
1.0 |
||||||||||||||||
<BatteryCharge> |
Battery charge in percent |
1.0 |
||||||||||||||||
<BoardTemperature> |
Main board temperature in degrees Celsius. Only valid if no Active Extension is connected. |
1.0 |
||||||||||||||||
<ReaderTemperature> |
Temperature of the UHF module in degrees Celsius. Only valid when there is not an Active Extension connected to the Feature Port. |
1.0 |
||||||||||||||||
<UHFFrequency> |
Currently selected frequency number. EU: 0 if frequency is set to Auto, 1=A, 2=B; JP: 0-3; All other regions: 0 |
1.0 |
||||||||||||||||
<ActiveExtConnected> |
1, if an Active Extension is connected |
1.4 | ||||||||||||||||
[<Channel>] |
Selected channel (1 -> 8) |
1.4 |
||||||||||||||||
[<LoopID>] |
Selected loop ID (1. -> 8) |
1.4 |
||||||||||||||||
[<LoopPower>] |
Selected loop power (0% -> 100%) |
1.4 |
||||||||||||||||
[<LoopConnected>] |
1, if a loop is connected |
1.4 |
||||||||||||||||
[<LoopUnderPower>] |
1, if the loop has reached its "Loop Limit" |
1.4 |
||||||||||||||||
<TimeIsRunning> |
0 if there is a static time and the decoder is not in timing mode. 1 otherwise. |
2.0 |
||||||||||||||||
<TimeSource> |
One of: |
2.0 | ||||||||||||||||
<ScheduledStandbyEnabled> | 1, if scheduled standby is enabled. | 2.5 | ||||||||||||||||
<IsInStandby> | 1, if decoder is currently in standby. | 2.5 | ||||||||||||||||
<ErrorFlags> |
0, if everything is OK. Otherwise bitmask with the following meaning:
|
3.1 | ||||||||||||||||
[<External12Volt>] | Mainboard revision >= 1.3 meassured voltage of the external battery port. Empty for revision < 1.3. | 3.2 |
Example without Active Extension:
← GETSTATUS<CrLf> → GETSTATUS;0000-00-00;12:43:29.942;1;11111111;1;50;1;49.721,8.254939;1;0;;;;;;;1;0;0;0;0;13.23<CrLf>
With an Active Extension connected:
← GETSTATUS<CrLf> → GETSTATUS;0000-00-00;12:43:29.942;1;11111111;1;50;1;49.721,8.254939;1;1;2;3;20%;1;0;1;0;0;0;0;13.23<CrLf>
Note that for protocol versions < 2.0, if no Active Extension is connected, the command won't return the fields (and semi colons) after <ActiveExtConnected>.
Get Mode
To check if the Decoder is in Operation Mode, the host sends
GETMODE<CrLf>
The decoder responds with:
In Operation Mode:
GETMODE;OPERATION<CrLf>
Otherwise:
GETMODE;TEST<CrLf>
Example
← GETMODE<CrLf> → GETMODE;OPERATION<CrLf>
Start Operation Mode
To switch the Decoder into Operation Mode, the host sends
STARTOPERATION<CrLf>
The decoder responds with:
STARTOPERATION;OK[;<Date>;<Time>]13<CrLf>
if the Decoder was switched into Operation Mode, with
STARTOPERATION;OPERATIONMODE[;<Date>;<Time>]13<CrLf>
if the Decoder already was in Operation Mode.
Where
<Date> |
Date at which the decoder was successfully put into operation mode, format: yyyy-MM-dd. Since protocol version 1.3. |
<Time> |
Time at which the decoder was successfully put into operation mode, format: hh:mm:ss.kkk. Since protocol version 1.3. |
Example
← STARTOPERATION<CrLf> → STARTOPERATION;OK;0000-00-00;00:10:00.000<CrLf>
Stop Operation Mode
To switch the decoder into Test Mode, the host sends
STOPOPERATION<CrLf>
The decoder responds with:
If the operation mode was stopped:
STOPOPERATION;OK<CrLf>
If the decoder already was in Test Mode:
STOPOPERATION;TESTMODE<CrLf>
Example
← STOPOPERATION<CrLf>
→ STOPOPERATION;OK<CrLf>
Advanced commands
Ping
If the hosts sends a
PING<CrLf>
operation, the decoder responds with
PING;PONG<CrLf>
You can use this to keep a connection alive.
Protocol version
Available since protocol version 1.5
Example
← PING<CrLf>
→ PING;PONG<CrLf>
Start Upload
To enable passings and status upload of the decoder, the host sends
STARTUPLOAD<CrLf>
The decoder responds with
STARTUPLOAD;<Result>[;<Error>]<CrLf>
Where:
<Result> | OK if upload was enabled successfully, ERROR otherwise. |
[<Error>] | NOSIM Connection type 2G/3G is selected but no SIM card is found. |
Protocol version
Available since protocol version 1.9
Example
← STARTUPLOAD<CrLf>
→ STARTUPLOAD;OK<CrLf>
Stop Upload
To stop upload, the host sends
STOPUPLOAD<CrLf>
The decoder responds with
STOPUPLOAD;OK<CrLf>
Protocol version
Available since protocol version 1.9
Example
← STOPUPLOAD<CrLf>
→ STOPUPLOAD;OK<CrLf>
Push Mode
In order to enable the push mode, the host sends
SETPUSHPASSINGS;<Enable>;<PushExisting><CrLf>
Push mode is disabled per default. Passings will be pushed in the current connection only. New passings will be pushed until push mode is disabled by calling SETPUSHPASSINGS;0
or the connection is reset or breaks.
Where
<Enable> |
1 if the decoder should push passings. 0 to disable the feature. |
<PushExisting> |
1 if the decoder should push all existing passings of the current file, 0 to send no existing passings. |
If the operation was successful, the decoder responds with:
SETPUSHPASSINGS;<Enable>;<PushExisting><CrLf>
If the parameters are incorrect:
SETPUSHPASSINGS;ERROR<CrLf>
Protocol version
Available since protocol version 1.5
Example
← SETPUSHPASSINGS;1;0<CrLf> → SETPUSHPASSINGS;1;0<CrLf> [... some time later, a passing occurs] → #P;1;592;0000-00-00;12:30:12.322;888;4;-52.778000;38cd1c;0;;;;;;;;D-4476<CrLf> [... some time later, another passing occurs] → #P;2;294;0000-00-00;12:30:14.991;888;3;-50.451000;a2233f;0;;;;;;;;D-4476<CrLf>
Push Prewarns
When using the active extension, the system can push prewarns, too. To enable them, the host sends
SETPUSHPREWARNS;1<CrLf>
To disable them:
SETPUSHPREWARNS;0<CrLf>
Prewarns will be pushed in the current connection only.
If the operation was successful, the decoder responds with:
SETPUSHPREWARNS;<Enable><CrLf>
If the parameters are incorrect:
SETPUSHPREWARNS;ERROR<CrLf>
Protocol version
Available since protocol version 1.5
Example
← SETPUSHPREWARNS;1<CrLf>
→ SETPUSHPREWARNS;1<CrLf>
[... some time later, an Active Transponder is passing over the Active Loop]
→ #W;KCBKM93<CrLf>
Enable/Disable Host if the system acts as client
Instead of a host connecting to the Decoder, the decoder can initiate a connection to a host, too. To enable a connection to a previously configured host (compare Settings -> Client Mode), the host sends
ENABLEHOST;<HostNum><CrLf>
To disable a previously configured host, the host sends
DISABLEHOST;<HostNum>[;<permanently>]<CrLf>
Where <HostNum> is the index of the host to enable (1 ->10).
0 as <HostNum> is also available since the availability of protocol version 2.7. If the current connection is a client mode connection, this will disable the host which is associated with the current connection. If 0 is given, the <permanently> parameter is also available. You can set it to 1 to disable auto start for this host.
If the host connection could be enabled, the decoder responds with:
ENABLEHOST;<HostNum><CrLf>
Where <HostNum> is the actual host index. (actual host index and given host index will differ if you pass 0 as <HostNum>). If the selected host is not configured or the index is out of range:
ENABLEHOST;ERROR<CrLf>
Note that after a successful call, it does not mean that the connection is already established. It just means that the configuration seems to be valid and the Decoder will try to connect to the host.
The decoder responds accordingly to a DISABLEHOST call, too.
Protocol version
Available since protocol version 1.5
Example
← ENABLEHOST;1<CrLf> → ENABLEHOST;1<CrLf>
Getting the status of accessible active boxes
To query the status of the connected Active Extension and the Loop Boxes that are using the same channel,
GETACTIVESTATUS<CrLf>
can be sent to the decoder. The decoder responds with:
GETACTIVESTATUS;[<DecoderId>,<IsActiveExtension>,<Channel>,<LoopID>,<LoopPower>,<LoopConnected>,<LoopUnderPower>, <OnBattery>,[<RemainingHours>],[<SupplyVoltage>],<NoiseAvg>,<NoisePeak>,<TransponderLqi>,<TransponderEd>, <BeaconLqi>,<BeaconEd>,<Mode>,<BeaconIndex>,<BeaconTimestamp>,<ChannelSwitchingMode>]1..<Count><CrLf>
Where
Parameter | Description | Since protocol version | ||||||||
<DecoderId> |
ID of the Active Extension or Loop Box. |
1.5 | ||||||||
<IsActiveExtension> |
1, if this box is the directly connected Active Extension, 0 if it is another device. |
1.5 |
||||||||
<Channel> |
Selected channel (1 -> 8) |
1.5 |
||||||||
<LoopID> |
Selected loop ID (1 -> 8) |
1.5 |
||||||||
<LoopPower> |
Selected loop power (0% -> 100%) |
1.5 |
||||||||
<LoopConnected> |
1, if a loop is connected |
1.5 |
||||||||
<LoopUnderPower> |
1, if the loop limit has been reached |
1.5 |
||||||||
<OnBattery> |
1, if the loop box runs on battery |
1.5 |
||||||||
<RemainingHours> |
Remaining run time in hours, if running on battery |
1.5 |
||||||||
<SupplyVoltage> |
Supplied Voltage to the decoder, if not running on battery |
1.5 |
||||||||
<NoiseAvg> |
Average noise on current 2.4 GHz channel |
1.8 |
||||||||
<NoisePeak> |
Peak noise on current 2.4 GHz channel |
1.8 |
||||||||
<TransponderLqi> | Do not use. | 2.3 | ||||||||
<TransponderEd> |
Signal strength of transponder data packet measured at the receiver. RSSI [dBm] = TransponderEd-90 |
2.3 | ||||||||
<BeaconLqi> |
Do not use. |
2.3 | ||||||||
<BeaconEd> |
Signal strength of beacon data packet measured at the receiver. RSSI [dBm] = TransponderEd-90 |
2.3 | ||||||||
<Mode> |
|
2.3 | ||||||||
<BeaconIndex> |
All active boxes send out one beacon per second. BeaconIndex is increased by one every time a beacon is sent. |
2.3 | ||||||||
<BeaconTimestamp> |
TimeStamp when the beacon was received. |
2.3 | ||||||||
<ChannelSwitchingMode> | AUTO, OFF, FORCE or UNKNOWN (UNKNOWN for all but the directly connected Active Extension.) | 2.3 |
If no active extension is found it will respond with:
GETACTIVESTATUS;ERROR<CrLf>
Protocol version
Available since protocol version 1.5
New File
To create a new file without stopping and restarting operation mode, the host sends
NEWFILE<CrLf>
If the decoder runs in operation mode and a new file was created the decoder responds with
NEWFILE;OK;<FileNo><CrLf>
where <FileNo> represents the file number of the newly created file.
If it is in test mode and no new file was created the decoder responds with:
NEWFILE;TESTMODE<CrLf>
Protocol version
Available since protocol version 2.0
Get File Info
To get info about a specific passings file, the host sends
GETFILEINFO;<FileNo><CrLf>
Where
<FileNo> |
File number of this file entry |
The decoder responds with
GETFILEINFO;<PassingsCount>;[<Date>];[<Time>]<CrLf>
if the file is existing. With
GETFILEINFO;ERROR<CrLf>
if the requested file could not be found.
Where
<PassingsCount> |
Number of passings in this file entry |
<Date> |
Modification date of this file entry (format yyyy-mm-dd, current system timezone), if known. |
<Time> |
Modification time of this file entry (format hh:mm:ss, current system timezone), if known. |
Protocol version
Available since protocol version 2.6
List Files
To list all current passing files, the host sends
LISTFILES<CrLf>
The decoder responds with
LISTFILES;<FileCount>[;<FileNo>,<PassingsCount>,[<Date>],[<Time>]]
Where
<FileCount> |
Number of file entries that follow |
<FileNo> |
File number of this file entry |
<PassingsCount> |
Number of passings in this file entry |
<Date> |
Modification date of this file entry (format yyyy-mm-dd, current system timezone), if known. |
<Time> |
Modification time of this file entry (format hh:mm:ss, current system timezone), if known. |
Protocol version
Available since protocol version 2.0
Clear Files
To clear all current files and move them to an archive directory, the host sends
CLEARFILES<CrLf>
If the decoder is in test mode and all files were archived the decoder responds with:
CLEARFILES;OK;<FileNo><CrLf>
If it is in operation mode and no files were archived the decoder responds with:
CLEARFILES;OPERATIONMODE<CrLf>
Protocol version
Available since protocol version 2.0
Get File
To get the content of a (non-archived) passings file, the host sends
GETFILE;<FileNo>[;<S>[:<C>]]<CrLf>
Where
<FileNo> | File number of requested passings file. |
<S> | Start index into passings file |
<C> | Number of passings to transfer. (If omitted only a single passing is returned.) |
If both <S> and <C> are omitted, the whole file is returned.
If the given file number is invalid the decoder will respond with.
GETFILE;ERROR<CrLf>
If the request is successful the decoder responds with:
GETFILE;<FileNo><CrLf>
<PassingsData>
For further information refer to Get Single Passing, Get Multi Passing and Passing record sections. Note: passing records are sent in the currently active protocol version. Random access into passing records is possible but not recommended, since implementation is optimized for sequential access.
Protocol version
Available since protocol version 2.0
Get Firmware Version
In order to get the firmware version that is currently active, the host sends
GETFIRMWAREVERSION<CrLf>
The decoder responds with:
GETFIRMWAREVERSION;<Version>
Where <Version> is the current firmware version that is installed on the system.
Protocol version
This command was introduced in protocol version 1.9.
Example
GETFIRMWAREVERSION<CrLf>
Decoder responds with
GETFIRMWAREVERSION;1.94<CrLf>
Setting and getting config parameters
In order to get/set a config parameter, the host can use these commands:
GETCONFIG;<GROUP>;<SETTING>[;PARAMETERS]<CrLf>
SETCONFIG;<GROUP>;<SETTING>;<PARAMETERS><CrLf>
Valid <GROUP>s are:
GENERAL | various general settings |
NETWORK | network settings |
DETECTION | detection menu settings |
ACTIVE | configuration regarding the active extension |
CLIENTMODE | client mode settings |
UPLOAD | configuration of the upload functionality |
If the decoder cannot parse the parameters or the parameters are invalid, it responds with
SETCONFIG;<GROUP>;<SETTING>;ERROR
Protocol version
Available since protocol version 1.5
Getting internal decoder time
In order to get the current internal decoder time in the configured timezone, a client calls:
GETSYSTIME<CrLf>
The decoder responds with:
GETSYSTIME;<Date>;<Time>;<Offset><CrLf>
Where
<Date> | Date. Format: YYYY-MM-DD. |
<Time> | Time. Format: HH:MM:SS.mmm |
<Offset> | UTC offset. Format: +/-hh:mm |
Protocol version
Available since protocol version 2.3
Example
GETSYSTIME<CrLf>
Decoder responds with
GETSYSTIME;2017-12-22;11:35:15.214;+01:00<CrLf>
Getting internal decoder start time
In order to get the internal decoder time in the configured timezone
when the operation mode was started, a client calls:
GETSTARTSYSTIME<CrLf>
The decoder responds with:
GETSTARTSYSTIME;<Date>;<Time>;<Offset><CrLf>
when in operation mode, with
GETSTARTSYSTIME;TESTMODE<CrLf>
when in test mode.
Where
<Date> | Date. Format: YYYY-MM-DD. |
<Time> | Time. Format: HH:MM:SS.mmm |
<Offset> | UTC offset. Format: +/-hh:mm |
Protocol version
Available since protocol version 2.3
Example
GETSTARTSYSTIME<CrLf>
Decoder responds with
GETSTARTSYSTIME;2017-12-22;11:31:12.213;+01:00<CrLf>
Get UHF info
You can upgrade the Firmware by calling
GETUHFINFO<CrLf>
The decoder responds with:
GETUHFINFO;Region[;FrequencyIndex,Caption]0..<Count-1><CrLf>
Where
<Region> |
Is the configured UHF region. Empty if unavailable. |
<FrequencyIndex> | Index of the availbale frequency setting. Use this to set the frequency. |
<Caption> | Caption of that frequency setting. |
Protocol version
Available since protocol version 2.8
Get interfaces
You can get information about the available network interfaces and their connecivity by calling
GETINTERFACES<CrLf>
The decoder responds with:
GETINTERFACES[;Name,IsCurrentInterface,Status]0..<Count-1><CrLf>
Where
<Name> |
Name of the interface. |
<IsCurrentInterface> | 1, if this is the interface that is used for this connection, 0 otherwise. |
<Status> |
|
Protocol version
Available since protocol version 2.9
Attachments
Valid time zones (Version 1.9)
Pacific/Midway, America/Adak, Etc/GMT+10, Pacific/Marquesas, Pacific/Gambier, America/Anchorage, America/Ensenada, Etc/GMT+8, America/Los_Angeles, America/Denver, America/Chihuahua, America/Dawson_Creek, America/Belize, America/Cancun, Chile/EasterIsland, America/Chicago, America/New_York, America/Havana, America/Bogota, America/Caracas, America/Santiago, America/La_Paz, Atlantic/Stanley, America/Campo_Grande, America/Goose_Bay, America/Glace_Bay, America/St_Johns, America/Araguaina, America/Montevideo, America/Miquelon, America/Godthab, America/Argentina/Buenos_Aires, America/Sao_Paulo, America/Noronha, Atlantic/Cape_Verde, Atlantic/Azores, Europe/Belfast, Europe/Dublin, Europe/Lisbon, Europe/London, Africa/Abidjan*, Europe/Amsterdam, Europe/Belgrade, Europe/Brussels, Africa/Algiers, Africa/Windhoek, Asia/Beirut, Africa/Cairo, Asia/Gaza, Africa/Blantyre, Asia/Jerusalem, Europe/Minsk, Asia/Damascus, Europe/Moscow, Africa/Addis_Ababa, Asia/Tehran, Asia/Dubai, Asia/Yerevan, Asia/Kabul, Asia/Yekaterinburg, Asia/Tashkent, Asia/Kolkata, Asia/Katmandu, Asia/Dhaka, Asia/Novosibirsk, Asia/Rangoon, Asia/Bangkok, Asia/Krasnoyarsk, Asia/Hong_Kong, Asia/Irkutsk, Australia/Perth, Australia/Eucla, Asia/Tokyo, Asia/Seoul, Asia/Yakutsk, Australia/Adelaide, Australia/Darwin, Australia/Brisbane, Australia/Hobart, Asia/Vladivostok, Australia/Lord_Howe, Etc/GMT-11, Asia/Magadan, Pacific/Norfolk, Asia/Anadyr, Pacific/Auckland, Etc/GMT-12, Pacific/Chatham, Pacific/Tongatapu, Pacific/Kiritimati
*This timezone matches UTC