#ifndef CDIO_AUDIO_H_
#define CDIO_AUDIO_H_
#include <cdio/types.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct cdio_subchannel_s
{
uint8_t format;
uint8_t audio_status;
uint8_t address: 4;
uint8_t control: 4;
uint8_t track;
uint8_t index;
msf_t abs_addr;
msf_t rel_addr;
} cdio_subchannel_t;
typedef struct cdio_audio_volume_s
{
uint8_t level[4];
} cdio_audio_volume_t;
typedef struct cdio_track_index_s
{
uint8_t i_start_track;
uint8_t i_start_index;
uint8_t i_end_track;
uint8_t i_end_index;
} cdio_track_index_t;
driver_return_code_t cdio_audio_get_volume (CdIo_t *p_cdio,
cdio_audio_volume_t *p_volume);
uint32_t cdio_audio_get_msf_seconds(msf_t *p_msf);
driver_return_code_t cdio_audio_pause (CdIo_t *p_cdio);
driver_return_code_t cdio_audio_play_msf (CdIo_t *p_cdio,
msf_t *p_start_msf,
msf_t *p_end_msf);
driver_return_code_t cdio_audio_play_track_index
( CdIo_t *p_cdio, cdio_track_index_t *p_track_index);
driver_return_code_t cdio_audio_read_subchannel (CdIo_t *p_cdio,
cdio_subchannel_t *p_subchannel);
driver_return_code_t cdio_audio_resume (CdIo_t *p_cdio);
driver_return_code_t cdio_audio_set_volume (CdIo_t *p_cdio,
cdio_audio_volume_t *p_volume);
driver_return_code_t cdio_audio_stop (CdIo_t *p_cdio);
#ifdef __cplusplus
}
#endif
#endif