aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gencfg/schema
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-06-15 15:58:20 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2013-06-15 15:58:20 +0000
commit7c68ef157d009f9932ac47ba21ba5d74e321623f (patch)
tree6c2442ca44cd090656ec3059ffb959f3d747e18d /tools/gencfg/schema
parent076746af63d317f8e96766b9137a65679f60463f (diff)
parente0d850113610f3efa0c0ac4946901f683e5e7332 (diff)
downloadChibiOS-7c68ef157d009f9932ac47ba21ba5d74e321623f.tar.gz
ChibiOS-7c68ef157d009f9932ac47ba21ba5d74e321623f.tar.bz2
ChibiOS-7c68ef157d009f9932ac47ba21ba5d74e321623f.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@5854 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'tools/gencfg/schema')
-rw-r--r--tools/gencfg/schema/boards/abstract_board.xsd68
-rw-r--r--tools/gencfg/schema/boards/stm32f4xx_board.xsd89
-rw-r--r--tools/gencfg/schema/common/doc.xsd108
-rw-r--r--tools/gencfg/schema/common/stm32/stm32_gpiov2_port.xsd214
-rw-r--r--tools/gencfg/schema/hal/abstract_adc_cfg.xsd51
-rw-r--r--tools/gencfg/schema/hal/abstract_cfg.xsd344
-rw-r--r--tools/gencfg/schema/hal/abstract_driver_cfg.xsd12
-rw-r--r--tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_adc_cfg.xsd432
-rw-r--r--tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_cfg.xsd29
9 files changed, 1347 insertions, 0 deletions
diff --git a/tools/gencfg/schema/boards/abstract_board.xsd b/tools/gencfg/schema/boards/abstract_board.xsd
new file mode 100644
index 000000000..c4c953240
--- /dev/null
+++ b/tools/gencfg/schema/boards/abstract_board.xsd
@@ -0,0 +1,68 @@
+<?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:complexType name="AbstractBoardType" abstract="true">
+ <xs:sequence>
+ <xs:element name="board_name" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="board_id" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\w[\w\d_]*"></xs:pattern>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="board_functions" maxOccurs="1" minOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="__early_init" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
+ <xs:element name="boardInit" type="xs:string" maxOccurs="1" minOccurs="0">
+ </xs:element>
+ <xs:element name="sdc_lld_is_card_inserted" type="xs:string" maxOccurs="1" minOccurs="0">
+ </xs:element>
+ <xs:element name="sdc_lld_is_write_protected" type="xs:string" maxOccurs="1" minOccurs="0">
+ </xs:element>
+ <xs:element name="mmc_lld_is_card_inserted" type="xs:string" maxOccurs="1" minOccurs="0">
+ </xs:element>
+ <xs:element name="mmc_lld_is_write_protected" type="xs:string" maxOccurs="1" minOccurs="0">
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType></xs:element>
+ <xs:element name="ethernet_phy" type="EthernetPHYType"
+ maxOccurs="1" minOccurs="0">
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EthernetPHYType">
+ <xs:sequence>
+ <xs:element name="identifier" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ <xs:pattern value="MII_[\w\d_]+"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="bus_type" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ <xs:enumeration value="RMII"></xs:enumeration>
+ <xs:enumeration value="MII"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/tools/gencfg/schema/boards/stm32f4xx_board.xsd b/tools/gencfg/schema/boards/stm32f4xx_board.xsd
new file mode 100644
index 000000000..ace3b5acb
--- /dev/null
+++ b/tools/gencfg/schema/boards/stm32f4xx_board.xsd
@@ -0,0 +1,89 @@
+<?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="STM32F4xxBoardType">
+ <xs:complexContent>
+ <xs:extension base="AbstractBoardType">
+ <xs:sequence>
+ <xs:element name="clocks" maxOccurs="1" minOccurs="1">
+ <xs:complexType>
+ <xs:attribute name="HSEBypass" 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="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="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="STM32F4xxBoardType"></xs:element>
+
+</xs:schema>
diff --git a/tools/gencfg/schema/common/doc.xsd b/tools/gencfg/schema/common/doc.xsd
new file mode 100644
index 000000000..e5be361d5
--- /dev/null
+++ b/tools/gencfg/schema/common/doc.xsd
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="NamedItem">
+ <xs:annotation>
+ <xs:documentation>
+ >Generic item with optional name and brief
+ description
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="name" maxOccurs="1" minOccurs="1">
+ <xs:annotation>
+ <xs:documentation>Name of the object.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ <xs:pattern value="\w[\w\d_]*"></xs:pattern>
+ <xs:minLength value="1"></xs:minLength>
+ <xs:maxLength value="24"></xs:maxLength>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="DocumentedItem">
+ <xs:annotation>
+ <xs:documentation>>Something that can have a detailed description
+ attached
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="NamedItem">
+ <xs:sequence>
+ <xs:element name="brief" maxOccurs="1" minOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ Brief description of the object.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:minLength value="0"></xs:minLength>
+ <xs:maxLength value="72"></xs:maxLength>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="details" maxOccurs="1" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Object documentation as text, does not preserve
+ formatting.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="pre" maxOccurs="unbounded" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Object pre-requisites as text, does not preserve
+ formatting.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="post" maxOccurs="unbounded" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Object post-requisites as text, does not preserve
+ formatting.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="note" maxOccurs="unbounded" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>
+ Object note as text, does not preserve formatting.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/tools/gencfg/schema/common/stm32/stm32_gpiov2_port.xsd b/tools/gencfg/schema/common/stm32/stm32_gpiov2_port.xsd
new file mode 100644
index 000000000..c3ac59487
--- /dev/null
+++ b/tools/gencfg/schema/common/stm32/stm32_gpiov2_port.xsd
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:complexType name="STM32GPIOv2PortType">
+
+ <xs:sequence>
+ <xs:element
+ name="pin0"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin1"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin2"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin3"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin4"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin5"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin6"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin7"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin8"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin9"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin10"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin11"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin12"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin13"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin14"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ <xs:element
+ name="pin15"
+ type="STM32GPIOv2PinType"
+ maxOccurs="1"
+ minOccurs="1"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="STM32GPIOv2PinType">
+ <xs:annotation>
+ <xs:documentation>
+ Object representing an STM32 pin for the GPIOv2
+ peripheral.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute
+ name="ID"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Pin identifier, used to generate a #define with the
+ pin name.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\w?[\w\d_]*"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Mode"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Pin mode, as defined for MODER register.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Input"></xs:enumeration>
+ <xs:enumeration value="Output"></xs:enumeration>
+ <xs:enumeration value="Alternate"></xs:enumeration>
+ <xs:enumeration value="Analog"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Level"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Logic level for the ODR register.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="High"></xs:enumeration>
+ <xs:enumeration value="Low"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Speed"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Pin speed as defined in SPEEDR register.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Minimum"></xs:enumeration>
+ <xs:enumeration value="Low"></xs:enumeration>
+ <xs:enumeration value="High"></xs:enumeration>
+ <xs:enumeration value="Maximum"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Type"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Pin type as defined in TYPER register.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PushPull"></xs:enumeration>
+ <xs:enumeration value="OpenDrain"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Resistor"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Pin pull-up/down resistor as defined in PUDR register.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Floating"></xs:enumeration>
+ <xs:enumeration value="PullUp"></xs:enumeration>
+ <xs:enumeration value="PullDown"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute
+ name="Alternate"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Pin alternate function number, only valid if
+ "Alternate" is selected
+ in the Mode attribute.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"></xs:minInclusive>
+ <xs:maxInclusive value="15"></xs:maxInclusive>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
diff --git a/tools/gencfg/schema/hal/abstract_adc_cfg.xsd b/tools/gencfg/schema/hal/abstract_adc_cfg.xsd
new file mode 100644
index 000000000..52a6c9096
--- /dev/null
+++ b/tools/gencfg/schema/hal/abstract_adc_cfg.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:include schemaLocation="abstract_driver_cfg.xsd" />
+
+ <xs:complexType name="AbstractAdcGroupCfgType">
+ <xs:complexContent>
+ <xs:extension base="DocumentedItem">
+ <xs:sequence>
+ <xs:element name="circular" maxOccurs="1" minOccurs="1">
+
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="conv_callback" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:minLength value="0"></xs:minLength>
+ <xs:maxLength value="24"></xs:maxLength>
+ <xs:pattern value="\w[\w\d_]*"></xs:pattern>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="error_callback" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:minLength value="0"></xs:minLength>
+ <xs:maxLength value="24"></xs:maxLength>
+
+ <xs:pattern value="\w[\w\d_]*"></xs:pattern>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="AbstractAdcCfgType">
+ <xs:complexContent>
+ <xs:extension base="AbstractDriverCfgType"></xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
diff --git a/tools/gencfg/schema/hal/abstract_cfg.xsd b/tools/gencfg/schema/hal/abstract_cfg.xsd
new file mode 100644
index 000000000..72491eea9
--- /dev/null
+++ b/tools/gencfg/schema/hal/abstract_cfg.xsd
@@ -0,0 +1,344 @@
+<?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:complexType name="AbstractCfgType">
+ <xs:complexContent>
+ <xs:extension base="DocumentedItem">
+ <xs:sequence>
+ <xs:element
+ name="hal"
+ maxOccurs="1"
+ minOccurs="1" type="HALSettingsType">
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="ADCSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="ADC_USE_WAIT">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="ADC_USE_MUTUAL_EXCLUSION">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+
+ <xs:complexType name="CANSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="CAN_USE_SLEEP_MODE">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EXTSettingsType"></xs:complexType>
+
+ <xs:complexType name="GPTSettingsType"></xs:complexType>
+
+ <xs:complexType name="I2CSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="I2C_USE_MUTUAL_EXCLUSION">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="ICUSettingsType"></xs:complexType>
+
+ <xs:complexType name="MACSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="MAC_USE_EVENTS">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="MMC_SPISettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="MMC_NICE_WAITING">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="PALSettingsType"></xs:complexType>
+
+ <xs:complexType name="PWMSettingsType"></xs:complexType>
+
+ <xs:complexType name="RTCSettingsType"></xs:complexType>
+
+ <xs:complexType name="SDCSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SDC_INIT_RETRY">
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"></xs:minInclusive>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SDC_MMC_SUPPORT">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="false"></xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SDC_NICE_WAITING">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SERIALSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SERIAL_DEFAULT_BITRATE">
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minExclusive value="300"></xs:minExclusive>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SERIAL_BUFFERS_SIZE">
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="4"></xs:minInclusive>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SERIAL_USBSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SERIAL_USB_BUFFERS_SIZE">
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="64"></xs:minInclusive>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SPISettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SPI_USE_WAIT">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element
+ minOccurs="1"
+ maxOccurs="1"
+ name="SPI_USE_MUTUAL_EXCLUSION">
+ <xs:simpleType>
+ <xs:restriction base="xs:boolean">
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="TMSettingsType"></xs:complexType>
+
+ <xs:complexType name="UARTSettingsType"></xs:complexType>
+
+ <xs:complexType name="USBSettingsType"></xs:complexType>
+
+ <xs:complexType name="HALSettingsType">
+ <xs:sequence>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="ADC"
+ type="ADCSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="CAN"
+ type="CANSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="EXT"
+ type="EXTSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="GPT"
+ type="GPTSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="I2C"
+ type="I2CSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="ICU"
+ type="ICUSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="MAC"
+ type="MACSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="MMC_SPI"
+ type="MMC_SPISettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="PAL"
+ type="PALSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="PWM"
+ type="PWMSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="RTC"
+ type="RTCSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="SDC"
+ type="SDCSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="SERIAL"
+ type="SERIALSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="SERIAL_USB"
+ type="SERIAL_USBSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="SPI"
+ type="SPISettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="TM"
+ type="TMSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="UART"
+ type="UARTSettingsType">
+ </xs:element>
+ <xs:element
+ minOccurs="0"
+ maxOccurs="1"
+ name="USB"
+ type="USBSettingsType">
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/tools/gencfg/schema/hal/abstract_driver_cfg.xsd b/tools/gencfg/schema/hal/abstract_driver_cfg.xsd
new file mode 100644
index 000000000..d6501ff2a
--- /dev/null
+++ b/tools/gencfg/schema/hal/abstract_driver_cfg.xsd
@@ -0,0 +1,12 @@
+<?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:complexType name="AbstractDriverCfgType">
+ <xs:complexContent>
+ <xs:extension base="DocumentedItem"></xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
diff --git a/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_adc_cfg.xsd b/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_adc_cfg.xsd
new file mode 100644
index 000000000..331933109
--- /dev/null
+++ b/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_adc_cfg.xsd
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <xs:include schemaLocation="../abstract_adc_cfg.xsd" />
+
+ <xs:complexType name="STM32F4AdcCfgType">
+ <xs:complexContent>
+ <xs:extension base="AbstractAdcCfgType">
+ <xs:sequence>
+ <xs:element name="groups" minOccurs="1" maxOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="group" maxOccurs="unbounded"
+ minOccurs="1" type="STM32F4xxAdcGroupCfgType"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="STM32F4xxAdcGroupCfgType">
+ <xs:complexContent>
+ <xs:extension base="AbstractAdcGroupCfgType">
+ <xs:sequence>
+ <xs:element name="alignment" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0 Samples are Right Aligned"></xs:enumeration>
+ <xs:enumeration value="1 Samples are Left Aligned"></xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="resolution" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0 12 bits"></xs:enumeration>
+ <xs:enumeration value="1 10 bits"></xs:enumeration>
+ <xs:enumeration value="2 8 bits"></xs:enumeration>
+ <xs:enumeration value="3 6 bits"></xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="trigger_mode" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0 Software"></xs:enumeration>
+ <xs:enumeration value="1 Rising Edge"></xs:enumeration>
+ <xs:enumeration value="2 Falling Edge"></xs:enumeration>
+ <xs:enumeration value="3 Both Edges"></xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="trigger_source" maxOccurs="1"
+ minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0 Timer 1 CC1 event"></xs:enumeration>
+ <xs:enumeration value="1 Timer 1 CC2 event"></xs:enumeration>
+ <xs:enumeration value="2 Timer 1 CC3 event"></xs:enumeration>
+ <xs:enumeration value="3 Timer 2 CC2 event"></xs:enumeration>
+ <xs:enumeration value="4 Timer 2 CC3 event"></xs:enumeration>
+ <xs:enumeration value="5 Timer 2 CC4 event"></xs:enumeration>
+ <xs:enumeration value="6 Timer 2 TRGO event"></xs:enumeration>
+ <xs:enumeration value="7 Timer 3 CC1 event"></xs:enumeration>
+ <xs:enumeration value="8 Timer 3 TRGO event"></xs:enumeration>
+ <xs:enumeration value="9 Timer 4 CC4 event"></xs:enumeration>
+ <xs:enumeration value="10 Timer 5 CC1 event"></xs:enumeration>
+ <xs:enumeration value="11 Timer 5 CC2 event"></xs:enumeration>
+ <xs:enumeration value="12 Timer 5 CC3 event"></xs:enumeration>
+ <xs:enumeration value="13 Timer 8 CC1 event"></xs:enumeration>
+ <xs:enumeration value="14 Timer 8 CC4 event"></xs:enumeration>
+ <xs:enumeration value="15 EXTI line15"></xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="discontinuous" maxOccurs="1"
+ minOccurs="1">
+
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0 Disabled"></xs:enumeration>
+ <xs:enumeration value="1 One discontinous conversion"></xs:enumeration>
+ <xs:enumeration
+ value="2 Two discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="3 Three discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="4 Four discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="5 Five discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="6 Six discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="7 Seven discontinous conversions">
+ </xs:enumeration>
+ <xs:enumeration
+ value="8 Eight discontinous conversions">
+ </xs:enumeration>
+ <xs:whiteSpace value="collapse"></xs:whiteSpace>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="sample_time" maxOccurs="1" minOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IN0" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN1" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN2" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN3" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN4" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN5" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN6" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN7" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN8" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN9" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN10" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN11" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN12" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN13" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN14" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="IN15" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="SENSOR" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="VREFINT" maxOccurs="1"
+ minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="VBAT" maxOccurs="1" minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_SAMPLE_3"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_15"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_28"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_56"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_84"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_112"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_144"></xs:enumeration>
+ <xs:enumeration value="ADC_SAMPLE_480"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="channels_sequence" maxOccurs="1"
+ minOccurs="1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="channel" maxOccurs="16"
+ minOccurs="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="ADC_CHANNEL_IN0"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN1"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN2"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN3"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN4"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN5"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN6"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN7"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN8"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN9"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN10"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN11"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN12"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN13"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN14"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_IN15"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_SENSOR"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_VREFINT"></xs:enumeration>
+ <xs:enumeration value="ADC_CHANNEL_VBAT"></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+
+
+
+
+
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_cfg.xsd b/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_cfg.xsd
new file mode 100644
index 000000000..f846403f3
--- /dev/null
+++ b/tools/gencfg/schema/hal/stm32f4xx/stm32f4xx_cfg.xsd
@@ -0,0 +1,29 @@
+<?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="stm32f4xx_adc_cfg.xsd" />
+
+ <xs:complexType name="STM32F4xxCfgType">
+ <xs:complexContent>
+ <xs:extension base="DocumentedItem">
+ <xs:sequence>
+ <xs:element name="configs" maxOccurs="1" minOccurs="1">
+ <xs:complexType>
+ <xs:sequence maxOccurs="unbounded" minOccurs="1">
+ <xs:choice>
+ <xs:element name="adc_config" type="STM32F4AdcCfgType"
+ maxOccurs="1" minOccurs="0">
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="configuration" type="STM32F4xxCfgType"></xs:element>
+</xs:schema>