OpenLcbCLib 1.0 Alpha
OpenSource C Library to create OpenLcb/Lcc Nodes
Loading...
Searching...
No Matches
openlcb_defines.h
Go to the documentation of this file.
1
38// This is a guard condition so that contents of this file are not included
39// more than once.
40#ifndef __OPENLCB_OPENLCB_DEFINES__
41#define __OPENLCB_OPENLCB_DEFINES__
42
43// ---------------------------------------------------------------------------
44// Library version
45// ---------------------------------------------------------------------------
46#define OPENLCB_C_LIB_VERSION_MAJOR 1
47#define OPENLCB_C_LIB_VERSION_MINOR 0
48#define OPENLCB_C_LIB_VERSION_PATCH 0
49#define OPENLCB_C_LIB_VERSION "1.0.0"
50
51#include <stdbool.h>
52#include <stdint.h>
53
54#ifdef __cplusplus
55 extern "C" {
56#endif /* __cplusplus */
57
65#define RUNSTATE_INIT 0
66
68#define RUNSTATE_GENERATE_SEED 1
69
71#define RUNSTATE_GENERATE_ALIAS 2
72
74#define RUNSTATE_LOAD_CHECK_ID_07 3
75
77#define RUNSTATE_LOAD_CHECK_ID_06 4
78
80#define RUNSTATE_LOAD_CHECK_ID_05 5
81
83#define RUNSTATE_LOAD_CHECK_ID_04 6
84
88#define RUNSTATE_WAIT_200ms 7
89
91#define RUNSTATE_LOAD_RESERVE_ID 8
92
94#define RUNSTATE_LOAD_ALIAS_MAP_DEFINITION 9
95
97#define RUNSTATE_LOAD_INITIALIZATION_COMPLETE 10
98
100#define RUNSTATE_LOAD_CONSUMER_EVENTS 11
101
103#define RUNSTATE_LOAD_PRODUCER_EVENTS 12
104
106#define RUNSTATE_LOGIN_COMPLETE 13
107
109#define RUNSTATE_RUN 14
110
111 // end of node_login_states
112
120#define RESERVED_TOP_BIT 0x10000000
121
123#define CAN_OPENLCB_MSG 0x08000000
124
126#define MASK_CAN_FRAME_SEQUENCE_NUMBER 0x07000000
127
129#define MASK_CAN_FRAME_TYPE MASK_CAN_FRAME_SEQUENCE_NUMBER
130
132#define MASK_CAN_VARIABLE_FIELD 0x00FFF000
133
135#define OPENLCB_MESSAGE_STANDARD_FRAME_TYPE 0x01000000
136
138#define CAN_FRAME_TYPE_DATAGRAM_ONLY 0x02000000
139
141#define CAN_FRAME_TYPE_DATAGRAM_FIRST 0x03000000
142
144#define CAN_FRAME_TYPE_DATAGRAM_MIDDLE 0x04000000
145
147#define CAN_FRAME_TYPE_DATAGRAM_FINAL 0x05000000
148
150#define CAN_FRAME_TYPE_RESERVED 0x06000000
151
153#define CAN_FRAME_TYPE_STREAM 0x07000000
154
155 // end of can_frame_format
156
164#define MTI_INITIALIZATION_COMPLETE 0x0100
165
167#define MTI_INITIALIZATION_COMPLETE_SIMPLE 0x0101
168
170#define MTI_VERIFY_NODE_ID_ADDRESSED 0x0488
171
173#define MTI_VERIFY_NODE_ID_GLOBAL 0x0490
174
176#define MTI_VERIFIED_NODE_ID 0x0170
177
179#define MTI_VERIFIED_NODE_ID_SIMPLE 0x0171
180
182#define MTI_OPTIONAL_INTERACTION_REJECTED 0x0068
183
185#define MTI_TERMINATE_DUE_TO_ERROR 0x00A8
186
188#define MTI_PROTOCOL_SUPPORT_INQUIRY 0x0828
189
191#define MTI_PROTOCOL_SUPPORT_REPLY 0x0668
192
193 // end of mti_message_network
194
202#define MTI_CONSUMER_IDENTIFY 0x08F4
203
205#define MTI_CONSUMER_RANGE_IDENTIFIED 0x04A4
206
208#define MTI_CONSUMER_IDENTIFIED_UNKNOWN 0x04C7
209
211#define MTI_CONSUMER_IDENTIFIED_SET 0x04C4
212
214#define MTI_CONSUMER_IDENTIFIED_CLEAR 0x04C5
215
217#define MTI_CONSUMER_IDENTIFIED_RESERVED 0x04C6
218
220#define MTI_PRODUCER_IDENTIFY 0x0914
221
223#define MTI_PRODUCER_RANGE_IDENTIFIED 0x0524
224
226#define MTI_PRODUCER_IDENTIFIED_UNKNOWN 0x0547
227
229#define MTI_PRODUCER_IDENTIFIED_SET 0x0544
230
232#define MTI_PRODUCER_IDENTIFIED_CLEAR 0x0545
233
235#define MTI_PRODUCER_IDENTIFIED_RESERVED 0x0546
236
238#define MTI_EVENTS_IDENTIFY_DEST 0x0968
239
241#define MTI_EVENTS_IDENTIFY 0x0970
242
244#define MTI_EVENT_LEARN 0x0594
245
247#define MTI_PC_EVENT_REPORT 0x05B4
248
250#define MTI_PC_EVENT_REPORT_WITH_PAYLOAD 0x0F14
251
252 // end of mti_event_transport
253
261#define MTI_SIMPLE_NODE_INFO_REQUEST 0x0DE8
262
264#define MTI_SIMPLE_NODE_INFO_REPLY 0x0A08
265
266 // end of mti_snip
267
275#define MTI_TRAIN_PROTOCOL 0x05EB
276
278#define MTI_TRAIN_REPLY 0x01E9
279
281#define MTI_SIMPLE_TRAIN_INFO_REQUEST 0x0DA8
282
284#define MTI_SIMPLE_TRAIN_INFO_REPLY 0x09C8
285
286 // end of mti_train
287
295#define MTI_STREAM_INIT_REQUEST 0x0CC8
296
298#define MTI_STREAM_INIT_REPLY 0x0868
299
301#define MTI_FRAME_TYPE_CAN_STREAM_SEND 0xF000
302
304#define MTI_STREAM_SEND 0x1F88
305
307#define MTI_STREAM_PROCEED 0x0888
308
310#define MTI_STREAM_COMPLETE 0x08A8
311
312 // end of mti_stream
313
321#define MTI_DATAGRAM 0x1C48
322
324#define MTI_DATAGRAM_OK_REPLY 0x0A28
325
327#define MTI_DATAGRAM_REJECTED_REPLY 0x0A48
328
329 // end of mti_datagram
330
338#define MASK_MULTIFRAME_BITS 0x30
339
341#define MULTIFRAME_ONLY 0x00
342
344#define MULTIFRAME_FIRST 0x10
345
347#define MULTIFRAME_MIDDLE 0x30
348
350#define MULTIFRAME_FINAL 0x20
351
352 // end of data_field_masks
353
361#define MASK_STREAM_OR_DATAGRAM 0x01000
362
364#define MASK_PRIORITY 0x00C00
365
367#define MASK_SIMPLE_PROTOCOL 0x00010
368
370#define MASK_DEST_ADDRESS_PRESENT 0x00008
371
373#define MASK_EVENT_PRESENT 0x00004
374
376#define MASK_PRIORITY_MODIFIER 0x00003
377
378 // end of mti_field_masks
379
387#define CAN_CONTROL_FRAME_CID7 0x07000000
388
390#define CAN_CONTROL_FRAME_CID6 0x06000000
391
393#define CAN_CONTROL_FRAME_CID5 0x05000000
394
396#define CAN_CONTROL_FRAME_CID4 0x04000000
397
399#define CAN_CONTROL_FRAME_CID3 0x03000000
400
402#define CAN_CONTROL_FRAME_CID2 0x02000000
403
405#define CAN_CONTROL_FRAME_CID1 0x01000000
406
408#define CAN_CONTROL_FRAME_RID 0x00700000
409
411#define CAN_CONTROL_FRAME_AMD 0x00701000
412
414#define CAN_CONTROL_FRAME_AME 0x00702000
415
417#define CAN_CONTROL_FRAME_AMR 0x00703000
418
420#define CAN_CONTROL_FRAME_ERROR_INFO_REPORT_0 0x00710000
421
423#define CAN_CONTROL_FRAME_ERROR_INFO_REPORT_1 0x00711000
424
426#define CAN_CONTROL_FRAME_ERROR_INFO_REPORT_2 0x00712000
427
429#define CAN_CONTROL_FRAME_ERROR_INFO_REPORT_3 0x00713000
430
431 // end of can_control_frames
432
440#define MASK_CAN_STREAM_OR_DATAGRAM 0x01000000
441
443#define MASK_CAN_PRIORITY 0x00C00000
444
446#define MASK_CAN_SIMPLE_PROTOCOL 0x00010000
447
449#define MASK_CAN_DEST_ADDRESS_PRESENT 0x00008000
450
452#define MASK_CAN_EVENT_PRESENT 0x00004000
453
455#define MASK_CAN_PRIORITY_MODIFIER 0x00003000
456
458#define MASK_CAN_SOURCE_ALIAS 0x00000FFF
459
460 // end of can_identifier_masks
461
469#define PSI_SIMPLE 0x800000
470
472#define PSI_DATAGRAM 0x400000
473
475#define PSI_STREAM 0x200000
476
478#define PSI_MEMORY_CONFIGURATION 0x100000
479
481#define PSI_RESERVATION 0x080000
482
484#define PSI_EVENT_EXCHANGE 0x040000
485
487#define PSI_IDENTIFICATION 0x020000
488
490#define PSI_TEACHING_LEARNING 0x010000
491
493#define PSI_REMOTE_BUTTON 0x008000
494
496#define PSI_ABBREVIATED_DEFAULT_CDI 0x004000
497
499#define PSI_DISPLAY 0x002000
500
502#define PSI_SIMPLE_NODE_INFORMATION 0x001000
503
505#define PSI_CONFIGURATION_DESCRIPTION_INFO 0x000800
506
508#define PSI_TRAIN_CONTROL 0x000400
509
511#define PSI_FUNCTION_DESCRIPTION 0x000200
512
514#define PSI_RESERVED_0 0x000100
515
517#define PSI_RESERVED_1 0x000080
518
520#define PSI_FUNCTION_CONFIGURATION 0x000040
521
523#define PSI_FIRMWARE_UPGRADE 0x000020
524
526#define PSI_FIRMWARE_UPGRADE_ACTIVE 0x000010
527
528 // end of protocol_support_bits
529
543#define EVENT_ID_EMERGENCY_OFF 0x010000000000FFFF
544
546#define EVENT_ID_CLEAR_EMERGENCY_OFF 0x010000000000FFFE
547
549#define EVENT_ID_EMERGENCY_STOP 0x010000000000FFFD
550
552#define EVENT_ID_CLEAR_EMERGENCY_STOP 0x010000000000FFFC
553
555#define EVENT_ID_NODE_RECORDED_NEW_LOG 0x010000000000FFF8
556
558#define EVENT_ID_POWER_SUPPLY_BROWN_OUT_NODE 0x010000000000FFF1
559
561#define EVENT_ID_POWER_SUPPLY_BROWN_OUT_STANDARD 0x010000000000FFF0
562
564#define EVENT_ID_IDENT_BUTTON_COMBO_PRESSED 0x010000000000FF00
565
567#define EVENT_ID_LINK_ERROR_CODE_1 0x010000000000FF01
568
570#define EVENT_ID_LINK_ERROR_CODE_2 0x010000000000FF02
571
573#define EVENT_ID_LINK_ERROR_CODE_3 0x010000000000FF03
574
576#define EVENT_ID_LINK_ERROR_CODE_4 0x010000000000FF04
577
578 // end of well_known_events_auto
579
587#define EVENT_ID_DUPLICATE_NODE_DETECTED 0x0101000000000201
588
590#define EVENT_ID_TRAIN 0x0101000000000303
591
593#define EVENT_ID_TRAIN_PROXY 0x0101000000000304
594
596#define EVENT_ID_FIRMWARE_CORRUPTED 0x0101000000000601
597
599#define EVENT_ID_FIRMWARE_UPGRADE_BY_HARDWARE_SWITCH 0x0101000000000602
600
602#define EVENT_ID_CBUS_OFF_SPACE 0x0101010000000000
603
605#define EVENT_ID_CBUS_ON_SPACE 0x0101010100000000
606
608#define EVENT_ID_DCC_ACCESSORY_ACTIVATE 0x0101020000FF0000
609
611#define EVENT_ID_DCC_ACCESSORY_DEACTIVATE 0x0101020000FE0000
612
614#define EVENT_ID_DCC_TURNOUT_FEEDBACK_HIGH 0x0101020000FD0000
615
617#define EVENT_ID_DCC_TURNOUT_FEEDBACK_LOW 0x0101020000FC0000
618
620#define EVENT_ID_DCC_SENSOR_FEEDBACK_HIGH 0x0101020000FB0000
621
623#define EVENT_ID_DCC_SENSOR_FEEDBACK_LO 0x0101020000FA0000
624
626#define EVENT_ID_DCC_EXTENDED_ACCESSORY_CMD_SPACE 0x01010200010000FF
627
629#define EVENT_TRAIN_SEARCH_SPACE 0x090099FF00000000
630
632#define TRAIN_SEARCH_MASK 0xFFFFFFFF00000000ULL
633
635#define TRAIN_SEARCH_FLAG_ALLOCATE 0x80
637#define TRAIN_SEARCH_FLAG_EXACT 0x40
639#define TRAIN_SEARCH_FLAG_ADDRESS_ONLY 0x20
641#define TRAIN_SEARCH_FLAG_DCC 0x08
643#define TRAIN_SEARCH_FLAG_LONG_ADDR 0x04
645#define TRAIN_SEARCH_SPEED_STEP_MASK 0x03
646
648#define TRAIN_MAX_DCC_SHORT_ADDRESS 128
649
650 // end of well_known_events_local
651 // end of well_known_events
652
660#define S_OK 0x00
661
663#define ERROR_PERMANENT 0x1000
664
666#define ERROR_PERMANENT_CONFIG_MEM_ADDRESS_SPACE_UNKNOWN 0x1081
667
669#define ERROR_PERMANENT_CONFIG_MEM_OUT_OF_BOUNDS_INVALID_ADDRESS 0x1082
670
672#define ERROR_PERMANENT_CONFIG_MEM_ADDRESS_WRITE_TO_READ_ONLY 0x1083
673
675#define ERROR_PERMANENT_SOURCE_NOT_PERMITTED 0x1020
676
678#define ERROR_PERMANENT_NOT_IMPLEMENTED 0x1040
679
681#define ERROR_PERMANENT_NOT_IMPLEMENTED_SUBCOMMAND_UNKNOWN 0x1041
682
684#define ERROR_PERMANENT_NOT_IMPLEMENTED_COMMAND_UNKNOWN 0x1042
685
687#define ERROR_PERMANENT_NOT_IMPLEMENTED_UNKNOWN_MTI_OR_TRANPORT_PROTOCOL 0x1043
688
690#define ERROR_CODE_PERMANENT_COUNT_OUT_OF_RANGE 0x1044
691
693#define ERROR_PERMANENT_INVALID_ARGUMENTS 0x1080
694
696#define ERROR_TEMPORARY 0x2000
697
699#define ERROR_TEMPORARY_BUFFER_UNAVAILABLE 0x2020
700
702#define ERROR_TEMPORARY_NOT_EXPECTED_OUT_OF_ORDER 0x2040
703
705#define ERROR_TEMPORARY_TRANSFER_ERROR 0x2080
706
708#define ERROR_TEMPORARY_TIME_OUT 0x2011
709
711#define ERROR_TEMPORARY_OUT_OF_ORDER_MIDDLE_END_WITH_NO_START 0x2041
712
714#define ERROR_TEMPORARY_OUT_OF_ORDER_START_BEFORE_LAST_END 0x2042
715
716 // end of error_codes
717
726#define DATAGRAM_OK_REPLY_PENDING 0x80
727
728 // end of datagram_flags
729
737#define CONFIG_MEM_CONFIGURATION 0x20
738
739 // end of config_mem_protocol
740
748#define CONFIG_MEM_READ_SPACE_IN_BYTE_6 0x40
749
751#define CONFIG_MEM_READ_SPACE_FD 0x41
752
754#define CONFIG_MEM_READ_SPACE_FE 0x42
755
757#define CONFIG_MEM_READ_SPACE_FF 0x43
758
760#define CONFIG_MEM_READ_REPLY_OK_SPACE_IN_BYTE_6 0x50
761
763#define CONFIG_MEM_READ_REPLY_OK_SPACE_FD 0x51
764
766#define CONFIG_MEM_READ_REPLY_OK_SPACE_FE 0x52
767
769#define CONFIG_MEM_READ_REPLY_OK_SPACE_FF 0x53
770
772#define CONFIG_MEM_READ_REPLY_FAIL_SPACE_IN_BYTE_6 0x58
773
775#define CONFIG_MEM_READ_REPLY_FAIL_SPACE_FD 0x59
776
778#define CONFIG_MEM_READ_REPLY_FAIL_SPACE_FE 0x5A
779
781#define CONFIG_MEM_READ_REPLY_FAIL_SPACE_FF 0x5B
782
783 // end of config_mem_read
784
792#define CONFIG_MEM_READ_STREAM_SPACE_IN_BYTE_6 0x60
793
795#define CONFIG_MEM_READ_STREAM_SPACE_FD 0x61
796
798#define CONFIG_MEM_READ_STREAM_SPACE_FE 0x62
799
801#define CONFIG_MEM_READ_STREAM_SPACE_FF 0x63
802
804#define CONFIG_MEM_READ_STREAM_REPLY_OK_SPACE_IN_BYTE_6 0x70
805
807#define CONFIG_MEM_READ_STREAM_REPLY_OK_SPACE_FD 0x71
808
810#define CONFIG_MEM_READ_STREAM_REPLY_OK_SPACE_FE 0x72
811
813#define CONFIG_MEM_READ_STREAM_REPLY_OK_SPACE_FF 0x73
814
816#define CONFIG_MEM_READ_STREAM_REPLY_FAIL_SPACE_IN_BYTE_6 0x78
817
819#define CONFIG_MEM_READ_STREAM_REPLY_FAIL_SPACE_FD 0x79
820
822#define CONFIG_MEM_READ_STREAM_REPLY_FAIL_SPACE_FE 0x7A
823
825#define CONFIG_MEM_READ_STREAM_REPLY_FAIL_SPACE_FF 0x7B
826
827 // end of config_mem_read_stream
828
837#define CONFIG_MEM_WRITE_SPACE_IN_BYTE_6 0x00
838
840#define CONFIG_MEM_WRITE_SPACE_FD 0x01
841
843#define CONFIG_MEM_WRITE_SPACE_FE 0x02
844
846#define CONFIG_MEM_WRITE_SPACE_FF 0x03
847
849#define CONFIG_MEM_WRITE_REPLY_OK_SPACE_IN_BYTE_6 0x10
850
852#define CONFIG_MEM_WRITE_REPLY_OK_SPACE_FD 0x11
853
855#define CONFIG_MEM_WRITE_REPLY_OK_SPACE_FE 0x12
856
858#define CONFIG_MEM_WRITE_REPLY_OK_SPACE_FF 0x13
859
861#define CONFIG_MEM_WRITE_REPLY_FAIL_SPACE_IN_BYTE_6 0x18
862
864#define CONFIG_MEM_WRITE_REPLY_FAIL_SPACE_FD 0x19
865
867#define CONFIG_MEM_WRITE_REPLY_FAIL_SPACE_FE 0x1A
868
870#define CONFIG_MEM_WRITE_REPLY_FAIL_SPACE_FF 0x1B
871
872 // end of config_mem_write
873
882#define CONFIG_MEM_WRITE_UNDER_MASK_SPACE_IN_BYTE_6 0x08
883
885#define CONFIG_MEM_WRITE_UNDER_MASK_SPACE_FD 0x09
886
888#define CONFIG_MEM_WRITE_UNDER_MASK_SPACE_FE 0x0A
889
891#define CONFIG_MEM_WRITE_UNDER_MASK_SPACE_FF 0x0B
892
893 // end of config_mem_write_mask
894
903#define CONFIG_MEM_WRITE_STREAM_SPACE_IN_BYTE_6 0x20
904
906#define CONFIG_MEM_WRITE_STREAM_SPACE_FD 0x21
907
909#define CONFIG_MEM_WRITE_STREAM_SPACE_FE 0x22
910
912#define CONFIG_MEM_WRITE_STREAM_SPACE_FF 0x23
913
915#define CONFIG_MEM_WRITE_STREAM_REPLY_OK_SPACE_IN_BYTE_6 0x30
916
918#define CONFIG_MEM_WRITE_STREAM_REPLY_OK_SPACE_FD 0x31
919
921#define CONFIG_MEM_WRITE_STREAM_REPLY_OK_SPACE_FE 0x32
922
924#define CONFIG_MEM_WRITE_STREAM_REPLY_OK_SPACE_FF 0x33
925
927#define CONFIG_MEM_WRITE_STREAM_REPLY_FAIL_SPACE_IN_BYTE_6 0x38
928
930#define CONFIG_MEM_WRITE_STREAM_REPLY_FAIL_SPACE_FD 0x39
931
933#define CONFIG_MEM_WRITE_STREAM_REPLY_FAIL_SPACE_FE 0x3A
934
936#define CONFIG_MEM_WRITE_STREAM_REPLY_FAIL_SPACE_FF 0x3B
937
938 // end of config_mem_write_stream
939
948#define CONFIG_MEM_OPTIONS_CMD 0x80
949
951#define CONFIG_MEM_OPTIONS_REPLY 0x82
952
954#define CONFIG_MEM_GET_ADDRESS_SPACE_INFO_CMD 0x84
955
957#define CONFIG_MEM_GET_ADDRESS_SPACE_INFO_REPLY_NOT_PRESENT 0x86
958
960#define CONFIG_MEM_GET_ADDRESS_SPACE_INFO_REPLY_PRESENT 0x87
961
963#define CONFIG_MEM_RESERVE_LOCK 0x88
964
966#define CONFIG_MEM_RESERVE_LOCK_REPLY 0x8A
967
969#define CONFIG_MEM_GET_UNIQUE_ID 0x8C
970
972#define CONFIG_MEM_GET_UNIQUE_ID_REPLY 0x8D
973
975#define CONFIG_MEM_UNFREEZE 0xA0
976
978#define CONFIG_MEM_FREEZE 0xA1
979
981#define CONFIG_MEM_UPDATE_COMPLETE 0xA8
982
984#define CONFIG_MEM_RESET_REBOOT 0xA9
985
987#define CONFIG_MEM_FACTORY_RESET 0xAA
988
989 // end of config_mem_operations
990
998#define CONFIG_MEM_SPACE_CONFIGURATION_DEFINITION_INFO 0xFF
999
1001#define CONFIG_MEM_SPACE_ALL 0xFE
1002
1004#define CONFIG_MEM_SPACE_CONFIGURATION_MEMORY 0xFD
1005
1007#define CONFIG_MEM_SPACE_ACDI_MANUFACTURER_ACCESS 0xFC
1008
1010#define CONFIG_MEM_SPACE_ACDI_USER_ACCESS 0xFB
1011
1013#define CONFIG_MEM_SPACE_TRAIN_FUNCTION_DEFINITION_INFO 0xFA
1014
1016#define CONFIG_MEM_SPACE_TRAIN_FUNCTION_CONFIGURATION_MEMORY 0xF9
1017
1019#define CONFIG_MEM_SPACE_FIRMWARE 0xEF
1020
1021 // end of address_spaces
1022
1030#define CONFIG_MEM_ACDI_MANUFACTURER_VERSION_ADDRESS 0x00
1031
1033#define CONFIG_MEM_ACDI_MANUFACTURER_ADDRESS 0x01
1034
1036#define CONFIG_MEM_ACDI_MODEL_ADDRESS 0x2A
1037
1039#define CONFIG_MEM_ACDI_HARDWARE_VERSION_ADDRESS 0x53
1040
1042#define CONFIG_MEM_ACDI_SOFTWARE_VERSION_ADDRESS 0x68
1043
1045#define CONFIG_MEM_ACDI_VERSION_LEN 1
1046
1048#define CONFIG_MEM_ACDI_MANUFACTURER_LEN 41
1049
1051#define CONFIG_MEM_ACDI_MODEL_LEN 41
1052
1054#define CONFIG_MEM_ACDI_HARDWARE_VERSION_LEN 21
1055
1057#define CONFIG_MEM_ACDI_SOFTWARE_VERSION_LEN 21
1058
1059 // end of acdi_manufacturer_layout
1060
1068#define CONFIG_MEM_USER_MODEL_ADDRESS 0x00
1069
1071#define CONFIG_MEM_USER_DESCRIPTION_ADDRESS 0x3F
1072
1074#define CONFIG_MEM_ACDI_USER_VERSION_ADDRESS 0x00
1075
1077#define CONFIG_MEM_ACDI_USER_NAME_ADDRESS 0x01
1078
1080#define CONFIG_MEM_ACDI_USER_DESCRIPTION_ADDRESS 0x40
1081
1083#define CONFIG_MEM_ACDI_USER_VERSION_LEN 1
1084
1086#define CONFIG_MEM_ACDI_USER_NAME_LEN 63
1087
1089#define CONFIG_MEM_ACDI_USER_DESCRIPTION_LEN 64
1090
1092#define CONFIG_MEM_CONFIG_USER_NAME_OFFSET 0x00000000
1093
1095#define CONFIG_MEM_CONFIG_USER_DESCRIPTION_OFFSET 63 /* CONFIG_MEM_ACDI_USER_NAME_LEN (63) */
1096
1097 // end of acdi_user_layout
1098
1106#define CONFIG_MEM_REPLY_OK_OFFSET 0x10
1107
1109#define CONFIG_MEM_REPLY_FAIL_OFFSET 0x18
1110
1111 // end of config_mem_reply_offsets
1112
1120#define CONFIG_OPTIONS_COMMANDS_WRITE_UNDER_MASK 0x8000
1121
1123#define CONFIG_OPTIONS_COMMANDS_UNALIGNED_READS 0x4000
1124
1126#define CONFIG_OPTIONS_COMMANDS_UNALIGNED_WRITES 0x2000
1127
1129#define CONFIG_OPTIONS_COMMANDS_ACDI_MANUFACTURER_READ 0x0800
1130
1132#define CONFIG_OPTIONS_COMMANDS_ACDI_USER_READ 0x0400
1133
1135#define CONFIG_OPTIONS_COMMANDS_ACDI_USER_WRITE 0x0200
1136
1137 // end of config_options_bits
1138
1147#define CONFIG_OPTIONS_WRITE_LENGTH_RESERVED (0x80 | 0x40 | 0x20 | 0x02)
1148
1150#define CONFIG_OPTIONS_WRITE_LENGTH_STREAM_READ_WRITE 0x01
1151
1152 // end of config_write_length_flags
1153
1162#define CONFIG_OPTIONS_SPACE_INFO_FLAG_READ_ONLY 0x01
1163
1165#define CONFIG_OPTIONS_SPACE_INFO_FLAG_USE_LOW_ADDRESS 0x02
1166
1167 // end of address_space_info_flags
1168
1176#define MAX_INTERNAL_ENUM_KEYS_VALUES 4
1177
1179#define MAX_USER_ENUM_KEYS_VALUES 4
1180
1182#define USER_ENUM_KEYS_VALUES_1 0
1183
1185#define USER_ENUM_KEYS_VALUES_2 1
1186
1188#define USER_ENUM_KEYS_VALUES_3 2
1189
1191#define USER_ENUM_KEYS_VALUES_4 3
1192
1194#define MAX_NODE_ENUM_KEY_VALUES (MAX_USER_ENUM_KEYS_VALUES + MAX_INTERNAL_ENUM_KEYS_VALUES)
1195
1197#define OPENLCB_MAIN_STATMACHINE_NODE_ENUMERATOR_INDEX MAX_USER_ENUM_KEYS_VALUES
1198
1200#define OPENLCB_LOGIN_STATMACHINE_NODE_ENUMERATOR_INDEX (MAX_USER_ENUM_KEYS_VALUES + 1)
1201
1203#define CAN_STATEMACHINE_NODE_ENUMRATOR_KEY (MAX_USER_ENUM_KEYS_VALUES + 2)
1204
1206#define DATAGRAM_TIMEOUT_ENUM_KEY (MAX_USER_ENUM_KEYS_VALUES + 3)
1207
1208 // end of node_enum_keys
1209
1217#define BROADCAST_TIME_ID_DEFAULT_FAST_CLOCK 0x0101000001000000ULL
1218
1220#define BROADCAST_TIME_ID_DEFAULT_REALTIME_CLOCK 0x0101000001010000ULL
1221
1223#define BROADCAST_TIME_ID_ALTERNATE_CLOCK_1 0x0101000001020000ULL
1224
1226#define BROADCAST_TIME_ID_ALTERNATE_CLOCK_2 0x0101000001030000ULL
1227
1229#define BROADCAST_TIME_MASK_CLOCK_ID 0xFFFFFFFFFFFF0000ULL
1230
1232#define BROADCAST_TIME_MASK_COMMAND_DATA 0x000000000000FFFFULL
1233
1235#define BROADCAST_TIME_REPORT_TIME_BASE 0x0000
1236
1238#define BROADCAST_TIME_REPORT_DATE_BASE 0x2100
1239
1241#define BROADCAST_TIME_REPORT_YEAR_BASE 0x3000
1242
1244#define BROADCAST_TIME_REPORT_RATE_BASE 0x4000
1245
1247#define BROADCAST_TIME_SET_TIME_BASE 0x8000
1248
1250#define BROADCAST_TIME_SET_DATE_BASE 0xA100
1251
1253#define BROADCAST_TIME_SET_YEAR_BASE 0xB000
1254
1256#define BROADCAST_TIME_SET_RATE_BASE 0xC000
1257
1259#define BROADCAST_TIME_QUERY 0xF000
1260
1262#define BROADCAST_TIME_STOP 0xF001
1263
1265#define BROADCAST_TIME_START 0xF002
1266
1268#define BROADCAST_TIME_DATE_ROLLOVER 0xF003
1269
1271#define BROADCAST_TIME_SET_COMMAND_OFFSET 0x8000
1272
1273 // end of broadcast_time_events
1274
1281 // Train instruction byte bit fields
1282
1284#define TRAIN_INSTRUCTION_P_BIT 0x80
1285
1286 // Train instruction bytes (byte 0 of payload, bits 6:0)
1287
1289#define TRAIN_SET_SPEED_DIRECTION 0x00
1290
1292#define TRAIN_SET_FUNCTION 0x01
1293
1295#define TRAIN_EMERGENCY_STOP 0x02
1296
1298#define TRAIN_QUERY_SPEEDS 0x10
1299
1301#define TRAIN_QUERY_FUNCTION 0x11
1302
1304#define TRAIN_CONTROLLER_CONFIG 0x20
1305
1307#define TRAIN_LISTENER_CONFIG 0x30
1308
1310#define TRAIN_MANAGEMENT 0x40
1311
1312 // Controller config sub-commands (byte 1)
1313
1315#define TRAIN_CONTROLLER_ASSIGN 0x01
1316
1318#define TRAIN_CONTROLLER_RELEASE 0x02
1319
1321#define TRAIN_CONTROLLER_QUERY 0x03
1322
1324#define TRAIN_CONTROLLER_CHANGED 0x04
1325
1326 // Listener config sub-commands (byte 1)
1327
1329#define TRAIN_LISTENER_ATTACH 0x01
1330
1332#define TRAIN_LISTENER_DETACH 0x02
1333
1335#define TRAIN_LISTENER_QUERY 0x03
1336
1337 // Management sub-commands (byte 1)
1338
1340#define TRAIN_MGMT_RESERVE 0x01
1341
1343#define TRAIN_MGMT_RELEASE 0x02
1344
1346#define TRAIN_MGMT_NOOP 0x03
1347
1348 // Listener flags
1349
1351#define TRAIN_LISTENER_FLAG_REVERSE 0x02
1352
1354#define TRAIN_LISTENER_FLAG_LINK_F0 0x04
1355
1357#define TRAIN_LISTENER_FLAG_LINK_FN 0x08
1358
1360#define TRAIN_LISTENER_FLAG_HIDE 0x80
1361
1362 // end of train_protocol
1363
1364#ifdef __cplusplus
1365}
1366#endif /* __cplusplus */
1367
1368#endif /* __OPENLCB_OPENLCB_DEFINES__ */

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