MCPcopy Index your code
hub / github.com/esp-rs/rfc2217-rs

github.com/esp-rs/rfc2217-rs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
55 symbols 115 edges 10 files 1 documented · 2% updated 2y ago★ 136
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

rfc2217-rs

rfc2217-rs is an IETF RFC2217 implementation in rust, enabling Com Port functionality over TCP/IP connections.

What is RFC2217

IETF RFC2217 defines a Telnet extension providing serial port functionality. It was initially intended to be used with modems, serial printers, fax machines and similar equipment, but it provides the ability to connect any serial based device to the network.

Library features

This library provides a server implementation, a protocol parser and data structures with binary serialization/deserialization support.

The library is std and no_std compatible, however the server implementation is only available in the std mode. To use the library in no_std mode, set the std feature to false.

How to use

  • Using the Server
use rfc2217_rs::Server;
// --snip--
let mut server = Server::new("/dev/ttyUSB1", "127.0.0.1:7878").unwrap();
// --snip--
loop {
    let result = server.run();
    if let Err(error) == result {
        handle_err(error);
    }
}
  • Using the Parser
use rfc2217_rs::Parser;
use rfc2217_rs::parser::Event;
// --snip--
let mut parser = Parser::new();
// --snip--
loop {
    // --snip--
    let result = parser.process_byte(byte);
    match result {
        Ok(event) => handle_event(event),
        Err(error) => handle_error(error),
    }
}
  • Using the data structure serialization/deserialization
use rfc2217_rs::Command;
// --snip--
let command_buf = [0; command::SIZE];
let command = Command::NoOp;
command.serialize(&mut command_buf);
let deserialized_command = Command::deserialize(&command_buf);

How it works

diagram diagram

License

Licensed under either of:

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Core symbols most depended-on inside this repo

Shape

Method 25
Function 17
Enum 9
Class 4

Languages

Rust100%

Modules by API surface

src/server.rs12 symbols
src/parser.rs9 symbols
tests/unit_tests.rs8 symbols
src/serialport_conversions.rs8 symbols
src/negotiation.rs7 symbols
src/subnegotiation.rs6 symbols
src/command.rs3 symbols
src/bin/server.rs2 symbols

For agents

$ claude mcp add rfc2217-rs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page