From 5a986d367eb935ed5aee5673b3fd56dda596210a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Sat, 6 Jan 2018 02:04:47 +0100 Subject: [PATCH] Only call LogI2cError() if the passed status is an actual I2C error, otherwise it slows the mouse pointer down. --- right/src/i2c_error_logger.c | 4 ---- right/src/slave_scheduler.c | 8 ++++++-- right/src/slave_scheduler.h | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/right/src/i2c_error_logger.c b/right/src/i2c_error_logger.c index 4e9cc51..96b2c51 100644 --- a/right/src/i2c_error_logger.c +++ b/right/src/i2c_error_logger.c @@ -5,10 +5,6 @@ i2c_slave_error_counter_t I2cSlaveErrorCounters[MAX_SLAVE_COUNT]; void LogI2cError(uint8_t slaveId, status_t status) { - if (!(kStatus_I2C_Busy <= status && status <= kStatus_I2C_Timeout)) { - return; - } - i2c_slave_error_counter_t *i2cSlaveErrorCounter = I2cSlaveErrorCounters + slaveId; uint8_t errorIdx; diff --git a/right/src/slave_scheduler.c b/right/src/slave_scheduler.c index 9cc19ed..c4ccbc7 100644 --- a/right/src/slave_scheduler.c +++ b/right/src/slave_scheduler.c @@ -61,7 +61,9 @@ static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle, uhk_slave_t *currentSlave = Slaves + currentSlaveId; previousSlave->previousStatus = previousStatus; - LogI2cError(previousSlaveId, previousStatus); + if (IS_STATUS_I2C_ERROR(previousStatus)) { + LogI2cError(previousSlaveId, previousStatus); + } if (isFirstIteration) { bool wasPreviousSlaveConnected = previousSlave->isConnected; @@ -77,7 +79,9 @@ static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle, } status_t currentStatus = currentSlave->update(currentSlave->perDriverId); - LogI2cError(currentSlaveId, currentStatus); + if (IS_STATUS_I2C_ERROR(currentStatus)) { + LogI2cError(currentSlaveId, currentStatus); + } isTransferScheduled = currentStatus != kStatus_Uhk_IdleSlave && currentStatus != kStatus_Uhk_NoTransfer; if (isTransferScheduled) { currentSlave->isConnected = true; diff --git a/right/src/slave_scheduler.h b/right/src/slave_scheduler.h index 08aaa93..7a7fafd 100644 --- a/right/src/slave_scheduler.h +++ b/right/src/slave_scheduler.h @@ -11,6 +11,7 @@ #define SLAVE_COUNT (sizeof(Slaves) / sizeof(uhk_slave_t)) #define MAX_SLAVE_COUNT 6 #define IS_VALID_SLAVE_ID(slaveId) (0 <= slaveId && slaveId <= MAX_SLAVE_COUNT) + #define IS_STATUS_I2C_ERROR(status) (kStatus_I2C_Busy <= status && status <= kStatus_I2C_Timeout) // Typedefs: