This watch face monitors daily hydration by tracking and logging water intake.
In tracking mode: Display current water intake and percentage
- Alarm button: +100ml (or configured glass size)
- Light button: -100ml (or configured glass size)
- Alarm long press: Display deviation from estimate
- Light long press: Switch to settings mode
- Alarm really long press: Switch to log mode
In settings mode: Configure glass size, daily goal, wake time, sleep time, alert interval
- Light button: Switch to next setting
- Alarm button: Advance current setting
- Alarm long press: Reset to default value
- Mode button: Switch to tracking mode
In log mode: Display log entries of water intake, date and deviation from goal
- Alarm button: Switch to next log entry
- Light button: Cycle through intake, date and deviation
- Mode button: Switch to tracking mode
Background tasks:
- Automatic reset at wake time
- Alert if intake below estimate at sleep time
- Alert at interval if intake below estimate, waking the watch if asleep
The Frq page used remainderf to extract the fractional part of the
correction value, but remainderf rounds to the nearest integer and
returns negative results when the fraction exceeds 0.5. This caused
values like 0.965 ppm to render as " 0-350" instead of " 09650".
Switch to fmodf, matching the DELtA page above.
With double tap enabled, one had to tap not too fast on
the watch to increment the minutes regularly. Otherwise,
some taps would be discarded.
This made using the countdown face without looking at the
screen for acknowledgement of taps impossible.
It was also impossible to increment minutes quickly, every second tap
would be discarded.
Full implementation of the local solar time complication using the
pveducation.org formula set (LSTM, B, EoT, TC, LST, HRA). EoT and TC
are cached by day-of-year and recomputed once at midnight rollover.
Three display modes cycle with the Alarm button:
SO HH:MM:SS — Local Solar Time
nO HH:MM — Solar Noon in local clock time
Hr ±DDD — Hour Angle in degrees
Location is read from location.u32 on the filesystem. In the simulator
the browser lat/lon globals are written to location.u32 on activation
if not already set, fixing the "no Loc" issue in the emulator.