8 typedef struct udi_buf_s udi_buf_t;
9 typedef struct udi_xfer_constraints_s udi_xfer_constraints_t;
10 typedef void udi_buf_copy_call_t(udi_cb_t *gcb, udi_buf_t *new_dst_buf);
11 typedef void udi_buf_write_call_t(udi_cb_t *gcb, udi_buf_t *new_dst_buf);
14 * \brief Describes a buffer
20 Uint8 Data[]; //!< ENVIRONMENT ONLY
26 struct udi_xfer_constraints_s
28 udi_ubit32_t udi_xfer_max;
29 udi_ubit32_t udi_xfer_typical;
30 udi_ubit32_t udi_xfer_granularity;
31 udi_boolean_t udi_xfer_one_piece;
32 udi_boolean_t udi_xfer_exact_size;
33 udi_boolean_t udi_xfer_no_reorder;
38 * \brief Allocates a buffer
40 #define UDI_BUF_ALLOC(callback, gcb, init_data, size, path_handle) \
41 udi_buf_write(callback, gcb, init_data, size, NULL, 0, 0, path_handle)
44 * \brief Inserts data into a buffer
46 #define UDI_BUF_INSERT(callback, gcb, new_data, size, dst_buf, dst_off) \
47 udi_buf_write(callback, gcb, new_data, size, dst_buf, dst_off, 0, UDI_NULL_BUF_PATH)
50 * \brief Removes data from a buffer (data afterwards will be moved forewards)
52 #define UDI_BUF_DELETE(callback, gcb, size, dst_buf, dst_off) \
53 udi_buf_write(callback, gcb, NULL, 0, dst_buf, dst_off, size, UDI_NULL_BUF_PATH)
56 * \brief Duplicates \a src_buf
58 #define UDI_BUF_DUP(callback, gcb, src_buf, path_handle) \
59 udi_buf_copy(callback, gcb, src_buf, 0, (src_buf)->buf_size, NULL, 0, 0, path_handle)
63 * \brief Copies data from one buffer to another
65 extern void udi_buf_copy(
66 udi_buf_copy_call_t *callback,
74 udi_buf_path_t path_handle );
77 * \brief Copies data from driver space to a buffer
79 extern void udi_buf_write(
80 udi_buf_write_call_t *callback,
87 udi_buf_path_t path_handle
91 * \brief Reads data from a buffer into driver space
93 extern void udi_buf_read(
100 * \brief Frees a buffer
102 extern void udi_buf_free(udi_buf_t *buf);