Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
elphel-apps-gps
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
elphel-apps-gps
Commits
78405738
Commit
78405738
authored
Nov 16, 2016
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cli mode
parent
50284d4a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
225 additions
and
58 deletions
+225
-58
read_imu_log.php
src/read_imu_log.php
+225
-58
No files found.
src/read_imu_log.php
View file @
78405738
...
@@ -7,24 +7,91 @@
...
@@ -7,24 +7,91 @@
* LICENSE: AGPL, see http://www.gnu.org/licenses/agpl.txt
* LICENSE: AGPL, see http://www.gnu.org/licenses/agpl.txt
* Copyright (C) 2016 Elphel, Inc.
* Copyright (C) 2016 Elphel, Inc.
*/
*/
set_time_limit
(
0
);
$hardcodeddir
=
"logs"
;
$CLI
=
(
php_sapi_name
()
==
"cli"
);
if
(
$CLI
){
$_SERVER
[
'REMOTE_ADDR'
]
=
"localhost"
;
$_SERVER
[
'SERVER_ADDR'
]
=
"localhost"
;
$_GET
[
'format'
]
=
"csv"
;
$_GET
[
'nth'
]
=
1
;
$_GET
[
'limit'
]
=
-
1
;
$_GET
[
'nogui'
]
=
true
;
if
(
isset
(
$argv
[
1
]))
$_GET
[
'file'
]
=
$argv
[
1
];
else
{
die
(
<<<TEXT
\033[91mERROR: Filename is not set.\033[0m
Command line usage examples:
* Minimal:
\033[1;37m~$ php thisscript.php logfile > logfile.csv\033[0m
* With a filter, IMU records only:
\033[1;37m~~$ php thisscript.php logfile 0x010 > logfile.csv\033[0m
* With a filter, GPS NMEA GPRMC records ony:
\033[1;37m~~$ php thisscript.php logfile 0x001 > logfile.csv\033[0m
* Filter bits:
External trigger source:
0x200
Image records:
0x100 channel 3
0x080 channel 2
0x040 channel 1
0x020 channel 0
IMU:
0x010
GPS records:
0x008 - NMEA GPVTG
0x004 - NMEA GPGSA
0x002 - NMEA GPGGA (have coordinates)
0x001 - NMEA GPRMC (have coordinates)
TEXT
);
}
$_GET
[
'record'
]
=
0
;
}
$thisname
=
basename
(
$_SERVER
[
'SCRIPT_NAME'
]);
$remoteaccess
=
(
$_SERVER
[
'REMOTE_ADDR'
]
!=
$_SERVER
[
'SERVER_ADDR'
]);
$hardcodeddir
=
"logs"
;
if
(
isset
(
$_GET
[
'format'
])){
if
(
isset
(
$_GET
[
'format'
])){
$format
=
$_GET
[
'format'
];
$format
=
$_GET
[
'format'
];
}
else
{
}
else
{
$format
=
"html"
;
$format
=
"html"
;
}
}
if
(
isset
(
$_GET
[
'nth'
])){
$nth
=
$_GET
[
'nth'
]
+
0
;
}
else
{
$nth
=
1
;
}
if
(
isset
(
$_GET
[
'limit'
])){
if
(
isset
(
$_GET
[
'limit'
])){
$limit
=
$_GET
[
'limit'
]
+
0
;
$limit
=
$_GET
[
'limit'
]
+
0
;
}
else
{
}
else
{
$limit
=
0
;
$limit
=
-
1
;
}
}
if
(
isset
(
$_GET
[
'nogui'
])){
if
(
isset
(
$_GET
[
'nogui'
])){
$nogui
=
true
;
$nogui
=
true
;
if
(
$format
==
"csv"
){
header
(
"Content-Type: application/octet-stream"
);
header
(
'Content-Disposition: attachment; filename='
.
basename
(
$_GET
[
'file'
])
.
"."
.
$format
);
}
else
{
header
(
"Content-Type: application/xml"
);
echo
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
;
echo
"<Document>
\n
"
;
}
}
else
{
}
else
{
//header("Content-Type: text/xml");
$nogui
=
false
;
$nogui
=
false
;
}
}
...
@@ -39,7 +106,7 @@ if (isset($_GET['list'])){
...
@@ -39,7 +106,7 @@ if (isset($_GET['list'])){
}
}
if
(
isset
(
$_GET
[
'file'
])){
if
(
isset
(
$_GET
[
'file'
])){
if
(
$
_SERVER
[
'REMOTE_ADDR'
]
!=
$_SERVER
[
'SERVER_ADDR'
]
){
if
(
$
remoteaccess
){
$file
=
$hardcodeddir
.
"/"
.
basename
(
$_GET
[
'file'
]);
$file
=
$hardcodeddir
.
"/"
.
basename
(
$_GET
[
'file'
]);
}
else
{
}
else
{
$file
=
$_GET
[
'file'
];
$file
=
$_GET
[
'file'
];
...
@@ -48,7 +115,7 @@ if (isset($_GET['file'])){
...
@@ -48,7 +115,7 @@ if (isset($_GET['file'])){
if
(
is_file
(
$file
)){
if
(
is_file
(
$file
)){
$numRecordsInFile
=
filesize
(
$file
)
/
64
;
$numRecordsInFile
=
filesize
(
$file
)
/
64
;
}
else
{
}
else
{
//
this is for $_SERVER['REMOTE_ADDR']==$_SERVER['SERVER_ADDR']
//
for local access also check $hardcodeddir
if
(
is_file
(
$hardcodeddir
.
"/"
.
$file
)){
if
(
is_file
(
$hardcodeddir
.
"/"
.
$file
)){
$file
=
$hardcodeddir
.
"/"
.
$file
;
$file
=
$hardcodeddir
.
"/"
.
$file
;
$numRecordsInFile
=
filesize
(
$file
)
/
64
;
$numRecordsInFile
=
filesize
(
$file
)
/
64
;
...
@@ -62,6 +129,11 @@ if (isset($_GET['file'])){
...
@@ -62,6 +129,11 @@ if (isset($_GET['file'])){
$init
=
false
;
$init
=
false
;
}
}
if
(
$CLI
){
$_GET
[
'nrecords'
]
=
$numRecordsInFile
;
if
(
isset
(
$argv
[
2
]))
$_GET
[
'filter'
]
=
$argv
[
2
];
}
if
(
isset
(
$_GET
[
'record'
]))
$record
=
$_GET
[
'record'
]
+
0
;
if
(
isset
(
$_GET
[
'record'
]))
$record
=
$_GET
[
'record'
]
+
0
;
else
$record
=
0
;
else
$record
=
0
;
...
@@ -79,6 +151,11 @@ if ($nRecords>($numRecordsInFile-$record)) $nRecords= $numRecordsInFile-$record;
...
@@ -79,6 +151,11 @@ if ($nRecords>($numRecordsInFile-$record)) $nRecords= $numRecordsInFile-$record;
if
(
$limit
>
0
)
$nRecords
=
$numRecordsInFile
;
if
(
$limit
>
0
)
$nRecords
=
$numRecordsInFile
;
if
(
isset
(
$_GET
[
'showall'
])){
$limit
=
$numRecordsInFile
;
$nRecords
=
$numRecordsInFile
;
}
if
(
isset
(
$_GET
[
'filter'
]))
$filter
=
intval
(
$_GET
[
'filter'
],
0
);
if
(
isset
(
$_GET
[
'filter'
]))
$filter
=
intval
(
$_GET
[
'filter'
],
0
);
else
$filter
=
0x3ff
;
else
$filter
=
0x3ff
;
...
@@ -92,6 +169,8 @@ else $filter= 0x3ff;
...
@@ -92,6 +169,8 @@ else $filter= 0x3ff;
64 - ODOMETER (type 3)
64 - ODOMETER (type 3)
*/
*/
if
(
$limit
<
0
)
$limit
=
$nRecords
;
if
(
!
$nogui
){
if
(
!
$nogui
){
//list available files
//list available files
echo
html
();
echo
html
();
...
@@ -109,9 +188,10 @@ $sindex = $record;
...
@@ -109,9 +188,10 @@ $sindex = $record;
$eindex
=
$record
+
$nRecords
;
$eindex
=
$record
+
$nRecords
;
if
(
$format
==
"csv"
){
if
(
$format
==
"csv"
){
echo
"
<pre>
Filename,
$file
\n
"
;
echo
"Filename,
$file
\n
"
;
echo
"Found Records,
$numRecordsInFile
\n
"
;
echo
"Found Records,
$numRecordsInFile
\n
"
;
echo
"Record filter,0x
$filterhex
\n
"
;
echo
"Record filter,0x
$filterhex
\n
"
;
echo
"Show limit,
$limit
\n
"
;
echo
"Start index,
$sindex
\n
"
;
echo
"Start index,
$sindex
\n
"
;
echo
"End index,
$eindex
\n\n
"
;
echo
"End index,
$eindex
\n\n
"
;
}
else
{
}
else
{
...
@@ -120,6 +200,7 @@ if ($format=="csv"){
...
@@ -120,6 +200,7 @@ if ($format=="csv"){
<tr><td>Filename</td><td>$file</td></tr>
<tr><td>Filename</td><td>$file</td></tr>
<tr><td>Found records</td><td>$numRecordsInFile</td></tr>
<tr><td>Found records</td><td>$numRecordsInFile</td></tr>
<tr><td>Filter</td><td>$filterhex</td></tr>
<tr><td>Filter</td><td>$filterhex</td></tr>
<tr><td>Show limit</td><td>$limit</td></tr>
<tr><td>Start index</td><td>$sindex</td></tr>
<tr><td>Start index</td><td>$sindex</td></tr>
<tr><td>End index</td><td>$eindex</td></tr>
<tr><td>End index</td><td>$eindex</td></tr>
</table>
</table>
...
@@ -164,23 +245,47 @@ imuLogParse($log_file,$record,$nRecords,$filter);
...
@@ -164,23 +245,47 @@ imuLogParse($log_file,$record,$nRecords,$filter);
die
(
0
);
die
(
0
);
$gc
=
array
(
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
)
);
function
global_counters
(
$i
,
$j
){
global
$gc
,
$nth
;
if
((
$gc
[
$i
][
$j
]
%
$nth
)
==
0
)
{
$gc
[
$i
][
$j
]
=
1
;
return
true
;
}
else
{
$gc
[
$i
][
$j
]
++
;
return
false
;
}
}
function
imuLogParse
(
$handle
,
$record
,
$nSamples
,
$filter
,
$tryNumber
=
10000
){
function
imuLogParse
(
$handle
,
$record
,
$nSamples
,
$filter
,
$tryNumber
=
10000
){
global
$timeShift
;
global
$timeShift
;
global
$averageIMU
;
global
$averageIMU
;
global
$imuFieldOrder
;
global
$imuFieldOrder
;
global
$format
,
$limit
;
global
$format
,
$limit
;
global
$gc
;
$gpsFilter
=
$filter
&
0xf
;
$gpsFilter
=
(
$filter
)
&
0xf
;
//type=1
$imuFilter
=
(
$filter
>>
4
)
&
0x1
;
//type=0
$imgFilter
=
(
$filter
>>
5
)
&
0xf
;
//type=2
$extFilter
=
(
$filter
>>
9
)
&
0x1
;
//type=3
$typeFilter
=
((
$gpsFilter
!=
0
)
?
2
:
0
)
|
(((
$filter
&
0x10
)
!=
0
)
?
1
:
0
)
|
(((
$filter
&
0x20
)
!=
0
)
?
4
:
0
)
|
(((
$filter
&
0x20
)
!=
0
)
?
8
:
0
);
$typeFilter
=
((
$gpsFilter
!=
0
)
?
2
:
0
)
|
((
$imuFilter
!=
0
)
?
1
:
0
)
|
(((
$imgFilter
)
!=
0
)
?
4
:
0
)
|
(((
$extFilter
)
!=
0
)
?
8
:
0
);
$skip_imu_cols
=
true
;
$skip_imu_cols
=
true
;
$imu_cols_csv
=
""
;
$imu_cols_csv
=
""
;
$imu_cols_html_header
=
""
;
$imu_cols_html_header
=
""
;
$imu_cols_html
=
""
;
$imu_cols_html
=
""
;
if
(
((
$filter
>>
4
)
&
0x1
)
==
0x1
)
{
if
(
$imuFilter
==
0x1
)
{
$skip_imu_cols
=
false
;
$skip_imu_cols
=
false
;
$imu_cols_csv_header
=
implode
(
","
,
$imuFieldOrder
)
.
","
;
$imu_cols_csv_header
=
implode
(
","
,
$imuFieldOrder
)
.
","
;
for
(
$i
=
0
;
$i
<
count
(
$imuFieldOrder
);
$i
++
){
for
(
$i
=
0
;
$i
<
count
(
$imuFieldOrder
);
$i
++
){
...
@@ -212,22 +317,43 @@ TEXT;
...
@@ -212,22 +317,43 @@ TEXT;
echo
"</tr>
\n
"
;
echo
"</tr>
\n
"
;
}
}
$gc
=
array
(
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
),
array
(
0
,
0
,
0
,
0
)
);
for
(
$nSample
=
0
;
$nSample
<
$nSamples
;
$nSample
++
)
{
for
(
$nSample
=
0
;
$nSample
<
$nSamples
;
$nSample
++
)
{
$sample
=
fread
(
$handle
,
64
);
$sample
=
fread
(
$handle
,
64
);
$arr32
=
unpack
(
'L*'
,
$sample
);
$arr32
=
unpack
(
'L*'
,
$sample
);
$time
=
((
$arr32
[
1
]
&
0xfffff
)
/
1000000
)
+
$arr32
[
2
];
$time
=
((
$arr32
[
1
]
&
0xfffff
)
/
1000000
)
+
$arr32
[
2
];
$type
=
$arr32
[
1
]
>>
24
;
$type
=
$arr32
[
1
]
>>
24
;
$gps
=
(
$type
==
1
)
?
(
$arr32
[
3
]
&
0x3
)
:
0xf
;
// any if it is not GPS sample
if
((((
1
<<
$type
)
&
$typeFilter
)
!=
0
)
&&
((
$type
!=
1
)
||
(((
1
<<
$gps
)
&
$gpsFilter
)
!=
0
)))
{
$show_record
=
false
;
switch
(
$type
){
$limit
--
;
case
0
:
if
(
$limit
==-
1
){
if
(
$imuFilter
!=
0
)
$show_record
=
global_counters
(
$type
,
0
);
break
;
break
;
}
case
1
:
if
(((
$gpsFilter
>>
(
$arr32
[
3
]
&
0x3
))
&
1
)
==
1
)
$show_record
=
global_counters
(
$type
,
$arr32
[
3
]
&
0x3
);
break
;
case
2
:
$subchannel
=
(
$arr32
[
3
]
>>
24
);
if
(((
$imgFilter
>>
$subchannel
)
&
1
)
==
1
)
$show_record
=
global_counters
(
$type
,
$subchannel
);
break
;
case
3
:
if
((
$extFilter
&
1
)
==
1
)
$show_record
=
global_counters
(
$type
,
0
);
break
;
}
if
(
$show_record
)
{
$limit
--
;
if
(
$limit
==-
1
)
break
;
//beginning
if
(
$format
==
"csv"
){
if
(
$format
==
"csv"
){
printf
(
"%d,%f,
$type
,"
,(
$record
+
$nSample
),
$time
);
printf
(
"%d,%f,
$type
,"
,(
$record
+
$nSample
),
$time
);
}
else
{
}
else
{
...
@@ -284,8 +410,8 @@ TEXT;
...
@@ -284,8 +410,8 @@ TEXT;
// Master (Sync) record
// Master (Sync) record
case
2
:
case
2
:
$masterTime
=
((
$arr32
[
3
]
&
0xfffff
)
/
1000000
)
+
$arr32
[
4
];
$subchannel
=
(
$arr32
[
3
]
>>
24
);
$subchannel
=
(
$arr32
[
3
]
>>
24
);
$masterTime
=
((
$arr32
[
3
]
&
0xfffff
)
/
1000000
)
+
$arr32
[
4
];
if
(
$format
==
"csv"
){
if
(
$format
==
"csv"
){
printf
(
"
$imu_cols_csv$subchannel
,%f,"
.
(
gmdate
(
DATE_RFC850
,
$masterTime
))
.
"
\n
"
,
$masterTime
);
printf
(
"
$imu_cols_csv$subchannel
,%f,"
.
(
gmdate
(
DATE_RFC850
,
$masterTime
))
.
"
\n
"
,
$masterTime
);
...
@@ -297,8 +423,6 @@ TEXT;
...
@@ -297,8 +423,6 @@ TEXT;
printf
(
"<td>%f</td>
\n
"
,
$masterTime
);
printf
(
"<td>%f</td>
\n
"
,
$masterTime
);
echo
"<td>"
.
gmdate
(
DATE_RFC850
,
$masterTime
)
.
"</td>
\n
"
;
echo
"<td>"
.
gmdate
(
DATE_RFC850
,
$masterTime
)
.
"</td>
\n
"
;
}
}
break
;
break
;
// Show hex data
// Show hex data
...
@@ -323,6 +447,7 @@ TEXT;
...
@@ -323,6 +447,7 @@ TEXT;
}
}
if
(
$format
!=
"csv"
){
if
(
$format
!=
"csv"
){
echo
"</table>
\n
"
;
echo
"</table>
\n
"
;
echo
"</Document>
\n
"
;
}
}
}
}
...
@@ -513,14 +638,14 @@ eg3. $GPVTG,t,T,,,s.ss,N,s.ss,K*hh
...
@@ -513,14 +638,14 @@ eg3. $GPVTG,t,T,,,s.ss,N,s.ss,K*hh
function
showlist
(){
function
showlist
(){
global
$hardcodeddir
;
global
$hardcodeddir
;
global
$remoteaccess
;
$local
=
true
;
$local
=
true
;
if
(
isset
(
$_GET
[
'file'
]))
$file
=
$_GET
[
'file'
];
if
(
isset
(
$_GET
[
'file'
]))
$file
=
$_GET
[
'file'
];
if
(
$
_SERVER
[
'REMOTE_ADDR'
]
!=
$_SERVER
[
'SERVER_ADDR'
]
){
if
(
$
remoteaccess
){
$dir
=
$hardcodeddir
;
$dir
=
$hardcodeddir
;
$local
=
false
;
}
else
{
}
else
{
if
(
!
isset
(
$file
)
||
(
$file
==
""
)){
if
(
!
isset
(
$file
)
||
(
$file
==
""
)){
$dir
=
"."
;
$dir
=
"."
;
...
@@ -540,8 +665,8 @@ function showlist(){
...
@@ -540,8 +665,8 @@ function showlist(){
$files
=
scandir
(
$dir
);
$files
=
scandir
(
$dir
);
if
(
$dir
==
"."
||
(
!
$local
))
$dirlink
=
""
;
if
(
$dir
==
"."
||
(
$remoteaccess
))
$dirlink
=
""
;
else
$dirlink
=
"
$dir
/"
;
else
$dirlink
=
"
$dir
/"
;
$res
=
""
;
$res
=
""
;
...
@@ -562,19 +687,29 @@ function showlist(){
...
@@ -562,19 +687,29 @@ function showlist(){
function
html
(){
function
html
(){
global
$file
,
$limit
,
$record
,
$nRecords
;
global
$file
,
$limit
,
$record
,
$nRecords
,
$filter
,
$nth
;
global
$init
;
global
$init
;
$ins_filter
=
array
();
if
(
$init
)
{
if
(
$init
)
{
$ins_file
=
$file
;
$ins_file
=
$file
;
$ins_limit
=
$limit
;
$ins_limit
=
$limit
;
$ins_rec
=
$record
;
$ins_rec
=
$record
;
$ins_nrec
=
$_GET
[
'nrecords'
]
+
$record
;
$ins_nrec
=
$_GET
[
'nrecords'
]
+
$record
;
for
(
$i
=
0
;
$i
<
10
;
$i
++
){
if
((
$filter
>>
$i
)
&
1
==
1
)
$ins_filter
[
$i
]
=
"checked"
;
}
$ins_nth
=
$nth
;
}
else
{
}
else
{
$ins_file
=
"imu.log"
;
$ins_file
=
"imu.log"
;
$ins_limit
=
500
0
;
$ins_limit
=
500
;
$ins_rec
=
0
;
$ins_rec
=
0
;
$ins_nrec
=
5000
;
$ins_nrec
=
5000
;
for
(
$i
=
0
;
$i
<
10
;
$i
++
){
$ins_filter
[
$i
]
=
"checked"
;
}
$ins_nth
=
1
;
}
}
$js
=
js
();
$js
=
js
();
...
@@ -610,22 +745,22 @@ function html(){
...
@@ -610,22 +745,22 @@ function html(){
<tr>
<tr>
<td colspan=''>Record filter:
<td colspan=''>Record filter:
<span title='External device'>EXT
<span title='External device'>EXT
<input id='filter_9' type='checkbox'
checked onchange='getRqStr()
'>
<input id='filter_9' type='checkbox'
{$ins_filter[9]} onchange='getRqStr()' title='External source
'>
</span>
</span>
<span title='Image trigger signal'>IMG
<span title='Image trigger signal'>IMG
<input id='filter_8' type='checkbox'
checked
onchange='getRqStr()' title='Sensor port 3'>
<input id='filter_8' type='checkbox'
{$ins_filter[8]}
onchange='getRqStr()' title='Sensor port 3'>
<input id='filter_7' type='checkbox'
checked
onchange='getRqStr()' title='Sensor port 2'>
<input id='filter_7' type='checkbox'
{$ins_filter[7]}
onchange='getRqStr()' title='Sensor port 2'>
<input id='filter_6' type='checkbox'
checked
onchange='getRqStr()' title='Sensor port 1'>
<input id='filter_6' type='checkbox'
{$ins_filter[6]}
onchange='getRqStr()' title='Sensor port 1'>
<input id='filter_5' type='checkbox'
checked
onchange='getRqStr()' title='Sensor port 0'>
<input id='filter_5' type='checkbox'
{$ins_filter[5]}
onchange='getRqStr()' title='Sensor port 0'>
</span>
</span>
<span title='IMU'>IMU
<span title='IMU'>IMU
<input id='filter_4' type='checkbox'
checked
onchange='getRqStr()'>
<input id='filter_4' type='checkbox'
{$ins_filter[4]}
onchange='getRqStr()'>
</span>
</span>
<span title='GPS'>GPS
<span title='GPS'>GPS
<input id='filter_3' type='checkbox'
checked
onchange='getRqStr()' title='NMEA GPVTG'>
<input id='filter_3' type='checkbox'
{$ins_filter[3]}
onchange='getRqStr()' title='NMEA GPVTG'>
<input id='filter_2' type='checkbox'
checked
onchange='getRqStr()' title='NMEA GPGSA'>
<input id='filter_2' type='checkbox'
{$ins_filter[2]}
onchange='getRqStr()' title='NMEA GPGSA'>
<input id='filter_1' type='checkbox'
checked
onchange='getRqStr()' title='NMEA GPGGA'>
<input id='filter_1' type='checkbox'
{$ins_filter[1]}
onchange='getRqStr()' title='NMEA GPGGA'>
<input id='filter_0' type='checkbox'
checked
onchange='getRqStr()' title='NMEA GPRMC'>
<input id='filter_0' type='checkbox'
{$ins_filter[0]}
onchange='getRqStr()' title='NMEA GPRMC'>
</span>
</span>
</td>
</td>
</tr>
</tr>
...
@@ -640,14 +775,19 @@ function html(){
...
@@ -640,14 +775,19 @@ function html(){
<td></td>
<td></td>
<td>End</td><td><input id='end' type='text' value='$ins_nrec' style='width:100px;text-align:right;' onchange='getRqStr()'></td>
<td>End</td><td><input id='end' type='text' value='$ins_nrec' style='width:100px;text-align:right;' onchange='getRqStr()'></td>
</tr>
</tr>
<tr>
<td><input type='checkbox' id='show_limit_toggle' checked onchange='getRqStr()'></td>
<td><input type='checkbox' id='show_limit_toggle' checked onchange='getRqStr()'></td>
<td>Show limit</td><td><input id='limit' type='text' value='$ins_limit' style='width:100px;text-align:right;' onchange='getRqStr()'></td>
<td>Show limit</td><td><input id='limit' type='text' value='$ins_limit' style='width:100px;text-align:right;' onchange='getRqStr()'></td>
</tr>
</tr>
<tr>
<td><input type='checkbox' id='show_nth_toggle' checked onchange='getRqStr()'></td>
<td>Show every</td><td><input id='nth' type='text' value='$ins_nth' style='width:100px;text-align:right;' onchange='getRqStr()'> <sup>th</sup> record</td>
</tr>
</table>
</table>
</td>
</td>
</tr>
</tr>
<tr>
<tr>
<td><button onclick='show()'>Show records</button> <span id='csvlink'></span></td>
<td><button onclick='show()'>Show records</button> <span id='csvlink'></span><
span id='csvlink2'></span><
/td>
</tr>
</tr>
</table>
</table>
</td>
</td>
...
@@ -660,6 +800,7 @@ TEXT;
...
@@ -660,6 +800,7 @@ TEXT;
}
}
function
js
(){
function
js
(){
global
$thisname
;
global
$init
;
global
$init
;
if
(
$init
)
$insert
=
"show();"
;
if
(
$init
)
$insert
=
"show();"
;
...
@@ -677,8 +818,6 @@ function init(){
...
@@ -677,8 +818,6 @@ function init(){
function show(){
function show(){
console.log("show");
console.log("show");
report("status: waiting for response");
var rqstr = getRqStr();
var rqstr = getRqStr();
...
@@ -687,11 +826,9 @@ function show(){
...
@@ -687,11 +826,9 @@ function show(){
request.onreadystatechange = function() {
request.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
if (this.readyState == 4 && this.status == 200) {
var resp = this.responseText;
var resp = this.responseText;
report("status: parsing response");
clearInterval(loading_interval);
clearInterval(loading_interval);
document.getElementById("results").innerHTML = "<br/>"+resp;
document.getElementById("results").innerHTML = "<br/>"+resp;
report("<a href='"+rqstr+"'>current view</a>, <a href='"+rqstr+"&nogui"+"&format=csv"+"'>csv</a>, <a href='"+rqstr+"&nogui"+"&format=html"+"'>html</a>");
}
}
};
};
...
@@ -706,7 +843,7 @@ function show(){
...
@@ -706,7 +843,7 @@ function show(){
function getList(){
function getList(){
var filename = document.getElementById("file").value;
var filename = document.getElementById("file").value;
var rqstr = "
read_imu_log.php
?list&nogui&file="+filename;
var rqstr = "
$thisname
?list&nogui&file="+filename;
var request = new XMLHttpRequest();
var request = new XMLHttpRequest();
request.open('GET', rqstr, true);
request.open('GET', rqstr, true);
...
@@ -731,7 +868,7 @@ function getRqStr(){
...
@@ -731,7 +868,7 @@ function getRqStr(){
var filename = document.getElementById("file").value;
var filename = document.getElementById("file").value;
var filter = 0;
var filter = 0;
for(var i=0;i<
7
;i++){
for(var i=0;i<
10
;i++){
bit = (document.getElementById("filter_"+i).checked)?1:0;
bit = (document.getElementById("filter_"+i).checked)?1:0;
filter += (bit<<i);
filter += (bit<<i);
}
}
...
@@ -745,6 +882,12 @@ function getRqStr(){
...
@@ -745,6 +882,12 @@ function getRqStr(){
limit = "&limit="+document.getElementById("limit").value;
limit = "&limit="+document.getElementById("limit").value;
}
}
var nth = "";
if (document.getElementById("show_nth_toggle").checked){
nth = "&nth="+document.getElementById("nth").value;
}
var n = end - start;
var n = end - start;
if (n<0) {
if (n<0) {
...
@@ -752,11 +895,11 @@ function getRqStr(){
...
@@ -752,11 +895,11 @@ function getRqStr(){
n = 1;
n = 1;
}
}
var rqstr = "
read_imu_log.php?file="+filename+"&record="+start+"&nrecords="+n+"&filter="+filter+limit
;
var rqstr = "
$thisname?file="+filename+"&record="+start+"&nrecords="+n+"&filter="+filter+limit+nth
;
report("");
report("");
setTimeout(function(){
setTimeout(function(){
report("<a href='"+rqstr+"'>
current view</a>, <a href='"+rqstr+"&nogui"+"&format=csv"+"'>csv</a>, <a href='"+rqstr+"&nogui"+"&format=html"+"'>html
</a>");
report("<a href='"+rqstr+"'>
share</a>, Download: <a href='"+rqstr+"&nogui"+"&format=csv'>csv</a>, <a href='"+rqstr+"&nogui"+"&format=csv&showall'>full csv
</a>");
},100);
},100);
return rqstr;
return rqstr;
...
@@ -798,22 +941,28 @@ var loading_interval;
...
@@ -798,22 +941,28 @@ var loading_interval;
function loading(){
function loading(){
console.log("loading");
console.log("loading");
var tmp = document.getElementById("csvlink").innerHTML;
var tmp = document.getElementById("csvlink
2
").innerHTML;
if (tmp.length<2) tmp += ".";
if (tmp.length<2) tmp += ".";
else tmp = "";
else tmp = "";
document.getElementById("csvlink").innerHTML = tmp;
document.getElementById("csvlink
2
").innerHTML = tmp;
}
}
TEXT;
TEXT;
}
}
function
help
(){
function
help
(){
global
$thisname
;
global
$nogui
;
global
$nogui
;
$logslist
=
showlist
();
$logslist
=
showlist
();
$help
=
<<<TEXT
$help
=
<<<TEXT
<span style='font-size:1.2em;'>$logslist</span>
<span style='font-size:1.2em;'>$logslist</span>
<div style='font-size:1.2em;'>Source:
<ul>
<li><a href="?source" >This program source</a></li>
</ul>
</div>
<div style='font-size:1.2em;'>Usage:
<div style='font-size:1.2em;'>Usage:
<ul>
<ul>
<li>GUI:
<li>GUI:
...
@@ -822,39 +971,57 @@ function help(){
...
@@ -822,39 +971,57 @@ function help(){
<i>remote != server address</i> - http://thisscriptrootpath/logs/filename<br/>
<i>remote != server address</i> - http://thisscriptrootpath/logs/filename<br/>
<i>remote == server address</i> - any relative/absolute path
<i>remote == server address</i> - any relative/absolute path
</li>
</li>
<li><b>
C
heckboxes</b> - checked = show</li>
<li><b>
Record filter c
heckboxes</b> - checked = show</li>
<li><b>Begin</b> - offset, record index in log</li>
<li><b>Begin</b> - offset, record index in log</li>
<li><b>End</b> - offset, record index in log</li>
<li><b>End</b> - offset, record index in log</li>
<li><b>Show limit</b> - Number of filtered records to show, if enabled overrides <b>End</b></li>
<li><b>Show limit</b> - Number of filtered records to show, if enabled overrides <b>End</b></li>
<li><b>current view, csv, html</b> - if any parameter changed a link to csv or html data is created/updated</li>
<li><button onclick='getList()'>List log files</button> :
<ul>
<li>remote access - list of files in <b>http://thisscriptrootpath/logs/</b></li>
<li>local access - list of files in <b>http://thisscriptrootpath/</b></li>
</ul>
<button onclick='show()'>Show records</button> - after a file is selected.<br/>
If a folder is selected - <button onclick='getList()'>List log files</button> again to scan inside.
</li>
<li><a href='#'>share</a> - open this page with the same parameters (auto <b>show records</b>)</li>
<li><a href='#'>csv</a> - download csv: filter + limit</li>
<li><a href='#'>csv full</a> - download csv: filter + no limit</li>
</ul>
</ul>
</li>
</li>
<br/>
<br/>
<li>URL (see <b>
<i>current view, csv, html</i>
</b>):
<li>URL (see <b>
share</b>,<b>csv</b>,<b>csv full
</b>):
<ul>
<ul>
<li>
<li>
<b>http://thisscriptrootpath/
read_imu_log.php
?file=..&record=..&nrecords=..&filter=..&limit=..&format=..</b><br/>
<b>http://thisscriptrootpath/
$thisname
?file=..&record=..&nrecords=..&filter=..&limit=..&format=..</b><br/>
<b>file</b> - with path<br/>
<b>file</b> - with path<br/>
<b>format</b> - accepts 'csv' or 'html'<br/>
<b>format</b> - accepts 'csv' or 'html'<br/>
<b>limit</b> - limit the displayed records<br/>
<b>limit</b> - limit the displayed records<br/>
<b>record</b> - starting record index, default = 0<br/>
<b>record</b> - starting record index, default = 0<br/>
<b>nrecords</b> - number of records to parse, default = 5000<br/>
<b>nrecords</b> - number of records to parse, default = 5000<br/>
<b>filter</b> - filter out types of displayed records:<br/>
<b>filter</b> - filter out types of displayed records:<br/>
0x40 - display external trigger records only<br/>
0x200 - display external trigger records only<br/>
0x20 - display image records only<br/>
0x100 - display image records, channel 3 only<br/>
0x10 - display imu records only<br/>
0x080 - display image records, channel 2 only<br/>
0x040 - display image records, channel 1 only<br/>
0x020 - display image records, channel 0 only<br/>
0x010 - display imu records only<br/>
for gps records:<br/>
for gps records:<br/>
0x08 - display NMEA GPVTG records,<br/>
0x0
0
8 - display NMEA GPVTG records,<br/>
0x04 - display NMEA GPGSA records<br/>
0x0
0
4 - display NMEA GPGSA records<br/>
0x02 - display NMEA GPGGA records (have coordinates)<br/>
0x0
0
2 - display NMEA GPGGA records (have coordinates)<br/>
0x01 - display NMEA GPRMC records (have coordinates)<br/>
0x0
0
1 - display NMEA GPRMC records (have coordinates)<br/>
default = 0x7f (display everything)<br/>
default = 0x7f (display everything)<br/>
</li>
</li>
</ul>
</ul>
</li>
</li>
<li><a href="?source" >PHP source</a></li>
<li>Command line:
<ul>
<li><i>~$ php $thisname logfile filter [filter] > output.csv</i></li>
</ul>
</li>
</ul>
</ul>
</div>
</div>
<br/><br/><br/>
TEXT;
TEXT;
if
(
!
$nogui
)
$help
=
"`<br/>
$help
`"
;
if
(
!
$nogui
)
$help
=
"`<br/>
$help
`"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment