dc22-wp-badge-firmware/TODO.txt

116 lines
5.0 KiB
Plaintext

attiny88:
- get bootloader working
[x] test i2c comms
[ ] test lightsensor sensitivity setting
[ ] test all commands
stm32l100:
- get usb comms working, to bootload attiny88
- get bootloader working or documented
[x] temp calibration (201407xx)
[x] lcd menuing
[x] (20140727: mostly done, still in progress)
[ ] menus: add name and hex value for programs editor
[ ] maybe an option for names longer than 8 characters?
[x] bone programs
[x] mic circuit / adc reading
[x] battery voltage reading
[x] scaler for lights - add to print function and have some per-mode defines for scaling levels
do shit like right shift 7 for white in darkness mode
figure out a way to smoothly transition between modes, maybe do both then
calculate how far between switching we are to figure out a value
[x] pattern/programs menu:
[ ] static (runs a single program)
[ ] iterated (runs up to X programs sequentially after a delay)
[ ] random (runs up to X programs, selected randomly after a delay)
[ ] delay (static delay of X seconds, or random delay)
[ ] patterns and programs are added to iterated / random menus by type, index, and with their settings
[x] add a settings reset konami code
(sort of. hold menu during boot to reset to defaults, hold menu+ok to reset name too)
[/] characterize attiny led reading shit (sort of done)
[/] light meter: characterize? calibrate? figure out sensitivity?
[x] light meter: add sensitivity options to menu and / or settings?
[x] light meter: add auto-sensitivity?
[ ] mic: get percentage, log conversion needed?
[ ] mic: make calibrator
[ ] programs: make bone programs slave to the skull programs - like calling with the same settings, etc
[ ] programs: "load defaults" for each program (making it easier to fuck with)
[ ] programs: either nicer configuration, or help menus describing shit?
[ ] programs: make a "Run only X program" setting that runs program X, enabled or disabled,
for all LED sets. useful for setting up a program as a one-off.
Or maybe force for each one, or force all or something...
[ ] bones: implement more programs
[ ] eyes: implement more programs
[x] eyes: add color support for candle flicker program
[x] eyes: add solid color with random flashes other color program (options set how often to flash)
[ ] eyes: add solid plain color program (or color ramp+reset? randflash does solid color already)
[ ] eyes: add rainbow program
[ ] eyes programs: setting color to 0x010101 will load the favcolor instead
[ ] bug?: attiny shit doesn't seem to update very often. should be 4x/sec, seems more like 2. why?
this is for things like the tempsensor and lightsensor, I think i2c is too busy
can maybe fix with only-update-as-necessary LCD routines?
[x] buttons: only next and prev should repeat
[x] lcd shit: set lcd variables to all spaces on startup? (so we can use CGRAM 0x00)
[x] lightscaler: fix bug where when lightscaler is turned off, no lights work
(not sure but I think I fixed this)
[ ] shutdown: customizable message? or different settings (threekings, name, custom)
[x] shutdown: needs to tell the attiny to turn off.
attiny can be put into a deep shutdown mode which turns off everything
except for TWI (in other words, i2c).
done but no idea if it works.
[ ] battery: add a battery-low notifier?
[ ] battery: add a battery-low mode (no LEDs)?
[x] profiling: fix tim6_count shit (20140727)
[x] infopirate: make it work at least with a fucking static display
[x] infopirate: make a fixed static mode that can be cycled through
[ ] infopirate: pressing a button advances to the next display type
[ ] infopirate: set mode (stepped, random)
[ ] infopirate: set enabled / disabled views
[ ] infopirate: editable shit? like editable text? or only hardcoded?
[ ] infopirate: add battery voltage and temperature to cycle, maybe at the end?
[x] eeprom: implement settings save/restore (20140727)
[ ] eeprom: separate programs config from settings
[ ] eeprom: make programs load to RAM when editing, then save back to EEPROM when done
[ ] eeprom: make programs look at data in EEPROM rather than data in RAM (will save ~1K RAM)
[ ] editor: add bit-editor to hex-editor?
[ ] program sets: remove dwell time, and have a "program" manager that
sets programs for LEDs in sync and in X order? allows not requiring
duplicating programs if duplicates are necessary?
[ ] i2c: in lieu of a proper interrupt-driven I2C, maybe I could do an
interrupt-resuming I2C. the normal waits in use now could put
the CPU to sleep, and a watchdog could make sure the MCU wakes
up enough to detect a timeout (and maybe use SysTick to determine
sleep time). This would save a bit of power and would be easier
than a fully interrupt-driven I2C on STM32.
[ ] i2c: basically just improve this shit
[ ] mic: shout at badge to have it change modes or something?
badge overall:
[x] write down all actual used values (wrote part designators on bags; good enough)
[x] sort out used values into bag
[ ] find out why there is such high power consumption when doing nothing