Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
LARN
PRRT
Commits
871a5acd
Commit
871a5acd
authored
Mar 17, 2016
by
Andreas Schmidt
Browse files
Proper timestamps.
parent
438a6988
Changes
2
Show whitespace changes
Inline
Side-by-side
src/prrt/clock.c
View file @
871a5acd
...
...
@@ -13,20 +13,20 @@ prrtTimestamp_t PrrtClock_get_current_time_us()
return
(
prrtTimestamp_t
)
(
1000000
*
tv
.
tv_sec
+
tv
.
tv_usec
);
}
uint32
_t
PrrtClock_get_current_time_ms
()
prrtTimestamp
_t
PrrtClock_get_current_time_ms
()
{
struct
timeval
tv
;
gettimeofday
(
&
tv
,
NULL
);
return
(
uint32_t
)
(
1000
*
tv
.
tv_sec
+
tv
.
tv_usec
/
1000
);
}
uint32
_t
PrrtClock_get_prrt_time_us
(
PrrtClock
*
clock
)
prrtTimestamp
_t
PrrtClock_get_prrt_time_us
(
PrrtClock
*
clock
)
{
uint32
_t
currentTime
=
PrrtClock_get_current_time_us
();
uint32
_t
virtualTime
=
clock
->
virtualTime
;
prrtTimestamp
_t
currentTime
=
PrrtClock_get_current_time_us
();
prrtTimestamp
_t
virtualTime
=
clock
->
virtualTime
;
if
(
virtualTime
)
{
uint32
_t
lastMeasurement
=
clock
->
lastMeasurement
;
prrtTimestamp
_t
lastMeasurement
=
clock
->
lastMeasurement
;
int32_t
diff
=
diff_ts
(
currentTime
,
lastMeasurement
);
int32_t
skew
=
(
diff
*
clock
->
skew
)
/
400
;
return
virtualTime
+
clock
->
meanDeviation
+
skew
;
...
...
@@ -38,10 +38,10 @@ uint32_t PrrtClock_get_prrt_time_us(PrrtClock *clock)
bool
PrrtClock_update
(
PrrtClock
*
clock
,
uint32_t
referenceTime
,
uint32_t
rtt
)
{
uint32
_t
currentTime
=
PrrtClock_get_current_time_us
();
uint32
_t
virtualTime
=
clock
->
virtualTime
;
prrtTimestamp
_t
currentTime
=
PrrtClock_get_current_time_us
();
prrtTimestamp
_t
virtualTime
=
clock
->
virtualTime
;
int32_t
clockSkew
=
clock
->
skew
;
uint32
_t
delay
=
rtt
>>
1
;
// half the rtt
prrtTimestamp
_t
delay
=
rtt
>>
1
;
// half the rtt
int32_t
phaseError
=
referenceTime
-
virtualTime
+
delay
;
if
(
abs
(
phaseError
)
>
10000
)
{
...
...
@@ -56,7 +56,7 @@ bool PrrtClock_update(PrrtClock *clock, uint32_t referenceTime, uint32_t rtt)
int32_t
period
=
diff_ts
(
currentTime
,
clock
->
lastMeasurement
);
if
(
period
>
0
)
{
clockSkew
=
(
meanDeviation
*
1000
/
period
)
+
15
*
clock
->
skew
;
clockSkew
=
(
meanDeviation
/
period
)
+
15
*
clock
->
skew
;
clockSkew
=
clockSkew
/
16
;
}
...
...
src/prrt/clock.h
View file @
871a5acd
...
...
@@ -6,10 +6,10 @@
#include <stdbool.h>
typedef
struct
prrtClock
{
uint32
_t
lastMeasurement
;
uint32
_t
meanDeviation
;
prrtTimestamp
_t
lastMeasurement
;
prrtTimedelta
_t
meanDeviation
;
int32_t
skew
;
uint32
_t
virtualTime
;
prrtTimestamp
_t
virtualTime
;
}
PrrtClock
;
...
...
Write
Preview
Supports
Markdown
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