From 1bc881e9ae464d277f6f86f865eeacf06c08af6b Mon Sep 17 00:00:00 2001 From: Nav Date: Sat, 4 Sep 2021 17:58:05 +0100 Subject: [PATCH] Included variant ID in target pin descriptor --- src/EventManager/Events/SetTargetPinState.hpp | 1 - src/TargetController/TargetController.cpp | 4 ++-- src/TargetController/TargetControllerConsole.cpp | 5 ++--- src/TargetController/TargetControllerConsole.hpp | 5 ++--- src/Targets/Microchip/AVR/AVR8/Avr8.cpp | 3 ++- src/Targets/Microchip/AVR/AVR8/Avr8.hpp | 1 - .../AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp | 1 + src/Targets/Target.hpp | 2 -- src/Targets/TargetPinDescriptor.hpp | 7 ++++--- 9 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/EventManager/Events/SetTargetPinState.hpp b/src/EventManager/Events/SetTargetPinState.hpp index 61399e0f..64a2697b 100644 --- a/src/EventManager/Events/SetTargetPinState.hpp +++ b/src/EventManager/Events/SetTargetPinState.hpp @@ -15,7 +15,6 @@ namespace Bloom::Events static inline EventType type = EventType::SET_TARGET_PIN_STATE; static inline const std::string name = "SetTargetPinState"; - int variantId = 0; Targets::TargetPinDescriptor pinDescriptor; Targets::TargetPinState pinState; diff --git a/src/TargetController/TargetController.cpp b/src/TargetController/TargetController.cpp index ae5e0936..1c8639f7 100644 --- a/src/TargetController/TargetController.cpp +++ b/src/TargetController/TargetController.cpp @@ -630,11 +630,11 @@ void TargetController::onSetPinStateEvent(const Events::SetTargetPinState& event ); } - this->target->setPinState(event.variantId, event.pinDescriptor, event.pinState); + this->target->setPinState(event.pinDescriptor, event.pinState); auto pinStatesUpdateEvent = std::make_shared(); pinStatesUpdateEvent->correlationId = event.id; - pinStatesUpdateEvent->variantId = event.variantId; + pinStatesUpdateEvent->variantId = event.pinDescriptor.variantId; pinStatesUpdateEvent->pinSatesByNumber = { {event.pinDescriptor.number, event.pinState} }; diff --git a/src/TargetController/TargetControllerConsole.cpp b/src/TargetController/TargetControllerConsole.cpp index 08a89749..f50bd306 100644 --- a/src/TargetController/TargetControllerConsole.cpp +++ b/src/TargetController/TargetControllerConsole.cpp @@ -123,11 +123,10 @@ Targets::TargetPinStateMappingType TargetControllerConsole::getPinStates(int var return this->triggerTargetControllerEventAndWaitForResponse(requestEvent)->pinSatesByNumber; } -void TargetControllerConsole::setPinState(int variantId, TargetPinDescriptor pinDescriptor, TargetPinState pinState) { +void TargetControllerConsole::setPinState(TargetPinDescriptor pinDescriptor, TargetPinState pinState) { auto updateEvent = std::make_shared(); - updateEvent->variantId = variantId; updateEvent->pinDescriptor = std::move(pinDescriptor); updateEvent->pinState = pinState; - this->eventManager.triggerEvent(updateEvent); + this->triggerTargetControllerEventAndWaitForResponse(updateEvent); } diff --git a/src/TargetController/TargetControllerConsole.hpp b/src/TargetController/TargetControllerConsole.hpp index a20ac5cb..d8f28850 100644 --- a/src/TargetController/TargetControllerConsole.hpp +++ b/src/TargetController/TargetControllerConsole.hpp @@ -197,12 +197,11 @@ namespace Bloom Targets::TargetPinStateMappingType getPinStates(int variantId); /** - * Requests a pin state update on the target, for a specific pin. + * Updates the pin state on the target, for a specific pin. * - * @param variantId * @param pinDescriptor * @param pinState */ - void setPinState(int variantId, Targets::TargetPinDescriptor pinDescriptor, Targets::TargetPinState pinState); + void setPinState(Targets::TargetPinDescriptor pinDescriptor, Targets::TargetPinState pinState); }; } diff --git a/src/Targets/Microchip/AVR/AVR8/Avr8.cpp b/src/Targets/Microchip/AVR/AVR8/Avr8.cpp index 522c9605..cc2137ff 100644 --- a/src/Targets/Microchip/AVR/AVR8/Avr8.cpp +++ b/src/Targets/Microchip/AVR/AVR8/Avr8.cpp @@ -428,7 +428,8 @@ std::map Avr8::getPinStates(int variantId) { return output; } -void Avr8::setPinState(int variantId, const TargetPinDescriptor& pinDescriptor, const TargetPinState& state) { +void Avr8::setPinState(const TargetPinDescriptor& pinDescriptor, const TargetPinState& state) { + auto variantId = pinDescriptor.variantId; if (!this->targetVariantsById.contains(variantId)) { throw Exception("Invalid target variant ID"); } diff --git a/src/Targets/Microchip/AVR/AVR8/Avr8.hpp b/src/Targets/Microchip/AVR/AVR8/Avr8.hpp index 9709382b..41c2b704 100644 --- a/src/Targets/Microchip/AVR/AVR8/Avr8.hpp +++ b/src/Targets/Microchip/AVR/AVR8/Avr8.hpp @@ -146,7 +146,6 @@ namespace Bloom::Targets::Microchip::Avr::Avr8Bit std::map getPinStates(int variantId) override; void setPinState( - int variantId, const TargetPinDescriptor& pinDescriptor, const TargetPinState& state ) override; diff --git a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp index 4b565281..59afb873 100644 --- a/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp +++ b/src/Targets/Microchip/AVR/AVR8/TargetDescription/TargetDescriptionFile.cpp @@ -435,6 +435,7 @@ void TargetDescriptionFile::loadTargetVariants() { targetPin.name = tdPin.pad; targetPin.padName = tdPin.pad; targetPin.number = tdPin.position; + targetPin.variantId = targetVariant.id; // TODO: REMOVE THIS: if (tdPin.pad.find("vcc") == 0 diff --git a/src/Targets/Target.hpp b/src/Targets/Target.hpp index 78321109..bab07726 100644 --- a/src/Targets/Target.hpp +++ b/src/Targets/Target.hpp @@ -292,12 +292,10 @@ namespace Bloom::Targets /** * Should update the pin state for the given pin, with the given state. * - * @param variantId * @param pinDescriptor * @param state */ virtual void setPinState( - int variantId, const TargetPinDescriptor& pinDescriptor, const TargetPinState& state ) = 0; diff --git a/src/Targets/TargetPinDescriptor.hpp b/src/Targets/TargetPinDescriptor.hpp index 01896384..298b33f4 100644 --- a/src/Targets/TargetPinDescriptor.hpp +++ b/src/Targets/TargetPinDescriptor.hpp @@ -8,7 +8,7 @@ namespace Bloom::Targets { - enum class TargetPinType: int + enum class TargetPinType: std::uint8_t { UNKNOWN, GPIO, @@ -19,6 +19,7 @@ namespace Bloom::Targets struct TargetPinDescriptor { int number; + int variantId; bool supportsGpio = false; std::string name; std::string padName; @@ -39,13 +40,13 @@ namespace Bloom::Targets struct TargetPinState { - enum class IoState: int + enum class IoState: std::uint8_t { HIGH, LOW, }; - enum class IoDirection: int + enum class IoDirection: std::uint8_t { INPUT, OUTPUT,