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