#include <cstdint>
#include <iostream>
#include <limits>

using namespace std;

static uint32_t current_time = numeric_limits<uint32_t>::max() - 1000;

uint32_t millis() {
	return current_time;
}

void advance_time() {
	cout << "... time advances ..." << endl;
	++current_time;
}

int main() {
	uint32_t curr_millis = millis();
	cout << "millis() = " << millis() << endl;

	for (uint8_t i = 0; i < 8; ++i) {
		int32_t next_gps_update = millis() + 1000;
		cout << "next_gps_update = millis() + 1000 = " << next_gps_update << " (unsigned: " << uint32_t(next_gps_update) << ")" << endl;

		advance_time();

		cout << "millis() = " << millis() << endl;
		cout << "millis() > next_gps_update = " << (millis() > next_gps_update) << endl;
	}

	return 0;
}