NAME
CD_QCODELSN -- Report current disk position.
IO REQUEST
io_Device preset by the call to opendevice()
io_Unit preset by the call to opendevice()
io_Command CD_QCODELSN
io_Data pointer to qcode structure
io_Length 0 - MUST be zero (for future compatability)
RESULTS
io_Error 0 for success, or an error code as defined in
<devices/cd.h>
FUNCTION
This command reports current subcode Q channel time information. This
command only returns data when CD Audio is playing (or paused). At
any other time, an error is returned. The Q-Code packet consists of:
struct qcode {
ubyte ctladr; /* data type / qcode type */
ubyte track; /* track number */
ubyte index; /* track subindex number */
ubyte zero; /* the "zero" byte of q-code packet */
union LSNMSF TrackPosition; /* Position from start of track */
union LSNMSF DiskPosition; /* Position from start of disk */
};
EXAMPLE
struct qcode qcode;
ior->io_Command = CD_QCODELSN; /* Retrieve TOC information */
ior->io_Length = 0; /* MUST be zero */
ior->io_Data = (APTR)qcode; /* Here's where we want it */
doio (ior);
if (!ior->io_Error) { /* Command succeeded */
printf("Current position is: %ldn", qcode.DiskPosition.LSN);
}
NOTES
This function may not return immediately. It may take several frames
to pass by before a valid Q-Code packet can be returned. Use sendio()
and checkio() if response time is critical, and the information is
not.
BUGS
SEE ALSO
cd_playmsf, cd_playlsn, cd_playtrack, <devices/cd.h>