diff options
author | Johnathan Corgan | 2010-07-21 18:30:01 -0700 |
---|---|---|
committer | Johnathan Corgan | 2010-07-21 18:30:01 -0700 |
commit | b055c7b35144093aa31830bf891c18a9751beb86 (patch) | |
tree | 8c884a89dcfb8c5d7461edde361f9eafce4ee61b /gr-qtgui/src/lib | |
parent | 22bc2fabead56a409315d6e7632494140680de36 (diff) | |
parent | 9df7bb4aafc6196f15d2d2b4f4458368c6a685e8 (diff) | |
download | gnuradio-b055c7b35144093aa31830bf891c18a9751beb86.tar.gz gnuradio-b055c7b35144093aa31830bf891c18a9751beb86.tar.bz2 gnuradio-b055c7b35144093aa31830bf891c18a9751beb86.zip |
Merge branch 'master' into next
* master:
gnuradio-core: export missing public methods in gr.agc2
wxgui: fix to use wx.Colour which is the actual name of the class (wx python wrapper may be missing wx.Color wrapper)
From my reading, we should never need to define the timespec struct (so we will wait until this bites me).
Checking for clock_gettime and timespec defined; use gettimeofday if not, but put it into a timespec structure.
Reformatting highResTimeFunction.h for better readibility.
Diffstat (limited to 'gr-qtgui/src/lib')
-rw-r--r-- | gr-qtgui/src/lib/highResTimeFunctions.h | 185 |
1 files changed, 147 insertions, 38 deletions
diff --git a/gr-qtgui/src/lib/highResTimeFunctions.h b/gr-qtgui/src/lib/highResTimeFunctions.h index b85b1acad..251bbad8b 100644 --- a/gr-qtgui/src/lib/highResTimeFunctions.h +++ b/gr-qtgui/src/lib/highResTimeFunctions.h @@ -8,41 +8,74 @@ static const long NSEC_PER_SEC = 1000000000L; -static inline bool timespec_greater(const struct timespec* t1, const struct timespec* t0){ - return ((t1->tv_sec > t0->tv_sec) || ((t1->tv_sec == t0->tv_sec) && (t1->tv_nsec > t0->tv_nsec))); +static inline bool +timespec_greater(const struct timespec* t1, + const struct timespec* t0) +{ + return ((t1->tv_sec > t0->tv_sec) || + ((t1->tv_sec == t0->tv_sec) && + (t1->tv_nsec > t0->tv_nsec))); } -static inline bool timespec_greater(const struct timespec t1, const struct timespec t0){ - return ((t1.tv_sec > t0.tv_sec) || ((t1.tv_sec == t0.tv_sec) && (t1.tv_nsec > t0.tv_nsec))); +static inline bool +timespec_greater(const struct timespec t1, + const struct timespec t0) +{ + return ((t1.tv_sec > t0.tv_sec) || + ((t1.tv_sec == t0.tv_sec) && + (t1.tv_nsec > t0.tv_nsec))); } -static inline bool timespec_less(const struct timespec* t1, const struct timespec* t0){ - return ((t1->tv_sec < t0->tv_sec) || ((t1->tv_sec == t0->tv_sec) && (t1->tv_nsec < t0->tv_nsec))); +static inline bool +timespec_less(const struct timespec* t1, + const struct timespec* t0) +{ + return ((t1->tv_sec < t0->tv_sec) || + ((t1->tv_sec == t0->tv_sec) && + (t1->tv_nsec < t0->tv_nsec))); } -static inline bool timespec_less(const struct timespec t1, const struct timespec t0){ - return ((t1.tv_sec < t0.tv_sec) || ((t1.tv_sec == t0.tv_sec) && (t1.tv_nsec < t0.tv_nsec))); +static inline bool +timespec_less(const struct timespec t1, + const struct timespec t0) +{ + return ((t1.tv_sec < t0.tv_sec) || + ((t1.tv_sec == t0.tv_sec) && + (t1.tv_nsec < t0.tv_nsec))); } -static inline bool timespec_equal(const struct timespec* t1, const struct timespec* t0){ - return ((t1->tv_sec == t0->tv_sec) && (t1->tv_nsec == t0->tv_nsec)); +static inline bool +timespec_equal(const struct timespec* t1, + const struct timespec* t0) +{ + return ((t1->tv_sec == t0->tv_sec) && + (t1->tv_nsec == t0->tv_nsec)); } -static inline bool timespec_equal(const struct timespec t1, const struct timespec t0){ - return ((t1.tv_sec == t0.tv_sec) && (t1.tv_nsec == t0.tv_nsec)); +static inline bool +timespec_equal(const struct timespec t1, + const struct timespec t0) +{ + return ((t1.tv_sec == t0.tv_sec) && + (t1.tv_nsec == t0.tv_nsec)); } -static inline void timespec_reset(struct timespec* ret){ +static inline void +timespec_reset(struct timespec* ret) +{ ret->tv_sec = 0; ret->tv_nsec = 0; } -static inline void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec){ - while (nsec > NSEC_PER_SEC){ +static inline void +set_normalized_timespec(struct timespec *ts, + time_t sec, long nsec) +{ + while (nsec > NSEC_PER_SEC) { nsec -= NSEC_PER_SEC; ++sec; } - while(nsec < 0){ + while(nsec < 0) { nsec += NSEC_PER_SEC; --sec; } @@ -50,10 +83,13 @@ static inline void set_normalized_timespec(struct timespec *ts, time_t sec, long ts->tv_nsec = nsec; } -static inline struct timespec convert_to_timespec(const double timeValue){ +static inline struct timespec +convert_to_timespec(const double timeValue) +{ struct timespec ret; double seconds = 0; - long nsec = static_cast<long>(modf(timeValue, &seconds) * static_cast<double>(NSEC_PER_SEC)); + long nsec = static_cast<long>(modf(timeValue, &seconds) * + static_cast<double>(NSEC_PER_SEC)); time_t sec = static_cast<time_t>(seconds); set_normalized_timespec(&ret, sec, nsec); @@ -61,28 +97,46 @@ static inline struct timespec convert_to_timespec(const double timeValue){ return ret; } -static inline double convert_from_timespec(const timespec actual){ - return (static_cast<double>(actual.tv_sec) + (static_cast<double>(actual.tv_nsec) / static_cast<double>(NSEC_PER_SEC))); +static inline double +convert_from_timespec(const timespec actual) +{ + return (static_cast<double>(actual.tv_sec) + + (static_cast<double>(actual.tv_nsec) / + static_cast<double>(NSEC_PER_SEC))); } -static inline void timespec_add(struct timespec *ret, const struct timespec* t1, const struct timespec* t0){ +static inline void +timespec_add(struct timespec *ret, + const struct timespec* t1, + const struct timespec* t0) +{ time_t sec = t1->tv_sec + t0->tv_sec; long nsec = t1->tv_nsec + t0->tv_nsec; set_normalized_timespec(ret, sec, nsec); } -static inline void timespec_add(struct timespec *ret, const struct timespec t1, const struct timespec t0){ +static inline void +timespec_add(struct timespec *ret, + const struct timespec t1, + const struct timespec t0) +{ return timespec_add(ret, &t1, &t0); } -static inline struct timespec timespec_add(const struct timespec t1, const struct timespec t0){ +static inline struct timespec +timespec_add(const struct timespec t1, + const struct timespec t0) +{ struct timespec ret; timespec_add(&ret, &t1, &t0); return ret; } -static inline struct timespec timespec_add(const struct timespec t1, const double time0){ +static inline struct timespec +timespec_add(const struct timespec t1, + const double time0) +{ struct timespec ret; struct timespec t0; t0 = convert_to_timespec(time0); @@ -92,24 +146,38 @@ static inline struct timespec timespec_add(const struct timespec t1, const doubl return ret; } -static inline void timespec_subtract(struct timespec *ret, const struct timespec* t1, const struct timespec* t0){ +static inline void +timespec_subtract(struct timespec *ret, + const struct timespec* t1, + const struct timespec* t0) +{ time_t sec = t1->tv_sec - t0->tv_sec; long nsec = t1->tv_nsec - t0->tv_nsec; set_normalized_timespec(ret, sec, nsec); } -static inline void timespec_subtract(struct timespec *ret, const struct timespec t1, const struct timespec t0){ +static inline void +timespec_subtract(struct timespec *ret, + const struct timespec t1, + const struct timespec t0) +{ return timespec_subtract(ret, &t1, &t0); } -static inline struct timespec timespec_subtract(const struct timespec t1, const struct timespec t0){ +static inline struct timespec +timespec_subtract(const struct timespec t1, + const struct timespec t0) +{ struct timespec ret; timespec_subtract(&ret, &t1, &t0); return ret; } -static inline struct timespec timespec_subtract(const struct timespec t1, const double time0){ +static inline struct timespec +timespec_subtract(const struct timespec t1, + const double time0) +{ struct timespec ret; struct timespec t0; t0 = convert_to_timespec(time0); @@ -119,7 +187,11 @@ static inline struct timespec timespec_subtract(const struct timespec t1, const return ret; } -static inline double diff_timespec(struct timespec* ret, const struct timespec *t1, const struct timespec* t0){ +static inline double +diff_timespec(struct timespec* ret, + const struct timespec *t1, + const struct timespec* t0) +{ struct timespec actual; time_t sec = 0; long nsec = 0; @@ -141,7 +213,8 @@ static inline double diff_timespec(struct timespec* ret, const struct timespec * sec = t0->tv_sec - t1->tv_sec; nsec = t0->tv_nsec - t1->tv_nsec; - // Do nothing with the ret value as the ret value would have to store a negative, which it can't. + // Do nothing with the ret value as the ret value + // would have to store a negative, which it can't. set_normalized_timespec(&actual, sec, nsec); @@ -149,23 +222,39 @@ static inline double diff_timespec(struct timespec* ret, const struct timespec * } } -static inline double diff_timespec(struct timespec* ret, const struct timespec t1, const struct timespec t0){ +static inline double +diff_timespec(struct timespec* ret, + const struct timespec t1, + const struct timespec t0) +{ return diff_timespec(ret, &t1, &t0); } -static inline double diff_timespec(const struct timespec t1, const struct timespec t0){ +static inline double +diff_timespec(const struct timespec t1, + const struct timespec t0) +{ return diff_timespec(NULL, &t1, &t0); } -static inline double diff_timespec(const struct timespec* t1, const struct timespec* t0){ +static inline double +diff_timespec(const struct timespec* t1, + const struct timespec* t0) +{ return diff_timespec(NULL, t1, t0); } -static inline void get_highres_clock(struct timespec* ret){ +#ifdef CLOCK_REALTIME +// If we can use clock_gettime, use it; +// otherwise, use gettimeofday +static inline void +get_highres_clock(struct timespec* ret) +{ if(clock_gettime(CLOCK_REALTIME, ret) != 0){ - // Unable to get high resolution time - fail over to low resolution time + // Unable to get high resolution time - + // fail over to low resolution time timeval lowResTime; gettimeofday(&lowResTime, NULL); ret->tv_sec = lowResTime.tv_sec; @@ -173,17 +262,37 @@ static inline void get_highres_clock(struct timespec* ret){ } } -static inline struct timespec get_highres_clock(){ +#else + +// Trick timer functions into thinking it has an nsec timer +// but only use the low resolution (usec) timer. +static inline void +get_highres_clock(struct timespec* ret) +{ + timeval lowResTime; + gettimeofday(&lowResTime, NULL); + ret->tv_sec = lowResTime.tv_sec; + ret->tv_nsec = lowResTime.tv_usec*1000; +} +#endif + +static inline struct timespec +get_highres_clock() +{ struct timespec ret; get_highres_clock(&ret); return ret; } -static inline bool timespec_empty(const struct timespec* ret){ +static inline bool +timespec_empty(const struct timespec* ret) +{ return ( (ret->tv_sec == 0 ) && (ret->tv_nsec == 0) ); } -static inline bool timespec_empty(const struct timespec ret){ +static inline bool +timespec_empty(const struct timespec ret) +{ return timespec_empty(&ret); } |