return @userinput_
}
+
+sub any2bin {
+
+ my $argument = $_[0];
+
+ # check if hex
+ if ($argument =~ m/^0[xX]([0-9a-fA-F]+)$/){
+ return "0b".hexStr2binStr($1);
+ }
+ # check if binary
+ if ($argument =~ m/^0[bB]([01]+)$/){
+ return "0b".stripLeadingZeros($1);
+ }
+ # check if decimal
+ if ($argument =~ m/^[0-9]+$/){
+ if ($argument > 4294967295) {
+ die "Decimal value too big for 32 bit unsigned integer! Use hex instead.";
+ }
+ return "0b".hexStr2binStr(sprintf("%X",$argument));
+ }
+
+ # if nothing matches
+ die "argument is not a recognized numeric value!\n";
+
+
+}
+
sub any2hex {
my $argument = $_[0];
# check if decimal
if ($argument =~ m/^[0-9]+$/){
if ($argument > 4294967295) {
- die "Decimal value too big vor 32 bit unsigned integer! Use hex instead.";
+ die "Decimal value too big for 32 bit unsigned integer! Use hex instead.";
}
return sprintf("0x%X",$argument);
}
#!/usr/bin/perl -w
#print "Content-type: text/html\n\n";
-
+#TODO
+# complete the documentation for the save command (base change and stuff)
+# clean up the save procedure!!!!!
my $me = "xmlOperation.pl";
if ( $q->param('action') eq 'save' ) {
parseConfigFile( $q->param('configFile') );
- save( $q->param('register'), $q->param('field'), $q->param('value') );
+
+ my $value = "";
+ if (defined($q->param('value'))) {$value = $q->param('value')}
+ save( $q->param('register'), $q->param('field'), $value, $q->param('base'));
writeConfigFile();
report_param();
exit;
report_param();
exit;
}
+
}
// reloadSetTree();
}
+function baseConversion(configFile,register,field,base){
+var file_ = encodeURIComponent(configFile);
+var register_ = encodeURIComponent(register);
+var field_ = encodeURIComponent(field);
+var base_ = encodeURIComponent(base);
+
+getdata("xmlOperation.pl?action=save&configFile="+file_+"®ister="+register_+"&field="+field_+"&base="+base_,"debug",false);
+// reloadSetTree();
+}
\ No newline at end of file
# make change permanent by calling writeConfigFile() hereafter.
+
sub save {
my $registerName = $_[0];
my $fieldName = $_[1];
my $xmlfile = $configFile;
- my $newValue = $_[2];
-
+ my $newValue;
+ $newValue = $_[2];
+ my $base = $_[3];
+
my $xmltree = $configTree;
+
+# unless( defined($newValue) ) {
+ if($newValue eq ""){
+ #no new number, use old number
+ $newValue=$xmltree->findvalue("/MAPS/register[\@name='" . $registerName . "']/field[\@name='".$fieldName."']/\@value");
+ }
+
+# if (defined($base)) {
+ if ($base eq "hex"){
+ $newValue = any2hex($newValue);
+ } elsif ($base eq "bin") {
+ $newValue = any2bin($newValue);
+ } elsif ($base eq "dec") {
+ $newValue = any2dec($newValue);
+ }
+# }
+
my $maps = $xmltree->findnodes("/MAPS")->shift();
my $register =
$xmltree->findnodes( "/MAPS/register[\@name='" . $registerName . "']" )
my $register = $_[1];
my $xmlfile = $_[0];
my $registerName = $register->findvalue("./\@name");
+ my $xmltree;
+
+ if($xmlfile eq $specFile) {
+ $xmltree = $specTree;
+ } else {
+ $xmltree = $configTree;
+ }
+
# my @fields = sort by_name $register->findnodes("./field");
my @maskFields = sort by_name $register->findnodes("./field");
for my $maskField (@maskFields) {
my $fieldName = $maskField->findvalue("./\@name");
-
- my $field = $configTree->findnodes("/MAPS/register[\@name='".
+ my $field = $xmltree->findnodes("/MAPS/register[\@name='".
$registerName."']/field[\@name='".$fieldName."']")->shift();
unless(defined($field)){
EOF
}
-
print '</td>';
+ print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","hex");$editorRefreshCommand'>%;
+ print "H";
+ print "</td>";
+# print "<td>";
+ print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","bin");$editorRefreshCommand'>%;
+ print "B";
+ print "</td>";
+# print "<td>";
+ print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","dec");$editorRefreshCommand'>%;
+ print "D";
+ print "</td>";
if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree
print <<EOF;
<td class='button_move' onclick='saveSettings("$configFileName","$registerName","$fieldName","$fieldValue");$editorRefreshCommand'> → </td>