LLRP XML Messages
From RifidiWiki
This page contains a collection of example XML Messages that can be sent to an LLRP Reader.
Contents
ADD_ROSPEC
The ROSpec (Reader Operation Specification) defines how a reader should read tags.
Message 1
Description
This is a simple rospec with a null start and stop triggers. It has one AISpec with a null stop trigger. In order to execute this rospec, you will need to send an ENABLE_ROSPEC, and a START_ROSPC. In addition, you will need to set up reporting parameters using a SET_READER_CONFIG
Message
<ADD_ROSPEC Version="1" MessageID="0">
<ROSpec>
<ROSpecID>1</ROSpecID>
<Priority>0</Priority>
<CurrentState>Disabled</CurrentState>
<ROBoundarySpec>
<ROSpecStartTrigger>
<ROSpecStartTriggerType>Null</ROSpecStartTriggerType>
</ROSpecStartTrigger>
<ROSpecStopTrigger>
<ROSpecStopTriggerType>Null</ROSpecStopTriggerType>
<DurationTriggerValue>1000</DurationTriggerValue>
</ROSpecStopTrigger>
</ROBoundarySpec>
<AISpec>
<AntennaIDs>1</AntennaIDs>
<AISpecStopTrigger>
<AISpecStopTriggerType>Null</AISpecStopTriggerType>
<DurationTrigger>1000</DurationTrigger>
</AISpecStopTrigger>
<InventoryParameterSpec>
<InventoryParameterSpecID>2</InventoryParameterSpecID>
<ProtocolID>EPCGlobalClass1Gen2</ProtocolID>
</InventoryParameterSpec>
</AISpec>
</ROSpec>
</ADD_ROSPEC>
Message 2
Description
This ROSpec is a little more complicated than the previous one. Its start trigger is perdiodic; In this case, it will start 500ms after it is added. It then a start trigger will fire for it every 5 seconds after the initial start trigger. Its start trigger is duration. This means a stop trigger will fire for it every 2 seconds after it begins. This ROSpec also contains a ROReportSpec that defines what the reports should look like and when they should come back.
Message
<ADD_ROSPEC Version="1" MessageID="0">
<ROSpec>
<ROSpecID>1</ROSpecID>
<Priority>0</Priority>
<CurrentState>Disabled</CurrentState>
<ROBoundarySpec>
<ROSpecStartTrigger>
<ROSpecStartTriggerType>Periodic</ROSpecStartTriggerType>
<PeriodicTriggerValue>
<Offset>500</Offset>
<Period>5000</Period>
</PeriodicTriggerValue>
</ROSpecStartTrigger>
<ROSpecStopTrigger>
<ROSpecStopTriggerType>Duration</ROSpecStopTriggerType>
<DurationTriggerValue>2000</DurationTriggerValue>
</ROSpecStopTrigger>
</ROBoundarySpec>
<AISpec>
<AntennaIDs>1</AntennaIDs>
<AISpecStopTrigger>
<AISpecStopTriggerType>Null</AISpecStopTriggerType>
<DurationTrigger>1000</DurationTrigger>
</AISpecStopTrigger>
<InventoryParameterSpec>
<InventoryParameterSpecID>2</InventoryParameterSpecID>
<ProtocolID>EPCGlobalClass1Gen2</ProtocolID>
</InventoryParameterSpec>
</AISpec>
<ROReportSpec>
<ROReportTrigger>Upon_N_Tags_Or_End_Of_ROSpec</ROReportTrigger>
<N>0</N>
<TagReportContentSelector>
<EnableROSpecID>false</EnableROSpecID>
<EnableSpecIndex>false</EnableSpecIndex>
<EnableInventoryParameterSpecID>false</EnableInventoryParameterSpecID>
<EnableAntennaID>true</EnableAntennaID>
<EnableChannelIndex>false</EnableChannelIndex>
<EnablePeakRSSI>false</EnablePeakRSSI>
<EnableFirstSeenTimestamp>false</EnableFirstSeenTimestamp>
<EnableLastSeenTimestamp>false</EnableLastSeenTimestamp>
<EnableTagSeenCount>true</EnableTagSeenCount>
<EnableAccessSpecID>true</EnableAccessSpecID>
<C1G2EPCMemorySelector>
<EnableCRC>false</EnableCRC>
<EnablePCBits>false</EnablePCBits>
</C1G2EPCMemorySelector>
</TagReportContentSelector>
</ROReportSpec>
</ROSpec>
</ADD_ROSPEC>
SET_READER_CONFIG
Message 1
Description
This is a SET_READER_CONFIG message that sets up Event Reporting and defines what the ROReports should look like using a ROReportSpec parameter. The ROReports can be set up in ROSpec parameter itself. If a ROReportSpec is defined both globally (using a SET_READER_CONFIG message) and in a particular rospec, the one defined in the ROSpec will shadow the global one.
Message
<SET_READER_CONFIG Version="1" MessageID="0">
<ResetToFactoryDefault>false</ResetToFactoryDefault>
<ReaderEventNotificationSpec>
<EventNotificationState>
<EventType>Upon_Hopping_To_Next_Channel</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>GPI_Event</EventType>
<NotificationState>true</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>ROSpec_Event</EventType>
<NotificationState>true</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>Report_Buffer_Fill_Warning</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>Reader_Exception_Event</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>RFSurvey_Event</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>AISpec_Event</EventType>
<NotificationState>true</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>AISpec_Event_With_Details</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
<EventNotificationState>
<EventType>Antenna_Event</EventType>
<NotificationState>false</NotificationState>
</EventNotificationState>
</ReaderEventNotificationSpec>
<ROReportSpec>
<ROReportTrigger>Upon_N_Tags_Or_End_Of_ROSpec</ROReportTrigger>
<N>0</N>
<TagReportContentSelector>
<EnableROSpecID>false</EnableROSpecID>
<EnableSpecIndex>false</EnableSpecIndex>
<EnableInventoryParameterSpecID>false</EnableInventoryParameterSpecID>
<EnableAntennaID>true</EnableAntennaID>
<EnableChannelIndex>false</EnableChannelIndex>
<EnablePeakRSSI>false</EnablePeakRSSI>
<EnableFirstSeenTimestamp>false</EnableFirstSeenTimestamp>
<EnableLastSeenTimestamp>false</EnableLastSeenTimestamp>
<EnableTagSeenCount>true</EnableTagSeenCount>
<EnableAccessSpecID>true</EnableAccessSpecID>
<C1G2EPCMemorySelector>
<EnableCRC>false</EnableCRC>
<EnablePCBits>false</EnablePCBits>
</C1G2EPCMemorySelector>
</TagReportContentSelector>
</ROReportSpec>
<AccessReportSpec>
<AccessReportTrigger>Whenever_ROReport_Is_Generated</AccessReportTrigger>
</AccessReportSpec>
</SET_READER_CONFIG>
Message 2
Description
This Message will enable a GPI Port so that it can report changes to its state and be used as a stop or start trigger.
Message
<SET_READER_CONFIG Version="1" MessageID="0">
<ResetToFactoryDefault>false</ResetToFactoryDefault>
<GPIPortCurrentState>
<GPIPortNum>1</GPIPortNum>
<Config>true</Config>
<State>Low</State>
</GPIPortCurrentState>
</SET_READER_CONFIG>