13
0

Update timestamp types in CycleTimer class to be signed

This commit is contained in:
Tim Mayberry 2015-09-12 12:34:10 +10:00
parent 08e18a0cb4
commit 4330db1aa7

View File

@ -55,7 +55,7 @@ public:
// rint?? that may round to sample outside of cycle? // rint?? that may round to sample outside of cycle?
// max(0, value)? // max(0, value)?
uint32_t samples_since_cycle_start (uint64_t timer_val) const uint32_t samples_since_cycle_start (int64_t timer_val) const
{ {
if (timer_val < m_cycle_start) { if (timer_val < m_cycle_start) {
return 0; return 0;
@ -63,38 +63,39 @@ public:
return std::max((double)0, (timer_val - get_start ()) / get_sample_length_us ()); return std::max((double)0, (timer_val - get_start ()) / get_sample_length_us ());
} }
uint64_t timestamp_from_sample_offset (uint32_t sample_offset) int64_t timestamp_from_sample_offset (uint32_t sample_offset)
{ {
return m_cycle_start + get_sample_length_us () * sample_offset; return m_cycle_start + get_sample_length_us () * sample_offset;
} }
bool valid () const { return m_samples_per_cycle && m_samplerate; } bool valid () const { return m_samples_per_cycle && m_samplerate; }
bool in_cycle (uint64_t timer_value_us) const bool in_cycle(int64_t timer_value_us) const
{ return (timer_value_us >= get_start()) && (timer_value_us < get_next_start()); {
return (timer_value_us >= get_start()) && (timer_value_us < get_next_start());
} }
void reset_start (uint64_t timestamp) { m_cycle_start = timestamp; } void reset_start (int64_t timestamp) { m_cycle_start = timestamp; }
uint64_t get_start () const { return m_cycle_start; } int64_t get_start () const { return m_cycle_start; }
uint64_t microseconds_since_start (uint64_t timestamp) const int64_t microseconds_since_start (int64_t timestamp) const
{ {
return timestamp - m_cycle_start; return timestamp - m_cycle_start;
} }
uint64_t microseconds_since_start (uint32_t samples) const int64_t microseconds_since_start (uint32_t samples) const
{ {
return m_cycle_start + samples * get_sample_length_us (); return m_cycle_start + samples * get_sample_length_us ();
} }
uint64_t get_next_start () const int64_t get_next_start () const
{ {
return m_cycle_start + rint (get_length_us ()); return m_cycle_start + rint (get_length_us ());
} }
private: private:
uint64_t m_cycle_start; int64_t m_cycle_start;
uint32_t m_samplerate; uint32_t m_samplerate;
uint32_t m_samples_per_cycle; uint32_t m_samples_per_cycle;