7 // Use the core acess file to use the specific size types (plus va_arg)
10 typedef Sint8 udi_sbit8_t; /* signed 8-bit: -2^7..2^7-1 */
11 typedef Sint16 udi_sbit16_t; /* signed 16-bit: -2^15..2^15-1 */
12 typedef Sint32 udi_sbit32_t; /* signed 32-bit: -2^31..2^31-1 */
13 typedef Uint8 udi_ubit8_t; /* unsigned 8-bit: 0..28-1 */
14 typedef Uint16 udi_ubit16_t; /* unsigned 16-bit: 0..216-1 */
15 typedef Uint32 udi_ubit32_t; /* unsigned 32-bit: 0..232-1 */
17 typedef udi_ubit8_t udi_boolean_t; /* 0=False; 1..28-1=True */
21 typedef size_t udi_size_t; /* buffer size */
22 typedef size_t udi_index_t; /* zero-based index type */
24 typedef void *_udi_handle_t;
25 #define _NULL_HANDLE NULL
28 typedef _udi_handle_t *udi_channel_t;
29 #define UDI_NULL_CHANNEL _NULL_HANDLE
34 typedef _udi_handle_t udi_buf_path_t;
35 #define UDI_NULL_BUF_PATH _NULL_HANDLE
37 typedef _udi_handle_t udi_origin_t;
38 #define UDI_NULL_ORIGIN _NULL_HANDLE
40 typedef Sint64 udi_timestamp_t;
42 #define UDI_HANDLE_IS_NULL(handle, handle_type) (handle == NULL)
43 #define UDI_HANDLE_ID(handle, handle_type) ((Uint32)handle)
46 * \name va_arg wrapper
49 #define UDI_VA_ARG(pvar, type, va_code) va_arg(pvar,type)
50 #define UDI_VA_UBIT8_T
51 #define UDI_VA_SBIT8_T
52 #define UDI_VA_UBIT16_T
53 #define UDI_VA_SBIT16_T
54 #define UDI_VA_UBIT32_T
55 #define UDI_VA_SBIT32_T
56 #define UDI_VA_BOOLEAN_T
57 #define UDI_VA_INDEX_T
59 #define UDI_VA_STATUS_T
60 #define UDI_VA_CHANNEL_T
61 #define UDI_VA_ORIGIN_T
62 #define UDI_VA_POINTER
70 typedef udi_ubit32_t udi_status_t;
73 * \name Values and Flags for udi_status_t
76 #define UDI_STATUS_CODE_MASK 0x0000FFFF
77 #define UDI_STAT_META_SPECIFIC 0x00008000
78 #define UDI_SPECIFIC_STATUS_MASK 0x00007FFF
79 #define UDI_CORRELATE_OFFSET 16
80 #define UDI_CORRELATE_MASK 0xFFFF0000
81 /* Common Status Values */
83 #define UDI_STAT_NOT_SUPPORTED 1
84 #define UDI_STAT_NOT_UNDERSTOOD 2
85 #define UDI_STAT_INVALID_STATE 3
86 #define UDI_STAT_MISTAKEN_IDENTITY 4
87 #define UDI_STAT_ABORTED 5
88 #define UDI_STAT_TIMEOUT 6
89 #define UDI_STAT_BUSY 7
90 #define UDI_STAT_RESOURCE_UNAVAIL 8
91 #define UDI_STAT_HW_PROBLEM 9
92 #define UDI_STAT_NOT_RESPONDING 10
93 #define UDI_STAT_DATA_UNDERRUN 11
94 #define UDI_STAT_DATA_OVERRUN 12
95 #define UDI_STAT_DATA_ERROR 13
96 #define UDI_STAT_PARENT_DRV_ERROR 14
97 #define UDI_STAT_CANNOT_BIND 15
98 #define UDI_STAT_CANNOT_BIND_EXCL 16
99 #define UDI_STAT_TOO_MANY_PARENTS 17
100 #define UDI_STAT_BAD_PARENT_TYPE 18
101 #define UDI_STAT_TERMINATED 19
102 #define UDI_STAT_ATTR_MISMATCH 20
108 * \name Data Layout Specifiers
111 typedef const udi_ubit8_t udi_layout_t;
112 /* Specific-Length Layout Type Codes */
113 #define UDI_DL_UBIT8_T 1
114 #define UDI_DL_SBIT8_T 2
115 #define UDI_DL_UBIT16_T 3
116 #define UDI_DL_SBIT16_T 4
117 #define UDI_DL_UBIT32_T 5
118 #define UDI_DL_SBIT32_T 6
119 #define UDI_DL_BOOLEAN_T 7
120 #define UDI_DL_STATUS_T 8
121 /* Abstract Element Layout Type Codes */
122 #define UDI_DL_INDEX_T 20
123 /* Opaque Handle Element Layout Type Codes */
124 #define UDI_DL_CHANNEL_T 30
125 #define UDI_DL_ORIGIN_T 32
126 /* Indirect Element Layout Type Codes */
127 #define UDI_DL_BUF 40
129 #define UDI_DL_INLINE_UNTYPED 42
130 #define UDI_DL_INLINE_DRIVER_TYPED 43
131 #define UDI_DL_MOVABLE_UNTYPED 44
132 /* Nested Element Layout Type Codes */
133 #define UDI_DL_INLINE_TYPED 50
134 #define UDI_DL_MOVABLE_TYPED 51
135 #define UDI_DL_ARRAY 52
142 // === INCLUDE SUB-SECTIONS ===
143 #include "udi/cb.h" // Control Blocks
144 #include "udi/log.h" // Logging
145 #include "udi/attr.h" // Attributes
146 #include "udi/strmem.h" // String/Memory
147 #include "udi/buf.h" // Buffers
148 #include "udi/mem.h" // Memory Management
149 #include "udi/imc.h" // Inter-module Communication
150 #include "udi/meta_mgmt.h" // Management Metalanguage
151 #include "udi/meta_gio.h" // General IO Metalanguage
152 #include "udi/init.h" // Init