diff --git a/src/Modulino.h b/src/Modulino.h index 54c00a0..dd14f5c 100644 --- a/src/Modulino.h +++ b/src/Modulino.h @@ -320,15 +320,30 @@ class ModulinoKnob : public Module { } return ret; } - int16_t get() { + bool update() { uint8_t buf[3]; auto res = read(buf, 3); if (res == false) { return 0; } + get(buf); + return 1; + } + int16_t get(uint8_t * buf = nullptr) { + if (buf == nullptr) { + buf = (uint8_t*)malloc(3); + if (buf == nullptr) { + return 0; + } + auto res = read(buf, 3); + if (res == false) { + _pressed = false; + return 0; + } + } _pressed = (buf[2] != 0); - int16_t ret = buf[0] | (buf[1] << 8); - return ret; + int16_t _last_pox = buf[0] | (buf[1] << 8); + return _last_pox; } void set(int16_t value) { if (_bug_on_set) { @@ -351,8 +366,10 @@ class ModulinoKnob : public Module { return 0xFF; } private: + int16_t _last_pox = 0; bool _pressed = false; bool _bug_on_set = false; + protected: uint8_t match[2] = { 0x74, 0x76 }; };