diff --git a/right/src/buspal/command.c b/right/src/buspal/command.c index 3b3a380..047d1d4 100644 --- a/right/src/buspal/command.c +++ b/right/src/buspal/command.c @@ -1,40 +1,11 @@ -#include -#include #include "command.h" -#include "packet/serial_packet.h" #include "crc16.h" - -#include "fsl_flash.h" -#include "fsl_device_registers.h" - -#if defined(ENABLE_USB) -#include "usb_class_hid.h" -#include "usb_device_stack_interface.h" -#include "usb_hid.h" -#include "bootloader_hid_report_ids.h" -#include "usb_error.h" -#include "usb_descriptor.h" -#include "usb_class_hid.h" -#endif - #include "bus_pal_hardware.h" -//! @addtogroup command -//! @{ - -//////////////////////////////////////////////////////////////////////////////// -// Variables -//////////////////////////////////////////////////////////////////////////////// - -//! @brief Command processor state data. command_processor_data_t g_commandData; buspal_state_t g_buspalState = kBuspal_Idle; uint8_t g_targetRxBuffer[64]; -//////////////////////////////////////////////////////////////////////////////// -// Definitions -//////////////////////////////////////////////////////////////////////////////// - void handle_reset(uint8_t *packet, uint32_t packetLength); void send_generic_response(uint32_t commandStatus, uint32_t commandTag); @@ -48,10 +19,6 @@ static void reset_data_phase(); static status_t peripheral_read(uint8_t *dest, uint32_t readLength); static status_t peripheral_write(uint8_t *src, uint32_t writeLength); -//////////////////////////////////////////////////////////////////////////////// -// Code -//////////////////////////////////////////////////////////////////////////////// - void handleUsbBusPalCommand() { g_commandData.state = kCommandState_CommandPhase; diff --git a/right/src/buspal/command.h b/right/src/buspal/command.h index 07fb4bb..0fe872d 100644 --- a/right/src/buspal/command.h +++ b/right/src/buspal/command.h @@ -1,17 +1,8 @@ -#ifndef _command_h -#define _command_h +#ifndef __COMMAND_H__ +#define __COMMAND_H__ #include "packet/serial_packet.h" -#include "packet/command_packet.h" -//! @addtogroup command -//! @{ - -//////////////////////////////////////////////////////////////////////////////// -// Definitions -//////////////////////////////////////////////////////////////////////////////// - -//! @brief Command state machine states. enum _command_state { kCommandState_CommandPhase, @@ -26,74 +17,42 @@ typedef enum _buspal_state kBuspal_I2c, } buspal_state_t; -typedef struct ConfigI2cCmdPacket -{ - command_packet_t commandPacket; //!< header - uint32_t address; //!< Parameter 0: i2c slave address. - uint32_t speed; //!< Parameter 1: i2c speed in kHz -} config_i2c_cmd_packet_t; - -//! @brief Format of command handler entry. typedef struct CommandHandlerEntry { void (*handleCommand)(uint8_t *packet, uint32_t packetLength); status_t (*handleData)(bool *hasMoreData); } command_handler_entry_t; -//! @brief Command processor data format. -typedef struct CommandProcessorData -{ - int32_t state; //!< Current state machine state - uint8_t *packet; //!< Pointer to packet in process - uint32_t packetLength; //!< Length of packet in process - struct DataPhase - { - uint8_t *data; //!< Data for data phase - uint32_t count; //!< Remaining count to produce/consume - uint32_t address; //!< Address for data phase - uint32_t dataBytesAvailable; //!< Number of bytes available at data pointer - uint8_t commandTag; //!< Tag of command running data phase - uint8_t option; //!< option for special command +typedef struct CommandProcessorData { + int32_t state; // Current state machine state + uint8_t *packet; // Pointer to packet in process + uint32_t packetLength; // Length of packet in process + struct DataPhase { + uint8_t *data; // Data for data phase + uint32_t count; // Remaining count to produce/consume + uint32_t address; // Address for data phase + uint32_t dataBytesAvailable; // Number of bytes available at data pointer + uint8_t commandTag; // Tag of command running data phase + uint8_t option; // Option for special command } dataPhase; - const command_handler_entry_t *handlerEntry; //! Pointer to handler table entry for packet in process + const command_handler_entry_t *handlerEntry; // Pointer to handler table entry for packet in process } command_processor_data_t; -//! @brief Interface to command processor operations. -typedef struct CommandInterface -{ +// Interface to command processor operations. +typedef struct CommandInterface { status_t (*init)(void); status_t (*pump)(void); const command_handler_entry_t *handlerTable; command_processor_data_t *stateData; } command_interface_t; -//////////////////////////////////////////////////////////////////////////////// -// Externals -//////////////////////////////////////////////////////////////////////////////// - -//! @brief Default command interface. +// Default command interface. extern command_interface_t g_commandInterface; -//////////////////////////////////////////////////////////////////////////////// -// Prototypes -//////////////////////////////////////////////////////////////////////////////// - -#if defined(__cplusplus) -extern "C" { -#endif // __cplusplus - -//! @brief Initialize the command processor component. +// Initialize the command processor component. status_t bootloader_command_init(void); -//! @brief Pump the command state machine. -//! -//! Executes one command or data phase transaction. +// Pump the command state machine. Executes one command or data phase transaction. status_t bootloader_command_pump(void); -#if defined(__cplusplus) -} -#endif // __cplusplus - -//! @} - -#endif // _command.h_ +#endif