background-image:url("edit.png");
background-repeat:no-repeat;
background-position:fixed;
- padding-left:16px;
+ padding-left:8px;
}
.rate {
}
table.queryresult td.slice, table.queryresult th.slice {
- text-align:center;
+ text-align:left;
background:#eee;
}
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}) {
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++) {
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++) {
}
$t .= "</thead>";
my %tarr;
- my $line == 0;
+ my $line = 0;
do {
$addr = $obj->{address}+$slice*$stepsize;
#### Prepare table header line
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++);
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);
}
<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>
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>
<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>
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.")