mcknly / breadboard-os

A firmware platform aimed at quick prototyping, built around FreeRTOS and a feature-packed CLI
MIT License
500 stars 19 forks source link

Telnet support/Wireless support. #15

Closed glennswest closed 1 week ago

glennswest commented 1 week ago

Love to see telnet support and wireless support for the wireless models. Even better option for a web server as well. Even better if we can script within some nodejs on client.

mcknly commented 1 week ago

I love these ideas. We have just recently added basic wireless support for CYW43 on PicoW, but have not done anything with it yet.

These are the steps I am envisioning:

  1. Create a simple driver for connecting to a WiFi AP via CLI, and save config to the onboard flash filesystem
  2. Implement a basic Telnet server (integrate an existing project would be ideal)
  3. Create a BBOS service for CLI over Telnet

Once those features are in place, doing other fun things over wireless should be easier to implement.

Are you interested in contributing?

Kintar commented 1 week ago

I'm actually working on this right now. (EDIT for clarity: I'm working on IP stack support and MQTT integration, telnet if I'm feeling really froggy. While I can see uses for nodejs, I'm not up to the hassle of finding and bundling an embedded-system-capable nodejs interpreter. 😂 ) One question I had for @mcknly is; where do you want to include the lwIP configuration? It can be bundled in the hardware/rp2040 directory, but lwIP is a fairly common library, so it might make more sense to put it at the same level as the rtos includes.

This is complicated by the fact that there are specific changes to required link libraries for pico depending on how the user wants to interact with lwIP. I could go the route of assuming we want full FreeRTOS integration by default and leave documentation breadcrumbs for people who want to switch to the non-OS or polling backends. That's probably the simplest to start with. This would involve:

We could then add the pico-specific library includes to hardware/rp2040/prebuild.cmake, and add a new lwip_optional.cmake include that works at the project level to add the lwipopts header.

Thoughts?

mcknly commented 1 week ago

@Kintar this is exciting! I'm looking forward to seeing your progress. I will convert this issue to a discussion thread, and then create a new issue+branch specific to your CYW43+lwIP implementation.