Commit 8861af0a authored by Andrey Filippov's avatar Andrey Filippov
Browse files

debugging for 10359 multiplexer

parent 1728e6c0
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -9,7 +9,8 @@ CONFS= autocampars.xml
SYSCONFDIR   = /etc
SYSCONFDIR   = /etc
CONFDIR      = $(SYSCONFDIR)/elphel393
CONFDIR      = $(SYSCONFDIR)/elphel393


PHP_SCRIPTS=camvars.php \
PHP_SCRIPTS=i2c.php \
            camvars.php \
            ccam.php \
            ccam.php \
            diag_utils.php \
            diag_utils.php \
            framepars.php \
            framepars.php \
+23 −5
Original line number Original line Diff line number Diff line
@@ -450,14 +450,32 @@ CAPTION;
							elphel_set_P_value ( $sensor_port, ELPHEL_VIGNET_C, 0x8000, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_VIGNET_C, 0x8000, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_VIGNET_SHL, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_VIGNET_SHL, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_SENSOR_RUN, 2, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_SENSOR_RUN, 2, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
//							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
							
							elphel_set_P_value ( $sensor_port, ELPHEL_DCM_HOR, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_DCM_VERT,1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_BIN_HOR, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							elphel_set_P_value ( $sensor_port, ELPHEL_BIN_VERT, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC );
							
							
							elphel_set_P_value ( $sensor_port, ELPHEL_DCM_HOR, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
//							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 5, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
							elphel_set_P_value ( $sensor_port, ELPHEL_DCM_VERT,1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
//							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 8, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
							elphel_set_P_value ( $sensor_port, ELPHEL_BIN_HOR, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 9, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
							elphel_set_P_value ( $sensor_port, ELPHEL_BIN_VERT, 1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
//							elphel_set_P_value ( $sensor_port, ELPHEL_COMPRESSOR_RUN, 2, $frame + 13, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // / run compressor
											
											
// Turn external trigger at 4fps
/*
							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG_PERIOD, 25000000, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); //0.25 s
							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG_BITLENGTH,    31, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); //0.32 usec
							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG_DELAY,         0, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // no delay
							elphel_set_P_value ( $sensor_port, ELPHEL_EXTERN_TIMESTAMP,   1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // use external timestamp when available
							elphel_set_P_value ( $sensor_port, ELPHEL_XMIT_TIMESTAMP,     1, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // transmit timestamps, not just pulse
							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG_OUT,     0x65555, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // 0x56555 - ext connector, 0x65555  - internal connector 0x66555 - both, 0x55555 - none
							/// change to "internal" (0x8000) when wired
							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG_CONDITION,     0, $frame + 4, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // 0x0 - from FPGA, 0x80000 - ext, 0x8000 - int, 0x88000 - any, 0x95555 - add ext, 0x59999 - add int
//							elphel_set_P_value ( $sensor_port, ELPHEL_TRIG,             0x4, $frame + 6, ELPHEL_CONST_FRAMEPAIR_FORCE_NEWPROC ); // 0 - free running, 4 - extrnal ERS, 5 - external GRR
 */
							$xml->addChild ( 'frame_after' . strval ( $sensor_port ),  elphel_get_frame($sensor_port));
							$xml->addChild ( 'frame_after' . strval ( $sensor_port ),  elphel_get_frame($sensor_port));
							
							fclose ( $framepars_file );
							fclose ( $framepars_file );
							$gamma = 57;
							$gamma = 57;
							$black = 10;
							$black = 10;
+355 −245
Original line number Original line Diff line number Diff line
@@ -70,13 +70,15 @@
*!
*!
*/
*/


// In NC393: buses 0..3 - sensors(old bus=0), 4 - aux (old bus=1)
// In NC393: buses 0..3 - sensors(old bus=0), 4 - aux (old bus=1), 5 - system i2c (TODO)
set_include_path(get_include_path() . PATH_SEPARATOR . '/www/pages/include');
set_include_path(get_include_path() . PATH_SEPARATOR . '/www/pages/include');
require 'i2c_include.php';
require 'i2c_include.php';


$width = 0;
$width = 0;
$bus = 0;
$bus = 0;
$adr = - 1;
$adr = - 1;
$class = "";
$sa7offs = 0;
$data = "";
$data = "";
$nopars = false;
$nopars = false;
$raw = 0;
$raw = 0;
@@ -95,7 +97,7 @@ require 'i2c_include.php';
$baud = "";
$baud = "";
$sync = "";
$sync = "";
$slowbus0 = - 1; // extra microseconds for SCL low and SCL high
$slowbus0 = - 1; // extra microseconds for SCL low and SCL high
  $EEPROM_bus0=false;
$EEPROM_bus0 = - 1;
$EEPROM_chn = 0; // / 0 - 10359/single 10338D, 1..3 - 10338D attached to the 10359
$EEPROM_chn = 0; // / 0 - 10359/single 10338D, 1..3 - 10338D attached to the 10359
$application = '';
$application = '';
$applicationMode = '';
$applicationMode = '';
@@ -116,7 +118,8 @@ require 'i2c_include.php';
			case "cmd" :
			case "cmd" :
				switch ($value) {
				switch ($value) {
					case "fromCMOS" :
					case "fromCMOS" :
          $rslt=i2c_getCMOSClock()?"Set system time error (probably CMOS clock is not set)":("System clock is set to ".exec("date"));
						// TODO: NC393: implement
						// $rslt=i2c_getCMOSClock()?"Set system time error (probably CMOS clock is not set)":("System clock is set to ".exec("date"));
						break;
						break;
					case "toCMOS" :
					case "toCMOS" :
						$rslt = i2c_setCMOSClock ();
						$rslt = i2c_setCMOSClock ();
@@ -125,6 +128,12 @@ require 'i2c_include.php';
					case "toEEPROM" :
					case "toEEPROM" :
					case "fromEEPROM0" :
					case "fromEEPROM0" :
					case "toEEPROM0" :
					case "toEEPROM0" :
					case "fromEEPROM1" :
					case "toEEPROM1" :
					case "fromEEPROM2" :
					case "toEEPROM2" :
					case "fromEEPROM3" :
					case "toEEPROM3" :
					case "ctl" :
					case "ctl" :
						$cmd = $value;
						$cmd = $value;
						break;
						break;
@@ -183,12 +192,16 @@ require 'i2c_include.php';
				$adr = $value + 0;
				$adr = $value + 0;
				break;
				break;
			case "wp" :
			case "wp" :
          if      ($value==0) $wprot=0;
				if ($value == 0)
          else if ($value==1) $wprot=1;
					$wprot = 0;
				else if ($value == 1)
					$wprot = 1;
				break;
				break;
			case "rp" :
			case "rp" :
          if      ($value==0) $rprot=0;
				if ($value == 0)
          else if ($value==1) $rprot=1;
					$rprot = 0;
				else if ($value == 1)
					$rprot = 1;
				break;
				break;
			case "data" :
			case "data" :
				$data = $value;
				$data = $value;
@@ -196,30 +209,53 @@ require 'i2c_include.php';
			case "length" :
			case "length" :
				$length = $value + 0;
				$length = $value + 0;
				break;
				break;
			case "class" :
				$class = $value;
				break;
			case "sa7offs" :
				$sa7offs = $value + 0;
				break;
		}
		}
	}
	}
}
}


switch ($cmd) {
switch ($cmd) {
	case "fromEEPROM0" :
	case "fromEEPROM0" :
        $EEPROM_bus0=true; // and fall below
	case "fromEEPROM1" :
	case "fromEEPROM2" :
	case "fromEEPROM3" :
		$EEPROM_bus0 = intval ( substr ( $cmd, 10 ) ); // and fall below
	case "fromEEPROM" :
	case "fromEEPROM" :
        $rslt=i2c_read256b(0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)), $EEPROM_bus0?0:1);
		if (($EEPROM_bus0 < 0) || ($EEPROM_bus0 > 3)) {
			// Not supported in NC393 - TODO: implement with bus=5 for 10389 board serial number
			break;
		}
		if (($EEPROM_chn < 0) || ($EEPROM_chn > 4)) {
			// Not supported in NC393
			break;
		}
		
		// print(i2c_read256b_sensor('sensor_eeprom',3,0));
		// $rslt=i2c_read256b(0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)), $EEPROM_bus0?0:1);
		$rslt = i2c_read256b ( 'sensor_eeprom', $EEPROM_bus0, 2 * $EEPROM_chn );
		$zero = strpos ( $rslt, chr ( 0 ) );
		$zero = strpos ( $rslt, chr ( 0 ) );
        if ($zero!==false) $rslt=substr($rslt,0, $zero);
		if ($zero !== false)
			$rslt = substr ( $rslt, 0, $zero );
		if (substr ( $rslt, 0, 5 ) == "<?xml") {
		if (substr ( $rslt, 0, 5 ) == "<?xml") {
			$xml = simplexml_load_string ( $rslt );
			$xml = simplexml_load_string ( $rslt );
			// $temperatureSA=0x30;
			// $temperatureSA=0x30;
			// $temperarureDelay=1.0; // extra microseconds for SCL low/high (nominal 4, but works with 1)
			// $temperarureDelay=1.0; // extra microseconds for SCL low/high (nominal 4, but works with 1)
			// try reading sensor temperature (if available)
			// try reading sensor temperature (if available)
          if ($EEPROM_bus0) {
			if ($EEPROM_bus0 >= 0) {
				$data = i2c_receive_sensor ( 'sensor_temp', $EEPROM_bus0, 5, 2 * $EEPROM_chn );
				$bus = 0;
				$bus = 0;
             $sa=$temperatureSA+($EEPROM_chn*($EEPROM_bus0?4:2));
				// $sa=$temperatureSA+($EEPROM_chn*($EEPROM_bus0?4:2));
             $data=i2c_receive_slow(16,$bus,$sa*128+5,0,$temperarureDelay);
				// $data=i2c_receive_slow(16,$bus,$sa*128+5,0,$temperarureDelay);
             if ($data>=0) { // <0 - i2c error - not implemented
				if (($data >= 0) && ($data!=0xffff)) { // <0 - i2c error - not implemented
					$data = (($data & 0x1000) ? - 1 : 1) * ($data & 0xfff) / 16.0;
					$data = (($data & 0x1000) ? - 1 : 1) * ($data & 0xfff) / 16.0;
					$xml->addChild ( 'sensorTemperature', $data );
					$xml->addChild ( 'sensorTemperature', $data );
               i2c_send_slow(8,$bus,$sa*128+8,3,0,$temperarureDelay); // set slow conversion, 1/16C resolution - for the next time
					// i2c_send_slow(8,$bus,$sa*128+8,3,0,$temperarureDelay); // set slow conversion, 1/16C resolution - for the next time
					i2c_send_sensor ( 'sensor_temp', $EEPROM_bus0, 8, 3, 2 * $EEPROM_chn );
				}
				}
			}
			}
			$xml_string = $xml->asXML ();
			$xml_string = $xml->asXML ();
@@ -232,38 +268,78 @@ require 'i2c_include.php';
		
		
		break;
		break;
	case "toEEPROM0" :
	case "toEEPROM0" :
        $EEPROM_bus0=true; // and fall below
	case "toEEPROM1" :
	case "toEEPROM2" :
	case "toEEPROM3" :
		$EEPROM_bus0 = intval ( substr ( $cmd, 8 ) ); // and fall below
	case "toEEPROM" :
	case "toEEPROM" :
		if (($EEPROM_bus0 < 0) || ($EEPROM_bus0 > 3)) {
			// Not supported in NC393 - TODO: implement with bus=5 for 10389 board serial number
			break;
		}
		if (($EEPROM_chn < 0) || ($EEPROM_chn > 4)) {
			// Not supported in NC393
			break;
		}
		
		if ($wprot >= 0) {
		if ($wprot >= 0) {
          i2c_setprot ($EEPROM_bus0?0:1,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),1,(1-$wprot));
			// not implemented in NC393?
			// i2c_setprot ($EEPROM_bus0?0:1,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),1,(1-$wprot));
		}
		}
		if ($data == "") {
		if ($data == "") {
          if ($model  === "") {$rslt="model  not specified"; break;}
			if ($model === "") {
          if ($rev    === "") {$rslt="rev    not specified"; break;}
				$rslt = "model  not specified";
          if ($serial === "") {$rslt="serial not specified"; break;}
				break;
          if ($time   === "") {$rslt="time   not specified"; break;}
			}
			if ($rev === "") {
				$rslt = "rev    not specified";
				break;
			}
			if ($serial === "") {
				$rslt = "serial not specified";
				break;
			}
			if ($time === "") {
				$rslt = "time   not specified";
				break;
			}
			$xml = new SimpleXMLElement ( "<?xml version='1.0' standalone='yes'?><board/>" );
			$xml = new SimpleXMLElement ( "<?xml version='1.0' standalone='yes'?><board/>" );
           if ($brand!='') $xml->addChild ('brand',$brand);
			if ($brand != '')
           if ($model!='') $xml->addChild ('model',$model);
				$xml->addChild ( 'brand', $brand );
           if ($rev!='') $xml->addChild ('rev',  $rev);
			if ($model != '')
           if ($serial!='') $xml->addChild ('serial',$serial);
				$xml->addChild ( 'model', $model );
           if ($time!='') $xml->addChild ('time',$time);
			if ($rev != '')
           if ($application!="") $xml->addChild ('app',$application);
				$xml->addChild ( 'rev', $rev );
           if ($application_mode!="") $xml->addChild ('mode',$application_mode);
			if ($serial != '')
           if ($sensor!='') $xml->addChild ('sensor',$sensor);
				$xml->addChild ( 'serial', $serial );
           if ($length!='') $xml->addChild ('len',$length);
			if ($time != '')
           if ($port!='') $xml->addChild ('port',$port);
				$xml->addChild ( 'time', $time );
           if ($part!='') $xml->addChild ('part',$part);
			if ($application != "")
           if ($baud!='') $xml->addChild ('baud',$baud);
				$xml->addChild ( 'app', $application );
           if ($sync!='') $xml->addChild ('sync',$sync);
			if ($application_mode != "")
				$xml->addChild ( 'mode', $application_mode );
			if ($sensor != '')
				$xml->addChild ( 'sensor', $sensor );
			if ($length != '')
				$xml->addChild ( 'len', $length );
			if ($port != '')
				$xml->addChild ( 'port', $port );
			if ($part != '')
				$xml->addChild ( 'part', $part );
			if ($baud != '')
				$xml->addChild ( 'baud', $baud );
			if ($sync != '')
				$xml->addChild ( 'sync', $sync );
			$data = $xml->asXML ();
			$data = $xml->asXML ();
		}
		}
		if (strlen ( $data ) > 256) {
		if (strlen ( $data ) > 256) {
			$rslt = "data too long - " . strlen ( $data ) . " bytes, only 256 are permitted";
			$rslt = "data too long - " . strlen ( $data ) . " bytes, only 256 are permitted";
			break;
			break;
		}
		}
        $rslt="written ".i2c_write256b($data,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),$EEPROM_bus0?0:1);
		// $rslt="written ".i2c_write256b($data,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),$EEPROM_bus0?0:1);
        i2c_setprot ($EEPROM_bus0?0:1,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),1,0);
		$rslt = "written " . i2c_write256b_sensor ( $data, 'sensor_eeprom', $EEPROM_bus0, 2 * $EEPROM_chn );
		
		// i2c_setprot ($EEPROM_bus0?0:1,0xa0+($EEPROM_chn*($EEPROM_bus0?4:2)),1,0);
		break;
		break;
	case "ctl" :
	case "ctl" :
		if ($bus === "") {
		if ($bus === "") {
@@ -278,13 +354,14 @@ require 'i2c_include.php';
		exit ( 0 );
		exit ( 0 );
}
}
if ($rslt == "") {
if ($rslt == "") {
	if ($bus > 3) {
		if (($adr >= 0) && (($width == 8) || ($width == 16))) {
		if (($adr >= 0) && (($width == 8) || ($width == 16))) {
			$slave = ($adr >> (($width == 16) ? 8 : 7)) & 0xfe;
			$slave = ($adr >> (($width == 16) ? 8 : 7)) & 0xfe;
			if ($wprot >= 0) {
			if ($wprot >= 0) {
       i2c_setprot ($bus,$slave,1,(1-$wprot));
				// i2c_setprot ($bus,$slave,1,(1-$wprot));
			}
			}
			if ($rprot >= 0) {
			if ($rprot >= 0) {
       i2c_setprot ($bus,$slave,0,(1-$rprot));
				// i2c_setprot ($bus,$slave,0,(1-$rprot));
			}
			}
			$msg .= "<width>" . $width . "</width>\n";
			$msg .= "<width>" . $width . "</width>\n";
			$msg .= "<bus>" . $bus . "</bus>\n";
			$msg .= "<bus>" . $bus . "</bus>\n";
@@ -299,19 +376,52 @@ require 'i2c_include.php';
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<wdata>" . $data . "</wdata>\n";
				$msg .= "<wdata>" . $data . "</wdata>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
      $rslt=($slowbus0>=0)? i2c_send_slow($width,$bus,$adr,$data,$raw,$slowbus0): i2c_send($width,$bus,$adr,$data,$raw);;
				$rslt = ($slowbus0 >= 0) ? i2c_send_slow ( $width, $bus, $adr, $data, $raw, $slowbus0 ) : i2c_send ( $width, $bus, $adr, $data, $raw );
      if (!($rslt>0)) $msg.="<error> \"i2c write error (".$rslt.")\"</error>\n";
				;
				if (! ($rslt > 0))
					$msg .= "<error> \"i2c write error (" . $rslt . ")\"</error>\n";
			} else { // !i2c read
			} else { // !i2c read
				$data = ($slowbus0 >= 0) ? i2c_receive_slow ( $width, $bus, $adr, $raw, $slowbus0 ) : i2c_receive ( $width, $bus, $adr, $raw );
				$data = ($slowbus0 >= 0) ? i2c_receive_slow ( $width, $bus, $adr, $raw, $slowbus0 ) : i2c_receive ( $width, $bus, $adr, $raw );
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<rdata>" . $data . "</rdata>\n";
				$msg .= "<rdata>" . $data . "</rdata>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
      if ($data==-1) $msg.="<error> \"i2c read error\"</error>\n";
				if ($data == - 1)
					$msg .= "<error> \"i2c read error\"</error>\n";
			}
			}
		} else {
		} else {
     if (!$nopars) $msg.="<error>\"Address (adr or raw) or width are not specified or are not positive.\"</error>\n";
			if (! $nopars)
				$msg .= "<error>\"Address (adr or raw) or width are not specified or are not positive.\"</error>\n";
			$msg .= "<usage>\"open URL: i2c.php?width&#061;www&amp;bus&#061;bbb&amp;adr&#061;aaa&amp;data&#061;ddd\"</usage>\n";
			$msg .= "<usage>\"open URL: i2c.php?width&#061;www&amp;bus&#061;bbb&amp;adr&#061;aaa&amp;data&#061;ddd\"</usage>\n";
		}
		}
	} else {
		if ((strlen($class)>0) || ($adr >= 0)) {
			$msg .= "<class>" . $class . "</class>\n";
			$msg .= "<bus>" . $bus . "</bus>\n";
			$msg .= "<sa7offs>" . sprintf ( "0x%x", $sa7offs) . "</sa7offs>\n";
			$msg .= "<adr>" . $adr . "</adr>\n";
			$msg .= "<hex_adr>" . sprintf ( "0x%x", $adr ) . "</hex_adr>\n";
			if ($data != "") { // ! i2c write
				$data += 0;
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<wdata>" . $data . "</wdata>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
				$rslt = i2c_send_sensor($class, $bus, $adr, $data, $sa7offs);
				if (! ($rslt > 0))
					$msg .= "<error> \"i2c write error (" . $rslt . ")\"</error>\n";
			} else { // !i2c read
			$data = i2c_receive_sensor($class, $bus, $adr, $sa7offs);
				$msg .= "<data>" . $data . "</data>\n";
				$msg .= "<rdata>" . $data . "</rdata>\n";
				$msg .= "<hex_data>" . sprintf ( "0x%x", $data ) . "</hex_data>\n";
				if ($data == - 1)
					$msg .= "<error> \"i2c read error\"</error>\n";
			}
		} else {
			if (! $nopars)
				$msg .= "<error>\"Device class name and/or register address are not specified address is not positive.\"</error>\n";
				$msg .= "<usage>\"open URL: i2c.php?class&#061;device_class_name&amp;bus&#061;sensor_port&amp;adr&#061;register_address&amp;data&#061;data_to_write&amp;sa7offs&#061;add_to_slave_address\"</usage>\n";
		}
	}
} else {
} else {
	$msg .= "<result>\"" . $rslt . "\"</result>\n";
	$msg .= "<result>\"" . $rslt . "\"</result>\n";
}
}
+3 −2
Original line number Original line Diff line number Diff line
@@ -247,7 +247,7 @@ function printDefaultPage() {
              ."&EXTERN_TIMESTAMP=1"       /// Use external timestamp when available
              ."&EXTERN_TIMESTAMP=1"       /// Use external timestamp when available
              ."&BITS=8"                   /// 8 bit data mode 
              ."&BITS=8"                   /// 8 bit data mode 
              ."&QUALITY=80"               /// 80 percent JPEG image quality
              ."&QUALITY=80"               /// 80 percent JPEG image quality
              ."&COLOR=1"                  /// regular color mode (not mono or JP4 flavors)
              ."&COLOR=0"                  /// regular color mode (not mono or JP4 flavors)
              ."&COLOR_SATURATION_BLUE=200"/// 2.0 (200% blue/green color saturation (to compensate for effect of non-unity gamma)
              ."&COLOR_SATURATION_BLUE=200"/// 2.0 (200% blue/green color saturation (to compensate for effect of non-unity gamma)
              ."&COLOR_SATURATION_RED=200" /// 2.0 (200% blue/green color saturation
              ."&COLOR_SATURATION_RED=200" /// 2.0 (200% blue/green color saturation
              ."&BAYER=0"                  /// No bayer shift
              ."&BAYER=0"                  /// No bayer shift
@@ -414,8 +414,9 @@ $url_ext_trigger=$url_port."embed=0.1&title=External+trigger+controls"
                                      /// bit 1 - enable(1) or disable(0) external trigger to stop clip
                                      /// bit 1 - enable(1) or disable(0) external trigger to stop clip
                                      /// bit 2 - async (snapshot, ext trigger) mode, 0 - continuous NOTE: Only this bit is used now !
                                      /// bit 2 - async (snapshot, ext trigger) mode, 0 - continuous NOTE: Only this bit is used now !
                                      /// bit 3 - no overlap,  single frames: program - acquire/compress same frame
                                      /// bit 3 - no overlap,  single frames: program - acquire/compress same frame
                                      /// bit 4 - Global reset release mode


              ."&TRIG_PERIOD=20000000"/// 0.2 sec @96MHz output sync period (32 bits, in pixel clocks)
              ."&TRIG_PERIOD=25000000"/// 0.25 sec @100MHz output sync period (32 bits, in pixel clocks)
                                      /// >=256 repetitive with specified period.
                                      /// >=256 repetitive with specified period.
                                      /// NOTE: Currently there is no verification that period is longer than sensor/compressor can handle
                                      /// NOTE: Currently there is no verification that period is longer than sensor/compressor can handle
              ."&TRIG_DELAY"          /// trigger delay, 32 bits in pixel clocks (needed when multiple cameras are synchronized)
              ."&TRIG_DELAY"          /// trigger delay, 32 bits in pixel clocks (needed when multiple cameras are synchronized)