diff options
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/pcm.h | 30 |
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 */ |
53 | typedef void (*pcm_more_callback_type)(unsigned char **start, | 53 | typedef void (*pcm_play_callback_type)(unsigned char **start, |
54 | size_t *size); | 54 | size_t *size); |
55 | typedef int (*pcm_more_callback_type2)(int status); | 55 | typedef 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); | |||
71 | void pcm_postinit(void); | 71 | void pcm_postinit(void); |
72 | 72 | ||
73 | /* This is for playing "raw" PCM data */ | 73 | /* This is for playing "raw" PCM data */ |
74 | void pcm_play_data(pcm_more_callback_type get_more, | 74 | void 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 | ||
77 | void pcm_calculate_peaks(int *left, int *right); | 77 | void 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. */ | ||
92 | void pcm_play_get_more_callback(void **start, size_t *size); | ||
93 | |||
89 | extern unsigned long pcm_curr_sampr; | 94 | extern unsigned long pcm_curr_sampr; |
90 | extern unsigned long pcm_sampr; | 95 | extern unsigned long pcm_sampr; |
91 | extern int pcm_fsel; | 96 | extern int pcm_fsel; |
@@ -94,10 +99,8 @@ extern int pcm_fsel; | |||
94 | void * pcm_dma_addr(void *addr); | 99 | void * pcm_dma_addr(void *addr); |
95 | #endif | 100 | #endif |
96 | 101 | ||
97 | /* the registered callback function to ask for more mp3 data */ | 102 | extern volatile bool pcm_playing; |
98 | extern volatile pcm_more_callback_type pcm_callback_for_more; | 103 | extern volatile bool pcm_paused; |
99 | extern volatile bool pcm_playing; | ||
100 | extern volatile bool pcm_paused; | ||
101 | 104 | ||
102 | void pcm_play_dma_lock(void); | 105 | void pcm_play_dma_lock(void); |
103 | void pcm_play_dma_unlock(void); | 106 | void pcm_play_dma_unlock(void); |
@@ -105,7 +108,6 @@ void pcm_play_dma_init(void); | |||
105 | void pcm_play_dma_start(const void *addr, size_t size); | 108 | void pcm_play_dma_start(const void *addr, size_t size); |
106 | void pcm_play_dma_stop(void); | 109 | void pcm_play_dma_stop(void); |
107 | void pcm_play_dma_pause(bool pause); | 110 | void pcm_play_dma_pause(bool pause); |
108 | void pcm_play_dma_stopped_callback(void); | ||
109 | const void * pcm_play_dma_get_peak_buffer(int *count); | 111 | const void * pcm_play_dma_get_peak_buffer(int *count); |
110 | 112 | ||
111 | void pcm_dma_apply_settings(void); | 113 | void pcm_dma_apply_settings(void); |
@@ -124,7 +126,7 @@ void pcm_init_recording(void); | |||
124 | void pcm_close_recording(void); | 126 | void pcm_close_recording(void); |
125 | 127 | ||
126 | /* Start recording "raw" PCM data */ | 128 | /* Start recording "raw" PCM data */ |
127 | void pcm_record_data(pcm_more_callback_type2 more_ready, | 129 | void 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? */ |
134 | bool pcm_is_recording(void); | 136 | bool 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 |
137 | void pcm_record_more(void *start, size_t size); | 139 | * size if successful. Setting start to NULL forces stop. */ |
140 | void pcm_rec_more_ready_callback(int status, void **start, size_t *size); | ||
138 | 141 | ||
139 | void pcm_calculate_rec_peaks(int *left, int *right); | 142 | void 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 */ | ||
144 | extern volatile pcm_more_callback_type2 pcm_callback_more_ready; | ||
145 | /* DMA transfer in is currently active */ | 146 | /* DMA transfer in is currently active */ |
146 | extern volatile bool pcm_recording; | 147 | extern volatile bool pcm_recording; |
147 | 148 | ||
148 | /* APIs implemented in the target-specific portion */ | 149 | /* APIs implemented in the target-specific portion */ |
149 | void pcm_rec_dma_init(void); | 150 | void pcm_rec_dma_init(void); |
@@ -151,7 +152,6 @@ void pcm_rec_dma_close(void); | |||
151 | void pcm_rec_dma_start(void *addr, size_t size); | 152 | void pcm_rec_dma_start(void *addr, size_t size); |
152 | void pcm_rec_dma_record_more(void *start, size_t size); | 153 | void pcm_rec_dma_record_more(void *start, size_t size); |
153 | void pcm_rec_dma_stop(void); | 154 | void pcm_rec_dma_stop(void); |
154 | void pcm_rec_dma_stopped_callback(void); | ||
155 | const void * pcm_rec_dma_get_peak_buffer(void); | 155 | const void * pcm_rec_dma_get_peak_buffer(void); |
156 | 156 | ||
157 | #endif /* HAVE_RECORDING */ | 157 | #endif /* HAVE_RECORDING */ |