Update 04 - Glyf Development: Pre-orders and Firmware Progress

Update 04 - Glyf Development: Pre-orders and Firmware Progress

Overview

  • Pre-orders are now live!
  • New widget system with flexible widget management
  • Better UI navigation and improved key behaviors
  • Backend upgrades: UI router and LVGL file system

 


Hello Everyone!

Welcome back to another development update article. It’s been a while since we released one of these, so we wanted to share all the progress we’ve made since then. This update will mainly focus on the firmware; we will be posting an update about the hardware in a future blog post. We’ve made steady progress since our last update, and we’re excited to walk you through the firmware improvements we’ve been building.

Pre-orders Launched!

First off, thank you to everyone following our journey. We are so grateful to have your support as we continue to develop Glyf. Pre-orders are a huge milestone in our journey, so the excitement we see from you all helps keep us motivated and pushing to make Glyf a reality! We have made it as far as we have because of your support, so thank you for believing in us.

New Widget System

In our previous update articles, the last we showed of the display was the initial tests getting the screen and our display drivers to work, and a lot has changed since then. We have gone through a couple of versions of how the widgets will behave and have narrowed down the exact functionality the final version will have. To give some idea of the types of changes we made, here is a comparison of the old working widget system and the new widget system (not final):

Old Widget System

New Widget System

Some of the key improvements between the versions have to do with separating widgets into 2 categories: normal and system widgets.

A normal widget is one that users will be able to interact with and modify through our companion app. Examples of our current planned normal widgets are the keymap widget, time widget, and media widget. These will be the main/functional widgets that provide value to users during the majority of the time using Glyf. A system widget is meant for system navigation or other system tasks like changing settings or pairing Bluetooth devices. Examples of our current planned system widgets are the layer menu widget, widget menu widget, Bluetooth widget, and the settings widget.

A byproduct of the new system is that we can handle widget navigation better. In the previous version, all widgets were treated the same. That meant the only way to get to the layer menu widget was by cycling through all the widgets to get to it. It didn’t make sense to have navigation work this way because to control the layer menu widget, you needed to be on the layer selection layer; if you weren’t, you wouldn’t be able to interact with the widget. In the new version, system widgets like the layer menu widget will only show when you are on the layer that controls them. So the layer menu widget will show when you are on the layer selection layer, and the Bluetooth widget will only show when you are on the Bluetooth layer. We are still working towards porting our old widgets to the new system, but the framework for their navigation is complete.

Another thing we get to do now with our new system is give users control over what widgets they want to have enabled and the order of those widgets. This feature will be available through our companion app. Let's say you only use 2 of our normal widgets, such as the keymap widget and the time widget. In the new system, you can disable all other normal widgets. The main reason for this is to make navigating through the widgets seamless. To make navigation simple, the widget-cycle button will only scroll through the widgets you’ve enabled, and in the order you’ve set. As more widgets are added, this will gain value, so you don’t have to cycle through widgets you will never use to get to the one you want. Because our companion app isn’t fully integrated with this feature, I created some test behaviors that show an example of what adding and removing normal widgets will look like:

Removing Widgets

Adding Widgets

Glyf, Under the Hood

There have been a lot of improvements in Glyf’s firmware that aren’t so obvious. One is the UI router system. This is the backbone of all display functionality in Glyf. We could have gone with a simple system with hardcoded widgets to make things quick and easy, but decided to make a more complex system that will be future-proof and enable us to update widgets in the future. The UI router system is the main system for controlling the navigation of widgets and how we update and save widget settings. This essentially “routes” all the work we need to do for widgets through a central controller. This keeps everything in sync, so as we add or change widgets in the future, this base doesn’t have to change, and we can build on top of it.

Another new feature that we integrated was a file system for our external storage. This enables us to store assets such as images and fonts easily. This is especially important as we work on reworking the keymap widget so that it uses the images stored in the file system instead of images embedded directly in the firmware as C arrays. By moving most of our assets and bulk storage to the file system and external flash, this enables us to have more room on the internal chip flash memory for firmware features and lets us have essentially as many images as we want.

FIN

We tried to pack as much information into this update article as possible, but there is still a lot more we want to share about our progress in the coming weeks, so make sure to stay tuned for those updates!

Noah

Reading next

Update 03 - Glyf Development: Layer-by-Layer

Leave a comment

This site is protected by hCaptcha and the hCaptcha Privacy Policy and Terms of Service apply.