Modules/UDI - Moved UDI headers to /UDI/include
[tpg/acess2.git] / UDI / include / udi / attr.h
1 /**
2  * \file udi_attr.h
3  */
4 #ifndef _UDI_ATTR_H_
5 #define _UDI_ATTR_H_
6
7 typedef struct udi_instance_attr_list_s udi_instance_attr_list_t;
8 typedef udi_ubit8_t     udi_instance_attr_type_t;
9
10 /* Instance attribute limits */
11 #define UDI_MAX_ATTR_NAMELEN    32
12 #define UDI_MAX_ATTR_SIZE               64
13
14 #define UDI_ATTR32_SET(aval, v) \
15         { udi_ubit32_t vtmp = (v); \
16         (aval)[0] = (vtmp) & 0xff; \
17         (aval)[1] = ((vtmp) >> 8) & 0xff; \
18         (aval)[2] = ((vtmp) >> 16) & 0xff; \
19         (aval)[3] = ((vtmp) >> 24) & 0xff; }
20 #define UDI_ATTR32_GET(aval) \
21         ((aval)[0] + ((aval)[1] << 8) + \
22         ((aval)[2] << 16) + ((aval)[3] << 24))
23 #define UDI_ATTR32_INIT(v) \
24         { (v) & 0xff, ((v) >> 8) & 0xff, \
25         ((v) >> 16) & 0xff, ((v) >> 24) & 0xff }
26
27 /**
28  * \brief Instance Attribute
29  */
30 struct udi_instance_attr_list_s
31 {
32      char       attr_name[UDI_MAX_ATTR_NAMELEN];
33      udi_ubit8_t        attr_value[UDI_MAX_ATTR_SIZE];
34      udi_ubit8_t        attr_length;
35      udi_instance_attr_type_t   attr_type;
36 };
37
38
39 /**
40  * \brief Instance Attribute Types
41  * \see ::udi_instance_attr_type_t
42  */
43 enum
44 {
45         UDI_ATTR_NONE,
46         UDI_ATTR_STRING,
47         UDI_ATTR_ARRAY8,
48         UDI_ATTR_UBIT32,
49         UDI_ATTR_BOOLEAN,
50         UDI_ATTR_FILE
51 };
52
53
54 #endif

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