2018-03-20 23:56:42 +01:00
|
|
|
#include "knx_facade.h"
|
|
|
|
|
2018-11-07 00:32:36 +01:00
|
|
|
#ifdef ARDUINO_ARCH_SAMD
|
|
|
|
SamdPlatform platform;
|
|
|
|
Bau07B0 bau(platform);
|
|
|
|
#else
|
|
|
|
EspPlatform platform;
|
|
|
|
Bau57B0 bau(platform);
|
|
|
|
#endif
|
|
|
|
KnxFacade knx(bau);
|
2018-03-20 23:56:42 +01:00
|
|
|
|
2019-02-26 22:42:06 +01:00
|
|
|
void buttonUp()
|
|
|
|
{
|
|
|
|
if (knx.progMode())
|
|
|
|
{
|
|
|
|
digitalWrite(knx.ledPin(), LOW);
|
|
|
|
knx.progMode(false);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
digitalWrite(knx.ledPin(), HIGH);
|
|
|
|
knx.progMode(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-07 00:32:36 +01:00
|
|
|
KnxFacade::KnxFacade(BauSystemB& bau) : _bau(bau)
|
2018-03-20 23:56:42 +01:00
|
|
|
{
|
2018-03-29 23:44:53 +02:00
|
|
|
manufacturerId(0xfa);
|
2018-09-15 00:22:30 +02:00
|
|
|
_bau.addSaveRestore(this);
|
2018-03-20 23:56:42 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
bool KnxFacade::enabled()
|
|
|
|
{
|
|
|
|
return _bau.enabled();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::enabled(bool value)
|
|
|
|
{
|
|
|
|
_bau.enabled(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KnxFacade::progMode()
|
|
|
|
{
|
|
|
|
return _bau.deviceObject().progMode();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::progMode(bool value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().progMode(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KnxFacade::configured()
|
|
|
|
{
|
|
|
|
return _bau.configured();
|
|
|
|
}
|
|
|
|
|
2018-04-09 23:58:35 +02:00
|
|
|
uint32_t KnxFacade::ledPin()
|
|
|
|
{
|
|
|
|
return _ledPin;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::ledPin(uint32_t value)
|
|
|
|
{
|
|
|
|
_ledPin = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t KnxFacade::buttonPin()
|
|
|
|
{
|
|
|
|
return _buttonPin;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::buttonPin(uint32_t value)
|
|
|
|
{
|
|
|
|
_buttonPin = value;
|
|
|
|
}
|
|
|
|
|
2018-03-20 23:56:42 +01:00
|
|
|
void KnxFacade::readMemory()
|
|
|
|
{
|
|
|
|
_bau.readMemory();
|
|
|
|
}
|
|
|
|
|
2018-09-15 00:22:30 +02:00
|
|
|
void KnxFacade::writeMemory()
|
|
|
|
{
|
|
|
|
_bau.writeMemory();
|
|
|
|
}
|
|
|
|
|
2018-03-20 23:56:42 +01:00
|
|
|
void KnxFacade::loop()
|
|
|
|
{
|
|
|
|
_bau.loop();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::registerGroupObjects(GroupObject* groupObjects, uint16_t count)
|
|
|
|
{
|
|
|
|
_bau.groupObjectTable().groupObjects(groupObjects, count);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::manufacturerId(uint16_t value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().manufacturerId(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::bauNumber(uint32_t value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().bauNumber(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::orderNumber(const char* value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().orderNumber(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::hardwareType(uint8_t* value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().hardwareType(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KnxFacade::version(uint16_t value)
|
|
|
|
{
|
|
|
|
_bau.deviceObject().version(value);
|
|
|
|
}
|
|
|
|
|
2018-04-09 23:58:35 +02:00
|
|
|
void KnxFacade::start()
|
|
|
|
{
|
|
|
|
pinMode(_ledPin, OUTPUT);
|
|
|
|
|
2018-11-07 00:32:36 +01:00
|
|
|
pinMode(_buttonPin, INPUT_PULLUP);
|
2018-09-15 00:22:30 +02:00
|
|
|
|
2019-02-26 22:42:06 +01:00
|
|
|
attachInterrupt(_buttonPin, buttonUp, RISING);
|
2018-11-07 00:32:36 +01:00
|
|
|
enabled(true);
|
2018-04-09 23:58:35 +02:00
|
|
|
}
|
|
|
|
|
2018-03-20 23:56:42 +01:00
|
|
|
uint8_t* KnxFacade::paramData(uint32_t addr)
|
|
|
|
{
|
|
|
|
if (!_bau.configured())
|
|
|
|
return nullptr;
|
|
|
|
|
|
|
|
return _bau.parameters().data(addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t KnxFacade::paramByte(uint32_t addr)
|
|
|
|
{
|
|
|
|
if (!_bau.configured())
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
return _bau.parameters().getByte(addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t KnxFacade::paramWord(uint32_t addr)
|
|
|
|
{
|
|
|
|
if (!_bau.configured())
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
return _bau.parameters().getWord(addr);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t KnxFacade::paramInt(uint32_t addr)
|
|
|
|
{
|
|
|
|
if (!_bau.configured())
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
return _bau.parameters().getInt(addr);
|
|
|
|
}
|
2018-09-04 21:12:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
void KnxFacade::setSaveCallback(saveRestoreCallback func)
|
|
|
|
{
|
|
|
|
_saveCallback = func;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void KnxFacade::setRestoreCallback(saveRestoreCallback func)
|
|
|
|
{
|
|
|
|
_restoreCallback = func;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t* KnxFacade::save(uint8_t* buffer)
|
|
|
|
{
|
|
|
|
if (_saveCallback != 0)
|
|
|
|
return _saveCallback(buffer);
|
|
|
|
|
|
|
|
return buffer;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uint8_t* KnxFacade::restore(uint8_t* buffer)
|
|
|
|
{
|
|
|
|
if (_restoreCallback != 0)
|
|
|
|
return _restoreCallback(buffer);
|
|
|
|
|
|
|
|
return buffer;
|
|
|
|
}
|