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

@@ -0,0 +1,24 @@
#include "i2c_error_logger.h"
i2c_slave_error_counter_t I2cSlaveErrorCounters[MAX_SLAVE_COUNT];
void LogI2cError(uint8_t slaveId, status_t status)
{
i2c_slave_error_counter_t *i2cSlaveErrorCounter = I2cSlaveErrorCounters + slaveId;
uint8_t errorIdx;
for (errorIdx=0; errorIdx<i2cSlaveErrorCounter->errorTypeCount; errorIdx++) {
i2c_error_count_t *currentI2cError = i2cSlaveErrorCounter->errors + errorIdx;
if (currentI2cError->status == status) {
currentI2cError->count++;
break;
}
}
if (errorIdx == i2cSlaveErrorCounter->errorTypeCount && errorIdx < MAX_LOGGED_I2C_ERROR_TYPES_PER_SLAVE) {
i2cSlaveErrorCounter->errorTypeCount++;
i2c_error_count_t *currentI2cError = i2cSlaveErrorCounter->errors + errorIdx;
currentI2cError->status = status;
currentI2cError->count = 1;
}
}