#pragma once #include #include "esp_err.h" #include "wifi_provisioning.h" /** * Connects to the home WiFi network described by cfg, retrying up to * CONFIG_FRAME_STA_CONNECT_MAX_RETRIES times with a per-attempt timeout of * CONFIG_FRAME_STA_CONNECT_TIMEOUT_MS. Returns ESP_OK once an IP address * has been obtained, ESP_FAIL if all retries are exhausted. */ esp_err_t frame_wifi_connect_sta(const frame_config_t *cfg); /** * Runs the frame's normal-operation cycle: fetch the current image from * cfg->toolsserver, display it, and deep-sleep until the next refresh. * * If force_advance is true (the next-photo button was held), the fetch * forces the server to skip ahead to the next photo immediately * (POST /frame/advance) instead of the normal idempotent GET /frame/image * -- the server decides on its own whether to advance in the normal case, * based on its configured refresh interval, so a plain wake/reboot never * skips a photo just by asking. * * If show_management_qr is true (the manage button was held), the * displayed photo gets a small "scan to manage" QR overlay in the * top-right corner linking to the server's config page, held for 30 * seconds (the device stays awake), then reverted back to the plain * photo before proceeding to the normal sleep-interval logic. */ void frame_client_run(const frame_config_t *cfg, bool force_advance, bool show_management_qr);