OpenLcbCLib 1.0 Alpha
OpenSource C Library to create OpenLcb/Lcc Nodes
Loading...
Searching...
No Matches
protocol_config_mem_read_handler.h
Go to the documentation of this file.
1
39#ifndef __OPENLCB_PROTOCOL_CONFIG_MEM_READ_HANDLER__
40#define __OPENLCB_PROTOCOL_CONFIG_MEM_READ_HANDLER__
41
42#include <stdbool.h>
43#include <stdint.h>
44
45#include "openlcb_types.h"
46
50typedef struct {
51
52 // ---- Required ----
53
55 void (*load_datagram_received_ok_message)(openlcb_statemachine_info_t *statemachine_info, uint16_t reply_pending_time_in_seconds);
56
58 void (*load_datagram_received_rejected_message)(openlcb_statemachine_info_t *statemachine_info, uint16_t return_code);
59
61 uint16_t(*config_memory_read)(openlcb_node_t* openlcb_node, uint32_t address, uint16_t count, configuration_memory_buffer_t* buffer);
62
63 // ---- Optional SNIP field loaders (needed only for ACDI 0xFC / 0xFB spaces) ----
64
66 uint16_t(*snip_load_manufacturer_version_id)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
68 uint16_t(*snip_load_name)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
70 uint16_t(*snip_load_model)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
72 uint16_t(*snip_load_hardware_version)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
74 uint16_t(*snip_load_software_version)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
76 uint16_t(*snip_load_user_version_id)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
78 uint16_t(*snip_load_user_name)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
80 uint16_t(*snip_load_user_description)(openlcb_node_t* openlcb_node, openlcb_msg_t* worker_msg, uint16_t payload_index, uint16_t requested_bytes);
81
82 // ---- Optional per-space read request overrides ----
83
85 void (*read_request_config_definition_info)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
87 void (*read_request_all)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
89 void (*read_request_config_mem)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
91 void (*read_request_acdi_manufacturer)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
93 void (*read_request_acdi_user)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
95 void (*read_request_train_function_config_definition_info)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
97 void (*read_request_train_function_config_memory)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
98
100 uint16_t (*delayed_reply_time)(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t* config_mem_read_request_info);
101
103
104
105#ifdef __cplusplus
106extern "C" {
107#endif /* __cplusplus */
108
114 extern void ProtocolConfigMemReadHandler_initialize(const interface_protocol_config_mem_read_handler_t *interface_protocol_config_mem_read_handler);
115
116 // ---- Incoming read commands (server side — this node is being read) ----
117
124
131
138
145
152
159
166
167 // ---- Outgoing read requests (client side — reading from another node) ----
168
176
184
192
200
208
216
217 // ---- Generic message handlers (stubs for future use) ----
218
227 extern void ProtocolConfigMemReadHandler_read_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space, uint8_t return_msg_ok, uint8_t return_msg_fail);
228
235 extern void ProtocolConfigMemReadHandler_read_reply_ok_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space);
236
243 extern void ProtocolConfigMemReadHandler_read_reply_reject_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space);
244
245
246#ifdef __cplusplus
247}
248#endif /* __cplusplus */
249
250#endif /* __OPENLCB_PROTOCOL_CONFIG_MEM_READ_HANDLER__ */
Core type definitions, structures, and configuration constants for the OpenLCB library.
uint8_t configuration_memory_buffer_t[LEN_DATAGRAM_MAX_PAYLOAD]
Configuration memory read/write operation buffer (64 bytes).
Definition openlcb_types.h:365
void ProtocolConfigMemReadHandler_read_reply_ok_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space)
Generic read reply OK handler. Placeholder.
Definition protocol_config_mem_read_handler.c:636
void ProtocolConfigMemReadHandler_read_space_all(openlcb_statemachine_info_t *statemachine_info)
Read from All space (0xFE).
Definition protocol_config_mem_read_handler.c:556
void ProtocolConfigMemReadHandler_read_request_train_function_definition_info(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting Train FDI (0xFA) on another node.
Definition protocol_config_mem_read_handler.c:234
void ProtocolConfigMemReadHandler_read_reply_reject_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space)
Generic read reply reject handler. Placeholder.
Definition protocol_config_mem_read_handler.c:642
void ProtocolConfigMemReadHandler_read_space_acdi_user(openlcb_statemachine_info_t *statemachine_info)
Read from ACDI-User space (0xFB).
Definition protocol_config_mem_read_handler.c:592
void ProtocolConfigMemReadHandler_read_space_train_function_definition_info(openlcb_statemachine_info_t *statemachine_info)
Read from Train FDI space (0xFA).
Definition protocol_config_mem_read_handler.c:604
void ProtocolConfigMemReadHandler_initialize(const interface_protocol_config_mem_read_handler_t *interface_protocol_config_mem_read_handler)
Stores the callback interface. Call once at startup.
Definition protocol_config_mem_read_handler.c:66
void ProtocolConfigMemReadHandler_read_request_acdi_manufacturer(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting ACDI-Mfg (0xFC) on another node.
Definition protocol_config_mem_read_handler.c:338
void ProtocolConfigMemReadHandler_read_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space, uint8_t return_msg_ok, uint8_t return_msg_fail)
Generic read message handler. Placeholder.
Definition protocol_config_mem_read_handler.c:630
void ProtocolConfigMemReadHandler_read_space_acdi_manufacturer(openlcb_statemachine_info_t *statemachine_info)
Read from ACDI-Mfg space (0xFC).
Definition protocol_config_mem_read_handler.c:580
void ProtocolConfigMemReadHandler_read_space_config_description_info(openlcb_statemachine_info_t *statemachine_info)
Read from CDI space (0xFF).
Definition protocol_config_mem_read_handler.c:544
void ProtocolConfigMemReadHandler_read_request_acdi_user(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting ACDI-User (0xFB) on another node.
Definition protocol_config_mem_read_handler.c:462
void ProtocolConfigMemReadHandler_read_request_config_mem(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting Config (0xFD) on another node.
Definition protocol_config_mem_read_handler.c:299
void ProtocolConfigMemReadHandler_read_request_config_definition_info(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting CDI (0xFF) on another node.
Definition protocol_config_mem_read_handler.c:219
void ProtocolConfigMemReadHandler_read_request_train_function_config_memory(openlcb_statemachine_info_t *statemachine_info, config_mem_read_request_info_t *config_mem_read_request_info)
Send read request targeting Train Fn Config (0xF9) on another node.
Definition protocol_config_mem_read_handler.c:254
void ProtocolConfigMemReadHandler_read_space_train_function_config_memory(openlcb_statemachine_info_t *statemachine_info)
Read from Train Fn Config space (0xF9).
Definition protocol_config_mem_read_handler.c:616
void ProtocolConfigMemReadHandler_read_space_config_memory(openlcb_statemachine_info_t *statemachine_info)
Read from Config space (0xFD).
Definition protocol_config_mem_read_handler.c:568
Request info for a configuration memory read operation.
Definition openlcb_types.h:799
Callback interface for config memory reads. Datagram ACK and config_memory_read are REQUIRED; SNIP lo...
Definition protocol_config_mem_read_handler.h:50
Core OpenLCB message structure.
Definition openlcb_types.h:480
OpenLCB virtual node.
Definition openlcb_types.h:679
Complete context passed to protocol handler functions.
Definition openlcb_types.h:743

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