From 6a54944cb15d3a1c594a8ab42e7e3db30ae0886c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Wed, 13 Dec 2017 01:27:04 +0100 Subject: [PATCH] Make UsbCommand_JumpToModuleBootloader() more robust by not making it dependent on the state of the module driver. --- lib/agent | 2 +- right/src/slave_drivers/uhk_module_driver.c | 20 +++++++------------ right/src/slave_drivers/uhk_module_driver.h | 3 +-- .../usb_command_jump_to_module_bootloader.c | 2 +- 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/lib/agent b/lib/agent index 04b4389..2702a74 160000 --- a/lib/agent +++ b/lib/agent @@ -1 +1 @@ -Subproject commit 04b43896c5f929155a0bdd4741294a1703254f89 +Subproject commit 2702a740359c717d922752128d357e2ce7c45b06 diff --git a/right/src/slave_drivers/uhk_module_driver.c b/right/src/slave_drivers/uhk_module_driver.c index 0cd88da..1bbb0fb 100644 --- a/right/src/slave_drivers/uhk_module_driver.c +++ b/right/src/slave_drivers/uhk_module_driver.c @@ -69,6 +69,13 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId) switch (*uhkModulePhase) { + // Jump to bootloader + case UhkModulePhase_JumpToBootloader: + txMessage.data[0] = SlaveCommand_JumpToBootloader; + txMessage.length = 1; + status = tx(i2cAddress); + break; + // Sync communication case UhkModulePhase_RequestSync: txMessage.data[0] = SlaveCommand_RequestProperty; @@ -177,19 +184,6 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId) } } status = kStatus_Uhk_NoTransfer; - *uhkModulePhase = UhkModulePhase_JumpToBootloader; - break; - - // Jump to bootloader - case UhkModulePhase_JumpToBootloader: - if (uhkModuleState->jumpToBootloader) { - txMessage.data[0] = SlaveCommand_JumpToBootloader; - txMessage.length = 1; - status = tx(i2cAddress); - uhkModuleState->jumpToBootloader = false; - } else { - status = kStatus_Uhk_NoTransfer; - } *uhkModulePhase = UhkModulePhase_SetTestLed; break; diff --git a/right/src/slave_drivers/uhk_module_driver.h b/right/src/slave_drivers/uhk_module_driver.h index 5a0f69c..4aa3681 100644 --- a/right/src/slave_drivers/uhk_module_driver.h +++ b/right/src/slave_drivers/uhk_module_driver.h @@ -49,9 +49,9 @@ UhkModulePhase_ProcessKeystates, // Misc phases - UhkModulePhase_JumpToBootloader, UhkModulePhase_SetTestLed, UhkModulePhase_SetLedPwmBrightness, + UhkModulePhase_JumpToBootloader, } uhk_module_phase_t; @@ -70,7 +70,6 @@ uint8_t firmwareI2cAddress; uint8_t bootloaderI2cAddress; uhk_module_features_t features; - bool jumpToBootloader; } uhk_module_state_t; typedef struct { diff --git a/right/src/usb_commands/usb_command_jump_to_module_bootloader.c b/right/src/usb_commands/usb_command_jump_to_module_bootloader.c index cd2aa08..2dfa08e 100644 --- a/right/src/usb_commands/usb_command_jump_to_module_bootloader.c +++ b/right/src/usb_commands/usb_command_jump_to_module_bootloader.c @@ -13,5 +13,5 @@ void UsbCommand_JumpToModuleBootloader(void) } uint8_t uhkModuleDriverId = SLOT_ID_TO_UHK_MODULE_DRIVER_ID(slotId); - UhkModuleStates[uhkModuleDriverId].jumpToBootloader = true; + UhkModuleStates[uhkModuleDriverId].phase = UhkModulePhase_JumpToBootloader; }