a7595abc by Pavan Sabbineni

Switching to local XIDs in slam core repo for further improvements

1 parent b235e214
<?xml version="1.0" encoding="UTF-8" ?>
<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
identity="ProbeApi.xid.xml">
<title>SLAM Probe API Specifications</title>
<comment>
This file defines the SLAM Probe API. The probe API is used to load one or more probe data records from a single device.
</comment>
<!-- Include used definitions -->
<import ref="https://xid.location.studio/HPE/V1.2/HpeGnss.xid.xml" local="HpeGnss.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeCellular.xid.xml" local="HpeCellular.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeWiFi.xid.xml" local="HpeWiFi.xid.xml" />
<import ref="https://xid.location.studio/Tensor/V1.0.0/ApiBase.xid.xml" local="SLAM/ApiBase.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileDefinitions.xid.xml" local="SLAM/TileDefinitions.xid.xml" />
<namespace name="SLAM">
<using namespace="HPE"/>
<using namespace="Tensor"/>
<enum name="DeviceClass" type="Tensor.int8" default="undefined">
<comment>
Device class enumeration specifies the class or primary use of the device.
This allows probe data recorded to be analyzed by classes of devices.
</comment>
<literal name ="undefined" value="0"/>
<literal name ="mobileSmartphone" value="1"/>
<literal name ="mobilePad" value="2"/>
<literal name ="mobileTablet" value="3"/>
<literal name ="mobileOther" value="4"/>
<literal name ="iotTag" value="5"/>
<literal name ="iotComm" value="6"/>
<literal name ="iotStatic" value="7"/>
<literal name ="iotOther" value="8"/>
<literal name ="autoTrack" value="9"/>
<literal name ="autoNav" value="10"/>
<literal name ="autoOther" value="11"/>
</enum>
<struct name="ProbeRecord">
<comment>
A record capturing RF and otherinformation at a specified location. Probe records are captured
as part of probe data collected by probe devices.
</comment>
<elem name="state" multiplicity="1" type="StateInfo">
<comment>
Required device position and other state information. At least one of
observations or state is required, otherwise there is insufficient data to process.
</comment>
</elem>
<elem name="floor" multiplicity="1" type ="int8" default="0">
<comment>The floor number of this scan</comment>
</elem>
<elem name="obsset" multiplicity="1" type="ObservationSet" >
<comment>
Set of observation data containing the probe measurements.
</comment>
</elem>
<elem name="name" multiplicity ="0..1" type="string">
<comment>Optional Name of this probe location.</comment>
</elem>
<elem name="description" multiplicity ="0..1" type="string">
<comment>Optional human readable description.</comment>
</elem>
<elem name="address" multiplicity ="0..1" type="AddressInfo" >
<comment>Optional address information.</comment>
</elem>
<elem name="contact" multiplicity ="0..1" type="ContactInfo" >
<comment>
Optional contact information. These are for probes locations typically associated with
a business or public entity that has associated contact information.
</comment>
</elem>
<elem name="data" multiplicity ="0..1" type="Tensor.json">
<comment>Optional other information describing this probe location in json format.</comment>
</elem>
</struct>
<struct name ="ProbeSourceInfo">
<comment>
Structure contains information about the probe data source.
</comment>
<elem name="classDevice" multiplicity="1" type="DeviceClass" >
<comment>Required field specifies the class of device used to collect the probe data.</comment>
</elem>
<elem name="modelDevice" multiplicity ="1" type="Tensor.string">
<comment>String defining a device</comment>
</elem>
<elem name="mfgDevice" multiplicity ="1" type="Tensor.string">
<comment>Optional device manufacturer information.</comment>
</elem>
<elem name="osNameVer" multiplicity ="1" type="Tensor.uri">
<comment>Operating system name use the format [os: e.g. windows, android, iphone, custom]/[version: information]/[language]/[etc].</comment>
</elem>
<elem name="appNameVer" multiplicity ="1" type="Tensor.string">
<comment>Specifies the application/library name with version information with the following format.[app name]/[ver].</comment>
</elem>
<elem name="idUser" multiplicity ="0..1" type="Tensor.string">
<comment>Optional user identifier.</comment>
</elem>
<elem name="keySource" multiplicity="0..1" type="Tensor.string">
<comment>Optional source key identifier, provides public key value to assist in authentication of probe information.</comment>
</elem>
</struct>
<!--
*******************************************************
Probe Submission API
*******************************************************
-->
<interface name="Probe">
<comment>Interface for submitting RF probe data.</comment>
<operation name="Submit">
<comment>
Interaction submits probe data and outputs responds with operation result.
</comment>
<input name="input" type="Tensor.InputBase" sid="0x1032">
<elem name="captureDate" type="datetime" multiplicity="1">
<comment>General date and time probe data was captured.</comment>
</elem>
<elem name="encoding" multiplicity="0..1" type="EncodingFormat" default="0" >
<comment>
Probe data and source information encoding format. Probe records may be passed to the service in
an encoding format different than that outer wire format. This can protect sensitive data.
By default wire protocol native format is assumed.
</comment>
</elem>
<elem name="sourceInfo" type="ProbeSourceInfo" multiplicity="0..1" encoding ="encoding">
<comment>
Optional source information. If not provided, probe data will ultimately have a low veracity score. If at all possible
probe data should have source information. The system correlates source data with other known sources to calculate veracity.
</comment>
</elem>
<elem name="probes" multiplicity ="0..*" type="ProbeRecord" encoding ="encoding">
<comment>Zero or more probe records encoded in the specified format.</comment>
</elem>
</input>
</operation>
</interface>
</namespace>
</specification>
# SLAM XIDs #
SLAM XIDs do not encode their ordinals (i.e. tags and offets). XIDData.prop is required to maintain backward compatibility.
## Generate / Verify XIDData.prop ##
~~~sh
$ java -Xnoclassgc -jar $XIDSDK/bin/xidcg.jar \
-v \
-prop https://xid.location.studio/Tensor/V1.0.0/XIDData.prop \
-prop https://xid.location.studio/HPE/V1.2/XIDData.prop \
-prop https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/XIDData.prop \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/CommonDefs.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/ReferenceData.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileDefinitions.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/SurveyApi.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/ProbeApi.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileManagementApi.xid.xml \
https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileServiceApi.xid.xml
OR
$ java -Xnoclassgc -jar $XIDSDK/bin/xidcg.jar \
-v \
-prop ../../Tensor/V1.0.0/XIDData.prop \
-prop ../../HPE/V1.2/XIDData.prop \
-prop XIDData.prop \
CommonDefs.xid.xml \
ReferenceData.xid.xml \
TileDefinitions.xid.xml \
SurveyApi.xid.xml \
ProbeApi.xid.xml \
TileManagementApi.xid.xml \
TileServiceApi.xid.xml
~~~
If xidcg reports:
~~~
Generating: xidout/meta/XID/XIDData.prop
~~~
Then something has changed and XIDData.prop needs to get updated.
<?xml version="1.0" encoding="UTF-8" ?>
<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
identity="ReferenceData.xid.xml">
<title>SLAM Tile reference data</title>
<comment>This file defines the SLAM tile refeence definitions and related data types.</comment>
<!-- Include all known definitions -->
<import ref="https://xid.location.studio/HPE/V1.2/HpeGnss.xid.xml" local="HpeGnss.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeCellular.xid.xml" local="HpeCellular.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeWiFi.xid.xml" local="HpeWiFi.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/CommonDefs.xid.xml" local="SLAM/Commondefs.xid.xml" />
<namespace name="SLAM">
<using namespace="HPE"/>
<using namespace="Tensor"/>
<using namespace="HPE.WiFi"/>
<using namespace="HPE.Cellular"/>
<enum name="RefPointSyncStatus" type="Tensor.int8" default ="sync_required">
<comment>synchronization status of the reference point</comment>
<literal name="sync_required" value="0"/>
<literal name="in_sync" value="1"/>
</enum>
<enum name="RefPointUseStatus" type="Tensor.int8" default ="unknown">
<comment>use status of the reference point</comment>
<literal name="unknown" value="0"/>
<literal name="outdated" value="1"/>
<literal name="valid" value="2"/>
<literal name="quarantined" value="3"/>
<literal name="invalid" value="4"/>
<literal name="deprecated" value="5"/>
<literal name="discardable" value="6"/>
</enum>
<enum name="RefPointType" type="Tensor.int8" default="undefined">
<comment>Specifies the format of the Reference data.</comment>
<literal name="undefined" value="0"/>
<literal name="RF" value="1"/>
<literal name="Cellular" value="2"/>
<literal name="Wifi" value="3"/>
<literal name="Bluetooth" value="4"/>
<literal name="GenericRF" value="5"/>
</enum>
<struct name="RefPoint" >
<comment>defines the base structure of a reference point</comment>
<elem name="type" type="RefPointType" multiplicity="1" rttd="true">
<comment>Identifies the format/type of the reference data.</comment>
</elem>
<elem name="id" multiplicity="1" type="HashKey" >
<comment>a unique hash of the reference data format and reference point identifier, which is different, depending on the type of the Reference point</comment>
</elem>
<elem name="position" multiplicity="0..1" type="Spheroid" >
<comment>the estimated position of the access point</comment>
</elem>
<elem name ="veracity" multiplicity="1" type="Tensor.float32">
<comment>The veracity of the reference point, 1= 100% trusted and validated, 0% not trusted at all.</comment>
</elem>
<elem name="usestatus" multiplicity="1" type="RefPointUseStatus">
<comment>status of the reference point</comment>
</elem>
<elem name="validbegin" type="datetime" multiplicity="1">
<comment>time stamp of the begining of the valid period</comment>
</elem>
<elem name="validend" type="datetime" multiplicity="1">
<comment>time stamp of the ending of the valid period</comment>
</elem>
<elem name ="data" type="Tensor.json" multiplicity="0..1">
<comment>json formatted data specific to the device</comment>
</elem>
<elem name="floor" multiplicity ="0..1" type="int8" >
<comment>Optional floor identifier, default is zero meaning the ground floor</comment>
</elem>
</struct>
<!-- ReferencePoint -->
<struct name="RFRefPoint" type="RefPoint" rttkey="SLAM.RefPointType.RF">
<comment>structure defines a reference Point.</comment>
<elem name="txpwr" type="Tensor.float32" multiplicity="1">
<comment>transmission power</comment>
</elem>
<elem name="attenuation" type="Tensor.float32" multiplicity="1">
<comment> attenuation exponent</comment>
</elem>
<elem name="freq" type="Tensor.float32" multiplicity="1">
<comment> radio frequency of the reference in Hz</comment>
</elem>
</struct>
<struct name="WifiRefPoint" type="RFRefPoint" rttkey="SLAM.RefPointType.Wifi">
<elem name="ssid" type="HPE.WiFi.SSID" multiplicity="1">
<comment>ssid of the access point</comment>
</elem>
<elem name ="macaddr" type="mac48" multiplicity="1">
<comment>the mac address of the access point</comment>
</elem>
</struct>
<struct name="BluetoothRefPoint" type="RFRefPoint" rttkey="SLAM.RefPointType.Bluetooth">
<elem name="ssid" type="Tensor.string" multiplicity="1">
<comment>ssid of the access point</comment>
</elem>
<elem name ="macaddr" type="Tensor.string" multiplicity="1">
<comment>the mac address of the access point</comment>
</elem>
</struct>
<struct name="CellularRefPoint" type="RFRefPoint" rttkey="SLAM.RefPointType.Cellular">
<elem name ="cid" type="CellId" multiplicity="1"/>
<elem name ="antenna" type="AntennaSpec" multiplicity="1"/>
</struct>
<struct name="GenericRFRefPoint" type="RFRefPoint" rttkey="SLAM.RefPointType.GenericRF">
<elem name="uri" type="Tensor.uri" multiplicity="1">
<comment>identifier that determines the genericRF type and unique identifier. encoded into the hash key</comment>
</elem>
</struct>
<struct name="RefPointSet">
<comment>a set of reference points</comment>
<elem name="refpoints" type="RefPoint" multiplicity="0..*" polymorphic="true"/>
</struct>
</namespace>
</specification>
<?xml version="1.0" encoding="UTF-8" ?>
<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
identity="SurveyApi.xid.xml">
<title>SLAM Survey API Specifications</title>
<comment>
This file defines the SLAM survey API. The survey API is used to bulk load high-definition survey
data from one or more probe data sets.
</comment>
<!-- Include all known definitions -->
<import ref="https://xid.location.studio/HPE/V1.2/HpeGnss.xid.xml" local="HpeGnss.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeCellular.xid.xml" local="HpeCellular.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeWiFi.xid.xml" local="HpeWiFi.xid.xml" />
<import ref="https://xid.location.studio/Tensor/V1.0.0/ApiBase.xid.xml" local="piBase.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileDefinitions.xid.xml" local="SLAM/TileDefinitions.xid.xml" />
<namespace name="SLAM">
<using namespace="HPE"/>
<using namespace="Tensor"/>
<!--
*******************************************************
Survey Submission API
*******************************************************
-->
<interface name="Survey">
<comment>Interface for submitting SLAM compliant survey data.</comment>
<operation name="Submit">
<comment>
Interaction submits survey data and outputs submission result and UUID.
</comment>
<input name="input" type="Tensor.InputBase" sid="0x1030">
<elem name="survey" multiplicity="1" type="SurveyData"></elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x1031">
<comment>Survey submission output returns status and UUID of the submitted survey.</comment>
<elem name="id" multiplicity="1" type="Tensor.UUID"/>
</output>
</operation>
<operation name="Download">
<comment>Downloads survey data given id.</comment>
<input name="input" type="Tensor.InputBase" sid="0x1032">
<elem name="id" multiplicity="1" type="Tensor.UUID">
<comment>UUID of Survey set.</comment>
</elem>
<elem name="part" multiplicity="1" type="Tensor.int32" default="-1">
<comment>Survey part id of interest. Default value is -1, which will return </comment>
</elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x1033">
<comment>Survey download output data structure contains a zero or more surveys.</comment>
<elem name="surveys" multiplicity="0..*" type="SurveyData"></elem>
</output>
</operation>
</interface>
</namespace>
</specification>
<?xml version="1.0" encoding="UTF-8" ?>
<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
identity="TileManagementApi.xid.xml">
<title>SLAM Tile Management API Specifications</title>
<comment>This file defines the SLAM tile management API.</comment>
<!-- Include all known definitions -->
<import ref="https://xid.location.studio/Tensor/V1.0.0/ApiBase.xid.xml" local="ApiBase.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/ReferenceData.xid.xml" local="SLAM/ReferenceData.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileDefinitions.xid.xml" local="SLAM/TileDefinitions.xid.xml" />
<namespace name="SLAM">
<using namespace="HPE"/>
<using namespace="Tensor"/>
<!--
*******************************************************
Tile Management API
*******************************************************
-->
<interface name="TileManagement">
<comment>Interface for submitting a new tile to the DB. </comment>
<operation name="DeleteTile">
<comment>
Interaction to delete a tile.
</comment>
<input name="input" type="Tensor.InputBase" sid="0x101b">
<comment>defines the input data for DeleteTile operation</comment>
<elem name="tileid" type="Tensor.UUID" multiplicity="1" >
<comment>element specifies UUID of the the tile</comment>
</elem>
</input>
</operation>
<operation name="UploadTile">
<comment>interation to upload a tile</comment>
<input name="input" type="Tensor.InputBase" sid="0x102b">
<comment>defines the input data structure for UploadTile operation</comment>
<elem name="tile" type="Tile" multiplicity="1">
<comment>the tile structure</comment>
</elem>
</input>
</operation>
<operation name="UpdateTile">
<comment>interation to update a tile</comment>
<input name="input" type="Tensor.InputBase" sid="0x103b">
<comment>defines the input data structure for UpdateTile operation</comment>
<elem name="tile" type="Tile" multiplicity="1">
<comment>the tile structure</comment>
</elem>
</input>
</operation>
</interface>
</namespace>
</specification>
<?xml version="1.0" encoding="UTF-8" ?>
<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
identity="TileServiceApi.xid.xml">
<title>Tile Services API Specifications</title>
<comment>This file defines the SLAM tile services API.</comment>
<!-- Include all known definitions -->
<import ref="https://xid.location.studio/HPE/V1.2/HpeGnss.xid.xml" local="HpeGnss.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeCellular.xid.xml" local="HpeCellular.xid.xml" />
<import ref="https://xid.location.studio/HPE/V1.2/HpeWiFi.xid.xml" local="HpeWiFi.xid.xml" />
<import ref="https://xid.location.studio/Tensor/V1.0.0/ApiBase.xid.xml" local="ApiBase.xid.xml" />
<import ref="https://xid.location.studio/ILP/SLAM/V1.0.0_alpha/TileDefinitions.xid.xml" local="SLAM/TileDefinitions.xid.xml" />
<namespace name="SLAM">
<using namespace="HPE"/>
<using namespace="Tensor"/>
<interface name="TileService">
<comment>Interface for tile service. </comment>
<!-- DownloadTile operation-->
<operation name="DownloadTile">
<comment>Interaction download a tile</comment>
<input name="input" type="Tensor.InputBase" sid="0x101a">
<comment>defines the input data structure for DownloadTile operation </comment>
<elem name="tileid" type="Tensor.UUID" multiplicity="1" >
<comment>element specifies UUID of the the tile</comment>
</elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x102a">
<comment>defines the output data for DownloadTile operation</comment>
<elem name="tile" type="Tile" multiplicity="0..1" >
<comment>element defines the downloaded tile</comment>
</elem>
</output>
</operation>
<!-- FindTilesByBoundingbox operation -->
<operation name="FindTilesByBoundingbox">
<comment>find tiles</comment>
<input name="input" type="Tensor.InputBase" sid="0x103a">
<comment>defines the input data for FindTilesByBoundingbox operation </comment>
<elem name="bounding" type="BoundingBox" multiplicity="1">
<comment>the bounding box that intersect with tiles</comment>
</elem>
<elem name="floor" type="Tensor.int16" multiplicity="0..1">
<comment>optional floor number for more precise search</comment>
</elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x104a">
<comment>defines the output data for FindTilesByBoundingbox operation</comment>
<elem name="tiles" type="TileSet" multiplicity="0..1">
<comment>a set of tiles as the result of the FindTilesByPos operation</comment>
</elem>
</output>
</operation>
<!-- FindTilesByRefId operation -->
<operation name="FindTilesByRefId">
<comment>find tiles</comment>
<input name="input" type="Tensor.InputBase" sid="0x103a">
<comment>defines the input data for FindTilesByRefId operation </comment>
<elem name="refids" type="Tensor.string" multiplicity="1..*">
<comment>the bounding box that intersect with tiles</comment>
</elem>
<elem name="floor" type="Tensor.int16" multiplicity="0..1">
<comment>optional floor number for more precise search</comment>
</elem>
<elem name="signaltype" type="ObservationType" multiplicity="1">
<comment>the radio type of the reference points</comment>
</elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x104a">
<comment>defines the output data for FindTilesByRefId operation</comment>
<elem name="tiles" type="TileSet" multiplicity="0..1">
<comment>a set of tiles as the result of the FindTilesByPos operation</comment>
</elem>
</output>
</operation>
<!-- EstimatePosition operation -->
<operation name="EstimatePosition">
<comment> estimate posiion from a set of Wifi rssi observations</comment>
<input name="input" type="Tensor.InputBase" sid="0x106a">
<comment>input for EstimatePosition operation</comment>
<elem name="observations" type="ObservationSet" multiplicity="1">
<comment>a set of observed rssi values</comment>
</elem>
</input>
<output name="output" type="Tensor.OutputBase" sid="0x107a">
<comment>output for EstimatePosition operation</comment>
<elem name="pos" type="Shape" multiplicity="0..*" polymorphic="true">
<comment>approximate position of the tile</comment>
</elem>
</output>
</operation>
</interface>
</namespace>
</specification>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!