summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/pcm.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/firmware/export/pcm.h b/firmware/export/pcm.h
index 0d2d39b03d..40bfe6fa46 100644
--- a/firmware/export/pcm.h
+++ b/firmware/export/pcm.h
@@ -50,9 +50,9 @@
50/** RAW PCM routines used with playback and recording **/ 50/** RAW PCM routines used with playback and recording **/
51 51
52/* Typedef for registered callback */ 52/* Typedef for registered callback */
53typedef void (*pcm_more_callback_type)(unsigned char **start, 53typedef void (*pcm_play_callback_type)(unsigned char **start,
54 size_t *size); 54 size_t *size);
55typedef int (*pcm_more_callback_type2)(int status); 55typedef void (*pcm_rec_callback_type)(int status, void **start, size_t *size);
56 56
57/* set the pcm frequency - use values in hw_sampr_list 57/* set the pcm frequency - use values in hw_sampr_list
58 * use -1 for the default frequency 58 * use -1 for the default frequency
@@ -71,7 +71,7 @@ void pcm_init(void);
71void pcm_postinit(void); 71void pcm_postinit(void);
72 72
73/* This is for playing "raw" PCM data */ 73/* This is for playing "raw" PCM data */
74void pcm_play_data(pcm_more_callback_type get_more, 74void pcm_play_data(pcm_play_callback_type get_more,
75 unsigned char* start, size_t size); 75 unsigned char* start, size_t size);
76 76
77void pcm_calculate_peaks(int *left, int *right); 77void pcm_calculate_peaks(int *left, int *right);
@@ -86,6 +86,11 @@ bool pcm_is_playing(void);
86/** The following are for internal use between pcm.c and target- 86/** The following are for internal use between pcm.c and target-
87 specific portion **/ 87 specific portion **/
88 88
89/* Called by the bottom layer ISR when more data is needed. Returns non-
90 * zero size if more data is to be played. Setting start to NULL
91 * forces stop. */
92void pcm_play_get_more_callback(void **start, size_t *size);
93
89extern unsigned long pcm_curr_sampr; 94extern unsigned long pcm_curr_sampr;
90extern unsigned long pcm_sampr; 95extern unsigned long pcm_sampr;
91extern int pcm_fsel; 96extern int pcm_fsel;
@@ -94,10 +99,8 @@ extern int pcm_fsel;
94void * pcm_dma_addr(void *addr); 99void * pcm_dma_addr(void *addr);
95#endif 100#endif
96 101
97/* the registered callback function to ask for more mp3 data */ 102extern volatile bool pcm_playing;
98extern volatile pcm_more_callback_type pcm_callback_for_more; 103extern volatile bool pcm_paused;
99extern volatile bool pcm_playing;
100extern volatile bool pcm_paused;
101 104
102void pcm_play_dma_lock(void); 105void pcm_play_dma_lock(void);
103void pcm_play_dma_unlock(void); 106void pcm_play_dma_unlock(void);
@@ -105,7 +108,6 @@ void pcm_play_dma_init(void);
105void pcm_play_dma_start(const void *addr, size_t size); 108void pcm_play_dma_start(const void *addr, size_t size);
106void pcm_play_dma_stop(void); 109void pcm_play_dma_stop(void);
107void pcm_play_dma_pause(bool pause); 110void pcm_play_dma_pause(bool pause);
108void pcm_play_dma_stopped_callback(void);
109const void * pcm_play_dma_get_peak_buffer(int *count); 111const void * pcm_play_dma_get_peak_buffer(int *count);
110 112
111void pcm_dma_apply_settings(void); 113void pcm_dma_apply_settings(void);
@@ -124,7 +126,7 @@ void pcm_init_recording(void);
124void pcm_close_recording(void); 126void pcm_close_recording(void);
125 127
126/* Start recording "raw" PCM data */ 128/* Start recording "raw" PCM data */
127void pcm_record_data(pcm_more_callback_type2 more_ready, 129void pcm_record_data(pcm_rec_callback_type more_ready,
128 void *start, size_t size); 130 void *start, size_t size);
129 131
130/* Stop tranferring data into supplied buffer */ 132/* Stop tranferring data into supplied buffer */
@@ -133,17 +135,16 @@ void pcm_stop_recording(void);
133/* Is pcm currently recording? */ 135/* Is pcm currently recording? */
134bool pcm_is_recording(void); 136bool pcm_is_recording(void);
135 137
136/* Continue transferring data in - call during interrupt handler */ 138/* Called by bottom layer ISR when transfer is complete. Returns non-zero
137void pcm_record_more(void *start, size_t size); 139 * size if successful. Setting start to NULL forces stop. */
140void pcm_rec_more_ready_callback(int status, void **start, size_t *size);
138 141
139void pcm_calculate_rec_peaks(int *left, int *right); 142void pcm_calculate_rec_peaks(int *left, int *right);
140 143
141/** The following are for internal use between pcm.c and target- 144/** The following are for internal use between pcm.c and target-
142 specific portion **/ 145 specific portion **/
143/* the registered callback function for when more data is available */
144extern volatile pcm_more_callback_type2 pcm_callback_more_ready;
145/* DMA transfer in is currently active */ 146/* DMA transfer in is currently active */
146extern volatile bool pcm_recording; 147extern volatile bool pcm_recording;
147 148
148/* APIs implemented in the target-specific portion */ 149/* APIs implemented in the target-specific portion */
149void pcm_rec_dma_init(void); 150void pcm_rec_dma_init(void);
@@ -151,7 +152,6 @@ void pcm_rec_dma_close(void);
151void pcm_rec_dma_start(void *addr, size_t size); 152void pcm_rec_dma_start(void *addr, size_t size);
152void pcm_rec_dma_record_more(void *start, size_t size); 153void pcm_rec_dma_record_more(void *start, size_t size);
153void pcm_rec_dma_stop(void); 154void pcm_rec_dma_stop(void);
154void pcm_rec_dma_stopped_callback(void);
155const void * pcm_rec_dma_get_peak_buffer(void); 155const void * pcm_rec_dma_get_peak_buffer(void);
156 156
157#endif /* HAVE_RECORDING */ 157#endif /* HAVE_RECORDING */