initial commit
This commit is contained in:
166
include/base.hpp
Normal file
166
include/base.hpp
Normal file
@@ -0,0 +1,166 @@
|
||||
#pragma once
|
||||
|
||||
#include "dali_comm.hpp"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <chrono>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
struct DaliStatus {
|
||||
bool controlGearPresent = false;
|
||||
bool lampFailure = false;
|
||||
bool lampPowerOn = false;
|
||||
bool limitError = false;
|
||||
bool fadingCompleted = false;
|
||||
bool resetState = false;
|
||||
bool missingShortAddress = false;
|
||||
bool psFault = false;
|
||||
|
||||
static DaliStatus fromByte(uint8_t status);
|
||||
};
|
||||
|
||||
class DaliBase {
|
||||
public:
|
||||
explicit DaliBase(DaliComm& comm);
|
||||
|
||||
// Runtime state mirrored from Dart DaliBase.
|
||||
const int broadcast = 127;
|
||||
bool isAllocAddr = false;
|
||||
int lastAllocAddr = 0;
|
||||
int selectedAddress = 127;
|
||||
|
||||
int64_t mcuTicks() const;
|
||||
|
||||
// Scene helpers
|
||||
bool toScene(int a, int s);
|
||||
bool reset(int a, int t = 2);
|
||||
|
||||
// Brightness helpers
|
||||
int brightnessToLog(int brightness) const;
|
||||
int logToBrightness(int logValue) const;
|
||||
bool setBright(int a, int b);
|
||||
bool setBrightPercentage(int a, double b);
|
||||
bool stopFade(int a);
|
||||
bool off(int a);
|
||||
bool on(int a);
|
||||
bool recallMaxLevel(int a);
|
||||
bool recallMinLevel(int a);
|
||||
|
||||
int groupToAddr(int gp) const;
|
||||
|
||||
// Core sending wrappers
|
||||
bool send(int a, uint8_t cmd);
|
||||
bool sendCmd(uint8_t addr, uint8_t cmd);
|
||||
bool sendExtCmd(int cmd, int value);
|
||||
|
||||
// DTR helpers
|
||||
bool setDTR(int value);
|
||||
bool setDTR1(int value);
|
||||
bool setDTR2(int value);
|
||||
std::optional<int> getDTR(int a);
|
||||
std::optional<int> getDTR1(int a);
|
||||
std::optional<int> getDTR2(int a);
|
||||
bool copyCurrentBrightToDTR(int a);
|
||||
|
||||
// Colour value helpers (DT8 plumbing)
|
||||
bool queryColourValue(int a);
|
||||
bool storeDTRAsAddr(int a);
|
||||
bool storeDTRAsSceneBright(int a, int s);
|
||||
bool storeScene(int a, int s);
|
||||
bool removeScene(int a, int s);
|
||||
bool addToGroup(int a, int g);
|
||||
bool removeFromGroup(int a, int g);
|
||||
bool storeDTRAsFadeTime(int a);
|
||||
bool storeDTRAsFadeRate(int a);
|
||||
bool storeDTRAsPoweredBright(int a);
|
||||
bool storeDTRAsSystemFailureLevel(int a);
|
||||
bool storeDTRAsMinLevel(int a);
|
||||
bool storeDTRAsMaxLevel(int a);
|
||||
bool storeColourTempLimits(int a);
|
||||
|
||||
std::optional<bool> getOnlineStatus(int a);
|
||||
std::optional<int> getBright(int a);
|
||||
std::optional<int> getDeviceType(int a);
|
||||
std::optional<int> getPhysicalMinLevel(int a);
|
||||
std::optional<int> getDeviceVersion(int a);
|
||||
|
||||
bool dtSelect(int value);
|
||||
bool activate(int a);
|
||||
bool setDTRAsColourX(int a);
|
||||
bool setDTRAsColourY(int a);
|
||||
bool setDTRAsColourRGB(int a);
|
||||
bool setDTRAsColourTemp(int a);
|
||||
bool copyReportColourToTemp(int a);
|
||||
|
||||
bool setGradualChangeSpeed(int a, int value);
|
||||
bool setGradualChangeRate(int a, int value);
|
||||
std::optional<std::pair<int, int>> getGradualChange(int a);
|
||||
std::optional<int> getGradualChangeRate(int a);
|
||||
std::optional<int> getGradualChangeSpeed(int a);
|
||||
|
||||
bool setPowerOnLevel(int a, int value);
|
||||
std::optional<int> getPowerOnLevel(int a);
|
||||
bool setSystemFailureLevel(int a, int value);
|
||||
std::optional<int> getSystemFailureLevel(int a);
|
||||
bool setMinLevel(int a, int value);
|
||||
std::optional<int> getMinLevel(int a);
|
||||
bool setMaxLevel(int a, int value);
|
||||
std::optional<int> getMaxLevel(int a);
|
||||
bool setFadeTime(int a, int value);
|
||||
std::optional<int> getFadeTime(int a);
|
||||
bool setFadeRate(int a, int value);
|
||||
std::optional<int> getFadeRate(int a);
|
||||
std::optional<int> getNextDeviceType(int a);
|
||||
|
||||
std::optional<int> getGroupH(int a);
|
||||
std::optional<int> getGroupL(int a);
|
||||
std::optional<int> getGroup(int a);
|
||||
bool setGroup(int a, int value);
|
||||
|
||||
std::optional<int> getScene(int a, int b);
|
||||
bool setScene(int a, int b);
|
||||
std::map<int, int> getScenes(int a);
|
||||
|
||||
std::optional<int> getStatus(int a);
|
||||
std::optional<bool> getControlGearPresent(int a);
|
||||
std::optional<bool> getLampFailureStatus(int a);
|
||||
std::optional<bool> getLampPowerOnStatus(int a);
|
||||
std::optional<bool> getLimitError(int a);
|
||||
std::optional<bool> getResetStatus(int a);
|
||||
std::optional<bool> getMissingShortAddress(int a);
|
||||
|
||||
bool terminate();
|
||||
bool randomise();
|
||||
bool initialiseAll();
|
||||
bool initialise();
|
||||
bool withdraw();
|
||||
bool cancel();
|
||||
bool physicalSelection();
|
||||
|
||||
bool queryAddressH(int addr);
|
||||
bool queryAddressM(int addr);
|
||||
bool queryAddressL(int addr);
|
||||
bool programShortAddr(int a);
|
||||
std::optional<int> queryShortAddr();
|
||||
std::optional<bool> verifyShortAddr(int a);
|
||||
std::optional<bool> compareAddress();
|
||||
std::optional<bool> compare(int h, int m, int l);
|
||||
|
||||
std::optional<int> getRandomAddrH(int addr);
|
||||
std::optional<int> getRandomAddrM(int addr);
|
||||
std::optional<int> getRandomAddrL(int addr);
|
||||
|
||||
// Exposed query helpers mirroring Dart API.
|
||||
std::optional<int> query(int a, uint8_t cmd);
|
||||
std::optional<int> queryCmd(uint8_t addr, uint8_t cmd);
|
||||
|
||||
private:
|
||||
DaliComm& comm_;
|
||||
|
||||
static uint8_t encodeCmdAddr(int dec_addr);
|
||||
static uint8_t encodeArcAddr(int dec_addr);
|
||||
};
|
||||
Reference in New Issue
Block a user