8 typedef struct udi_buf_s udi_buf_t;
9 typedef struct udi_buf_tag_s udi_buf_tag_t;
10 typedef struct udi_xfer_constraints_s udi_xfer_constraints_t;
11 typedef void udi_buf_copy_call_t(udi_cb_t *gcb, udi_buf_t *new_dst_buf);
12 typedef void udi_buf_write_call_t(udi_cb_t *gcb, udi_buf_t *new_dst_buf);
15 * \brief Describes a buffer
21 // ... filled in udi_lib/core/buf.c
24 typedef udi_ubit32_t udi_tagtype_t;
28 udi_tagtype_t tag_type;
29 udi_ubit32_t tag_value;
37 struct udi_xfer_constraints_s
39 udi_ubit32_t udi_xfer_max;
40 udi_ubit32_t udi_xfer_typical;
41 udi_ubit32_t udi_xfer_granularity;
42 udi_boolean_t udi_xfer_one_piece;
43 udi_boolean_t udi_xfer_exact_size;
44 udi_boolean_t udi_xfer_no_reorder;
49 * \brief Allocates a buffer
51 #define UDI_BUF_ALLOC(callback, gcb, init_data, size, path_handle) \
52 udi_buf_write(callback, gcb, init_data, size, NULL, 0, 0, path_handle)
55 * \brief Inserts data into a buffer
57 #define UDI_BUF_INSERT(callback, gcb, new_data, size, dst_buf, dst_off) \
58 udi_buf_write(callback, gcb, new_data, size, dst_buf, dst_off, 0, UDI_NULL_BUF_PATH)
61 * \brief Removes data from a buffer (data afterwards will be moved forewards)
63 #define UDI_BUF_DELETE(callback, gcb, size, dst_buf, dst_off) \
64 udi_buf_write(callback, gcb, NULL, 0, dst_buf, dst_off, size, UDI_NULL_BUF_PATH)
67 * \brief Duplicates \a src_buf
69 #define UDI_BUF_DUP(callback, gcb, src_buf, path_handle) \
70 udi_buf_copy(callback, gcb, src_buf, 0, (src_buf)->buf_size, NULL, 0, 0, path_handle)
74 * \brief Copies data from one buffer to another
76 extern void udi_buf_copy(
77 udi_buf_copy_call_t *callback,
85 udi_buf_path_t path_handle );
88 * \brief Copies data from driver space to a buffer
90 extern void udi_buf_write(
91 udi_buf_write_call_t *callback,
98 udi_buf_path_t path_handle
102 * \brief Reads data from a buffer into driver space
104 extern void udi_buf_read(
111 * \brief Frees a buffer
113 extern void udi_buf_free(udi_buf_t *buf);