Fast RTPS  Version 2.14.1
Fast RTPS
Loading...
Searching...
No Matches
TimeConversion.h
1// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
20#ifndef TIMECONVERSION_H_
21#define TIMECONVERSION_H_
22
23#include <cstdint>
24#include <fastdds/rtps/common/Time_t.h>
25
26namespace eprosima {
27namespace fastrtps{
28namespace rtps {
29
30
31namespace TimeConv{
32
36inline double Time_t2SecondsDouble(const rtps::Time_t& t)
37{
38 return (double)t.seconds() + (double)(t.fraction()/pow(2.0,32));
39}
40
44inline int64_t Time_t2MicroSecondsInt64(const rtps::Time_t& t)
45{
46 return (int64_t)(t.fraction()/pow(2.0,32)*pow(10.0,6)) + t.seconds()*(int64_t)pow(10.0,6);
47}
48
52inline int64_t Duration_t2MicroSecondsInt64(const Duration_t& t)
53{
54 return (int64_t)(t.nanosec/1000.0)+t.seconds*(int64_t)pow(10.0,6);
55}
56
60inline double Time_t2MicroSecondsDouble(const rtps::Time_t& t)
61{
62 return ((double)t.fraction()/pow(2.0,32)*pow(10.0,6)) + (double)t.seconds()*pow(10.0,6);
63}
64
68inline int64_t Time_t2MilliSecondsInt64(const rtps::Time_t& t)
69{
70 return (int64_t)(t.fraction()/pow(2.0,32)*pow(10.0,3)) + t.seconds()*(int64_t)pow(10.0,3);
71}
72
76inline double Time_t2MilliSecondsDouble(const rtps::Time_t& t)
77{
78 return ((double)t.fraction()/pow(2.0,32)*pow(10.0,3)) + (double)t.seconds()*pow(10.0,3);
79}
80
84inline double Duration_t2MilliSecondsDouble(const Duration_t& t)
85{
86 return ((double)t.nanosec/1000000.0)+(double)t.seconds*pow(10.0,3);
87}
88
92inline rtps::Time_t MilliSeconds2Time_t(double millisec)
93{
94 rtps::Time_t t;
95 t.seconds((int32_t)(millisec/pow(10.0,3)));
96 t.fraction((uint32_t)((millisec-(double)t.seconds()*pow(10.0,3))/pow(10.0,3)*pow(2.0,32)));
97 return t;
98}
99
103inline rtps::Time_t MicroSeconds2Time_t(double microsec)
104{
105 rtps::Time_t t;
106 t.seconds((int32_t)(microsec/pow(10.0,6)));
107 t.fraction((uint32_t)((microsec-(double)t.seconds()*pow(10.0,6))/pow(10.0,6)*pow(2.0,32)));
108 return t;
109}
110
114inline rtps::Time_t Seconds2Time_t(double seconds)
115{
116 rtps::Time_t t;
117 t.seconds((int32_t)seconds);
118 t.fraction((uint32_t)((seconds-(double)t.seconds())*pow(2.0,32)));
119 return t;
120}
121
125inline double Time_tAbsDiff2DoubleMillisec(const rtps::Time_t& t1, const rtps::Time_t& t2)
126{
127 double result = 0;
128 result +=(double)abs((t2.seconds()-t1.seconds())*1000);
129 result +=(double)std::abs((t2.fraction()-t1.fraction())/pow(2.0,32)*1000);
130 return result;
131}
132
134inline rtps::Time_t MilliSecondsWithRandOffset2Time_t(double millisec, double randoff)
135{
136 randoff = std::abs(randoff);
137 millisec = millisec + (-randoff) + static_cast <double> (rand()) /( static_cast <double> (RAND_MAX/(2*randoff)));
138 return MilliSeconds2Time_t(millisec);
139}
141inline rtps::Time_t MicroSecondsWithRandOffset2Time_t(double microsec, double randoff)
142{
143 randoff = std::abs(randoff);
144 microsec = microsec + (-randoff) + static_cast <double> (rand()) /( static_cast <double> (RAND_MAX/(2*randoff)));
145 return MicroSeconds2Time_t(microsec);
146}
148inline rtps::Time_t SecondsWithRandOffset2Time_t(double sec, double randoff)
149{
150 randoff = std::abs(randoff);
151 sec = sec + (-randoff) + static_cast <double> (rand()) /( static_cast <double> (RAND_MAX/(2*randoff)));
152 return Seconds2Time_t(sec);
153}
154
155}
156}
157} /* namespace rtps */
158} /* namespace eprosima */
159
160#endif /* TIMECONVERSION_H_ */
rtps::Time_t MicroSeconds2Time_t(double microsec)
Convert microseconds to Time_t.
Definition TimeConversion.h:103
rtps::Time_t MilliSecondsWithRandOffset2Time_t(double millisec, double randoff)
Create a random Time_t that is millisec + [-randoff,randoff].
Definition TimeConversion.h:134
int64_t Time_t2MicroSecondsInt64(const rtps::Time_t &t)
Convert Time_t to seconds as an int64.
Definition TimeConversion.h:44
int64_t Duration_t2MicroSecondsInt64(const Duration_t &t)
Convert Duration_t to seconds as an int64.
Definition TimeConversion.h:52
double Time_t2MicroSecondsDouble(const rtps::Time_t &t)
Convert Time_t to microseconds as a double.
Definition TimeConversion.h:60
double Time_t2MilliSecondsDouble(const rtps::Time_t &t)
Convert Time_t to milliseconds as a double.
Definition TimeConversion.h:76
double Duration_t2MilliSecondsDouble(const Duration_t &t)
Convert Duration_t to milliseconds as a double.
Definition TimeConversion.h:84
int64_t Time_t2MilliSecondsInt64(const rtps::Time_t &t)
Convert Time_t to milliseconds as an int64.
Definition TimeConversion.h:68
rtps::Time_t SecondsWithRandOffset2Time_t(double sec, double randoff)
Create a random Time_t that is sec + [-randoff,randoff].
Definition TimeConversion.h:148
rtps::Time_t MilliSeconds2Time_t(double millisec)
Convert milliseconds to Time_t.
Definition TimeConversion.h:92
double Time_t2SecondsDouble(const rtps::Time_t &t)
Convert Time_t to seconds as a double.
Definition TimeConversion.h:36
double Time_tAbsDiff2DoubleMillisec(const rtps::Time_t &t1, const rtps::Time_t &t2)
Get the absolute difference between two Time_t in milliseconds as double.
Definition TimeConversion.h:125
rtps::Time_t MicroSecondsWithRandOffset2Time_t(double microsec, double randoff)
Create a random Time_t that is microsec + [-randoff,randoff].
Definition TimeConversion.h:141
rtps::Time_t Seconds2Time_t(double seconds)
Convert seconds to Time_t.
Definition TimeConversion.h:114
eProsima namespace.
Definition LibrarySettingsAttributes.h:23