Commit 340dc14b authored by Andrey Filippov's avatar Andrey Filippov

more debugging

parent 59fb3238
......@@ -27,6 +27,9 @@ install:
$(INSTALL) $(OWN) -m $(INSTDOCS) $(PHP_SCRIPTS) $(DESTDIR)/$(DOCUMENTROOT)
$(INSTALL) $(OWN) -d $(DESTDIR)/$(SYSCONFDIR)
$(INSTALL) $(OWN) -d $(DESTDIR)/$(CONFDIR)
$(INSTALL) $(OWN) -m $(INSTDOCS) $(CONFS) $(DESTDIR)/$(CONFDIR)
$(INSTALL) $(OWN) -m $(INSTDOCS) -T autocampars.xml $(DESTDIR)/$(CONFDIR)/autocampars0.xml
$(INSTALL) $(OWN) -m $(INSTDOCS) -T autocampars.xml $(DESTDIR)/$(CONFDIR)/autocampars1.xml
$(INSTALL) $(OWN) -m $(INSTDOCS) -T autocampars.xml $(DESTDIR)/$(CONFDIR)/autocampars2.xml
$(INSTALL) $(OWN) -m $(INSTDOCS) -T autocampars.xml $(DESTDIR)/$(CONFDIR)/autocampars3.xml
clean:
@echo "make clean in src"
......@@ -151,9 +151,9 @@
<FOCUS_HEIGHT>Focus WOI height (3 LSB will be zeroed as it should be multiple of 8x8 block height)</FOCUS_HEIGHT>
<FOCUS_TOTWIDTH>Total width of the image frame in pixels (readonly)</FOCUS_TOTWIDTH>
<FOCUS_FILTER>Select 8x8 filter used for the focus calculation (same order as quantization coefficients), 0..14</FOCUS_FILTER>
<TRIG_CONDITION>FPGA trigger sequencer trigger condition, 0 - internal, else dibits ((use<<1) | level) for each GPIO[11:0] pin). Example:0x200000 - input from external connector (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ), 0x20000 - input from internal (J13/J14 - http://wiki.elphel.com/index.php?title=10369#J13_-_SYNC_.28internal.2C_slave.29 )</TRIG_CONDITION>
<TRIG_CONDITION>FPGA trigger sequencer trigger condition, 0 - internal, else dibits ((use&lt;&lt;1) | level) for each GPIO[11:0] pin). Example:0x200000 - input from external connector (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ), 0x20000 - input from internal (J13/J14 - http://wiki.elphel.com/index.php?title=10369#J13_-_SYNC_.28internal.2C_slave.29 )</TRIG_CONDITION>
<TRIG_DELAY>FPGA trigger sequencer trigger delay, 32 bits in pixel clocks</TRIG_DELAY>
<TRIG_OUT>FPGA trigger sequencer trigger output to GPIO, dibits ((use << 1) | level_when_active). Bit 24 - test mode, when GPIO[11:10] are controlled by other internal signals. Example: 0x800000 - output to external (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ) connector, 0x80000 - to internal (J12 - http://wiki.elphel.com/index.php?title=10369#J12_-_SYNC_.28internal.2C_master.29 )</TRIG_OUT>
<TRIG_OUT>FPGA trigger sequencer trigger output to GPIO, dibits ((use &lt;&lt; 1) | level_when_active). Bit 24 - test mode, when GPIO[11:10] are controlled by other internal signals. Example: 0x800000 - output to external (J15 - http://wiki.elphel.com/index.php?title=10369#J15_-_SYNC_.28external.29 ) connector, 0x80000 - to internal (J12 - http://wiki.elphel.com/index.php?title=10369#J12_-_SYNC_.28internal.2C_master.29 )</TRIG_OUT>
<TRIG_PERIOD>FPGA trigger sequencer output sync period (32 bits, in pixel clocks). 0- stop. 1 - single, >=256 repetitive with specified period</TRIG_PERIOD>
<TRIG_BITLENGTH>Bit length minus 1 (in pixel clock cycles) when transmitting/receiving timestamps, without timestamps the output pulse width is 8*(TRIG_BITLENGTH+1). Legal values 2..255.</TRIG_BITLENGTH>
<EXTERN_TIMESTAMP>When 1 camera will use external timestamp (received over inter-camera synchronization cable) if it is available (no action when external syncronization is not connected), when 0 - local timestamp will be used</EXTERN_TIMESTAMP>
......@@ -163,10 +163,10 @@
<I2C_BYTES>Number of bytes in hardware i2c write (after slave addr) -0/1/2, set by the driver</I2C_BYTES>
<IRQ_SMART>IRQ mode (3 bits) to combine interrupts from the sensor frame sync and compressor when it is running: +1 - wait for VACT in early compressor_done, +2 - wait for dma fifo ready. Current software assumes both bits are set (value=3), set up by the driver". Currently bit 2 (+4) needs to be set to 1 when bit 0 is 0 - otherwise the latest frame will not have parameters copied to. So instead of IRQ_SMART=2 it should be IRQ_SMART=6</IRQ_SMART>
<OVERSIZE>0 - normal mode, 1 - ignore sensor dimensions, use absolute WOI_LEFT, WOI_TOP - needed to be able to read optically black pixels</OVERSIZE>
<GTAB_R>Identifies Gamma-table for the red color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_R can be referenced with composite names like GTAB_R__0824 for black level, GTAB_R__0816 for gamma in percents and GTAB_R__1600 for scale.</GTAB_R>
<GTAB_G>Identifies Gamma-table for the green color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_G can be referenced with composite names like GTAB_G__0824 for black level, GTAB_G__0816 for gamma in percents and GTAB_G__1600 for scale.</GTAB_G>
<GTAB_GB>Identifies Gamma-table for the second green (in blue line) color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_GB can be referenced with composite names like GTAB_GB__0824 for black level, GTAB_GB__0816 for gamma in percents and GTAB_GB__1600 for scale.</GTAB_GB>
<GTAB_B>Identifies Gamma-table for the blue color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level<<24) | (gamma_in_percent <<16) | (scale_times_0x1000 & 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_B can be referenced with composite names like GTAB_B__0824 for black level, GTAB_B__0816 for gamma in percents and GTAB_B__1600 for scale.</GTAB_B>
<GTAB_R>Identifies Gamma-table for the red color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level&lt;&lt;24) | (gamma_in_percent &lt;&lt;16) | (scale_times_0x1000 &amp; 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_R can be referenced with composite names like GTAB_R__0824 for black level, GTAB_R__0816 for gamma in percents and GTAB_R__1600 for scale.</GTAB_R>
<GTAB_G>Identifies Gamma-table for the green color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level&lt;&lt;24) | (gamma_in_percent &lt;&lt;16) | (scale_times_0x1000 &amp; 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_G can be referenced with composite names like GTAB_G__0824 for black level, GTAB_G__0816 for gamma in percents and GTAB_G__1600 for scale.</GTAB_G>
<GTAB_GB>Identifies Gamma-table for the second green (in blue line) color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level&lt;&lt;24) | (gamma_in_percent &lt;&lt;16) | (scale_times_0x1000 &amp; 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_GB can be referenced with composite names like GTAB_GB__0824 for black level, GTAB_GB__0816 for gamma in percents and GTAB_GB__1600 for scale.</GTAB_GB>
<GTAB_B>Identifies Gamma-table for the blue color. Camera can use either automatically generated tables using the provided black level and gamma (in percent) or arbitrary custom tables, in that case the top 16 bits are used as a 16-bit hash (user provided) to distinguish between different loaded tables. The lower 16 bits determine scale applied to the table (saturated to the full scale), so the value is (black_level&lt;&lt;24) | (gamma_in_percent &lt;&lt;16) | (scale_times_0x1000 &amp; 0xffff). In PHP (or PHP scripts) the individual fields of GTAB_B can be referenced with composite names like GTAB_B__0824 for black level, GTAB_B__0816 for gamma in percents and GTAB_B__1600 for scale.</GTAB_B>
<SDRAM_CHN20>Internal value used by the driver (memory controller register 0 channel 2)</SDRAM_CHN20>
<SDRAM_CHN21>Internal value used by the driver (memory controller register 1 channel 2)</SDRAM_CHN21>
<SDRAM_CHN22>Internal value used by the driver (memory controller register 2 channel 2)</SDRAM_CHN22>
......@@ -324,7 +324,7 @@
<DLY359_C2>Cable delay in sensor port 2 in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_C2>
<DLY359_C3>Cable delay in sensor port 3 in ps, signed. Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</DLY359_C3>
<MULTI_CFG>Additional configuration options for 10359 board. Bit 0 - use 10353 system clock, not the local one (as on 10359 rev 0). Persistent through sensor detection/initialization, should be set prior to it (in startup script or modified before running "/usr/html/autocampars.php --init" from the command line).</MULTI_CFG>
<DEBUG>Selectively enables debug outputs from differnt parts of the drivers. Can easily lock the system as some output goes from inside the interrupt service code or from the parts of the code where interrups are disabled. To us it safely you need to kill the klog daemon an redirect debug output to file with "printk_mod &" command. After that the output will be available as http://camera_ip/var/klog.txt". The printk_mod also kills restart restart daemon so any normally restarted applications (like lighttpd, php, imgsrv) will not be restarted automatically (G_ parameter, not frame-related)</DEBUG>
<DEBUG>Selectively enables debug outputs from differnt parts of the drivers. Can easily lock the system as some output goes from inside the interrupt service code or from the parts of the code where interrups are disabled. To us it safely you need to kill the klog daemon an redirect debug output to file with "printk_mod &amp;" command. After that the output will be available as http://camera_ip/var/klog.txt". The printk_mod also kills restart restart daemon so any normally restarted applications (like lighttpd, php, imgsrv) will not be restarted automatically (G_ parameter, not frame-related)</DEBUG>
<TEMPERATURE01>Temperature data from the 10359 board (if available, lower 16 bits) and the first sensor front end (high 16 bits). In each short word bit 12 (0x1000) is set for negative Celsius, lower 12 bits - absolute value of the Celsius, lower bit weight is 1/16 grad. C. This data is provided by the temperature daemon if it is enabled and running, data is embedded in the Exif MakerNote bytes 56-59</TEMPERATURE01>
<TEMPERATURE23>Temperature data from the second sensor front end (if available, lower 16 bits) and the third sensor front end (high 16 bits). In each short word bit 12 (0x1000) is set for negative Celsius, lower 12 bits - absolute value of the Celsius, lower bit weight is 1/16 grad. C. This data is provided by the temperature daemon if it is enabled and running, data is embedded in the Exif MakerNote bytes 56-59</TEMPERATURE23>
</descriptions>
......
......@@ -415,7 +415,7 @@ CAPTION;
// NC393 - added IRQs ON
// $xml->addChild ( 'irqon_result' . strval ( $sensor_port ), fseek ( $framepars_file, ELPHEL_LSEEK_INTERRUPT_ON, SEEK_END ) ); // #define LSEEK_INTERRUPT_ON 0x24 /// enable camera interrupts
// $xml->addChild ( 'compressor_irqon_result', fseek ( $framepars_file, ELPHEL_LSEEK_INTERRUPT_ON, SEEK_END ) ); // #define LSEEK_INTERRUPT_ON 0x24 /// enable camera interrupts
// Init turn on cmdseq interrupts, but not compressor ones
$xml->addChild ('DEBUG_01_'. strval ( $sensor_port ), $GLOBALS ['framepars_paths'] [$sensor_port]);
$xml->addChild ( 'LSEEK_FRAMEPARS_INIT' . strval ( $sensor_port ), fseek ( $framepars_file, ELPHEL_LSEEK_FRAMEPARS_INIT, SEEK_END ) );
$xml->addChild ( 'elphel_set_P_value' . strval ( $sensor_port ), elphel_set_P_value ( $sensor_port, ELPHEL_SENSOR, 0x00, 0, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ) ); // / will start detection
......
......@@ -162,7 +162,7 @@
exit (0);
}
if (array_key_exists ( 'sensor_port', $_GET )) {
$sensor_port = (myval($_GET ['sensor_port'])) & 3;
$GLOBALS [sensor_port] = (myval($_GET ['sensor_port'])) & 3;
}
$elp_const=get_defined_constants(true);
$elp_const=$elp_const["elphel"];
......@@ -192,7 +192,7 @@
} else { // return XML page with specified parameters values
addGammas($todo);
$names=array_merge(extractNames($global_params),extractNames($frame_params));
$currentParameters=elphel_get_P_arr($sensor_port, $names);
$currentParameters=elphel_get_P_arr($GLOBALS [sensor_port], $names);
applyPost($todo,true); // no final wait
$msg="<?xml version=\"1.0\"?>\n<parameters>\n";
foreach ($currentParameters as $key=>$value) {
......@@ -574,7 +574,7 @@ echo "</pre>";
function showLastImages($numImg,$imagesPerRow,$imgScale) {
$done= decodeTodo ($_GET['done']);
// $this_exif=elphel_get_exif_elphel(0);
$circbuf_pointers=elphel_get_circbuf_pointers($sensor_port,1);
$circbuf_pointers=elphel_get_circbuf_pointers($GLOBALS [sensor_port],1);
$framesAgo=0;
//echo "<pre>\n";
end($circbuf_pointers);
......@@ -602,12 +602,12 @@ function showLastImages($numImg,$imagesPerRow,$imgScale) {
$lastFrameIndex=key($circbuf_pointers);
for ($i=0; $i<=min(($numImg-1),$lastFrameIndex);$i++) {
$meta[$i]=array('circbuf_pointer'=>$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['circbuf_pointer'],
'meta'=>elphel_get_interframe_meta($sensor_port,$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['circbuf_pointer']),
'Exif'=>elphel_get_exif_elphel ($sensor_port,$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['exif_pointer']));
'meta'=>elphel_get_interframe_meta($GLOBALS [sensor_port],$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['circbuf_pointer']),
'Exif'=>elphel_get_exif_elphel ($GLOBALS [sensor_port],$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['exif_pointer']));
$lastFrameNumber=$circbuf_pointers[$lastFrameIndex-($numImg-1)+$i]['frame'];
}
$running=(elphel_get_P_value($sensor_port, ELPHEL_COMPRESSOR_RUN)==ELPHEL_CONST_COMPRESSOR_RUN_CONT) &&
(elphel_get_P_value($sensor_port, ELPHEL_SENSOR_RUN)==ELPHEL_CONST_SENSOR_RUN_CONT);
$running=(elphel_get_P_value($GLOBALS [sensor_port], ELPHEL_COMPRESSOR_RUN)==ELPHEL_CONST_COMPRESSOR_RUN_CONT) &&
(elphel_get_P_value($GLOBALS [sensor_port], ELPHEL_SENSOR_RUN)==ELPHEL_CONST_SENSOR_RUN_CONT);
$page_title=sprintf("%s %d images acquired to the circular buffer (circbuf). Acquisition is %s. Last frame is %d"
,$framesAgo?"$framesAgo frames (stored) ago":"Latest"
,$numImg
......@@ -751,10 +751,10 @@ function applyPost($todo,$noFinalWait=false) {
$waitingEnabled=false;
break;
}
if (elphel_get_frame($sensor_port)< 8) $waitingEnabled=false; /// or is "==0" enough?
if ($waitingEnabled && !$noFinalWait) elphel_skip_frames($sensor_port,1); // in GET mode, do not skip any frames
if (elphel_get_frame($GLOBALS [sensor_port])< 8) $waitingEnabled=false; /// or is "==0" enough?
if ($waitingEnabled && !$noFinalWait) elphel_skip_frames($GLOBALS [sensor_port],1); // in GET mode, do not skip any frames
/// store the current frame number as reference for all actions delays
$frame_zero=elphel_get_frame($sensor_port);
$frame_zero=elphel_get_frame($GLOBALS [sensor_port]);
$frame_since=0;
$frame_now=$frame_zero;
///Iterate through $todo array, programming the parameter changes
......@@ -764,23 +764,23 @@ function applyPost($todo,$noFinalWait=false) {
$frame_now=$frame_since+$frame_zero;
if ($waitingEnabled) {
if ($showSeqMode>0) {printf ("waiting frame %d (0x%x) ... ",$frame_now,$frame_now); ob_flush(); flush();}
elphel_wait_frame_abs($sensor_port, $frame_now);
elphel_wait_frame_abs($GLOBALS [sensor_port], $frame_now);
if ($showSeqMode>0) {printf ("done\n"); ob_flush(); flush();}
}
}
elphel_set_P_arr ($sensor_port, $pgmpars, $frame_zero+$since,ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC); /// Are these flags needed?
elphel_set_P_arr ($GLOBALS [sensor_port], $pgmpars, $frame_zero+$since,ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC); /// Are these flags needed?
}
if (!$noFinalWait) {
$frame_now=$since+$frame_zero+1; /// wait just 1 frame longer that the target of the last command in $todo
// echo "since=$since\n"; ob_flush(); flush();
if ($showSeqMode>0) {printf ("waiting frame %d (0x%x) ... ",$frame_now,$frame_now); ob_flush(); flush();}
if ($waitingEnabled) {
elphel_wait_frame_abs($sensor_port, $frame_now);
elphel_wait_frame_abs($GLOBALS [sensor_port], $frame_now);
} else {
$timeout_step= 100000; /// 0.1 sec
$timeout= 3000000; /// 3.0sec
for ($i=0 ; $i < $timeout; $i+=$timeout_step) {
if (elphel_get_frame($sensor_port)>=$frame_now) break;
if (elphel_get_frame($GLOBALS [sensor_port])>=$frame_now) break;
usleep($timeout_step);
}
}
......@@ -883,7 +883,7 @@ function addGammas($todo) {
$black=($gamma_black>>8) & 0xff;
$gamma=($gamma_black & 0xff)*0.01;
if ($showSeqMode>0) printf("<pre>Adding gamma table (gamma=%f, black level=%d)\n</pre>\n",$gamma,$black);
elphel_gamma_add ($gamma, $black); // does not need $sensor_port
elphel_gamma_add ($gamma, $black); // does not need $GLOBALS [sensor_port]
}
}
......@@ -930,11 +930,13 @@ function parseGetNames() {
$embedImageScale= $value;
if (!$embedImageScale) $embedImageScale=$defaultEmbedImageScale;
} else if ($key=='_time') {
} else if ($key=='sensor_port') {
} else {
/// locate $key among constants, accept numeric values also
$address=myval ($key);
if (($address==0) && (strlen($key)>3)) { /// suspect constant
$address=elphel_parse_P_name($key); // does not need $sensor_port,
$address=elphel_parse_P_name($key); // does not need $GLOBALS [sensor_port],
}
if ($address==0) {
$xml = new SimpleXMLElement("<?xml version='1.0'?><framepars/>");
......@@ -966,7 +968,7 @@ function parseGetNames() {
if ($isPost) {
$ahead=$posted_params[$index]['delay'];
}
if (elphel_is_global_par($address)) { // does not need $sensor_port,
if (elphel_is_global_par($address)) { // does not need $GLOBALS [sensor_port],
$global_params[$index++]=array("number"=>$address,
"name"=>$key,
......@@ -1000,7 +1002,7 @@ function readCurrentParameterValues() {
}
// echo "<pre>";
//print_r($pars);
$pars=elphel_get_P_arr($sensor_port, $pars); /// next2 frame/globals
$pars=elphel_get_P_arr($GLOBALS [sensor_port], $pars); /// next2 frame/globals
//print_r($pars);
foreach ($frame_params as $key=>$par) {
$frame_params[$key]['cur_value']=$pars[$par['name']];
......@@ -1208,7 +1210,7 @@ function printPage($encoded_todo) {
fclose($fd_circ);
// echo "circbuf_pointer=$circbuf_pointer";
if ($circbuf_pointer>=0) {
$meta=elphel_get_interframe_meta($sensor_port, $circbuf_pointer);
$meta=elphel_get_interframe_meta($GLOBALS [sensor_port], $circbuf_pointer);
$width= floor($meta['width']*$embedImageScale);
$height=floor($meta['height']*$embedImageScale);
//echo "width=$width, height=$height, embedImageScale=$embedImageScale<br />\n";
......@@ -1310,7 +1312,7 @@ function printPage($encoded_todo) {
function getDescription ($compositeName,$descriptions){
if (array_key_exists($compositeName,$descriptions)) return $descriptions[$compositeName];
/// try to find a parent name
$number=elphel_parse_P_name($compositeName); // does not need $sensor_port,
$number=elphel_parse_P_name($compositeName); // does not need $GLOBALS [sensor_port],
if (!$number) return "Unknown name";
$prefix="";
// is it a bit field?
......@@ -1321,7 +1323,7 @@ function getDescription ($compositeName,$descriptions){
$name=substr($compositeName,0,strlen($compositeName)-strlen('__XXYY'));
if ($width==1) $prefix.= sprintf("This is the bit %d of %s - ",$bit,$name);
else $prefix.= sprintf("This is a bit selection - bits %d through %d of %s - ",$bit,($bit+$width-1),$name);
$number=elphel_parse_P_name($name); // does not need $sensor_port,
$number=elphel_parse_P_name($name); // does not need $GLOBALS [sensor_port],
if (!$number) {
echo "Internal error in parsedit.php:Unknown name $name of $compositeName";
exit (1);
......@@ -1359,6 +1361,7 @@ function getParDescriptions($autocampars) {
break;
}
}
$path = str_replace("0.",strval($GLOBALS [sensor_port]).".",$path); // NC393: here it does not really matter
$xml = simplexml_load_file($path);
$descriptions=array();
foreach ($xml->descriptions->children() as $entry) {
......
......@@ -86,4 +86,5 @@ return mmap.mmap(f.fileno(), self.PAGE_SIZE, offset = page_addr)
"""
if __name__ == "__main__":
test_mmap(0)
for p in range(4):
test_mmap(p)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment