# demiralp/umtsm-examples-c architecture

> Architecture diagram of the GitHub repository demiralp/umtsm-examples-c, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/demiralp/umtsm-examples-c
- Repository: https://github.com/demiralp/umtsm-examples-c

## Overview

UMTSM C Examples is a collection of generated-C state-machine applications, rather than one combined product. The user-facing workflow varies by example: provide inputs or events, let the modeled machine process them, and observe a result or simulated device state. The README documents the capabilities and variants; sampled entry points confirm initialization, wiring, and start-up for several applications. Links within unsampled state-machine behavior are omitted rather than inferred.

Main entry points: [`05-crossroad/src/main/main.c`](https://github.com/demiralp/umtsm-examples-c/blob/main/05-crossroad/src/main/main.c) (Crossroad Runner), [`07-door/case-3/src/main/main.c`](https://github.com/demiralp/umtsm-examples-c/blob/main/07-door/case-3/src/main/main.c) (Door Runner), [`03-keypress/src/main/main.c`](https://github.com/demiralp/umtsm-examples-c/blob/main/03-keypress/src/main/main.c) (Keypress Runner), [`06-timewatch/src/main/main.c`](https://github.com/demiralp/umtsm-examples-c/blob/main/06-timewatch/src/main/main.c) (Stopwatch Runner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_math_games["Math and Games"]
  node_paroot["Paroot Solver"]
  node_numberguess["Number Guess"]
end

subgraph group_interactive_apps["Interactive Apps"]
  node_keypress["Keypress Tracker"]
  node_keypress_events["Key Event Generator"]
  node_calculator["Calculator"]
  node_keypad["Calculator Keypad"]
  node_display["Calculator Display"]
  node_timewatch["Stopwatch"]
  node_command["Stopwatch Commands"]
end

subgraph group_simulations["Device Simulations"]
  node_crossroad["Four-Lane Junction"]
  node_lanes["Traffic Lanes"]
  node_traffic_lights["Traffic Lights"]
  node_pedestrian_lights["Pedestrian Lights"]
  node_monitor["Crossroad Monitor"]
  node_execution_director["Execution Director"]
  node_dashboard["Crossroad Dashboard"]
  node_door["Door Controller"]
  node_button["Door Button"]
  node_engine["Door Engine"]
  node_end_sensors["End Sensors"]
  node_door_dashboard["Door Dashboard"]
end

subgraph group_orchestration["Application Wiring"]
  node_paroot_main["Paroot Runner<br/>[main.c]"]
  node_guess_main["Guess Runner<br/>[main.c]"]
  node_keypress_main["Keypress Runner<br/>[main.c]"]
  node_calculator_main["Calculator Runner<br/>[main.c]"]
  node_crossroad_main["Crossroad Runner<br/>[main.c]"]
  node_timewatch_main["Stopwatch Runner<br/>[main.c]"]
  node_door_main["Door Runner<br/>[main.c]"]
end

node_user(("User"))

node_user -->|"runs example"| node_paroot_main
node_paroot_main -->|"starts solver"| node_paroot
node_user -->|"plays game"| node_guess_main
node_guess_main -->|"starts; sends events"| node_numberguess
node_user -->|"presses keys"| node_keypress_main
node_keypress_main -->|"starts generator"| node_keypress_events
node_keypress_main -->|"starts tracker"| node_keypress
node_keypress_main -->|"wires tracker"| node_keypress_events
node_user -->|"uses calculator"| node_calculator_main
node_calculator_main -->|"starts machine"| node_calculator
node_calculator_main -->|"wires calculator"| node_keypad
node_user -->|"views simulation"| node_crossroad_main
node_crossroad_main -->|"starts junction"| node_crossroad
node_crossroad_main -->|"configures lanes"| node_lanes
node_crossroad_main -->|"configures lights"| node_traffic_lights
node_crossroad_main -->|"configures crossings"| node_pedestrian_lights
node_crossroad_main -->|"wires monitor"| node_monitor
node_crossroad_main -->|"wires director"| node_execution_director
node_crossroad_main -->|"wires dashboard"| node_dashboard
node_user -->|"uses stopwatch"| node_timewatch_main
node_timewatch_main -->|"starts timer"| node_timewatch
node_timewatch_main -->|"starts commands"| node_command
node_timewatch_main -->|"attaches timer"| node_command
node_user -->|"operates door"| node_door_main
node_door_main -->|"starts controller"| node_door
node_door_main -->|"connects door"| node_button
node_door_main -->|"connects door"| node_engine
node_door_main -->|"connects door"| node_end_sensors
node_door_main -->|"wires dashboard"| node_door_dashboard

click node_paroot "https://github.com/demiralp/umtsm-examples-c/tree/main/01-paroot"
click node_paroot_main "https://github.com/demiralp/umtsm-examples-c/blob/main/01-paroot/case-1/src/main/main.c"
click node_numberguess "https://github.com/demiralp/umtsm-examples-c/tree/main/02-numberguess"
click node_guess_main "https://github.com/demiralp/umtsm-examples-c/blob/main/02-numberguess/case-3/src/main/main.c"
click node_keypress "https://github.com/demiralp/umtsm-examples-c/tree/main/03-keypress/src/keypress"
click node_keypress_events "https://github.com/demiralp/umtsm-examples-c/tree/main/03-keypress/src/keypress"
click node_keypress_main "https://github.com/demiralp/umtsm-examples-c/blob/main/03-keypress/src/main/main.c"
click node_calculator "https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator"
click node_keypad "https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator"
click node_display "https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator"
click node_calculator_main "https://github.com/demiralp/umtsm-examples-c/blob/main/04-calculator/src/main/main.c"
click node_crossroad "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/crossroad"
click node_lanes "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/lane"
click node_traffic_lights "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/trafficlight"
click node_pedestrian_lights "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/pedestrian-light"
click node_monitor "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/monitor"
click node_execution_director "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/execution-director"
click node_dashboard "https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/dashboard"
click node_crossroad_main "https://github.com/demiralp/umtsm-examples-c/blob/main/05-crossroad/src/main/main.c"
click node_timewatch "https://github.com/demiralp/umtsm-examples-c/tree/main/06-timewatch/src/timewatch"
click node_command "https://github.com/demiralp/umtsm-examples-c/tree/main/06-timewatch/src/command"
click node_timewatch_main "https://github.com/demiralp/umtsm-examples-c/blob/main/06-timewatch/src/main/main.c"
click node_door "https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/door"
click node_button "https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/button"
click node_engine "https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/engine"
click node_end_sensors "https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/sensor_open_end"
click node_door_dashboard "https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/dashboard"
click node_door_main "https://github.com/demiralp/umtsm-examples-c/blob/main/07-door/case-3/src/main/main.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_paroot,node_numberguess,node_user toneBlue
class node_keypress,node_keypress_events,node_calculator,node_keypad,node_display,node_timewatch,node_command toneAmber
class node_crossroad,node_lanes,node_traffic_lights,node_pedestrian_lights,node_monitor,node_execution_director,node_dashboard,node_door,node_button,node_engine,node_end_sensors,node_door_dashboard toneMint
class node_paroot_main,node_guess_main,node_keypress_main,node_calculator_main,node_crossroad_main,node_timewatch_main,node_door_main toneRose
```

## Components

### Math and Games

- [Paroot Solver](https://github.com/demiralp/umtsm-examples-c/tree/main/01-paroot): `01-paroot`
- [Number Guess](https://github.com/demiralp/umtsm-examples-c/tree/main/02-numberguess): `02-numberguess`

### Interactive Apps

- [Keypress Tracker](https://github.com/demiralp/umtsm-examples-c/tree/main/03-keypress/src/keypress): `03-keypress/src/keypress`
- [Key Event Generator](https://github.com/demiralp/umtsm-examples-c/tree/main/03-keypress/src/keypress): `03-keypress/src/keypress`
- [Calculator](https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator): `04-calculator/src/calculator`
- [Calculator Keypad](https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator): `04-calculator/src/calculator`
- [Calculator Display](https://github.com/demiralp/umtsm-examples-c/tree/main/04-calculator/src/calculator): `04-calculator/src/calculator`
- [Stopwatch](https://github.com/demiralp/umtsm-examples-c/tree/main/06-timewatch/src/timewatch): `06-timewatch/src/timewatch`
- [Stopwatch Commands](https://github.com/demiralp/umtsm-examples-c/tree/main/06-timewatch/src/command): `06-timewatch/src/command`

### Device Simulations

- [Four-Lane Junction](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/crossroad): `05-crossroad/src/crossroad`
- [Traffic Lanes](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/lane): `05-crossroad/src/lane`
- [Traffic Lights](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/trafficlight): `05-crossroad/src/trafficlight`
- [Pedestrian Lights](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/pedestrian-light): `05-crossroad/src/pedestrian-light`
- [Crossroad Monitor](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/monitor): `05-crossroad/src/monitor`
- [Execution Director](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/execution-director): `05-crossroad/src/execution-director`
- [Crossroad Dashboard](https://github.com/demiralp/umtsm-examples-c/tree/main/05-crossroad/src/dashboard): `05-crossroad/src/dashboard`
- [Door Controller](https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/door): `07-door/case-3/src/door`
- [Door Button](https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/button): `07-door/case-3/src/button`
- [Door Engine](https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/engine): `07-door/case-3/src/engine`
- [End Sensors](https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/sensor_open_end): `07-door/case-3/src/sensor_open_end`
- [Door Dashboard](https://github.com/demiralp/umtsm-examples-c/tree/main/07-door/case-3/src/dashboard): `07-door/case-3/src/dashboard`

### Application Wiring

- [Paroot Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/01-paroot/case-1/src/main/main.c): `01-paroot/case-1/src/main/main.c`
- [Guess Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/02-numberguess/case-3/src/main/main.c): `02-numberguess/case-3/src/main/main.c`
- [Keypress Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/03-keypress/src/main/main.c): `03-keypress/src/main/main.c`
- [Calculator Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/04-calculator/src/main/main.c): `04-calculator/src/main/main.c`
- [Crossroad Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/05-crossroad/src/main/main.c): `05-crossroad/src/main/main.c`
- [Stopwatch Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/06-timewatch/src/main/main.c): `06-timewatch/src/main/main.c`
- [Door Runner](https://github.com/demiralp/umtsm-examples-c/blob/main/07-door/case-3/src/main/main.c): `07-door/case-3/src/main/main.c`

### Other components

- **User**

## Connections

- User → Paroot Runner: runs example
- Paroot Runner → Paroot Solver: starts solver
- User → Guess Runner: plays game
- Guess Runner → Number Guess: starts; sends events
- User → Keypress Runner: presses keys
- Keypress Runner → Key Event Generator: starts generator
- Keypress Runner → Keypress Tracker: starts tracker
- Keypress Runner → Key Event Generator: wires tracker
- User → Calculator Runner: uses calculator
- Calculator Runner → Calculator: starts machine
- Calculator Runner → Calculator Keypad: wires calculator
- User → Crossroad Runner: views simulation
- Crossroad Runner → Four-Lane Junction: starts junction
- Crossroad Runner → Traffic Lanes: configures lanes
- Crossroad Runner → Traffic Lights: configures lights
- Crossroad Runner → Pedestrian Lights: configures crossings
- Crossroad Runner → Crossroad Monitor: wires monitor
- Crossroad Runner → Execution Director: wires director
- Crossroad Runner → Crossroad Dashboard: wires dashboard
- User → Stopwatch Runner: uses stopwatch
- Stopwatch Runner → Stopwatch: starts timer
- Stopwatch Runner → Stopwatch Commands: starts commands
- Stopwatch Runner → Stopwatch Commands: attaches timer
- User → Door Runner: operates door
- Door Runner → Door Controller: starts controller
- Door Runner → Door Button: connects door
- Door Runner → Door Engine: connects door
- Door Runner → End Sensors: connects door
- Door Runner → Door Dashboard: wires dashboard
