OpenLcbCLib 1.0 Alpha
OpenSource C Library to create OpenLcb/Lcc Nodes
Loading...
Searching...
No Matches
protocol_config_mem_write_handler.h
Go to the documentation of this file.
1
41#ifndef __OPENLCB_PROTOCOL_CONFIG_MEM_WRITE_HANDLER__
42#define __OPENLCB_PROTOCOL_CONFIG_MEM_WRITE_HANDLER__
43
44#include <stdbool.h>
45#include <stdint.h>
46
47#include "openlcb_types.h"
48
56typedef struct {
57
58 // ---- Required ----
59
61 void (*load_datagram_received_ok_message)(openlcb_statemachine_info_t *statemachine_info, uint16_t reply_pending_time_in_seconds);
62
64 void (*load_datagram_received_rejected_message)(openlcb_statemachine_info_t *statemachine_info, uint16_t return_code);
65
67 uint16_t(*config_memory_write) (openlcb_node_t *openlcb_node, uint32_t address, uint16_t count, configuration_memory_buffer_t* buffer);
68
70 uint16_t(*config_memory_read) (openlcb_node_t *openlcb_node, uint32_t address, uint16_t count, configuration_memory_buffer_t* buffer);
71
72 // ---- Optional per-space write handlers ----
73
75 void (*write_request_config_definition_info)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
77 void (*write_request_all)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
79 void (*write_request_config_mem)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
81 void (*write_request_acdi_manufacturer)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
83 void (*write_request_acdi_user)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
85 void (*write_request_train_function_config_definition_info)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
87 void (*write_request_train_function_config_memory)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
89 void (*write_request_firmware)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
90
91 // ---- Optional extras ----
92
94 uint16_t (*delayed_reply_time)(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t* config_mem_write_request_info);
95
97 void (*on_function_changed)(openlcb_node_t *openlcb_node, uint32_t fn_address, uint16_t fn_value);
98
100
101#ifdef __cplusplus
102extern "C" {
103#endif /* __cplusplus */
104
110 extern void ProtocolConfigMemWriteHandler_initialize(const interface_protocol_config_mem_write_handler_t *interface_protocol_config_mem_write_handler);
111
112 // ---- Incoming write commands (server side — this node is being written) ----
113
120
127
134
141
148
155
162
169
170 // ---- Incoming write-under-mask commands (server side) ----
171
178
185
192
199
206
213
220
227
228 // ---- Outgoing write requests (client side — writing to another node) ----
229
237
245
253
254 // ---- Generic message handlers (stubs for future use) ----
255
264 extern void ProtocolConfigMemWriteHandler_write_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space, uint8_t return_msg_ok, uint8_t return_msg_fail);
265
272 extern void ProtocolConfigMemWriteHandler_write_reply_ok_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space);
273
280 extern void ProtocolConfigMemWriteHandler_write_reply_fail_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space);
281
282
283#ifdef __cplusplus
284}
285#endif /* __cplusplus */
286
287#endif /* __OPENLCB_PROTOCOL_CONFIG_MEM_WRITE_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 ProtocolConfigMemWriteHandler_write_request_train_function_config_memory(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t *config_mem_write_request_info)
Write to Train Fn Config (0xF9): updates in-RAM functions[].
Definition protocol_config_mem_write_handler.c:994
void ProtocolConfigMemWriteHandler_write_under_mask_space_all(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to All space (0xFE).
Definition protocol_config_mem_write_handler.c:569
void ProtocolConfigMemWriteHandler_write_under_mask_space_acdi_user(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to ACDI-User space (0xFB).
Definition protocol_config_mem_write_handler.c:602
void ProtocolConfigMemWriteHandler_write_space_config_memory(openlcb_statemachine_info_t *statemachine_info)
Write to Config space (0xFD).
Definition protocol_config_mem_write_handler.c:247
void ProtocolConfigMemWriteHandler_write_space_train_function_config_memory(openlcb_statemachine_info_t *statemachine_info)
Write to Train Fn Config space (0xF9).
Definition protocol_config_mem_write_handler.c:295
void ProtocolConfigMemWriteHandler_write_reply_ok_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space)
Generic write reply OK handler. Placeholder.
Definition protocol_config_mem_write_handler.c:689
void ProtocolConfigMemWriteHandler_write_reply_fail_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space)
Generic write reply fail handler. Placeholder.
Definition protocol_config_mem_write_handler.c:710
void ProtocolConfigMemWriteHandler_write_under_mask_space_acdi_manufacturer(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to ACDI-Mfg space (0xFC).
Definition protocol_config_mem_write_handler.c:591
void ProtocolConfigMemWriteHandler_write_space_all(openlcb_statemachine_info_t *statemachine_info)
Write to All space (0xFE).
Definition protocol_config_mem_write_handler.c:235
void ProtocolConfigMemWriteHandler_write_space_acdi_manufacturer(openlcb_statemachine_info_t *statemachine_info)
Write to ACDI-Mfg space (0xFC).
Definition protocol_config_mem_write_handler.c:259
void ProtocolConfigMemWriteHandler_initialize(const interface_protocol_config_mem_write_handler_t *interface_protocol_config_mem_write_handler)
Stores the callback interface. Call once at startup.
Definition protocol_config_mem_write_handler.c:68
void ProtocolConfigMemWriteHandler_write_space_acdi_user(openlcb_statemachine_info_t *statemachine_info)
Write to ACDI-User space (0xFB).
Definition protocol_config_mem_write_handler.c:271
void ProtocolConfigMemWriteHandler_write_request_config_mem(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t *config_mem_write_request_info)
Send write request targeting Config (0xFD) on another node.
Definition protocol_config_mem_write_handler.c:815
void ProtocolConfigMemWriteHandler_write_request_acdi_user(openlcb_statemachine_info_t *statemachine_info, config_mem_write_request_info_t *config_mem_write_request_info)
Send write request targeting ACDI-User (0xFB) on another node.
Definition protocol_config_mem_write_handler.c:865
void ProtocolConfigMemWriteHandler_write_under_mask_space_train_function_definition_info(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to Train FDI space (0xFA).
Definition protocol_config_mem_write_handler.c:613
void ProtocolConfigMemWriteHandler_write_space_config_description_info(openlcb_statemachine_info_t *statemachine_info)
Write to CDI space (0xFF).
Definition protocol_config_mem_write_handler.c:223
void ProtocolConfigMemWriteHandler_write_space_firmware(openlcb_statemachine_info_t *statemachine_info)
Write to Firmware space (0xEF).
Definition protocol_config_mem_write_handler.c:307
void ProtocolConfigMemWriteHandler_write_message(openlcb_statemachine_info_t *statemachine_info, uint8_t space, uint8_t return_msg_ok, uint8_t return_msg_fail)
Generic write message handler. Placeholder.
Definition protocol_config_mem_write_handler.c:668
void ProtocolConfigMemWriteHandler_write_under_mask_space_config_description_info(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to CDI space (0xFF).
Definition protocol_config_mem_write_handler.c:558
void ProtocolConfigMemWriteHandler_write_space_train_function_definition_info(openlcb_statemachine_info_t *statemachine_info)
Write to Train FDI space (0xFA).
Definition protocol_config_mem_write_handler.c:283
void ProtocolConfigMemWriteHandler_write_under_mask_space_config_memory(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to Config space (0xFD).
Definition protocol_config_mem_write_handler.c:580
void ProtocolConfigMemWriteHandler_write_under_mask_space_firmware(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to Firmware space (0xEF).
Definition protocol_config_mem_write_handler.c:635
void ProtocolConfigMemWriteHandler_write_under_mask_space_train_function_config_memory(openlcb_statemachine_info_t *statemachine_info)
Write-under-mask to Train Fn Config space (0xF9).
Definition protocol_config_mem_write_handler.c:624
Request info for a configuration memory write operation.
Definition openlcb_types.h:817
Callback interface for memory-config write operations.
Definition protocol_config_mem_write_handler.h:56
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