ecos: added mode and duration to switch
Dieser Commit ist enthalten in:
Ursprung
b6e0fe3959
Commit
be63db9378
@ -60,6 +60,7 @@ struct Option
|
||||
{
|
||||
static constexpr std::string_view addr = "addr";
|
||||
static constexpr std::string_view dir = "dir";
|
||||
static constexpr std::string_view duration = "duration";
|
||||
static constexpr std::string_view go = "go";
|
||||
static constexpr std::string_view info = "info";
|
||||
static constexpr std::string_view mode = "mode";
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
namespace ECoS {
|
||||
|
||||
const std::initializer_list<std::string_view> Switch::options = {Option::addr, Option::protocol, Option::state, Option::mode};
|
||||
const std::initializer_list<std::string_view> Switch::options = {Option::addr, Option::protocol, Option::state, Option::mode, Option::duration};
|
||||
|
||||
static bool fromString(std::string_view text, Switch::Protocol& protocol)
|
||||
{
|
||||
@ -40,6 +40,17 @@ static bool fromString(std::string_view text, Switch::Protocol& protocol)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool fromString(std::string_view text, Switch::Mode& mode)
|
||||
{
|
||||
if(text == "SWITCH")
|
||||
mode = Switch::Mode::Switch;
|
||||
else if(text == "PULSE")
|
||||
mode = Switch::Mode::Pulse;
|
||||
else
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
Switch::Switch(Kernel& kernel, uint16_t id)
|
||||
: Object(kernel, id)
|
||||
{
|
||||
@ -57,7 +68,9 @@ Switch::Switch(Kernel& kernel, const Line& data)
|
||||
if(auto state = values.find(Option::state); state != values.end())
|
||||
{}
|
||||
if(auto mode = values.find(Option::mode); mode != values.end())
|
||||
{}
|
||||
fromString(mode->second, m_mode);
|
||||
if(auto duration = values.find(Option::duration); duration != values.end())
|
||||
fromChars(duration->second, m_duration);
|
||||
}
|
||||
|
||||
bool Switch::receiveReply(const Reply& reply)
|
||||
|
||||
@ -41,9 +41,18 @@ class Switch final : public Object
|
||||
MM = 2,
|
||||
};
|
||||
|
||||
enum class Mode
|
||||
{
|
||||
Unknown = 0,
|
||||
Switch = 1,
|
||||
Pulse = 2,
|
||||
};
|
||||
|
||||
private:
|
||||
uint16_t m_address = 0;
|
||||
Protocol m_protocol = Protocol::Unknown;
|
||||
Mode m_mode = Mode::Unknown;
|
||||
uint16_t m_duration = 0;
|
||||
|
||||
public:
|
||||
static const std::initializer_list<std::string_view> options;
|
||||
@ -56,6 +65,8 @@ class Switch final : public Object
|
||||
|
||||
uint16_t address() const { return m_address; }
|
||||
Protocol protocol() const { return m_protocol; }
|
||||
Mode mode() const { return m_mode; }
|
||||
uint16_t duration() const { return m_duration; }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren