Commit Graph

  • d2c2d97fb7 feat(ota): harden OTA apply flow + bump firmware to 1.0.1 main Peter Woolery 2026-05-14 12:21:52 -07:00
  • 5ec678dfa3 fix: tighten version parsing, propagate HMAC sign failure, add deployment docs Peter Woolery 2026-05-11 11:26:44 -07:00
  • 5cf122b922 feat(firmware): wire OTA updater into main loop with 6-hour polling task Peter Woolery 2026-05-11 11:22:29 -07:00
  • a21dcfa349 feat(firmware): implement OTA download, ECDSA verify, and flash Peter Woolery 2026-05-11 11:18:44 -07:00
  • 66e6808e13 feat(firmware): implement ECDSA P-256 signature verification in OTA library Peter Woolery 2026-05-11 11:15:52 -07:00
  • 8b1fd10db7 feat(firmware): add OTA updater library skeleton with version comparison Peter Woolery 2026-05-11 06:59:02 -07:00
  • f37e0d6b07 feat(tools): add firmware deploy tool (sign + stage for server) Peter Woolery 2026-05-11 06:55:44 -07:00
  • 81bcc12f2f fix(server): add error handling for malformed OTA manifest and missing sig file Peter Woolery 2026-05-11 06:54:26 -07:00
  • d9a242a5fa feat(server): add OTA check and firmware download endpoints Peter Woolery 2026-05-11 06:52:46 -07:00
  • 87b30a64b2 fix(tools): add key type validation and tighten test assertions in sign_firmware Peter Woolery 2026-05-11 06:50:51 -07:00
  • 031426e364 feat(tools): add ECDSA P-256 firmware signing tool Peter Woolery 2026-05-11 06:49:15 -07:00
  • 437f73739f feat(tools): add ECDSA P-256 key generation tool and public key header Peter Woolery 2026-05-11 06:47:10 -07:00
  • 21a3c646aa docs(firmware): document FW_VERSION format constraint for OTA version compare Peter Woolery 2026-05-11 06:45:53 -07:00
  • 81dc96b100 feat(firmware): add FW_VERSION constant Peter Woolery 2026-05-11 06:44:59 -07:00
  • 56fc58b843 fix(tools): reject CSV metacharacters in flash_device.py inputs Peter Woolery 2026-05-01 15:44:57 -07:00
  • 641ab29277 fix(server): reject inverted period_start/period_end in CameraRecord Peter Woolery 2026-05-01 15:44:57 -07:00
  • 8342904488 fix(firmware/lib): wrap-safe millis() comparison in net_guard reconnect timer Peter Woolery 2026-05-01 15:36:06 -07:00
  • ef00afb14e fix(firmware/lib): validate HMAC secret length and hex format before signing Peter Woolery 2026-05-01 15:36:06 -07:00
  • 96ede7c999 chore: gitignore secrets, pycache, and adversarial-review artifacts Peter Woolery 2026-05-01 13:21:15 -07:00
  • e2dbe6a2d5 fix(server): COALESCE diagnostic columns so v1.0 heartbeats don't clear v1.1 data Peter Woolery 2026-05-01 13:19:23 -07:00
  • 2226c1b4ca fix(tools): validate flash_device.py HMAC secret format before flashing Peter Woolery 2026-05-01 13:19:16 -07:00
  • a0eee0e6d4 fix(firmware): preserve buffered records appended during flush POST Peter Woolery 2026-05-01 13:19:11 -07:00
  • a585a56cff fix(firmware): upgrade NimBLE to 2.x + DNS fallback for unreliable resolvers Peter Woolery 2026-05-01 11:34:17 -07:00
  • 461ed7d888 docs(readme): add HMAC secret generation command to operator setup Peter Woolery 2026-04-27 14:45:08 -07:00
  • 259256a550 docs: retailer packet — setup guide (.docx) + repo QR code Peter Woolery 2026-04-27 14:38:22 -07:00
  • be44299d3e docs(readme): add quick-start, hardware sources, power draw + latency notes Peter Woolery 2026-04-27 14:26:45 -07:00
  • 268b595340 Merge branch 'feat/network-resilience' Peter Woolery 2026-04-23 14:12:40 -07:00
  • a795cfa0ad fix(firmware): reboot on FATAL failures + emit NTP_SYNC + server-coord warning Peter Woolery 2026-04-23 14:10:32 -07:00
  • d943b3df5a feat(firmware): log reason before FATAL hang loops Peter Woolery 2026-04-23 14:03:57 -07:00
  • 2d95069bd1 docs: network-resilience firmware 1.1 deployment + field diagnostic guide Peter Woolery 2026-04-23 14:02:09 -07:00
  • 867e90b1f6 feat(server): heartbeat-diagnostics stub + migration for real server import Peter Woolery 2026-04-23 13:59:31 -07:00
  • 5c9f5df0ce feat(firmware): include diagnostics in heartbeat payload Peter Woolery 2026-04-23 13:54:55 -07:00
  • f08f70a8fb feat(firmware): software heartbeat-miss watchdog reboots after 6h offline Peter Woolery 2026-04-23 13:52:07 -07:00
  • 7b546d0ed7 feat(firmware): enable task watchdog on camera/reporter/loop tasks Peter Woolery 2026-04-23 13:49:05 -07:00
  • 8f8ad0b1b0 fix(firmware): add HTTP timeouts + 3-try retry, report heartbeat status Peter Woolery 2026-04-23 13:44:17 -07:00
  • 57129ba078 fix(firmware): net_guard silent-wifi-death fallback + header hygiene Peter Woolery 2026-04-23 13:41:53 -07:00
  • af3067d481 refactor(firmware): drive WiFi reconnect from net_guard events Peter Woolery 2026-04-23 13:36:29 -07:00
  • cfa0d2563f fix(firmware): event_log bounded mutex wait, skip on contention Peter Woolery 2026-04-23 13:31:54 -07:00
  • 84d9ba349b fix(firmware): net_guard boot-state seed + no spurious disconnect Peter Woolery 2026-04-23 13:31:47 -07:00
  • 9f293b4639 feat(firmware): event-driven WiFi reconnect with exponential backoff Peter Woolery 2026-04-23 13:26:10 -07:00
  • 95724bf3ff feat(firmware): log boot and reboot reason to event log Peter Woolery 2026-04-23 13:21:23 -07:00
  • 9eb1e19651 test(firmware): event_log boot recovery — partial fill and post-wrap Peter Woolery 2026-04-23 13:18:08 -07:00
  • 95f91d3656 fix(firmware): event_log thread safety and NVS wear Peter Woolery 2026-04-23 13:13:21 -07:00
  • 9232766e60 feat(firmware): add NVS-backed event log ring buffer Peter Woolery 2026-04-23 13:06:38 -07:00
  • a37207b6ff feat: event-based walker detector tuned to real 7' overhead mount Peter Woolery 2026-04-17 16:03:36 -07:00
  • 3b471992f2 feat(cv): directional once-per-track counting + detection LED blinks Peter Woolery 2026-04-17 09:46:59 -07:00
  • 24aaae6ff2 docs: add Troubleshooting section + serial_monitor.py diagnostic tool Peter Woolery 2026-04-17 07:05:21 -07:00
  • 62931e26ff fix(cv): add per-direction crossing cooldown to suppress track-churn double-counts Peter Woolery 2026-04-17 06:33:11 -07:00
  • cbbdd25ebb docs(spec): document server-push runtime tuning in design spec feature/server-push-config Peter Woolery 2026-04-16 22:06:59 -07:00
  • e5eeea2b47 fix(reporter,docs): save config before applying; correct README trust-model Peter Woolery 2026-04-16 17:47:41 -07:00
  • bcb02b6d73 docs(readme): document server-push config + roadmap entry for gated local portal Peter Woolery 2026-04-16 17:43:00 -07:00
  • b4b3a56019 fix(reporter): accept int JSON for max_move + reject malformed config fields Peter Woolery 2026-04-16 17:41:22 -07:00
  • 21f3bc77d1 feat(reporter): apply server-pushed CV tuning from heartbeat response Peter Woolery 2026-04-16 17:34:34 -07:00
  • 94d74e425c refactor(cv): read thresholds from runtime tuning + load from NVS on boot Peter Woolery 2026-04-16 15:55:35 -07:00
  • a992bfe391 fix(config): make cv_ver atomic commit marker in config_save_tuning Peter Woolery 2026-04-16 15:49:41 -07:00
  • e28a4c1863 feat(cv): add CVTuning struct and NVS persistence scaffolding Peter Woolery 2026-04-16 15:45:53 -07:00
  • 9d5b588231 feat: production-ready firmware with BLE memory management, device_id fixes, and docs Peter Woolery 2026-04-16 11:13:50 -07:00
  • 4b671843b3 fix: three stack overflows crashing firmware on TimerCamera-F Peter Woolery 2026-04-15 10:58:06 -07:00
  • 265fb727ab fix: flash_device.py — correct nvs_partition_gen module name Peter Woolery 2026-04-14 19:21:08 -07:00
  • 135eb3b46c fix: HMAC format — match server POST\npath\ntimestamp\nsha256(body) scheme Peter Woolery 2026-04-14 10:47:13 -07:00
  • 6d41529570 feat: door counter firmware — camera CV, BLE, HMAC reporting, captive portal Peter Woolery 2026-04-14 10:35:31 -07:00
  • 8a00665e4c fix: ArduinoOTA init, reporter mutex, BLE lock scope, NVS type Peter Woolery 2026-04-14 10:33:23 -07:00
  • 883b72be77 feat: ota_push.py operator firmware update script Peter Woolery 2026-04-14 10:28:28 -07:00
  • 36f4becbe9 fix: camera downscale — centered crop, explicit PSRAM frame buffer Peter Woolery 2026-04-14 09:30:20 -07:00
  • e19ae22915 feat: camera module — OV3660 init and 96x96 grayscale capture Peter Woolery 2026-04-14 09:27:16 -07:00
  • b3c8d1c044 feat: flash_device.py operator NVS provisioning script Peter Woolery 2026-04-14 07:40:03 -07:00
  • a8f036f25f fix: CameraRecord — reject negative entries/exits via Pydantic Field(ge=0) Peter Woolery 2026-04-14 07:02:51 -07:00
  • 910508194a feat: camera batch endpoint implementation and tests Peter Woolery 2026-04-14 07:01:40 -07:00
  • a432813444 feat: camera_records table migration Peter Woolery 2026-04-14 06:59:52 -07:00
  • 121f7a0a0a fix: main.cpp — static frame buffer, mutex for cv state, NTP init guard Peter Woolery 2026-04-14 06:59:09 -07:00
  • 49da51bc05 feat: main.cpp — FreeRTOS tasks, LED indicators, factory reset Peter Woolery 2026-04-14 06:56:59 -07:00
  • 29737d735a feat: WiFiManager captive portal provisioning Peter Woolery 2026-04-14 06:44:06 -07:00
  • 988443f207 fix: reporter — correct re-buffer on POST failure, NTP guard, TLS note Peter Woolery 2026-04-14 06:33:00 -07:00
  • 244426ec8b feat: reporter — HMAC-signed hourly POST with 24-record offline buffer Peter Woolery 2026-04-14 06:28:24 -07:00
  • 6422e052df fix: ble_scanner sha256_prefix — guard mbedTLS null info and setup failure Peter Woolery 2026-04-14 06:26:20 -07:00
  • ccbbf689cf feat: BLE passive scanner with RSSI bucketing and MAC hashing Peter Woolery 2026-04-14 06:24:49 -07:00
  • 29808e07a6 fix: camera — null-check sensor handle before set_vflip/set_hmirror Peter Woolery 2026-04-13 17:34:38 -07:00
  • 99756bdbaf feat: camera module — OV3660 init and 96x96 grayscale capture Peter Woolery 2026-04-13 17:33:10 -07:00
  • 0a6470a096 feat: CV line-crossing entry/exit detection with tests Peter Woolery 2026-04-13 15:10:01 -07:00
  • 655abc914b fix: CV find_centroids — static fg_copy to prevent 9KB stack allocation Peter Woolery 2026-04-13 14:41:11 -07:00
  • b664753596 feat: CV blob detection and centroid tracking Peter Woolery 2026-04-13 14:39:23 -07:00
  • 136b22bc1b fix: cv_init — replace memset with value-init to avoid UB on std::vector Peter Woolery 2026-04-13 14:33:12 -07:00
  • e6843584cf feat: CV module — frame diff + threshold (blob tracking TODO) Peter Woolery 2026-04-13 14:26:34 -07:00
  • 7662fc4c25 fix: HMAC module — mbedTLS error handling, hex guard, test docs Peter Woolery 2026-04-13 14:24:48 -07:00
  • 47f3f6afef feat: HMAC-SHA256 signing module with native tests Peter Woolery 2026-04-13 14:20:24 -07:00
  • 74bff0912b fix: config_save_wifi — always write both credentials Peter Woolery 2026-04-13 14:05:26 -07:00
  • d5afd0bd87 feat: config module — NVS read/write via Preferences Peter Woolery 2026-04-13 14:02:28 -07:00
  • f4d9e1b2a5 fix: update platformio.ini — OTA partitions, NimBLE, PSRAM flags Peter Woolery 2026-04-13 13:52:33 -07:00
  • 6c46ea26ab chore: init PlatformIO project for TimerCamera-F Peter Woolery 2026-04-13 13:31:38 -07:00
  • 46c0908798 chore: ignore .worktrees directory Peter Woolery 2026-04-13 13:05:21 -07:00
  • 95d9c7ef4c chore: initial commit — spec and implementation plan Peter Woolery 2026-04-13 13:04:55 -07:00