use HTML::Entities;
require Common;
require xmlOperations;
+require xmlRendering;
+
use FindBin;
use lib "$FindBin::Bin/..";
use Environment;
-
our $setupDir = SETUPDIR;
our $confDir = CONFDIR;
our $specDir = SPECDIR;
# the file that tells me what fields should be printed in the quick edit area
# for each sensor
+
my $quickEditMaskFileName = "quickEditMask.xml";
-my $quickEditMaskFile = $confDir."/".$quickEditMaskFileName;
+setQuickEditMaskFile($confDir."/".$quickEditMaskFileName);
#### globals:
}
-sub parse_quickEditMaskFile {
- my $parser = XML::LibXML->new();
- unless( -e $quickEditMaskFile) {
- die "quickEditMaskFile $quickEditMaskFile does not exist!\n";
- }
- $quickEditMaskTree = $parser->parse_file($quickEditMaskFile);
-}
+# sub parse_quickEditMaskFile {
+# my $parser = XML::LibXML->new();
+# unless( -e $quickEditMaskFile) {
+# die "quickEditMaskFile $quickEditMaskFile does not exist!\n";
+# }
+# $quickEditMaskTree = $parser->parse_file($quickEditMaskFile);
+# }
my $argumentConfigFile = $_[0];
- unless(defined($quickEditMaskTree)) {
- parse_quickEditMaskFile();
- }
+
# print "<table>";
# my @fields = $quickEditMaskTree->findnodes("/MAPS/register/field");
integrateAncestry();
print "<div class='header'>quick editor</div>";
print "<div align=center>".getConfigFileName()."</div>";
+ setEditorRefreshCommand("reloadQuickEditArea(\"".getConfigFileName()."\",\"$quickEditAreaId\")");
print_registers(getConfigFile());
-
-sub print_registers {
-
- my $configFile = getConfigFile();
- my $specFile = getSpecFile();
- my $configFileName = getConfigFileName();
- my $specFileName = getSpecFileName();
- my $configTree = getConfigTree();
- my $specTree = getSpecTree();
-
- my $xmlfile = $_[0];
- my $xmltree;
+#
+# sub print_registers {
+#
+# my $configFile = getConfigFile();
+# my $specFile = getSpecFile();
+# my $configFileName = getConfigFileName();
+# my $specFileName = getSpecFileName();
+# my $configTree = getConfigTree();
+# my $specTree = getSpecTree();
+#
+# my $xmlfile = $_[0];
+# my $xmltree;
+# # if ( $xmlfile eq $configFile ) {
+# # $xmltree = $configTree;
+# # }
+# # elsif ( $xmlfile eq $specFile ) {
+# # $xmltree = $specTree;
+# # }
+# # else {
+# # die "xmlfile given to sub print_registers is unknown";
+# # }
+# my @registers = sort by_name $quickEditMaskTree->findnodes("/MAPS/register");
+# print "<table class=\"registers\"";
# if ( $xmlfile eq $configFile ) {
-# $xmltree = $configTree;
-# }
-# elsif ( $xmlfile eq $specFile ) {
-# $xmltree = $specTree;
+# print "id='configFileRegisters'";
# }
-# else {
-# die "xmlfile given to sub print_registers is unknown";
+# print ">";
+# for my $register (@registers) {
+#
+# my $registerName = $register->findvalue("./\@name");
+# my $registerId = $register->findvalue("./\@id");
+# my $registerSize = $register->findvalue("./\@size");
+# my $registerDescr = prepare_text(
+# $specTree->findvalue(
+# "/MAPS/register[\@name='" . $registerName . "']/description"
+# )
+# || "n/a"
+# );
+#
+# my $flistid = $configFile . "//" . $registerName;
+#
+# print "<tr>";
+#
+# print <<EOF;
+# <td onClick='toggleVis("$flistid",this)' class='regheader'> + </td>
+# EOF
+# print "<td title=\"$registerDescr\">$registerName</td>";
+#
+# #print "<td>$registerId</td>";
+#
+# # if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree
+# # print <<EOF;
+# # <td class='button_move' onclick='deleteSettings("$configFileName","$registerName","");reloadQuickEditArea("$configFileName","$quickEditAreaId")'> X </td>
+# # EOF
+# # }
+#
+#
+# print "</tr>";
+#
+# #print "<tr>";
+#
+# print '<tr id="' . $flistid . '" class="bitfield">';
+# print '<td></td>';
+# print '<td class="fieldcontainer">';
+# print_fields( $configFile, $register );
+# print "<td>";
+# print "</tr>";
# }
- my @registers = sort by_name $quickEditMaskTree->findnodes("/MAPS/register");
- print "<table class=\"registers\"";
- if ( $xmlfile eq $configFile ) {
- print "id='configFileRegisters'";
- }
- print ">";
- for my $register (@registers) {
-
- my $registerName = $register->findvalue("./\@name");
-
-# # if register not in the mask file, don't print!
-# unless( $quickEditMaskTree->findnodes("/MAPS/register[\@name='".
-# $registerName."']")) {
-# next;
+# print "</table>";
+# }
+#
+# sub print_fields {
+#
+# my $configFile = getConfigFile();
+# my $specFile = getSpecFile();
+# my $configFileName = getConfigFileName();
+# my $specFileName = getSpecFileName();
+# my $configTree = getConfigTree();
+# my $specTree = getSpecTree();
+#
+# my $register = $_[1];
+# my $xmlfile = $_[0];
+# my $registerName = $register->findvalue("./\@name");
+#
+# my @maskFields = sort by_name $register->findnodes("./field");
+# print "<table class=\"fields\">";
+# for my $maskField (@maskFields) {
+#
+# my $fieldName = $maskField->findvalue("./\@name");
+#
+# my $field = $configTree->findnodes("/MAPS/register[\@name='".
+# $registerName."']/field[\@name='".$fieldName."']")->shift();
+#
+#
+# unless(defined($field)){
+#
+# my $specField = $specTree->findnodes("/MAPS/register[\@name='".
+# $registerName."']/field[\@name='".$fieldName."']")->shift();
+# $field=$register->addNewChild("","field");
+# $field->setAttribute("name",$fieldName);
+# $field->setAttribute("value",$specField->findvalue("./\@defaultValue"));
+# $field->setAttribute( "isHeritageFrom", $specFileName );
# }
-
- my $registerId = $register->findvalue("./\@id");
- my $registerSize = $register->findvalue("./\@size");
- my $registerDescr = prepare_text(
- $specTree->findvalue(
- "/MAPS/register[\@name='" . $registerName . "']/description"
- )
- || "n/a"
- );
-
- my $flistid = $configFile . "//" . $registerName;
-
- print "<tr>";
-
- print <<EOF;
-<td onClick='toggleVis("$flistid",this)' class='regheader'> + </td>
-EOF
- print "<td title=\"$registerDescr\">$registerName</td>";
-
- #print "<td>$registerId</td>";
-
-# if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree
+#
+#
+#
+#
+#
+# my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || "";
+# # my $isHeritageFrom = "";
+# my $readOnlyFlag = 0;
+# my $fieldValue = $field->findvalue("./\@value");
+# my $fieldSize =
+# $specTree->findvalue( "/MAPS/register[\@name='"
+# . $registerName
+# . "']/field[\@name='"
+# . $fieldName
+# . "']/\@size" )
+# || "n/a";
+# my $fieldDescr = prepare_text(
+# $specTree->findvalue(
+# "/MAPS/register[\@name='"
+# . $registerName
+# . "']/field[\@name='"
+# . $fieldName
+# . "']/description"
+# )
+# || "n/a"
+# );
+#
+# my $maxFieldVal = 2**$fieldSize;
+# my $sizeInfo =
+# sprintf(
+# "Field contains %d bits, possible values: 0-%d (0x0-0x%x)\n\n",
+# $fieldSize, $maxFieldVal, $maxFieldVal );
+#
+# $fieldDescr = $sizeInfo . $fieldDescr;
+#
+# unless ( $isHeritageFrom eq "" ) {
+# $fieldDescr =
+# "Field was inherited from $isHeritageFrom\n\n" . $fieldDescr;
+# }
+#
+# my $fieldId = $xmlfile . "//" . $registerName . "/" . $fieldName;
+# if ( $fieldValue eq "" ) {
+# $fieldValue = $field->findvalue("./\@defaultValue");
+# $readOnlyFlag = 1;
+# }
+#
+# print "<tr class='fileLevel" . getFileLevel($isHeritageFrom) . "'>";
+# print "<td width=120 title=\"$fieldDescr\"";
+# print ">$fieldName</td>";
+# print "<td> = </td>";
+# if ($readOnlyFlag) {
# print <<EOF;
-# <td class='button_move' onclick='deleteSettings("$configFileName","$registerName","");reloadQuickEditArea("$configFileName","$quickEditAreaId")'> X </td>
+# <td width=120 align='right'>$fieldValue</td>
# EOF
# }
-
-
- print "</tr>";
-
- #print "<tr>";
-
- print '<tr id="' . $flistid . '" class="bitfield">';
- print '<td></td>';
- print '<td class="fieldcontainer">';
- print_fields( $configFile, $register );
- print "<td>";
- print "</tr>";
- }
- print "</table>";
-}
-
-sub print_fields {
-
- my $configFile = getConfigFile();
- my $specFile = getSpecFile();
- my $configFileName = getConfigFileName();
- my $specFileName = getSpecFileName();
- my $configTree = getConfigTree();
- my $specTree = getSpecTree();
-
- my $register = $_[1];
- my $xmlfile = $_[0];
- my $registerName = $register->findvalue("./\@name");
- my @maskFields = sort by_name $register->findnodes("./field");
- print "<table class=\"fields\">";
- for my $maskField (@maskFields) {
-
- my $fieldName = $maskField->findvalue("./\@name");
-
- my $field = $configTree->findnodes("/MAPS/register[\@name='".
- $registerName."']/field[\@name='".$fieldName."']")->shift();
-
-
- unless(defined($field)){
-
- my $specField = $specTree->findnodes("/MAPS/register[\@name='".
- $registerName."']/field[\@name='".$fieldName."']")->shift();
- $field=$register->addNewChild("","field");
- $field->setAttribute("name",$fieldName);
- $field->setAttribute("value",$specField->findvalue("./\@defaultValue"));
- $field->setAttribute( "isHeritageFrom", $specFileName );
- }
-
-
-
-
-# # if field not in the mask file, don't print!
-# unless( $quickEditMaskTree->findnodes("/MAPS/register[\@name='".
-# $registerName."']/field[\@name='".$fieldName."']")) {
-# next;
-# }
-
- my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || "";
-# my $isHeritageFrom = "";
- my $readOnlyFlag = 0;
- my $fieldValue = $field->findvalue("./\@value");
- my $fieldSize =
- $specTree->findvalue( "/MAPS/register[\@name='"
- . $registerName
- . "']/field[\@name='"
- . $fieldName
- . "']/\@size" )
- || "n/a";
- my $fieldDescr = prepare_text(
- $specTree->findvalue(
- "/MAPS/register[\@name='"
- . $registerName
- . "']/field[\@name='"
- . $fieldName
- . "']/description"
- )
- || "n/a"
- );
-
- my $maxFieldVal = 2**$fieldSize;
- my $sizeInfo =
- sprintf(
- "Field contains %d bits, possible values: 0-%d (0x0-0x%x)\n\n",
- $fieldSize, $maxFieldVal, $maxFieldVal );
-
- $fieldDescr = $sizeInfo . $fieldDescr;
-
- unless ( $isHeritageFrom eq "" ) {
- $fieldDescr =
- "Field was inherited from $isHeritageFrom\n\n" . $fieldDescr;
- }
-
- my $fieldId = $xmlfile . "//" . $registerName . "/" . $fieldName;
- if ( $fieldValue eq "" ) {
- $fieldValue = $field->findvalue("./\@defaultValue");
- $readOnlyFlag = 1;
- }
-
- print "<tr class='fileLevel" . getFileLevel($isHeritageFrom) . "'>";
- print "<td width=120 title=\"$fieldDescr\"";
- print ">$fieldName</td>";
- print "<td> = </td>";
- if ($readOnlyFlag) {
- print <<EOF;
- <td width=120 align='right'>$fieldValue</td>
-EOF
- }
- else {
- print <<EOF;
-<td align='right'>
-<input type='text' align='right' value='$fieldValue' onchange='saveSettings("$configFileName","$registerName","$fieldName",this.value);reloadQuickEditArea("$configFileName","$quickEditAreaId")' >
-</td>
-EOF
-
- }
-
- print '</td>';
-# if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree
+# else {
# print <<EOF;
-# <td class='button_move' onclick='saveSettings("$configFileName","$registerName","$fieldName","$fieldValue");'> → </td>
+# <td align='right'>
+# <input type='text' align='right' value='$fieldValue' onchange='saveSettings("$configFileName","$registerName","$fieldName",this.value);reloadQuickEditArea("$configFileName","$quickEditAreaId")' >
+# </td>
# EOF
+#
# }
- if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree
-
- if ( $isHeritageFrom eq "" )
- { # these are actual settings, not inherited!
- print <<EOF;
-<td class='button_move' onclick='deleteSettings("$configFileName","$registerName","$fieldName");reloadQuickEditArea("$configFileName","$quickEditAreaId")'> X </td>
-EOF
- }
- else {
- print "<td class='button_move_deac'> X </td>";
- }
- }
- print "</tr>";
- if ( ( any2dec($fieldValue) < 0 )
- or ( any2dec($fieldValue) > $maxFieldVal ) )
- {
- print
-"<tr class='fieldError'><td colspan = 4 align='center'>!!!Above value not in allowed range!!!</td></tr>"
- ; # just debug
- }
- }
- print "</table>";
-
-}
+#
+# print '</td>';
+# # if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree
+# # print <<EOF;
+# # <td class='button_move' onclick='saveSettings("$configFileName","$registerName","$fieldName","$fieldValue");'> → </td>
+# # EOF
+# # }
+# if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree
+#
+# if ( $isHeritageFrom eq "" )
+# { # these are actual settings, not inherited!
+# print <<EOF;
+# <td class='button_move' onclick='deleteSettings("$configFileName","$registerName","$fieldName");reloadQuickEditArea("$configFileName","$quickEditAreaId")'> X </td>
+# EOF
+# }
+# else {
+# print "<td class='button_move_deac'> X </td>";
+# }
+# }
+# print "</tr>";
+# if ( ( any2dec($fieldValue) < 0 )
+# or ( any2dec($fieldValue) > $maxFieldVal ) )
+# {
+# print
+# "<tr class='fieldError'><td colspan = 4 align='center'>!!!Above value not in allowed range!!!</td></tr>"
+# ; # just debug
+# }
+# }
+# print "</table>";
+#
+# }
sub report_param {
print br,br;
#!/usr/bin/perl -w
+
+
+my $quickEditMaskTree;
+my $quickEditMaskFile;
+
+my $editorRefreshCommand;
+
+sub setEditorRefreshCommand {
+ $editorRefreshCommand=$_[0];
+}
+
+sub setQuickEditMaskFile {
+ $quickEditMaskFile=$_[0];
+ parse_quickEditMaskFile();
+}
+
+sub parse_quickEditMaskFile {
+ my $parser = XML::LibXML->new();
+ unless( -e $quickEditMaskFile) {
+ die "quickEditMaskFile $quickEditMaskFile does not exist!\n";
+ }
+ $quickEditMaskTree = $parser->parse_file($quickEditMaskFile);
+}
+
sub print_registers {
my $configFile = getConfigFile();
my $xmlfile = $_[0];
my $xmltree;
if ( $xmlfile eq $configFile ) {
- $xmltree = $configTree;
+ unless(defined($quickEditMaskTree)){
+ $xmltree = $configTree;
+ } else {
+ $xmltree = $quickEditMaskTree;
+ }
}
elsif ( $xmlfile eq $specFile ) {
$xmltree = $specTree;
if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree
print <<EOF;
-<td class='button_move' onclick='deleteSettings(selectedConfigFile(),"$registerName","");reloadSetTree()'> X </td>
+<td class='button_move' onclick='deleteSettings("$configFileName","$registerName","");$editorRefreshCommand'> X </td>
EOF
}
if ( $xmlfile eq $specFile ) { # we are printing the Settings Tree
print <<EOF;
-<td class='button_move' onclick='copyDefaultRegister(selectedConfigFile(),"$registerName");reloadSetTree()'> → </td>
+<td class='button_move' onclick='copyDefaultRegister("$configFileName","$registerName");$editorRefreshCommand'> → </td>
EOF
}
my $register = $_[1];
my $xmlfile = $_[0];
my $registerName = $register->findvalue("./\@name");
- my @fields = sort by_name $register->findnodes("./field");
+
+# my @fields = sort by_name $register->findnodes("./field");
+ my @maskFields = sort by_name $register->findnodes("./field");
print "<table class=\"fields\">";
- for my $field (@fields) {
- my $fieldName = $field->findvalue("./\@name");
+# for my $field (@fields) {
+ for my $maskField (@maskFields) {
+
+ my $fieldName = $maskField->findvalue("./\@name");
+
+ my $field = $configTree->findnodes("/MAPS/register[\@name='".
+ $registerName."']/field[\@name='".$fieldName."']")->shift();
+
+ unless(defined($field)){
+ # check if the mask field is defined in the config tree
+ # if not get the default value from the specification
+ # this feature should be only important for the testgui,
+ # not for the JTAG editor, because there
+ # the quickEditMaskTree == configTree
+ my $specField = $specTree->findnodes("/MAPS/register[\@name='".
+ $registerName."']/field[\@name='".$fieldName."']")->shift();
+ $field=$register->addNewChild("","field");
+ $field->setAttribute("name",$fieldName);
+ $field->setAttribute("value",$specField->findvalue("./\@defaultValue"));
+ $field->setAttribute( "isHeritageFrom", $specFileName );
+ }
+
+
+
+# my $fieldName = $field->findvalue("./\@name");
my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || "";
my $readOnlyFlag = 0;
my $fieldValue = $field->findvalue("./\@value");
else {
print <<EOF;
<td align='right'>
-<input type='text' align='right' value='$fieldValue' onchange='saveSettings(selectedConfigFile(),"$registerName","$fieldName",this.value);reloadSetTree()' >
+<input type='text' align='right' value='$fieldValue' onchange='saveSettings("$configFileName","$registerName","$fieldName",this.value);$editorRefreshCommand' >
</td>
EOF
print '</td>';
if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree
print <<EOF;
-<td class='button_move' onclick='saveSettings(selectedConfigFile(),"$registerName","$fieldName","$fieldValue");reloadSetTree()'> → </td>
+<td class='button_move' onclick='saveSettings("$configFileName","$registerName","$fieldName","$fieldValue");$editorRefreshCommand'> → </td>
EOF
}
if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree
if ( $isHeritageFrom eq "" )
{ # these are actual settings, not inherited!
print <<EOF;
-<td class='button_move' onclick='deleteSettings(selectedConfigFile(),"$registerName","$fieldName");reloadSetTree()'> X </td>
+<td class='button_move' onclick='deleteSettings("$configFileName","$registerName","$fieldName");$editorRefreshCommand'> X </td>
EOF
}
else {
1;
__END__
+