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="optional"/> 81 <xs:attribute name="isDiseqcRxMessage" type="xs:boolean" use="optional"/> 82 </xs:complexType> 83 84 <xs:complexType name="frontend"> 85 <xs:annotation> 86 <xs:documentation> 87 Each frontend element contain the following attributes: 88 "id": unique id of the frontend that could be used to connect to the test the 89 "dataFlowConfiguration" 90 "type": the frontend type. The enums are defined in the xsd. 91 "isSoftwareFrontend": if the test environment is using hardware or software 92 frontend. If using software, a ts input file path needs to be configured. 93 "softwareFeInputPath": used as the source of the software frontend. 94 "connectToCicamId": if the device supports frontend connecting to cicam, the 95 target cicam id needs to be configured here. Supported in Tuner 1.1 or 96 higher. 97 "frequency": the frequency used to configure tune and scan. 98 "endFrequency": the end frequency of scan. Supported in Tuner 1.1 or higher. 99 100 Each frontend element also contains at most one type-related "frontendSettings". 101 - The settings type should match the frontend "type" attribute. 102 - For example, when frontend type="DVBT", dvbtFrontendSettings can be 103 configured. 104 - This is optional and skipping the settings would pass a setting with frequency 105 config only to the hal. 106 </xs:documentation> 107 </xs:annotation> 108 <xs:choice minOccurs="0" maxOccurs="1"> 109 <!-- TODO: b/182519645 finish all the frontend settings structures. --> 110 <!--xs:element name="analog" type="analogSettings"/> 111 <xs:element name="atsc" type="atscSettings"/> 112 <xs:element name="atsc3" type="atsc3Settings"/> 113 <xs:element name="dvbc" type="dvbcSettings"/--> 114 <xs:element name="dvbsFrontendSettings" type="dvbsFrontendSettings"/> 115 <xs:element name="dvbtFrontendSettings" type="dvbtFrontendSettings"/> 116 <!--xs:element name="isdbs" type="isdbsSettings"/> 117 <xs:element name="isdbs3" type="isdbs3Settings"/> 118 <xs:element name="isdbt" type="isdbtSettings"/> 119 <xs:element name="dtmb" type="dtmbSettings"/--> 120 </xs:choice> 121 <xs:attribute name="id" type="frontendId" use="required"/> 122 <xs:attribute name="type" type="frontendTypeEnum" use="required"/> 123 <!-- A dvr connection is required in the data flow config section when 124 "isSoftwareFrontend" is true. --> 125 <xs:attribute name="isSoftwareFrontend" type="xs:boolean" use="required"/> 126 <xs:attribute name="frequency" type="xs:nonNegativeInteger" use="required"/> 127 <xs:attribute name="connectToCicamId" type="xs:nonNegativeInteger" use="optional"/> 128 <xs:attribute name="endFrequency" type="xs:nonNegativeInteger" use="optional"/> 129 </xs:complexType> 130 131 <!-- FILTER SESSION --> 132 <xs:simpleType name="filterId"> 133 <!-- Filter id must be either FILTER_AUDIO_DEFAULT or FILTER_VIDEO_DEFAULT 134 or FILTER_MAINTYPE_SUBTYPE_NUM 135 <filter id="FILTER_TS_AUDIO_0"/> 136 --> 137 <xs:restriction base="xs:string"> 138 <xs:pattern value="FILTER_AUDIO_DEFAULT|FILTER_VIDEO_DEFAULT|FILTER_[A-Z]+_[A-Z]+_[0-9]+"/> 139 </xs:restriction> 140 </xs:simpleType> 141 <!-- A list of filter ids that could be used in the data flow configurations to connect 142 filters under testing. --> 143 <xs:simpleType name="filterConnections"> 144 <xs:list itemType="filterId" /> 145 </xs:simpleType> 146 <!-- DemuxFilterRecordSettings::tsIndexMask --> 147 <xs:simpleType name="tsIndexMask"> 148 <xs:restriction base="xs:integer"> 149 <xs:minInclusive value="0"/> 150 <xs:maxInclusive value="8191"/> 151 </xs:restriction> 152 </xs:simpleType> 153 <!-- DemuxFilterRecordSettings::scIndexType --> 154 <xs:simpleType name="scIndexTypeEnum"> 155 <xs:restriction base="xs:string"> 156 <xs:enumeration value="NONE" /> 157 <xs:enumeration value="SC" /> 158 <xs:enumeration value="SC_HEVC"/> 159 </xs:restriction> 160 </xs:simpleType> 161 <xs:simpleType name="monitoEvents"> 162 <xs:restriction base="xs:integer"> 163 <xs:minInclusive value="0"/> 164 <xs:maxInclusive value="3"/> 165 </xs:restriction> 166 </xs:simpleType> 167 168 <xs:simpleType name="filterMainTypeEnum"> 169 <xs:restriction base="xs:string"> 170 <xs:enumeration value="TS" /> 171 <xs:enumeration value="MMTP" /> 172 <xs:enumeration value="IP"/> 173 <!-- TODO: b/182519645 Support TLV/ALP filter config 174 <xs:enumeration value="TLV"/> 175 <xs:enumeration value="ALP"/--> 176 </xs:restriction> 177 </xs:simpleType> 178 <xs:simpleType name="filterSubTypeEnum"> 179 <xs:restriction base="xs:string"> 180 <xs:enumeration value="UNDEFINED" /> 181 <xs:enumeration value="SECTION" /> 182 <xs:enumeration value="PES" /> 183 <xs:enumeration value="TS"/> 184 <xs:enumeration value="AUDIO"/> 185 <xs:enumeration value="VIDEO"/> 186 <xs:enumeration value="PCR"/> 187 <xs:enumeration value="RECORD"/> 188 <xs:enumeration value="TEMI"/> 189 <xs:enumeration value="MMTP"/> 190 <xs:enumeration value="DOWNLOAD"/> 191 <xs:enumeration value="IP"/> 192 <xs:enumeration value="NTP"/> 193 <xs:enumeration value="IP_PAYLOAD"/> 194 <xs:enumeration value="PAYLOAD_THROUGH"/> 195 </xs:restriction> 196 </xs:simpleType> 197 198 <xs:simpleType name="ip"> 199 <xs:list itemType="xs:unsignedByte"/> 200 </xs:simpleType> 201 <xs:complexType name="ipAddress"> 202 <xs:attribute name="isIpV4" type="xs:boolean" use="required"/> 203 <xs:attribute name="ip" type="ip" use="required"/> 204 </xs:complexType> 205 <xs:complexType name="ipFilterConfig"> 206 <xs:sequence> 207 <xs:element name="srcIpAddress" type="ipAddress" minOccurs="1" maxOccurs="1"/> 208 <xs:element name="destIpAddress" type="ipAddress" minOccurs="1" maxOccurs="1"/> 209 </xs:sequence> 210 <xs:attribute name="srcPort" type="xs:unsignedInt" use="optional"/> 211 <xs:attribute name="destPort" type="xs:unsignedInt" use="optional"/> 212 <!-- True if the ip filter data goes to the next filter directly --> 213 <xs:attribute name="dataPassthrough" type="xs:boolean" use="optional"/> 214 <xs:attribute name="ipCid" type="xs:nonNegativeInteger" use="optional"/> 215 </xs:complexType> 216 217 <xs:complexType name="avFilterSettings"> 218 <xs:choice minOccurs="0" maxOccurs="1"> 219 <xs:element name="audioStreamType" type="xs:unsignedByte"/> 220 <xs:element name="videoStreamType" type="xs:unsignedByte"/> 221 </xs:choice> 222 <xs:attribute name="isPassthrough" type="xs:boolean" use="required"/> 223 </xs:complexType> 224 <xs:complexType name="sectionFilterSettings"> 225 <xs:attribute name="isCheckCrc" type="xs:boolean" use="required"/> 226 <xs:attribute name="isRepeat" type="xs:boolean" use="required"/> 227 <xs:attribute name="isRaw" type="xs:boolean" use="required"/> 228 </xs:complexType> 229 <xs:complexType name="recordFilterSettings"> 230 <xs:attribute name="tsIndexMask" type="tsIndexMask" use="required"/> 231 <xs:attribute name="scIndexType" type="scIndexTypeEnum" use="required"/> 232 </xs:complexType> 233 234 <xs:complexType name="filter"> 235 <xs:annotation> 236 <xs:documentation> 237 Each filter element contain the following attributes: 238 "id": unique id of the filter that could be used to connect to the test the 239 "dataFlowConfiguration" 240 "mainType": the main filter type. The enums are defined in the xsd. 241 "subType": the sub filter type. The enums are defined in the xsd. 242 "bufferSize": the buffer size of the filter in hex. 243 "pid": the pid that would be used to configure the filter. 244 "useFMQ": if the filter uses FMQ. 245 246 Each filter element also contains at most one type-related "filterSettings". 247 - The settings type should match the filter "subType" attribute. 248 - For example, when filter subType is audio or video, the avFilterSettings 249 can be configured. 250 - This is optional and skipping the settings would pass a setting with tpid 251 config only to the hal. 252 </xs:documentation> 253 </xs:annotation> 254 <xs:sequence> 255 <!-- Main filter type related config --> 256 <xs:choice minOccurs="0" maxOccurs="1"> 257 <xs:element name="ipFilterConfig" type="ipFilterConfig"/> 258 </xs:choice> 259 <!-- Sub filter type related config --> 260 <xs:choice minOccurs="0" maxOccurs="1"> 261 <!-- TODO: b/182519645 finish all the filter settings structures. --> 262 <xs:element name="sectionFilterSettings" type="sectionFilterSettings"/> 263 <xs:element name="avFilterSettings" type="avFilterSettings"/> 264 <xs:element name="recordFilterSettings" type="recordFilterSettings"/> 265 <!--xs:element name="pes" type="pesFilterSettings"/> 266 <xs:element name="download" type="downloadFilterSettings"/--> 267 </xs:choice> 268 </xs:sequence> 269 <xs:attribute name="id" type="filterId" use="required"/> 270 <xs:attribute name="mainType" type="filterMainTypeEnum" use="required"/> 271 <xs:attribute name="subType" type="filterSubTypeEnum" use="required"/> 272 <xs:attribute name="bufferSize" type="xs:nonNegativeInteger" use="required"/> 273 <xs:attribute name="pid" type="xs:nonNegativeInteger" use="optional"/> 274 <xs:attribute name="useFMQ" type="xs:boolean" use="required"/> 275 <xs:attribute name="monitorEventTypes" type="monitoEvents" use="optional"/> 276 </xs:complexType> 277 278 <!-- DVR SESSION --> 279 <xs:simpleType name="dvrId"> 280 <!-- Dvr id must be DVR_TYPE_NUM. <dvr id="DVR_PLAYBACK_0"/> --> 281 <xs:restriction base="xs:string"> 282 <xs:pattern value="DVR_RECORD_[0-9]+|DVR_PLAYBACK_[0-9]+"/> 283 </xs:restriction> 284 </xs:simpleType> 285 <xs:simpleType name="dvrStatusMask"> 286 <!-- Dvr status mask must masking the <dvrStatusEnum> --> 287 <xs:restriction base="xs:integer"> 288 <xs:minInclusive value="0"/> 289 <xs:maxInclusive value="15"/> 290 </xs:restriction> 291 </xs:simpleType> 292 293 <xs:simpleType name="dvrStatusEnum"> 294 <xs:restriction base="xs:string"> 295 <xs:enumeration value="DATA_READY" /> 296 <xs:enumeration value="LOW_WATER" /> 297 <xs:enumeration value="HIGH_WATER" /> 298 <xs:enumeration value="OVERFLOW" /> 299 </xs:restriction> 300 </xs:simpleType> 301 <xs:simpleType name="dvrTypeEnum"> 302 <xs:restriction base="xs:string"> 303 <xs:enumeration value="PLAYBACK" /> 304 <xs:enumeration value="RECORD" /> 305 </xs:restriction> 306 </xs:simpleType> 307 <xs:simpleType name="dvrDataFormatEnum"> 308 <xs:restriction base="xs:string"> 309 <xs:enumeration value="TS" /> 310 <xs:enumeration value="PES" /> 311 <xs:enumeration value="ES" /> 312 <xs:enumeration value="SHV_TLV" /> 313 </xs:restriction> 314 </xs:simpleType> 315 316 <xs:complexType name="dvr"> 317 <xs:annotation> 318 <xs:documentation> 319 Each dvr element contain the following attributes: 320 "id": unique id of the dvr that could be used to connect to the test the 321 "dataFlowConfiguration" 322 "type": the dvr type. 323 "bufferSize": the dvr buffer size. 324 "statusMask": register callbacks of specific status. 325 "lowThreshold": the dvr status low threshold. 326 "highThreshold": the dvr status high threshold. 327 "dataFormat": the dvr data format. 328 "packetSize": the dvr packet size. 329 "inputFilePath": the dvr playback input file path. Only required in playback 330 dvr. 331 </xs:documentation> 332 </xs:annotation> 333 <xs:attribute name="id" type="dvrId" use="required"/> 334 <xs:attribute name="type" type="dvrTypeEnum" use="required"/> 335 <xs:attribute name="bufferSize" type="xs:nonNegativeInteger" use="required"/> 336 <xs:attribute name="statusMask" type="dvrStatusMask" use="required"/> 337 <xs:attribute name="lowThreshold" type="xs:nonNegativeInteger" use="required"/> 338 <xs:attribute name="highThreshold" type="xs:nonNegativeInteger" use="required"/> 339 <xs:attribute name="dataFormat" type="dvrDataFormatEnum" use="required"/> 340 <xs:attribute name="packetSize" type="xs:nonNegativeInteger" use="required"/> 341 <xs:attribute name="inputFilePath" type="xs:anyURI" use="optional"/> 342 </xs:complexType> 343 344 <!-- LNB SESSION --> 345 <xs:simpleType name="lnbId"> 346 <!-- Lnb id must be LNB_NUM: <lnb id="LNB_10"/> --> 347 <xs:restriction base="xs:string"> 348 <xs:pattern value="LNB_[0-9]+"/> 349 </xs:restriction> 350 </xs:simpleType> 351 352 <xs:simpleType name="lnbVoltageEnum"> 353 <xs:restriction base="xs:string"> 354 <xs:enumeration value="NONE" /> 355 <xs:enumeration value="VOLTAGE_5V" /> 356 <xs:enumeration value="VOLTAGE_11V" /> 357 <xs:enumeration value="VOLTAGE_12V"/> 358 <xs:enumeration value="VOLTAGE_13V"/> 359 <xs:enumeration value="VOLTAGE_14V"/> 360 <xs:enumeration value="VOLTAGE_15V"/> 361 <xs:enumeration value="VOLTAGE_18V"/> 362 <xs:enumeration value="VOLTAGE_19V"/> 363 </xs:restriction> 364 </xs:simpleType> 365 <xs:simpleType name="lnbToneEnum"> 366 <xs:restriction base="xs:string"> 367 <xs:enumeration value="NONE" /> 368 <xs:enumeration value="CONTINUOUS" /> 369 </xs:restriction> 370 </xs:simpleType> 371 <xs:simpleType name="lnbPositionEnum"> 372 <xs:restriction base="xs:string"> 373 <xs:enumeration value="UNDEFINED" /> 374 <xs:enumeration value="POSITION_A" /> 375 <xs:enumeration value="POSITION_B" /> 376 </xs:restriction> 377 </xs:simpleType> 378 379 <!-- Diseqc Messages that would be used to send to the lnb under test. --> 380 <xs:simpleType name="diseqcMsgName"> 381 <xs:restriction base="xs:string"> 382 <xs:pattern value="[A-Z_]+"/> 383 </xs:restriction> 384 </xs:simpleType> 385 <xs:simpleType name="diseqcMsgBody"> 386 <xs:list itemType="xs:unsignedByte"/> 387 </xs:simpleType> 388 <xs:complexType name="diseqcMessage"> 389 <xs:attribute name="msgName" type="diseqcMsgName"/> 390 <xs:attribute name="msgBody" type="diseqcMsgBody"/> 391 </xs:complexType> 392 <xs:simpleType name="diseqcMsgSender"> 393 <xs:list itemType="diseqcMsgName"/> 394 </xs:simpleType> 395 396 <xs:complexType name="lnb"> 397 <xs:annotation> 398 <xs:documentation> 399 Each lnb element contain the following attributes: 400 "id": unique id of the lnb that could be used to connect to the test the 401 "dataFlowConfiguration" 402 "name": the external lnb device name. 403 "voltage": the voltage used to config the lnb. 404 "tone": the voltage used to config the lnb. 405 "position": the voltage used to config the lnb. 406 </xs:documentation> 407 </xs:annotation> 408 <xs:attribute name="id" type="lnbId" use="required"/> 409 <!-- Only required on external lnb with no device id. --> 410 <xs:attribute name="name" type="xs:string" use="optional"/> 411 <xs:attribute name="voltage" type="lnbVoltageEnum" use="required"/> 412 <xs:attribute name="tone" type="lnbToneEnum" use="required"/> 413 <xs:attribute name="position" type="lnbPositionEnum" use="required"/> 414 </xs:complexType> 415 416 <!-- TIME FILTER SESSION --> 417 <xs:simpleType name="timeFilterId"> 418 <!-- Time Filter id must be TIME_FILTER_NUM: <timeFilter id="TIME_FILTER_1"/> --> 419 <xs:restriction base="xs:string"> 420 <xs:pattern value="TIME_FILTER_[0-9]+"/> 421 </xs:restriction> 422 </xs:simpleType> 423 424 <xs:complexType name="timeFilter"> 425 <xs:annotation> 426 <xs:documentation> 427 Each timeFilter element contain the following attributes: 428 "id": unique id of the time filter that could be used to connect to the test the 429 "dataFlowConfiguration" 430 "timeStamp": the time stamp used to config the time filter. 431 </xs:documentation> 432 </xs:annotation> 433 <xs:attribute name="id" type="timeFilterId" use="required"/> 434 <xs:attribute name="timeStamp" type="xs:nonNegativeInteger" use="required"/> 435 </xs:complexType> 436 437 <!-- DESCRAMBLER SESSION --> 438 <xs:simpleType name="descramblerId"> 439 <!-- Descrambler id must be DESCRAMBLER_NUM: <descrambler id="DESCRAMBLER_2"/> --> 440 <xs:restriction base="xs:string"> 441 <xs:pattern value="DESCRAMBLER_[0-9]+"/> 442 </xs:restriction> 443 </xs:simpleType> 444 <xs:simpleType name="sessionPrivateData"> 445 <xs:list itemType="xs:unsignedByte"/> 446 </xs:simpleType> 447 448 <xs:complexType name="descrambler"> 449 <xs:annotation> 450 <xs:documentation> 451 Each descrambler element contain the following attributes: 452 "id": unique id of the descrambler that could be used to connect to the test the 453 "dataFlowConfiguration" 454 "casSystemId": the cas system id to connect to the descrambler. 455 "provisionStr": the provision string to use with the cas plugin. 456 "sesstionPrivatData": the session private data used to open the cas session. 457 </xs:documentation> 458 </xs:annotation> 459 <xs:attribute name="id" type="descramblerId" use="required"/> 460 <xs:attribute name="casSystemId" type="xs:nonNegativeInteger" use="required"/> 461 <xs:attribute name="provisionStr" type="xs:string" use="optional"/> 462 <xs:attribute name="sesstionPrivatData" type="sessionPrivateData" use="optional"/> 463 </xs:complexType> 464 465 <!-- HARDWARE CONFIGURATION SESSION --> 466 <xs:complexType name="hardwareConfiguration"> 467 <xs:sequence> 468 <xs:element name="frontends" minOccurs="0" maxOccurs="1"> 469 <xs:complexType> 470 <xs:annotation> 471 <xs:documentation xml:lang="en"> 472 This section contains configurations of all the frontends that would be 473 used in the tests. 474 - This section is optional and can be skipped to use the default 475 fe settings. 476 - The default settings can be found in the 477 sample_tuner_vts_configurations.xml. 478 - The users can also override the default frontend settings using 479 id="FE_DEFAULT". 480 - The users can configure 1 or more frontend elements in the 481 frontends sections. 482 </xs:documentation> 483 </xs:annotation> 484 <xs:sequence> 485 <xs:element name="frontend" type="frontend" minOccurs="1" maxOccurs="unbounded"/> 486 </xs:sequence> 487 </xs:complexType> 488 </xs:element> 489 <xs:element name="filters" minOccurs="0" maxOccurs="1"> 490 <xs:complexType> 491 <xs:annotation> 492 <xs:documentation xml:lang="en"> 493 This section contains configurations of all the filters that would be 494 used in the tests. 495 - This section is optional and can be skipped to use the default 496 filter settings. 497 - The default settings can be found in the 498 sample_tuner_vts_configurations.xml. 499 - The users can also override the default filter settings using 500 - id="FILTER_AUDIO_DEFAULT" or "FILTER_VIDEO_DEFAULT". 501 - The users can configure 1 or more filter elements in the filters 502 sections. 503 </xs:documentation> 504 </xs:annotation> 505 <xs:sequence> 506 <xs:element name="filter" type="filter" minOccurs="1" maxOccurs="unbounded"/> 507 </xs:sequence> 508 </xs:complexType> 509 </xs:element> 510 <xs:element name="dvrs" minOccurs="0" maxOccurs="1"> 511 <xs:complexType> 512 <xs:annotation> 513 <xs:documentation xml:lang="en"> 514 This section contains configurations of all the dvrs that would be used 515 in the tests. 516 - This section is optional and can be skipped if the device does 517 not support dvr. 518 - The users can configure 1 or more dvr elements in the dvrs 519 sections. 520 </xs:documentation> 521 </xs:annotation> 522 <xs:sequence> 523 <xs:element name="dvr" type="dvr" minOccurs="1" maxOccurs="unbounded"/> 524 </xs:sequence> 525 </xs:complexType> 526 </xs:element> 527 <xs:element name="diseqcMessages" minOccurs="0" maxOccurs="1"> 528 <xs:complexType> 529 <xs:annotation> 530 <xs:documentation xml:lang="en"> 531 This section contains configurations of all the diseqc messages that 532 would be used in the lnb tests. 533 - This section is optional and can be skipped if lnb is not suppoted 534 - The users can configure 1 or more message elements in the 535 diseqcMessages sections. 536 </xs:documentation> 537 </xs:annotation> 538 <xs:sequence> 539 <xs:element name="diseqcMessage" type="diseqcMessage" minOccurs="1" maxOccurs="unbounded"/> 540 </xs:sequence> 541 </xs:complexType> 542 </xs:element> 543 <xs:element name="lnbs" minOccurs="0" maxOccurs="1"> 544 <xs:complexType> 545 <xs:annotation> 546 <xs:documentation xml:lang="en"> 547 This section contains configurations of all the lnbs that would be used 548 in the tests. 549 - This section is optional and can be skipped if lnb is not suppoted 550 - The users can configure 1 or more lnb elements in the lnbs 551 sections. 552 </xs:documentation> 553 </xs:annotation> 554 <xs:sequence> 555 <xs:element name="lnb" type="lnb" minOccurs="1" maxOccurs="unbounded"/> 556 </xs:sequence> 557 </xs:complexType> 558 </xs:element> 559 <xs:element name="timeFilters" minOccurs="0" maxOccurs="1"> 560 <xs:complexType> 561 <xs:annotation> 562 <xs:documentation xml:lang="en"> 563 This section contains configurations of all the time filters that would 564 be used in the tests. 565 - This section is optional and can be skipped if time filter is 566 not supported. 567 - The users can configure 1 or more time filter elements in the 568 time filters sections. 569 </xs:documentation> 570 </xs:annotation> 571 <xs:sequence> 572 <xs:element name="timeFilter" type="timeFilter" minOccurs="1" maxOccurs="unbounded"/> 573 </xs:sequence> 574 </xs:complexType> 575 </xs:element> 576 <xs:element name="descramblers" minOccurs="0" maxOccurs="1"> 577 <xs:complexType> 578 <xs:annotation> 579 <xs:documentation xml:lang="en"> 580 This section contains configurations of all the descramblers that would 581 be used in the tests. 582 - This section is optional and can be skipped if descrambling is not 583 supported. 584 - The users can configure 1 or more descrambler elements in the 585 descramblers sections. 586 </xs:documentation> 587 </xs:annotation> 588 <xs:sequence> 589 <xs:element name="descrambler" type="descrambler" minOccurs="1" maxOccurs="unbounded"/> 590 </xs:sequence> 591 </xs:complexType> 592 </xs:element> 593 </xs:sequence> 594 </xs:complexType> 595 596 <!-- DATA FLOW CONFIGURATION SESSION --> 597 <xs:complexType name="dataFlowConfiguration"> 598 <xs:sequence> 599 <!-- clearLiveBroadcast is only optional when there is no physical frontend. In this 600 case, the dvrPlayback config is required. --> 601 <xs:element name="clearLiveBroadcast" minOccurs="0" maxOccurs="1"> 602 <xs:complexType> 603 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 604 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 605 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 606 <xs:attribute name="pcrFilterConnection" type="filterId" use="optional"/> 607 <xs:attribute name="sectionFilterConnection" type="filterId" use="optional"/> 608 <xs:attribute name="ipFilterConnection" type="filterId" use="optional"/> 609 <!-- TODO: b/182519645 allow the users to insert extra filters --> 610 <!-- DVR is only required when the frontend is using the software input --> 611 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 612 </xs:complexType> 613 </xs:element> 614 <!-- scan is only optional when there is no physical frontend. In this case, the 615 dvrPlayback config is required. --> 616 <xs:element name="scan" minOccurs="0" maxOccurs="1"> 617 <xs:complexType> 618 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 619 </xs:complexType> 620 </xs:element> 621 <xs:element name="descrambling" minOccurs="0" maxOccurs="1"> 622 <xs:complexType> 623 <!-- If there is a software or hardware frontend connection or not. If false, 624 dvrSourceConnection config is required when testing dvrRecord. --> 625 <xs:attribute name="hasFrontendConnection" type="xs:boolean" use="required"/> 626 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 627 <xs:attribute name="descramblerConnection" type="descramblerId" use="required"/> 628 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 629 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 630 <!-- TODO: b/182519645 allow the users to insert extra filters --> 631 <!-- This DVR is only required when the frontend is using the software input --> 632 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 633 <!-- This Dvr is only required when there's no frontend(sw or hw) connection --> 634 <xs:attribute name="dvrSourceConnection" type="dvrId" use="optional"/> 635 </xs:complexType> 636 </xs:element> 637 <xs:element name="dvrPlayback" minOccurs="0" maxOccurs="1"> 638 <xs:complexType> 639 <xs:attribute name="dvrConnection" type="dvrId" use="required"/> 640 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 641 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 642 <xs:attribute name="sectionFilterConnection" type="filterId" use="optional"/> 643 <!-- TODO: b/182519645 allow the users to insert extra filters --> 644 </xs:complexType> 645 </xs:element> 646 <xs:element name="dvrRecord" minOccurs="0" maxOccurs="1"> 647 <xs:complexType> 648 <!-- If there is a software or hardware frontend connection or not. If false, 649 dvrSourceConnection config is required when testing dvrRecord. --> 650 <xs:attribute name="hasFrontendConnection" type="xs:boolean" use="required"/> 651 <xs:attribute name="frontendConnection" type="frontendId" use="optional"/> 652 <xs:attribute name="dvrRecordConnection" type="dvrId" use="required"/> 653 <!-- This Dvr is only required when the frontend is using the software input --> 654 <xs:attribute name="dvrSoftwareFeConnection" type="dvrId" use="optional"/> 655 <!-- This Dvr is only required when there's no frontend(sw or hw) connection --> 656 <xs:attribute name="dvrSourceConnection" type="dvrId" use="optional"/> 657 <xs:attribute name="recordFilterConnection" type="filterId" use="required"/> 658 </xs:complexType> 659 </xs:element> 660 <xs:element name="lnbLive" minOccurs="0" maxOccurs="1"> 661 <xs:complexType> 662 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 663 <xs:attribute name="audioFilterConnection" type="filterId" use="required"/> 664 <xs:attribute name="videoFilterConnection" type="filterId" use="required"/> 665 <xs:attribute name="lnbConnection" type="lnbId" use="required"/> 666 <xs:attribute name="diseqcMsgSender" type="diseqcMsgSender" use="optional"/> 667 <!-- TODO: b/182519645 allow the users to insert extra filters --> 668 </xs:complexType> 669 </xs:element> 670 <xs:element name="lnbRecord" minOccurs="0" maxOccurs="1"> 671 <xs:complexType> 672 <xs:attribute name="frontendConnection" type="frontendId" use="required"/> 673 <xs:attribute name="recordFilterConnection" type="filterId" use="required"/> 674 <xs:attribute name="dvrRecordConnection" type="dvrId" use="required"/> 675 <xs:attribute name="lnbConnection" type="lnbId" use="required"/> 676 <xs:attribute name="diseqcMsgSender" type="diseqcMsgSender" use="optional"/> 677 </xs:complexType> 678 </xs:element> 679 <xs:element name="timeFilter" minOccurs="0" maxOccurs="1"> 680 <xs:complexType> 681 <xs:attribute name="timeFilterConnection" type="timeFilterId" use="required"/> 682 </xs:complexType> 683 </xs:element> 684 </xs:sequence> 685 </xs:complexType> 686 687 <!-- Full Tuner Configuration. This is the root element of the configuration xml. --> 688 <xs:element name="TunerConfiguration"> 689 <xs:complexType> 690 <xs:sequence> 691 <xs:element name="hardwareConfiguration" type="hardwareConfiguration" minOccurs="1" maxOccurs="1"/> 692 <xs:element name="dataFlowConfiguration" type="dataFlowConfiguration" minOccurs="1" maxOccurs="1"/> 693 </xs:sequence> 694 <xs:attribute name="version" type="version"/> 695 </xs:complexType> 696 <xs:key name="frontendIdUniqueness"> 697 <xs:selector xpath="hardwareConfiguration/frontends/frontend"/> 698 <xs:field xpath="@id"/> 699 </xs:key> 700 <xs:key name="filterIdUniqueness"> 701 <xs:selector xpath="hardwareConfiguration/filters/filter"/> 702 <xs:field xpath="@id"/> 703 </xs:key> 704 <xs:key name="dvrIdUniqueness"> 705 <xs:selector xpath="hardwareConfiguration/dvrs/dvr"/> 706 <xs:field xpath="@id"/> 707 </xs:key> 708 <xs:key name="lnbIdUniqueness"> 709 <xs:selector xpath="hardwareConfiguration/lnbs/lnb"/> 710 <xs:field xpath="@id"/> 711 </xs:key> 712 <xs:key name="timeFilterIdUniqueness"> 713 <xs:selector xpath="hardwareConfiguration/timeFilters/timeFilter"/> 714 <xs:field xpath="@id"/> 715 </xs:key> 716 <xs:key name="descramblerIdUniqueness"> 717 <xs:selector xpath="hardwareConfiguration/descramblers/descrambler"/> 718 <xs:field xpath="@id"/> 719 </xs:key> 720 </xs:element> 721</xs:schema> 722