3 * - By John Hodge (thePowersGang)
6 * - Instance Attribute Management
11 typedef struct udi_instance_attr_list_s udi_instance_attr_list_t;
12 typedef udi_ubit8_t udi_instance_attr_type_t;
14 /* Instance attribute limits */
15 #define UDI_MAX_ATTR_NAMELEN 32
16 #define UDI_MAX_ATTR_SIZE 64
18 #define UDI_ATTR32_SET(aval, v) \
19 { udi_ubit32_t vtmp = (v); \
20 (aval)[0] = (vtmp) & 0xff; \
21 (aval)[1] = ((vtmp) >> 8) & 0xff; \
22 (aval)[2] = ((vtmp) >> 16) & 0xff; \
23 (aval)[3] = ((vtmp) >> 24) & 0xff; }
24 #define UDI_ATTR32_GET(aval) \
25 ((aval)[0] + ((aval)[1] << 8) + \
26 ((aval)[2] << 16) + ((aval)[3] << 24))
27 #define UDI_ATTR32_INIT(v) \
28 { (v) & 0xff, ((v) >> 8) & 0xff, \
29 ((v) >> 16) & 0xff, ((v) >> 24) & 0xff }
32 * \brief Instance Attribute
34 struct udi_instance_attr_list_s
36 char attr_name[UDI_MAX_ATTR_NAMELEN];
37 udi_ubit8_t attr_value[UDI_MAX_ATTR_SIZE];
38 udi_ubit8_t attr_length;
39 udi_instance_attr_type_t attr_type;
44 * \brief Instance Attribute Types
45 * \see ::udi_instance_attr_type_t
57 typedef void udi_instance_attr_get_call_t(udi_cb_t *gcb, udi_instance_attr_type_t attr_type, udi_size_t actual_length);
59 extern void udi_instance_attr_get(udi_instance_attr_get_call_t *callback, udi_cb_t *gcb,
60 const char *attr_name, udi_ubit32_t child_ID,
61 void *attr_value, udi_size_t attr_length
64 typedef void udi_instance_attr_set_call_t(udi_cb_t *gcb, udi_status_t status);
66 extern void udi_instance_attr_set(udi_instance_attr_set_call_t *callback, udi_cb_t *gcb,
67 const char *attr_name, udi_ubit32_t child_ID,
68 const void *attr_value, udi_size_t attr_length, udi_ubit8_t attr_type
71 #define UDI_INSTANCE_ATTR_DELETE(callback, gcb, attr_name) \
72 udi_instance_attr_set(callbac, gcb, attr_name, NULL, NULL, 0, UDI_ATTR_NONE)