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 const std::string name = "SetTargetPinState";
int variantId = 0;
Targets::TargetPinDescriptor pinDescriptor;
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>();
pinStatesUpdateEvent->correlationId = event.id;
pinStatesUpdateEvent->variantId = event.variantId;
pinStatesUpdateEvent->variantId = event.pinDescriptor.variantId;
pinStatesUpdateEvent->pinSatesByNumber = {
{event.pinDescriptor.number, event.pinState}
};

View File

@@ -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<SetTargetPinState>();
updateEvent->variantId = variantId;
updateEvent->pinDescriptor = std::move(pinDescriptor);
updateEvent->pinState = pinState;
this->eventManager.triggerEvent(updateEvent);
this->triggerTargetControllerEventAndWaitForResponse(updateEvent);
}

View File

@@ -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);
};
}

View File

@@ -428,7 +428,8 @@ std::map<int, TargetPinState> 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");
}

View File

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

View File

@@ -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

View File

@@ -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;

View File

@@ -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,