Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP]: COS Shell, and Stabilized PCFS Sata Booting #21

Draft
wants to merge 4 commits into
base: trunk
Choose a base branch
from

Conversation

Mythra
Copy link
Contributor

@Mythra Mythra commented Feb 7, 2025

This is a "Work-In-Progress" PR that i'm opening now to let folks know (not that I think anyone is using any of this stuff yet, hence why I keep making big PR's, but just incase I'm wrong). The cat-dev library is going to integrate with rust "features". It's also a useful CI "check for typos" push.

Rust features will allow for targeting only specific parts of the "cat-dev" library, rather than needing to bring in the whole hecking thing. The default features enabled for cat-dev will allow for the code written against the current version to keep compiling, but I don't know if these will always be the feature delineations, or if these will always be the "default" features enabled. Just trying to make a first pass here.

WIP notes: things that have been done so far.

  • introduced issue templates for filing issues
    • no one is really using these yet, but for the future, when folks do want to file issues hopefully this cleans up a lot more.
  • introduce better (and actual!) version output to bridgectl
    • turns out "version" command is handled as an error which is so weird
    • anyway we now properly print out a version.
  • add load bearing sleep to PCFS SATA
    • PCFS Sata suffers the same TCP buffer bug as SDIO.
  • pre-emptively update package version
  • introduce ATAPI client to eventually use for "scientists"
    • scientists being implemented in later commits to this PR, will be a way of effectively "proxying" a call to a real Cafe SDK setup, and logging when bytes differ between it and us.
    • Also we should just have a client interface anyway for the future.
  • Make cat-dev library actually have "features"
    • this introduces quite a few non functional changes where folks can now enable/disable features from cat-dev to only compile certain bits of code & include it.
    • rather than having to include supports for all clients, and servers, and serial code for every project wanting to talk to anything cat-dev related at all. You can now start including "big areas" e.g. "clients", "servers", "serial", etc.

- introduced issue templates for filing issues
  - no one is really using these yet, but for the future, when
    folks do want to file issues hopefully this cleans up a lot more.
- introduce better (and actual!) version output to `bridgectl`
  - turns out "version" command is handled as an error which is so weird
  - anyway we now properly print out a version.
- add load bearing sleep to PCFS SATA
  - PCFS Sata suffers the same TCP buffer bug as SDIO.
- pre-emptively update package version
- introduce `ATAPI` client to eventually use for "scientists"
  - scientists being implemented in later commits to this PR, will be
    a way of effectively "proxying" a call to a real Cafe SDK setup,
    and logging when bytes differ between it and us.
  - Also we should just have a client interface anyway for the future.
- Make `cat-dev` library actually have "features"
  - this introduces quite a few non functional changes where folks can
    now enable/disable features from `cat-dev` to only compile certain
    bits of code & include it.
  - rather than having to include supports for all clients, and servers,
    and serial code for every project wanting to talk to anything
    cat-dev related at all. You can now start including "big areas"
    e.g. "clients", "servers", "serial", etc.
this is just a checkin to validate ci on all OS's before doing a
pretty decent chunk of a rewrite. basically right now all of the
tcp servers/clients are diverging, acting differently, and the same
code has to be ported to like 3/4 different server implementations.
having this drift has a high chance of executing bugs, makes the code
more complex, and all in all isn't super great.

my goal is to rewrite pretty much all of the tcp clients/servers, using
a single shared "base" server interface. Server's will follow an axum
style interface with routers, and Clients will attempt to well respected
client implementations.

from then on i can build the "Scientist" interfaces ontop of the shared
tcp server class, and move on. then hopefully we just have to rebuild
log crate to provide a competent command line experience, along with a
standlone `cos` binary that just supports connecting to COS.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant