How quantumleaps/qpc works
QP/C is a real-time event framework for embedded applications: applications model behavior with active objects and hierarchical state machines, while the runtime dispatches events under a selectable execution port. The graph preserves the documented state-machine and active-object capabilities plus distinct event, timing, and memory facilities visible in the source tree. Several implementation files are unsampled; links to those facilities are limited to README statements or SOURCE INDEX references rather than inferred call chains.
Main entry points: qf_act.c Active objects · qf_port.c FreeRTOS port · qep_hsm.c State machines · qsafe.h Safety checks
Components 19
Event framework
- Active objects
src/qf/qf_act.c - Event queues
src/qf/qf_actq.c - Publish subscribe
src/qf/qf_ps.c - Deferred events
src/qf/qf_defer.c
State behavior
- State machines
src/qf/qep_hsm.c - State machine core
src/qf/qep_msm.c
Execution and ports
- QK kernel
src/qk/qk.c - QV kernel
src/qv/qv.c - Platform ports
ports - Zephyr port
zephyr/qf_port.c - FreeRTOS port
ports/freertos/qf_port.c - POSIX QV port
ports/posix-qv/qf_port.c
Runtime support
- Time events
src/qf/qf_time.c - Dynamic events
src/qf/qf_dyn.c - Memory pools
src/qf/qf_mem.c - Event queue API
include/qequeue.h - Safety checks
include/qsafe.h - Timestamp utility
src/qs/qstamp.c
Other components
- Application developer
Connections 17
- Application developer → Active objects: defines behavior
README.md - Active objects → State machines: uses statecharts
README.md - Active objects → Event queues: queues events
- Active objects → Publish subscribe: publishes events
- Active objects → Deferred events: defers events
- State machines → State machine core: shares interface
- Zephyr port → Event queue API: uses queue API
- Zephyr port → Memory pools: uses pools
- FreeRTOS port → Event queues: posts events
ports/freertos/qf_port.c - FreeRTOS port → Time events: ticks timers
ports/freertos/qf_port.c - FreeRTOS port → Memory pools: manages pools
ports/freertos/qf_port.c - POSIX QV port → Time events: signals clock ticks
ports/posix-qv/qf_port.c - QK kernel → Platform ports: has platform variants
- QV kernel → Platform ports: has platform variants
- State machines → Safety checks: uses assertions
src/qf/qep_hsm.c - QK kernel → Safety checks: uses assertions
src/qk/qk.c - QV kernel → Safety checks: uses assertions
src/qv/qv.c