Implement DevicePropertyId_CurrentKbootCommand
This commit is contained in:
@@ -27,7 +27,7 @@ status_t KbootSlaveDriver_Update(uint8_t kbootInstanceId)
|
|||||||
{
|
{
|
||||||
status_t status = kStatus_Uhk_IdleSlave;
|
status_t status = kStatus_Uhk_IdleSlave;
|
||||||
|
|
||||||
switch (KbootDriverState.commandType) {
|
switch (KbootDriverState.command) {
|
||||||
case KbootCommand_Idle:
|
case KbootCommand_Idle:
|
||||||
break;
|
break;
|
||||||
case KbootCommand_Ping:
|
case KbootCommand_Ping:
|
||||||
@@ -49,7 +49,7 @@ status_t KbootSlaveDriver_Update(uint8_t kbootInstanceId)
|
|||||||
case KbootPhase_CheckPingResponseStatus:
|
case KbootPhase_CheckPingResponseStatus:
|
||||||
KbootDriverState.status = Slaves[SlaveId_KbootDriver].previousStatus;
|
KbootDriverState.status = Slaves[SlaveId_KbootDriver].previousStatus;
|
||||||
if (KbootDriverState.status == kStatus_Success) {
|
if (KbootDriverState.status == kStatus_Success) {
|
||||||
KbootDriverState.commandType = KbootCommand_Idle;
|
KbootDriverState.command = KbootCommand_Idle;
|
||||||
} else {
|
} else {
|
||||||
KbootDriverState.phase = KbootPhase_SendPing;
|
KbootDriverState.phase = KbootPhase_SendPing;
|
||||||
return kStatus_Uhk_IdleCycle;
|
return kStatus_Uhk_IdleCycle;
|
||||||
@@ -72,7 +72,7 @@ status_t KbootSlaveDriver_Update(uint8_t kbootInstanceId)
|
|||||||
break;
|
break;
|
||||||
case KbootPhase_CheckResetSendAck:
|
case KbootPhase_CheckResetSendAck:
|
||||||
status = tx(ackMessage, sizeof(ackMessage));
|
status = tx(ackMessage, sizeof(ackMessage));
|
||||||
KbootDriverState.commandType = KbootCommand_Idle;
|
KbootDriverState.command = KbootCommand_Idle;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
} kboot_reset_phase_t;
|
} kboot_reset_phase_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
kboot_command_t commandType;
|
kboot_command_t command;
|
||||||
uint8_t i2cAddress;
|
uint8_t i2cAddress;
|
||||||
uint8_t phase;
|
uint8_t phase;
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "usb_protocol_handler.h"
|
#include "usb_protocol_handler.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
#include "versions.h"
|
#include "versions.h"
|
||||||
|
#include "slave_drivers/kboot_driver.h"
|
||||||
|
|
||||||
version_t deviceProtocolVersion = {
|
version_t deviceProtocolVersion = {
|
||||||
DEVICE_PROTOCOL_MAJOR_VERSION,
|
DEVICE_PROTOCOL_MAJOR_VERSION,
|
||||||
@@ -55,6 +56,9 @@ void UsbCommand_GetDeviceProperty(void)
|
|||||||
case DevicePropertyId_ConfigSizes:
|
case DevicePropertyId_ConfigSizes:
|
||||||
memcpy(GenericHidOutBuffer+1, (uint8_t*)&configSizes, sizeof(configSizes));
|
memcpy(GenericHidOutBuffer+1, (uint8_t*)&configSizes, sizeof(configSizes));
|
||||||
break;
|
break;
|
||||||
|
case DevicePropertyId_CurrentKbootCommand:
|
||||||
|
GenericHidOutBuffer[1] = KbootDriverState.command;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
SetUsbTxBufferUint8(0, UsbStatusCode_GetDeviceProperty_InvalidProperty);
|
SetUsbTxBufferUint8(0, UsbStatusCode_GetDeviceProperty_InvalidProperty);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
DevicePropertyId_DeviceProtocolVersion = 0,
|
DevicePropertyId_DeviceProtocolVersion = 0,
|
||||||
DevicePropertyId_ProtocolVersions = 1,
|
DevicePropertyId_ProtocolVersions = 1,
|
||||||
DevicePropertyId_ConfigSizes = 2,
|
DevicePropertyId_ConfigSizes = 2,
|
||||||
|
DevicePropertyId_CurrentKbootCommand = 3,
|
||||||
} system_property_t;
|
} system_property_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ void UsbCommand_SendKbootCommandToModule(void)
|
|||||||
{
|
{
|
||||||
KbootDriverState.phase = 0;
|
KbootDriverState.phase = 0;
|
||||||
KbootDriverState.i2cAddress = GetUsbRxBufferUint8(2);
|
KbootDriverState.i2cAddress = GetUsbRxBufferUint8(2);
|
||||||
KbootDriverState.commandType = GetUsbRxBufferUint8(1); // Command should be set last.
|
KbootDriverState.command = GetUsbRxBufferUint8(1); // Command should be set last.
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user