diff --git a/README.md b/README.md index ccde5f4e..64b2742c 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,25 @@ Optionally the system can be operated in semi-automated mode, issuing navigation See the [wiki](https://github.com/neu-rah/ArduinoMenu/wiki) -### COVID-19 note - -**If you need this menu for any device covid-19 related, be my guest, I grant you free usage even if you going to sell the device** - -This menu system has the advantage of being long tested and supporting many interface devices so that makers don't be restricted in hardware. +## What's next — OneMenu / HAPI + +A successor is in active development, built on **HAPI**, a zero-overhead +compile-time composition engine (github.com/InternetOfPins/HAPI). Menu +definitions compile down to code indistinguishable from hand-written C — +see it for yourself: [Compiler Explorer demo](https://godbolt.org/z/6srTzdTY7). + +This isn't a release. The core (**OneMenu**) is solid, and a drop-in +compatibility layer for existing AM4 sketches is now in progress on the +**[AM5 branch](https://github.com/neu-rah/ArduinoMenu/tree/AM5)** of this +repo — real, unmodified AM4 examples (Blink, Button, Confirm so far) already +build against it with just a library-dependency swap, at roughly the same +flash/RAM savings as the Compiler Explorer demo above suggests. Still missing +pieces (masked text-field editing, the idle/suspend API, most device +drivers) before it covers AM4's full example set. If you're interested in +the architecture, want to help with the compatibility layer, or just want to +follow along: github.com/InternetOfPins/HAPI + +No migration is required right now. AM4 keeps working exactly as it does today. ## Simple Example ```c++ diff --git a/funding.json b/funding.json new file mode 100644 index 00000000..813c643e --- /dev/null +++ b/funding.json @@ -0,0 +1,64 @@ +{ + "version": "v1.1.0", + "entity": { + "type": "individual", + "role": "maintainer", + "name": "Rui Azevedo", + "email": "ruihfazevedo@gmail.com", + "phone": "", + "description": "Freelance embedded systems engineer with 35+ years of experience, based in the Azores, Portugal. Author of ArduinoMenu and the HAPI (Open Chain Derivation) compile-time composition framework, part of the InternetOfPins open source ecosystem (OneParse, OneMenu, OneChip, and related libraries) aimed at eliminating per-chip-variant fragmentation in embedded/IoT firmware.", + "webpageUrl": { + "url": "https://r-site.net" + } + }, + "projects": [ + { + "guid": "arduinomenu", + "name": "ArduinoMenu", + "description": "An open source menu/UI library for embedded and IoT devices (AVR, ESP32, STM32, and other MCU targets), used wherever a device needs a navigable on-device UI: buttons, encoders, LCD/OLED/TFT displays, serial terminals, or web interfaces. In production use for over a decade, with 1,000+ GitHub stars and preservation in the GitHub Arctic Code Vault. Funding supports migrating the library onto a newer, zero-overhead compile-time architecture (HAPI, part of the InternetOfPins ecosystem) and resolving a known compiler-diagnostics barrier that discourages less experienced adopters.", + "webpageUrl": { + "url": "https://github.com/neu-rah/ArduinoMenu" + }, + "repositoryUrl": { + "url": "https://github.com/neu-rah/ArduinoMenu" + }, + "licenses": [ + "spdx:LGPL-2.1" + ], + "tags": [ + "embedded", + "iot", + "arduino", + "menu", + "ui", + "cpp", + "avr", + "esp32", + "stm32" + ] + } + ], + "funding": { + "channels": [ + { + "guid": "paypal", + "type": "payment-provider", + "address": "https://www.paypal.com/paypalme/ruihfazevedo", + "description": "PayPal.Me" + } + ], + "plans": [ + { + "guid": "one-time", + "status": "active", + "name": "One-time donation", + "description": "Support ongoing development", + "amount": 0, + "currency": "EUR", + "frequency": "one-time", + "channels": null + } + ], + "history": [] + } +} diff --git a/library.json b/library.json index 3e19ae5b..43516f06 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ArduinoMenu library", - "version": "4.21.4", + "version": "4.21.5", "keywords": "menu, display, lcd, tft, buttons, encoder, io, control", "description": "AVR generic menu/interactivity system", "repository": diff --git a/src/menuIO/rotaryEventIn.h b/src/menuIO/rotaryEventIn.h index 33c667f7..29aa4195 100644 --- a/src/menuIO/rotaryEventIn.h +++ b/src/menuIO/rotaryEventIn.h @@ -42,9 +42,14 @@ template constexpr inline T& operator^= (T& a, T b) { return (T&)((int& BUTTON_DOUBLE_CLICKED = 1 << 1, BUTTON_LONG_PRESSED = 1 << 2, - ROTARY_CW = 1 << 3, + ROTARY_CW = 1 << 5, // fix for issue #414 ROTARY_CCW = 1 << 4, }; +/* +EventType values should be different for codes defined as: +const navCodesDef Menu::defaultNavCodes (menuBase.cpp file) +and special cases in textField::parseInput (items.cpp file) function +*/ EventType config; EventType events; // we could do a fifo if we miss events