Log I2C error counts on a per slave and per error type basis and expose them via USB.
This commit is contained in:
19
right/src/usb_commands/usb_command_get_slave_i2c_errors.c
Normal file
19
right/src/usb_commands/usb_command_get_slave_i2c_errors.c
Normal 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);
|
||||
}
|
||||
14
right/src/usb_commands/usb_command_get_slave_i2c_errors.h
Normal file
14
right/src/usb_commands/usb_command_get_slave_i2c_errors.h
Normal 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
|
||||
Reference in New Issue
Block a user