Bugfixes, Cleanup and Rewite started on UDI interface
[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 /* Channel Handle */
25 typedef void    *udi_channel_t;
26 #define UDI_NULL_CHANNEL        NULL
27
28 /**
29  * \brief Buffer Path
30  */
31 typedef void    *udi_buf_path_t;
32 #define UDI_NULL_BUF_PATH       NULL
33
34 typedef void    *udi_origin_t;
35 #define UDI_NULL_ORIGIN NULL
36
37 typedef Sint64  udi_timestamp_t;
38
39 #define UDI_HANDLE_IS_NULL(handle, handle_type) (handle == NULL)
40 #define UDI_HANDLE_ID(handle, handle_type)      ((Uint32)handle)
41
42 /**
43  * \name va_arg wrapper
44  * \{
45  */
46 #define UDI_VA_ARG(pvar, type, va_code) va_arg(pvar,type)
47 #define UDI_VA_UBIT8_T
48 #define UDI_VA_SBIT8_T
49 #define UDI_VA_UBIT16_T
50 #define UDI_VA_SBIT16_T
51 #define UDI_VA_UBIT32_T
52 #define UDI_VA_SBIT32_T
53 #define UDI_VA_BOOLEAN_T
54 #define UDI_VA_INDEX_T
55 #define UDI_VA_SIZE_T
56 #define UDI_VA_STATUS_T
57 #define UDI_VA_CHANNEL_T
58 #define UDI_VA_ORIGIN_T
59 #define UDI_VA_POINTER
60 /**
61  * \}
62  */
63
64 /**
65  * \brief Status Type
66  */
67 typedef udi_ubit32_t    udi_status_t;
68
69 /**
70  * \name Values and Flags for udi_status_t
71  * \{
72  */
73 #define UDI_STATUS_CODE_MASK            0x0000FFFF
74 #define UDI_STAT_META_SPECIFIC          0x00008000
75 #define UDI_SPECIFIC_STATUS_MASK        0x00007FFF
76 #define UDI_CORRELATE_OFFSET            16
77 #define UDI_CORRELATE_MASK                      0xFFFF0000
78 /* Common Status Values */
79 #define UDI_OK                                          0
80 #define UDI_STAT_NOT_SUPPORTED          1
81 #define UDI_STAT_NOT_UNDERSTOOD         2
82 #define UDI_STAT_INVALID_STATE          3
83 #define UDI_STAT_MISTAKEN_IDENTITY      4
84 #define UDI_STAT_ABORTED                        5
85 #define UDI_STAT_TIMEOUT                        6
86 #define UDI_STAT_BUSY                           7
87 #define UDI_STAT_RESOURCE_UNAVAIL       8
88 #define UDI_STAT_HW_PROBLEM                     9
89 #define UDI_STAT_NOT_RESPONDING         10
90 #define UDI_STAT_DATA_UNDERRUN          11
91 #define UDI_STAT_DATA_OVERRUN           12
92 #define UDI_STAT_DATA_ERROR                     13
93 #define UDI_STAT_PARENT_DRV_ERROR       14
94 #define UDI_STAT_CANNOT_BIND            15
95 #define UDI_STAT_CANNOT_BIND_EXCL       16
96 #define UDI_STAT_TOO_MANY_PARENTS       17
97 #define UDI_STAT_BAD_PARENT_TYPE        18
98 #define UDI_STAT_TERMINATED                     19
99 #define UDI_STAT_ATTR_MISMATCH          20
100 /**
101  * \}
102  */
103
104 /**
105  * \name Data Layout Specifiers
106  * \{
107  */
108 typedef const udi_ubit8_t       udi_layout_t;
109 /* Specific-Length Layout Type Codes */
110 #define UDI_DL_UBIT8_T                   1
111 #define UDI_DL_SBIT8_T                   2
112 #define UDI_DL_UBIT16_T                  3
113 #define UDI_DL_SBIT16_T                  4
114 #define UDI_DL_UBIT32_T                  5
115 #define UDI_DL_SBIT32_T                  6
116 #define UDI_DL_BOOLEAN_T                 7
117 #define UDI_DL_STATUS_T                  8
118 /* Abstract Element Layout Type Codes */
119 #define UDI_DL_INDEX_T                   20
120 /* Opaque Handle Element Layout Type Codes */
121 #define UDI_DL_CHANNEL_T                 30
122 #define UDI_DL_ORIGIN_T                  32
123 /* Indirect Element Layout Type Codes */
124 #define UDI_DL_BUF                       40
125 #define UDI_DL_CB                        41
126 #define UDI_DL_INLINE_UNTYPED            42
127 #define UDI_DL_INLINE_DRIVER_TYPED       43
128 #define UDI_DL_MOVABLE_UNTYPED           44
129 /* Nested Element Layout Type Codes */
130 #define UDI_DL_INLINE_TYPED              50
131 #define UDI_DL_MOVABLE_TYPED             51
132 #define UDI_DL_ARRAY                     52
133 #define UDI_DL_END                       0
134 /**
135  * \}
136  */
137
138 // === INCLUDE SUB-SECTIONS ===
139 #include "udi_meta_mgmt.h"      // Management Metalanguage
140 #include "udi_init.h"   // Init
141
142 #endif

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