struct tm *gsiGetGmTime(time_t *theTime) { static struct tm aTimeStruct; static struct tm *aRetVal = &aTimeStruct; OSCalendarTime aCalTimeStruct; OSTicksToCalendarTime(*theTime, &aCalTimeStruct); aRetVal->tm_sec = aCalTimeStruct.sec; aRetVal->tm_min = aCalTimeStruct.min; aRetVal->tm_hour = aCalTimeStruct.hour; aRetVal->tm_mday = aCalTimeStruct.mday; aRetVal->tm_mon = aCalTimeStruct.mon; aRetVal->tm_year = aCalTimeStruct.year - 1900; aRetVal->tm_wday = aCalTimeStruct.wday; aRetVal->tm_yday = 0; aRetVal->tm_isdst = 0; return aRetVal; }
int hello_thread() { int last_tm_sec = -1; uint32_t ip = 0; WHBLogPrintf("Hello World from a std::thread!"); if (!nn::ac::GetAssignedAddress(&ip)) { WHBLogPrintf("GetAssignedAddress failed!"); } WHBLogPrintf("My IP is: %u.%u.%u.%u", (ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, (ip >> 0) & 0xFF); while(WHBProcIsRunning()) { OSCalendarTime tm; OSTicksToCalendarTime(OSGetTime(), &tm); if (tm.tm_sec != last_tm_sec) { WHBLogPrintf("%02d/%02d/%04d %02d:%02d:%02d I'm still here.", tm.tm_mday, tm.tm_mon, tm.tm_year, tm.tm_hour, tm.tm_min, tm.tm_sec); last_tm_sec = tm.tm_sec; } WHBLogConsoleDraw(); OSSleepTicks(OSMillisecondsToTicks(100)); } WHBLogPrintf("Exiting... good bye."); WHBLogConsoleDraw(); OSSleepTicks(OSMillisecondsToTicks(1000)); return 0; }