diff --git a/src/knx b/src/knx index 7d86f63..ddf99a9 160000 --- a/src/knx +++ b/src/knx @@ -1 +1 @@ -Subproject commit 7d86f63f8e8399a785278e50532805630fb4e07d +Subproject commit ddf99a9b96572e7dec97e8a04fc9ad909728bbec diff --git a/src/knx_facade.cpp b/src/knx_facade.cpp index 89a6e7a..898f31f 100644 --- a/src/knx_facade.cpp +++ b/src/knx_facade.cpp @@ -145,3 +145,33 @@ uint32_t KnxFacade::paramInt(uint32_t addr) return _bau.parameters().getInt(addr); } + + +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; +} diff --git a/src/knx_facade.h b/src/knx_facade.h index ce90334..435873c 100644 --- a/src/knx_facade.h +++ b/src/knx_facade.h @@ -5,7 +5,9 @@ class RunningState; -class KnxFacade +typedef uint8_t* (*saveRestoreCallback)(uint8_t* buffer); + +class KnxFacade : private SaveRestore { public: KnxFacade(); @@ -28,6 +30,8 @@ public: void hardwareType(uint8_t* value); void version(uint16_t value); void start(); + void setSaveCallback(saveRestoreCallback func); + void setRestoreCallback(saveRestoreCallback func); uint8_t* paramData(uint32_t addr); uint8_t paramByte(uint32_t addr); uint16_t paramWord(uint32_t addr); @@ -38,6 +42,11 @@ private: uint32_t _ledPin = 16; uint32_t _buttonPin = 0; Ticker _ticker; + saveRestoreCallback _saveCallback = 0; + saveRestoreCallback _restoreCallback = 0; + + uint8_t* save(uint8_t* buffer); + uint8_t* restore(uint8_t* buffer); }; extern KnxFacade knx; \ No newline at end of file diff --git a/visualstudio/knx-esp.vgdbproj b/visualstudio/knx-esp.vgdbproj index b90ff2e..0e004d5 100644 --- a/visualstudio/knx-esp.vgdbproj +++ b/visualstudio/knx-esp.vgdbproj @@ -1,5 +1,6 @@ + Debug @@ -10,7 +11,7 @@ true true ..\examples\knx-esp-demo - knx-esp-demo.ino + Sketch.ino @@ -25,7 +26,7 @@ ..\.. Output\$(PlatformName.defuse)\$(ConfigurationName.defuse) - false + true @@ -40,6 +41,60 @@ Default + + + + 115200 + 8 + None + One + None + + + 0 + false + false + true + ASCII + + + 255 + 0 + 0 + 0 + + + 255 + 169 + 169 + 169 + + + 255 + 211 + 211 + 211 + + + 255 + 144 + 238 + 144 + + + + 16 + true + true + true + true + 0 + + LF + false + true + true + true @@ -47,22 +102,76 @@ - Unknown + True true true + + Enabled + true + true + true + true false + + apiModeling.google.GTest + core.builtin.BuiltinFunctions + core.builtin.NoReturnFunctions + core.CallAndMessage + core.DivideZero + core.DynamicTypePropagation + core.NonnilStringConstants + core.NonNullParamChecker + core.NullDereference + core.StackAddressEscape + core.UndefinedBinaryOperatorResult + core.uninitialized.ArraySubscript + core.uninitialized.Assign + core.uninitialized.Branch + core.uninitialized.CapturedBlockVariable + core.uninitialized.UndefReturn + core.VLASize + cplusplus.NewDelete + cplusplus.NewDeleteLeaks + cplusplus.SelfAssignment + deadcode.DeadStores + nullability.NullPassedToNonnull + nullability.NullReturnedFromNonnull + security.insecureAPI.getpw + security.insecureAPI.gets + security.insecureAPI.mkstemp + security.insecureAPI.mktemp + security.insecureAPI.UncheckedReturn + security.insecureAPI.vfork + unix.API + unix.cstring.BadSizeArg + unix.cstring.NullArg + unix.Malloc + unix.MallocSizeof + unix.MismatchedDeallocator + unix.StdCLibraryFunctions + unix.Vfork + + + -analyzer-store=region + -analyzer-opt-analyze-nested-blocks + -analyzer-eagerly-assume + NodeMCU 1 0 (ESP-12E Module) - + + + + + false @@ -110,7 +219,7 @@ true - Auto + Disabled 0 false false