packages/web/353/php_top/focus.php

Go to the documentation of this file.
00001 <?php
00002 /*!*******************************************************************************
00003 *! FILE NAME  : focus.php
00004 *! DESCRIPTION: Controls FPGA focus calculation and visualization
00005 *! Copyright (C) 2008 Elphel, Inc
00006 *! -----------------------------------------------------------------------------**
00007 *!
00008 *!  This program is free software: you can redistribute it and/or modify
00009 *!  it under the terms of the GNU General Public License as published by
00010 *!  the Free Software Foundation, either version 3 of the License, or
00011 *!  (at your option) any later version.
00012 *!
00013 *!  This program is distributed in the hope that it will be useful,
00014 *!  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 *!  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 *!  GNU General Public License for more details.
00017 *!
00018 *!  You should have received a copy of the GNU General Public License
00019 *!  along with this program.  If not, see <http://www.gnu.org/licenses/>.
00020 *! -----------------------------------------------------------------------------**
00021 *!  $Log: focus.php,v $
00022 *!  Revision 1.1.1.1  2008/11/27 20:04:03  elphel
00023 *!
00024 *!
00025 *!  Revision 1.3  2008/02/01 06:57:15  elphel
00026 *!  Made focus.html read current camera settings at startup
00027 *!
00028 *!  Revision 1.2  2008/02/01 04:52:10  elphel
00029 *!  Fixed focus visualization code in FPGA and related software
00030 *!
00031 *!  Revision 1.1  2008/01/27 06:26:47  elphel
00032 *!  Added Web Focusing Helper
00033 *!
00034 */
00035 
00036 $focus_rdonly=array(
00037   "FOCUS_SHOW"=>0,
00038   "FOCUS_SHOW1"=>0,
00039   "FOCUS_VALUE"=>0,
00040   "FOCUS_LEFT"=>0,
00041   "FOCUS_WIDTH"=>0,
00042   "FOCUS_TOP"=>0,
00043   "FOCUS_HEIGHT"=>0,
00044   "FOCUS_FILTER"=>0
00045 );
00046 $filter=array(
00047  array(0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00048        0.1,  0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00049        0.25, 0.25, 0.5,  1.0,  1.0,  0.5,  0.25, 0,
00050        0.5,  0.5,  1.0,  1.0,  0.5,  0.25, 0.15, 0,
00051        1.0,  1.0,  1.0,  0.5,  0.25, 0.15, 0.1,  0,
00052        1.0,  1.0,  0.5,  0.25, 0.15, 0.1,  0,    0,
00053        0.5,  0.5,  0.25, 0.15, 0.1,  0,    0,    0,
00054        0,    0,    0,    0,    0,    0,    0,    0),
00055 
00056  array(0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00057        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00058        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00059        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00060        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00061        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00062        0,    0.1,  0.25, 0.5,  1.0,  1.0,  0.5,  0,
00063        0,    0,    0,    0,    0,    0,    0,    0),
00064 
00065  array(0,    0,    0,    0,    0,    0,    0,    0,
00066        0.1,  0.1,  0.1,  0.1,  0.1,  0.1,  0.1,  0.1,
00067        0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25,
00068        0.5,  0.5,  0.5,  0.5,  0.5,  0.5,  0.5,  0.5,
00069        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,
00070        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,
00071        0.5,  0.5,  0.5,  0.5,  0.5,  0.5,  0.5,  0.5,
00072          0,  0,    0,    0,    0,    0,    0,    0),
00073 
00074  array(0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00075        0,    0.1,  0.15, 0.4,  0.9,  1.0,  1.0,  0,
00076        0.1,  0.15, 0.4,  0.6,  1.0,  1.0,  1.0,  0,
00077        0.3,  0.4,  0.6,  1.0,  1.0,  1.0,  1.0,  0,
00078        0.8,  0.9,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00079        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00080        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00081        0,    0,    0,    0,    0,    0,    0,    0),
00082 
00083  array(0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00084        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00085        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00086        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00087        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00088        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00089        0,    0,    0.1,  0.3,  0.8,  1.0,  1.0,  0,
00090        0,    0,    0,    0,    0,    0,    0,    0),
00091 
00092  array(0,    0,    0,    0,    0,    0,    0,    0,
00093        0,    0,    0,    0,    0,    0,    0,    0,
00094        0.1,  0.1,  0.1,  0.1,  0.1,  0.1,  0.1,  0.1,
00095        0.3,  0.3,  0.3,  0.3,  0.3,  0.3,  0.3,  0.3,
00096        0.8,  0.8,  0.8,  0.8,  0.8,  0.8,  0.8,  0.8,
00097        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,
00098        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,
00099          0,  0,    0,    0,    0,    0,    0,    0),
00100 
00101  array(0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00102        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00103        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00104        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00105        0.2,  0.2,  0.2,  0.2,  0.2,  1.0,  1.0,  0,
00106        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00107        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00108        0,    0,    0,    0,    0,    0,    0,    0),
00109 
00110  array(0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00111        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00112        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00113        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00114        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00115        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00116        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00117        0,    0,    0,    0,    0,    0,    0,    0),
00118 
00119  array(0,    0,    0,    0,    0,    0,    0,    0,
00120        0,    0,    0,    0,    0,    0,    0,    0,
00121        0,    0,    0,    0,    0,    0,    0,    0,
00122        0,    0,    0,    0,    0,    0,    0,    0,
00123        0.2,  0.2,  0.2,  0.2,  0.2,  1.0,  1.0,  0,
00124        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00125        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00126        0,    0,    0,    0,    0,    0,    0,    0),
00127 
00128  array(0,    0,    0,    0,    0,    0.2,  1.0,  0,
00129        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00130        0,    0,    0,    0.2,  1.0,  1.0,  1.0,  0,
00131        0,    0,    0.2,  1.0,  1.0,  1.0,  1.0,  0,
00132        0,    0.2,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00133        0.2,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00134        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00135        0,    0,    0,    0,    0,    0,    0,    0),
00136 
00137  array(0,    0,    0,    0,    0,    0.2,  1.0,  0,
00138        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00139        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00140        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00141        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00142        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00143        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00144        0,    0,    0,    0,    0,    0,    0,    0),
00145 
00146  array(0,    0,    0,    0,    0,    0,    0,    0,
00147        0,    0,    0,    0,    0,    0,    0,    0,
00148        0,    0,    0,    0,    0,    0,    0,    0,
00149        0,    0,    0,    0,    0,    0,    0,    0,
00150        0,    0,    0,    0,    0,    0,    0,    0,
00151        0.2,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00152        1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00153        0,    0,    0,    0,    0,    0,    0,    0),
00154 
00155  array(0,    0,    0,    0,    0,    0,    0.2,  0,
00156        0,    0,    0,    0,    0,    0.2,  1.0,  0,
00157        0,    0,    0,    0,    0.2,  1.0,  1.0,  0,
00158        0,    0,    0,    0.2,  1.0,  1.0,  1.0,  0,
00159        0,    0,    0.2,  1.0,  1.0,  1.0,  1.0,  0,
00160        0,    0.2,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00161        0.2,  1.0,  1.0,  1.0,  1.0,  1.0,  1.0,  0,
00162        0,    0,    0,    0,    0,    0,    0,    0),
00163 
00164 
00165  array(0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00166        0,    0.1,  0.15, 0.4,  0.9,  1.0,  0.2,  0,
00167        0.1,  0.15, 0.4,  0.6,  1.0,  0.8,  0.2,  0,
00168        0.3,  0.4,  0.6,  1.0,  1.0,  0.5,  0.2,  0,
00169        0.8,  0.9,  1.0,  1.0,  1.0,  0.5,  0.2,  0,
00170        1.0,  1.0,  0.8,  0.5,  0.5,  0.2,  0.2,  0,
00171        0.2,  0.2,  0.2,  0.2,  0.2,  0.2,  0.1,  0,
00172        0,    0,    0,    0,    0,    0,    0,    0),
00173 
00174  array(0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00175        0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00176        0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00177        0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00178        0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00179        0,    0,    0.1,  0.3,  0.8,  1.0,  0.2,  0,
00180        0,    0,    0.1,  0.1,  0.1,  1.1,  0.1,  0,
00181        0,    0,    0,    0,    0,    0,    0,    0)
00182 );
00183 $scale=$_GET["SCALE"]*1.0;
00184 $nowait=false;
00185 
00186 if (!(($scale>0) && ($scale<100000))) $scale=4096;
00187 if (count($_GET) > 0 ) {
00188   $pars=array();
00189   foreach($_GET as $key=>$value) {
00190      if ($key=="SCALE") {
00191      } else if ($key=="TABLE") {
00192        $fn=$value+0;
00193        if ($fn<0) $fn=0;
00194        else if ($fn>14) $fn=14;
00195        for ($i=0; $i<64; $i++) {
00196         $filter[$fn][$i]=intval($scale*$filter[$fn][$i]);
00197         if ($filter[$fn][$i]>65535) $filter[$fn][$i]=65535;
00198        }
00199        $binary_tab="";
00200        for ($i=0; $i<64; $i++) $binary_tab.=pack("L",$filter[$fn][$i]);
00201        $tables_file  = fopen('/dev/fpga_tables', 'w');
00202        fseek ($tables_file, 0x2000+256*$fn) ; // start of filter table
00203        fwrite($tables_file, $binary_tab);
00204        fclose($tables_file);
00205        elphel_set_P_value(ELPHEL_FOCUS_FILTER,$fn);
00206        $pars["FOCUS_FILTER"]=$fn;
00207      } else if ($key=="NOWAIT") {
00208        $nowait=true;
00209      } else {
00210        $pars[$key]=$value+0;
00211      }
00212   }
00213 }
00215   if (count($pars) > 0 ) {
00216     elphel_set_P_arr ($pars);
00217     elphel_program_sensor (1); //nonstop
00218   }
00221   if (!$nowait) elphel_wait_frame();
00222   $state=elphel_get_P_arr ($focus_rdonly);
00223   $msg="<?xml version=\"1.0\"?>\n<focus>\n";
00224   foreach($state as $key=>$value) {
00225     $msg.=sprintf("<%s>%d</%s>\n",$key,$value,$key);
00226   }
00227   $msg.="</focus>\n";
00228   header("Content-Type: text/xml");
00229   header("Content-Length: ".strlen($msg)."\n");
00230   header("Pragma: no-cache\n");
00231   printf($msg);
00232 ?> 

Generated on Fri Nov 28 00:06:24 2008 for elphel by  doxygen 1.5.1