]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
The schema requires some basic uniqueness,
authorAndreas Neiser <neiser@kph.uni-mainz.de>
Sat, 29 Jun 2013 15:23:03 +0000 (17:23 +0200)
committerAndreas Neiser <neiser@kph.uni-mainz.de>
Sat, 29 Jun 2013 15:41:24 +0000 (17:41 +0200)
TrbData below TrbNetEntity must be grouped,
some more minor fixes...

xml-db/database/TDC.xml
xml-db/database/TrbNetEntity.xsd
xml-db/xml-db.pl

index 52f3aec991493b963b29c211db5d3bfb8f5974af..8c75609cf9bfb042fb819f7857d30be9db8fcc2b 100644 (file)
@@ -4,22 +4,34 @@
         name="TDC"
         address="c000"
         >
-  <description>An FPGA-based tapped-delay line TDC</description>
+  <description>An FPGA-based tapped-delay line time-to-digital converter (TDC)</description>
   <!--===========================================-->
   <!-- Common TDC Status registers             -->
   <!--===========================================-->
-  <group name="Status" purpose="config" address="0100"  mode="rw"  continuous="true">
+  <group name="Status" purpose="config" address="0200"  mode="r" continuous="true">
     <register name="Basic"
-              address="0000" mode="rw">
-      <description>Basic controls</description>
+              address="0000">
       <field name="FSMReadout"
              start="0"   size="20"  mode="rw"  purpose="config"  format="enum"  defaultValue="0" >
         <description>Debug word of the TDC readout FSM</description>       
-        <enumItem value="a">bla</enumItem>
+        <enumItem value="1">IDLE</enumItem>
+        <enumItem value="2">IDLE</enumItem>
       </field>
       
     </register>
-    <register name="TriggerInitSeq"
+  </group>
+  <group name="Status" purpose="config" address="0100"  mode="r" continuous="true">
+    <register name="Basic"
+              address="0000">
+      <field name="FSMReadout"
+             start="0"   size="20"  mode="rw"  purpose="config"  format="enum"  defaultValue="0" >
+        <description>Debug word of the TDC readout FSM</description>       
+        <enumItem value="1">IDLE</enumItem>
+        <enumItem value="2">IDLE</enumItem>
+      </field>
+      
+    </register>
+    <register name="Bla"
               address="0001" mode="w" purpose ="trigger" repeat="2">
       <description>Trig</description>
       <field name="TriggerInitSeq"
index 76658ff1d0210ee6259d699123341a97b47b0da8..9fa33411f5d5faaaf100ea693d414faca03a0e0a 100644 (file)
         <xs:choice>
           <xs:element   ref="description"/>
         </xs:choice>
-        <!-- but a data without any fields does not make sense for this
-             database, so the default minOccurs=1 is used -->
+        <!-- we require that all data is grouped -->
         <xs:choice maxOccurs="unbounded">
           <xs:element   ref="group"       maxOccurs="unbounded" />
-          <xs:element   ref="register"    maxOccurs="unbounded" />
-          <xs:element   ref="memory"      maxOccurs="unbounded" />
-          <xs:element   ref="fifo"        maxOccurs="unbounded" />
         </xs:choice>
       </xs:sequence>
       <xs:attribute ref="name" use="required" />
         <xs:choice minOccurs="0">
           <xs:element   ref="description"/>
         </xs:choice>
-        <!-- but a data without any fields does not make sense for this
-             database, so the default minOccurs=1 is used -->
+        <!-- groups may consist of other groups and "TrbData" describing things  -->
         <xs:choice maxOccurs="unbounded">
           <xs:element   ref="group"       maxOccurs="unbounded" />
           <xs:element   ref="register"    maxOccurs="unbounded" />
       <xs:attribute ref="format" />
       <xs:attribute ref="repeat" />
     </xs:complexType>
+    <xs:unique name="UniqueTrbDataNames">
+      <xs:selector xpath="register | memory | fifo" />
+      <xs:field xpath="@name" />
+    </xs:unique>
+    <xs:unique name="UniqueTrbDataAddresses">
+      <xs:selector xpath="register | memory | fifo" />
+      <xs:field xpath="@address" />
+    </xs:unique>
   </xs:element>
 
   <xs:element name="enumItem">
            an error is indicated by this field -->
       <xs:attribute ref="errorflag" />
     </xs:complexType>
+    <xs:unique name="UniqueEnumItems">
+      <xs:selector xpath="enumItem" />
+      <xs:field xpath="@value" />
+    </xs:unique>
   </xs:element>
 
 
index 7e48b9cb939c8bf95bbaf61e570b5f4465a95d76..4860e3cd63ea2d4a8052c88412935e5dcaf3d995 100755 (executable)
@@ -62,7 +62,7 @@ sub DoSomethingWithDb($) {
     # and base address (just add all previous offsets)
     my $baseaddress = 0;
     my $basename = '';
-    foreach my $anc ($groupNode->findnodes('ancestor::group | .')) {
+    foreach my $anc ($groupNode->findnodes('ancestor-or-self::group')) {
       $baseaddress += hex($anc->getAttribute('address'));
       $basename .= '/'.$anc->getAttribute('name');
     }