Here are some ideas for redesigning the badge software for next year to perhaps escape some of the pain of the current system (or at least exchange it for a different pain.)
The current badge-main/menu system IMHO tries to do to much (has slowly evolved over time to do too much.) It does at least the following:
- Acts as a menu system.
- Acts as kind of "init" process controlling execution of various apps
- Acts as device driver for USB, infrared, etc.
- Acts as screen saver (the current code suffers greatly from complexity in this area.)
- Is pressed into service as the "schedule" app.
- Is pressed into service as the "settings" app.
I propose the new system should have the following properties:
- There should be an "init" process (roughly speaking) that controls execution of the "apps" and handles USB, infrared, etc. (much as the current system.) This part should be kept as simple as possible.
- The main menu should be just an app, not a part of this "init" process.
- The schedule should be just an app.
- The screen saver should be just an app.
- "Settings" should just be an app.
- There should be a mechanism for a "stack" of apps, with the topmost app running. The would allow, e.g. the "init" system to "push" the screensaver "on top of" a running app, and on exiting, the screensaver could be popped off, restoring the previously running app. The menu app could work by pushing apps on top of itself, and when apps "exit", they pop off, leaving the menu app running.
Here are some ideas for redesigning the badge software for next year to perhaps escape some of the pain of the current system (or at least exchange it for a different pain.)
The current badge-main/menu system IMHO tries to do to much (has slowly evolved over time to do too much.) It does at least the following:
I propose the new system should have the following properties: