]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
Include 'sliceName' option to xml format to name slices of recurring registers
authorJan Michel <j.michel@gsi.de>
Thu, 19 Nov 2020 16:35:41 +0000 (17:35 +0100)
committerJan Michel <j.michel@gsi.de>
Thu, 19 Nov 2020 16:36:31 +0000 (17:36 +0100)
web/htdocs/layout/blue.css
xml-db/get.pl
xml-db/schema/TrbNetCommon.xsd
xml-db/schema/TrbNetEntity.xsd
xml-db/schema/TrbNetSetup.xsd
xml-db/xml-db.pl

index 681e5932354240357ab243f25f82ac1ffcef5c6f..7e02a4ff41630c9ca2f16d0dd4eb337a4da003b9 100644 (file)
@@ -346,7 +346,7 @@ hr.queryresult  {
   background-image:url("edit.png");
   background-repeat:no-repeat;
   background-position:fixed;
-  padding-left:16px;
+  padding-left:8px;
 }
 
 .rate {
@@ -357,7 +357,7 @@ hr.queryresult  {
 }
 
 table.queryresult td.slice, table.queryresult th.slice {
-  text-align:center;
+  text-align:left;
   background:#eee;
 }
 
index e09b89edbcb3e54a533f9908dd579a38a47c31b1..69ac8b01ef3144b0549d561f789144c372c8b669 100755 (executable)
@@ -276,7 +276,7 @@ sub FormatPretty {
     my $range = $obj->{start}+$obj->{bits}-1;
     $range .= "..".$obj->{start} if ($obj->{bits}>1);
     $ret .= " ".$obj->{unit} if exists $obj->{unit};
-    $ret .= sprintf("<span class=\"tooltip\"><b>$name</b> (Bit $range)<br>raw: 0x%x<br>$cstr</span></div>",$rawvalue);
+    $ret .= sprintf("<span class=\"tooltip\"><b>$name</b> (Bit $range) - raw: 0x%x<br>$cstr<br>".substr($obj->{description},0,28)."</span></div>",$rawvalue);
 
   } else {
     for ($obj->{format}) {
@@ -325,7 +325,7 @@ sub requestdata {
       my $size   = $obj->{size};
       $slice = $slice || 0;
       do{
-        $o = register_read_mem($netaddr,$obj->{address}+$slice*$stepsize,0,$size);
+        $o = register_read_mem($netaddr,$obj->{address}+$slice*$stepsize,0,$size*($obj->{repeat}//1));
         next unless defined $o;
         foreach my $k (keys %$o) {
           for (my $i = 0; $i < $size; $i++) {
@@ -382,6 +382,7 @@ sub register_read_mem {
 sub convert_keys_to_hex {
   # replace all keys with string in hex representation
   # this makes the keys more flexible, especially for providing chains...
+  return unless defined $_[0];
   my %h = %{$_[0]};
   my @keys = keys %h;
   for ($i=0;$i<@keys;$i++) {
@@ -456,7 +457,7 @@ sub generateoutput {
     }
     $t .= "</thead>";
     my %tarr;
-    my $line == 0;
+    my $line = 0;
     do {
       $addr = $obj->{address}+$slice*$stepsize;
       #### Prepare table header line
@@ -466,8 +467,10 @@ sub generateoutput {
       foreach my $b (sort keys %{$lastboards}) {
         my $ttmp = "";
         my $sl;
+        my $slicename = "";
+        $slicename = " - ".$obj->{sliceName}->{$slice} if (exists $obj->{sliceName}->{$slice});
         next unless defined $data->{$addr}->{$b} || !($obj->{mode} =~ /r/);
-        $sl = sprintf("<td class=\"slice\"><div>%i<span class=\"tooltip\"><b>$name.$slice</b> (0x%04x)</span></div>",$slice,$addr) if ($once != 1 && defined $obj->{repeat});
+        $sl = sprintf("<td class=\"slice\"><div>%i%s<span class=\"tooltip\"><b>$name.$slice</b> (0x%04x)</span></div>",$slice,$slicename,$addr) if ($once != 1 && defined $obj->{repeat});
 
         my $endslice = '';
            $endslice = ' class="endslice"' if (($once != 1 && defined $obj->{repeat} && $slice == 0) && $line++);
@@ -477,7 +480,7 @@ sub generateoutput {
           foreach my $c (@{$obj->{children}}) {
             my $fullc = $c;
             $fullc .= ".$slice" if ($once != 1 && defined $obj->{repeat});
-            my $cstr = sprintf("%s-0x%s-%s", $entity,$b,$fullc );
+            my $cstr = sprintf("%s-0x%s-%s", $entity,$b,$fullc);
             my $wr = 1 if $db->{$c}->{mode} =~ /w/;
             $ttmp .= FormatPretty($data->{$addr}->{$b},$db->{$c},$c,"td",($wr?"editable":""),$cstr,$addr,$b);
           }
index d386f6c67b0e5286db3f99183c58983070fce460..2a3a1053c8fcedae86377e93a1d20e5c2baf666e 100644 (file)
@@ -81,6 +81,7 @@
   <xs:attribute name="mode"         type="modetype"  />
   <xs:attribute name="purpose"      type="purposetype" />
   <xs:attribute name="start"        type="bittype" />
+  <xs:attribute name="stepsize"     type="xs:positiveInteger" />
   <xs:attribute name="size"         type="xs:positiveInteger" />
   <xs:attribute name="bits"         type="xs:positiveInteger" />
   <xs:attribute name="width"        type="xs:positiveInteger" />
     </xs:complexType>
   </xs:element>
 
-
+  <xs:element name="sliceName">
+    <xs:complexType>
+      <xs:simpleContent>
+        <xs:extension base="NonEmptyString">
+          <xs:attribute name="value" type="valuetype" />
+        </xs:extension>
+      </xs:simpleContent>
+    </xs:complexType>
+  </xs:element>
+  
   <xs:element name="group">
     <xs:complexType>
       <xs:sequence>
           <xs:element   ref="register"    maxOccurs="unbounded" />
           <xs:element   ref="memory"      maxOccurs="unbounded" />
           <xs:element   ref="fifo"        maxOccurs="unbounded" />
+          <xs:element   ref="sliceName"   maxOccurs="unbounded" />
         </xs:choice>
       </xs:sequence>
-
+  
       <xs:attribute ref="name" use="required" />
       <xs:attribute ref="address" />
       <!-- size of the containing elements (more groups or
            trbdatatypes), specified in 32bit long words
       -->
+      <xs:attribute ref="stepsize" />
       <xs:attribute ref="size" />
       <xs:attribute ref="purpose" />
       <xs:attribute ref="continuous" />
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element   ref="enumItem" />
       </xs:choice>
+
     </xs:sequence>
 
     <xs:attribute ref="name" use="required" />
       <xs:selector xpath="enumItem" />
       <xs:field xpath="@value" />
     </xs:unique>
+    <xs:unique name="UniqueSliceNames">
+      <xs:selector xpath="sliceName" />
+      <xs:field xpath="@value" />
+    </xs:unique>
   </xs:element>
 
   <xs:complexType name="basicTrbData">
       <xs:complexContent>
         <xs:extension base="basicTrbData">
           <xs:attribute ref="repeat" />
+  
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>
index f1296446e5aede80c8d636e1052048b625f0bf62..53e1bc0c34fe96f443ab75fd34be38a3853f612d 100644 (file)
@@ -19,6 +19,7 @@
                  database, so the default minOccurs=1 is used -->
             <xs:choice maxOccurs="unbounded">
               <xs:element ref="field" />
+              <xs:element   ref="sliceName" />
             </xs:choice>
           </xs:sequence>
         </xs:extension>
index d86a5d92ce9dabeb858ce3cf8d91a94a7f50cbd0..1a24faf1c06132a885d9d17dd0ebe7c4d58bfdb6 100644 (file)
@@ -49,6 +49,7 @@
       <xs:element ref="memory" />
       <xs:element ref="fifo" />
       <xs:element ref="field" />
+      <xs:element   ref="sliceName" />
     </xs:choice>
     <xs:attribute name="ref" type="nametype" use="required" />
   </xs:complexType>
index 6c6148ca44b3b1854321aeb5c7a4ff5e7bd7f011..73d4ac80dfc4a0e3f35ad7bbc028035445fe102d 100755 (executable)
@@ -222,6 +222,11 @@ sub MakeOrMergeDbItem {
   PrintMessage($n, "Warning: Found enumItems although not format=enum")
     if $warnings and defined $dbitem->{'enumItems'} and $n->getAttribute('format') ne 'enum';
 
+  foreach my $item ($n->findnodes('sliceName')) {
+    my $val = $item->getAttribute('value');
+    $dbitem->{'sliceName'}->{$val} = SanitizedContent($item);
+  }    
+    
   # is this node in something repeatable?
   my $repeats = $n->findnodes('ancestor::*[@repeat>1]');
   PrintMessage($n, "Warning: Found more than one ancestor with repeat attribute, taking first one.")