diff options
| author | Luke Hoersten <[email protected]> | 2026-06-14 18:30:44 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-06-14 18:30:44 -0500 |
| commit | 186fd85422f99dfb59d89ae9338dc50627f7c3e5 (patch) | |
| tree | 59db53e2962dc815151b9e70a4d6f1ce53c22a98 /main/mdns_service.c | |
| parent | 4a6bbdb075a5e4f9910cb9b85e615ff8c50aa4ec (diff) | |
Tidy: delete dead code, inline single-use helpers, fix double-lock
Code-review pass after the M5 colour fix. -126 net lines (-215 / +89).
Dead code removed:
- display_fill, display_test_pattern — M3 bring-up self-tests, no callers
- net_eth_is_up — no callers
- nvs_config_reset — no callers (factory-reset gesture was removed earlier;
NVS wipe now goes through `idf.py erase-flash`)
Helpers inlined or collapsed (each had one call site):
- state_name / orientation_name — ternaries at the cJSON site
- fmt_bytes / fmt_uptime — inline scope in local_screens_show_info
- expected_dims (http_api) + effective_dims (local_screens) — merged into
viewport_state_effective_dims() in viewport_state, one canonical source
state_machine cleanup:
- arm_idle_timer_unlocked / disarm_idle_timer collapsed to one arm_idle_timer(ms)
that takes the snapshotted timeout (ms==0 disables). Removes the misleading
name and the second viewport_state lock acquisition per painted frame.
- state_machine_set + state_machine_frame_painted now snapshot state + idle_ms
under one lock.
mdns_service cleanup:
- snapshot_state / apply_hostname / apply_txt collapsed into a single
apply_state(include_hostname) helper; mdns_service_start grabs hostname
once for hostname_set + log instead of going under the lock three times.
http_api cleanup:
- POST /config brightness-changed path uses the local `bright` it already
validated instead of re-locking + re-reading st->brightness.
- Trimmed verbose bring-up comments (stack-size justification, M5 saga,
DSI shadow struct) to one line each — kept the load-bearing facts.
Smoke-tested on hardware: boot clean, display + JPEG + touch all up
([DJT]), info screen renders, no crashes.
Diffstat (limited to 'main/mdns_service.c')
| -rw-r--r-- | main/mdns_service.c | 81 |
1 files changed, 31 insertions, 50 deletions
diff --git a/main/mdns_service.c b/main/mdns_service.c index d389161..21cd464 100644 --- a/main/mdns_service.c +++ b/main/mdns_service.c @@ -14,48 +14,30 @@ static const char *SERVICE = "_scrypted-viewport"; static const char *PROTO = "_tcp"; static const uint16_t PORT = 80; -// Pull the current hostname + TXT values from viewport_state under the lock. -static void snapshot_state(char *hostname, size_t host_cap, - const char **resolution, - const char **orientation, - char *name, size_t name_cap) -{ - viewport_state_lock(); - viewport_state_t *st = viewport_state_get(); - - if (st->viewport_name[0]) { - snprintf(hostname, host_cap, "viewport-%s", st->viewport_name); - } else { - snprintf(hostname, host_cap, "viewport"); - } - *resolution = viewport_state_resolution_str(); - *orientation = (st->orientation == VIEWPORT_ORIENTATION_PORTRAIT) - ? "portrait" : "landscape"; - snprintf(name, name_cap, "%s", st->viewport_name[0] ? st->viewport_name : ""); - - viewport_state_unlock(); -} - -static esp_err_t apply_hostname(void) +// Pull hostname + TXT values from viewport_state under one lock acquisition, +// then push them at the mDNS service. mdns_service_add() rejects with +// INVALID_ARG if the hostname isn't set, so order matters on first apply. +static esp_err_t apply_state(bool include_hostname) { char hostname[80]; - const char *resolution, *orientation; char name[64]; - snapshot_state(hostname, sizeof(hostname), - &resolution, &orientation, - name, sizeof(name)); - return mdns_hostname_set(hostname); -} - -static esp_err_t apply_txt(void) -{ - char hostname[80]; const char *resolution, *orientation; - char name[64]; - snapshot_state(hostname, sizeof(hostname), - &resolution, &orientation, - name, sizeof(name)); + viewport_state_lock(); + viewport_state_t *st = viewport_state_get(); + snprintf(hostname, sizeof(hostname), "viewport%s%s", + st->viewport_name[0] ? "-" : "", + st->viewport_name[0] ? st->viewport_name : ""); + snprintf(name, sizeof(name), "%s", + st->viewport_name[0] ? st->viewport_name : ""); + resolution = viewport_state_resolution_str(); + orientation = (st->orientation == VIEWPORT_ORIENTATION_PORTRAIT) + ? "portrait" : "landscape"; + viewport_state_unlock(); + + if (include_hostname) { + ESP_RETURN_ON_ERROR(mdns_hostname_set(hostname), TAG, "hostname_set"); + } mdns_txt_item_t txt[] = { { "version", VIEWPORT_VERSION }, { "resolution", resolution }, @@ -68,21 +50,21 @@ static esp_err_t apply_txt(void) esp_err_t mdns_service_start(void) { - // Order matters: mdns_service_add() rejects with INVALID_ARG if the - // hostname isn't set yet. So: init -> hostname -> service_add -> TXT. - ESP_RETURN_ON_ERROR(mdns_init(), TAG, "mdns_init"); - ESP_RETURN_ON_ERROR(apply_hostname(), TAG, "hostname_set"); + char hostname[80]; + viewport_state_lock(); + viewport_state_t *st = viewport_state_get(); + snprintf(hostname, sizeof(hostname), "viewport%s%s", + st->viewport_name[0] ? "-" : "", + st->viewport_name[0] ? st->viewport_name : ""); + viewport_state_unlock(); + + ESP_RETURN_ON_ERROR(mdns_init(), TAG, "mdns_init"); + ESP_RETURN_ON_ERROR(mdns_hostname_set(hostname), TAG, "hostname_set"); ESP_RETURN_ON_ERROR( mdns_service_add(NULL, SERVICE, PROTO, PORT, NULL, 0), TAG, "service_add"); - ESP_RETURN_ON_ERROR(apply_txt(), TAG, "txt_set"); + ESP_RETURN_ON_ERROR(apply_state(false), TAG, "txt_set"); - char hostname[80]; - const char *resolution, *orientation; - char name[64]; - snapshot_state(hostname, sizeof(hostname), - &resolution, &orientation, - name, sizeof(name)); ESP_LOGI(TAG, "mDNS up — %s.local advertising %s.%s.local on :%u", hostname, SERVICE, PROTO, PORT); return ESP_OK; @@ -90,6 +72,5 @@ esp_err_t mdns_service_start(void) esp_err_t mdns_service_refresh(void) { - ESP_RETURN_ON_ERROR(apply_hostname(), TAG, "hostname_set"); - return apply_txt(); + return apply_state(true); } |
