RS804 Web API Programming Manual_V1_2_20220208 (1)
RS804 Web API Programming Manual_V1_2_20220208 (1)
Programming Manual
Programming Manual
Version 1.2 (based on API V1.0.20)
Revision Pages Description By Date
Release (RS804_Web_API-
V1.0 Richard 2020/08/19
v1.0.20.DOCX)
V1.1 Revise API document Matisse 2021/06/04
Revise API document:
Add architecture, process
V1.2 Jimmy 2022/02/08
flow and RFID operation
commands
Table of Contents
1.1. Architecture
The figure below shows the basic architecture of using RS804 Web APIs. Application needs to set
up two connections to RS804:
Command session: to send the command to RS804 and receive the response.
URL: https://{RS804_IP_Address}:8443
Protocol: HTTPS
Port: 8443
Authentication*: HTTP basic authentication (RFC 7617). Note that RS804 account is man-
aged at web management console https://{RS804_IP_Address}/
Data session: to receive RFID data and all other events from RS804
URL: wss://{RS804_IP_Address}:8443/socket
Protocol: Web Socket Secure
Port: 8443
1.2. Process Flow
We describe a typical flow of using a fixed RFID reader and corresponding commands of RS804.
1. Connect: Application can set up the Web Socket connection first to receive all events from the
device. A /getreaderinfo command could help to check if the connected device is the correct
one.
2. Configure: Once the device is connected, application can configure RS804, such as region, time,
NTP server, antenna, etc.
3. Start/Stop Inventory: Before performing RFID inventory, application needs to send
/setinventory first to configure the parameters of inventory. Once it is configured,
/startinventory will trigger the action. Similarly, /stopinventory command could stop the inven-
tory. If such inventory configuration is not required anymore, /deleteinventory could be trig-
gered. Note that if you want to perform inventory with the same configuration, you could skip
/deleteinventory and send /startinventory later without another /setinventory.
4. Tag Operations: Besides inventory, users can also perform tag operation to a specific tag. Tag
operation includes read, write, lock, and kill. All tag operations use the same command
/exectagoperation with different parameters.
5. Disconnect: close websocket to disconnect
We take RFID inventory as an example to describe the detailed flow. Application sends a
/setinvetory command to configure the RFID parameters for inventory. Once the inventory is set, a
/startinventory command could trigger RS804 to start inventory. All inventory data will be deliv-
ered by TagData Events through web socket as shown as the blue line in the figure below. When
users want to stop the inventory, application could send /stopinventory command to RS804. An-
other optional /deleteinventory command could be sent to RS804 to remove the inventory config-
uration on RS804. If inventory configuration is kept (without triggering /delete inventory com-
mand), application can send /startinventory directly without /setinventory again.
1.3. RFID Operation Commands
RS804 provides Web APIs to configure RS804 and run RFID operations. We list the summary
of all commands and corresponding sections to describe the details of the each command.
Operation Item Command Section
Get Device Web API version Getversion 2.15
Information Model Getmodelname 2.16
OS version Getlinuxversion 2.17
OS build getfwbuildnumber 2.18
Serial number Getserialnumber 2.19
Ethernet MAC Getethmac 2.20
Bootloader version getbootloaderversion 2.21
Get/Set Device Time zone name gettimezonename 2.1
configuration settimezonename 2.2
Time zone Gettimezone 2.3
Time zone DB gettimezonedatabase 2.4
UTC time getutctime 2.5
setutctime 2.6
Time Settime 2.7
NTP service getntpenabled 2.8
setntpenabled 2.9
NTP server getntpserver 2.10
setntpserver 2.11
Get/Set RFID Reader information getreaderinfo 3.1
Reader Reader Region list getregionlist 6.2
Reader Region Getregion 6.1
setregion 6.3
Reader profile getprofile 5.1
setprofile 5.2
Get Antenna Antenna status Antennaconnectionstatus 7.2
status AntennaConnectionStatusEvent 10.2
Inventory Start inventory Getinventory 3.2
Setinventory 3.3
Startinventory 3.4
TagData event 10.3
Stop inventory Stopinventory 3.5
Deleteinventory 3.6
Tag Operation Tag Operation Exectagoperation 4.7
TagData event 10.3
GPIO & LED GPI getgpistatus 8.1
Control GPO getgpostatus 8.2
setgpostatus 8.3
LED getledstatus 8.4
setledstatus 8.5
Firmware Firmware fwupdateftp 9.1
Update fwupdatefile 9.2
FW Update Event 9.4
Chapter 2 - System setting
2.1 Get Timezone Name:
URL: http://xxx.xxx.xxx.xxx:8443/api/gettimezonename
URL: http://xxx.xxx.xxx.xxx:8443/api/settimezonename
POST data:
{zonename:<zonename>}
Sample<zonename>: Asia/Taipei
URL: http://xxx.xxx.xxx.xxx:8443/api/gettimezone
URL: http://xxx.xxx.xxx.xxx:8443/api/gettimezonedatabase
Get all the supported timezone info (JSON object of zonename to timezone mapping)
{
'Africa/Abidjan': 'GMT0' ,
'Africa/Accra': 'GMT0' ,
'Africa/Addis Ababa': 'EAT-3' ,
'Africa/Algiers': 'CET-1' ,
'Africa/Asmara': 'EAT-3' ,
'Africa/Bamako': 'GMT0' ,
...
}
2.5 Get UTC Time:
URL: http://xxx.xxx.xxx.xxx:8443/api/getutctime
URL: http://xxx.xxx.xxx.xxx:8443/api/setutctime
POST data:
{utctime: <utctime>}
Set time to utctime (integer of epoch in milliseconds). The decimal part of a second
is ignored. Therefore utctime value as xxxxxxxxxxxxxxx is equivalent to
xxxxxxxxxxxx000.
URL: http://xxx.xxx.xxx.xxx:8443/api/settime
POST data:
{year: <year>, month:<month>, date:<date>, hour:<hour>, minute:<minute>,
second:<second>}
URL: http://xxx.xxx.xxx.xxx:8443/api/getntpenabled
URL: http://xxx.xxx.xxx.xxx:8443/api/setntpenabled
POST data:
{enabled: <enabled>} 1 for enable and 0 for disable
URL: http://xxx.xxx.xxx.xxx:8443/api/getntpserver
URL: http://xxx.xxx.xxx.xxx:8443/api/setntpserver
POST data:
{server: <server>}
URL: http://xxx.xxx.xxx.xxx:8443/api/getllrpserverversion
POST data: None.
URL: http://xxx.xxx.xxx.xxx:8443/api/quitllrpserver
POST data: None.
Remark:
Ask LLRP server to quit by itself. System script will restart LLRP server. This
allows user to solve certain reader API errors that have to solve by reload the reader
API. Web API will reconnect to LLRP server when the server is restarted and ready.
2.14 Get Log File:
URL: http://xxx.xxx.xxx.xxx:8443/api/getlogfile
URL: http://xxx.xxx.xxx.xxx:8443/api/getversion
URL: http://xxx.xxx.xxx.xxx:8443/api/getmodelname
URL: http://xxx.xxx.xxx.xxx:8443/api/getlinuxversion
URL: http://xxx.xxx.xxx.xxx:8443/api/getfwbuildnumber
URL: http://xxx.xxx.xxx.xxx:8443/api/getserialnumber
URL: http://xxx.xxx.xxx.xxx:8443/api/getethmac
URL: http://xxx.xxx.xxx.xxx:8443/api/getbootloaderversion
URL: http://xxx.xxx.xxx.xxx:8443/api/getreaderinfo
Remarks:
URL: http://xxx.xxx.xxx.xxx:8443/api/getinventory
Sample C1G2InventoryCommand:
{
"C1G2SingulationSpec":{
"C1G2SingulationSessionAndAction":{
"sessionID":0,
"C1G2TagInventoryStateAwareSingulationAction":{
"I":0,
"S":0
}
},
"C1G2SingulationControl":{
"singulationAlgorithm":{
"algorithm":1
},
"singulationAlgorithmParameters":{
"algorithm":1,
"qValue":6,
"qMinValue":1,
"qMaxValue":15,
"retryCount":0,
"thresholdMultiplier":4,
"toggleTarget":true,
"repeatUntilNoTags":false
}
}
}
}
Remarks:
<invtStartCriteria>:
{type: int, offset_milsec: int, period_milsec: int, triggerGPI: object}
<invtStopCriteria>:
{type: int, duration_milsec: int, triggerGPI: object}
<ID>: 1
<antennaStopCriteria>:
{type: int, duration_milsec: int, triggerGPI: object, tagObservation: object}
<reportSpec>:
{reportCriteriaType: int, N: int}
<reportCriteriaType>:
None = 0,
Upon_N_Tags_Or_End_Of_AISpec = 1,
Upon_N_Tags_Or_End_Of_ROSpec = 2,
Upon_N_Seconds_Or_End_Of_AISpec = 3,
Upon_N_Seconds_Or_End_Of_ROSpec = 4,
Upon_N_Milliseconds_Or_End_Of_AISpec = 5,
Upon_N_Milliseconds_Or_End_Of_ROSpec = 6
URL: http://xxx.xxx.xxx.xxx:8443/api/setinventory
POST data:
data=<data: object> (<data> is JSON object)
Sample <data>:
{
"invtStartCriteria":{"type":1,"offset_milsec":0,"period_milsec":0,"triggerGPI":null},
"invtStopCriteria":{"type":0,"duration_milsec":0,"triggerGPI":null},
"antennaInvtSpecs":[
{
"ID":1,
"antennas":[1],
"antennaConfigs":[
{
"antennaID":1,
"rfTransmitter":null,
"dtic":{"dwellTime":450,"inventoryCycles":0},
"sequence":null,
"C1G2InventoryCommand":null
}
],
"antennaStopCriteria":{"type":0,"duration_milsec":0,"triggerGPI":null,"tagObservati
on":null},
"tagRssiFilter_10ths":{“from”: -1, “to”: -999}
}
],
"reportSpec":{"reportCriteriaType":2,"N":1, “reportSelector”: <reportSelector>},
}
Remarks:
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
URL: http://xxx.xxx.xxx.xxx:8443/api/startinventory
POST data:
None.
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
URL: http://xxx.xxx.xxx.xxx:8443/api/stopinventory
POST data:
None.
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
URL: http://xxx.xxx.xxx.xxx:8443/api/deleteinventory
POST data:
None.
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
Chapter 4 - Tag operations
4.1. Get Tag Operation:
URL: http://xxx.xxx.xxx.xxx:8443/api/gettagoperation
POST data:
{tagOpID:<tagOpID>}
{"tagOpID":0,"tagOps":[{"tagOpID":100,"tagOpStopCriteria":{"type":1,"cntOperation":1},
"targetTag":{"memoryBank":0,"pointer":0,"match":true,"tagPattern":[226,0,52,17,184,2,1
,23,24,48,0,14]},"tagOpsSpec":[{"ID":0,"op":"Read","memoryBank":1,"pointer":2,"count
er":6,"password":0,"writeAny":false,"data":null,"lockPayLoads":null}],"status":"Active"}],"
CLASS":"#TagOp","CMD":"Get","RESULT":"Success","DESC":null,"RID":15}
Remarks:
<type>:
Null = 0,
Operation_Count = 1
<tagOpsSpec>: list of {ID: int, op: string, memoryBank: int (MB), pointer: int, counter:
int, password: int, writeAny: bool, data: list of int, lockPayLoads: list}
ID: Uniquely defines a Tag Operation Spec. Cannot duplicate. Will be returned in Tag
Operation Result, to identify which operation spec gives the result.
op: One of “Read”, “Write”, “BlockWrite”, “BlockErase”, “Lock”, “Kill”
memoryBank: 0-Reserved, 1-EPC, 2-TID, 3-User
pointer: index to 16bit word in MemoryBank.
data: only for Write and BlockWrite operation. Format: 16 bit integer list: [int, int,
int, … ], each range from 0 to 65535
<privilege>:
Read_Write = 0,
Perma_Lock = 1,
Perma_Unlock = 2,
Unlock = 3,
<dataField>:
Kill_Password = 0,
Access_Password = 1,
EPC_Memory = 2,
TID_Memory = 3,
User_Memory = 4
URL: http://xxx.xxx.xxx.xxx:8443/api/settagoperation
POST data:
data=<tagOps: list of tag operations> (data is JSON object)
Remarks:
Not Implemented in v1.0.1
Implemented in v1.0.5
Refer to Get Tag Operation
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
4.3. Delete Tag Operation:
URL: http://xxx.xxx.xxx.xxx:8443/api/deletetagoperation
POST data:
{tagOpID:<tagOpID>}
<tagOpID>: tag Op ID of the tag Operation to delete. 0 to delete all tag operations.
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
URL: http://xxx.xxx.xxx.xxx:8443/api/activatetagoperation
POST data:
{tagOpID:<tagOpID>}
Remarks:
Tag Operations are inactive after set. Need to activate before use. Then tag op
results will be sent through Tag Data events during the next inventory. Tag
Operations will be automatically inactivated if the stop criteria is set to count
operations and the number of operations has been completed.
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
URL: http://xxx.xxx.xxx.xxx:8443/api/inactivatetagoperation
POST data:
{tagOpID:<tagOpID>}
Return JSON:
{RESULT: <result:string>, DESC: <desc:string>}
4.6. Start Tag Operation:
URL: http://xxx.xxx.xxx.xxx:8443/api/starttagoperation
POST data:
{
antennaInvtSpec:<antennaInvtSpec>,
retry: {retry: int, delay: int}
}
Remarks:
This is a special inventory command to start tag operation. This is to simplify
the procedures to start tag operation, which can also be started by issuing start
inventory command. This API should fail if there is already inventory running. If this API
returns Success, tag operation results will come in websocket events. Check events for
details of tag operation results. This special inventory will be automatically stopped and
deleted after it finishes.
<antennaInvtSpec>: please check the definition in set inventory command. Only the
first antenna config will be used to start tag opeartion.
If <antennaInvtSpec> is null, will use the first antenna config defined in the last
inventory. If inventory is never set, this API will fail if <antennaInvtSpec> is specified
as null.
<retry>: add parameter to retry in v1.0.14. retry(int) is the number of times to retry.
delay(int) is ms to delay between retries. This allows the tag operation to retry certain
times to increase the probability of success.
URL: http://xxx.xxx.xxx.xxx:8443/api/exectagoperation
POST data:
{
tagOps: <tagOps>
antennaInvtSpec:<antennaInvtSpec>
retry: {retry: int, delay: int}
}
Remarks:
Add in v1.0.14.
Usually tag operation needs 4 steps:
delete all tag operation, set tag operation, enable tag operation, start tag operation.
This API makes 1 step to do all. Refer to API settagoperation for definition of parameter
tagOps. Refer to API starttagoperation for parameter antennaInvtSpec and retry.
Chapter 5 – Profile
5.1. Get Profile:
URL: http://xxx.xxx.xxx.xxx:8443/api/getprofile
POST data:
None.
Remarks:
<profile>: int
URL: http://xxx.xxx.xxx.xxx:8443/api/setprofile
POST data:
{profile:<profile>}
Return JSON:
{"RESULT":"Success","DESC":null}
Remarks:
<profile>: int
Chapter 6 – Region
6.1. Get RFID Region:
URL: http://xxx.xxx.xxx.xxx:8443/api/getregion
POST data:
None.
Remarks:
<RFIDRegion>: string
URL: http://xxx.xxx.xxx.xxx:8443/api/getregionlist
POST data:
None.
Remarks:
Available since v1.0.8.
URL: http://xxx.xxx.xxx.xxx:8443/api/setregion
POST data:
{RFIDRegion:<RFIDRegion>}
Return JSON:
{"RESULT":"Success","DESC":null}
Remarks:
<RFIDRegion>: string
Available values: “CHINA”, “EUROPE”,
“JAPAN_CH4_MS”, “JAPAN_CH4_LBT”, “JAPAN_CH6_LBT”, “TAIWAN”, “USA”
Due to hardware differences, Hardware for CHINA, TAIWAN, USA can switch region to
each other. Different regions for JAPAN can switch region to each other. Other
switches are not allowed and will cause API to return failure.
After change region, need getreaderinfo again to refresh frequency changes. This API
is recommended to do be done once at initialization time only.
Chapter 7 – Antenna
7.1. Get Antenna Config:
Returns the runtime Antenna Config info.
Remark: This API returns runtime info, getinventory returns inventory definition.
Although these 2 are similar, getinventory does NOT return runtime antenna
‘connected’ info.
URL: http://xxx.xxx.xxx.xxx:8443/api/getantennaconfig
POST data:
None
antennaID:
0 = All antennas,
1~n = One antenna ID
Remarks:
URL: http://xxx.xxx.xxx.xxx:8443/api/antennaconnectionstatus
POST data:
{dtic:<dtic>}
Remarks:
This is a special inventory command in order to obtain antenna connection status
spec. It fails when there is currently an inventory running. After issuing this command,
and the command returns “Success”, results will come in asynchronous manner.
Results of antenna connection status will come as web socket events
(CLASS=”#AntennaConnectionStatusEvent”). Check the details in web socket
events. The special inventory will be automatically stopped and deleted after result is
obtained.
Dtic is defined the same as dtic defined in inventory settings, like the following:
"dtic":{"dwellTime":450,"inventoryCycles":0}
Chapter 8 - I/O
8.1. Get GPI Status:
URL: http://xxx.xxx.xxx.xxx:8443/api/getgpistatus
POST data:
None.
URL: http://xxx.xxx.xxx.xxx:8443/api/getgpostatus
POST data:
None.
URL: http://xxx.xxx.xxx.xxx:8443/api/setgpostatus
POST data:
{gpoStatus:<gpoStatus: list>} (gpoStatus is JSON list)
Sample <gpoStatus>:
[
{"port":1,"status": false},
{"port":2,"status": false},
{"port":3,"status": false},
{"port":4,"status": false},
]
Return JSON:
{"RESULT":"Success","DESC":null}
URL: http://xxx.xxx.xxx.xxx:8443/api/getledstatus
POST data:
{ledStatus:<ledStatus: list>} (ledStatus is JSON list)
Sample <ledStatus>:
[
{"led":"LED_USER_GREEN"},
{"led":"LED_USER_RED"},
]
Return JSON:
{"RESULT":"Success","ledStatus":[
{"led":"LED_USER_GREEN","status":false},
{"led":"LED_USER_RED","status":false},
]}
Remarks:
Available since v1.0.8
v1.0.19: remove LED_STATUS_GREEN and LED_STATUS_RED from user
access.
8.5. Set LED Status:
URL: http://xxx.xxx.xxx.xxx:8443/api/setledstatus
POST data:
{ledStatus:<ledStatus: list>} (ledStatus is JSON list)
Sample <ledStatus>:
[
{"led":"LED_USER_GREEN","status":false},
{"led":"LED_USER_RED","status":false},
]
Return JSON:
{"RESULT":"Success","DESC":null}
Chapter 9 – Firmware
9.1. Firmware Update through FTP:
URL: http://xxx.xxx.xxx.xxx:8443/api/fwupdateftp
POST data:
{
server=<server: string>
path=<path: string>
port=<port: int>
user=<user: string>
password=<password: string>
{
Return :
On Error, return:
“Error_FTP_Connection”
“Error_Download_Ftp”
“Error_Update_FW”
“Error_Update_In_Progress”
“Error_Integrity”
No return on Success, because the OS should reboot after OS update.
If it takes too long, the api may return error because of timeout. As long
as update has started, it should continue to update until finished. So the error
caused by timeout can be ignored.
URL: http://xxx.xxx.xxx.xxx:8443/api/fwupdatefile
POST data:
none
POST file:
name="fw_update"
Return:
On Error, return:
“Error_Move_File”,
“Error_Update_FW”
“Error_Update_In_Progress”
“Error_Integrity”
No return on Success, because the OS should reboot after OS update.
If it takes too long, the api may return error because of timeout. As long
as update has started, it should continue to update until finished. So the error
caused by timeout can be ignored.
URL: http://xxx.xxx.xxx.xxx:8443/api/radiocarrierwave
POST data:
{
antennaID:<antennaID: int>,
transmitPower:<transmitPower: int>,
frequency:<frequency: int>,
frequencyResolution:<frequencyResolution: int>,
turnOn:<turnOn: bool>
}
Remarks:
Available since v1.0.18
Modified in v1.0.20, add parameters to set antennaID, transmitPower, frequency
and frequencyResolution.
transmitPower and frequency refer to <rfTransmitter> in inventory definition, here
use the actually values instead of the indexes.
frequencyResolution: frequency divider. Available values: 24 and 60.
When turning off(turnOn = false), antennaID, transmitPower, frequency and
frequencyResolution do not need to be set.
Events:
Events are reported through web socket. Web socket is connected to:
http://xxx.xxx.xxx.xxx:8443/socket
9.4. FW Update Event:
Sample Format:
{“txt”: “FTP _CONNECTED”, “CLASS”: “#FW”}
<txt>: string
“FTP_CONNECTED”, “FTP_DOWNLOADING”,
“FTP_DOWNLOADED”,
“START_UPDATE”, “UPDATING”, “UPDATE_DONE”
when <txt>==“FTP_DOWNLOADING”, event format is:
{“txt”: “FTP _DOWNLOADING”, “size”:int, “total”:int, “CLASS”: “#FW”}
where size tells the total downloaded size, and total tells the total size of the file.
Sample Format:
{"e":249,"st":0,"p1":6001,"p2":0,"t":"","CLASS":"#RE"}
<e>: int
_WAE_UNDEFINED = 0,
WAE_INVENTORY = 249,
st: 0=start, 1=stop
p1: spec-ID
WAE_AIS = 254,
st: 0=end, //no-start-event!
p1: inventory-spec-ID
p2: op-spec-index
WAE_ANTENNA = 255,
st: 0=disabled, 1=enabled,
p1: physic-antenna-ID
p2: logical-antenna-ID
state: 255=error-and-disabled
p1: logical-antenna-ID
WAE_GPI = 248,
st: gpi state //ENUM_GPIPortState
p1: port
WAE_READER_ERROR = 1001,
st: //(RFID_STATUS)state
t: description
WAE_READER_DEAD = 1004,
t: description
WAE_TAGOP_ERROR = 1115
p1: op command
t: description
add in v1.0.15:
WAE_EVENT = 1500,
st: RE_EVENT_TYPE
RE_EVENT_TYPE: RET_QUIT_APP = 1, RET_RESET_RM300=2,
RET_TASK_COMPLETED=3
Format:
{
"CLASS":"#AntennaConnectionStatusEvent",
"acs":[
{"antennaID":1,"regB00":270,"regB04":77,"REVPWRLEVTOOHIGH":False},
{"antennaID":2,"regB00":270,"regB04":-4,"REVPWRLEVTOOHIGH":False},
{"antennaID":3,"regB00":270,"regB04":265,"REVPWRLEVTOOHIGH":True},
{"antennaID":4,"regB00":270,"regB04":264,"REVPWRLEVTOOHIGH":True}
]
}
REVPWRLEVTOOHIGH means not connected.
<e>:epc
<a>: antennaID
<r>: rssi
<f>: time first seen
<l>: time last seen
<c>: count
<pc>: PC
<o>: list of object (tag op results, if no result then <o> is null or undefined)
{ID: int, op: string, result: int, dataLen: int, dataBytes: list of byte}
(v1.0.14: add Operation_Failed_Error to indicate cases that are not successful but
without reader error being reported. )
public enum ENUM_C1G2ReadResultType : byte
{
[XmlEnum(Name="Success")]Success = 0,
[XmlEnum(Name="Nonspecific_Tag_Error")]Nonspecific_Tag_Error = 1,
[XmlEnum(Name="No_Response_From_Tag")]No_Response_From_Tag = 2,
[XmlEnum(Name="Nonspecific_Reader_Error")]Nonspecific_Reader_Error = 3,
[XmlEnum(Name = "Operation_Failed!")]Operation_Failed_Error = 0xFF,
}