38 lines
1.0 KiB
C++
38 lines
1.0 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
|
|
};
|
|
|
|
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);
|
|
|
|
// 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;
|
|
};
|