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:
- Concurrency (no dependencies)
ring_buffer→spsc_queue→memory_pool
- Network (depends on concurrency)
raw_socket→epoll_reactor→zero_copy
- Embedded (no dependencies)
uart→spi→i2c→can→gpio
- Aerospace (depends on network + embedded)
arinc429→arinc664→arinc653→arinc665→arinc615a
- Transport (depends on network + concurrency)
tcp_stack→udp_multicast→quic
- Industrial (depends on embedded + network)
modbus→ethercat→profinet
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 │
│ │
└─────────────────────────────────────────────┘