| Commit message (Collapse) | Author | Files | Lines |
|
(just moved files, didn't change the contents yet,
and nothing will work without updating #includes and build scripts and stuff)
|
|
(and re-adjusted smooth step timing accordingly)
|
|
delays + smooth steps
Anduril has gradually gotten faster over the years, apparently, so it
needed longer delays to get accurate-ish timing for beacon and other modes.
Adding DSM also changes the timing perceptibly, so I made it possible to
calibrate the delay fudge factor on a per-build basis.
|
|
instead of full GPL headers (or all too often, nothing at all)
There are a few "FIXME" entries where I'm not sure about the correct copyright.
|
|
(no functional changes, but it does change the order of some code in ROM,
so the compiled md5sum is different now)
|
|
The visible symptom was: Ramp up for 1s or longer, release, wait more than 1s,
then hold again. It should ramp up, but it would ramp down instead. The
clause for resetting ramp_direction wasn't happening, because the EV_tick
counter started at a value higher than 1s where it would normally trigger.
The underlying cause was a bit complicated. Recent changes in PCINT_inner()
were causing ticks_since_last_event to get set to 0 (at push_event()) and then
back to its previous value (at emit_current_event()). The EV_tick counter would
then start at whatever the button release event used.
The fix involved removing the part of emit_current_event() where it would
set ticks_since_last_event to "arg". That line was a very old bug which simply
hadn't caused any visible issues until recently. Instead, it needs to set
ticks_since_last_event more carefully, at other locations. Specifically, it
resets to 0 now in empty_event_sequence() and one more location in the deferred
WDT handler (when HOLD_TIMEOUT triggers).
Additionally, push_event() was only ever used from PCINT_inner()... so I moved
the tick reset logic to PCINT_inner() instead. This allows us to decrease size
by about 10 bytes, since PCINT_inner() no longer needs to copy the counter before
it gets reset. However, it also means push_event() should never be called from
any other function.
|
|
(doesn't seem to be needed any more, ever since the IRQ rewrite a few months ago)
|
|
|
|
changed so far:
- removed LVP lowpass and thermal regulation lowpass logic; it's probably redundant now
- slowed ADC deferred logic timing to 4X per second instead of 16X,
because there doesn't seem to be much reason to do it any faster
- reduced thermal event rate-limit to just 1 second, for more responsive regulation
- added "EV_temperature_okay" signal, to help stop adjustments at an appropriate time instead of going to far
- sped up sleep LVP to one measurement every 8 seconds instead of 16,
to help the aux LEDs respond to voltage changes faster
(effect on standby time is negligible)
- make sure the WDT doesn't set the ADC channel or counter... except in standby mode
|
|
sooner after 1 click
|
|
|
|
|
|
- Made momentary+lockout modes smaller and work better.
- Fixed buggy timing on hold events; made ticks_since_last_event reset when it should.
- Reduced ROM size by caching volatile ticks_since_last_event sometimes.
- Swapped what the top Event bit means, because it makes event handlers easier to write.
- Made the maximum click event keep triggering if user keeps pressing, instead of
dropping everything after the limit.
|
|
array of actions.
Not thoroughly tested yet, not done yet, have only updated Anduril to fit, and only partially.
|
|
|
|
support to Anduril.
|
|
Will probably change it quite a bit though, so I'm checking in changes first.
Needs to be "tick during standby" instead of "half sleep".
|
|
Minor comment cleaning.
|
|
button.
|
|
|
|
Moved momentary mode from 6 clicks to 5 clicks.
|
|
So far, UI1 and battcheck both work. UI2 and UI3 and other blinkies aren't implement yet.
Added 6-bar battcheck style to match Meteor (ish).
Increased maximum number of clicks to 12, because WTF. If your UI needs 12 clicks, what are you even doing in life?
|
|
Added EV_reenter_state event to indicate an obscuring state was popped off the stack
and the underlying one is now on top again.
|
|
in one sequence.
(use #define MAX_CLICKS 5, for example)
Keeps data sizes from being excessively large without having to edit FSM sources per UI.
|
|
DarkHorse.
|
|
Added a way to explicitly cancel the current "nice" delay without changing state.
|
|
Added fsm-misc.*, which currently only has interruptible blink functions in it.
(for blinking out numbers and such)
|
|
Added #defines for State return values: EVENT_HANDLED, EVENT_NOT_HANDLED
Improved handling of delay includes.
Managed mischief.
|
|
Added nice_delay_ms() to process events while waiting, and abort on state change.
Converted ramping-ui strobe to smoothly variable with party and tactical modes.
|
|
clicks.
|
|
Added ramping support in general.
|
|
fsm-*.c and fsm-*.h.
|