da73ea74 by Kyle Greenwell

Add initial specs in expected layout and added license

1 parent 185951ff
1 TensorCommon/V1.0.0/TensorCommon.xid
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="UTF-8" ?> 1 <?xml version="1.0" encoding="UTF-8" ?>
2 2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
3 <specification xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd" 12 <specification xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
4 xmlns:xid="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd" 13 xmlns:xid="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xsi:schemaLocation="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd XtensibleInterfaceDefinition.xsd" 15 xsi:schemaLocation="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd XtensibleInterfaceDefinition.xsd"
7 identity="TensorCommmon.xid"> 16 identity="TensorCommmon.xid">
8 <title>Tensor Commmon Defitions</title> 17 <title>Tensor Commmon Definitions</title>
9 <comment></comment> 18 <comment></comment>
10 <artifact></artifact> 19 <artifact></artifact>
11 20
12 <import ref="http://xid.location.studio/XID/TensorDefinitions.xid" local="TensorDefinitions.xid" /> 21 <import ref="TensorDefinitions/V1.0.0/TensorDefinitions.xid" local="TensorDefinitions.xid" />
13 22
14 <namespace name="Tensor"> 23 <namespace name="Tensor">
15 <struct name="NameValue" > 24 <struct name="NameValue" >
......
1 TensorDefinitions/V1.0.0/TensorDefinitions.xid
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <specification xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
13 xmlns:xid="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd XtensibleInterfaceDefinition.xsd"
16 identity="TensorDefinitions.xid">
17 <title>Tensor Common Defitions</title>
18 <comment>
19 Defines fundamental types mappings.
20 </comment>
21 <artifact></artifact>
22 <tag name="package" value="com.comtechtel"/>
23
24 <namespace name="Tensor">
25 <type name="void" size="0">
26 <comment>represents nothing. &lt;br/&gt;Useful in &lt;operation&gt; with no &lt;input&gt;</comment>
27 <lang name="c" type="void"/>
28 <lang name="cpp" type="void"/>
29 <lang name="java" type="void"/>
30 <lang name="node" type="void"/>
31 </type>
32 <type name="bool" size="1">
33 <comment>represents true/false</comment>
34 <lang name="c" type="bool" include="stdbool.h"/>
35 <lang name="cpp" type="bool"/>
36 <lang name="java" type="XidBool" include="com.comtechtel.tensor.xid.XidBool"/>
37 <lang name="node" type="XidBool"/>
38 </type>
39
40 <type name="uint8" size="1">
41 <comment>8-bit, unsigned value</comment>
42 <lang name="c" type="uint8_t" include="stdint.h"/>
43 <lang name="cpp" type="uint8_t" include="cstdint"/>
44 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte" />
45 <lang name="node" type="XidUInt8"/>
46 </type>
47 <type name="uint16" size="2">
48 <comment>16-bit, unsigned value</comment>
49 <lang name="c" type="uint16_t" include="stdint.h"/>
50 <lang name="cpp" type="uint16_t" include="cstdint"/>
51 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort"/>
52 <lang name="node" type="XidUShort"/>
53 </type>
54 <type name="uint24" size="3">
55 <comment>24-bit, unsigned value</comment>
56 <lang name="c" type="uint24_t" include="Tensor/CXMF/int24.h"/>
57 <lang name="cpp" type="uint24_t" include="Tensor/Types/int24.h"/>
58 <lang name="java" type="XidInt24" include="com.comtechtel.tensor.xid.XidInt24"/>
59 <lang name="node" type="XidUInt24"/>
60 </type>
61 <type name="uint32" size="4">
62 <comment>32-bit, unsigned value</comment>
63 <lang name="c" type="uint32_t" include="stdint.h"/>
64 <lang name="cpp" type="uint32_t" include="cstdint"/>
65 <lang name="java" type="XidInt" include="com.comtechtel.tensor.xid.XidInt"/>
66 <lang name="node" type="XidUInt"/>
67 </type>
68 <type name="uint64" size="8">
69 <comment>64-bit, unsigned value</comment>
70 <lang name="c" type="uint64_t" include="stdint.h"/>
71 <lang name="cpp" type="uint64_t" include="cstdint"/>
72 <lang name="java" type="XidLong" include="com.comtechtel.tensor.xid.XidLong"/>
73 <lang name="node" type="XidULong"/>
74 </type>
75
76 <type name="int8" size="1">
77 <comment>8-bit, signed value</comment>
78 <lang name="c" type="int8_t" include="stdint.h"/>
79 <lang name="cpp" type="int8_t" include="cstdint"/>
80 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte"/>
81 <lang name="node" type="XidInt8"/>
82 </type>
83 <type name="int16" size="2">
84 <comment>16-bit, signed value</comment>
85 <lang name="c" type="int16_t" include="stdint.h"/>
86 <lang name="cpp" type="int16_t" include="cstdint"/>
87 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort" />
88 <lang name="node" type="XidShort"/>
89 </type>
90 <type name="int24" size="3">
91 <comment>24-bit, unsigned value</comment>
92 <lang name="c" type="int24_t" include="Tensor/CXMF/int24.h"/>
93 <lang name="cpp" type="int24_t" include="Tensor/Types/int24.h"/>
94 <lang name="java" type="XidInt24" include="com.comtechtel.tensor.xid.XidInt24"/>
95 <lang name="node" type="XidInt24"/>
96 </type>
97 <type name="int32" size="4">
98 <comment>32-bit, signed value</comment>
99 <lang name="c" type="int32_t" include="stdint.h"/>
100 <lang name="cpp" type="int32_t" include="cstdint"/>
101 <lang name="java" type="XidInt" include="com.comtechtel.tensor.xid.XidInt"/>
102 <lang name="node" type="XidInt"/>
103 </type>
104 <type name="int64" size="8">
105 <comment>64-bit, signed value</comment>
106 <lang name="c" type="int64_t" include="stdint.h"/>
107 <lang name="cpp" type="int64_t" include="cstdint"/>
108 <lang name="java" type="XidLong" include="com.comtechtel.tensor.xid.XidLong"/>
109 <lang name="node" type="XidLong"/>
110 </type>
111
112 <!--
113 <type name="float16" size="4">
114 <comment>32-bit, IEEE 754 binary16</comment>
115 <comment>C/cpp usually a "float"</comment>
116 <artifact>https://en.wikipedia.org/wiki/Half-precision_floating-point_format</artifact>
117 </type>
118 -->
119
120 <type name="float32" size="4">
121 <comment>32-bit, IEEE 754 binary32</comment>
122 <artifact>https://en.wikipedia.org/wiki/Single-precision_floating-point_format</artifact>
123 <lang name="c" type="float"/>
124 <lang name="cpp" type="float"/>
125 <lang name="java" type="XidFloat" include="com.comtechtel.tensor.xid.XidFloat"/>
126 <lang name="node" type="XidFloat"/>
127 </type>
128 <type name="float64" size="8">
129 <comment>64-bit, IEEE 754 binary64</comment>
130 <artifact>https://en.wikipedia.org/wiki/Double-precision_floating-point_format</artifact>
131 <lang name="c" type="double"/>
132 <lang name="cpp" type="double"/>
133 <lang name="java" type="XidDouble" include="com.comtechtel.tensor.xid.XidDouble"/>
134 <lang name="node" type="XidDouble"/>
135 </type>
136 <!--
137 <type name="float128" size="8">
138 <comment>128-bit, IEEE 754 binary128</comment>
139 <artifact>https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format</artifact>
140 <lang name="cpp" type="long double"/>
141 </type>
142 -->
143
144 <type name="byte" size="1">
145 <comment>A single byte</comment>
146 <lang name="c" type="uint8_t" include="stdint.h"/>
147 <lang name="cpp" type="uint8_t" include="cstdint"/>
148 <lang name="java" type="XidByte" include="com.comtechtel.tensor.xid.XidByte"/>
149 <lang name="node" type="XidUInt8"/>
150 </type>
151 <type name="raw">
152 <comment>Variable sized collection of bytes</comment>
153 <!-- may change this type -->
154 <lang name="c" type="CAtom" include="Tensor/CXMF/CXMF.h"/>
155 <lang name="cpp" type="::Tensor::XMF::Atom" include="Tensor/XMF/Atom.h"/>
156 <lang name="java" type="Atom" include="com.comtechtel.tensor.xmf.Atom"/>
157 <lang name="node" type="Atom"/>
158 </type>
159
160 <type name="string">
161 <comment>Variable sized collection of characters</comment>
162 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
163 <lang name="cpp" type="std::string" include="string"/>
164 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
165 <lang name="node" type="XidString"/>
166 </type>
167
168 <type name="datetime" size="8">
169 <comment>nanoseconds since Jan 1, 1970.</comment>
170 <lang name="c" type="uint64_t" include="stdint.h"/>
171 <lang name="cpp" type="::Tensor::Types::DateTime" include="Tensor/Types/DateTime.h"/>
172 <lang name="java" type="XidDateTime" include="com.comtechtel.tensor.xid.XidDateTime"/>
173 <lang name="node" type="XidDateTime"/>
174 </type>
175
176 <type name="UUID" size="16">
177 <comment>16 byte UUID</comment>
178 <lang name="c" type="UUID" include="Tensor/CXMF/uuid.h"/>
179 <lang name="cpp" type="::Tensor::Types::UUID" include="Tensor/Types/uuid.h"/>
180 <lang name="java" type="XidUuid" include="com.comtechtel.tensor.xid.XidUuid"/>
181 <lang name="node" type="XidUuid"/>
182 </type>
183
184 <type name="uri">
185 <comment>Standard Universal Resource Identifier (URI)</comment>
186 <tag name="TODO" value="Define uri as a custom type. Use string for now."/>
187 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
188 <lang name="cpp" type="std::string" include="string"/>
189 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
190 <lang name="node" type="XidString"/>
191 </type>
192
193 <type name="json">
194 <comment>JSON formatted/encoded string</comment>
195 <tag name="TODO" value="Define json as a custom type. Use string for now."/>
196 <lang name="c" type="CXMFString" include="Tensor/CXMF/CXMFString.h"/>
197 <lang name="cpp" type="std::string" include="string"/>
198 <lang name="java" type="XidString" include="com.comtechtel.tensor.xid.XidString"/>
199 <lang name="node" type="XidString"/>
200 </type>
201
202 <!--
203 *******************************************************
204 Encoding Data Types
205 *******************************************************
206 -->
207
208 <!-- Encoding format type spec.-->
209 <type name="EncodingFormat" size="2">
210 <comment>
211 The encoding format determines how element data is run-time encoded within a particular element independent of the
212 transport encoding.
213 These values are specified in the "encoding" attribute for elements. Not all encoding formats
214 are supported by every wireline protocol implementation. Additionally, custom encodings may be
215 defined to support application defined encodings. Any non-standard encodings must be registered (to avoid collision)
216 and approved by the appropriate approving authority (e.g. Comtech). Values from 0 to 255 are reserved
217 for standard-encodings. Custom encodings start at 256(0x0100) and extend to 65535 (0xFFFF).\n
218 \n
219 This is not the same as defining in XID a raw datatype or json datatype which are NOT changeable are run-time.
220 \n
221 Example: \n
222 \t The message XMF but a field is defined to be encoded as JSON.\n
223 \t Likewise, the message is JSON, but a field is run-time encoded to be XMF.\n
224 \n
225 Data encoding format type. If 0, value is not encoded. See ResrvedEncodingFormats
226 for a list of standard format specifiers.
227 </comment>
228 <lang name="c" type="uint16_t" include="stdint.h" />
229 <lang name="cpp" type="uint16_t" include="cstdint" />
230 <lang name="java" type="XidShort" include="com.comtechtel.tensor.xid.XidShort" />
231 <lang name="node" type="XidUShort" />
232 </type>
233
234 <!-- ReservedEncodingFormats standard encoding formats.-->
235 <enum name="ReservedEncodingFormats" type="Tensor.uint16" default="native">
236 <comment>
237 Reserved encoding formats define standard encodings known to all implementations.
238 </comment>
239 <literal name="native" value="0">
240 <comment>
241 Data is not encoded, information is in the default format for the particular wireline interface.\n
242 This is the default value if not defined explicitly.
243 </comment>
244 </literal>
245 <literal name="raw" value="1">
246 <comment>
247 Data is in an unspecified binary format. The interpretation of the data is
248 falls to the producer and consumer of the information.
249 For textual wireline encodings like JSON, the data will be valid within the representation.
250 </comment>
251 </literal>
252 <literal name="xmf" value="2">
253 <comment>
254 Data is XMF binary format. The binary data is structured using atoms and atom lists.
255 For textual wireline encodings like JSON, this is XMF base64 encoded.
256 </comment>
257 </literal>
258 <literal name="json" value="3">
259 <comment>
260 Data is formatted as JSON compliant ascii text.
261 </comment>
262 </literal>
263 </enum>
264 </namespace>
265 </specification>
1 TensorLogging/V1.0.0/TensorLogging.xid
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="UTF-8" ?> 1 <?xml version="1.0" encoding="UTF-8" ?>
2 2
3 <specification xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd" 3 <!--
4 xmlns:xid="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd" 4 Copyright (c) 2017, TeleCommunication Systems, Inc.,
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 xsi:schemaLocation="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd XtensibleInterfaceDefinition.xsd" 6 and/or affiliates of TeleCommunication Systems, Inc.
7 identity="Logging.xid"> 7 All rights reserved.
8 <title>Tensor Logging Messages</title> 8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 <comment> 9 Use is subject to license terms included in the distribution.
10 This file contains the base type definitions for logging messages and data. All ENT micro-service compliant systems shall support these datatypes 10 -->
11 for capturing various types of logging information including actionable messages, trace, and usage data. Logging messages are polymorphic and extensible 11
12 as needed to support various types of information. 12 <specification xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
13 </comment> 13 xmlns:xid="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
14 14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 <import ref="http://xid.location.studio/XID/TensorDefinitions.xid" local="TensorDefinitions.xid" /> 15 xsi:schemaLocation="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd XtensibleInterfaceDefinition.xsd"
16 16 identity="Logging.xid">
17 <namespace name="Logging"> 17 <title>Tensor Logging Messages</title>
18 <using namespace="Tensor"/> 18 <comment>
19 19 This file contains the base type definitions for logging messages and data. All ENT micro-service compliant systems shall support these datatypes
20 <!-- 20 for capturing various types of logging information including actionable messages, trace, and usage data. Logging messages are polymorphic and extensible
21 ******************************************************* 21 as needed to support various types of information.
22 Enumeration Definitions 22 </comment>
23 ******************************************************* 23
24 --> 24 <import ref="TensorDefinitions/V1.0.0/TensorDefinitions.xid" local="TensorDefinitions.xid" />
25 <enum name="MessageType" type="Tensor.uint8" default="undefined"> 25
26 <comment> 26 <namespace name="Logging">
27 Message types define the base type identifiers for logging messages. These are used to 27 <using namespace="Tensor"/>
28 identify the type of logging data. The Message type is not a closed set and can be extended as needed. 28
29 The types defined here are common to every system. Type values below 64 are reserved for the core logging extensions 29 <!--
30 Any non-core message types should define type identifiers greater than 64. 30 *******************************************************
31 </comment> 31 Enumeration Definitions
32 <literal name="undefined" value="0"> 32 *******************************************************
33 <comment>Message type is not defined. This is a reserved value and should not be used in most situations.</comment> 33 -->
34 </literal> 34 <enum name="MessageType" type="Tensor.uint8" default="undefined">
35 <literal name="ActionMsg" value="1"> 35 <comment>
36 <comment>Defines a message that requires some responsive action. See Tensor.Logging.ActionMsg structure for more information.</comment> 36 Message types define the base type identifiers for logging messages. These are used to
37 </literal> 37 identify the type of logging data. The Message type is not a closed set and can be extended as needed.
38 <literal name="TraceMsg" value="2"> 38 The types defined here are common to every system. Type values below 64 are reserved for the core logging extensions
39 <comment>Defines a message capturing software trace data typically used for debugging. See Tensor.Logging.TraceMsg structure for more information.</comment> 39 Any non-core message types should define type identifiers greater than 64.
40 </literal> 40 </comment>
41 <literal name="UsageMsg" value="3"> 41 <literal name="undefined" value="0">
42 <comment>Defines a message for capturing usage data. See Tensor.Logging.UsageMsg for more information.</comment> 42 <comment>Message type is not defined. This is a reserved value and should not be used in most situations.</comment>
43 </literal> 43 </literal>
44 <literal name="MetricMsg" value="4"> 44 <literal name="ActionMsg" value="1">
45 <comment>Defines a message for capturing metric data. See Tensor.Logging.MetricMsg for more information.</comment> 45 <comment>Defines a message that requires some responsive action. See Tensor.Logging.ActionMsg structure for more information.</comment>
46 </literal> 46 </literal>
47 </enum> 47 <literal name="TraceMsg" value="2">
48 48 <comment>Defines a message capturing software trace data typically used for debugging. See Tensor.Logging.TraceMsg structure for more information.</comment>
49 <enum name="Severity" type="int8" default="indeterminate"> 49 </literal>
50 <comment> 50 <literal name="UsageMsg" value="3">
51 Severity is defined as part of an Tensor.Logging.ActionMsg describing the severity of the issue. This is an extensible list that can be added to as 51 <comment>Defines a message for capturing usage data. See Tensor.Logging.UsageMsg for more information.</comment>
52 new severities are determine. In general, try to use the core defined severities or add new core ones as needed. Custom severity should be avoided. If defined, 52 </literal>
53 however, start with values > 64. Values less than 64 are reserved. 53 <literal name="MetricMsg" value="4">
54 </comment> 54 <comment>Defines a message for capturing metric data. See Tensor.Logging.MetricMsg for more information.</comment>
55 <literal name="indeterminate" value="0"> 55 </literal>
56 <comment>Severity of the issue is indeterminate.</comment> 56 </enum>
57 </literal> 57
58 <literal name="warning" value="1"> 58 <enum name="Severity" type="int8" default="indeterminate">
59 <comment> 59 <comment>
60 Severity indicates message is a warning regarding the specified issue. Warnings describe a potental issue that 60 Severity is defined as part of an Tensor.Logging.ActionMsg describing the severity of the issue. This is an extensible list that can be added to as
61 may require additional monitoring over time. However, it is not deemed as having a significant 61 new severities are determine. In general, try to use the core defined severities or add new core ones as needed. Custom severity should be avoided. If defined,
62 impaction on system operation. 62 however, start with values > 64. Values less than 64 are reserved.
63 </comment> 63 </comment>
64 </literal> 64 <literal name="indeterminate" value="0">
65 <literal name="minor" value="2"> 65 <comment>Severity of the issue is indeterminate.</comment>
66 <comment> 66 </literal>
67 Message is describing a minor issue, which requires some action. A 67 <literal name="warning" value="1">
68 minor issue is something that does not have a wide scale impact on system operation. 68 <comment>
69 For example a minor issue might be something that would affect a single transaction. 69 Severity indicates message is a warning regarding the specified issue. Warnings describe a potental issue that
70 </comment> 70 may require additional monitoring over time. However, it is not deemed as having a significant
71 </literal> 71 impaction on system operation.
72 <literal name="major" value="3"> 72 </comment>
73 <comment> 73 </literal>
74 Message is describing a major issue, which requires action. A 74 <literal name="minor" value="2">
75 major issue is something that affects the system in a signficant way 75 <comment>
76 such as having impact on multiple transactions. 76 Message is describing a minor issue, which requires some action. A
77 </comment> 77 minor issue is something that does not have a wide scale impact on system operation.
78 </literal> 78 For example a minor issue might be something that would affect a single transaction.
79 <literal name="critical" value="4"> 79 </comment>
80 <comment> 80 </literal>
81 Message is describing a critical issue, which requires immediate action. Critical issues 81 <literal name="major" value="3">
82 are typically catastrophic system issues affecting all transactions in a very significant way. 82 <comment>
83 </comment> 83 Message is describing a major issue, which requires action. A
84 </literal> 84 major issue is something that affects the system in a signficant way
85 <literal name="cleared" value="5"> 85 such as having impact on multiple transactions.
86 <comment>Message is describing an issue has been resolved or no longer requires actions.</comment> 86 </comment>
87 </literal> 87 </literal>
88 </enum> 88 <literal name="critical" value="4">
89 89 <comment>
90 <enum name="Category" type="int8" default="processingError"> 90 Message is describing a critical issue, which requires immediate action. Critical issues
91 <comment> 91 are typically catastrophic system issues affecting all transactions in a very significant way.
92 The category decribes the general category for an ActionMsg. This is an extensible list that can be added to as 92 </comment>
93 new categories are needed. In general, try to use the core defined categories or add new ones as needed. Custom categories should start with 93 </literal>
94 values > 64. Values less than 64 are reserved. 94 <literal name="cleared" value="5">
95 </comment> 95 <comment>Message is describing an issue has been resolved or no longer requires actions.</comment>
96 <literal name ="undefined" value ="0"> 96 </literal>
97 <comment>Action category is undefined or not known.</comment> 97 </enum>
98 </literal> 98
99 <literal name="communications" value="1"> 99 <enum name="Category" type="int8" default="processingError">
100 <comment>A communications and/or networking related issue.</comment> 100 <comment>
101 </literal> 101 The category decribes the general category for an ActionMsg. This is an extensible list that can be added to as
102 <literal name="qualityOfService" value="2"> 102 new categories are needed. In general, try to use the core defined categories or add new ones as needed. Custom categories should start with
103 <comment>A quality of service related issue.</comment> 103 values > 64. Values less than 64 are reserved.
104 </literal> 104 </comment>
105 <literal name="processingError" value="3"> 105 <literal name ="undefined" value ="0">
106 <comment>A processing or runtime related issue.</comment> 106 <comment>Action category is undefined or not known.</comment>
107 </literal> 107 </literal>
108 <literal name="equipment" value="4"> 108 <literal name="communications" value="1">
109 <comment>An equipment related issue.</comment> 109 <comment>A communications and/or networking related issue.</comment>
110 </literal> 110 </literal>
111 <literal name="environmental" value="5"> 111 <literal name="qualityOfService" value="2">
112 <comment>A environment related issue.</comment> 112 <comment>A quality of service related issue.</comment>
113 </literal> 113 </literal>
114 </enum> 114 <literal name="processingError" value="3">
115 115 <comment>A processing or runtime related issue.</comment>
116 <enum name="TraceLevel" type="Tensor.int8" default="undefined"> 116 </literal>
117 <comment>Trace level defines the level of tracing information reported. This allows for filtering of information based on rank.</comment> 117 <literal name="equipment" value="4">
118 <literal name="undefined" value="0"> 118 <comment>An equipment related issue.</comment>
119 <comment>Trace level is not defined.</comment> 119 </literal>
120 </literal> 120 <literal name="environmental" value="5">
121 <literal name="overview" value="1"> 121 <comment>A environment related issue.</comment>
122 <comment>Information contained in the trace message is high-level or summary.</comment> 122 </literal>
123 </literal> 123 </enum>
124 <literal name="trace" value="2"> 124
125 <comment>Information contained in the trace message is related to program flow and sequencing.</comment> 125 <enum name="TraceLevel" type="Tensor.int8" default="undefined">
126 </literal> 126 <comment>Trace level defines the level of tracing information reported. This allows for filtering of information based on rank.</comment>
127 <literal name="detail" value="3"> 127 <literal name="undefined" value="0">
128 <comment>Information contained in the trace message is detailed information.</comment> 128 <comment>Trace level is not defined.</comment>
129 </literal> 129 </literal>
130 <literal name="debug" value="4"> 130 <literal name="overview" value="1">
131 <comment>Information contained in the trace message contains debugging information.</comment> 131 <comment>Information contained in the trace message is high-level or summary.</comment>
132 </literal> 132 </literal>
133 </enum> 133 <literal name="trace" value="2">
134 134 <comment>Information contained in the trace message is related to program flow and sequencing.</comment>
135 <struct name="DebugInfo"> 135 </literal>
136 <comment> 136 <literal name="detail" value="3">
137 Structure captures the file and line number information for Trace Messages. This provides information about where the trace message was sent. 137 <comment>Information contained in the trace message is detailed information.</comment>
138 </comment> 138 </literal>
139 <elem name="file" type="Tensor.string" multiplicity="1"> 139 <literal name="debug" value="4">
140 <comment>File name where this message was logged.</comment> 140 <comment>Information contained in the trace message contains debugging information.</comment>
141 </elem> 141 </literal>
142 <elem name="line" type="Tensor.uint32" multiplicity="1"> 142 </enum>
143 <comment>Line number in file where this message is logged.</comment> 143
144 </elem> 144 <struct name="DebugInfo">
145 <elem name="thid" type="Tensor.uint64" multiplicity="1" default="0"> 145 <comment>
146 <comment>Optional Thread ID, if not specified, default value is 0.</comment> 146 Structure captures the file and line number information for Trace Messages. This provides information about where the trace message was sent.
147 </elem> 147 </comment>
148 148 <elem name="file" type="Tensor.string" multiplicity="1" ord="64">
149 </struct> 149 <comment>File name where this message was logged.</comment>
150 150 </elem>
151 <!-- 151 <elem name="line" type="Tensor.uint32" multiplicity="1" ord="65">
152 ******************************************************* 152 <comment>Line number in file where this message is logged.</comment>
153 Metric Structure Definitions 153 </elem>
154 ******************************************************* 154 <elem name="thid" type="Tensor.uint64" multiplicity="1" default="0" ord="66">
155 --> 155 <comment>Optional Thread ID, if not specified, default value is 0.</comment>
156 156 </elem>
157 <enum name="MetricType" type="Tensor.uint8" default="undefined"> 157
158 <literal name="undefined" value="0"> 158 </struct>
159 <comment>Metric type is not defined. This is a reserved value and should not be used in most situations.</comment> 159
160 </literal> 160 <!--
161 <literal name="PegCount" value="1"> 161 *******************************************************
162 <comment>Defines a simple monotonically incremented counter.</comment> 162 Metric Structure Definitions
163 </literal> 163 *******************************************************
164 <literal name="AppMetrics" value="2"> 164 -->
165 <comment>Defines a complex metric measuring duration and concurrency.</comment> 165
166 </literal> 166 <enum name="MetricType" type="Tensor.uint8" default="undefined">
167 </enum> 167 <literal name="undefined" value="0">
168 168 <comment>Metric type is not defined. This is a reserved value and should not be used in most situations.</comment>
169 <struct name="Metric"> 169 </literal>
170 <elem name="metricType" type="MetricType" multiplicity="1" rttd="true"> 170 <literal name="PegCount" value="1">
171 <comment>This specifies the type of the reported metric.</comment> 171 <comment>Defines a simple monotonically incremented counter.</comment>
172 </elem> 172 </literal>
173 <elem name="name" type="string" multiplicity="1"> 173 <literal name="AppMetrics" value="2">
174 <comment>Name of the reported metric.</comment> 174 <comment>Defines a complex metric measuring duration and concurrency.</comment>
175 </elem> 175 </literal>
176 </struct> 176 </enum>
177 177
178 <struct name="PegCount" type="Metric" rttkey="Logging.MetricType.PegCount"> 178 <struct name="Metric">
179 <elem name="value" type="uint32" multiplicity="1"> 179 <elem name="metricType" type="MetricType" multiplicity="1" rttd="true" ord="64">
180 <comment>Value of peg count since last reporting.</comment> 180 <comment>This specifies the type of the reported metric.</comment>
181 </elem> 181 </elem>
182 </struct> 182 <elem name="name" type="string" multiplicity="1" ord="65">
183 183 <comment>Name of the reported metric.</comment>
184 <struct name="AppMetrics" type="Metric" rttkey="Logging.MetricType.AppMetrics"> 184 </elem>
185 <elem name="totalCount" type="uint32" multiplicity="1"> 185 </struct>
186 <comment>Total count of invocations since last reporting.</comment> 186
187 </elem> 187 <struct name="PegCount" type="Metric" rttkey="Logging.MetricType.PegCount">
188 <elem name="currentCount" type="uint32" multiplicity="1"> 188 <elem name="value" type="uint32" multiplicity="1" ord="80">
189 <comment>concurrent invocations at time of reporting.</comment> 189 <comment>Value of peg count since last reporting.</comment>
190 </elem> 190 </elem>
191 <elem name="peakCount" type="uint32" multiplicity="1"> 191 </struct>
192 <comment>Peak concurrent invocations since last reporting.</comment> 192
193 </elem> 193 <struct name="AppMetrics" type="Metric" rttkey="Logging.MetricType.AppMetrics">
194 <elem name="totalTime" type="uint64" multiplicity="1"> 194 <elem name="totalCount" type="uint32" multiplicity="1" ord="80">
195 <comment>Total time spent on invocations in nanoseconds since last reporting.</comment> 195 <comment>Total count of invocations since last reporting.</comment>
196 </elem> 196 </elem>
197 <elem name="peakTime" type="uint64" multiplicity="1"> 197 <elem name="currentCount" type="uint32" multiplicity="1" ord="81">
198 <comment>Peak time for an invocation in nanoseconds since last reporting.</comment> 198 <comment>concurrent invocations at time of reporting.</comment>
199 </elem> 199 </elem>
200 <elem name="successCount" type="uint32" multiplicity="1"> 200 <elem name="peakCount" type="uint32" multiplicity="1" ord="82">
201 <comment>Count of successful invocations since last reporting.</comment> 201 <comment>Peak concurrent invocations since last reporting.</comment>
202 </elem> 202 </elem>
203 <elem name="failureCount" type="uint32" multiplicity="1"> 203 <elem name="totalTime" type="uint64" multiplicity="1" ord="83">
204 <comment>Count of failed invocations since last reporting.</comment> 204 <comment>Total time spent on invocations in nanoseconds since last reporting.</comment>
205 </elem> 205 </elem>
206 </struct> 206 <elem name="peakTime" type="uint64" multiplicity="1" ord="84">
207 207 <comment>Peak time for an invocation in nanoseconds since last reporting.</comment>
208 208 </elem>
209 209 <elem name="successCount" type="uint32" multiplicity="1" ord="85">
210 <!-- 210 <comment>Count of successful invocations since last reporting.</comment>
211 ******************************************************* 211 </elem>
212 Message Structure Definitions 212 <elem name="failureCount" type="uint32" multiplicity="1" ord="86">
213 ******************************************************* 213 <comment>Count of failed invocations since last reporting.</comment>
214 --> 214 </elem>
215 215 </struct>
216 <struct name="MessageBase"> 216
217 <comment> 217
218 Base type for all messages. This contains only the polymorphic type data. The structure Message derives from this 218
219 structure and provides common fields typically useful in logging related applications. Derive from this structure 219 <!--
220 if messages are related to logging but do not require the standard fields. It is recommended that most specializations 220 *******************************************************
221 should start with Message as the base type. 221 Message Structure Definitions
222 </comment> 222 *******************************************************
223 <elem name="type" type="MessageType" multiplicity="1" rttd="true"> 223 -->
224 <comment> This specifies the type of message.</comment> 224
225 </elem> 225 <struct name="MessageBase">
226 <elem name="date" type="datetime" multiplicity="1"> 226 <comment>
227 <comment>The date/time the message occured.</comment> 227 Base type for all messages. This contains only the polymorphic type data. The structure Message derives from this
228 </elem> 228 structure and provides common fields typically useful in logging related applications. Derive from this structure
229 <elem name="source" type="Tensor.uri" multiplicity="1"> 229 if messages are related to logging but do not require the standard fields. It is recommended that most specializations
230 <comment>URI Identifying name of the component or process logging the message.</comment> 230 should start with Message as the base type.
231 </elem> 231 </comment>
232 <elem name="info" type="string" multiplicity="0..1"> 232 <elem name="type" type="MessageType" multiplicity="1" rttd="true" ord="64">
233 <comment>Optional free form string data.</comment> 233 <comment> This specifies the type of message.</comment>
234 </elem> 234 </elem>
235 <elem name="data" type="Tensor.json" multiplicity="0..1"> 235 <elem name="date" type="datetime" multiplicity="1" ord="65">
236 <comment>Optional structured data.</comment> 236 <comment>The date/time the message occured.</comment>
237 </elem> 237 </elem>
238 <elem name="debug" type="DebugInfo" multiplicity="0..1"> 238 <elem name="source" type="Tensor.uri" multiplicity="1" ord="66">
239 <comment>Optional debug information for message.</comment> 239 <comment>URI Identifying name of the component or process logging the message.</comment>
240 </elem> 240 </elem>
241 </struct> 241 <elem name="info" type="string" multiplicity="0..1" ord="67">
242 242 <comment>Optional free form string data.</comment>
243 <!-- Message type --> 243 </elem>
244 <struct name="TransactionMsg" type="MessageBase"> 244 <elem name="data" type="Tensor.json" multiplicity="0..1" ord="68">
245 <comment> 245 <comment>Optional structured data.</comment>
246 Basic logging message data common to all types of logging. This specializes MessageBase and is the standard logging message. Create custom message types as needed; however, consider 246 </elem>
247 specializing from the core defined sub-types of ActionMsg, Trace, or Usage depending upon need. In most cases, you should not use this message directly. 247 <elem name="debug" type="DebugInfo" multiplicity="0..1" ord="69">
248 </comment> 248 <comment>Optional debug information for message.</comment>
249 <elem name="tid" type="Tensor.UUID" multiplicity="1"> 249 </elem>
250 <comment>Unique ID identifying the internal transaction related to the message.</comment> 250 </struct>
251 </elem> 251
252 <elem name="etid" type="string" multiplicity="0..1"> 252 <!-- Message type -->
253 <comment>Optional externally defined transaction ID.</comment> 253 <struct name="TransactionMsg" type="MessageBase">
254 </elem> 254 <comment>
255 <elem name="acctid" type="string" multiplicity="0..1"> 255 Basic logging message data common to all types of logging. This specializes MessageBase and is the standard logging message. Create custom message types as needed; however, consider
256 <comment>Optional externally defined account/group identifier.</comment> 256 specializing from the core defined sub-types of ActionMsg, Trace, or Usage depending upon need. In most cases, you should not use this message directly.
257 </elem> 257 </comment>
258 <elem name="devid" type="string" multiplicity="0..1"> 258 <elem name="tid" type="Tensor.UUID" multiplicity="1" ord="80">
259 <comment>Optional externally defined device identifier.</comment> 259 <comment>Unique ID identifying the internal transaction related to the message.</comment>
260 </elem> 260 </elem>
261 <elem name="appid" type="string" multiplicity="0..1"> 261 <elem name="etid" type="string" multiplicity="0..1" ord="81">
262 <comment>Optional externally defined application (or application key) identifier.</comment> 262 <comment>Optional externally defined transaction ID.</comment>
263 </elem> 263 </elem>
264 264 <elem name="acctid" type="string" multiplicity="0..1" ord="82">
265 </struct> 265 <comment>Optional externally defined account/group identifier.</comment>
266 266 </elem>
267 <!-- ActionMsg type --> 267 <elem name="devid" type="string" multiplicity="0..1" ord="83">
268 <struct name="ActionMsg" type="TransactionMsg" rttkey="Logging.MessageType.ActionMsg"> 268 <comment>Optional externally defined device identifier.</comment>
269 <comment> 269 </elem>
270 A message that requires another system/user to respond with some action. 270 <elem name="appid" type="string" multiplicity="0..1" ord="84">
271 </comment> 271 <comment>Optional externally defined application (or application key) identifier.</comment>
272 <elem name="id" type="Tensor.uint32" multiplicity="1"> 272 </elem>
273 <comment>Error code identifying the fault type</comment> 273
274 </elem> 274 </struct>
275 <elem name="severity" type="Severity" multiplicity="1"/> 275
276 <elem name="category" type="Category" multiplicity="1"/> 276 <!-- ActionMsg type -->
277 <elem name="iid" type="Tensor.uri" multiplicity="0..1"> 277 <struct name="ActionMsg" type="TransactionMsg" rttkey="Logging.MessageType.ActionMsg">
278 <comment>Optional incident identifier. Should uniquely define the action issue for future reference.</comment> 278 <comment>
279 </elem> 279 A message that requires another system/user to respond with some action.
280 280 </comment>
281 </struct> 281 <elem name="id" type="Tensor.uri" multiplicity="1" ord="96">
282 282 <comment>Error code identifying the fault type</comment>
283 <!-- TraceMsg type --> 283 </elem>
284 <struct name="TraceMsg" type="TransactionMsg" rttkey="Logging.MessageType.TraceMsg"> 284 <elem name="severity" type="Severity" multiplicity="1" ord="97"/>
285 <comment> 285 <elem name="category" type="Category" multiplicity="1" ord="98"/>
286 Trace message for general logging and reporting of information 286 <elem name="iid" type="Tensor.uri" multiplicity="0..1" ord="99">
287 </comment> 287 <comment>Optional incident identifier used to identify an action instance uniquely. This is needed when there are stateful clearing events.</comment>
288 <elem name="level" type="TraceLevel" multiplicity="1"> 288 </elem>
289 <comment>Indicates the level of the trace: overview is the highest level and debug is the lowest</comment> 289 </struct>
290 </elem> 290
291 </struct> 291 <!-- TraceMsg type -->
292 292 <struct name="TraceMsg" type="TransactionMsg" rttkey="Logging.MessageType.TraceMsg">
293 <!-- UsageMsg type --> 293 <comment>
294 <struct name="UsageMsg" type="TransactionMsg" rttkey="Logging.MessageType.UsageMsg"> 294 Trace message for general logging and reporting of information
295 <comment> 295 </comment>
296 Message capturing usage information for reporting statistical, transactional, edge, location, or other useful information generated in the normal 296 <elem name="level" type="TraceLevel" multiplicity="1" ord="96">
297 operation of the system. 297 <comment>Indicates the level of the trace: overview is the highest level and debug is the lowest</comment>
298 </comment> 298 </elem>
299 <elem name="uri" type="Tensor.uri" multiplicity="1" rttd="true"> 299 </struct>
300 <comment> Usage id specific to a type of usage information. Can be general or application specific.</comment> 300
301 </elem> 301 <!-- UsageMsg type -->
302 </struct> 302 <struct name="UsageMsg" type="TransactionMsg" rttkey="Logging.MessageType.UsageMsg">
303 303 <comment>
304 <!-- MetricMsg type --> 304 Message capturing usage information for reporting statistical, transactional, edge, location, or other useful information generated in the normal
305 <struct name="MetricMsg" type="MessageBase" rttkey="Logging.MessageType.MetricMsg"> 305 operation of the system.
306 <elem name="start" type="datetime" multiplicity="1"> 306 </comment>
307 <comment>The date/time of the start of the report interval. date is end the end of the report interval.</comment> 307 <elem name="uri" type="Tensor.uri" multiplicity="1" rttd="true" ord="96">
308 </elem> 308 <comment> Usage id specific to a type of usage information. Can be general or application specific.</comment>
309 <elem name="duration" type="uint16" multiplicity="1"> 309 </elem>
310 <tag name="unit" value="sec"/> 310 </struct>
311 <comment>The interval in seconds for the metric report.</comment> 311
312 </elem> 312 <!-- MetricMsg type -->
313 <elem name="metrics" type="Metric" multiplicity="1..*"> 313 <struct name="MetricMsg" type="MessageBase" rttkey="Logging.MessageType.MetricMsg">
314 <comment>List of metrics being reported.</comment> 314 <elem name="start" type="datetime" multiplicity="1" ord="80">
315 </elem> 315 <comment>The date/time of the start of the report interval. date is end the end of the report interval.</comment>
316 </struct> 316 </elem>
317 317 <elem name="duration" type="uint16" multiplicity="1" ord="81">
318 <!-- 318 <tag name="unit" value="sec"/>
319 ******************************************************* 319 <comment>The interval in seconds for the metric report.</comment>
320 Standard Usage Definitions 320 </elem>
321 ******************************************************* 321 <elem name="metrics" type="Metric" multiplicity="1..*" polymorphic="true" ord="82">
322 --> 322 <comment>List of metrics being reported.</comment>
323 323 </elem>
324 <!--TaskReport Msg--> 324 </struct>
325 <struct name="TaskReport" type="Logging.UsageMsg" rttkey='"tpf://taskrpt"'> 325
326 <comment> 326 <!--
327 Message reports processing task result data. Tasks are any execution unit the 327 *******************************************************
328 that is deemed to have a specific beginning and end. This is a fairly generic 328 Standard Usage Definitions
329 definition making the usage report suitable for a variety of applications. 329 *******************************************************
330 </comment> 330 -->
331 <elem name="taskid" type="string" multiplicity="1"> 331
332 <comment> 332 <!--TaskReport Msg-->
333 The unique tasks identifier. A source may have multiple tasks, this field assigns 333 <struct name="TaskReport" type="Logging.UsageMsg" rttkey='"tpf://taskrpt"'>
334 an identifier that uniquely characterizes what the task was that was accomplished. 334 <comment>
335 </comment> 335 Message reports processing task result data. Tasks are any execution unit the
336 </elem> 336 that is deemed to have a specific beginning and end. This is a fairly generic
337 <elem name="start" type="datetime" multiplicity="1"> 337 definition making the usage report suitable for a variety of applications.
338 <comment> 338 </comment>
339 The start time at which the processor is used. 339 <elem name="taskid" type="string" multiplicity="1" ord="112">
340 </comment> 340 <comment>
341 </elem> 341 The unique tasks identifier. A source may have multiple tasks, this field assigns
342 <elem name="duration" type="uint32" multiplicity="1"> 342 an identifier that uniquely characterizes what the task was that was accomplished.
343 <tag name="unit" value="usec"/> 343 </comment>
344 <comment> 344 </elem>
345 The duration of the processing in microseconds. This is not meant to be a high 345 <elem name="start" type="datetime" multiplicity="1" ord="113">
346 resolution duration monitoring, implement a metric counter for precise timing data. 346 <comment>
347 </comment> 347 The start time at which the processor is used.
348 </elem> 348 </comment>
349 <elem name="status" type="ResultCode" multiplicity="1"> 349 </elem>
350 <comment>The task result code.</comment> 350 <elem name="duration" type="uint32" multiplicity="1" ord="114">
351 </elem> 351 <tag name="unit" value="usec"/>
352 </struct> 352 <comment>
353 353 The duration of the processing in microseconds. This is not meant to be a high
354 </namespace> 354 resolution duration monitoring, implement a metric counter for precise timing data.
355 </specification> 355 </comment>
356 </elem>
357 <elem name="status" type="ResultCode" multiplicity="1" ord="115">
358 <comment>The task result code.</comment>
359 </elem>
360 </struct>
361
362 </namespace>
363 </specification>
......
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!--
4 Copyright (c) 2016, 2017, TeleCommunication Systems, Inc.,
5 a wholly-owned subsidiary of Comtech Telecommunications Corp.
6 and/or affiliates of TeleCommunication Systems, Inc.
7 All rights reserved.
8 TeleCommunication Systems, Inc. PROPRIETARY/CONFIDENTIAL.
9 Use is subject to license terms included in the distribution.
10 -->
11
12 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
13 targetNamespace="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
14 xmlns="http://xid.location.studio/XID/XtensibleInterfaceDefinition.xsd"
15 elementFormDefault="qualified">
16
17 <xs:annotation>
18 <xs:documentation xml:lang="en">
19 XtensibleInterfaceDefinition XML Schema Definition.
20 </xs:documentation>
21 </xs:annotation>
22
23 <xs:element name="specification" type="Specification"/>
24
25 <xs:complexType name="Specification">
26 <xs:sequence>
27 <xs:element maxOccurs="1" minOccurs="1" name="title" type="xs:normalizedString"/>
28 <xs:choice maxOccurs="unbounded" minOccurs="0">
29 <xs:element maxOccurs="unbounded" minOccurs="0" name="comment" type="xs:string"/>
30 <xs:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="xs:anyURI"/>
31 <xs:element maxOccurs="unbounded" minOccurs="0" name="tag" type="Tag"/>
32 </xs:choice>
33 <xs:element maxOccurs="unbounded" minOccurs="0" name="import" type="Import"/>
34 <xs:choice maxOccurs="unbounded" minOccurs="0">
35 <xs:element name="using" maxOccurs="unbounded" minOccurs="0" type="Using"/>
36 <xs:element maxOccurs="unbounded" minOccurs="0" name="namespace" type="Namespace"/>
37 </xs:choice>
38 </xs:sequence>
39 <xs:attribute name="identity" use="required" type="NSName">
40 <xs:annotation>
41 <xs:documentation xml:lang="en">
42 Unique name for this spec (e.g. com.company.spec-name)
43 </xs:documentation>
44 </xs:annotation>
45 </xs:attribute>
46
47 </xs:complexType>
48
49 <xs:complexType name="Element">
50 <xs:choice maxOccurs="unbounded" minOccurs="0">
51 <xs:element maxOccurs="unbounded" minOccurs="0" name="comment" type="xs:string"/>
52 <xs:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="xs:anyURI"/>
53 <xs:element maxOccurs="unbounded" minOccurs="0" name="tag" type="Tag"/>
54 </xs:choice>
55 </xs:complexType>
56
57 <xs:complexType name="Import">
58 <xs:complexContent>
59 <xs:extension base="Element">
60 <xs:attribute name="ref" use="required" type="xs:anyURI" />
61 <xs:attribute name="local" use="optional" type="xs:normalizedString" />
62 </xs:extension>
63 </xs:complexContent>
64 </xs:complexType>
65
66 <xs:simpleType name="NSName">
67 <xs:restriction base="xs:token">
68 <xs:pattern value="([a-zA-Z][a-zA-Z0-9_]*.)*[a-zA-Z][a-zA-Z0-9_]*">
69 <xs:annotation>
70 <xs:documentation xml:lang="en">
71 Fully qualified name (e.g. "SomeNamespace.SomeName" ) or base name (e.g. "SomeName").
72 </xs:documentation>
73 </xs:annotation>
74 </xs:pattern>
75 </xs:restriction>
76 </xs:simpleType>
77
78 <xs:simpleType name="PName">
79 <xs:restriction base="NSName">
80 <xs:pattern value="[a-zA-Z][a-zA-Z0-9_]*">
81 <xs:annotation>
82 <xs:documentation xml:lang="en">
83 base name (e.g. "SomeName").
84 </xs:documentation>
85 </xs:annotation>
86 </xs:pattern>
87 </xs:restriction>
88 </xs:simpleType>
89
90
91 <xs:complexType name="DeclarationBase">
92 <xs:complexContent>
93 <xs:extension base="Element">
94 <xs:sequence>
95 <xs:choice maxOccurs="unbounded" minOccurs="0">
96 <xs:element name="using" maxOccurs="unbounded" minOccurs="0" type="Using"/>
97 <xs:element name="enum" maxOccurs="unbounded" minOccurs="0" type="Enumeration"/>
98 <xs:element name="type" maxOccurs="unbounded" minOccurs="0" type="Type"/>
99 <xs:element name="array" maxOccurs="unbounded" minOccurs="0" type="Array"/>
100 <xs:element name="struct" maxOccurs="unbounded" minOccurs="0" type="Structure"/>
101 </xs:choice>
102 </xs:sequence>
103 </xs:extension>
104 </xs:complexContent>
105 </xs:complexType>
106
107 <xs:complexType name="Namespace">
108 <xs:complexContent>
109 <xs:extension base="DeclarationBase">
110 <xs:sequence>
111 <xs:element name="interface" maxOccurs="unbounded" minOccurs="0" type="Interface"/>
112 </xs:sequence>
113 <xs:attribute name="name" use="required" type="NSName" />
114 </xs:extension>
115 </xs:complexContent>
116 </xs:complexType>
117
118 <xs:complexType name="Using">
119 <xs:complexContent>
120 <xs:extension base="Element">
121 <xs:attribute name="namespace" use="required" type="NSName"/>
122 </xs:extension>
123 </xs:complexContent>
124 </xs:complexType>
125
126 <xs:complexType name="TypeBase">
127 <xs:complexContent>
128 <xs:extension base="Element">
129 <xs:attribute name="name" use="required" type="PName" />
130 <xs:attribute name="size" default="-1" type="Size">
131 <xs:annotation>
132 <xs:documentation xml:lang="en">
133 "size" is used to denote fixed sized types.
134 Only fixed size types can be used in array and packed struct.
135 Array with a fixed size (dimension) is a fixed sized type,
136 and can be further used in an array or packed struct.
137 </xs:documentation>
138 </xs:annotation>
139 </xs:attribute>
140 </xs:extension>
141 </xs:complexContent>
142 </xs:complexType>
143
144
145 <xs:complexType name="Type">
146 <xs:complexContent>
147 <xs:extension base="TypeBase">
148 <xs:sequence>
149 <xs:element name="lang" maxOccurs="unbounded" minOccurs="0" type="TypeLang"/>
150 </xs:sequence>
151 </xs:extension>
152 </xs:complexContent>
153 </xs:complexType>
154
155 <xs:complexType name="TypeLang">
156 <xs:complexContent>
157 <xs:extension base="Element">
158 <xs:attribute name="name" use="required" type="xs:string" />
159 <xs:attribute name="type" use="required" type="xs:string" />
160 <xs:attribute name="include" use="optional" type="xs:string">
161 <xs:annotation>
162 <xs:documentation xml:lang="en">
163 "include" content is dependent on the language.
164 "size" is used to denote fixed sized types.
165 Only fixed size types can be used in array and packed struct.
166 Array with a fixed size (dimension) is a fixed sized type,
167 and can be further used in an array or packed struct.
168 </xs:documentation>
169 </xs:annotation>
170 </xs:attribute>
171 </xs:extension>
172 </xs:complexContent>
173 </xs:complexType>
174
175 <xs:complexType name="DeclarationTypeBase">
176 <xs:complexContent>
177 <xs:extension base="TypeBase">
178 <xs:sequence>
179 <xs:choice maxOccurs="unbounded" minOccurs="0">
180 <xs:element name="using" maxOccurs="unbounded" minOccurs="0" type="Using"/>
181 <xs:element name="enum" maxOccurs="unbounded" minOccurs="0" type="Enumeration"/>
182 <xs:element name="type" maxOccurs="unbounded" minOccurs="0" type="Type"/>
183 <xs:element name="array" maxOccurs="unbounded" minOccurs="0" type="Array"/>
184 <xs:element name="struct" maxOccurs="unbounded" minOccurs="0" type="Structure"/>
185 </xs:choice>
186 </xs:sequence>
187 </xs:extension>
188 </xs:complexContent>
189 </xs:complexType>
190
191 <xs:complexType name="Structure">
192 <xs:complexContent>
193 <xs:extension base="DeclarationTypeBase">
194 <xs:sequence>
195 <xs:element name="elem" maxOccurs="unbounded" minOccurs="0" type="Elem"/>
196 </xs:sequence>
197 <xs:attribute name="type" use="optional" type="NSName"/>
198 <xs:attribute name="rttkey" use="optional" type="xs:string">
199 <xs:annotation>
200 <xs:documentation xml:lang="en">
201 rttkey defines the key value used to identify this
202 type from other types in the inheritance chain.
203 This key value is used to generate and register a type
204 specific factory.
205 </xs:documentation>
206 </xs:annotation>
207 </xs:attribute>
208 <xs:attribute name="pack" default="false" type="xs:boolean">
209 <xs:annotation>
210 <xs:documentation xml:lang="en">
211 Inherited "pack" takes prescedence.
212 If "pack" is true, all elems must be a fixed sized type and "ord" on elems are ignored.
213 "pack" impacts the XMF encoding.
214 </xs:documentation>
215 </xs:annotation>
216 </xs:attribute>
217 </xs:extension>
218 </xs:complexContent>
219 </xs:complexType>
220
221 <xs:complexType name="ExtStruct">
222 <xs:complexContent>
223 <!-- This will eventually be a Structure derivative -->
224 <!-- Structure requires <elem> and has attribute "inherit" ... which should change to "type" -->
225 <xs:extension base="Structure">
226 <xs:attribute name="sid" use="optional" default="0" type="IntegerOrHex" />
227 <xs:attribute name="encoding" use="optional" default="native" type="Encoding">
228 <xs:annotation>
229 <xs:documentation xml:lang="en">
230 Document this.
231 </xs:documentation>
232 </xs:annotation>
233 </xs:attribute>
234 </xs:extension>
235 </xs:complexContent>
236 </xs:complexType>
237
238 <xs:complexType name="ExtStyle">
239 <xs:complexContent>
240 <!-- This will eventually be a Structure derivative -->
241 <!-- Structure requires <elem> and has attribute "type" -->
242 <xs:extension base="ExtStruct">
243 <xs:attribute name="style" use="optional" default="callback" type="OutputStyle">
244 <xs:annotation>
245 <xs:documentation xml:lang="en">
246 Document this.
247 </xs:documentation>
248 </xs:annotation>
249 </xs:attribute>
250 </xs:extension>
251 </xs:complexContent>
252 </xs:complexType>
253
254 <xs:simpleType name="OutputStyle">
255 <xs:restriction base="xs:token">
256 <xs:pattern value="callback|arg|return">
257 <xs:annotation>
258 <xs:documentation xml:lang="en">
259 native=native format (xmf, json, etc.), same as index=0.
260 raw=codec defined outside encoding, same as index=1.
261 xmf=always XMF, same as index=2.
262 json=always json, same as index=3.
263 number=index into encoding table (first 255 are reserved).
264 PName=dynamic, name of element that holds the encoding value.
265 </xs:documentation>
266 </xs:annotation>
267 </xs:pattern>
268 </xs:restriction>
269 </xs:simpleType>
270
271 <xs:simpleType name="Size">
272 <xs:restriction base="xs:integer">
273 <xs:minInclusive value="-1"/>
274 </xs:restriction>
275 </xs:simpleType>
276
277 <xs:complexType name="Array">
278 <xs:annotation>
279 <xs:documentation xml:lang="en">
280 An Array with a fixed "size" can be used as a fixed sized type.
281 </xs:documentation>
282 </xs:annotation>
283 <xs:complexContent>
284 <xs:extension base="TypeBase">
285 <xs:attribute name="type" use="required" type="NSName">
286 <xs:annotation>
287 <xs:documentation xml:lang="en">
288 Must be a type with a fixed "size".
289 </xs:documentation>
290 </xs:annotation>
291 </xs:attribute>
292 </xs:extension>
293 </xs:complexContent>
294 </xs:complexType>
295
296 <xs:complexType name="Enumeration">
297 <xs:complexContent>
298 <xs:extension base="TypeBase">
299 <xs:sequence>
300 <xs:element maxOccurs="unbounded" minOccurs="1" name="literal" type="EnumerationLiteral"/>
301 </xs:sequence>
302 <xs:attribute name="type" use="required" type="EnumerationType"/>
303 <xs:attribute name="default" use="required" type="PName"/>
304 </xs:extension>
305 </xs:complexContent>
306 </xs:complexType>
307
308 <xs:simpleType name="EnumerationType">
309 <xs:restriction base="NSName">
310 <xs:enumeration value="Tensor.int8"/>
311 <xs:enumeration value="Tensor.uint8"/>
312 <xs:enumeration value="Tensor.int16"/>
313 <xs:enumeration value="Tensor.uint16"/>
314 <xs:enumeration value="Tensor.int32"/>
315 <xs:enumeration value="Tensor.uint32"/>
316 <xs:enumeration value="int8"/>
317 <xs:enumeration value="uint8"/>
318 <xs:enumeration value="int16"/>
319 <xs:enumeration value="uint16"/>
320 <xs:enumeration value="int32"/>
321 <xs:enumeration value="uint32"/>
322 </xs:restriction>
323 </xs:simpleType>
324
325 <xs:complexType name="EnumerationLiteral">
326 <xs:complexContent>
327 <xs:extension base="Element">
328 <xs:attribute name="name" use="required" type="PName" />
329 <xs:attribute name="value" use="required" type="IntegerOrHex"/>
330 </xs:extension>
331 </xs:complexContent>
332 </xs:complexType>
333
334 <xs:simpleType name="IntegerOrHex">
335 <xs:restriction base="xs:token">
336 <xs:pattern value="((0)|([-]?[1-9][0-9]*)|(0x([0-9a-fA-F]{2})+))"/>
337 </xs:restriction>
338 </xs:simpleType>
339
340
341 <!--
342 <xs:complexType name="Tag">
343 <xs:complexContent>
344 <xs:extension base="Element">
345 <xs:attribute name="name" use="required" type="xs:normalizedString" />
346 <xs:attribute name="value" use="required" type="xs:normalizedString" />
347 </xs:extension>
348 </xs:complexContent>
349 </xs:complexType>
350 -->
351
352 <xs:complexType name="Tag">
353 <xs:attribute name="name" use="required" type="xs:normalizedString" />
354 <xs:attribute name="value" use="required" type="xs:normalizedString" />
355 </xs:complexType>
356
357
358 <xs:complexType name="Elem">
359 <xs:complexContent>
360 <xs:extension base="Element">
361 <xs:attribute name="name" use="required" type="PName" />
362 <xs:attribute name="type" use="required" type="NSName" />
363 <xs:attribute name="polymorphic" default="false" type="xs:boolean"/>
364 <xs:attribute name="multiplicity" default="1" type="Multiplicity"/>
365 <xs:attribute name="default" use="optional" type="xs:normalizedString"/>
366 <xs:attribute name="ord" default="L" type="LPGIntegerOrHex" />
367 <xs:attribute name="rttd" default="false" type="xs:boolean">
368 <xs:annotation>
369 <xs:documentation xml:lang="en">
370 rttd identified this element in the struct as
371 being the RTT Designator.
372 </xs:documentation>
373 </xs:annotation>
374 </xs:attribute>
375 <xs:attribute name="encoding" use="optional" default="native" type="Encoding">
376 <xs:annotation>
377 <xs:documentation xml:lang="en">
378 rttkey defines the key value used to identify this
379 type from other types in the inheritance chain.
380 This key value is used to generate and register a type
381 specific factory.
382 </xs:documentation>
383 </xs:annotation>
384 </xs:attribute>
385 </xs:extension>
386 </xs:complexContent>
387 </xs:complexType>
388
389 <xs:simpleType name="LPGIntegerOrHex">
390 <xs:restriction base="xs:token">
391 <xs:pattern value="(([LPG])|(0)|([1-9][0-9]*)|(0x([0-9a-fA-F]{2})+))"/>
392 </xs:restriction>
393 </xs:simpleType>
394
395
396 <xs:simpleType name="Multiplicity">
397 <xs:restriction base="xs:token">
398 <xs:enumeration value="0..1">
399 <xs:annotation>
400 <xs:documentation xml:lang="en">
401 Optional.
402 </xs:documentation>
403 </xs:annotation>
404 </xs:enumeration>
405 <xs:enumeration value="1">
406 <xs:annotation>
407 <xs:documentation xml:lang="en">
408 Required.
409 </xs:documentation>
410 </xs:annotation>
411 </xs:enumeration>
412 <xs:enumeration value="0..*">
413 <xs:annotation>
414 <xs:documentation xml:lang="en">
415 Zero or more.
416 </xs:documentation>
417 </xs:annotation>
418 </xs:enumeration>
419 <xs:enumeration value="1..*">
420 <xs:annotation>
421 <xs:documentation xml:lang="en">
422 Atleast one.
423 </xs:documentation>
424 </xs:annotation>
425 </xs:enumeration>
426 </xs:restriction>
427 </xs:simpleType>
428
429 <xs:simpleType name="Encoding">
430 <xs:restriction base="xs:token">
431 <xs:pattern value="((native)|(raw)|(xmf)|(json)|(0)|([1-9][0-9]*)|(0x([0-9a-fA-F]{2}))|(0x([0-9a-fA-F]{4}))|([a-zA-Z][a-zA-Z0-9_]*))">
432 <xs:annotation>
433 <xs:documentation xml:lang="en">
434 native=native format (xmf, json, etc.), same as index=0.
435 raw=codec defined outside encoding, same as index=1.
436 xmf=always XMF, same as index=2.
437 json=always json, same as index=3.
438 number=index into encoding table (first 255 are reserved).
439 PName=dynamic, name of element that holds the encoding value.
440 </xs:documentation>
441 </xs:annotation>
442 </xs:pattern>
443 </xs:restriction>
444 </xs:simpleType>
445
446 <xs:complexType name="Interface">
447 <xs:complexContent>
448 <xs:extension base="DeclarationBase">
449 <xs:choice maxOccurs="unbounded" minOccurs="1">
450 <xs:element maxOccurs="unbounded" minOccurs="0" name="operation" type="Operation"/>
451 <xs:element maxOccurs="unbounded" minOccurs="0" name="event" type="Event"/>
452 </xs:choice>
453 <xs:attribute name="name" use="required" type="PName" />
454 </xs:extension>
455 </xs:complexContent>
456 </xs:complexType>
457
458 <xs:complexType name="Operation">
459 <xs:complexContent>
460 <xs:extension base="DeclarationBase">
461 <xs:sequence>
462 <xs:element maxOccurs="1" minOccurs="0" name="input" type="ExtStruct"/>
463 <xs:element maxOccurs="1" minOccurs="0" name="output" type="ExtStyle"/>
464 </xs:sequence>
465 <xs:attribute name="name" use="required" type="PName" />
466 </xs:extension>
467 </xs:complexContent>
468 </xs:complexType>
469
470 <xs:complexType name="Event">
471 <xs:complexContent>
472 <xs:extension base="DeclarationBase">
473 <xs:sequence>
474 <xs:element maxOccurs="1" minOccurs="0" name="data" type="ExtStruct"/>
475 </xs:sequence>
476 <xs:attribute name="name" use="required" type="PName" />
477 </xs:extension>
478 </xs:complexContent>
479 </xs:complexType>
480
481 </xs:schema>
1 # SDK Source
2 An open-source style license for the SDK source code is covered under:
3
4 [LocationStudioSDKLicense.md](https://git.location.studio/location.studio/ilpsdk/blob/master/licenses/LocationStudioSDKLicense.md)
5
6 # Protocols
7 The API protocol (design, content and usage) is covered under:
8
9 [LocationStudioAPILicense.md](https://git.location.studio/location.studio/ilpsdk/blob/master/licenses/LocationStudioAPILicense.md)
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!