Files
immich-frame/src/wifi_manager.h
cottongin b9e5044fd2 feat: deep sleep single-fetch with probabilistic weighting
Refactor timerWakeCycle() to fetch a single random photo per wake
using cycle-mode-aware server-side filtering via Immich's
POST /api/search/random endpoint.

Changes:
- Add fetchOneRandomAssetId() to ImmichClient with support for
  isFavorite, takenAfter, takenBefore filter parameters
- Add timer_last_date NVS field for chronological cursor persistence
- Implement probabilistic filter selection per cycle mode:
  - Random: unfiltered size=1
  - Chronological/ReverseChronological: date cursor in NVS
  - FavoritesWeighted: 66% favorites, 33% unfiltered
  - WeightedChronological: 66% recent (30d), 33% unfiltered
  - WeightedReverseChronological: 66% older (30d), 33% unfiltered
- Add retry loop with filter relaxation on empty results
- Initialize hardware RTC (RX8130CE) firmware-wide:
  - Seed system clock from RTC at boot (immediate time)
  - NTP sync after WiFi connect, write back to RTC
- Add time_utils.h with isoNow(), isoNowMinus30d(), hasValidTime()

Normal mode (PhotoQueue + displayTask) is completely untouched.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 20:57:59 -04:00

25 lines
495 B
C++

#pragma once
#include <Arduino.h>
#include "settings.h"
class WiFiManager {
public:
void begin(SettingsManager& settings);
bool isConnected();
bool isAPMode();
String getIP();
int getRSSI();
void startAP();
void startStation();
void setupMDNS(const char* hostname);
void syncNTP();
private:
SettingsManager* _settings = nullptr;
bool _apMode = false;
int _retryCount = 0;
bool attemptConnection(const String& ssid, const String& pass);
};