Gemini on ESP32

I received my ESP32 dev board about two weeks ago I think, but I haven't found the time to do this with all the renovation/MA/work/orchestra craziness going on.

It's slow and I don't know if it can handle multiple requests at the same time. But it seems pretty stable, after I increased the thread stack size from 4K to something more reasonable.

The code is based on the HTTP server component in the ESP32 SDK, the HTTPS server component, the "getting started" example of Wi-Fi, and a hardcoded Gemini response. The HTTP server starts a thread that handles new connections, calls TX/RX callbacks and implements a HTTP parser, while the HTTPS server is basically a bunch of callbacks for the handshake, encryption and decryption. I had to write a custom server with the new connection thread thingy, direct calls to the mbedtls functions and a function that handles the Gemini request (by returning a hardcoded response, for now). I'll clean it up, make it more useful and write a separate post about my experience with the ESP32 so far.

I'm so glad to get one thing out of my head! Now I can go back to studying.

The ESP32, held by an early Raspberry Pi 1 from 2012 and the Jinhao shark pen

gemini://esp32.dimakrasner.com