libOGC  1.0
 All Data Structures Files Functions Variables Typedefs Macros Modules Pages
Data Structures | Macros | Typedefs | Functions | Variables
dvd.h File Reference

DVD subsystem. More...

#include <gctypes.h>
#include <ogc/lwp_queue.h>
#include <ogc/disc_io.h>

Data Structures

struct  _dvdcmdblk
 
struct  _dvddiskid
 
struct  _dvddrvinfo
 
struct  _dvdfileinfo
 

Macros

#define DEVICE_TYPE_GAMECUBE_DVD   (('G'<<24)|('D'<<16)|('V'<<8)|'D')
 
#define DVD_ERROR_CANCELED   -3
 
#define DVD_ERROR_COVER_CLOSED   -4
 
#define DVD_ERROR_FATAL   -1
 
#define DVD_ERROR_IGNORED   -2
 
#define DVD_ERROR_OK   0
 
#define DVD_GetUserData(block)   ((block)->usrdata)
 
#define DVD_RESETHARD   0
 
#define DVD_RESETNONE   2
 
#define DVD_RESETSOFT   1
 
#define DVD_SetUserData(block, data)   ((block)->usrdata = (data))
 
#define DVD_SPINMOTOR_ACCEPT   0x00004000
 
#define DVD_SPINMOTOR_CHECKDISK   0x00008000
 
#define DVD_SPINMOTOR_DOWN   0x00000000
 
#define DVD_SPINMOTOR_UP   0x00000100
 
#define DVD_STATE_BUSY   1
 
#define DVD_STATE_CANCELED   10
 
#define DVD_STATE_COVER_CLOSED   3
 
#define DVD_STATE_COVER_OPEN   5
 
#define DVD_STATE_END   0
 
#define DVD_STATE_FATAL_ERROR   -1
 
#define DVD_STATE_IGNORED   8
 
#define DVD_STATE_MOTOR_STOPPED   7
 
#define DVD_STATE_NO_DISK   4
 
#define DVD_STATE_RETRY   11
 
#define DVD_STATE_WAITING   2
 
#define DVD_STATE_WRONG_DISK   6
 

Typedefs

typedef void(* dvdcallback )(s32 result, dvdfileinfo *info)
 function pointer typedef for the user's DVD operation callback More...
 
typedef void(* dvdcbcallback )(s32 result, dvdcmdblk *block)
 function pointer typedef for the user's operations callback
 
typedef struct _dvdcmdblk dvdcmdblk
 forward typedef for struct _dvdcmdblk More...
 
typedef struct _dvddiskid dvddiskid
 forward typedef for struct _dvddiskid More...
 
typedef struct _dvddrvinfo dvddrvinfo
 forward typedef for struct _dvddrvinfo More...
 
typedef struct _dvdfileinfo dvdfileinfo
 forward typedef for struct _dvdfileinfo More...
 

Functions

s32 DVD_CancelAllAsync (dvdcbcallback cb)
 
s32 DVD_ControlDrive (dvdcmdblk *block, u32 cmd)
 Controls the drive's motor and behavior. More...
 
s32 DVD_ControlDriveAsync (dvdcmdblk *block, u32 cmd, dvdcbcallback cb)
 Controls the drive's motor and behavior. More...
 
s32 DVD_GetCmdBlockStatus (dvdcmdblk *block)
 
dvddiskidDVD_GetCurrentDiskID ()
 
dvddrvinfoDVD_GetDriveInfo ()
 
s32 DVD_GetDriveStatus ()
 
void DVD_Init ()
 Initializes the DVD subsystem. More...
 
s32 DVD_Inquiry (dvdcmdblk *block, dvddrvinfo *info)
 
s32 DVD_InquiryAsync (dvdcmdblk *block, dvddrvinfo *info, dvdcbcallback cb)
 
s32 DVD_Mount ()
 Mounts the DVD drive. More...
 
s32 DVD_MountAsync (dvdcmdblk *block, dvdcbcallback cb)
 Mounts the DVD drive. More...
 
void DVD_Pause ()
 
s32 DVD_ReadAbsAsyncForBS (dvdcmdblk *block, void *buf, u32 len, s64 offset, dvdcbcallback cb)
 
s32 DVD_ReadAbsAsyncPrio (dvdcmdblk *block, void *buf, u32 len, s64 offset, dvdcbcallback cb, s32 prio)
 
s32 DVD_ReadDiskID (dvdcmdblk *block, dvddiskid *id, dvdcbcallback cb)
 
s32 DVD_ReadPrio (dvdcmdblk *block, void *buf, u32 len, s64 offset, s32 prio)
 
void DVD_Reset (u32 reset_mode)
 Performs a reset of the drive and FW respectively. More...
 
s32 DVD_SeekAbsAsyncPrio (dvdcmdblk *block, s64 offset, dvdcbcallback cb, s32 prio)
 
s32 DVD_SeekPrio (dvdcmdblk *block, s64 offset, s32 prio)
 
u32 DVD_SetAutoInvalidation (u32 auto_inv)
 
s32 DVD_SetGCMOffset (dvdcmdblk *block, s64 offset)
 
s32 DVD_SetGCMOffsetAsync (dvdcmdblk *block, s64 offset, dvdcbcallback cb)
 
s32 DVD_SpinUpDrive (dvdcmdblk *block)
 
s32 DVD_SpinUpDriveAsync (dvdcmdblk *block, dvdcbcallback cb)
 
s32 DVD_StopStreamAtEnd (dvdcmdblk *block)
 
s32 DVD_StopStreamAtEndAsync (dvdcmdblk *block, dvdcbcallback cb)
 

Variables

const DISC_INTERFACE __io_gcdvd
 

Detailed Description

DVD subsystem.

Typedef Documentation

void(* dvdcallback)(s32 result, dvdfileinfo *info)

function pointer typedef for the user's DVD operation callback

Parameters
[in]resulterror code of last operation
[in]infopointer to user's file info strucutre

forward typedef for struct _dvdcmdblk

This structure is used internally to control the requested operation.

forward typedef for struct _dvddiskid

This structure holds the game vendors copyright informations.
Additionally it holds certain parameters for audiocontrol and
multidisc support.

Parameters
gamename[4]vendors game key
company[2]vendors company key
disknumnumber of disc when multidisc support is used.
gameverversion of game
streamingflag to control audio streaming
streambufsizesize of buffer used for audio streaming
pad[22]padding

forward typedef for struct _dvddrvinfo

This structure structure holds the drive version infromation.
Use DVD_Inquiry() to retrieve this information.

Parameters
rev_leverevision level
dev_codedevice code
rel_daterelease date
pad[24]padding

forward typedef for struct _dvdfileinfo

This structure is used internally to control the requested file operation.

Function Documentation

s32 DVD_ControlDrive ( dvdcmdblk block,
u32  cmd 
)

Controls the drive's motor and behavior.

This is a synchronous version of DVD_ControlDriveAsync().

Parameters
[in]blockpointer to a dvdcmdblk structure used to process the operation
[in]cmdcommand to control the drive.
Returns
none
s32 DVD_ControlDriveAsync ( dvdcmdblk block,
u32  cmd,
dvdcbcallback  cb 
)

Controls the drive's motor and behavior.

Parameters
[in]blockpointer to a dvdcmdblk structure used to process the operation
[in]cmdcommand to control the drive.
[in]cbcallback to be invoked upon completion of operation.
Returns
none
void DVD_Init ( )

Initializes the DVD subsystem.

You must call this function before calling any other DVD function

Returns
none
s32 DVD_Mount ( )

Mounts the DVD drive.

This is a synchronous version of DVD_MountAsync().

Returns
none
s32 DVD_MountAsync ( dvdcmdblk block,
dvdcbcallback  cb 
)

Mounts the DVD drive.

You must call this function in order to access the DVD.

Following tasks are performed:

  • Issue a hard reset to the drive.
  • Turn on drive's debug mode.
  • Patch drive's FW.
  • Enable extensions.
  • Read disc ID

    The patch code and procedure was taken from the gc-linux DVD device driver.

Parameters
[in]blockpointer to a dvdcmdblk structure used to process the operation
[in]cbcallback to be invoked upon completion of operation
Returns
none
void DVD_Reset ( u32  reset_mode)

Performs a reset of the drive and FW respectively.

Parameters
[in]reset_modetype of reset
Returns
none