#include <iostream> uint64_t ptp_time_ns = 883612965570493000; // 2262 // 922337203685477000 // 883612800000000000 - 1998 // 1609459200000000000 - 2021 // 8835955200000000000 - 2250 //16725225600000000000 - 2500 uint64_t cst_us = 18446744073709550; // CST // min: 0 (UINT64 MIN) // max: 18446744073709551 (UINT64 MAX / 1000) // 2554 //= uint64_t ptp_offset_ns = ptp_time_ns - (cst_us * 1000ULL);//-725846400000000000;//883612800000000000;// // PTP_OFFSET // min: 0 (UINT64 MIN) // max: 18446744073709551615 (UINT64 MAX) uint64_t ReadClockTime() { return (cst_us * 1000ULL) + ptp_offset_ns; } uint64_t ReadClockOffset() { return ptp_offset_ns; } bool GetSystemTimeAndOffsetMicros(uint64_t& rSystemTime, uint64_t& rSystemTimeOffset) { std::cout << "==GetSystemTimeAndOffsetMicros==" << std::endl; std::cout << "CST [us]: " << cst_us << std::endl; std::cout << "CST [ns]: " << (cst_us * 1000ULL) << std::endl; bool m_pTimeSyncClock = true; if (m_pTimeSyncClock) { int64_t ullCurrentTimeNsecs = ReadClockTime(); int64_t ullCurrentOffsetNsecs = ReadClockOffset(); std::cout << "ullCurrentTimeNsecs [ns]: " << (uint64_t)ullCurrentTimeNsecs << " (" << (int64_t)(ullCurrentTimeNsecs) << ")" << std::endl; std::cout << "ullCurrentOffsetNsecs [ns]: " << (uint64_t)ullCurrentOffsetNsecs << " (" << (int64_t)(ullCurrentOffsetNsecs) << ")" << std::endl; int64_t ullLeapNsecs = 37000000000; rSystemTime = (ullCurrentTimeNsecs - ullLeapNsecs) / 1000LL; rSystemTimeOffset = (ullCurrentOffsetNsecs - ullLeapNsecs) / 1000LL; std::cout << "rSystemTime [ns]: " << rSystemTime << " (" << (int64_t)(rSystemTime) << ")" << std::endl; std::cout << "rSystemTimeOffset [ns]: " << rSystemTimeOffset << " (" << (int64_t)(rSystemTimeOffset) << ")" << std::endl; return true; } return false; } int main() { uint64_t ullSystemTimeValue; uint64_t ullSystemTimeOffset; GetSystemTimeAndOffsetMicros(ullSystemTimeValue, ullSystemTimeOffset); uint64_t ullCSTTimeValue = ullSystemTimeValue - ullSystemTimeOffset; std::cout << std::endl << "==RESULTS==" << std::endl; std::cout << "ullSystemTimeValue : " << ullSystemTimeValue << " (" << (int64_t)ullSystemTimeValue << ")" << std::endl; std::cout << "ullSystemTimeOffset : " << ullSystemTimeOffset << " (" << (int64_t)ullSystemTimeOffset << ")" << std::endl; std::cout << "ullCSTTimeValue : " << ullCSTTimeValue << " (" << (int64_t)ullCSTTimeValue << ")" << std::endl; std::cout << "ullCSTTimeValue orig: " << cst_us << " (" << (int64_t)cst_us << ")" << std::endl; return 0; }
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}