Commit bd363b03 authored by Oleg Dzhimiev's avatar Oleg Dzhimiev

cherry-picked sys & fpga time updating from warrior branch

parent 92ec9d48
......@@ -23,78 +23,73 @@
<!doctype html>
<html lang="en">
<head>
<title>Elphel 393</title>
<meta charset="utf-8"/>
<script>
// for LibreJS:
/**
* @file index.php
* @copyright Copyright (C) 2017 Elphel Inc.
* @author -
*
* @licstart The following is the entire license notice for the
* JavaScript code in this page.
*
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
*
* @licend The above is the entire license notice
* for the JavaScript code in this page.
*/
</script>
<script type='text/javascript' src='js/jquery-3.1.1.js'></script>
<!--<script type='text/javascript' src='../js/bootstrap/js/bootstrap.js'></script>-->
<script src="js/elphel.js"></script>
<script src="js/jcanvas.js"></script>
<script src="js/UTIF.js"></script>
<script src="js/exif.js"></script>
<script src="js/jquery-jp4.js"></script>
<link rel="stylesheet" href="js/bootstrap/css/bootstrap.css">
<style>
.port_window{
padding: 5px;
background: rgba(240,240,240,0.5);
border-radius: 2px;
}
.img_window{
border: 1px solid rgba(210,210,210,1);
}
.port_preview{
width:300px;
min-height:224px;
overflow: auto;
}
table td {
padding-right:10px;
}
.btn.active:focus, .btn:focus{
outline:none;
}
.btn-toggle{
padding: 1px 0px;
}
</style>
<title>Elphel 393</title>
<meta charset="utf-8"/>
<script>
// for LibreJS:
/**
* @file index.php
* @copyright Copyright (C) 2017 Elphel Inc.
* @author -
*
* @licstart The following is the entire license notice for the
* JavaScript code in this page.
*
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
*
* @licend The above is the entire license notice
* for the JavaScript code in this page.
*/
</script>
<script type='text/javascript' src='js/jquery-3.1.1.js'></script>
<!--<script type='text/javascript' src='../js/bootstrap/js/bootstrap.js'></script>-->
<script src="js/elphel.js"></script>
<script src="js/jcanvas.js"></script>
<script src="js/UTIF.js"></script>
<script src="js/exif.js"></script>
<script src="js/jquery-jp4.js"></script>
<link rel="stylesheet" href="js/bootstrap/css/bootstrap.css">
<style>
.port_window{
padding: 5px;
background: rgba(240,240,240,0.5);
border-radius: 2px;
}
.img_window{
border: 1px solid rgba(210,210,210,1);
}
.port_preview{
width:300px;
min-height:224px;
overflow: auto;
}
table td {
padding-right:10px;
}
.btn.active:focus, .btn:focus{
outline:none;
}
.btn-toggle{
padding: 1px 0px;
}
</style>
</head>
<body>
<div style='padding:10px'>
<?php
<?php
include "include/elphel_functions_include.php";
......@@ -135,135 +130,147 @@
echo "Camera Control Interface<ul>$port_links</ul>\n";
?>
<table>
<tr id="toggle_awb" title='Auto White Balance'>
<td>
Auto WB:
</td>
<td>
<div id="toggle_awb" class="btn-group btn-toggle">
<button class="btn btn-xs <?php echo ($awb_on)?"btn-success active":"btn-default";?>">ON</button>
<button class="btn btn-xs <?php echo (!$awb_on)?"btn-danger active":"btn-default";?>">OFF</button>
</div>
</td>
</tr>
<tr id="toggle_aexp" title='Auto Exposure'>
<td>
Auto Exposure:
</td>
<td>
<div id="toggle_aexp" class="btn-group btn-toggle">
<button class="btn btn-xs <?php echo ($aexp_on)?"btn-success active":"btn-default";?>">ON</button>
<button class="btn btn-xs <?php echo (!$aexp_on)?"btn-danger active":"btn-default";?>">OFF</button>
</div>
</td>
</tr>
</table>
<br />
<a href="autocampars.php" title="autocampars.php">Parameter Editor</a><br />
<br />
<a href="camogmgui.php" title="Store video/images to the camera's storage">Recorder</a><br />
<a href="snapshot/" title="Take a snapshot and download from the camera">Snapshot</a><br />
<a href="raw.php" title="Take a snapshot and download raw pixel data from the camera">Snapshot (raw image data)</a><br />
<a href="photofinish/" title="Scanline mode demo">Photo finish demo</a><br />
<br />
<a href="hwmon.html" title="hwmon.html">Temperature monitor</a><br />
<a href="update_software.html" title="Update NAND flash">Update firmware</a><br />
<br />
<a title="docs" href="http://wiki.elphel.com/index.php?title=Tmp_manual">User manual</a><br />
<a href="jp4-viewer/?width=1200&quality=1" title="Preview jp4 images (drag and drop from PC)">JP4 Viewer</a><br />
<a href="/diagnostics/index.html" title="Inspect camera system info">System info</a><br />
<a href="/test_sensors.php" title="Switch to test pattern and check md5sums">Test sensors</a><br />
<a href="/debugfs.html" title="Linux Kernel Dynamic Debug helper interface (debug device drivers)">DebugFS</a><br />
?>
<table>
<tr id="toggle_awb" title='Auto White Balance'>
<td>
Auto WB:
</td>
<td>
<div id="toggle_awb" class="btn-group btn-toggle">
<button class="btn btn-xs <?php echo ($awb_on)?"btn-success active":"btn-default";?>">ON</button>
<button class="btn btn-xs <?php echo (!$awb_on)?"btn-danger active":"btn-default";?>">OFF</button>
</div>
</td>
</tr>
<tr id="toggle_aexp" title='Auto Exposure'>
<td>
Auto Exposure:
</td>
<td>
<div id="toggle_aexp" class="btn-group btn-toggle">
<button class="btn btn-xs <?php echo ($aexp_on)?"btn-success active":"btn-default";?>">ON</button>
<button class="btn btn-xs <?php echo (!$aexp_on)?"btn-danger active":"btn-default";?>">OFF</button>
</div>
</td>
</tr>
</table>
<br />
<a href="autocampars.php" title="autocampars.php">Parameter Editor</a><br />
<br />
<a href="camogmgui.php" title="Store video/images to the camera's storage">Recorder</a><br />
<a href="snapshot/" title="Take a snapshot and download from the camera">Snapshot</a><br />
<a href="raw.php" title="Take a snapshot and download raw pixel data from the camera">Snapshot (raw image data)</a><br />
<a href="photofinish/" title="Scanline mode demo">Photo finish demo</a><br />
<br />
<a href="hwmon.html" title="hwmon.html">Temperature monitor</a><br />
<a href="update_software.html" title="Update NAND flash">Update firmware</a><br />
<br />
<a title="docs" href="http://wiki.elphel.com/index.php?title=Tmp_manual">User manual</a><br />
<a href="jp4-viewer/?width=1200&quality=1" title="Preview jp4 images (drag and drop from PC)">JP4 Viewer</a><br />
<a href="/diagnostics/index.html" title="Inspect camera system info">System info</a><br />
<a href="/test_sensors.php" title="Switch to test pattern and check md5sums">Test sensors</a><br />
<a href="/debugfs.html" title="Linux Kernel Dynamic Debug helper interface (debug device drivers)">DebugFS</a><br />
</div>
<script>
var jp4_previews_enable = true;
$(function(){
init_awb_toggle();
init_aexp_toggle();
init_jp4_previews();
});
function init_jp4_previews(){
$('.port_preview').each(function(){
index = parseInt($(this).attr("index"));
if (jp4_previews_enable) {
$(this).jp4({ip:location.host,port:2323+index,width:300,fast:true,lowres:4});
}else{
$(this).html("<img width='300' src='http://"+location.host+":"+(2323+index)+"/img' />");
var jp4_previews_enable = true;
$(function(){
check_time();
init_awb_toggle();
init_aexp_toggle();
init_jp4_previews();
});
async function check_time(){
$.ajax({
url: "utils.php?cmd=time&ts="+Date.now(),
success: (res)=>{
console.log(res);
}
});
}
});
}
function init_awb_toggle(){
$('#toggle_awb').click(function() {
function init_jp4_previews(){
$('.port_preview').each(function(){
index = parseInt($(this).attr("index"));
if (jp4_previews_enable) {
$(this).jp4({ip:location.host,port:2323+index,width:300,fast:true,lowres:4});
//$(this).jp4({src:"http://"+location.host+":"+(2323+index)+"/img",width:300,fast:true,lowres:4});
}else{
$(this).html("<img width='300' src='http://"+location.host+":"+(2323+index)+"/img' />");
}
});
}
if ($(this).find('.btn.active').html()=="ON"){
$(this).find('.btn.active').toggleClass('btn-success');
}else{
$(this).find('.btn.active').toggleClass('btn-danger');
}
function init_awb_toggle(){
$('#toggle_awb').click(function() {
// toggle active
$(this).find('.btn').toggleClass('active');
if ($(this).find('.btn.active').html()=="ON"){
$(this).find('.btn.active').toggleClass('btn-success');
}else{
$(this).find('.btn.active').toggleClass('btn-danger');
}
if ($(this).find('.btn.active').html()=="ON"){
wb_en = 1;
$(this).find('.btn.active').toggleClass('btn-success');
}else{
wb_en = 0;
$(this).find('.btn.active').toggleClass('btn-danger');
}
// toggle active
$(this).find('.btn').toggleClass('active');
$(this).find('.btn').toggleClass('btn-default');
if ($(this).find('.btn.active').html()=="ON"){
wb_en = 1;
$(this).find('.btn.active').toggleClass('btn-success');
}else{
wb_en = 0;
$(this).find('.btn.active').toggleClass('btn-danger');
}
url = "parsedit.php?immediate&sensor_port=<?php echo $master_port;?>&WB_EN="+wb_en+"&*WB_EN=0xf";
$(this).find('.btn').toggleClass('btn-default');
$.ajax({
url: url,
success: function(){
console.log("awb "+(wb_en?"on":"off"));
}
});
url = "parsedit.php?immediate&sensor_port=<?php echo $master_port;?>&WB_EN="+wb_en+"&*WB_EN=0xf";
});
}
$.ajax({
url: url,
success: function(){
console.log("awb "+(wb_en?"on":"off"));
}
});
});
}
function init_aexp_toggle(){
$('#toggle_aexp').click(function() {
$('#toggle_aexp').click(function() {
if ($(this).find('.btn.active').html()=="ON"){
$(this).find('.btn.active').toggleClass('btn-success');
}else{
$(this).find('.btn.active').toggleClass('btn-danger');
}
if ($(this).find('.btn.active').html()=="ON"){
$(this).find('.btn.active').toggleClass('btn-success');
}else{
$(this).find('.btn.active').toggleClass('btn-danger');
}
// toggle active
$(this).find('.btn').toggleClass('active');
// toggle active
$(this).find('.btn').toggleClass('active');
if ($(this).find('.btn.active').html()=="ON"){
aexp_en = 1;
$(this).find('.btn.active').toggleClass('btn-success');
}else{
aexp_en = 0;
$(this).find('.btn.active').toggleClass('btn-danger');
}
if ($(this).find('.btn.active').html()=="ON"){
aexp_en = 1;
$(this).find('.btn.active').toggleClass('btn-success');
}else{
aexp_en = 0;
$(this).find('.btn.active').toggleClass('btn-danger');
}
$(this).find('.btn').toggleClass('btn-default');
$(this).find('.btn').toggleClass('btn-default');
url = "parsedit.php?immediate&sensor_port=<?php echo $master_port;?>&AUTOEXP_ON="+aexp_en+"&*AUTOEXP_ON=0xf";
url = "parsedit.php?immediate&sensor_port=<?php echo $master_port;?>&AUTOEXP_ON="+aexp_en+"&*AUTOEXP_ON=0xf";
$.ajax({
url: url,
success: function(){
console.log("aexp "+(aexp_en?"on":"off"));
}
});
$.ajax({
url: url,
success: function(){
console.log("aexp "+(aexp_en?"on":"off"));
}
});
});
});
}
</script>
......
......@@ -12,19 +12,22 @@ include "include/elphel_functions_include.php";
$cmd = "donothing";
if (isset($_GET['cmd']))
$cmd = $_GET['cmd'];
$cmd = $_GET['cmd'];
else if (isset($argv[1]))
$cmd = $argv[1];
$cmd = $argv[1];
// allow CORS
header('Access-Control-Allow-Origin: *');
switch($cmd){
case "sensors":
print(cmd_sensors());
break;
default:
print("OK");
case "sensors":
print(cmd_sensors());
break;
case "time":
cmd_time();
break;
default:
print("OK");
}
function cmd_sensors(){
......@@ -37,12 +40,40 @@ function cmd_sensors(){
$res .= "\t\t<port index='$i' port='$p'>$sensor</port>\n";
}
$res .= "\t</camera>\n";
return wrap_into_xml($res);
}
function cmd_time(){
date_default_timezone_set('UTC');
$t = elphel_get_fpga_time();
if (!isset($_GET['ts'])){
//date +%s will report system time
//print(exec("date +%s"));
print("Camera time: $t");
}else{
// ts is in ms
$ts_s = substr($_GET['ts'],0,10);
$ts_ms = substr($_GET['ts'],-3);
//$ts = $_GET['ts']/1000;
$ts_formatted = date("Y-m-d H:i:s.$ts_ms",$ts_s);
print("Your time: $ts_s.$ts_ms ($ts_formatted)\nCamera time: $t\n");
if (abs($ts_s-$t)>24*3600){
elphel_set_fpga_time($_GET['ts']/1000);
exec("date -s $ts_formatted");
exec("hwclock --systohc");
print("Timestamps differ by more than 24h. Camera and fpga time updated.\n");
}
}
}
function wrap_into_xml($s){
$xml = "<?xml version='1.0' standalone='yes'?>\n";
$xml .= "<Document>\n";
$xml .= $res;
$xml .= $s;
$xml .= "</Document>\n";
return $xml;
}
......
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