History

TimeSeriesPlatformLibrary: Added base time offset rotation timer to data publisher for compact format.

J. Ritchie Carroll committed 7 years ago

Commit e37f0601 parent 3997aa67 files · +145 −7Browse files

Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Common/Convert.cpp (1 of 7 files). Show all

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Common/Convert.cpp+22−2
@@ -168,9 +168,9 @@ datetime_t GSF::FromUnixTime(time_t unixSOC, uint16_t milliseconds) · 167 unmodified lines
168 168
169datetime_t GSF::FromTicks(const int64_t ticks)169datetime_t GSF::FromTicks(const int64_t ticks)
170{170{
171 static float64_t tickInterval = float64_t(Ticks::PerSecond);171 static float64_t ticksPerSecondF = float64_t(Ticks::PerSecond);
172 const datetime_t time = from_time_t((ticks - Ticks::UnixBaseOffset) / Ticks::PerSecond);172 const datetime_t time = from_time_t((ticks - Ticks::UnixBaseOffset) / Ticks::PerSecond);
173 const int64_t pticks = int64_t(ticks % Ticks::PerSecond / tickInterval * DateTimeTicksPerSecond);173 const int64_t pticks = int64_t(ticks % Ticks::PerSecond / ticksPerSecondF * DateTimeTicksPerSecond);
174 return time + TimeSpan(0, 0, 0, pticks % DateTimeTicksPerSecond);174 return time + TimeSpan(0, 0, 0, pticks % DateTimeTicksPerSecond);
175}175}
176 176
@@ -182,6 +182,26 @@ int64_t GSF::ToTicks(const datetime_t& time) · 5 unmodified lines
182 int64_t(offset.fractional_seconds() / tickInterval * Ticks::PerSecond);182 int64_t(offset.fractional_seconds() / tickInterval * Ticks::PerSecond);
183}183}
184 184
185bool GSF::TimestampIsReasonable(const int64_t value, const float64_t lagTime, const float64_t leadTime, const bool utc)
186{
187 static const float64_t ticksPerSecondF = float64_t(Ticks::PerSecond);
188
189 if (lagTime <= 0)
190 throw runtime_error("lagTime must be greater than zero, but it can be less than one");
191
192 if (leadTime <= 0)
193 throw runtime_error("leadTime must be greater than zero, but it can be less than one");
194
195 // Calculate timestamp distance from local system time in seconds
196 const float64_t distance = (ToTicks(utc ? UtcNow() : Now()) - value) / ticksPerSecondF;
197 return distance >= -leadTime && distance <= lagTime;
198}
199
200bool GSF::TimestampIsReasonable(const datetime_t& value, const float64_t lagTime, const float64_t leadTime, const bool utc)
201{
202 return TimestampIsReasonable(ToTicks(value), lagTime, leadTime);
203}
204
185uint32_t GSF::TicksToString(char* ptr, uint32_t maxsize, string format, int64_t ticks)205uint32_t GSF::TicksToString(char* ptr, uint32_t maxsize, string format, int64_t ticks)
186{206{
187 time_t fromSeconds;207 time_t fromSeconds;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t