Commit 5534527a authored by Mikhail Karpenko's avatar Mikhail Karpenko
Browse files

Merge branch 'test'

 Conflicts resolved:
	imgsrv.c
parents 1fa52b3a a3eb9430
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -21,14 +21,14 @@
							<builder id="org.eclipse.cdt.build.core.settings.default.builder.580164057" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
							<builder id="org.eclipse.cdt.build.core.settings.default.builder.580164057" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
							<tool id="org.eclipse.cdt.build.core.settings.holder.libs.2129855326" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
							<tool id="org.eclipse.cdt.build.core.settings.holder.libs.2129855326" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
							<tool id="org.eclipse.cdt.build.core.settings.holder.745731625" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
							<tool id="org.eclipse.cdt.build.core.settings.holder.745731625" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1859993711" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath"/>
								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1859993711" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths"/>
								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.58661368" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.58661368" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
							</tool>
							</tool>
							<tool id="org.eclipse.cdt.build.core.settings.holder.1227611439" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
							<tool id="org.eclipse.cdt.build.core.settings.holder.1227611439" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1739426241" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
								<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1739426241" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
							</tool>
							</tool>
							<tool id="org.eclipse.cdt.build.core.settings.holder.176385540" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
							<tool id="org.eclipse.cdt.build.core.settings.holder.176385540" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1931881995" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
								<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1931881995" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/linux-elphel/linux/source/include/elphel}&quot;"/>
									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/linux-elphel/linux/source/include/elphel}&quot;"/>
									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/linux-elphel/sysroots/elphel393/usr/include}&quot;"/>
									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/linux-elphel/sysroots/elphel393/usr/include}&quot;"/>
								</option>
								</option>
+6 −2
Original line number Original line Diff line number Diff line
@@ -9,6 +9,9 @@
      dlen: length of a variable data field, stored in frame buffer
      dlen: length of a variable data field, stored in frame buffer
      ltag: Exif_tag+(group<<16). If specified, is used by the software, while the Exif output will still have tag
      ltag: Exif_tag+(group<<16). If specified, is used by the software, while the Exif output will still have tag
      SubSecTimeOriginal should go immediately after DateTimeOriginal (in the sequence numbers, not in the Exif templete)
      SubSecTimeOriginal should go immediately after DateTimeOriginal (in the sequence numbers, not in the Exif templete)
      
      Update, June 2016: PageNumber field is used as sensor port number, HostComputer field is replaced with CameraSerialNumber and
            FrameNumber field (which actually was IPTCNAA field) is replaced with standart ImageNumber field.
    -->
    -->
<Exif>
<Exif>
 <Image>
 <Image>
@@ -22,9 +25,10 @@
   <DateTime tag="0x0132" format="ASCII" count="20"  seq="1" dlen="20">
   <DateTime tag="0x0132" format="ASCII" count="20"  seq="1" dlen="20">
     <value>2001:06:21 12:00:00</value>
     <value>2001:06:21 12:00:00</value>
   </DateTime>
   </DateTime>
   <HostComputer tag="0x013c" format="ASCII" function="SERIAL"/>
   <CameraSerialNumber tag="0xc62f" format="ASCII" function="SERIAL"/>
   <FrameNumber  tag="0x83bb" format="LONG" count="1"  seq="25" dlen="4"/>
   <ImageNumber  tag="0x9211" format="LONG" count="1"  seq="25" dlen="4"/>
   <Orientation  tag="0x112"  format="SHORT" count="1"  seq="27" dlen="2"/>
   <Orientation  tag="0x112"  format="SHORT" count="1"  seq="27" dlen="2"/>
   <PageNumber   tag="0x129"  format="SHORT" count="1"  seq="28" dlen="2"/>
   <ExifTag tag="0x8769" format="LONG" function="EXIFTAG"/>
   <ExifTag tag="0x8769" format="LONG" function="EXIFTAG"/>
   <GPSTag tag="0x08825" format="LONG" function="GPSTAG"/>
   <GPSTag tag="0x08825" format="LONG" function="GPSTAG"/>
 </Image>
 </Image>
+24 −3
Original line number Original line Diff line number Diff line
@@ -2,9 +2,30 @@


PORT=2323
PORT=2323


if [ $1 == "nodebug" ]; then
    echo file circbuf.c -pfl > /sys/kernel/debug/dynamic_debug/control
    echo file sensor_common.c -pfl > /sys/kernel/debug/dynamic_debug/control
    echo file jpeghead.c -pfl > /sys/kernel/debug/dynamic_debug/control
	exit 0
elif [ $1 == "dump_state" ]; then
    echo "func circbuf_valid_ptr +p" > /sys/kernel/debug/dynamic_debug/control 
    echo "func get_image_length +p" > /sys/kernel/debug/dynamic_debug/control
    echo "func dump_interframe_params +p" > /sys/kernel/debug/dynamic_debug/control 
    echo "func dump_state +p" > /sys/kernel/debug/dynamic_debug/control 
	exit 0
elif [ $1 == "full_debug" ]; then
    echo file circbuf.c +pfl > /sys/kernel/debug/dynamic_debug/control
    echo file circbuf.c +pfl > /sys/kernel/debug/dynamic_debug/control
    echo file sensor_common.c +pfl > /sys/kernel/debug/dynamic_debug/control
    echo file sensor_common.c +pfl > /sys/kernel/debug/dynamic_debug/control
    echo file jpeghead.c +pfl > /sys/kernel/debug/dynamic_debug/control
    echo file jpeghead.c +pfl > /sys/kernel/debug/dynamic_debug/control
	exit 0
else
	# default, turn  off all
    echo file circbuf.c -pfl > /sys/kernel/debug/dynamic_debug/control
    echo file sensor_common.c -pfl > /sys/kernel/debug/dynamic_debug/control
    echo file jpeghead.c -pfl > /sys/kernel/debug/dynamic_debug/control
fi


 
 
if [ ! -e /dev/circbuf0 ]; then
if [ ! -e /dev/circbuf0 ]; then
	mknod /dev/circbuf0 c 135 32
	mknod /dev/circbuf0 c 135 32
+523 −515
Original line number Original line Diff line number Diff line
#!/usr/local/sbin/php -q
#!/usr/bin/env php
<?php
<?php
/*!
/*!
 *! FILE NAME  : exif.php
 *! FILE NAME  : exif.php
@@ -16,7 +16,7 @@
 *! exif=0         - print current Exif page (updated in real time)
 *! exif=0         - print current Exif page (updated in real time)
 *! exif=NNN       - print one of the Exif pages in the buffer (debug feature, current buffer pointer is not known here)
 *! exif=NNN       - print one of the Exif pages in the buffer (debug feature, current buffer pointer is not known here)
 *!
 *!
*! Copyright (C) 2007-2008 Elphel, Inc
 *! Copyright (C) 2007-2016 Elphel, Inc
 *! -----------------------------------------------------------------------------**
 *! -----------------------------------------------------------------------------**
 *!
 *!
 *!  This program is free software: you can redistribute it and/or modify
 *!  This program is free software: you can redistribute it and/or modify
@@ -90,6 +90,10 @@ $ExifDeviceMetadirFilename= "/dev/exif_metadir";
$ExifDeviceExifFilename=    "/dev/exif_exif";
$ExifDeviceExifFilename=    "/dev/exif_exif";
$ExifDeviceMetaFilename=    "/dev/exif_meta";
$ExifDeviceMetaFilename=    "/dev/exif_meta";


$DeviceSNFilename = "/sys/devices/soc0/elphel393-init/serial";
$DeviceRevisionFilename = "/sys/devices/soc0/elphel393-init/revision";
$DeviceBrand = "Elphel";
$DeviceModel = "Elphel393";


//! if called from the command line - accepts just one parameter - configuration file,
//! if called from the command line - accepts just one parameter - configuration file,
//! through CGI - accepts more parameters
//! through CGI - accepts more parameters
@@ -454,11 +458,12 @@ function addDirEntry($ifd_entry) {


function substitute_value($ifd_entry) {
function substitute_value($ifd_entry) {
	global $SUB_IFD_offset,$GPSInfo_offset;
	global $SUB_IFD_offset,$GPSInfo_offset;
	global $DeviceSNFilename, $DeviceRevisionFilename, $DeviceBrand, $DeviceModel;
	$attrs = $ifd_entry->attributes();
	$attrs = $ifd_entry->attributes();


	switch ($attrs["function"]) {
	switch ($attrs["function"]) {
	case "BRAND":
	case "BRAND":
      $ifd_entry->addChild ('value',exec("bootblocktool -x BRAND"));
		$ifd_entry->addChild('value', $DeviceBrand);
		break;
		break;
	case "MODEL":
	case "MODEL":
		if (file_exists ('/var/state/APPLICATION')) {
		if (file_exists ('/var/state/APPLICATION')) {
@@ -467,17 +472,20 @@ function substitute_value($ifd_entry) {
				$model.=' CHN'.file_get_contents('/var/state/APPLICATION_MODE');
				$model.=' CHN'.file_get_contents('/var/state/APPLICATION_MODE');
			}
			}
		} else {
		} else {
       $model= exec("bootblocktool -x MODEL").exec("bootblocktool -x REVISION");
			$model = $DeviceModel;
		}
		}
///      $ifd_entry->addChild ('value',exec("bootblocktool -x MODEL").exec("bootblocktool -x REVISION"));
		$ifd_entry->addChild ('value',$model);
		$ifd_entry->addChild ('value',$model);

		break;
		break;
	case "SOFTWARE":
	case "SOFTWARE":
		if (file_exists("/usr/html/docs/")) {
			$ifd_entry->addChild ('value',exec("ls /usr/html/docs/")); // filter
			$ifd_entry->addChild ('value',exec("ls /usr/html/docs/")); // filter
		}
		break;
		break;
	case "SERIAL":
	case "SERIAL":
      $s=exec("bootblocktool -x SERNO");
		$s = "";
		if (file_exists($DeviceSNFilename)) {
			$s = exec('cat '.$DeviceSNFilename);
		}
		$ifd_entry->addChild ('value',substr($s,0,2).":".substr($s,2,2).":".substr($s,4,2).":".substr($s,6,2).":".substr($s,8,2).":".substr($s,10,2));
		$ifd_entry->addChild ('value',substr($s,0,2).":".substr($s,2,2).":".substr($s,4,2).":".substr($s,6,2).":".substr($s,8,2).":".substr($s,10,2));
		break;
		break;
	case "EXIFTAG":
	case "EXIFTAG":