blob: ead4781700d5cac5bf9e829e2a6f92dacb11324a [file] [log] [blame]
John Park33858a32018-09-28 23:05:48 -07001#include "aos/util/wrapping_counter.h"
Brian Silverman2f594502013-10-16 10:29:47 -07002
Stephan Pleinesf63bde82024-01-13 15:59:33 -08003namespace aos::util {
Brian Silverman2f594502013-10-16 10:29:47 -07004
5WrappingCounter::WrappingCounter(int32_t initial_count)
6 : count_(initial_count), last_count_(0) {}
7
8int32_t WrappingCounter::Update(uint8_t current) {
9 if (last_count_ > current) {
10 count_ += 0x100;
11 }
12 count_ = (count_ & 0xffffff00) | current;
13 last_count_ = current;
14 return count_;
15}
16
Stephan Pleinesf63bde82024-01-13 15:59:33 -080017} // namespace aos::util