Altered & Renamed LookupString, Added DrvUtil_SetIdent
[tpg/acess2.git] / Modules / UDI / include / udi.h
1 /**
2  * \file udi.h
3  */
4 #ifndef _UDI_ARCH_H_
5 #define _UDI_ARCH_H_
6
7 // Use the core acess file to use the specific size types (plus va_arg)
8 #include <acess.h>
9
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 */
16
17 typedef udi_ubit8_t     udi_boolean_t;  /* 0=False; 1..28-1=True */
18 #define FALSE   0
19 #define TRUE    1
20
21 typedef size_t  udi_size_t;     /* buffer size */
22 typedef size_t  udi_index_t;    /* zero-based index type */
23
24 typedef void    *_udi_handle_t;
25 #define _NULL_HANDLE    NULL
26
27 /* Channel Handle */
28 typedef _udi_handle_t   *udi_channel_t;
29 #define UDI_NULL_CHANNEL        _NULL_HANDLE
30
31 /**
32  * \brief Buffer Path
33  */
34 typedef _udi_handle_t   udi_buf_path_t;
35 #define UDI_NULL_BUF_PATH       _NULL_HANDLE
36
37 typedef _udi_handle_t   udi_origin_t;
38 #define UDI_NULL_ORIGIN _NULL_HANDLE
39
40 typedef Sint64  udi_timestamp_t;
41
42 #define UDI_HANDLE_IS_NULL(handle, handle_type) (handle == NULL)
43 #define UDI_HANDLE_ID(handle, handle_type)      ((Uint32)handle)
44
45 /**
46  * \name va_arg wrapper
47  * \{
48  */
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
58 #define UDI_VA_SIZE_T
59 #define UDI_VA_STATUS_T
60 #define UDI_VA_CHANNEL_T
61 #define UDI_VA_ORIGIN_T
62 #define UDI_VA_POINTER
63 /**
64  * \}
65  */
66
67 /**
68  * \brief Status Type
69  */
70 typedef udi_ubit32_t    udi_status_t;
71
72 /**
73  * \name Values and Flags for udi_status_t
74  * \{
75  */
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 */
82 #define UDI_OK                                          0
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
103 /**
104  * \}
105  */
106
107 /**
108  * \name Data Layout Specifiers
109  * \{
110  */
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
128 #define UDI_DL_CB                        41
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
136 #define UDI_DL_END                       0
137 /**
138  * \}
139  */
140
141
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
153
154 #endif

UCC git Repository :: git.ucc.asn.au