-extern void udi_intr_attach_req(udi_intr_attach_cb_t *intr_attach_cb);
-extern void udi_intr_attach_ack(udi_intr_attach_cb_t *intr_attach_cb, udi_status_t status);
-//extern void udi_intr_attach_ack_unused(udi_intr_attach_cb_t *intr_attach_cb, udi_status_t status);
+extern udi_intr_attach_req_op_t udi_intr_attach_req;
+extern udi_intr_attach_ack_op_t udi_intr_attach_ack;
+extern udi_intr_attach_ack_op_t udi_intr_attach_ack_unused;
extern void udi_intr_detach_req(udi_intr_detach_cb_t *intr_detach_cb);
extern void udi_intr_detach_ack(udi_intr_detach_cb_t *intr_detach_cb);
-//extern void udi_intr_detach_ack_unused(udi_intr_detach_cb_t *intr_detach_cb);
+extern udi_intr_detach_ack_op_t udi_intr_detach_ack_unused;
extern void udi_intr_event_ind(udi_intr_event_cb_t *intr_event_cb, udi_ubit8_t flags);
#include <udi.h>
#include <udi_physio.h>
-typedef _udi_handle_t udi_pio_handle_t;
-/* Null handle value for udi_pio_handle_t */
-#define UDI_NULL_PIO_HANDLE _NULL_HANDLE
+
+typedef struct udi_pio_handle_s *udi_pio_handle_t; // opaque
+#define UDI_NULL_PIO_HANDLE NULL
typedef void udi_pio_map_call_t(udi_cb_t *gcb, udi_pio_handle_t new_pio_handle);
/**
- * \file udi_attr.h
+ * Acess2 UDI Layer
+ * - By John Hodge (thePowersGang)
+ *
+ * udi/attr.h
+ * - Instance Attribute Management
*/
-#ifndef _UDI_ATTR_H_
-#define _UDI_ATTR_H_
+#ifndef _UDI__ATTR_H_
+#define _UDI__ATTR_H_
typedef struct udi_instance_attr_list_s udi_instance_attr_list_t;
typedef udi_ubit8_t udi_instance_attr_type_t;
UDI_ATTR_FILE
};
+typedef void udi_instance_attr_get_call_t(udi_cb_t *gcb, udi_instance_attr_type_t attr_type, udi_size_t actual_length);
+
+extern void udi_instance_attr_get(udi_instance_attr_get_call_t *callback, udi_cb_t *gcb,
+ const char *attr_name, udi_ubit32_t child_ID,
+ void *attr_value, udi_size_t attr_length
+ );
+
+typedef void udi_instance_attr_set_call_t(udi_cb_t *gcb, udi_status_t status);
+
+extern void udi_instance_attr_set(udi_instance_attr_set_call_t *callback, udi_cb_t *gcb,
+ const char *attr_name, udi_ubit32_t child_ID,
+ const void *attr_value, udi_size_t attr_length, udi_ubit8_t attr_type
+ );
+
+#define UDI_INSTANCE_ATTR_DELETE(callback, gcb, attr_name) \
+ udi_instance_attr_set(callbac, gcb, attr_name, NULL, NULL, 0, UDI_ATTR_NONE)
+
#endif
// === TYPEDEFS ===
// DMA Core
-typedef _udi_handle_t udi_dma_handle_t;
+typedef struct udi_dma_handle_s *udi_dma_handle_t;
#define UDI_NULL_DMA_HANDLE _NULL_HANDLE
typedef uint64_t udi_busaddr64_t; //!< \note Opaque
typedef struct udi_scgth_element_32_s udi_scgth_element_32_t;
typedef struct udi_scgth_element_64_s udi_scgth_element_64_t;
typedef struct udi_scgth_s udi_scgth_t;
-typedef _udi_handle_t udi_dma_constraints_t;
+typedef struct udi_dma_constraints_s *udi_dma_constraints_t;
#define UDI_NULL_DMA_CONSTRAINTS _NULL_HANDLE
/**
* \name DMA constraints attributes