117 lines
3.1 KiB
C++
117 lines
3.1 KiB
C++
#pragma once
|
|
|
|
#include "model_value.hpp"
|
|
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
struct DaliLongAddress {
|
|
int h = 0;
|
|
int m = 0;
|
|
int l = 0;
|
|
|
|
static DaliLongAddress fromJson(const DaliValue::Object* json);
|
|
DaliValue::Object toJson() const;
|
|
};
|
|
|
|
struct DaliDeviceCapabilities {
|
|
std::optional<bool> supportsDt1;
|
|
std::optional<bool> supportsDt8;
|
|
|
|
static DaliDeviceCapabilities fromJson(const DaliValue::Object* json);
|
|
DaliValue::Object toJson() const;
|
|
void merge(const DaliDeviceCapabilities& other);
|
|
};
|
|
|
|
struct DaliStatusFlags {
|
|
std::optional<bool> controlGearPresent;
|
|
std::optional<bool> lampFailure;
|
|
std::optional<bool> lampPowerOn;
|
|
std::optional<bool> limitError;
|
|
std::optional<bool> fadingCompleted;
|
|
std::optional<bool> resetState;
|
|
std::optional<bool> missingShortAddress;
|
|
std::optional<bool> psFault;
|
|
|
|
static DaliStatusFlags fromJson(const DaliValue::Object* json);
|
|
DaliValue::Object toJson() const;
|
|
bool hasData() const;
|
|
void merge(const DaliStatusFlags& other);
|
|
};
|
|
|
|
struct DaliDt8State {
|
|
std::optional<int> colorType;
|
|
std::optional<std::string> activeMode;
|
|
std::optional<int> xyX;
|
|
std::optional<int> xyY;
|
|
std::optional<int> xyMinX;
|
|
std::optional<int> xyMaxX;
|
|
std::optional<int> xyMinY;
|
|
std::optional<int> xyMaxY;
|
|
std::optional<int> mirek;
|
|
std::optional<int> mirekMin;
|
|
std::optional<int> mirekMax;
|
|
std::optional<std::vector<int>> rgbwaf;
|
|
std::optional<std::vector<int>> primaryN;
|
|
|
|
static DaliDt8State fromJson(const DaliValue::Object* json);
|
|
DaliValue::Object toJson() const;
|
|
};
|
|
|
|
struct DaliDt1State {
|
|
std::optional<int> emergencyLevel;
|
|
std::optional<int> emergencyMinLevel;
|
|
std::optional<int> emergencyMaxLevel;
|
|
std::optional<int> prolongTimeMinutes;
|
|
std::optional<int> ratedDurationMinutes;
|
|
std::optional<int> testDelayTime;
|
|
std::optional<int> failureStatus;
|
|
std::optional<int> emergencyStatus;
|
|
std::optional<int> emergencyMode;
|
|
std::optional<int> feature;
|
|
std::optional<int> version;
|
|
|
|
static DaliDt1State fromJson(const DaliValue::Object* json);
|
|
DaliValue::Object toJson() const;
|
|
};
|
|
|
|
struct DaliDevice {
|
|
std::string id;
|
|
std::string name;
|
|
std::optional<int> shortAddress;
|
|
std::optional<DaliLongAddress> longAddress;
|
|
bool isolated = false;
|
|
|
|
std::optional<int> brightness;
|
|
std::optional<int> groupBits;
|
|
std::optional<std::vector<int>> scenes;
|
|
|
|
std::optional<int> fadeTime;
|
|
std::optional<int> fadeRate;
|
|
std::optional<int> powerOnLevel;
|
|
std::optional<int> systemFailureLevel;
|
|
std::optional<int> minLevel;
|
|
std::optional<int> maxLevel;
|
|
std::optional<int> operatingMode;
|
|
std::optional<int> physicalMinLevel;
|
|
|
|
std::optional<int> deviceType;
|
|
std::vector<int> extType;
|
|
std::optional<int> version;
|
|
|
|
DaliDeviceCapabilities capabilities;
|
|
std::optional<DaliDt8State> dt8;
|
|
std::optional<DaliDt1State> dt1;
|
|
DaliStatusFlags statusFlags;
|
|
|
|
std::optional<std::string> lastSyncedUtc;
|
|
DaliValue::Object metadata;
|
|
|
|
static DaliDevice fromJson(const DaliValue::Object& json);
|
|
DaliValue::Object toJson() const;
|
|
|
|
std::string displayName() const;
|
|
void merge(const DaliDevice& other);
|
|
};
|