Files
dali_cpp/include/device.hpp
T
Tony bbcfcd11f6 Add support for DT4, DT5, and DT6 devices
- Updated CMakeLists.txt to include new source files for DT4, DT5, and DT6.
- Modified dali.hpp to include headers for DT4, DT5, and DT6.
- Added command definitions for DT4, DT5, and DT6 in dali_define.hpp.
- Enhanced DaliDeviceCapabilities to support DT4, DT5, and DT6 detection.
- Implemented DT4 and DT5 classes with methods for device control and status querying.
- Created DT6 class with methods for device control and status querying.
- Updated decode.cpp to include new device types in the deviceTypeName mapping.
- Enhanced device.cpp to handle new device capabilities.
2026-04-24 13:36:08 +08:00

120 lines
3.2 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> supportsDt4;
std::optional<bool> supportsDt5;
std::optional<bool> supportsDt6;
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);
};