Safe API Framework 0.1.0 build 384e6ae
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
ipc-pubsub-example.c File Reference

IPC Publish-Subscribe Pattern Example. More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include "rte/status.h"
#include "rte/log.h"
#include "rte/ipc/rte_ipc_pubsub.h"
Include dependency graph for ipc-pubsub-example.c:

Go to the source code of this file.

Data Structures

struct  track_status_t
 Track status event (published to all subscribers). More...

Macros

#define TRACK_EMPTY   0
#define TRACK_OCCUPIED   1
#define TRACK_UNKNOWN   2

Functions

static void * track_publisher_thread (void *arg)
 Simulate track status changes and publish.
static void * signal_manager_thread (void *arg)
 Signal Manager - Reacts to track status by updating signals.
static void * speed_manager_thread (void *arg)
 Speed Manager - Reacts to track status by updating speed limits.
static void * route_manager_thread (void *arg)
 Route Manager - Reacts to track status by planning routes.
int main (void)

Detailed Description

IPC Publish-Subscribe Pattern Example.

Demonstrates one-to-many event broadcasting:

  • Publisher: Track database publishes track status changes
  • Subscribers: Multiple controllers (signal, speed, route) react independently

Architecture:

Track Database (Publisher)
│
publish()
│
├─→ Signal Manager (Subscriber 1) → Adjusts signals
├─→ Speed Manager (Subscriber 2) → Updates speed limits
└─→ Route Manager (Subscriber 3) → Plans routes

All subscribers receive same message, act independently.

Definition in file ipc-pubsub-example.c.

Macro Definition Documentation

◆ TRACK_EMPTY

#define TRACK_EMPTY   0

Definition at line 47 of file ipc-pubsub-example.c.

◆ TRACK_OCCUPIED

#define TRACK_OCCUPIED   1

Definition at line 48 of file ipc-pubsub-example.c.

◆ TRACK_UNKNOWN

#define TRACK_UNKNOWN   2

Definition at line 49 of file ipc-pubsub-example.c.

Function Documentation

◆ track_publisher_thread()

void * track_publisher_thread ( void * arg)
static

Simulate track status changes and publish.

Definition at line 58 of file ipc-pubsub-example.c.

◆ signal_manager_thread()

void * signal_manager_thread ( void * arg)
static

Signal Manager - Reacts to track status by updating signals.

Definition at line 99 of file ipc-pubsub-example.c.

◆ speed_manager_thread()

void * speed_manager_thread ( void * arg)
static

Speed Manager - Reacts to track status by updating speed limits.

Definition at line 136 of file ipc-pubsub-example.c.

◆ route_manager_thread()

void * route_manager_thread ( void * arg)
static

Route Manager - Reacts to track status by planning routes.

Definition at line 166 of file ipc-pubsub-example.c.

◆ main()

int main ( void )

Definition at line 202 of file ipc-pubsub-example.c.