knx/src/knx_facade.h

69 lines
1.9 KiB
C
Raw Normal View History

2018-03-20 23:56:42 +01:00
#pragma once
2018-11-07 00:32:36 +01:00
#ifdef ARDUINO_ARCH_SAMD
#include "samd_platform.h"
#include "knx/bau07B0.h"
#endif
#ifdef ARDUINO_ARCH_ESP8266
2018-03-20 23:56:42 +01:00
#include "esp_platform.h"
2018-04-09 22:46:21 +02:00
#include "knx/bau57B0.h"
2018-11-07 00:32:36 +01:00
#endif
2018-03-20 23:56:42 +01:00
2018-04-09 23:58:35 +02:00
2018-09-04 21:12:50 +02:00
typedef uint8_t* (*saveRestoreCallback)(uint8_t* buffer);
class KnxFacade : private SaveRestore
2018-03-20 23:56:42 +01:00
{
public:
2018-11-07 00:32:36 +01:00
KnxFacade(BauSystemB& bau);
2018-03-20 23:56:42 +01:00
bool enabled();
void enabled(bool value);
bool progMode();
void progMode(bool value);
bool configured();
bool ledPinActiveOn();
/**
* @brief To adapt the output to hardware.
*
* @param ledPinActiveOn = "0" or "low" --> GPIO--LED--RESISTOR--VDD (for example NODE MCU)
* @param ledPinActiveOn = "1" or "high" --> GPIO--RESISTOR--LED--GND (for example WeMos D1 R2)
*/
void ledPinActiveOn(bool value);
2018-04-09 23:58:35 +02:00
uint32_t ledPin();
void ledPin(uint32_t value);
uint32_t buttonPin();
void buttonPin(uint32_t value);
2018-03-20 23:56:42 +01:00
void readMemory();
void writeMemory();
2018-03-20 23:56:42 +01:00
void loop();
void manufacturerId(uint16_t value);
void bauNumber(uint32_t value);
void orderNumber(const char* value);
void hardwareType(uint8_t* value);
void version(uint16_t value);
2018-04-09 23:58:35 +02:00
void start();
2018-09-04 21:12:50 +02:00
void setSaveCallback(saveRestoreCallback func);
void setRestoreCallback(saveRestoreCallback func);
2018-03-20 23:56:42 +01:00
uint8_t* paramData(uint32_t addr);
uint8_t paramByte(uint32_t addr);
uint16_t paramWord(uint32_t addr);
uint32_t paramInt(uint32_t addr);
GroupObject& getGroupObject(uint16_t goNr);
2018-03-20 23:56:42 +01:00
private:
2018-11-07 00:32:36 +01:00
BauSystemB& _bau;
bool _ledPinActiveOn = 0;
2019-01-03 22:20:50 +01:00
uint32_t _ledPin = LED_BUILTIN;
2018-04-09 23:58:35 +02:00
uint32_t _buttonPin = 0;
2018-11-07 00:32:36 +01:00
#ifdef USE_STATES
2018-04-09 23:58:35 +02:00
Ticker _ticker;
2018-11-07 00:32:36 +01:00
#endif
2018-09-04 21:12:50 +02:00
saveRestoreCallback _saveCallback = 0;
saveRestoreCallback _restoreCallback = 0;
uint8_t* save(uint8_t* buffer);
uint8_t* restore(uint8_t* buffer);
2018-03-20 23:56:42 +01:00
};
2019-05-18 21:04:49 +02:00
extern KnxFacade knx;