Select Git revision
-
Lambert Theisen authoredLambert Theisen authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
board.xsd 8.12 KiB
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:group name="components">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="led" type="led"/>
<xs:element name="button" type="button"/>
<xs:element name="lcd" type="lcd"/>
<xs:element name="sram" type="sram"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:element name="board">
<xs:complexType>
<xs:sequence>
<xs:group ref="components"/>
<xs:element name="gui" type="layout" minOccurs="0"/>
<xs:group ref="components"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="component">
<xs:attribute name="id" type="xs:ID"/>
</xs:complexType>
<xs:complexType name="led">
<xs:complexContent>
<xs:extension base="component">
<xs:all>
<xs:element name="in" type="irq"/>
</xs:all>
<xs:attribute name="highOn" type="xs:boolean" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="button">
<xs:complexContent>
<xs:extension base="component">
<xs:all>
<xs:element name="out" type="irq"/>
<xs:element name="key" type="glfwKey" minOccurs="0"/>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="lcd">
<xs:complexContent>
<xs:extension base="component">
<xs:all>
<xs:element name="d4" type="irq"/>
<xs:element name="d5" type="irq"/>
<xs:element name="d6" type="irq"/>
<xs:element name="d7" type="irq"/>
<xs:element name="rs" type="irq"/>
<xs:element name="en" type="irq"/>
<xs:element name="rw" type="irq"/>
<xs:element name="optional" type="lcdIRQsSecondNibble" minOccurs="0"/>
</xs:all>
<xs:attribute name="width" type="xs:integer" use="required"/>
<xs:attribute name="height" type="xs:integer" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="lcdIRQsSecondNibble">
<xs:all>
<xs:element name="d0" type="irq"/>
<xs:element name="d1" type="irq"/>
<xs:element name="d2" type="irq"/>
<xs:element name="d3" type="irq"/>
</xs:all>
</xs:complexType>
<xs:complexType name="sram">
<xs:complexContent>
<xs:extension base="component">
<xs:all>
<xs:element name="cs" type="irq"/>
<xs:element name="mosi" type="irq"/>
<xs:element name="miso" type="irq"/>
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="irq">
<xs:choice>
<xs:element name="ioport" type="ioport"/>
<xs:element name="spi" type="spi"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ioport">
<xs:attribute name="name" type="char" use="required"/>
<xs:attribute name="index" type="pinNumber" use="required"/>
</xs:complexType>
<xs:complexType name="spi">
<xs:attribute name="name" type="char" use="required"/>
<xs:attribute name="type" type="spiType" use="required"/>
</xs:complexType>
<xs:complexType name="glfwKey">
<xs:attribute name="code" type="xs:integer" use="required"/>
</xs:complexType>
<xs:simpleType name="char">
<xs:union>
<xs:simpleType>
<xs:restriction base="unsignedHexByte"/>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:simpleType name="pinNumber">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxExclusive value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="spiType">
<xs:restriction base="xs:string">
<xs:enumeration value="input"/>
<xs:enumeration value="output"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="layout">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="vertical" type="layout"/>
<xs:element name="horizontal" type="layout"/>
<xs:element name="spacer">
<xs:complexType>
<xs:attribute name="size" type="xs:float" default="2.0"/>
</xs:complexType>
</xs:element>
<xs:element name="lcd">
<xs:complexType>
<xs:attribute name="id" type="xs:IDREF" use="required"/>
<xs:attribute name="theme" type="lcdTheme" default="green"/>
</xs:complexType>
</xs:element>
<xs:element name="led">
<xs:complexType>
<xs:attribute name="id" type="xs:IDREF" use="required"/>
<xs:attribute name="color" type="color" default="#FFFFFFFF"/>
</xs:complexType>
</xs:element>
<xs:element name="memory">
<xs:complexType>
<xs:attribute name="type" type="memoryType" use="required"/>
<xs:attribute name="id" type="xs:IDREF"/>
<xs:attribute name="colors" type="memoryColors" default="grad_spectrum"/>
<xs:attribute name="size" type="unsignedHexInt"/>
<xs:attribute name="cols" type="xs:unsignedInt" default="256"/>
<xs:attribute name="cellWidth" type="xs:float" default="0.39"/>
<xs:attribute name="cellHeight" type="xs:float" default="0.35"/>
</xs:complexType>
</xs:element>
<xs:element name="stats"/>
</xs:choice>
<!-- <xs:attribute name="font" type="font" default="monospace"/>-->
<!-- <xs:attribute name="fontSize" type="xs:float" default="1.5"/>-->
</xs:complexType>
<xs:simpleType name="lcdTheme">
<xs:restriction base="xs:string">
<xs:enumeration value="green"/>
<xs:enumeration value="blue"/>
<xs:enumeration value="darkWhite"/>
<xs:enumeration value="darkRed"/>
<xs:enumeration value="darkGreen"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="memoryType">
<xs:restriction base="xs:string">
<xs:enumeration value="internal"/>
<xs:enumeration value="sram"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="memoryColors">
<xs:restriction base="xs:string">
<xs:enumeration value="grad_bw"/>
<xs:enumeration value="grad_spectrum"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="color">
<xs:restriction base="xs:string">
<xs:pattern value="#[0-9A-Fa-f]{8}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="font">
<xs:restriction base="xs:string">
<xs:enumeration value="monospace"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unsignedHexInt">
<xs:restriction base="xs:string">
<xs:pattern value="0[Xx][0-9A-Fa-f]+"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="unsignedHexByte">
<xs:restriction base="xs:string">
<xs:pattern value="0[Xx][0-9A-Fa-f]{1,2}"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>