Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-elphel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
linux-elphel
Commits
bf06826b
Commit
bf06826b
authored
May 16, 2021
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debugging boson-related code
parent
cc6a8f22
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
2 deletions
+24
-2
framepars.c
src/drivers/elphel/framepars.c
+8
-2
pgm_functions.c
src/drivers/elphel/pgm_functions.c
+16
-0
No files found.
src/drivers/elphel/framepars.c
View file @
bf06826b
...
...
@@ -2195,6 +2195,7 @@ static ssize_t store_frame2ts(struct device *dev, struct device_attribute *attr,
int
mchn
;
u32
aframe
=
0
;
u32
period10ns
;
// trigger period in 10 ns increments
u32
trig_decimate
=
1
;
u32
ts_pair
[
2
];
s64
delta_ts
;
int
delta_frame
;
...
...
@@ -2216,7 +2217,8 @@ static ssize_t store_frame2ts(struct device *dev, struct device_attribute *attr,
}
master_ts
=
((
long
long
)
ts_pair
[
1
])
*
1000000
+
ts_pair
[
0
];
// timestamp in microseconds
if
(
aframe
>
0
)
{
// if 0 - keep last ts to be read
period10ns
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_PERIOD
];
trig_decimate
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_DECIMATE
]
+
1
;
period10ns
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_PERIOD
]
*
trig_decimate
;
delta_frame
=
aframe
-
master_frame
;
delta_ts
=
((
long
long
)
period10ns
)
*
delta_frame
*
2
+
1
;
// to round afrter division by 100
dev_info
(
g_devfp_ptr
,
"delta_frame = %d, delta_ts = %lld us, period10ns=%d
\n
"
,
delta_frame
,
delta_ts
,
period10ns
);
...
...
@@ -2239,6 +2241,7 @@ static ssize_t store_ts2frame(struct device *dev, struct device_attribute *attr,
u32
ts_pair
[
2
];
int
mchn
;
u32
period10ns
;
// trigger period in 10 ns increments
u32
trig_decimate
=
1
;
s64
delta_ts
;
s32
delta_frame
;
sscanf
(
buf
,
"%llu"
,
&
ts
);
...
...
@@ -2259,7 +2262,8 @@ static ssize_t store_ts2frame(struct device *dev, struct device_attribute *attr,
}
master_ts
=
((
long
long
)
ts_pair
[
1
])
*
1000000
+
ts_pair
[
0
];
// timestamp in microseconds
if
(
ts
)
{
// if ts 0 (or not specified, e.g. echo "" > ... , then keep last comprfessed frame and timestamp to be read out
period10ns
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_PERIOD
];
trig_decimate
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_DECIMATE
]
+
1
;
period10ns
=
aframepars
[
mchn
][
thisFrameNumber
(
mchn
)
&
PARS_FRAMES_MASK
].
pars
[
P_TRIG_PERIOD
]
*
trig_decimate
;
delta_ts
=
100
*
(
ts
-
master_ts
)
+
(
period10ns
/
2
);
// for rounding
// do_div(delta_ts, period10ns);
// delta_ts /= period10ns;
...
...
@@ -2276,6 +2280,8 @@ static ssize_t show_ts2frame(struct device *dev, struct device_attribute *attr,
return
sprintf
(
buf
,
"%d"
,
master_frame
);
}
/*
#define P_TRIG_DECIMATE 121 ///< Decimate trigger by (P_TRIG_DECIMATE + 1) - trigger sensor less frequent than incoming trigger
aframepars[sensor_port][(i+frame16) & PARS_FRAMES_MASK].pars[P_FRAME] = thisFrameNumber(sensor_port) + i;#define thisCompressorFrameNumber(p) GLOBALPARS(p,G_COMPRESSOR_FRAME) // Current compressed frame number (lags from thisFrameNumber)
#define thisCompressorTimestamp_sec(p) GLOBALPARS(p,G_COMPRESSOR_SEC) // Current compressed frame timestamp seconds
#define thisCompressorTimestamp_usec(p) GLOBALPARS(p,G_COMPRESSOR_USEC) // Current compressed frame timestamp microseconds seconds
...
...
src/drivers/elphel/pgm_functions.c
View file @
bf06826b
...
...
@@ -2575,7 +2575,20 @@ int pgm_trigseq (int sensor_port, ///< sensor port number (0..3
dev_dbg
(
g_dev_ptr
,
"{%d} X3X3_SEQ_SEND1(0x%x, 0x%x, x393_camsync_trig_delay, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
thispars
->
pars
[
P_TRIG_DELAY
]);
}
if
(
FRAMEPAR_MODIFIED
(
P_TRIG_DECIMATE
))
{
if
(
unlikely
(
thispars
->
pars
[
P_TRIG_DECIMATE
]
>
65535
))
{
// Wrong value, restore old one
SETFRAMEPARS_SET
(
P_TRIG_DECIMATE
,
prevpars
->
pars
[
P_TRIG_DECIMATE
]);
}
else
{
/// set_x393_camsync_trig_period(thispars->pars[P_TRIG_DECIMATE]);
/// dev_dbg(g_dev_ptr,"{%d} set_x393_camsync_trig_period(0x%lx)\n",sensor_port, thispars->pars[P_TRIG_DECIMATE]);
/// MDP(DBGB_PADD, sensor_port,"set_x393_camsync_trig_decimation(0x%lx)\n", thispars->pars[P_TRIG_DECIMATE])
X393_SEQ_SEND1
(
sensor_port
,
frame16
,
x393_camsync_trig_decimation
,
thispars
->
pars
[
P_TRIG_DECIMATE
]);
dev_dbg
(
g_dev_ptr
,
"{%d} X3X3_SEQ_SEND1(0x%x, 0x%x, x393_camsync_trig_decimation, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
thispars
->
pars
[
P_TRIG_DECIMATE
]);
}
}
// Next parameters are applicable only to master channel
if
(
!
is_master
){
dev_dbg
(
g_dev_ptr
,
"{%d} frame16=%d: nothing to do, master channel is %d
\n
"
,
sensor_port
,
frame16
,
(
int
)
thispars
->
pars
[
P_TRIG_MASTER
]);
return
0
;
...
...
@@ -2642,6 +2655,8 @@ int pgm_trigseq (int sensor_port, ///< sensor port number (0..3
sensor_port
,
sensor_port
,
frame16
,
(
int
)
thispars
->
pars
[
P_TRIG_PERIOD
]);
}
}
/*
* P_TRIG_DECIMATE is per-channel, here only master channel remains
if (FRAMEPAR_MODIFIED(P_TRIG_DECIMATE)) {
if (unlikely(thispars->pars[P_TRIG_DECIMATE] > 65535)) { // Wrong value, restore old one
SETFRAMEPARS_SET(P_TRIG_DECIMATE,prevpars->pars[P_TRIG_DECIMATE]);
...
...
@@ -2654,6 +2669,7 @@ int pgm_trigseq (int sensor_port, ///< sensor port number (0..3
sensor_port, sensor_port, frame16, (int) thispars->pars[P_TRIG_DECIMATE]);
}
}
*/
// P_EXTERN_TIMESTAMP changed? (0 - internal sequencer)
...
...
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