]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
Added very minimal CTS and TrbNet database files,
authorAndreas Neiser <neiser@kph.uni-mainz.de>
Mon, 1 Jul 2013 08:17:13 +0000 (10:17 +0200)
committerAndreas Neiser <neiser@kph.uni-mainz.de>
Mon, 1 Jul 2013 08:17:13 +0000 (10:17 +0200)
just to make a valid trb-setup.xml for xml-db.pl

xml-db/database/CTS.xml [new file with mode: 0644]
xml-db/database/TrbNet.xml [new file with mode: 0644]
xml-db/database/TrbNetSetup.xsd
xml-db/trb-setup.xml
xml-db/xml-db.pl

diff --git a/xml-db/database/CTS.xml b/xml-db/database/CTS.xml
new file mode 100644 (file)
index 0000000..ed6fc52
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0"  encoding="utf-8" ?>
+<TrbNetEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:noNamespaceSchemaLocation="TrbNetEntity.xsd"
+              name="CTS"
+              address="a000"
+              >
+  <description>Registers for the Central Trigger System (CTS)</description>
+
+  <!-- this is just a very minimal version -->
+
+  <register name="TriggerAssertedCounter" address="0000" purpose="statistics">
+    <description>Number of clock cycles with trigger asserted</description>
+    <field name="TriggerAssertedCounter" start="0" size="32" format="unsigned" />
+  </register>
+
+</TrbNetEntity>
diff --git a/xml-db/database/TrbNet.xml b/xml-db/database/TrbNet.xml
new file mode 100644 (file)
index 0000000..8c5beb3
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"  encoding="utf-8" ?>
+<TrbNetEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:noNamespaceSchemaLocation="TrbNetEntity.xsd"
+              name="TrbNet"
+              address="7000"
+              >
+  <description>Registers for the TrbNet itself</description>
+
+  <!-- this is just a very minimal version -->
+
+  <register name="IPUHandlerStatus" address="0202" purpose="status">
+    <description>IPU handler status register</description>
+    <field name="IPUHandlerStatusState" start="0" size="4" format="enum">
+      <description>FSM state bits</description>
+      <enumItem value="0">IDLE</enumItem>
+      <enumItem value="1">WaitForLength</enumItem>
+      <enumItem value="2">GotLength</enumItem>
+      <enumItem value="3">SendDHDR</enumItem>
+      <enumItem value="4">ReadData</enumItem>
+      <enumItem value="5">EndReadout</enumItem>
+    </field>
+  </register>
+
+</TrbNetEntity>
index d5716e1084cd72cc10dcd89561166e17de483455..370f95104214aa4e63226a746eb04dee054753e4 100644 (file)
   <xs:element name="trb">
     <xs:complexType>
       <xs:choice maxOccurs="unbounded">
-        <xs:element name="entity" type="entitytype"/>
-        <xs:element ref="external" />
+        <xs:element name="entity" type="trbitemtype" />
+        <xs:element name="external" type="trbitemtype" />
       </xs:choice>
-      <xs:attribute ref="address" />
+      <xs:attribute ref="address" use="required" />
     </xs:complexType>
   </xs:element>
 
-  <xs:complexType name="entitytype">
+  <xs:complexType name="trbitemtype">
     <!-- the entity may contain similar elements as the TrbNetEntity
          element, but without a complex grouping mechanism. This is
          why we defined some sparse elements in TrbNetCommon.xsd,
       <xs:element name="field" type="fieldtype" />
     </xs:choice>
     <xs:attribute name="type" type="xs:string" use="required" />
+    <xs:attribute name="address" type="addresstype" />
   </xs:complexType>
 
-  <xs:element name="external">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="entitytype">
-          <xs:attribute name="address" type="addresstype" use="required" />
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-
+  
   <xs:attribute name="endpoint">
     <xs:simpleType>
       <xs:restriction base="xs:integer">
index 7a2fef1a263808ab99fa56665c6c818343a72f28..41bdfd1e7925b3714fa3ff4f7b52f4407efb4db9 100644 (file)
@@ -62,7 +62,8 @@
        are identified by their type and address (if specified) -->
   <trb address="0200">
     <entity type="TDC">
-      <!-- this field is a bitmask, so there's a converter to easily set single bits -->
+      <!-- this field is a bitmask, so there's a converter to easily
+           set single bits -->
       <field name="ChannelEnable">
         0-15 => 1, <!-- enables channels 0-15 -->
         34 => 1, <!-- enables channel 34 -->
index 6fa5e575aad6764e0f24859ddb47d10f8c952ba7..98c285f7031a2e0b9f75b8d52c2d9ca1d8132483 100755 (executable)
@@ -43,18 +43,35 @@ sub Main {
   my ($db,$files) = &LoadDBAndFiles;
 
   #print Dumper($files);
-  
   foreach my $item (@$files) {
     my $file = $item->[0];
-    my $doc = $item->[1];
-    print "Working on $file...\n" if $verbose;
-    
+    my $doc = $item->[1]; print "Working on $file...\n" if $verbose;
+    my $merged = {};
+    foreach my $trbnode ($doc->getDocumentElement->findnodes('trb')) {
+      my $trbaddress = $trbnode->getAttribute('address');
+      print $trbaddress,"\n";
+      foreach my $entitynode ($trbnode->findnodes('entity')) {
+        my $type = $entitynode->getAttribute('type');
+        # check if we know this type
+        FatalError($entitynode, "Entity type $type not found in database")
+          unless defined $db->{"$type.xml"};
+        
+        print $type,"\n";
+      }
+    }
   }
-
   # testing...
   #DumpDatabase($db);
 }
 
+sub FatalError($$) {
+  my $node = shift;
+  my $file = $node->ownerDocument->URI;
+  my $line = $node->line_number;
+  my $msg = shift;
+  print "$file:$line: Fatal Error: $msg\n";
+  exit 1;
+}
 
 sub DumpDatabase($) {
   my $db = shift;
@@ -98,7 +115,7 @@ sub DumpDocument($) {
                $field->getAttribute('size') || 1,
                $name, $field->getAttribute('name')
               );
-        
+
         #print $field->getAttribute('errorflag') || 'false',"\n";
       }
     }