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,19 @@
#include "fsl_common.h"
#include "usb_commands/usb_command_get_slave_i2c_errors.h"
#include "usb_protocol_handler.h"
#include "slave_scheduler.h"
#include "i2c_error_logger.h"
void UsbCommand_GetSlaveI2cErrors()
{
uint8_t slaveId = GetUsbRxBufferUint8(1);
if (!IS_VALID_SLAVE_ID(slaveId)) {
SetUsbTxBufferUint8(0, UsbStatusCode_GetModuleProperty_InvalidSlaveId);
}
i2c_slave_error_counter_t *i2cSlaveErrorCounter = I2cSlaveErrorCounters + slaveId;
GenericHidOutBuffer[1] = i2cSlaveErrorCounter->errorTypeCount;
memcpy(GenericHidOutBuffer + 2, i2cSlaveErrorCounter->errors, sizeof(i2c_error_count_t) * MAX_LOGGED_I2C_ERROR_TYPES_PER_SLAVE);
}

View File

@@ -0,0 +1,14 @@
#ifndef __USB_COMMAND_GET_SLAVE_I2C_ERRORS_H__
#define __USB_COMMAND_GET_SLAVE_I2C_ERRORS_H__
// Functions:
void UsbCommand_GetSlaveI2cErrors();
// Typedefs:
typedef enum {
UsbStatusCode_GetModuleProperty_InvalidSlaveId = 2,
} usb_status_code_get_slave_i2c_errors_t;
#endif