Add Typed SSH Service Controls

Provide admin-only SSH status plus generation-safe start, stop, and
single-session disconnect operations through the bounded dispatcher.
Include
Settings UI coverage, lifecycle safeguards, and host-side regression
tests.
This commit is contained in:
2026-09-13 16:07:04 +02:00
parent 7ccc8799e9
commit 737bd29f9e
25 changed files with 1049 additions and 47 deletions
+15
View File
@@ -394,5 +394,20 @@ int main(void)
assert(broker_settings_executed == 51 && display_settings_executed == 52 && network_settings_executed == 53 && account_settings_executed == 54);
assert(runs == before_serial + 5 && s_request_queue->capacity == 4);
puts("PASS: Broker typed IDs, not-ready/full queue, routing and unchanged dispatcher capacity");
assert(admin_ssh_console_submit_ssh_settings(0) == ESP_ERR_INVALID_STATE);
s_dispatch_ready = false;
assert(admin_ssh_console_submit_ssh_settings(1) == ESP_ERR_INVALID_STATE);
s_dispatch_ready = true; queue_full = true;
assert(admin_ssh_console_submit_ssh_settings(1) == ESP_ERR_TIMEOUT && queue_send_wait == 0);
queue_full = false;
assert(admin_ssh_console_submit_ssh_settings(61) == ESP_OK);
assert(admin_ssh_console_submit_broker_settings(62) == ESP_OK);
assert(admin_ssh_console_submit_network_settings(63) == ESP_OK);
assert(admin_ssh_console_submit_account_settings(64) == ESP_OK);
assert(admin_ssh_console_submit_ssh_settings(65) == ESP_ERR_TIMEOUT);
pump(worker_task);
assert(ssh_settings_executed == 61 && broker_settings_executed == 62 && network_settings_executed == 63 && account_settings_executed == 64);
assert(runs == before_serial + 5 && s_request_queue->capacity == 4);
puts("PASS: SSH typed ID dispatcher routing, zero-wait/full/not-ready, no command runner or capacity growth");
puts("PASS: admission/identity, two owners, completion contention/reopen, history, queued stale/revoked work, UART dispatch, hidden/disconnected prompts, exit-to-SELF_CLOSE, deferred rejection/drain/close, 5s output backpressure");
}