Log I2C error counts on a per slave and per error type basis and expose them via USB.

This commit is contained in:
László Monda
2018-01-05 03:23:48 +01:00
parent 33e501cd83
commit 6ad425cbf9
8 changed files with 101 additions and 1 deletions

View File

@@ -7,6 +7,7 @@
#include "i2c.h"
#include "i2c_addresses.h"
#include "config.h"
#include "i2c_error_logger.h"
uint32_t I2cSlaveScheduler_Counter;
@@ -60,6 +61,7 @@ static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle,
uhk_slave_t *currentSlave = Slaves + currentSlaveId;
previousSlave->previousStatus = previousStatus;
LogI2cError(previousSlaveId, previousStatus);
if (isFirstIteration) {
bool wasPreviousSlaveConnected = previousSlave->isConnected;
@@ -75,6 +77,7 @@ static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle,
}
status_t currentStatus = currentSlave->update(currentSlave->perDriverId);
LogI2cError(currentSlaveId, currentStatus);
isTransferScheduled = currentStatus != kStatus_Uhk_IdleSlave && currentStatus != kStatus_Uhk_NoTransfer;
if (isTransferScheduled) {
currentSlave->isConnected = true;