OpenLcbCLib 1.0 Alpha
OpenSource C Library to create OpenLcb/Lcc Nodes
Loading...
Searching...
No Matches
openlcb_application_train.h
Go to the documentation of this file.
1
47#ifndef __OPENLCB_APPLICATION_TRAIN__
48#define __OPENLCB_APPLICATION_TRAIN__
49
50#include <stdbool.h>
51#include <stdint.h>
52
53#include "openlcb_types.h"
54
63 typedef struct {
64
66 bool (*send_openlcb_msg)(openlcb_msg_t *openlcb_msg);
67
69 void (*on_heartbeat_timeout)(openlcb_node_t *openlcb_node);
70
72
73#ifdef __cplusplus
74extern "C" {
75#endif
76
89
107
117
130 extern void OpenLcbApplicationTrain_100ms_timer_tick(uint8_t current_tick);
131
144 extern void OpenLcbApplicationTrain_send_set_speed(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint16_t speed);
145
159 extern void OpenLcbApplicationTrain_send_set_function(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint32_t fn_address, uint16_t fn_value);
160
171 extern void OpenLcbApplicationTrain_send_emergency_stop(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id);
172
183 extern void OpenLcbApplicationTrain_send_query_speeds(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id);
184
196 extern void OpenLcbApplicationTrain_send_query_function(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint32_t fn_address);
197
209 extern void OpenLcbApplicationTrain_send_assign_controller(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id);
210
221 extern void OpenLcbApplicationTrain_send_release_controller(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id);
222
234 extern void OpenLcbApplicationTrain_send_noop(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id);
235
245 extern void OpenLcbApplicationTrain_set_dcc_address(openlcb_node_t *openlcb_node, uint16_t dcc_address, bool is_long_address);
246
254 extern uint16_t OpenLcbApplicationTrain_get_dcc_address(openlcb_node_t *openlcb_node);
255
264
273 extern void OpenLcbApplicationTrain_set_speed_steps(openlcb_node_t *openlcb_node, uint8_t speed_steps);
274
282 extern uint8_t OpenLcbApplicationTrain_get_speed_steps(openlcb_node_t *openlcb_node);
283
284#ifdef __cplusplus
285}
286#endif
287
288#endif /* __OPENLCB_APPLICATION_TRAIN__ */
void OpenLcbApplicationTrain_initialize(const interface_openlcb_application_train_t *interface)
Initialises the train module and stores the callback interface.
Definition openlcb_application_train.c:71
train_state_t * OpenLcbApplicationTrain_get_state(openlcb_node_t *openlcb_node)
Returns the train state for a node.
Definition openlcb_application_train.c:149
void OpenLcbApplicationTrain_100ms_timer_tick(uint8_t current_tick)
Decrements the heartbeat countdown for all active train nodes.
Definition openlcb_application_train.c:300
void OpenLcbApplicationTrain_send_query_speeds(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id)
Sends a Query Speeds command to a train node.
Definition openlcb_application_train.c:531
bool OpenLcbApplicationTrain_is_long_address(openlcb_node_t *openlcb_node)
Returns true if the train node uses long DCC addressing.
Definition openlcb_application_train.c:750
void OpenLcbApplicationTrain_set_speed_steps(openlcb_node_t *openlcb_node, uint8_t speed_steps)
Sets the speed-step mode for a train node.
Definition openlcb_application_train.c:774
void OpenLcbApplicationTrain_send_assign_controller(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id)
Sends an Assign Controller command to a train node.
Definition openlcb_application_train.c:600
uint8_t OpenLcbApplicationTrain_get_speed_steps(openlcb_node_t *openlcb_node)
Returns the speed-step mode for a train node.
Definition openlcb_application_train.c:799
void OpenLcbApplicationTrain_send_release_controller(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id)
Sends a Release Controller command to a train node.
Definition openlcb_application_train.c:634
void OpenLcbApplicationTrain_send_set_speed(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint16_t speed)
Sends a Set Speed/Direction command to a train node.
Definition openlcb_application_train.c:425
void OpenLcbApplicationTrain_send_noop(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id)
Sends a NOOP (no-operation) management command to a train node.
Definition openlcb_application_train.c:667
uint16_t OpenLcbApplicationTrain_get_dcc_address(openlcb_node_t *openlcb_node)
Returns the DCC address for a train node.
Definition openlcb_application_train.c:725
void OpenLcbApplicationTrain_send_set_function(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint32_t fn_address, uint16_t fn_value)
Sends a Set Function command to a train node.
Definition openlcb_application_train.c:461
void OpenLcbApplicationTrain_send_query_function(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id, uint32_t fn_address)
Sends a Query Function command to a train node.
Definition openlcb_application_train.c:565
train_state_t * OpenLcbApplicationTrain_setup(openlcb_node_t *openlcb_node)
Allocates a train state slot and assigns it to the node.
Definition openlcb_application_train.c:99
void OpenLcbApplicationTrain_send_emergency_stop(openlcb_node_t *openlcb_node, uint16_t train_alias, node_id_t train_node_id)
Sends an Emergency Stop command to a train node.
Definition openlcb_application_train.c:499
void OpenLcbApplicationTrain_set_dcc_address(openlcb_node_t *openlcb_node, uint16_t dcc_address, bool is_long_address)
Sets the DCC address and address type for a train node.
Definition openlcb_application_train.c:699
Core type definitions, structures, and configuration constants for the OpenLCB library.
uint64_t node_id_t
48-bit Node ID stored in a 64-bit type (upper 16 bits unused).
Definition openlcb_types.h:359
Application-provided callbacks for the train module.
Definition openlcb_application_train.h:63
Core OpenLCB message structure.
Definition openlcb_types.h:480
OpenLCB virtual node.
Definition openlcb_types.h:679
Mutable runtime state for a single train node.
Definition openlcb_types.h:644

Copyright (c) 2026 Jim Kueneman all rights reserved. See the License