XCORE SDK
XCORE Software Development Kit
rtos_mic_array.h
1 // Copyright 2020-2022 XMOS LIMITED.
2 // This Software is subject to the terms of the XMOS Public Licence: Version 1.
3 
4 #ifndef RTOS_MIC_ARRAY_H_
5 #define RTOS_MIC_ARRAY_H_
6 
14 #include <xcore/channel.h>
15 #include <xcore/clock.h>
16 #include <xcore/port.h>
17 #include "mic_array.h"
18 #include "mic_array_vanilla.h"
19 
20 #include "rtos_osal.h"
21 #include "rtos_driver_rpc.h"
22 
26 typedef enum
27 {
28  RTOS_MIC_ARRAY_CHANNEL_SAMPLE,
29  RTOS_MIC_ARRAY_SAMPLE_CHANNEL,
30  RTOS_MIC_ARRAY_FORMAT_COUNT
32 
37 
44  rtos_driver_rpc_t *rpc_config;
45 
46  __attribute__((fptrgroup("rtos_mic_array_rx_fptr_grp")))
47  size_t (*rx)(rtos_mic_array_t *, int32_t **sample_buf, size_t, unsigned);
48 
49  streaming_channel_t c_pdm_mic;
51 
52  rtos_osal_thread_t hil_thread;
53  rtos_osal_semaphore_t recv_sem;
54  int recv_blocked;
55  struct {
56  int32_t *buf;
57  size_t buf_size;
58  size_t write_index;
59  size_t read_index;
60  volatile size_t total_written;
61  volatile size_t total_read;
62  volatile size_t required_available_count;
63  } recv_buffer;
64 };
65 
66 #include "rtos_mic_array_rpc.h"
67 
95 inline size_t rtos_mic_array_rx(
96  rtos_mic_array_t *ctx,
97  int32_t **sample_buf,
98  size_t frame_count,
99  unsigned timeout)
100 {
101  return ctx->rx(ctx, sample_buf, frame_count, timeout);
102 }
103 
122  rtos_mic_array_t *mic_array_ctx,
123  size_t buffer_size,
124  unsigned interrupt_core_id);
125 
139  rtos_mic_array_t *mic_array_ctx,
140  uint32_t io_core_mask,
141  rtos_mic_array_format_t format);
142 
145 #endif /* RTOS_MIC_ARRAY_H_ */
size_t rtos_mic_array_rx(rtos_mic_array_t *ctx, int32_t **sample_buf, size_t frame_count, unsigned timeout)
Definition: rtos_mic_array.h:95
rtos_mic_array_format_t
Definition: rtos_mic_array.h:27
void rtos_mic_array_init(rtos_mic_array_t *mic_array_ctx, uint32_t io_core_mask, rtos_mic_array_format_t format)
Definition: rtos_mic_array.c:171
void rtos_mic_array_start(rtos_mic_array_t *mic_array_ctx, size_t buffer_size, unsigned interrupt_core_id)
Definition: rtos_mic_array.c:141
Definition: rtos_driver_rpc.h:23
Definition: rtos_mic_array.h:43