Keep track of FPGA time rollovers with 64-bit time.

This allows both greater than 72 minute (2^32 * 1 us) timeouts and also
gracefully handles notifiers across the FPGA time counter rollover.

Change-Id: Ibde0b903155f60b618b0ca4d5f8f6dd49f90b020
This commit is contained in:
Peter Johnson
2015-12-30 19:06:47 -08:00
committed by Brad Miller (WPI)
parent 063925e737
commit e2ec34090a
13 changed files with 71 additions and 43 deletions

View File

@@ -43,7 +43,7 @@ Notifier::~Notifier() {
*/
void Notifier::UpdateAlarm() {
int32_t status = 0;
updateNotifierAlarm(m_notifier, (uint32_t)(m_expirationTime * 1e6), &status);
updateNotifierAlarm(m_notifier, (uint64_t)(m_expirationTime * 1e6), &status);
wpi_setErrorWithContext(status, getHALErrorMessage(status));
}
@@ -51,7 +51,7 @@ void Notifier::UpdateAlarm() {
* Notify is called by the HAL layer. We simply need to pass it through to
* the user handler.
*/
void Notifier::Notify(uint32_t currentTimeInt, void *param) {
void Notifier::Notify(uint64_t currentTimeInt, void *param) {
Notifier* notifier = static_cast<Notifier*>(param);
notifier->m_processMutex.lock();