43#ifndef __OPENLCB_OPENLCB_TYPES__
44#define __OPENLCB_OPENLCB_TYPES__
49#if __has_include("openlcb_user_config.h")
50#include "openlcb_user_config.h"
51#elif __has_include("../../openlcb_user_config.h")
52#include "../../openlcb_user_config.h"
53#elif __has_include("../../../openlcb_user_config.h")
54#include "../../../openlcb_user_config.h"
56#error "openlcb_user_config.h not found. Copy templates/openlcb_user_config.h to your project include path."
73#ifndef USER_DEFINED_BASIC_BUFFER_DEPTH
74#error "USER_DEFINED_BASIC_BUFFER_DEPTH must be defined in openlcb_user_config.h"
78#ifndef USER_DEFINED_DATAGRAM_BUFFER_DEPTH
79#error "USER_DEFINED_DATAGRAM_BUFFER_DEPTH must be defined in openlcb_user_config.h"
83#ifndef USER_DEFINED_SNIP_BUFFER_DEPTH
84#error "USER_DEFINED_SNIP_BUFFER_DEPTH must be defined in openlcb_user_config.h"
88#ifndef USER_DEFINED_STREAM_BUFFER_DEPTH
89#error "USER_DEFINED_STREAM_BUFFER_DEPTH must be defined in openlcb_user_config.h"
93#ifndef USER_DEFINED_NODE_BUFFER_DEPTH
94#error "USER_DEFINED_NODE_BUFFER_DEPTH must be defined in openlcb_user_config.h"
98#ifndef USER_DEFINED_CDI_LENGTH
99#error "USER_DEFINED_CDI_LENGTH must be defined in openlcb_user_config.h"
103#ifndef USER_DEFINED_FDI_LENGTH
104#error "USER_DEFINED_FDI_LENGTH must be defined in openlcb_user_config.h"
108#ifndef USER_DEFINED_PRODUCER_COUNT
109#error "USER_DEFINED_PRODUCER_COUNT must be defined in openlcb_user_config.h"
113#ifndef USER_DEFINED_PRODUCER_RANGE_COUNT
114#error "USER_DEFINED_PRODUCER_RANGE_COUNT must be defined in openlcb_user_config.h"
118#ifndef USER_DEFINED_CONSUMER_COUNT
119#error "USER_DEFINED_CONSUMER_COUNT must be defined in openlcb_user_config.h"
123#ifndef USER_DEFINED_CONSUMER_RANGE_COUNT
124#error "USER_DEFINED_CONSUMER_RANGE_COUNT must be defined in openlcb_user_config.h"
129#ifndef USER_DEFINED_TRAIN_NODE_COUNT
130#error "USER_DEFINED_TRAIN_NODE_COUNT must be defined in openlcb_user_config.h"
134#ifndef USER_DEFINED_MAX_LISTENERS_PER_TRAIN
135#error "USER_DEFINED_MAX_LISTENERS_PER_TRAIN must be defined in openlcb_user_config.h"
139#ifndef USER_DEFINED_MAX_TRAIN_FUNCTIONS
140#error "USER_DEFINED_MAX_TRAIN_FUNCTIONS must be defined in openlcb_user_config.h"
152#define LEN_CONFIG_MEM_OPTIONS_DESCRIPTION (64 - 1)
155#define LEN_CONFIG_MEM_ADDRESS_SPACE_DESCRIPTION (60 - 1)
158#define NULL_NODE_ID 0x000000000000
161#define NULL_EVENT_ID 0x0000000000000000
164#define LEN_SNIP_NAME_BUFFER 41
167#define LEN_SNIP_MODEL_BUFFER 41
170#define LEN_SNIP_HARDWARE_VERSION_BUFFER 21
173#define LEN_SNIP_SOFTWARE_VERSION_BUFFER 21
176#define LEN_SNIP_USER_NAME_BUFFER 63
179#define LEN_SNIP_USER_DESCRIPTION_BUFFER 64
182#define LEN_SNIP_USER_DATA (LEN_SNIP_USER_NAME_BUFFER + LEN_SNIP_USER_DESCRIPTION_BUFFER)
185#define LEN_SNIP_VERSION 1
188#define LEN_SNIP_USER_VERSION 1
191#define LEN_SNIP_STRUCTURE 264
194#define LEN_MESSAGE_BYTES_BASIC 16
197#define LEN_MESSAGE_BYTES_DATAGRAM 72
200#define LEN_MESSAGE_BYTES_SNIP 256
203#define LEN_MESSAGE_BYTES_STREAM 512
206#define LEN_EVENT_ID 8
209#define LEN_MESSAGE_BUFFER (USER_DEFINED_BASIC_BUFFER_DEPTH + USER_DEFINED_DATAGRAM_BUFFER_DEPTH + USER_DEFINED_SNIP_BUFFER_DEPTH + USER_DEFINED_STREAM_BUFFER_DEPTH)
212#define LEN_DATAGRAM_MAX_PAYLOAD 64
215#define LEN_EVENT_PAYLOAD LEN_MESSAGE_BYTES_SNIP
568 uint8_t
cdi[USER_DEFINED_CDI_LENGTH];
569 uint8_t
fdi[USER_DEFINED_FDI_LENGTH];
#define LEN_CONFIG_MEM_OPTIONS_DESCRIPTION
Maximum description length for Configuration Options reply.
Definition openlcb_types.h:152
#define LEN_SNIP_MODEL_BUFFER
SNIP model name field length (including null)
Definition openlcb_types.h:167
#define LEN_SNIP_HARDWARE_VERSION_BUFFER
SNIP hardware version field length (including null)
Definition openlcb_types.h:170
#define LEN_DATAGRAM_MAX_PAYLOAD
Maximum datagram payload after protocol overhead.
Definition openlcb_types.h:212
#define LEN_SNIP_NAME_BUFFER
SNIP manufacturer name field length (including null)
Definition openlcb_types.h:164
#define LEN_EVENT_PAYLOAD
Event payload maximum size (uses SNIP buffer)
Definition openlcb_types.h:215
#define LEN_MESSAGE_BUFFER
Total number of message buffers (sum of all buffer types)
Definition openlcb_types.h:209
#define LEN_CONFIG_MEM_ADDRESS_SPACE_DESCRIPTION
Maximum description length for Address Space Info reply.
Definition openlcb_types.h:155
#define LEN_SNIP_SOFTWARE_VERSION_BUFFER
SNIP software version field length (including null)
Definition openlcb_types.h:173
#define LEN_MESSAGE_BYTES_BASIC
BASIC message payload size.
Definition openlcb_types.h:194
#define LEN_MESSAGE_BYTES_SNIP
SNIP message payload size (also covers Events with Payload)
Definition openlcb_types.h:200
#define LEN_MESSAGE_BYTES_DATAGRAM
DATAGRAM message maximum payload size.
Definition openlcb_types.h:197
#define LEN_MESSAGE_BYTES_STREAM
STREAM message payload size.
Definition openlcb_types.h:203
uint8_t payload_datagram_t[LEN_MESSAGE_BYTES_DATAGRAM]
DATAGRAM message payload buffer (72 bytes)
Definition openlcb_types.h:306
uint8_t payload_basic_t[LEN_MESSAGE_BYTES_BASIC]
BASIC message payload buffer (16 bytes)
Definition openlcb_types.h:303
uint8_t payload_snip_t[LEN_MESSAGE_BYTES_SNIP]
SNIP message payload buffer (256 bytes)
Definition openlcb_types.h:309
uint8_t payload_stream_t[LEN_MESSAGE_BYTES_STREAM]
STREAM message payload buffer (512 bytes)
Definition openlcb_types.h:312
payload_datagram_t openlcb_datagram_data_buffer_t[USER_DEFINED_DATAGRAM_BUFFER_DEPTH]
Array of DATAGRAM payload buffers.
Definition openlcb_types.h:326
payload_basic_t openlcb_basic_data_buffer_t[USER_DEFINED_BASIC_BUFFER_DEPTH]
Array of BASIC payload buffers.
Definition openlcb_types.h:323
payload_stream_t openlcb_stream_data_buffer_t[USER_DEFINED_STREAM_BUFFER_DEPTH]
Array of STREAM payload buffers.
Definition openlcb_types.h:332
payload_snip_t openlcb_snip_data_buffer_t[USER_DEFINED_SNIP_BUFFER_DEPTH]
Array of SNIP payload buffers.
Definition openlcb_types.h:329
struct config_mem_read_request_info_TAG config_mem_read_request_info_t
Request info for a configuration memory read operation.
struct config_mem_operations_request_info_TAG config_mem_operations_request_info_t
Request info for Get Options / Get Address Space Info commands.
uint64_t event_id_t
64-bit Event ID.
Definition openlcb_types.h:340
struct config_mem_write_request_info_TAG config_mem_write_request_info_t
Request info for a configuration memory write operation.
void(* parameterless_callback_t)(void)
Callback function type with no parameters.
Definition openlcb_types.h:714
void(* write_config_mem_space_func_t)(openlcb_statemachine_info_t *statemachine_info, struct config_mem_write_request_info_TAG *config_mem_write_request_info)
Config mem write callback function type.
Definition openlcb_types.h:814
event_status_enum
Event status for Producer/Consumer identification messages.
Definition openlcb_types.h:230
@ EVENT_STATUS_UNKNOWN
Definition openlcb_types.h:232
@ EVENT_STATUS_CLEAR
Definition openlcb_types.h:234
@ EVENT_STATUS_SET
Definition openlcb_types.h:233
uint8_t configuration_memory_buffer_t[LEN_DATAGRAM_MAX_PAYLOAD]
Configuration memory read/write operation buffer (64 bytes).
Definition openlcb_types.h:365
event_range_count_enum
Power-of-two event range sizes for range-identified events.
Definition openlcb_types.h:247
@ EVENT_RANGE_COUNT_16
Definition openlcb_types.h:253
@ EVENT_RANGE_COUNT_512
Definition openlcb_types.h:258
@ EVENT_RANGE_COUNT_32
Definition openlcb_types.h:254
@ EVENT_RANGE_COUNT_32768
Definition openlcb_types.h:264
@ EVENT_RANGE_COUNT_8192
Definition openlcb_types.h:262
@ EVENT_RANGE_COUNT_4
Definition openlcb_types.h:251
@ EVENT_RANGE_COUNT_8
Definition openlcb_types.h:252
@ EVENT_RANGE_COUNT_2
Definition openlcb_types.h:250
@ EVENT_RANGE_COUNT_1024
Definition openlcb_types.h:259
@ EVENT_RANGE_COUNT_64
Definition openlcb_types.h:255
@ EVENT_RANGE_COUNT_2048
Definition openlcb_types.h:260
@ EVENT_RANGE_COUNT_256
Definition openlcb_types.h:257
@ EVENT_RANGE_COUNT_4096
Definition openlcb_types.h:261
@ EVENT_RANGE_COUNT_1
Definition openlcb_types.h:249
@ EVENT_RANGE_COUNT_16384
Definition openlcb_types.h:263
@ EVENT_RANGE_COUNT_128
Definition openlcb_types.h:256
struct openlcb_node_TAG openlcb_node_t
OpenLCB virtual node.
train_emergency_type_enum
Emergency state type for train protocol callbacks.
Definition openlcb_types.h:288
@ TRAIN_EMERGENCY_TYPE_ESTOP
Definition openlcb_types.h:290
@ TRAIN_EMERGENCY_TYPE_GLOBAL_STOP
Definition openlcb_types.h:291
@ TRAIN_EMERGENCY_TYPE_GLOBAL_OFF
Definition openlcb_types.h:292
uint8_t openlcb_payload_t[1]
Generic 1-byte payload pointer type for casting.
Definition openlcb_types.h:337
struct train_state_TAG train_state_t
Mutable runtime state for a single train node.
uint8_t event_payload_t[LEN_EVENT_PAYLOAD]
Event payload data buffer (LEN_EVENT_PAYLOAD bytes).
Definition openlcb_types.h:362
openlcb_msg_t openlcb_msg_array_t[LEN_MESSAGE_BUFFER]
Array of all message structures in the buffer store.
Definition openlcb_types.h:497
void(* read_config_mem_space_func_t)(openlcb_statemachine_info_t *statemachine_info, struct config_mem_read_request_info_TAG *config_mem_read_request_info)
Config mem read callback function type.
Definition openlcb_types.h:796
space_encoding_enum
Where the address space byte is encoded in a Config Mem command.
Definition openlcb_types.h:239
@ ADDRESS_SPACE_IN_BYTE_1
Definition openlcb_types.h:241
@ ADDRESS_SPACE_IN_BYTE_6
Definition openlcb_types.h:242
broadcast_time_event_type_enum
Broadcast Time Protocol event type decoded from an Event ID.
Definition openlcb_types.h:269
@ BROADCAST_TIME_EVENT_REPORT_RATE
Definition openlcb_types.h:274
@ BROADCAST_TIME_EVENT_STOP
Definition openlcb_types.h:280
@ BROADCAST_TIME_EVENT_START
Definition openlcb_types.h:281
@ BROADCAST_TIME_EVENT_UNKNOWN
Definition openlcb_types.h:283
@ BROADCAST_TIME_EVENT_QUERY
Definition openlcb_types.h:279
@ BROADCAST_TIME_EVENT_REPORT_YEAR
Definition openlcb_types.h:273
@ BROADCAST_TIME_EVENT_SET_TIME
Definition openlcb_types.h:275
@ BROADCAST_TIME_EVENT_REPORT_TIME
Definition openlcb_types.h:271
@ BROADCAST_TIME_EVENT_DATE_ROLLOVER
Definition openlcb_types.h:282
@ BROADCAST_TIME_EVENT_SET_RATE
Definition openlcb_types.h:278
@ BROADCAST_TIME_EVENT_SET_YEAR
Definition openlcb_types.h:277
@ BROADCAST_TIME_EVENT_REPORT_DATE
Definition openlcb_types.h:272
@ BROADCAST_TIME_EVENT_SET_DATE
Definition openlcb_types.h:276
uint64_t node_id_t
48-bit Node ID stored in a 64-bit type (upper 16 bits unused).
Definition openlcb_types.h:359
struct node_parameters_TAG node_parameters_t
Complete node configuration parameters (typically const/flash).
void(* operations_config_mem_space_func_t)(openlcb_statemachine_info_t *statemachine_info, struct config_mem_operations_request_info_TAG *config_mem_operations_request_info)
Config mem operations callback function type.
Definition openlcb_types.h:782
payload_type_enum
Message buffer payload type identifier.
Definition openlcb_types.h:220
@ BASIC
Definition openlcb_types.h:222
@ STREAM
Definition openlcb_types.h:225
@ DATAGRAM
Definition openlcb_types.h:223
@ SNIP
Definition openlcb_types.h:224
Complete state for one Broadcast Time clock.
Definition openlcb_types.h:407
broadcast_rate_t rate
Definition openlcb_types.h:413
broadcast_time_t time
Definition openlcb_types.h:410
bool is_running
Definition openlcb_types.h:414
uint64_t clock_id
Definition openlcb_types.h:409
broadcast_year_t year
Definition openlcb_types.h:412
uint32_t ms_accumulator
Definition openlcb_types.h:415
broadcast_date_t date
Definition openlcb_types.h:411
A clock slot with state and subscription flags.
Definition openlcb_types.h:420
uint8_t send_query_reply_state
Per-clock state for query reply sequence (0-5).
Definition openlcb_types.h:428
bool is_allocated
Definition openlcb_types.h:425
bool is_consumer
Definition openlcb_types.h:423
broadcast_clock_state_t state
Definition openlcb_types.h:422
uint8_t sync_delay_ticks
Countdown for Set command coalescing (30 = 3s at 100ms).
Definition openlcb_types.h:429
uint8_t previous_run_state
Last-seen producer node run_state for startup sync detection.
Definition openlcb_types.h:431
void * producer_node
Node pointer for sending (set in setup_producer).
Definition openlcb_types.h:432
bool query_reply_pending
Query reply state machine active.
Definition openlcb_types.h:426
bool sync_pending
Delayed sync waiting to fire after Set commands.
Definition openlcb_types.h:427
uint16_t report_cooldown_ticks
Cooldown between periodic Report Time events (600 = 60s).
Definition openlcb_types.h:430
bool is_producer
Definition openlcb_types.h:424
Broadcast Time month/day.
Definition openlcb_types.h:377
bool valid
Definition openlcb_types.h:381
uint8_t month
Definition openlcb_types.h:379
uint8_t day
Definition openlcb_types.h:380
Broadcast Time clock rate (12-bit signed fixed point, 2 fractional bits).
Definition openlcb_types.h:399
bool valid
Definition openlcb_types.h:402
int16_t rate
Definition openlcb_types.h:401
Broadcast Time hour/minute.
Definition openlcb_types.h:368
bool valid
Definition openlcb_types.h:372
uint8_t minute
Definition openlcb_types.h:371
uint8_t hour
Definition openlcb_types.h:370
Broadcast Time year.
Definition openlcb_types.h:386
bool valid
Definition openlcb_types.h:389
uint16_t year
Definition openlcb_types.h:388
Request info for Get Options / Get Address Space Info commands.
Definition openlcb_types.h:785
operations_config_mem_space_func_t operations_func
Definition openlcb_types.h:788
const user_address_space_info_t * space_info
Definition openlcb_types.h:787
Request info for a configuration memory read operation.
Definition openlcb_types.h:799
uint16_t data_start
Definition openlcb_types.h:804
read_config_mem_space_func_t read_space_func
Definition openlcb_types.h:806
uint16_t bytes
Definition openlcb_types.h:803
const user_address_space_info_t * space_info
Definition openlcb_types.h:805
uint32_t address
Definition openlcb_types.h:802
space_encoding_enum encoding
Definition openlcb_types.h:801
Request info for a configuration memory write operation.
Definition openlcb_types.h:817
uint16_t data_start
Definition openlcb_types.h:823
uint16_t bytes
Definition openlcb_types.h:821
const user_address_space_info_t * space_info
Definition openlcb_types.h:824
write_config_mem_space_func_t write_space_func
Definition openlcb_types.h:825
configuration_memory_buffer_t * write_buffer
Definition openlcb_types.h:822
uint32_t address
Definition openlcb_types.h:820
space_encoding_enum encoding
Definition openlcb_types.h:819
List of events consumed by a node.
Definition openlcb_types.h:596
uint16_t range_count
Definition openlcb_types.h:600
event_id_enum_t enumerator
Definition openlcb_types.h:602
uint16_t count
Definition openlcb_types.h:598
Event list enumeration state.
Definition openlcb_types.h:587
bool running
Definition openlcb_types.h:589
uint8_t enum_index
Definition openlcb_types.h:590
uint8_t range_enum_index
Definition openlcb_types.h:591
List of events produced by a node.
Definition openlcb_types.h:607
uint16_t range_count
Definition openlcb_types.h:611
event_id_enum_t enumerator
Definition openlcb_types.h:613
uint16_t count
Definition openlcb_types.h:609
Contiguous range of Event IDs starting at a base address.
Definition openlcb_types.h:351
event_range_count_enum event_count
Definition openlcb_types.h:354
event_id_t start_base
Definition openlcb_types.h:353
Event ID paired with its current status.
Definition openlcb_types.h:343
event_id_t event
Definition openlcb_types.h:345
event_status_enum status
Definition openlcb_types.h:346
Master buffer storage: message structures + segregated payload pools.
Definition openlcb_types.h:500
openlcb_stream_data_buffer_t stream
Definition openlcb_types.h:506
openlcb_msg_array_t messages
Definition openlcb_types.h:502
openlcb_snip_data_buffer_t snip
Definition openlcb_types.h:505
openlcb_datagram_data_buffer_t datagram
Definition openlcb_types.h:504
openlcb_basic_data_buffer_t basic
Definition openlcb_types.h:503
Complete node configuration parameters (typically const/flash).
Definition openlcb_types.h:562
user_address_space_info_t address_space_train_function_definition_info
Definition openlcb_types.h:575
uint8_t fdi[USER_DEFINED_FDI_LENGTH]
Definition openlcb_types.h:569
uint8_t consumer_count_autocreate
Definition openlcb_types.h:566
user_snip_struct_t snip
Definition openlcb_types.h:564
user_address_space_info_t address_space_train_function_config_memory
Definition openlcb_types.h:576
user_address_space_info_t address_space_acdi_manufacturer
Definition openlcb_types.h:573
user_address_space_info_t address_space_acdi_user
Definition openlcb_types.h:574
user_address_space_info_t address_space_all
Definition openlcb_types.h:571
user_address_space_info_t address_space_firmware
Definition openlcb_types.h:578
uint8_t cdi[USER_DEFINED_CDI_LENGTH]
Definition openlcb_types.h:568
user_address_space_info_t address_space_config_memory
Definition openlcb_types.h:572
uint64_t protocol_support
Definition openlcb_types.h:565
user_address_space_info_t address_space_configuration_definition
Definition openlcb_types.h:570
uint8_t producer_count_autocreate
Definition openlcb_types.h:567
user_configuration_options configuration_options
Definition openlcb_types.h:577
Message with inline BASIC-sized payload.
Definition openlcb_types.h:753
openlcb_msg_t openlcb_msg
Definition openlcb_types.h:755
payload_basic_t openlcb_payload
Definition openlcb_types.h:756
Incoming message context.
Definition openlcb_types.h:735
openlcb_msg_t * msg_ptr
Definition openlcb_types.h:737
uint8_t enumerate
Definition openlcb_types.h:738
Login state machine context.
Definition openlcb_types.h:771
openlcb_node_t * openlcb_node
Definition openlcb_types.h:773
openlcb_outgoing_basic_msg_info_t outgoing_msg_info
Definition openlcb_types.h:774
Message buffer allocation/assembly state flags.
Definition openlcb_types.h:437
bool allocated
Definition openlcb_types.h:439
bool invalid
Definition openlcb_types.h:441
bool loopback
Definition openlcb_types.h:442
bool inprocess
Definition openlcb_types.h:440
Core OpenLCB message structure.
Definition openlcb_types.h:480
openlcb_msg_timer_t timer
Definition openlcb_types.h:491
node_id_t source_id
Definition openlcb_types.h:486
node_id_t dest_id
Definition openlcb_types.h:487
uint8_t reference_count
Definition openlcb_types.h:492
openlcb_msg_state_t state
Definition openlcb_types.h:482
uint16_t payload_count
Definition openlcb_types.h:489
openlcb_payload_t * payload
Definition openlcb_types.h:490
payload_type_enum payload_type
Definition openlcb_types.h:488
uint16_t mti
Definition openlcb_types.h:483
uint16_t source_alias
Definition openlcb_types.h:484
uint16_t dest_alias
Definition openlcb_types.h:485
OpenLCB virtual node.
Definition openlcb_types.h:679
const node_parameters_t * parameters
Definition openlcb_types.h:687
struct train_state_TAG * train_state
Definition openlcb_types.h:692
uint64_t seed
Definition openlcb_types.h:684
uint16_t alias
Definition openlcb_types.h:683
openlcb_msg_t * last_received_datagram
Definition openlcb_types.h:690
uint64_t id
Definition openlcb_types.h:682
openlcb_node_state_t state
Definition openlcb_types.h:681
event_id_producer_list_t producers
Definition openlcb_types.h:686
uint8_t index
Definition openlcb_types.h:691
uint16_t timerticks
Definition openlcb_types.h:688
uint64_t owner_node
Definition openlcb_types.h:689
event_id_consumer_list_t consumers
Definition openlcb_types.h:685
Bit-packed node state flags.
Definition openlcb_types.h:618
bool allocated
Definition openlcb_types.h:621
bool firmware_upgrade_active
Definition openlcb_types.h:627
bool duplicate_id_detected
Definition openlcb_types.h:624
uint8_t run_state
Definition openlcb_types.h:620
bool resend_datagram
Definition openlcb_types.h:626
bool openlcb_datagram_ack_sent
Definition openlcb_types.h:625
bool permitted
Definition openlcb_types.h:622
bool initialized
Definition openlcb_types.h:623
Collection of all virtual nodes.
Definition openlcb_types.h:697
uint16_t count
Definition openlcb_types.h:700
Outgoing message context for the login state machine.
Definition openlcb_types.h:761
openlcb_basic_message_t openlcb_msg
Definition openlcb_types.h:766
uint8_t valid
Definition openlcb_types.h:764
openlcb_msg_t * msg_ptr
Definition openlcb_types.h:763
uint8_t enumerate
Definition openlcb_types.h:765
Outgoing message context for the main state machine.
Definition openlcb_types.h:725
uint8_t valid
Definition openlcb_types.h:728
openlcb_msg_t * msg_ptr
Definition openlcb_types.h:727
uint8_t enumerate
Definition openlcb_types.h:729
openlcb_stream_message_t openlcb_msg
Definition openlcb_types.h:730
Complete context passed to protocol handler functions.
Definition openlcb_types.h:743
openlcb_outgoing_stream_msg_info_t outgoing_msg_info
Definition openlcb_types.h:747
uint8_t current_tick
Definition openlcb_types.h:748
openlcb_node_t * openlcb_node
Definition openlcb_types.h:745
openlcb_incoming_msg_info_t incoming_msg_info
Definition openlcb_types.h:746
State machine temporary working buffers.
Definition openlcb_types.h:705
openlcb_msg_t * active_msg
Definition openlcb_types.h:709
openlcb_msg_t worker
Definition openlcb_types.h:707
payload_stream_t worker_buffer
Definition openlcb_types.h:708
Message with inline STREAM-sized payload.
Definition openlcb_types.h:717
openlcb_msg_t openlcb_msg
Definition openlcb_types.h:719
payload_stream_t openlcb_payload
Definition openlcb_types.h:720
A single listener entry for a train consist.
Definition openlcb_types.h:632
node_id_t node_id
Definition openlcb_types.h:634
uint8_t flags
Definition openlcb_types.h:635
Mutable runtime state for a single train node.
Definition openlcb_types.h:644
uint8_t listener_count
Definition openlcb_types.h:660
train_listener_entry_t listeners[USER_DEFINED_MAX_LISTENERS_PER_TRAIN]
Definition openlcb_types.h:659
uint32_t heartbeat_counter_100ms
Definition openlcb_types.h:657
uint32_t heartbeat_timeout_s
Definition openlcb_types.h:656
struct openlcb_node_TAG * owner_node
Definition openlcb_types.h:669
uint8_t speed_steps
Definition openlcb_types.h:667
uint16_t dcc_address
Definition openlcb_types.h:665
bool is_long_address
Definition openlcb_types.h:666
bool estop_active
Definition openlcb_types.h:649
uint16_t set_speed
Definition openlcb_types.h:646
uint16_t controller_alias
Definition openlcb_types.h:653
uint16_t actual_speed
Definition openlcb_types.h:648
uint8_t reserved_node_count
Definition openlcb_types.h:654
node_id_t reserved_by_node_id
Definition openlcb_types.h:655
bool global_eoff_active
Definition openlcb_types.h:651
uint8_t listener_enum_index
Definition openlcb_types.h:661
bool global_estop_active
Definition openlcb_types.h:650
node_id_t controller_node_id
Definition openlcb_types.h:652
uint16_t functions[USER_DEFINED_MAX_TRAIN_FUNCTIONS]
Definition openlcb_types.h:663
uint16_t commanded_speed
Definition openlcb_types.h:647
Properties of a single configuration memory address space.
Definition openlcb_types.h:544
uint8_t address_space
Definition openlcb_types.h:549
uint32_t low_address
Definition openlcb_types.h:551
bool present
Definition openlcb_types.h:546
bool low_address_valid
Definition openlcb_types.h:548
uint32_t highest_address
Definition openlcb_types.h:550
bool read_only
Definition openlcb_types.h:547
Capability flags returned by Get Configuration Options command.
Definition openlcb_types.h:528
uint8_t high_address_space
Definition openlcb_types.h:537
bool write_under_mask_supported
Definition openlcb_types.h:530
bool read_from_user_space_0xfb_supported
Definition openlcb_types.h:534
uint8_t low_address_space
Definition openlcb_types.h:538
bool stream_read_write_supported
Definition openlcb_types.h:536
bool unaligned_writes_supported
Definition openlcb_types.h:532
bool unaligned_reads_supported
Definition openlcb_types.h:531
bool write_to_user_space_0xfb_supported
Definition openlcb_types.h:535
bool read_from_manufacturer_space_0xfc_supported
Definition openlcb_types.h:533
SNIP identification strings (manufacturer + user version byte).
Definition openlcb_types.h:516
uint8_t mfg_version
Definition openlcb_types.h:518
uint8_t user_version
Definition openlcb_types.h:523
Timer field union for openlcb_msg_t.
Definition openlcb_types.h:458
uint8_t tick_snapshot
Definition openlcb_types.h:464
uint8_t assembly_ticks
Definition openlcb_types.h:460
uint8_t retry_count
Definition openlcb_types.h:465