Just to make it clear to folks what LLRP-XML is, it is the data format defined by Common/LLRP.xsd. For the unfamilar, I have attached one at the of the message.
This LLRP.xsd W3C XML Schema is a template for XML documents which map directly to LLRP messages. This serves to describe a document format for describing any LLRP message in a portable, unambiguous format which may be version controlled, show as figures in documentation, or exchanged between developers in script files or bug reports. As a point of departure, notice how the LLRP Conformance test has to hand-wave to communicate the structure of messages required for tests. With LLRP-XML it would be completely unambiguous. Further, the XML Schema when used with an XML editor, can help you create valid LLRP messages. As you type, a good XML editor will make suggestions or allow you to autocomplete XML element names or select from lists of enumerated values. XML element names correspond to LLRP message names, fields, and parameters. Node content is either nested subparameters, or field values. Mostly I tried to leverage the standard XML Schema Datatypes. As documentation "annotations" (possibly scraped from the spec) are added to LLRP.xsd, , when the XML element name suggestion pops up, the documentation will also be displayed. Here is an example of an LLRP-XML message: <?xml version="1.0" encoding="UTF-8"?> <ADD_ROSPEC MessageID="0" xmlns="LLRP" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="LLRP LLRP.xsd "> <ROSpec> <ROSpecID>1</ROSpecID> <Priority>0</Priority> <CurrentState>Disabled</CurrentState> <ROBoundarySpec> <ROSpecStartTrigger> <ROSpecStartTriggerType>Null</ROSpecStartTriggerType> </ROSpecStartTrigger> <ROSpecStopTrigger> <ROSpecStopTriggerType>Null</ROSpecStopTriggerType> <DurationTriggerValue>0</DurationTriggerValue> </ROSpecStopTrigger> </ROBoundarySpec> <AISpec> <AntennaIDs>1 2 3 4</AntennaIDs> <AISpecStopTrigger> <AISpecStopTriggerType>Tag_Observation</AISpecStopTriggerType> <DurationTrigger>30000</DurationTrigger> <TagObservationTrigger> <TriggerType>Upon_Seeing_No_More_New_Tags_For_Tms_Or_Timeout</TriggerType> <NumberOfTags>100</NumberOfTags> <NumberOfAttempts>0</NumberOfAttempts> <T>10000</T> <Timeout>30000</Timeout> </TagObservationTrigger> </AISpecStopTrigger> <InventoryParameterSpec> <InventoryParameterSpecID>1</InventoryParameterSpecID> <ProtocolID>EPCGlobalClass1Gen2</ProtocolID> </InventoryParameterSpec> </AISpec> <ROReportSpec> <ROReportTrigger>Upon_N_Tags_Or_End_Of_AISpec</ROReportTrigger> <N>200</N> <TagReportContentSelector> <EnableROSpecID>false</EnableROSpecID> <EnableSpecIndex>false</EnableSpecIndex> <EnableInventoryParameterSpecID> false</EnableInventoryParameterSpecID> <EnableAntennaID>true</EnableAntennaID> <EnableChannelIndex>false</EnableChannelIndex> <EnablePeakRSSI>true</EnablePeakRSSI> <EnableFirstSeenTimestamp>true</EnableFirstSeenTimestamp> <EnableLastSeenTimestamp>true</EnableLastSeenTimestamp> <EnableTagSeenCount>true</EnableTagSeenCount> <EnableAccessSpecID>true</EnableAccessSpecID> </TagReportContentSelector> </ROReportSpec> </ROSpec> </ADD_ROSPEC> In the near future, Impinj intends to contribute Perl/LibXML code for converting these XML representations of LLRP to/from binary format. LLRP-XML makes a good deserialization format for LLRP object-oriented APIs that are part of LTK. So from my POV, agreeing on the XML structure, identifiers and enumerated element names is important to have happen early to get all the benefits of having a written as opposed to binary lingua franca to communicate in. -- John. ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ llrp-toolkit-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/llrp-toolkit-devel
