1<?xml version="1.0" encoding="UTF-8"?> 2<!-- Copyright (C) 2021 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16<xs:schema version="2.0" 17 elementFormDefault="qualified" 18 attributeFormDefault="unqualified" 19 xmlns:xs="http://www.w3.org/2001/XMLSchema"> 20 <!-- List the dynamic config versions supported by tuner testing. --> 21 <xs:simpleType name="version"> 22 <xs:restriction base="xs:decimal"> 23 <xs:enumeration value="1.0"/> 24 </xs:restriction> 25 </xs:simpleType> 26 27 <!-- FRONTEND SESSION --> 28 <xs:simpleType name="frontendId"> 29 <!-- Frontend id must be either FE_DEFAULT or FE_TYPE_NUM 30 <frontend id="FE_DVBS_0"/> 31 --> 32 <xs:restriction base="xs:string"> 33 <xs:pattern value="FE_DEFAULT|FE_[A-Z]+_[0-9]+"/> 34 </xs:restriction> 35 </xs:simpleType> 36 37 <xs:simpleType name="frontendTypeEnum"> 38 <xs:restriction base="xs:string"> 39 <xs:enumeration value="UNDEFINED" /> 40 <xs:enumeration value="ANALOG" /> 41 <xs:enumeration value="ATSC" /> 42 <xs:enumeration value="ATSC3"/> 43 <xs:enumeration value="DVBC"/> 44 <xs:enumeration value="DVBS"/> 45 <xs:enumeration value="DVBT"/> 46 <xs:enumeration value="ISDBS"/> 47 <xs:enumeration value="ISDBS3"/> 48 <xs:enumeration value="ISDBT"/> 49 <xs:enumeration value="DTMB"/> 50 </xs:restriction> 51 </xs:simpleType> 52 <xs:simpleType name="dvbsScanType"> 53 <xs:restriction base="xs:string"> 54 <xs:enumeration value="UNDEFINED" /> 55 <xs:enumeration value="DIRECT" /> 56 <xs:enumeration value="DISEQC" /> 57 <xs:enumeration value="UNICABLE"/> 58 <xs:enumeration value="JESS"/> 59 </xs:restriction> 60 </xs:simpleType> 61 62 <xs:complexType name="dvbtFrontendSettings"> 63 <xs:attribute name="bandwidth" type="xs:nonNegativeInteger" use="required"/> 64 <xs:attribute name="constellation" type="xs:nonNegativeInteger" use="required"/> 65 <xs:attribute name="guardInterval" type="xs:nonNegativeInteger" use="required"/> 66 <xs:attribute name="hierarchy" type="xs:nonNegativeInteger" use="required"/> 67 <xs:attribute name="hpCoderate" type="xs:nonNegativeInteger" use="required"/> 68 <xs:attribute name="lpCoderate" type="xs:nonNegativeInteger" use="required"/> 69 <xs:attribute name="isHighPriority" type="xs:nonNegativeInteger" use="required"/> 70 <xs:attribute name="isMiso" type="xs:nonNegativeInteger" use="required"/> 71 <xs:attribute name="plpGroupId" type="xs:nonNegativeInteger" use="required"/> 72 <xs:attribute name="plpId" type="xs:nonNegativeInteger" use="required"/> 73 <xs:attribute name="plpMode" type="xs:nonNegativeInteger" use="required"/> 74 <xs:attribute name="standard" type="xs:nonNegativeInteger" use="required"/> 75 <xs:attribute name="transmissionMode" type="xs:nonNegativeInteger" use="required"/> 76 </xs:complexType> 77 <xs:complexType name="dvbsFrontendSettings"> 78 <xs:attribute name="inputStreamId" type="xs:nonNegativeInteger" use="required"/> 79 <xs:attribute name="symbolRate" type="xs:nonNegativeInteger" use="required"/> 80 <xs:attribute name="scanType" type="dvbsScanType" use="required"/> 81 <xs:attribute name="isDiseqcRxMessage" type="xs:boolean" use="required"/> 82 <xs:attribute name="inversion" type="xs:nonNegativeInteger" use="required"/> 83 <xs:attribute name="modulation" type="xs:nonNegativeInteger" use="required"/> 84 <xs:attribute name="pilot" type="xs:nonNegativeInteger" use="required"/> 85 <xs:attribute name="standard" type="xs:nonNegativeInteger" use="required"/> 86 <xs:attribute name="vcmMode" type="xs:nonNegativeInteger" use="required"/> 87 <xs:attribute name="rolloff" type="xs:nonNegativeInteger" use="required"/> 88 </xs:complexType> 89 <xs:complexType name="atscFrontendSettings"> 90 <xs:attribute name="inversion" type="xs:nonNegativeInteger" use="required"/> 91 <xs:attribute name="modulation" type="xs:nonNegativeInteger" use="required"/> 92 </xs:complexType> 93 <xs:complexType name="isdbsFrontendSettings"> 94 <xs:attribute name="streamId" type="xs:nonNegativeInteger" use="required"/> 95 <xs:attribute name="symbolRate" type="xs:nonNegativeInteger" use="required"/> 96 <xs:attribute name="streamIdType" type="xs:nonNegativeInteger" use="required"/> 97 <xs:attribute name="modulation" type="xs:nonNegativeInteger" use="required"/> 98 <xs:attribute name="coderate" type="xs:nonNegativeInteger" use="required"/> 99 <xs:attribute name="rolloff" type="xs:nonNegativeInteger" use="required"/> 100 </xs:complexType> 101 <xs:complexType name="isdbtFrontendSettings"> 102 <xs:attribute name="serviceAreaId" type="xs:nonNegativeInteger" use="required"/> 103 <xs:attribute name="inversion" type="xs:nonNegativeInteger" use="required"/> 104 <xs:attribute name="bandwidth" type="xs:nonNegativeInteger" use="required"/> 105 <xs:attribute name="mode" type="xs:nonNegativeInteger" use="required"/> 106 <xs:attribute name="guardInterval" type="xs:nonNegativeInteger" use="required"/> 107 <xs:attribute name="partialReceptionFlag" type="xs:nonNegativeInteger" use="required"/> 108 <xs:element name="FrontendIsdbtLayerSettings" type="FrontendIsdbtLayerSettings"/> 109 </xs:complexType> 110 <xs:complexType name="FrontendIsdbtLayerSettings"> 111 <xs:attribute name="modulation" type="xs:nonNegativeInteger" use="required"/> 112 <xs:attribute name="coderate" type="xs:nonNegativeInteger" use="required"/> 113 <xs:attribute name="timeInterleave" type="xs:nonNegativeInteger" use="required"/> 114 <xs:attribute name="numOfSegment" type="xs:nonNegativeInteger" use="required"/> 115 </xs:complexType> 116 117 <xs:complexType name="frontend"> 118 <xs:annotation> 119 <xs:documentation> 120 Each frontend element contain the following attributes: 121 "id": unique id of the frontend that could be used to connect to the test the 122 "dataFlowConfiguration" 123 "type": the frontend type. The enums are defined in the xsd. 124 "isSoftwareFrontend": if the test environment is using hardware or software 125 frontend. If using software, a ts input file path needs to be configured. 126 "softwareFeInputPath": used as the source of the software frontend. 127 "connectToCicamId": if the device supports frontend connecting to cicam, the 128 target cicam id needs to be configured here. Supported in Tuner 1.1 or 129 higher. 130 "removeOutputPid": the unnecessary PID will be filtered out from frontend 131 output. Supported in Tuner 2.0 or higher. 132 "frequency": the frequency used to configure tune and scan. 133 "endFrequency": the end frequency of scan. Supported in Tuner 1.1 or higher. 134 135 Each frontend element also contains at most one type-related "frontendSettings". 136 - The settings type should match the frontend "type" attribute. 137 - For example, when frontend type="DVBT", dvbtFrontendSettings can be 138 configured. 139 - This is optional and skipping the settings would pass a setting with frequency 140 config only to the hal. 141 </xs:documentation> 142 </xs:annotation> 143 <xs:choice minOccurs="0" maxOccurs="1"> 144 <!-- TODO: b/182519645 finish all the frontend settings structures. --> 145 <!--xs:element name="analog" type="analogSettings"/--> 146 <xs:element name="atscFrontendSettings" type="atscFrontendSettings"/> 147 <!--xs:element name="atsc3" type="atsc3Settings"/> 148 <xs:element name="dvbc" type="dvbcSettings"/--> 149 <xs:element name="dvbsFrontendSettings" type="dvbsFrontendSettings"/> 150 <xs:element name="dvbtFrontendSettings" type="dvbtFrontendSettings"/> 151 <xs:element name="isdbsFrontendSettings" type="isdbsFrontendSettings"/> 152 <!--xs:element name="isdbs3" type="isdbs3Settings"/--> 153 <xs:element name="isdbtFrontendSettings" type="isdbtFrontendSettings"/> 154 <!--xs:element name="dtmb" type="dtmbSettings"/--> 155 </xs:choice> 156 <xs:attribute name="id" type="frontendId" use="required"/> 157 <xs:attribute name="type" type="frontendTypeEnum" use="required"/> 158 <!-- A dvr connection is required in the data flow config section when 159 "isSoftwareFrontend" is true. --> 160 <xs:attribute name="isSoftwareFrontend" type="xs:boolean" use="required"/> 161 <xs:attribute name="frequency" type="xs:nonNegativeInteger" use="required"/> 162 <xs:attribute name="connectToCicamId" type="xs:nonNegativeInteger" use="optional"/> 163 <xs:attribute name="removeOutputPid" type="xs:nonNegativeInteger" use="optional"/> 164 <xs:attribute name="endFrequency" type="xs:nonNegativeInteger" use="optional"/> 165 <xs:attribute name="supportBlindScan" type="xs:boolean" use="optional"/> 166 </xs:complexType> 167 168 <!-- FILTER SESSION --> 169 <xs:simpleType name="filterId"> 170 <!-- Filter id must be either FILTER_AUDIO_DEFAULT or FILTER_VIDEO_DEFAULT 171 or FILTER_MAINTYPE_SUBTYPE_NUM 172 <filter id="FILTER_TS_AUDIO_0"/> 173 --> 174 <xs:restriction base="xs:string"> 175 <xs:pattern value="FILTER_AUDIO_DEFAULT|FILTER_VIDEO_DEFAULT|FILTER_[A-Z]+_[A-Z]+_[0-9]+"/> 176 </xs:restriction> 177 </xs:simpleType> 178 <!-- A list of filter ids that could be used in the data flow configurations to connect 179 filters under testing. --> 180 <xs:simpleType name="filterConnections"> 181 <xs:list itemType="filterId" /> 182 </xs:simpleType> 183 <!-- DemuxFilterRecordSettings::tsIndexMask --> 184 <xs:simpleType name="tsIndexMask"> 185 <xs:restriction base="xs:integer"> 186 <xs:minInclusive value="0"/> 187 <xs:maxInclusive value="8191"/> 188 </xs:restriction> 189 </xs:simpleType> 190 <!-- DemuxFilterRecordSettings::scIndexType --> 191 <xs:simpleType name="scIndexTypeEnum"> 192 <xs:restriction base="xs:string"> 193 <xs:enumeration value="NONE" /> 194 <xs:enumeration value="SC" /> 195 <xs:enumeration value="SC_HEVC"/> 196 </xs:restriction> 197 </xs:simpleType> 198 <xs:simpleType name="monitoEvents"> 199 <xs:restriction base="xs:integer"> 200 <xs:minInclusive value="0"/> 201 <xs:maxInclusive value="3"/> 202 </xs:restriction> 203 </xs:simpleType> 204 205 <xs:simpleType name="filterMainTypeEnum"> 206 <xs:restriction base="xs:string"> 207 <xs:enumeration value="TS" /> 208 <xs:enumeration value="MMTP" /> 209 <xs:enumeration value="IP"/> 210 <!-- TODO: b/182519645 Support TLV/ALP filter config 211 <xs:enumeration value="TLV"/> 212 <xs:enumeration value="ALP"/--> 213 </xs:restriction> 214 </xs:simpleType> 215 <xs:simpleType name="filterSubTypeEnum"> 216 <xs:restriction base="xs:string"> 217 <xs:enumeration value="UNDEFINED" /> 218 <xs:enumeration value="SECTION" /> 219 <xs:enumeration value="PES" /> 220 <xs:enumeration value="TS"/> 221 <xs:enumeration value="AUDIO"/> 222 <xs:enumeration value="VIDEO"/> 223 <xs:enumeration value="PCR"/> 224 <xs:enumeration value="RECORD"/> 225 <xs:enumeration value="TEMI"/> 226 <xs:enumeration value="MMTP"/> 227 <xs:enumeration value="DOWNLOAD"/> 228 <xs:enumeration value="IP"/> 229 <xs:enumeration value="NTP"/> 230 <xs:enumeration value="IP_PAYLOAD"/> 231 <xs:enumeration value="PAYLOAD_THROUGH"/> 232 </xs:restriction> 233 </xs:simpleType> 234 235 <xs:simpleType name="ip"> 236 <xs:list itemType="xs:unsignedByte"/> 237 </xs:simpleType> 238 <xs:complexType name="ipAddress"> 239 <xs:attribute name="isIpV4" type="xs:boolean" use="required"/> 240 <xs:attribute name="ip" type="ip" use="required"/> 241 </xs:complexType> 242 <xs:complexType name="ipFilterConfig"> 243 <xs:sequence> 244 <xs:element name="srcIpAddress" type="ipAddress" minOccurs="1" maxOccurs="1"/> 245 <xs:element name="destIpAddress" type="ipAddress" minOccurs="1" maxOccurs="1"/> 246 </xs:sequence> 247 <xs:attribute name="srcPort" type="xs:unsignedInt" use="optional"/> 248 <xs:attribute name="destPort" type="xs:unsignedInt" use="optional"/> 249 <!-- True if the ip filter data goes to the next filter directly --> 250 <xs:attribute name="dataPassthrough" type="xs:boolean" use="optional"/> 251 <xs:attribute name="ipCid" type="xs:nonNegativeInteger" use="optional"/> 252 </xs:complexType> 253 254 <xs:complexType name="avFilterSettings"> 255 <xs:choice minOccurs="0" maxOccurs="1"> 256 <xs:element name="audioStreamType" type="xs:unsignedByte"/> 257 <xs:element name="videoStreamType" type="xs:unsignedByte"/> 258 </xs:choice> 259 <xs:attribute name="isPassthrough" type="xs:boolean" use="required"/> 260 <xs:attribute name="isSecureMemory" type="xs:boolean" use="required"/> 261 </xs:complexType> 262 <xs:complexType name="sectionFilterSettings"> 263 <xs:attribute name="isCheckCrc" type="xs:boolean" use="required"/> 264 <xs:attribute name="isRepeat" type="xs:boolean" use="required"/> 265 <xs:attribute name="isRaw" type="xs:boolean" use="required"/> 266 <xs:attribute name="bitWidthOfLengthField" type="xs:nonNegativeInteger" use="required"/> 267 </xs:complexType> 268 <xs:complexType name="recordFilterSettings"> 269 <xs:attribute name="tsIndexMask" type="tsIndexMask" use="required"/> 270 <xs:attribute name="scIndexType" type="scIndexTypeEnum" use="required"/> 271 </xs:complexType> 272 273 <xs:complexType name="filter"> 274 <xs:annotation> 275 <xs:documentation> 276 Each filter element contain the following attributes: 277 "id": unique id of the filter that could be used to connect to the test the 278 "dataFlowConfiguration" 279 "mainType": the main filter type. The enums are defined in the xsd. 280 "subType": the sub filter type. The enums are defined in the xsd. 281 "bufferSize": the buffer size of the filter in hex. 282 "pid": the pid that would be used to configure the filter. 283 "useFMQ": if the filter uses FMQ. 284 "timeDelayInMs": the filter's time delay hint. 0 by default. Must not be 285 longer than 30 seconds. 286 "dataDelayInBytes": the filter's data delay hint. 0 by default. Configured data 287 size must be received within 30 seconds. 288 289 Each filter element also contains at most one type-related "filterSettings". 290 - The settings type should match the filter "subType" attribute. 291 - For example, when filter subType is audio or video, the avFilterSettings 292 can be configured. 293 - This is optional and skipping the settings would pass a setting with tpid 294 config only to the hal. 295 </xs:documentation> 296 </xs:annotation> 297 <xs:sequence> 298 <!-- Main filter type related config --> 299 <xs:choice minOccurs="0" maxOccurs="1"> 300 <xs:element name="ipFilterConfig" type="ipFilterConfig"/> 301 </xs:choice> 302 <!-- Sub filter type related config --> 303 <xs:choice minOccurs="0" maxOccurs="1"> 304 <!-- TODO: b/182519645 finish all the filter settings structures. --> 305 <xs:element name="sectionFilterSettings" type="sectionFilterSettings"/> 306 <xs:element name="avFilterSettings" type="avFilterSettings"/> 307 <xs:element name="recordFilterSettings" type="recordFilterSettings"/> 308 <!--xs:element name="pes" type="pesFilterSettings"/> 309 <xs:element name="download" type="downloadFilterSettings"/--> 310 </xs:choice> 311 </xs:sequence> 312 <xs:attribute name="id" type="filterId" use="required"/> 313 <xs:attribute name="mainType" type="filterMainTypeEnum" use="required"/> 314 <xs:attribute name="subType" type="filterSubTypeEnum" use="required"/> 315 <xs:attribute name="bufferSize" type="xs:nonNegativeInteger" use="required"/> 316 <xs:attribute name="pid" type="xs:nonNegativeInteger" use="optional"/> 317 <xs:attribute name="useFMQ" type="xs:boolean" use="required"/> 318 <xs:attribute name="monitorEventTypes" type="monitoEvents" use="optional"/> 319 <xs:attribute name="timeDelayInMs" type="xs:nonNegativeInteger" use="optional"/> 320 <xs:attribute name="dataDelayInBytes" type="xs:nonNegativeInteger" use="optional"/> 321 </xs:complexType> 322 323 <!-- DVR SESSION --> 324 <xs:simpleType name="dvrId"> 325 <!-- Dvr id must be DVR_TYPE_NUM. <dvr id="DVR_PLAYBACK_0"/> --> 326 <xs:restriction base="xs:string"> 327 <xs:pattern value="DVR_RECORD_[0-9]+|DVR_PLAYBACK_[0-9]+"/> 328 </xs:restriction> 329 </xs:simpleType> 330 <xs:simpleType name="dvrStatusMask"> 331 <!-- Dvr status mask must masking the <dvrStatusEnum> --> 332 <xs:restriction base="xs:integer"> 333 <xs:minInclusive value="0"/> 334 <xs:maxInclusive value="15"/> 335 </xs:restriction> 336 </xs:simpleType> 337 338 <xs:simpleType name="dvrStatusEnum"> 339 <xs:restriction base="xs:string"> 340 <xs:enumeration value="DATA_READY" /> 341 <xs:enumeration value="LOW_WATER" /> 342 <xs:enumeration value="HIGH_WATER" /> 343 <xs:enumeration value="OVERFLOW" /> 344 </xs:restriction> 345 </xs:simpleType> 346 <xs:simpleType name="dvrTypeEnum"> 347 <xs:restriction base="xs:string"> 348 <xs:enumeration value="PLAYBACK" /> 349 <xs:enumeration value="RECORD" /> 350 </xs:restriction> 351 </xs:simpleType> 352 <xs:simpleType name="dvrDataFormatEnum"> 353 <xs:restriction base="xs:string"> 354 <xs:enumeration value="TS" /> 355 <xs:enumeration value="PES" /> 356 <xs:enumeration value="ES" /> 357 <xs:enumeration value="SHV_TLV" /> 358 </xs:restriction> 359 </xs:simpleType> 360 361 <xs:complexType name="dvr"> 362 <xs:annotation> 363 <xs:documentation> 364 Each dvr element contain the following attributes: 365 "id": unique id of the dvr that could be used to connect to the test the 366 "dataFlowConfiguration" 367 "type": the dvr type. 368 "bufferSize": the dvr buffer size. 369 "statusMask": register callbacks of specific status. 370 "lowThreshold": the dvr status low threshold. 371 "highThreshold": the dvr status high threshold. 372 "dataFormat": the dvr data format. 373 "packetSize": the dvr packet size. 374 "inputFilePath": the dvr playback input file path. Only required in playback 375 dvr. 376 </xs:documentation> 377 </xs:annotation> 378 <xs:attribute name="id" type="dvrId" use="required"/> 379 <xs:attribute name="type" type="dvrTypeEnum" use="required"/> 380 <xs:attribute name="bufferSize" type="xs:nonNegativeInteger" use="required"/> 381 <xs:attribute name="statusMask" type="dvrStatusMask" use="required"/> 382 <xs:attribute name="lowThreshold" type="xs:nonNegativeInteger" use="required"/> 383 <xs:attribute name="highThreshold" type="xs:nonNegativeInteger" use="required"/> 384 <xs:attribute name="dataFormat" type="dvrDataFormatEnum" use="required"/> 385 <xs:attribute name="packetSize" type="xs:nonNegativeInteger" use="required"/> 386 <xs:attribute name="inputFilePath" type="xs:anyURI" use="optional"/> 387 </xs:complexType> 388 389 <!-- LNB SESSION --> 390 <xs:simpleType name="lnbId"> 391 <!-- Lnb id must be LNB_NUM: <lnb id="LNB_10"/> --> 392 <xs:restriction base="xs:string"> 393 <xs:pattern value="LNB_[0-9]+"/> 394 </xs:restriction> 395 </xs:simpleType> 396 397 <xs:simpleType name="lnbVoltageEnum"> 398 <xs:restriction base="xs:string"> 399 <xs:enumeration value="NONE" /> 400 <xs:enumeration value="VOLTAGE_5V" /> 401 <xs:enumeration value="VOLTAGE_11V" /> 402 <xs:enumeration value="VOLTAGE_12V"/> 403 <xs:enumeration value="VOLTAGE_13V"/> 404 <xs:enumeration value="VOLTAGE_14V"/> 405 <xs:enumeration value="VOLTAGE_15V"/> 406 <xs:enumeration value="VOLTAGE_18V"/> 407 <xs:enumeration value="VOLTAGE_19V"/> 408 </xs:restriction> 409 </xs:simpleType> 410 <xs:simpleType name="lnbToneEnum"> 411 <xs:restriction base="xs:string"> 412 <xs:enumeration value="NONE" /> 413 <xs:enumeration value="CONTINUOUS" /> 414 </xs:restriction> 415 </xs:simpleType> 416 <xs:simpleType name="lnbPositionEnum"> 417 <xs:restriction base="xs:string"> 418 <xs:enumeration value="UNDEFINED" /> 419 <xs:enumeration value="POSITION_A" /> 420 <xs:enumeration value="POSITION_B" /> 421 </xs:restriction> 422 </xs:simpleType> 423 424 <!-- Diseqc Messages that would be used to send to the lnb under test. --> 425 <xs:simpleType name="diseqcMsgName"> 426 <xs:restriction base="xs:string"> 427 <xs:pattern value="[A-Z_]+"/> 428 </xs:restriction> 429 </xs:simpleType> 430 <xs:simpleType name="diseqcMsgBody"> 431 <xs:list itemType="xs:unsignedByte"/> 432 </xs:simpleType> 433 <xs:complexType name="diseqcMessage"> 434 <xs:attribute name="msgName" type="diseqcMsgName"/> 435 <xs:attribute name="msgBody" type="diseqcMsgBody"/> 436 </xs:complexType> 437 <xs:simpleType name="diseqcMsgSender"> 438 <xs:list itemType="diseqcMsgName"/> 439 </xs:simpleType> 440 441 <xs:complexType name="lnb"> 442 <xs:annotation> 443 <xs:documentation> 444 Each lnb element contain the following attributes: 445 "id": unique id of the lnb that could be used to connect to the test the 446 "dataFlowConfiguration" 447 "name": the external lnb device name. 448 "voltage": the voltage used to config the lnb. 449 "tone": the voltage used to config the lnb. 450 "position": the voltage used to config the lnb. 451 </xs:documentation> 452 </xs:annotation> 453 <xs:attribute name="id" type="lnbId" use="required"/> 454 <!-- Only required on external lnb with no device id. --> 455 <xs:attribute name="name" type="xs:string" use="optional"/> 456 <xs:attribute name="voltage" type="lnbVoltageEnum" use="required"/> 457 <xs:attribute name="tone" type="lnbToneEnum" use="required"/> 458 <xs:attribute name="position" type="lnbPositionEnum" use="required"/> 459 </xs:complexType> 460 461 <!-- TIME FILTER SESSION --> 462 <xs:simpleType name="timeFilterId"> 463 <!-- Time Filter id must be TIME_FILTER_NUM: <timeFilter id="TIME_FILTER_1"/> --> 464 <xs:restriction base="xs:string"> 465 <xs:pattern value="TIME_FILTER_[0-9]+"/> 466 </xs:restriction> 467 </xs:simpleType> 468 469 <xs:complexType name="timeFilter"> 470 <xs:annotation> 471 <xs:documentation> 472 Each timeFilter element contain the following attributes: 473 "id": unique id of the time filter that could be used to connect to the test the 474 "dataFlowConfiguration" 475 "timeStamp": the time stamp used to config the time filter. 476 </xs:documentation> 477 </xs:annotation> 478 <xs:attribute name="id" type="timeFilterId" use="required"/> 479 <xs:attribute name="timeStamp" type="xs:nonNegativeInteger" use="required"/> 480 </xs:complexType> 481 482 <!-- DESCRAMBLER SESSION --> 483 <xs:simpleType name="descramblerId"> 484 <!-- Descrambler id must be DESCRAMBLER_NUM: <descrambler id="DESCRAMBLER_2"/> --> 485 <xs:restriction base="xs:string"> 486 <xs:pattern value="DESCRAMBLER_[0-9]+"/> 487 </xs:restriction> 488 </xs:simpleType> 489 <xs:simpleType name="sessionPrivateData"> 490 <xs:list itemType="xs:unsignedByte"/> 491 </xs:simpleType> 492 493 <xs:complexType name="descrambler"> 494 <xs:annotation> 495 <xs:documentation> 496 Each descrambler element contain the following attributes: 497 "id": unique id of the descrambler that could be used to connect to the test the 498 "dataFlowConfiguration" 499 "casSystemId": the cas system id to connect to the descrambler. 500 "provisionStr": the provision string to use with the cas plugin. 501 "sesstionPrivatData": the session private data used to open the cas session. 502 </xs:documentation> 503 </xs:annotation> 504 <xs:attribute name="id" type="descramblerId" use="required"/> 505 <xs:attribute name="casSystemId" type="xs:nonNegativeInteger" use="required"/> 506 <xs:attribute name="provisionStr" type="xs:string" use="optional"/> 507 <xs:attribute name="sesstionPrivatData" type="sessionPrivateData" use="optional"/> 508 </xs:complexType> 509 510 <!-- HARDWARE CONFIGURATION SESSION --> 511 <xs:complexType name="hardwareConfiguration"> 512 <xs:sequence> 513 <xs:element name="frontends" minOccurs="0" maxOccurs="1"> 514 <xs:complexType> 515 <xs:annotation> 516 <xs:documentation xml:lang="en"> 517 This section contains configurations of all the frontends that would be 518 used in the tests. 519 - This section is optional and can be skipped to use the default 520 fe settings. 521 - The default settings can be found in the 522 sample_tuner_vts_configurations.xml. 523 - The users can also override the default frontend settings using 524 id="FE_DEFAULT". 525 - The users can configure 1 or more frontend elements in the 526 frontends sections. 527 </xs:documentation> 528 </xs:annotation> 529 <xs:sequence> 530 <xs:element name="frontend" type="frontend" minOccurs="1" maxOccurs="unbounded"/> 531 </xs:sequence> 532 </xs:complexType> 533 </xs:element> 534 <xs:element name="filters" minOccurs="0" maxOccurs="1"> 535 <xs:complexType> 536 <xs:annotation> 537 <xs:documentation xml:lang="en"> 538 This section contains configurations of all the filters that would be 539 used in the tests. 540 - This section is optional and can be skipped to use the default 541 filter settings. 542 - The default settings can be found in the 543 sample_tuner_vts_configurations.xml. 544 - The users can also override the default filter settings using 545 - id="FILTER_AUDIO_DEFAULT" or "FILTER_VIDEO_DEFAULT". 546 - The users can configure 1 or more filter elements in the filters 547 sections. 548 </xs:documentation> 549 </xs:annotation> 550 <xs:sequence> 551 <xs:element name="filter" type="filter" minOccurs="1" maxOccurs="unbounded"/> 552 </xs:sequence> 553 </xs:complexType> 554 </xs:element> 555 <xs:element name="dvrs" minOccurs="0" maxOccurs="1"> 556 <xs:complexType> 557 <xs:annotation> 558 <xs:documentation xml:lang="en"> 559 This section contains configurations of all the dvrs that would be used 560 in the tests. 561 - This section is optional and can be skipped if the device does 562 not support dvr. 563 - The users can configure 1 or more dvr elements in the dvrs 564 sections. 565 </xs:documentation> 566 </xs:annotation> 567 <xs:sequence> 568 <xs:element name="dvr" type="dvr" minOccurs="1" maxOccurs="unbounded"/> 569 </xs:sequence> 570 </xs:complexType> 571 </xs:element> 572 <xs:element name="diseqcMessages" minOccurs="0" maxOccurs="1"> 573 <xs:complexType> 574 <xs:annotation> 575 <xs:documentation xml:lang="en"> 576 This section contains configurations of all the diseqc messages that 577 would be used in the lnb tests. 578 - This section is optional and can be skipped if lnb is not suppoted 579 - The users can configure 1 or more message elements in the 580 diseqcMessages sections. 581 </xs:documentation> 582 </xs:annotation> 583 <xs:sequence> 584 <xs:element name="diseqcMessage" type="diseqcMessage" minOccurs="1" maxOccurs="unbounded"/> 585 </xs:sequence> 586 </xs:complexType> 587 </xs:element> 588 <xs:element name="lnbs" minOccurs="0" maxOccurs="1"> 589 <xs:complexType> 590 <xs:annotation> 591 <xs:documentation xml:lang="en"> 592 This section contains configurations of all the lnbs that would be used 593 in the tests. 594 - This section is optional and can be skipped if lnb is not suppoted 595 - The users can configure 1 or more lnb elements in the lnbs 596 sections. 597 </xs:documentation> 598 </xs:annotation> 599 <xs:sequence> 600 <xs:element name="lnb" type="lnb" minOccurs="1" maxOccurs="unbounded"/> 601 </xs:sequence> 602 </xs:complexType> 603 </xs:element> 604 <xs:element name="timeFilters" minOccurs="0" maxOccurs="1"> 605 <xs:complexType> 606 <xs:annotation> 607 <xs:documentation xml:lang="en"> 608 This section contains configurations of all the time filters that would 609 be used in the tests. 610 - This section is optional and can be skipped if time filter is 611 not supported. 612 - The users can configure 1 or more time filter elements in the 613 time filters sections. 614 </xs:documentation> 615 </xs:annotation> 616 <xs:sequence> 617 <xs:element name="timeFilter" type="timeFilter" minOccurs="1" maxOccurs="unbounded"/> 618 </xs:sequence> 619 </xs:complexType> 620 </xs:element> 621 <xs:element name="descramblers" minOccurs="0" maxOccurs="1"> 622 <xs:complexType> 623 <xs:annotation> 624 <xs:documentation xml:lang="en"> 625 This section contains configurations of all the descramblers that would 626 be used in the tests. 627 - This section is optional and can be skipped if descrambling is not 628 supported. 629 - The users can configure 1 or more descrambler elements in the 630 descramblers sections. 631 </xs:documentation> 632 </xs:annotation> 633 <xs:sequence> 634 <xs:element name="descrambler" type="descrambler" minOccurs="1" maxOccurs="unbounded"/> 635 </xs:sequence> 636 </xs:complexType> 637 </xs:element> 638 </xs:sequence> 639 </xs:complexType> 640 641 <!-- DATA FLOW CONFIGURATION SESSION --> 642 <xs:complexType name="dataFlowConfiguration"> 643 <xs:sequence> 644 <!-- clearLiveBroadcast is only optional when there is no physical frontend. In this 645 case, the dvrPlayback config is required. --> 646 <xs:element name="clearLiveBroadcast" minOccurs="0" maxOccurs="1"> 647 <xs:complexType> 648 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 649 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 650 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 651 <xs:attribute name="pcrFilterConnection" type="filterId" use="optional"/> 652 <xs:attribute name="sectionFilterConnection" type="filterId" use="optional"/> 653 <xs:attribute name="ipFilterConnection" type="filterId" use="optional"/> 654 <xs:element name="optionalFilters" type="filterConnections" minOccurs="0" maxOccurs="1"/> 655 <!-- DVR is only required when the frontend is using the software input --> 656 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 657 </xs:complexType> 658 </xs:element> 659 <!-- scan is only optional when there is no physical frontend. In this case, the 660 dvrPlayback config is required. --> 661 <xs:element name="scan" minOccurs="0" maxOccurs="1"> 662 <xs:complexType> 663 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 664 </xs:complexType> 665 </xs:element> 666 <xs:element name="descrambling" minOccurs="0" maxOccurs="1"> 667 <xs:complexType> 668 <!-- If there is a software or hardware frontend connection or not. If false, 669 dvrSourceConnection config is required when testing dvrRecord. --> 670 <xs:attribute name="hasFrontendConnection" type="xs:boolean" use="required"/> 671 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 672 <xs:attribute name="descramblerConnection" type="descramblerId" use="required"/> 673 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 674 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 675 <xs:element name="optionalFilters" type="filterConnections" minOccurs="0" maxOccurs="1"/> 676 <!-- This DVR is only required when the frontend is using the software input --> 677 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 678 <!-- This Dvr is only required when there's no frontend(sw or hw) connection --> 679 <xs:attribute name="dvrSourceConnection" type="dvrId" use="optional"/> 680 </xs:complexType> 681 </xs:element> 682 <xs:element name="dvrPlayback" minOccurs="0" maxOccurs="1"> 683 <xs:complexType> 684 <xs:attribute name="dvrConnection" type="dvrId" use="required"/> 685 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 686 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 687 <xs:attribute name="sectionFilterConnection" type="filterId" use="optional"/> 688 <xs:element name="optionalFilters" type="filterConnections" minOccurs="0" maxOccurs="1"/> 689 </xs:complexType> 690 </xs:element> 691 <xs:element name="dvrRecord" minOccurs="0" maxOccurs="1"> 692 <xs:complexType> 693 <!-- If there is a software or hardware frontend connection or not. If false, 694 dvrSourceConnection config is required when testing dvrRecord. --> 695 <xs:attribute name="hasFrontendConnection" type="xs:boolean" use="required"/> 696 <xs:attribute name="frontendConnection" type="frontendId" use="optional"/> 697 <xs:attribute name="dvrRecordConnection" type="dvrId" use="required"/> 698 <!-- This Dvr is only required when the frontend is using the software input --> 699 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 700 <!-- This Dvr is only required when there's no frontend(sw or hw) connection --> 701 <xs:attribute name="dvrSourceConnection" type="dvrId" use="optional"/> 702 <xs:attribute name="recordFilterConnection" type="filterId" use="required"/> 703 </xs:complexType> 704 </xs:element> 705 <xs:element name="lnbLive" minOccurs="0" maxOccurs="1"> 706 <xs:complexType> 707 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 708 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 709 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 710 <xs:attribute name="lnbConnection" type="lnbId" use="required"/> 711 <xs:attribute name="diseqcMsgSender" type="diseqcMsgSender" use="optional"/> 712 <xs:element name="optionalFilters" type="filterConnections" minOccurs="0" maxOccurs="1"/> 713 </xs:complexType> 714 </xs:element> 715 <xs:element name="lnbRecord" minOccurs="0" maxOccurs="1"> 716 <xs:complexType> 717 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 718 <xs:attribute name="recordFilterConnection" type="filterId" use="required"/> 719 <xs:attribute name="dvrRecordConnection" type="dvrId" use="required"/> 720 <xs:attribute name="lnbConnection" type="lnbId" use="required"/> 721 <xs:attribute name="diseqcMsgSender" type="diseqcMsgSender" use="optional"/> 722 <xs:element name="optionalFilters" type="filterConnections" minOccurs="0" maxOccurs="1"/> 723 </xs:complexType> 724 </xs:element> 725 <xs:element name="timeFilter" minOccurs="0" maxOccurs="1"> 726 <xs:complexType> 727 <xs:attribute name="timeFilterConnection" type="timeFilterId" use="required"/> 728 </xs:complexType> 729 </xs:element> 730 <xs:element name="lnbDescrambling" minOccurs="0" maxOccurs="1"> 731 <xs:complexType> 732 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 733 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 734 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 735 <xs:attribute name="lnbConnection" type="lnbId" use="required"/> 736 <xs:attribute name="descramblerConnection" type="descramblerId" use="required"/> 737 <xs:attribute name="diseqcMsgSender" type="diseqcMsgSender" use="optional"/> 738 </xs:complexType> 739 </xs:element> 740 </xs:sequence> 741 </xs:complexType> 742 743 <!-- Full Tuner Configuration. This is the root element of the configuration xml. --> 744 <xs:element name="TunerConfiguration"> 745 <xs:complexType> 746 <xs:sequence> 747 <xs:element name="hardwareConfiguration" type="hardwareConfiguration" minOccurs="1" maxOccurs="1"/> 748 <xs:element name="dataFlowConfiguration" type="dataFlowConfiguration" minOccurs="1" maxOccurs="1"/> 749 </xs:sequence> 750 <xs:attribute name="version" type="version"/> 751 </xs:complexType> 752 <xs:key name="frontendIdUniqueness"> 753 <xs:selector xpath="hardwareConfiguration/frontends/frontend"/> 754 <xs:field xpath="@id"/> 755 </xs:key> 756 <xs:key name="filterIdUniqueness"> 757 <xs:selector xpath="hardwareConfiguration/filters/filter"/> 758 <xs:field xpath="@id"/> 759 </xs:key> 760 <xs:key name="dvrIdUniqueness"> 761 <xs:selector xpath="hardwareConfiguration/dvrs/dvr"/> 762 <xs:field xpath="@id"/> 763 </xs:key> 764 <xs:key name="lnbIdUniqueness"> 765 <xs:selector xpath="hardwareConfiguration/lnbs/lnb"/> 766 <xs:field xpath="@id"/> 767 </xs:key> 768 <xs:key name="timeFilterIdUniqueness"> 769 <xs:selector xpath="hardwareConfiguration/timeFilters/timeFilter"/> 770 <xs:field xpath="@id"/> 771 </xs:key> 772 <xs:key name="descramblerIdUniqueness"> 773 <xs:selector xpath="hardwareConfiguration/descramblers/descrambler"/> 774 <xs:field xpath="@id"/> 775 </xs:key> 776 </xs:element> 777 <xs:complexType name="optionalFilter"> 778 <xs:attribute name="filterId" type="filterId" use="required"/> 779 </xs:complexType> 780</xs:schema> 781