// Author: cirakg & claude ai // Summary: The clocks the PIN lockout uses, behind a class so tests can inject a fake clock. // // Lockout delays use the trusted clock (GPS-synced, not user-adjustable) when // it is synced, and the system uptime timer otherwise (README 7.6). Tests // replace this class with one whose clocks they set by hand, which makes the // lockout schedule, restarts and clock loss testable. import Toybox.Lang; import Toybox.System; class TimeSource { function initialize() { } // Trusted unix time in seconds, or null when the trusted clock isn't synced. function trustedUnix() as Long? { return Clock.trustedUnix(); } // Milliseconds from the system timer. It restarts at zero when the watch // restarts and wraps after about 24.8 days. function uptimeMs() as Number { return System.getTimer(); } }