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
168168
169169 datetime_t GSF::FromTicks(const int64_t ticks)
170170 {
171− static float64_t tickInterval = float64_t(Ticks::PerSecond);
171+ static float64_t ticksPerSecondF = float64_t(Ticks::PerSecond);
172172 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);
174174 return time + TimeSpan(0, 0, 0, pticks % DateTimeTicksPerSecond);
175175 }
176176
@@ -182,6 +182,26 @@ int64_t GSF::ToTicks(const datetime_t& time) · 5 unmodified lines
182182 int64_t(offset.fractional_seconds() / tickInterval * Ticks::PerSecond);
183183 }
184184
185+bool 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+
200+bool 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+
185205 uint32_t GSF::TicksToString(char* ptr, uint32_t maxsize, string format, int64_t ticks)
186206 {
187207 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