MCPcopy Create free account
hub / github.com/PowerBroker2/SerialTransfer

github.com/PowerBroker2/SerialTransfer @3.1.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.1.5 ↗ · + Follow
39 symbols 50 edges 9 files 19 documented · 49% updated 12mo ago3.1.5 · 2025-07-15★ 4869 open issues

Browse by type

Functions 33 Types & classes 6
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SerialTransfer

GitHub version arduino-library-badge

SerialTransfer is an easy to use Arduino library for transferring packetized data fast and reliably via Serial, I2C, and SPI interfaces. Interconnect your Arduinos today minus the headache with SerialTransfer!

A mirror library is also available for Python!

This library: - can be downloaded via the Arduino IDE's Libraries Manager (search "SerialTransfer.h") - works with "software-serial", "software-I2C", and "software-SPI" libraries - is non blocking - uses packet delimiters - uses consistent overhead byte stuffing - uses CRC-8 (Polynomial 0x9B with lookup table) - allows the use of dynamically sized packets (packets can have payload lengths anywhere from 1 to 254 bytes) - supports user-specified callback functions - can transfer bytes, ints, floats, structs, even large files like JPEGs and CSVs!!

Packet Anatomy:

01111110 00000000 11111111 00000000 00000000 00000000 ... 00000000 10000001
|      | |      | |      | |      | |      | |      | | | |      | |______|__Stop byte
|      | |      | |      | |      | |      | |      | | | |______|___________8-bit CRC
|      | |      | |      | |      | |      | |      | |_|____________________Rest of payload
|      | |      | |      | |      | |      | |______|________________________2nd payload byte
|      | |      | |      | |      | |______|_________________________________1st payload byte
|      | |      | |      | |______|__________________________________________# of payload bytes
|      | |      | |______|___________________________________________________COBS Overhead byte
|      | |______|____________________________________________________________Packet ID (0 by default)
|______|_____________________________________________________________________Start byte (constant)

How To Use:

See the example sketches

  • datum = tx/rx a single object
  • data = tx/rx multiple objects

NOTE:

SPITransfer.h and it's associated features are not supported for the Arduino Nano 33 BLE or DUE and other boards. This header file is disabled by default, but can be enabled by commenting out #define DISABLE_SPI_SERIALTRANSFER 1 within SerialTransfer.h.

Core symbols most depended-on inside this repo

Shape

Method 33
Class 5
Enum 1

Languages

C++100%

Modules by API surface

src/Packet.cpp9 symbols
src/SerialTransfer.cpp6 symbols
src/PacketCRC.h5 symbols
src/Packet.h5 symbols
src/I2CTransfer.h5 symbols
src/I2CTransfer.cpp5 symbols
src/SerialTransfer.h4 symbols

For agents

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

⬇ download graph artifact

Ask about this repo answers extend the page