Included variant ID in target pin descriptor

This commit is contained in:
Nav
2021-09-04 17:58:05 +01:00
parent 90a4f1ce29
commit 1bc881e9ae
9 changed files with 13 additions and 16 deletions

View File

@@ -15,7 +15,6 @@ namespace Bloom::Events
static inline EventType type = EventType::SET_TARGET_PIN_STATE; static inline EventType type = EventType::SET_TARGET_PIN_STATE;
static inline const std::string name = "SetTargetPinState"; static inline const std::string name = "SetTargetPinState";
int variantId = 0;
Targets::TargetPinDescriptor pinDescriptor; Targets::TargetPinDescriptor pinDescriptor;
Targets::TargetPinState pinState; Targets::TargetPinState pinState;

View File

@@ -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<Events::TargetPinStatesRetrieved>(); auto pinStatesUpdateEvent = std::make_shared<Events::TargetPinStatesRetrieved>();
pinStatesUpdateEvent->correlationId = event.id; pinStatesUpdateEvent->correlationId = event.id;
pinStatesUpdateEvent->variantId = event.variantId; pinStatesUpdateEvent->variantId = event.pinDescriptor.variantId;
pinStatesUpdateEvent->pinSatesByNumber = { pinStatesUpdateEvent->pinSatesByNumber = {
{event.pinDescriptor.number, event.pinState} {event.pinDescriptor.number, event.pinState}
}; };

View File

@@ -123,11 +123,10 @@ Targets::TargetPinStateMappingType TargetControllerConsole::getPinStates(int var
return this->triggerTargetControllerEventAndWaitForResponse(requestEvent)->pinSatesByNumber; 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<SetTargetPinState>(); auto updateEvent = std::make_shared<SetTargetPinState>();
updateEvent->variantId = variantId;
updateEvent->pinDescriptor = std::move(pinDescriptor); updateEvent->pinDescriptor = std::move(pinDescriptor);
updateEvent->pinState = pinState; updateEvent->pinState = pinState;
this->eventManager.triggerEvent(updateEvent); this->triggerTargetControllerEventAndWaitForResponse(updateEvent);
} }

View File

@@ -197,12 +197,11 @@ namespace Bloom
Targets::TargetPinStateMappingType getPinStates(int variantId); 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 pinDescriptor
* @param pinState * @param pinState
*/ */
void setPinState(int variantId, Targets::TargetPinDescriptor pinDescriptor, Targets::TargetPinState pinState); void setPinState(Targets::TargetPinDescriptor pinDescriptor, Targets::TargetPinState pinState);
}; };
} }

View File

@@ -428,7 +428,8 @@ std::map<int, TargetPinState> Avr8::getPinStates(int variantId) {
return output; 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)) { if (!this->targetVariantsById.contains(variantId)) {
throw Exception("Invalid target variant ID"); throw Exception("Invalid target variant ID");
} }

View File

@@ -146,7 +146,6 @@ namespace Bloom::Targets::Microchip::Avr::Avr8Bit
std::map<int, TargetPinState> getPinStates(int variantId) override; std::map<int, TargetPinState> getPinStates(int variantId) override;
void setPinState( void setPinState(
int variantId,
const TargetPinDescriptor& pinDescriptor, const TargetPinDescriptor& pinDescriptor,
const TargetPinState& state const TargetPinState& state
) override; ) override;

View File

@@ -435,6 +435,7 @@ void TargetDescriptionFile::loadTargetVariants() {
targetPin.name = tdPin.pad; targetPin.name = tdPin.pad;
targetPin.padName = tdPin.pad; targetPin.padName = tdPin.pad;
targetPin.number = tdPin.position; targetPin.number = tdPin.position;
targetPin.variantId = targetVariant.id;
// TODO: REMOVE THIS: // TODO: REMOVE THIS:
if (tdPin.pad.find("vcc") == 0 if (tdPin.pad.find("vcc") == 0

View File

@@ -292,12 +292,10 @@ namespace Bloom::Targets
/** /**
* Should update the pin state for the given pin, with the given state. * Should update the pin state for the given pin, with the given state.
* *
* @param variantId
* @param pinDescriptor * @param pinDescriptor
* @param state * @param state
*/ */
virtual void setPinState( virtual void setPinState(
int variantId,
const TargetPinDescriptor& pinDescriptor, const TargetPinDescriptor& pinDescriptor,
const TargetPinState& state const TargetPinState& state
) = 0; ) = 0;

View File

@@ -8,7 +8,7 @@
namespace Bloom::Targets namespace Bloom::Targets
{ {
enum class TargetPinType: int enum class TargetPinType: std::uint8_t
{ {
UNKNOWN, UNKNOWN,
GPIO, GPIO,
@@ -19,6 +19,7 @@ namespace Bloom::Targets
struct TargetPinDescriptor struct TargetPinDescriptor
{ {
int number; int number;
int variantId;
bool supportsGpio = false; bool supportsGpio = false;
std::string name; std::string name;
std::string padName; std::string padName;
@@ -39,13 +40,13 @@ namespace Bloom::Targets
struct TargetPinState struct TargetPinState
{ {
enum class IoState: int enum class IoState: std::uint8_t
{ {
HIGH, HIGH,
LOW, LOW,
}; };
enum class IoDirection: int enum class IoDirection: std::uint8_t
{ {
INPUT, INPUT,
OUTPUT, OUTPUT,