* Updated setFrames in Screen.cpp
Added code to attempt to revert back to the same frame that user was on prior to setFrame reload.
* Space added Screen.cpp
* Update Screen.cpp
Make screen to revert to Frame 0 if the originally displayed frame is no longer there.
* Update Screen.cpp
Inserted boolean holdPosition into setFrames to indicate the requirement to stay on the same frame ( if =true) or else it will switch to new frame .
Only Screen::handleStatusUpdate calls with setFrame(true). ( For Node Updates)
All other types of updates call as before setFrame(), so it will change focus as needed.
* Hold position, even if number of frames increases
* Hold position, if handling an outgoing text message
* Update Screen.cpp
* Reverted chnages related to devicestate.has_rx_text_message
* Reset to master
* CannedMessages only handles routing packets when waiting for ACK
Previously, this was calling Screen::setFrames at unexpected times
* Gather position info about screen frames while regenerating
* Make admin module observable
Notify only when relevant. Currently: only to handle remove_nodenum.
* Optionally specify which frame to focus when setFrames runs
* UIFrameEvent uses enum instead of multiple booleans
* Allow modules to request their own frame to be focussed
This is done internally by calling MeshModule::requestFocus()
Easier this way, insteady of passing the info in the UIFrameEvent:
* Modules don't always know whether they should be focussed until after the UIFrameEvent has been raised, in dramFrame
* Don't have to pass reference to module instance as parameter though several methods
* E-Ink screensaver uses FOCUS_PRESERVE
Previously, it had its own basic implementation of this.
* Spelling: regional variant
* trunk
* Fix HAS_SCREEN guarding
* More HAS_SCREEN guarding
---------
Co-authored-by: BIST <77391720+slash-bit@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: slash-bit <v-b2@live.com>
* Move waypoint screen draw into the waypoint module
* Get the observer set up for the waypoint screen draw
* Static squashing: screen dimensions
Macros moved back to Screen.cpp, as a band-aid until we eventually move all those static functions into the Screen class.
* Move getCompassDiam into Screen class
(supress compiler warnings)
At this stage, the method is still static, because it's used by drawNodeInfo, which has no tidy reference to our screen instance.
This is probably just another band-aid until these static functions all move.
* Use new getCompassDiam function in AccelerometerThread
* Properly gate display code in WaypointModule
---------
Co-authored-by: Todd Herbert <herbert.todd@gmail.com>
* Show owner.short_name on boot and sleep screen (on e-ink)
* Update Screen.cpp - new line for short_name
Boot screen short_name now below the region setting.
Looks better on small screens.
* Draw short_name on right
---------
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
Co-authored-by: todd-herbert <herbert.todd@gmail.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Move static functions into Screen.h, show compass during calibration
* Move to _fontHeight macro to avoid collision
* Move some alert functions to new alert handler
* Catch missed reboot code
* ESP32 fixes
* Bump esp8266-oled-ssd1306
* Fixes for when a device has no screen
* Use new startAlert(char*) helper class
* Add EINK bits back to alert handling
* Add noop class for no-display devices
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Added "Hops away" on display
Added in logic that displays "hops away" instead of signal strength when the node is more than 0 hops away.
* Added comment
* Update extensions.json to same as master
* attempt 2 at reverting extensions JSON
* Attempt 3 at getting extensions right
* Take 4. should be reverting to before my edits
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Update images.h
Add some fun emojis
* Update Screen.cpp
Update Screen.cpp to display single emojis on the OLED of devices, if a single known emoji is detected
* Update images.h
add ? ! fog emojis
* Update Screen.cpp
add logic for new emojis
* Update Screen.cpp
correct formatting
* Update images.h
correct formatting
* Update Screen.cpp
change formatting via trunk application
* Update images.h
change formatting based on trunk application
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* E-Ink displays sometimes use timestamp instead of delta
* Allow users to disable E-Ink screensaver
* Clarify variable's purpose
* Operator order oopsie
* Picky print problem
* Implement for all display, not just E-Ink
* Align "unknown age" behavior with existing code
* One more use of timestamp, if screen is wide enough
* Updated kbI2cBase.cpp
Updated keyboard settings for t-deck to allow a modifier key to trigger 'tab', mute notifications, or quit. To trigger the modifier press the shift key and mic (0) button at the same time. Then press q (quit), m (mute), or t (tab).
* Update kbI2cBase.cpp
* fixed formatting issues in kbI2cBase.cpp
* Removed keyboard shortcut code that doesnt work
alt+t does not work on a t-deck so I removed it to avoid confusion.
* Updated kbI2cBase.cpp
Updated keyboard settings for t-deck to allow a modifier key to trigger 'tab', mute notifications, or quit. To trigger the modifier press the shift key and mic (0) button at the same time. Then press q (quit), m (mute), or t (tab).
* Update kbI2cBase.cpp
* fixed formatting issues in kbI2cBase.cpp
* Removed keyboard shortcut code that doesnt work
alt+t does not work on a t-deck so I removed it to avoid confusion.
* Changed modifier key to alt+c
* Added screen brightness functionality
Use modifier key with o(+) to increase brightness or i(-) to decrease.
Currently there are 4 levels of brightness, (L, ML, MH, H). I would like to add a popup message to tell you the brightness.
* Added checks to disable screen brightness changes on unsupported hardware
* Setting the brightness code to work on only applicable devices
* Added "function symbol" display to bottom right corner of screen. Now shows when mute is active or modifier key is pressed. Also fixed some other minor issues.
* commented out a log
* Reworked how modifier functions worked, added
I wasn’t happy with my previous implementation, and I think it would have caused issues with other devices. This should work on all devices.
* Added back the function I moved causing issue with versions
* Fixed the version conflicts, everything seems to work fine now
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Co-authored-by: Thomas Göttgens <tgoettgens@gmail.com>
* Update E-Ink display after sending adhoc ping or disable/enable GPS
* Resume display updates when touch button pressed
* Use touch hold as modifier; change double-click behavior for user button
* Fix preprocessor exclusions
* Purge backlight behavior
* Distinguish between 3x and 4x multi-presses
* Touch button considers "Wake screen on tap or motion" user-setting
* Don't assume device has BUTTON_PIN
* Rename misleading method
* remove redundant logic
* Handle special screens for old EInkDisplayClass
* Handle special screens for EInkDynamicDisplay class
* Join an async refresh in progress to avoid skipping screensaver
* attempt trunk fix
* fix Wireless Paper double-clear screen at boot
* log when flooded with "responsive" frames
* show the "resuming" screen when waking from deep-sleep
* rename drawDeepSleepScreen
avoid future confusion with "Screen Paused" screen
* show a screensaver frame when screen off
The frame shown during deep sleep is now also passed through showScreensaverFrames()
* Add macros for E-Ink color values.
OLEDDISPLAY_COLOR is inverted. Result of light-mode on E-Ink vs dark-mode on OLED?
* adapt drawDeepSleepScreen to new screensaver convention
* Mark Wireless Paper V1.1 as having problems with ghosting
Any other issues can be marked in a similar way, then handled in code where relevant
* Change screensaver from fullscreen logo to overlay
* identify "quirks" rather than "problems"
* move async refresh polling from display() to a NotifiedWorkerThread
* Prevent skipping of deep-sleep screen
(Hopefully)
* Redesign screensaver overlay
Now displays short name
* Optimize refresh for different displays
* Support older EInkDisplay class
* Don't assume text alignment
* fix spelling of a quirk macro
(No impact to code, but avoids future issues)
* Handle impossibly unlikely millis() overflow error
Should have just let it go, but here we are..
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Add MaxNodes to Native
* It compiles...
* Convert nodedb to use new
* Closer but still broken.
* Finally working
* Remove unintended lines
* Don't include a pointer
* Capitalization matters.
* avoid rename in protocol regen
* When trimming the nodeDB, start with a cleanup
* Remove extra cleanupMeshDB() call for now
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Move to Portduino's getMacAddr()
* Add ST7735/S screen support
* Push Raspbian support into native target
* Remove latent pigpio references.
* CardKB defensive programming
* Adds configurable spidev
* Fixes to build on Fedora 40
* ENUMs are not #defines. Pull latest portduino
* Add more configuration options for SPI displays
* Add config.yaml option to set DIO3_TCXO_VOLTAGE
* change tft clear() to fillScreen()
Maintains compatability with ESPI driver.
* Adds TXen and RXen pins to portduino
* Add -c --config options to specify config file
* Fail when a specified config file is unavailable
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Pico W: Initial WiFi support: connects, but freezes after a while
* Update arduino-pico core to fix hang with Wi-Fi
* Add `picow` to workflow since it's different from `pico` now
* Show Wi-Fi frame on screen for all devices with Wi-Fi
* Pico W: Disable mDNS as it's unsupported with FreeRTOS
* Fix printing IP address
* Fix Raspbian build
* Pico W: Initial WiFi support: connects, but freezes after a while
* Update arduino-pico core to fix hang with Wi-Fi
* Add `picow` to workflow since it's different from `pico` now
* Refactor away some duplication
* Refactor preset names to display formatter method
* Remove unused screen brightness adjustment and extract wifi disconnect reason name to display formatter method
* Tronk
* Let's be more clear with this naming
* Effed
* DisplayFormatters static class and use native wifi disconnect reason names method
* git mv file so casing should match now
* Include titlecase
* Trunk
* Extend node max to 100 and remove mesh_sds_timeout_secs
* Const pointers for you and you and you
* Fixes and supressions
* Missed it
* uint
* Resize
* Derp
* T-Watch WIP
* Updates
* Temp
* Update screen spi bus and and backlight en
* Peripherals progress
* Fixes
* Fixes
* Updates
* DRV scaffolding
* Fixed touch-screen driver selection. WIP on DRV haptic feedback
* DRV2605 pmu channel
* Trunk
* Fixes and defaults
* Dropped an s
* Move PMU and turn off screen that way
* Add t-deck and t-watch-s3 to CI and cleanup
* More cleanup
* add hwid for auto-detection
* fix: heltec-wireless-tracker USB serial
* T-Deck support
* trunk fmt
* set FRAMERATE to 1
* fix some defines
* trunk fmt
* corrected vendor link
* Implement override_console_serial_port
* It's opposite day in Logictown
* Try to use native serial types for platforms
* Fix for s3
* Trunk
* Screw it... just declare as Print and handle init
* Alright, chatty kathy
* Missed a spot
* I'll take "Kill that FIXME" for 800, Alex
* Badunkadunk
* Refactor out a lot of duplicated code
* Boogers
* Okay I probably should stop changing everything
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Fix LOG_DEBUG messages when no DEBUG_PORT.
* Break i2cScan out into a set of classes for scanning i2c
* refactor i2cscan addresses to be structs that allow addressing by port + address
* build whoopsies
* trunk fmt
* trunk fmt
* lost some build fixes from the merge
* more cleaning for build safety, RTC behavior
* Fix overlapping of GPS message on screen carousel #1
* Any reason we shouldn't display this on a RAK w/ E-ink or similar non-PMU equipped boards?
---------
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
recevieve-timestamp. So now it functions as a clock and due to the 900s
default screen-lock-timeout you still have an idea of when the message
was received.