35 #ifndef __HAL_AUDIO_H__ 36 #define __HAL_AUDIO_H__ 37 #include "hal_platform.h" 39 #ifdef HAL_AUDIO_MODULE_ENABLED 196 HAL_AUDIO_STATUS_INVALID_PARAMETER = -2,
197 HAL_AUDIO_STATUS_ERROR = -1,
198 HAL_AUDIO_STATUS_OK = 0
199 } hal_audio_status_t;
203 HAL_AUDIO_EVENT_ERROR = -1,
204 HAL_AUDIO_EVENT_NONE = 0,
205 HAL_AUDIO_EVENT_UNDERFLOW = 1,
206 HAL_AUDIO_EVENT_DATA_REQUEST = 2,
207 HAL_AUDIO_EVENT_DATA_NOTIFICATION = 3,
208 HAL_AUDIO_EVENT_END = 4
213 HAL_AUDIO_DEVICE_NONE = 0x0000,
214 HAL_AUDIO_DEVICE_MAIN_MIC = 0x0001,
215 HAL_AUDIO_DEVICE_HEADSET_MIC = 0x0002,
216 HAL_AUDIO_DEVICE_HANDSET = 0x0004,
217 HAL_AUDIO_DEVICE_HANDS_FREE_MONO = 0x0008,
218 HAL_AUDIO_DEVICE_HANDS_FREE_STEREO = 0x0010,
219 HAL_AUDIO_DEVICE_HEADSET = 0x0020,
220 HAL_AUDIO_DEVICE_HEADSET_MONO = 0x0040,
221 HAL_AUDIO_DEVICE_LINE_IN = 0x0080,
222 HAL_AUDIO_DEVICE_DUAL_DIGITAL_MIC = 0x0100,
223 HAL_AUDIO_DEVICE_SINGLE_DIGITAL_MIC = 0x0200
224 } hal_audio_device_t;
228 HAL_AUDIO_MUTE_MAIN_MIC = 0x0001,
229 HAL_AUDIO_MUTE_EAR_MIC = 0x0002,
230 HAL_AUDIO_MUTE_HANDSET = 0x0004,
231 HAL_AUDIO_MUTE_HANDS_FREE = 0x0008,
232 HAL_AUDIO_MUTE_HEADSET = 0x0010,
233 HAL_AUDIO_MUTE_LINE_IN = 0x0020
238 HAL_AUDIO_MUTE_FUNCTION_NONE = 0,
239 HAL_AUDIO_MUTE_FUNCTION_PCM = 1
240 } hal_audio_mute_function_t;
244 HAL_AUDIO_SAMPLING_RATE_8KHZ = 0,
245 HAL_AUDIO_SAMPLING_RATE_11_025KHZ = 1,
246 HAL_AUDIO_SAMPLING_RATE_12KHZ = 2,
247 HAL_AUDIO_SAMPLING_RATE_16KHZ = 3,
248 HAL_AUDIO_SAMPLING_RATE_22_05KHZ = 4,
249 HAL_AUDIO_SAMPLING_RATE_24KHZ = 5,
250 HAL_AUDIO_SAMPLING_RATE_32KHZ = 6,
251 HAL_AUDIO_SAMPLING_RATE_44_1KHZ = 7,
252 HAL_AUDIO_SAMPLING_RATE_48KHZ = 8,
253 HAL_AUDIO_SAMPLING_RATE_96KHZ = 9
254 } hal_audio_sampling_rate_t;
258 HAL_AUDIO_BITS_PER_SAMPLING_16 = 0,
259 HAL_AUDIO_BITS_PER_SAMPLING_24 = 1
260 } hal_audio_bits_per_sample_t;
265 HAL_AUDIO_STEREO = 1,
266 HAL_AUDIO_STEREO_BOTH_L_CHANNEL = 2,
267 HAL_AUDIO_STEREO_BOTH_R_CHANNEL = 3,
268 HAL_AUDIO_STEREO_BOTH_L_R_SWAP = 4
269 } hal_audio_channel_number_t;
273 HAL_AUDIO_PLAYBACK_MUSIC = 0,
274 HAL_AUDIO_PLAYBACK_VOICE = 1,
275 HAL_AUDIO_RECORD_VOICE = 2,
276 HAL_AUDIO_TWO_WAY_VOICE = 3,
277 HAL_AUDIO_PLAYBACK_MUSIC_RECORD_VOICE = 4
278 } hal_audio_active_type_t;
291 hal_audio_sampling_rate_t stream_sampling_rate;
292 hal_audio_bits_per_sample_t stream_bit_rate;
293 hal_audio_channel_number_t stream_channel;
294 hal_audio_device_t audio_device;
295 uint32_t digital_gain_index;
296 uint32_t analog_gain_index;
297 } hal_audio_stream_mode_t;
301 hal_audio_stream_mode_t stream_in;
302 hal_audio_stream_mode_t stream_out;
303 hal_audio_active_type_t audio_path_type;
304 hal_audio_mute_t mute_device;
306 } hal_audio_stream_t;
313 uint32_t buffer_size;
314 uint32_t sample_rate;
316 } hal_audio_copy_stream_t;
332 typedef void (*hal_audio_stream_out_callback_t)(hal_audio_event_t event,
void *user_data);
340 typedef void (*hal_audio_stream_in_callback_t)(hal_audio_event_t event,
void *user_data);
348 typedef void (*hal_audio_stream_copy_callback_t)(hal_audio_event_t event, hal_audio_copy_stream_t *user_data);
360 hal_audio_status_t hal_audio_init(
void);
367 hal_audio_status_t hal_audio_deinit(
void);
375 hal_audio_status_t hal_audio_register_copied_stream_out_callback(hal_audio_stream_copy_callback_t callback,
void *user_data);
384 hal_audio_status_t hal_audio_set_stream_out_sampling_rate(hal_audio_sampling_rate_t sample_rate);
391 hal_audio_status_t hal_audio_set_stream_out_channel_number(hal_audio_channel_number_t channel_number);
399 hal_audio_status_t hal_audio_start_stream_out(hal_audio_active_type_t active_type);
405 void hal_audio_stop_stream_out(
void);
413 hal_audio_status_t hal_audio_set_stream_out_volume(uint32_t digital_volume_index, uint32_t analog_volume_index);
422 void hal_audio_mute_stream_out(
bool mute);
429 hal_audio_status_t hal_audio_set_stream_out_device(hal_audio_device_t device);
438 hal_audio_status_t hal_audio_write_stream_out(
const void *buffer, uint32_t size);
447 hal_audio_status_t hal_audio_get_stream_out_sample_count(uint32_t *sample_count);
455 hal_audio_status_t hal_audio_register_stream_out_callback(hal_audio_stream_out_callback_t callback,
void *user_data);
466 hal_audio_status_t hal_audio_set_stream_in_sampling_rate(hal_audio_sampling_rate_t sample_rate);
476 hal_audio_status_t hal_audio_set_stream_in_channel_number(hal_audio_channel_number_t channel_number);
487 hal_audio_status_t hal_audio_start_stream_in(hal_audio_active_type_t active_type);
496 void hal_audio_stop_stream_in(
void);
504 hal_audio_status_t hal_audio_set_stream_in_volume(uint32_t digital_volume_index, uint32_t analog_volume_index);
513 void hal_audio_mute_stream_in(
bool mute);
523 hal_audio_status_t hal_audio_set_stream_in_device(hal_audio_device_t device);
532 hal_audio_status_t hal_audio_read_stream_in(
void *buffer, uint32_t sample_count);
541 hal_audio_status_t hal_audio_get_stream_in_sample_count(uint32_t *sample_count);
552 hal_audio_status_t hal_audio_register_stream_in_callback(hal_audio_stream_in_callback_t callback,
void *user_data);
561 hal_audio_status_t hal_audio_get_memory_size(uint32_t *memory_size);
570 hal_audio_status_t hal_audio_set_memory(
void *memory);
578 hal_audio_status_t hal_audio_get_audio_clock(uint32_t *sample_count);