Files
BloomPatched/src/Targets/TargetPinDescriptor.hpp

66 lines
1.5 KiB
C++
Raw Normal View History

2021-04-04 21:04:12 +01:00
#pragma once
#include <string>
#include <cstdint>
#include <vector>
#include <optional>
#include <map>
#include <QMetaType>
2021-04-04 21:04:12 +01:00
namespace Targets
2021-04-04 21:04:12 +01:00
{
enum class TargetPinType: std::uint8_t
2021-05-25 21:50:17 +01:00
{
2021-04-04 21:04:12 +01:00
UNKNOWN,
GPIO,
GND,
VCC,
};
struct TargetPinDescriptor
{
int number;
int variantId;
2021-04-04 21:04:12 +01:00
bool supportsGpio = false;
std::string name;
std::string padName;
std::vector<std::string> functions;
TargetPinType type = TargetPinType::UNKNOWN;
bool operator == (const TargetPinDescriptor& pinDescriptor) const {
return this->number == pinDescriptor.number
&& this->supportsGpio == pinDescriptor.supportsGpio
&& this->name == pinDescriptor.name
&& this->padName == pinDescriptor.padName
&& this->functions == pinDescriptor.functions
&& this->type == pinDescriptor.type
;
}
2021-04-04 21:04:12 +01:00
};
struct TargetPinState
{
enum class IoState: std::uint8_t
2021-05-25 21:50:17 +01:00
{
2021-04-04 21:04:12 +01:00
HIGH,
LOW,
};
enum class IoDirection: std::uint8_t
2021-05-25 21:50:17 +01:00
{
2021-04-04 21:04:12 +01:00
INPUT,
OUTPUT,
};
std::optional<IoState> ioState;
std::optional<IoDirection> ioDirection;
};
using TargetPinStateMapping = std::map<int, Targets::TargetPinState>;
2021-04-04 21:04:12 +01:00
}
Q_DECLARE_METATYPE(Targets::TargetPinDescriptor)
Q_DECLARE_METATYPE(Targets::TargetPinState)
Q_DECLARE_METATYPE(Targets::TargetPinStateMapping)