SEDSnet 4.0.0

A memory safe, no_std-capable networking stack with routing, discovery, reliability, and Rust/C/Python bindings.
Documentation
#!/usr/bin/env python3
import sys
import time

import sedsnet as seds

DT = seds.DataType


def _now_ms() -> int:
    return int(time.time() * 1000)


def _tx(_bytes_buf: bytes):
    pass


def _on_packet(pkt: seds.Packet):
    print(pkt)


def main() -> None:
    radio = seds.endpoint_info_by_name("RADIO")["id"]
    sd_card = seds.endpoint_info_by_name("SD_CARD")["id"]
    router = seds.Router(
        now_ms=_now_ms,
        handlers=[
            (sd_card, _on_packet, None),
            (radio, _on_packet, None),
        ],
        timesync_enabled=True,
    )
    router.add_side_packed("TX", _tx)
    router.set_local_network_datetime_millis(2025, 1, 1, 12, 0, 0, 0)

    router.log_f32(int(DT.GPS_DATA), [37.7749, -122.4194, 30.0])
    router.log_f32(int(DT.IMU_DATA), [0.1, 0.2, 0.3, 1.1, 1.2, 1.3])
    router.log_bytes(int(DT.MESSAGE_DATA), b"hello from python timesync example")
    router.log_bytes(int(DT.HEARTBEAT), b"")
    router.periodic(0)

    print(f"network_time_ms={router.network_time_ms()}")


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\nInterrupted by user.", file=sys.stderr)
        raise SystemExit(130)
    except Exception as e:
        print(f"Error: Unexpected failure in timesync example: {e}", file=sys.stderr)
        raise SystemExit(1) from e