G1 step 1: gemini get, and two TLS connections measured

`gemini get <url>` fetches on a short-lived task (a handshake would trip
the main loop's watchdog; an idle client should cost no stack) and
reports the header, size, certificate fingerprint and heap. First page:
geminiprotocol.net, 20 text/gemini, 1,184 bytes in 0.7-1.1 s.

With IRC connected over TLS, a fetch dips to about 24 KB free during its
handshake, about 36-40 KB after it; nothing leaks. Antenna is down, so
the default aggregator becomes Cosmos.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
2026-10-05 00:27:05 +02:00
co-authored by Claude Opus 5.5
parent dc9b0e14ce
commit 2d384f5cff
4 changed files with 137 additions and 1 deletions
+5
View File
@@ -27,6 +27,7 @@
#include "services/irc_service.h"
#include "services/clock_service.h"
#include "services/debug_console.h"
#include "services/gemini_service.h"
#include "services/gnss_service.h"
#include "services/power_service.h"
#include "services/storage_service.h"
@@ -54,6 +55,7 @@ static StorageService* storageService;
static PowerService* power;
static ClockService* clockService;
static GnssService* gnssService;
static GeminiService gemini;
static SavedNetworks* savedNetworks;
static WifiService* wifi;
static IrcService* irc;
@@ -347,6 +349,7 @@ static const char* const kHelp =
"coredump erase forget the core dump in flash\n"
"key <name|char> press a key: up down left right select back home del tab, or one character\n"
"wifi status | wifi add <ssid><TAB><password>\n"
"gemini get <url> fetch a Gemini page and report header, size, certificate, heap\n"
"irc start | irc stop | irc dump | irc say <buffer> <text>\n"
"ls [folder] | rm <path> | install <path.ota> (Update from SD)\n"
"sd list | cat <path> | log <text> | burst | sound on|off | short | normal\n"
@@ -462,6 +465,8 @@ static void runCommand(String line) {
storageService->requestListing();
listingWanted = true;
}
if (line.startsWith("gemini get "))
if (!gemini.fetchToConsole(line.substring(11).c_str())) console.println("gemini: a fetch is already running");
if (line == "irc start") irc->connect();
if (line == "irc stop") irc->disconnect();
if (line.startsWith("irc say ")) { // irc say <buffer index> <text>