dspqueue
Asynchronous DSP Packet Queue
dspqueue.h
Go to the documentation of this file.
1 /*
2  Copyright (c) 2020 Qualcomm Technologies, Inc.
3  All Rights Reserved.
4  Confidential and Proprietary - Qualcomm Technologies, Inc.
5 */
6 
7 
12 #ifndef DSPQUEUE_H
13 #define DSPQUEUE_H
14 
15 #include <stdlib.h>
16 #include <stdint.h>
17 #include <AEEStdDef.h>
18 
19 
25 #define DSPQUEUE_TIMEOUT_NONE 0xffffffff
26 
27 
37  DSPQUEUE_PACKET_FLAG_RESERVED_ZERO = 0xffe0
38 };
39 
44  /* 1 and 2 reserved */
45  DSPQUEUE_BUFFER_FLAG_REF = 0x00000004,
51  DSPQUEUE_BUFFER_FLAG_RESERVED_ZERO = 0xffffff00
52 };
53 
54 
80 };
81 
90 struct dspqueue;
91 typedef struct dspqueue* dspqueue_t;
104  uint32_t fd;
105  uint32_t size;
109  uint32_t offset;
111  uint32_t flags;
112  union {
113  void *ptr;
114  uint64_t address;
115  };
116 };
117 
118 
126 typedef void (*dspqueue_callback_t)(dspqueue_t queue, AEEResult error, void *context);
127 
132 #ifdef __cplusplus
133 extern "C" {
134 #endif
135 
136 
164 AEEResult dspqueue_create(int domain,
165  uint32_t flags,
166  uint32_t req_queue_size, uint32_t resp_queue_size,
167  dspqueue_callback_t packet_callback,
168  dspqueue_callback_t error_callback,
169  void *callback_context,
170  dspqueue_t *queue);
171 
184 AEEResult dspqueue_close(dspqueue_t queue);
185 
196 AEEResult dspqueue_export(dspqueue_t queue, uint64_t *queue_id);
197 
217 AEEResult dspqueue_import(uint64_t queue_id,
218  dspqueue_callback_t packet_callback,
219  dspqueue_callback_t error_callback,
220  void *callback_context,
221  dspqueue_t *queue);
248 AEEResult dspqueue_write_noblock(dspqueue_t queue, uint32_t flags,
249  uint32_t num_buffers, struct dspqueue_buffer *buffers,
250  uint32_t message_length, const uint8_t *message);
251 
281 AEEResult dspqueue_write(dspqueue_t queue, uint32_t flags,
282  uint32_t num_buffers, struct dspqueue_buffer *buffers,
283  uint32_t message_length, const uint8_t *message,
284  uint32_t timeout_us);
285 
312 AEEResult dspqueue_read_noblock(dspqueue_t queue, uint32_t *flags,
313  uint32_t max_buffers, uint32_t *num_buffers, struct dspqueue_buffer *buffers,
314  uint32_t max_message_length, uint32_t *message_length, uint8_t *message);
315 
346 AEEResult dspqueue_read(dspqueue_t queue, uint32_t *flags,
347  uint32_t max_buffers, uint32_t *num_buffers, struct dspqueue_buffer *buffers,
348  uint32_t max_message_length, uint32_t *message_length, uint8_t *message,
349  uint32_t timeout_us);
350 
367 AEEResult dspqueue_peek_noblock(dspqueue_t queue, uint32_t *flags, uint32_t *num_buffers,
368  uint32_t *message_length);
369 
390 AEEResult dspqueue_peek(dspqueue_t queue, uint32_t *flags, uint32_t *num_buffers,
391  uint32_t *message_length, uint32_t timeout_us);
392 
393 
420 AEEResult dspqueue_write_early_wakeup_noblock(dspqueue_t queue, uint32_t wakeup_delay, uint32_t packet_flags);
421 
422 
444 AEEResult dspqueue_get_stat(dspqueue_t queue, enum dspqueue_stat stat, uint64_t *value);
445 
446 
451 #ifdef __cplusplus
452 }
453 #endif
454 
455 #endif //DSPQUEUE_H
Definition: dspqueue.h:47
Definition: dspqueue.h:49
uint32_t offset
Definition: dspqueue.h:108
Definition: dspqueue.h:45
struct dspqueue * dspqueue_t
Definition: dspqueue.h:90
Definition: dspqueue.h:33
AEEResult dspqueue_write_noblock(dspqueue_t queue, uint32_t flags, uint32_t num_buffers, struct dspqueue_buffer *buffers, uint32_t message_length, const uint8_t *message)
Definition: dspqueue.h:36
Definition: dspqueue.h:72
Definition: dspqueue.h:61
AEEResult dspqueue_get_stat(dspqueue_t queue, enum dspqueue_stat stat, uint64_t *value)
dspqueue_buffer_flags
Definition: dspqueue.h:43
AEEResult dspqueue_create(int domain, uint32_t flags, uint32_t req_queue_size, uint32_t resp_queue_size, dspqueue_callback_t packet_callback, dspqueue_callback_t error_callback, void *callback_context, dspqueue_t *queue)
uint32_t flags
Definition: dspqueue.h:110
uint32_t fd
Definition: dspqueue.h:103
uint32_t size
Definition: dspqueue.h:104
AEEResult dspqueue_peek_noblock(dspqueue_t queue, uint32_t *flags, uint32_t *num_buffers, uint32_t *message_length)
AEEResult dspqueue_read_noblock(dspqueue_t queue, uint32_t *flags, uint32_t max_buffers, uint32_t *num_buffers, struct dspqueue_buffer *buffers, uint32_t max_message_length, uint32_t *message_length, uint8_t *message)
Definition: dspqueue.h:34
AEEResult dspqueue_write_early_wakeup_noblock(dspqueue_t queue, uint32_t wakeup_delay, uint32_t packet_flags)
AEEResult dspqueue_close(dspqueue_t queue)
Definition: dspqueue.h:64
void(* dspqueue_callback_t)(dspqueue_t queue, AEEResult error, void *context)
Definition: dspqueue.h:125
AEEResult dspqueue_export(dspqueue_t queue, uint64_t *queue_id)
Definition: dspqueue.h:59
AEEResult dspqueue_peek(dspqueue_t queue, uint32_t *flags, uint32_t *num_buffers, uint32_t *message_length, uint32_t timeout_us)
Definition: dspqueue.h:32
dspqueue_stat
Definition: dspqueue.h:58
AEEResult dspqueue_import(uint64_t queue_id, dspqueue_callback_t packet_callback, dspqueue_callback_t error_callback, void *callback_context, dspqueue_t *queue)
Definition: dspqueue.h:35
dspqueue_packet_flags
Definition: dspqueue.h:31
void * ptr
Definition: dspqueue.h:112
Definition: dspqueue.h:102
AEEResult dspqueue_read(dspqueue_t queue, uint32_t *flags, uint32_t max_buffers, uint32_t *num_buffers, struct dspqueue_buffer *buffers, uint32_t max_message_length, uint32_t *message_length, uint8_t *message, uint32_t timeout_us)
AEEResult dspqueue_write(dspqueue_t queue, uint32_t flags, uint32_t num_buffers, struct dspqueue_buffer *buffers, uint32_t message_length, const uint8_t *message, uint32_t timeout_us)
Definition: dspqueue.h:46
Definition: dspqueue.h:60
Definition: dspqueue.h:62