knxdisplay/main/KnxWorker.hpp
2026-02-09 15:28:12 +01:00

42 lines
1.2 KiB
C++

#pragma once
#include <cstdint>
#include <cstddef>
// KNX Group Object Info für Web-API
struct KnxGroupObjectInfo {
uint16_t goIndex; // Group Object Index (1-based)
uint16_t groupAddress; // Gruppenadresse (z.B. 1/2/3 = 0x0A03), 0 wenn nicht zugeordnet
uint8_t dptMain; // DPT Haupttyp
uint8_t dptSub; // DPT Subtyp
bool commFlag; // Kommunikations-Flag
bool readFlag; // Lese-Flag
bool writeFlag; // Schreib-Flag (empfangen vom Bus)
bool transmitFlag; // Sende-Flag (senden auf den Bus)
};
class KnxWorker {
public:
KnxWorker();
void init();
void toggleProgMode();
bool getProgMode();
void setProgMode(bool enabled);
void clearSettings();
void loop();
// KNX Gruppenadressen auslesen
size_t getGroupObjectCount();
bool getGroupObjectInfo(size_t index, KnxGroupObjectInfo& info);
// KNX Telegramm senden
bool sendSwitch(uint16_t groupAddr, bool value);
// Gruppenadresse als String formatieren (z.B. "1/2/3")
static void formatGroupAddress(uint16_t addr, char* buf, size_t bufSize);
private:
volatile uint8_t knxResetState_ = 0;
volatile uint32_t knxResetAtMs_ = 0;
};