Skip to content

Dependency Graph

Module Dependencies

graph LR
    subgraph Concurrency Primitives
        RB[ring_buffer]
        SPSC[spsc_queue]
        MP[memory_pool]
    end

    subgraph Network Layer
        RAW[raw_socket]
        EPOLL[epoll_reactor]
        ZC[zero_copy]
    end

    subgraph Aerospace
        A429[arinc429]
        A664[arinc664]
        A653[arinc653]
        A665[arinc665]
        A615[arinc615a]
    end

    subgraph Embedded
        UART[uart]
        SPI_M[spi]
        I2C_M[i2c]
        CAN_M[can]
        GPIO_M[gpio]
    end

    subgraph Industrial
        MB[modbus]
        ECAT[ethercat]
    end

    subgraph Transport
        TCP[tcp_stack]
        UDP[udp_multicast]
    end

    RB --> EPOLL
    MP --> ZC
    RAW --> A664
    RAW --> ECAT
    UART --> A429
    UART --> MB
    CAN_M --> MB
    EPOLL --> TCP
    EPOLL --> UDP
    RB --> TCP
    SPSC --> EPOLL

Build Order

The root Makefile builds modules in dependency order:

  1. Concurrency (no dependencies)
    • ring_bufferspsc_queuememory_pool
  2. Network (depends on concurrency)
    • raw_socketepoll_reactorzero_copy
  3. Embedded (no dependencies)
    • uartspii2ccangpio
  4. Aerospace (depends on network + embedded)
    • arinc429arinc664arinc653arinc665arinc615a
  5. Transport (depends on network + concurrency)
    • tcp_stackudp_multicastquic
  6. Industrial (depends on embedded + network)
    • modbusethercatprofinet

External Dependencies

┌─────────────────────────────────────────────┐
│           This Repository                    │
├─────────────────────────────────────────────┤
│                                             │
│   Only depends on:                          │
│   ┌───────────────────────────────────┐     │
│   │  libc (glibc / musl)             │     │
│   │  libpthread (POSIX threads)       │     │
│   │  Linux kernel headers (≥5.4)      │     │
│   │    - linux/can.h                  │     │
│   │    - linux/spi/spidev.h           │     │
│   │    - linux/i2c-dev.h              │     │
│   │    - linux/gpio.h                 │     │
│   │    - linux/if_packet.h            │     │
│   │    - sys/epoll.h                  │     │
│   │    - sys/timerfd.h                │     │
│   └───────────────────────────────────┘     │
│                                             │
│   NO external libraries:                    │
│   ✗ Boost     ✗ Qt      ✗ libevent         │
│   ✗ libev     ✗ ZeroMQ  ✗ gRPC             │
│   ✗ OpenSSL   ✗ protobuf                   │
│                                             │
└─────────────────────────────────────────────┘