Merge branch 'thelsing-master' into memory_rework

This commit is contained in:
Bernhard Filzmaier 2019-10-10 11:33:05 +02:00
commit aa8110f4fb
2 changed files with 56 additions and 36 deletions

View File

@ -1,4 +1,5 @@
// used version: BSEC_1.4.7.3_Generic_Release_20190410 // used version: BSEC_1.4.7.3_Generic_Release_20190410
// 2 changes needed for version: BSEC_1.4.7.4_Generic_Release see below
#include <bsec.h> #include <bsec.h>
#include <knx.h> #include <knx.h>
#ifdef ARDUINO_ARCH_ESP8266 #ifdef ARDUINO_ARCH_ESP8266
@ -111,7 +112,7 @@ void setup(void)
iaqSensor.updateSubscription(sensorList, sizeof(sensorList)/sizeof(bsec_virtual_sensor_t), BSEC_SAMPLE_RATE_LP); iaqSensor.updateSubscription(sensorList, sizeof(sensorList)/sizeof(bsec_virtual_sensor_t), BSEC_SAMPLE_RATE_LP);
checkIaqSensorStatus(); checkIaqSensorStatus();
String output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%], CO2"; String output = "Timestamp [ms], raw temperature [°C], temperature[°C], pressure [hPa], raw relative humidity [%], humidity [%], gas [Ohm], IAQ, IAQ accuracy, CO2, CO2 Accuracy, breathVocEquivalent, breathVocAccuracy, compGasValue, compGas Accuracy, gasPercentage, gasPercentage Accuracy, staticIAQ, staticIAQ Accuracy, runInStatus, stabStatus";
Serial.println(output); Serial.println(output);
} }
@ -135,7 +136,7 @@ void loop(void)
output += ", " + String(iaqSensor.rawHumidity); output += ", " + String(iaqSensor.rawHumidity);
output += ", " + String(iaqSensor.humidity); output += ", " + String(iaqSensor.humidity);
output += ", " + String(iaqSensor.gasResistance); output += ", " + String(iaqSensor.gasResistance);
output += ", " + String(iaqSensor.iaq); output += ", " + String(iaqSensor.iaq); //.iaqEstimate for BSEC_1.4.7.4
output += ", " + String(iaqSensor.iaqAccuracy); output += ", " + String(iaqSensor.iaqAccuracy);
output += ", " + String(iaqSensor.co2Equivalent); output += ", " + String(iaqSensor.co2Equivalent);
output += ", " + String(iaqSensor.co2Accuracy); output += ", " + String(iaqSensor.co2Accuracy);
@ -143,8 +144,8 @@ void loop(void)
output += ", " + String(iaqSensor.breathVocAccuracy); output += ", " + String(iaqSensor.breathVocAccuracy);
output += ", " + String(iaqSensor.compGasValue); output += ", " + String(iaqSensor.compGasValue);
output += ", " + String(iaqSensor.compGasAccuracy); output += ", " + String(iaqSensor.compGasAccuracy);
output += ", " + String(iaqSensor.gasPercentageAcccuracy);
output += ", " + String(iaqSensor.gasPercentage); output += ", " + String(iaqSensor.gasPercentage);
output += ", " + String(iaqSensor.gasPercentageAcccuracy);
output += ", " + String(iaqSensor.staticIaq); output += ", " + String(iaqSensor.staticIaq);
output += ", " + String(iaqSensor.staticIaqAccuracy); output += ", " + String(iaqSensor.staticIaqAccuracy);
output += ", " + String(iaqSensor.runInStatus); output += ", " + String(iaqSensor.runInStatus);
@ -162,7 +163,7 @@ void loop(void)
goPressure.value(iaqSensor.pressure); goPressure.value(iaqSensor.pressure);
goRawHumidity.value(iaqSensor.rawHumidity); goRawHumidity.value(iaqSensor.rawHumidity);
goGasResistance.value(iaqSensor.gasResistance); goGasResistance.value(iaqSensor.gasResistance);
goIaqEstimate.value(iaqSensor.iaq); goIaqEstimate.value(iaqSensor.iaq); //.iaqEstimate for BSEC_1.4.7.4
goIaqAccurace.value(iaqSensor.iaqAccuracy); goIaqAccurace.value(iaqSensor.iaqAccuracy);
goTemperature.value(iaqSensor.temperature); goTemperature.value(iaqSensor.temperature);
goHumidity.value(iaqSensor.humidity); goHumidity.value(iaqSensor.humidity);

View File

@ -31,7 +31,7 @@ template <class P, class B> class KnxFacade : private SaveRestore
manufacturerId(0xfa); manufacturerId(0xfa);
_bau.addSaveRestore(this); _bau.addSaveRestore(this);
} }
virtual ~KnxFacade() virtual ~KnxFacade()
{ {
if (_bauPtr) if (_bauPtr)
@ -61,27 +61,27 @@ template <class P, class B> class KnxFacade : private SaveRestore
{ {
return _bau.enabled(); return _bau.enabled();
} }
void enabled(bool value) void enabled(bool value)
{ {
_bau.enabled(true); _bau.enabled(true);
} }
bool progMode() bool progMode()
{ {
return _bau.deviceObject().progMode(); return _bau.deviceObject().progMode();
} }
void progMode(bool value) void progMode(bool value)
{ {
_bau.deviceObject().progMode(value); _bau.deviceObject().progMode(value);
} }
bool configured() bool configured()
{ {
return _bau.configured(); return _bau.configured();
} }
/** /**
* returns HIGH if led is active on HIGH, LOW otherwise * returns HIGH if led is active on HIGH, LOW otherwise
*/ */
@ -89,7 +89,7 @@ template <class P, class B> class KnxFacade : private SaveRestore
{ {
return _ledPinActiveOn; return _ledPinActiveOn;
} }
/** /**
* Sets if the programming led is active on HIGH or LOW. * Sets if the programming led is active on HIGH or LOW.
* *
@ -99,42 +99,60 @@ template <class P, class B> class KnxFacade : private SaveRestore
{ {
_ledPinActiveOn = value; _ledPinActiveOn = value;
} }
uint32_t ledPin() uint32_t ledPin()
{ {
return _ledPin; return _ledPin;
} }
void ledPin(uint32_t value) void ledPin(uint32_t value)
{ {
_ledPin = value; _ledPin = value;
} }
/**
* returns RISING if interrupt is created in a rising signal, FALLING otherwise
*/
uint32_t buttonPinInterruptOn()
{
return _buttonPinInterruptOn;
}
/**
* Sets if the programming button creates a RISING or a FALLING signal.
*
* Set to RISING for GPIO--BUTTON--VDD or to FALLING for GPIO--BUTTON--GND
*/
void buttonPinInterruptOn(uint32_t value)
{
_buttonPinInterruptOn = value;
}
uint32_t buttonPin() uint32_t buttonPin()
{ {
return _buttonPin; return _buttonPin;
} }
void buttonPin(uint32_t value) void buttonPin(uint32_t value)
{ {
_buttonPin = value; _buttonPin = value;
} }
void readMemory() void readMemory()
{ {
_bau.readMemory(); _bau.readMemory();
} }
void writeMemory() void writeMemory()
{ {
_bau.writeMemory(); _bau.writeMemory();
} }
uint16_t induvidualAddress() uint16_t induvidualAddress()
{ {
return _bau.deviceObject().induvidualAddress(); return _bau.deviceObject().induvidualAddress();
} }
void loop() void loop()
{ {
if (progMode() != _progLedState) if (progMode() != _progLedState)
@ -158,32 +176,32 @@ template <class P, class B> class KnxFacade : private SaveRestore
} }
_bau.loop(); _bau.loop();
} }
void manufacturerId(uint16_t value) void manufacturerId(uint16_t value)
{ {
_bau.deviceObject().manufacturerId(value); _bau.deviceObject().manufacturerId(value);
} }
void bauNumber(uint32_t value) void bauNumber(uint32_t value)
{ {
_bau.deviceObject().bauNumber(value); _bau.deviceObject().bauNumber(value);
} }
void orderNumber(const char* value) void orderNumber(const char* value)
{ {
_bau.deviceObject().orderNumber(value); _bau.deviceObject().orderNumber(value);
} }
void hardwareType(uint8_t* value) void hardwareType(uint8_t* value)
{ {
_bau.deviceObject().hardwareType(value); _bau.deviceObject().hardwareType(value);
} }
void version(uint16_t value) void version(uint16_t value)
{ {
_bau.deviceObject().version(value); _bau.deviceObject().version(value);
} }
void start() void start()
{ {
pinMode(_ledPin, OUTPUT); pinMode(_ledPin, OUTPUT);
@ -192,20 +210,20 @@ template <class P, class B> class KnxFacade : private SaveRestore
pinMode(_buttonPin, INPUT_PULLUP); pinMode(_buttonPin, INPUT_PULLUP);
attachInterrupt(_buttonPin, buttonUp, RISING); attachInterrupt(_buttonPin, buttonUp, _buttonPinInterruptOn);
enabled(true); enabled(true);
} }
void setSaveCallback(saveRestoreCallback func) void setSaveCallback(saveRestoreCallback func)
{ {
_saveCallback = func; _saveCallback = func;
} }
void setRestoreCallback(saveRestoreCallback func) void setRestoreCallback(saveRestoreCallback func)
{ {
_restoreCallback = func; _restoreCallback = func;
} }
uint8_t* paramData(uint32_t addr) uint8_t* paramData(uint32_t addr)
{ {
if (!_bau.configured()) if (!_bau.configured())
@ -213,7 +231,7 @@ template <class P, class B> class KnxFacade : private SaveRestore
return _bau.parameters().data(addr); return _bau.parameters().data(addr);
} }
uint8_t paramByte(uint32_t addr) uint8_t paramByte(uint32_t addr)
{ {
if (!_bau.configured()) if (!_bau.configured())
@ -229,7 +247,7 @@ template <class P, class B> class KnxFacade : private SaveRestore
return _bau.parameters().getWord(addr); return _bau.parameters().getWord(addr);
} }
uint32_t paramInt(uint32_t addr) uint32_t paramInt(uint32_t addr)
{ {
if (!_bau.configured()) if (!_bau.configured())
@ -237,12 +255,12 @@ template <class P, class B> class KnxFacade : private SaveRestore
return _bau.parameters().getInt(addr); return _bau.parameters().getInt(addr);
} }
GroupObject& getGroupObject(uint16_t goNr) GroupObject& getGroupObject(uint16_t goNr)
{ {
return _bau.groupObjectTable().get(goNr); return _bau.groupObjectTable().get(goNr);
} }
void restart(uint16_t individualAddress) void restart(uint16_t individualAddress)
{ {
_bau.restartRequest(individualAddress); _bau.restartRequest(individualAddress);
@ -252,14 +270,15 @@ template <class P, class B> class KnxFacade : private SaveRestore
P* _platformPtr = 0; P* _platformPtr = 0;
B* _bauPtr = 0; B* _bauPtr = 0;
B& _bau; B& _bau;
uint32_t _ledPinActiveOn = LOW; uint32_t _ledPinActiveOn = LOW;
uint32_t _ledPin = LED_BUILTIN; uint32_t _ledPin = LED_BUILTIN;
uint32_t _buttonPinInterruptOn = RISING;
uint32_t _buttonPin = 0; uint32_t _buttonPin = 0;
saveRestoreCallback _saveCallback = 0; saveRestoreCallback _saveCallback = 0;
saveRestoreCallback _restoreCallback = 0; saveRestoreCallback _restoreCallback = 0;
bool _toogleProgMode = false; bool _toogleProgMode = false;
bool _progLedState = false; bool _progLedState = false;
uint8_t* save(uint8_t* buffer) uint8_t* save(uint8_t* buffer)
{ {
if (_saveCallback != 0) if (_saveCallback != 0)
@ -267,7 +286,7 @@ template <class P, class B> class KnxFacade : private SaveRestore
return buffer; return buffer;
} }
uint8_t* restore(uint8_t* buffer) uint8_t* restore(uint8_t* buffer)
{ {
if (_restoreCallback != 0) if (_restoreCallback != 0)