git.stg.codes
/
stg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ticket 37. void testobject::test<8>() function added for checking
[stg.git]
/
projects
/
stargazer
/
stg_timer.cpp
diff --git
a/projects/stargazer/stg_timer.cpp
b/projects/stargazer/stg_timer.cpp
index 6d2b4b0cdd245a28a33db648ba631befa64f123a..572b069a511ff166ba9e6d82814f1af512048b11 100644
(file)
--- a/
projects/stargazer/stg_timer.cpp
+++ b/
projects/stargazer/stg_timer.cpp
@@
-1,15
+1,21
@@
-#include <pthread.h>
+#include "stg_timer.h"
+
+#include "stg/common.h"
#include <ctime>
#include <cstring>
#include <ctime>
#include <cstring>
+#include <csignal>
+
+#include <pthread.h>
-#include "common.h"
+void * StgTimer(void *);
static int nonstop;
static pthread_t thrStgTimer;
static bool isTimerRunning = false;
volatile time_t stgTime;
static int nonstop;
static pthread_t thrStgTimer;
static bool isTimerRunning = false;
volatile time_t stgTime;
+#ifdef STG_TIMER_DEBUG
const int TIME_SPEED = 1;
/*
1 - 1x speed
const int TIME_SPEED = 1;
/*
1 - 1x speed
@@
-18,12
+24,13
@@
const int TIME_SPEED = 1;
10 - 10x speed
*/
10 - 10x speed
*/
-const int START_TIME =
0
;
+const int START_TIME =
2
;
/*
0 - as is
1 - start before new day (3 min before) 29.11.2005 23:57:00
2 - start before new month (3 min before) 30.11.2005 23:57:00
*/
/*
0 - as is
1 - start before new day (3 min before) 29.11.2005 23:57:00
2 - start before new month (3 min before) 30.11.2005 23:57:00
*/
+#endif
//-----------------------------------------------------------------------------
void * StgTimer(void *)
//-----------------------------------------------------------------------------
void * StgTimer(void *)
@@
-32,11
+39,12
@@
void * StgTimer(void *)
struct tm lt;
memset(<, 0, sizeof(lt));
struct tm lt;
memset(<, 0, sizeof(lt));
-lt.tm_year = 20
07
- 1900; // 2005
-lt.tm_mon =
11
- 1; // Nov
+lt.tm_year = 20
16
- 1900; // 2005
+lt.tm_mon =
7
- 1; // Nov
lt.tm_hour = 23; // 23 h
lt.tm_min = 57; // 50 min
lt.tm_sec = 0; // 00 sec
lt.tm_hour = 23; // 23 h
lt.tm_min = 57; // 50 min
lt.tm_sec = 0; // 00 sec
+lt.tm_isdst = -1;
switch (START_TIME)
{
switch (START_TIME)
{
@@
-50,7
+58,7
@@
switch (START_TIME)
break;
case 2:
break;
case 2:
- lt.tm_mday = 3
0
;
+ lt.tm_mday = 3
1
;
stgTime = mktime(<);
break;
}
stgTime = mktime(<);
break;
}
@@
-58,19
+66,31
@@
switch (START_TIME)
stgTime = time(NULL);
#endif
stgTime = time(NULL);
#endif
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
nonstop = 1;
isTimerRunning = true;
while (nonstop)
{
#ifdef STG_TIMER_DEBUG
nonstop = 1;
isTimerRunning = true;
while (nonstop)
{
#ifdef STG_TIMER_DEBUG
- struct timespec ts = {0, 1000000000 / TIME_SPEED};
+ struct timespec ts;
+ if (TIME_SPEED == 1)
+ {
+ ts.tv_sec = 1;
+ ts.tv_nsec = 0;
+ }
+ else
+ {
+ ts.tv_sec = 0;
+ ts.tv_nsec = 1000000000 / TIME_SPEED;
+ }
nanosleep(&ts, NULL);
nanosleep(&ts, NULL);
- //usleep(1000000 / TIME_SPEED);
stgTime++;
#else
struct timespec ts = {0, 500000000};
nanosleep(&ts, NULL);
stgTime++;
#else
struct timespec ts = {0, 500000000};
nanosleep(&ts, NULL);
- //usleep(500000);
stgTime = time(NULL);
#endif
}
stgTime = time(NULL);
#endif
}
@@
-85,7
+105,7
@@
static int a = 0;
isTimerRunning = false;
if (a == 0)
isTimerRunning = false;
if (a == 0)
- if (pthread_create(&thrStgTimer, NULL, StgTimer, NULL))
+ if (pthread_create(&thrStgTimer, NULL,
&
StgTimer, NULL))
{
isTimerRunning = false;
return -1;
{
isTimerRunning = false;
return -1;
@@
-110,13
+130,11
@@
return isTimerRunning;
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
-struct timespec ts = {
(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000
};
+struct timespec ts = {
static_cast<time_t>((t / TIME_SPEED) / 1000000), static_cast<long>(((t / TIME_SPEED) % 1000000) * 1000)
};
return nanosleep(&ts, NULL);
return nanosleep(&ts, NULL);
-//return usleep(t / TIME_SPEED);
#else
#else
-struct timespec ts = {
t / 1000000, (t % 1000000) * 1000
};
+struct timespec ts = {
static_cast<time_t>(t / 1000000), static_cast<long>((t % 1000000) * 1000)
};
return nanosleep(&ts, NULL);
return nanosleep(&ts, NULL);
-//return usleep(t);
#endif
}
//-----------------------------------------------------------------------------
#endif
}
//-----------------------------------------------------------------------------