<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:include schemaLocation="../common/doc.xsd" />
  <xs:include schemaLocation="../common/stm32/stm32_gpiov2_port.xsd" />
  <xs:include schemaLocation="abstract_board.xsd" />

  <xs:complexType name="STM32WBxxBoardType">
    <xs:complexContent>
      <xs:extension base="AbstractBoardType">
        <xs:sequence>
          <xs:element name="subtype">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:whiteSpace value="collapse"></xs:whiteSpace>
                <xs:enumeration value="STM32WB55xx"></xs:enumeration>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>
          <xs:element name="clocks" maxOccurs="1" minOccurs="1">
            <xs:complexType>
              <xs:attribute name="HSEFrequency" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:int">
                    <xs:whiteSpace value="collapse"></xs:whiteSpace>
                    <xs:minInclusive value="0"></xs:minInclusive>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="LSEBypass" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:whiteSpace value="collapse">
                    </xs:whiteSpace>
                    <xs:enumeration value="false"></xs:enumeration>
                    <xs:enumeration value="true"></xs:enumeration>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="LSEDrive" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:whiteSpace value="collapse"></xs:whiteSpace>
                    <xs:enumeration value="3 High Drive (default)">
                    </xs:enumeration>
                    <xs:enumeration value="2 Medium-High Drive">
                    </xs:enumeration>
                    <xs:enumeration value="1 Medium-Low Drive">
                    </xs:enumeration>
                    <xs:enumeration value="0 Low Drive (lowest consumption)">
                    </xs:enumeration>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="LSEFrequency" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:int">
                    <xs:whiteSpace value="collapse"></xs:whiteSpace>
                    <xs:minInclusive value="0"></xs:minInclusive>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="VDD" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:int">
                    <xs:whiteSpace value="collapse">
                    </xs:whiteSpace>
                    <xs:minInclusive value="180"></xs:minInclusive>
                    <xs:maxInclusive value="360"></xs:maxInclusive>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:complexType>
          </xs:element>
          <xs:element name="ports" type="portsType" maxOccurs="1"
            minOccurs="1">
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="portsType">
    <xs:sequence>
      <xs:element name="GPIOA" type="STM32GPIOv2PortType"
        minOccurs="1" maxOccurs="1">
      </xs:element>
      <xs:element name="GPIOB" type="STM32GPIOv2PortType"
        minOccurs="1" maxOccurs="1">
      </xs:element>
      <xs:element name="GPIOC" type="STM32GPIOv2PortType"
        minOccurs="1" maxOccurs="1">
      </xs:element>
      <xs:element name="GPIOD" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
      <xs:element name="GPIOE" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
      <xs:element name="GPIOF" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
      <xs:element name="GPIOG" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
      <xs:element name="GPIOH" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
      <xs:element name="GPIOI" type="STM32GPIOv2PortType"
        maxOccurs="1" minOccurs="1">
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="board" type="STM32WBxxBoardType"></xs:element>

</xs:schema>
