|
Packit |
dd8086 |
/*
|
|
Packit |
dd8086 |
Copyright (C) 2010, 2012 Rocky Bernstein <rocky@gnu.org>
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
This program is free software: you can redistribute it and/or modify
|
|
Packit |
dd8086 |
it under the terms of the GNU General Public License as published by
|
|
Packit |
dd8086 |
the Free Software Foundation, either version 3 of the License, or
|
|
Packit |
dd8086 |
(at your option) any later version.
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
This program is distributed in the hope that it will be useful,
|
|
Packit |
dd8086 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
dd8086 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
dd8086 |
GNU General Public License for more details.
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
You should have received a copy of the GNU General Public License
|
|
Packit |
dd8086 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
\file mmc_util.h
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
\brief Multimedia Command (MMC) "helper" routines that don't depend
|
|
Packit |
dd8086 |
on anything other than headers.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#ifndef CDIO_MMC_UTIL_H_
|
|
Packit |
dd8086 |
#define CDIO_MMC_UTIL_H_
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#include <cdio/device.h>
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#ifdef __cplusplus
|
|
Packit |
dd8086 |
extern "C" {
|
|
Packit |
dd8086 |
#endif /* __cplusplus */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Profile profile codes used in GET_CONFIGURATION - PROFILE LIST. */
|
|
Packit |
dd8086 |
typedef enum {
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_NON_REMOVABLE = 0x0001, /**< Re-writable disc, capable
|
|
Packit |
dd8086 |
of changing behavior */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_REMOVABLE = 0x0002, /**< disk Re-writable; with
|
|
Packit |
dd8086 |
removable media */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_MO_ERASABLE = 0x0003, /**< Erasable Magneto-Optical
|
|
Packit |
dd8086 |
disk with sector erase
|
|
Packit |
dd8086 |
capability */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_MO_WRITE_ONCE = 0x0004, /**< Write Once Magneto-Optical
|
|
Packit |
dd8086 |
write once */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_AS_MO = 0x0005, /**< Advance Storage
|
|
Packit |
dd8086 |
Magneto-Optical */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_CD_ROM = 0x0008, /**< Read only Compact Disc
|
|
Packit |
dd8086 |
capable */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_CD_R = 0x0009, /**< Write once Compact Disc
|
|
Packit |
dd8086 |
capable */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_CD_RW = 0x000A, /**< CD-RW Re-writable
|
|
Packit |
dd8086 |
Compact Disc capable */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_ROM = 0x0010, /**< Read only DVD */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_R_SEQ = 0x0011, /**< Re-recordable DVD using
|
|
Packit |
dd8086 |
Sequential recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_RAM = 0x0012, /**< Re-writable DVD */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_RW_RO = 0x0013, /**< Re-recordable DVD using
|
|
Packit |
dd8086 |
Restricted Overwrite */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_RW_SEQ = 0x0014, /**< Re-recordable DVD using
|
|
Packit |
dd8086 |
Sequential recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_R_DL_SEQ = 0x0015, /**< DVD-R/DL sequential
|
|
Packit |
dd8086 |
recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_R_DL_JR = 0x0016, /**< DVD-R/DL layer jump
|
|
Packit |
dd8086 |
recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_PRW = 0x001A, /**< DVD+RW - DVD ReWritable */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_PR = 0x001B, /**< DVD+R - DVD Recordable */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DDCD_ROM = 0x0020, /**< Read only DDCD */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DDCD_R = 0x0021, /**< DDCD-R Write only DDCD */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DDCD_RW = 0x0022, /**< Re-Write only DDCD */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_PRW_DL = 0x002A, /**< "DVD+RW/DL */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_DVD_PR_DL = 0x002B, /**< DVD+R - DVD Recordable
|
|
Packit |
dd8086 |
double layer */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_BD_ROM = 0x0040, /**< BD-ROM */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_BD_SEQ = 0x0041, /**< BD-R sequential
|
|
Packit |
dd8086 |
recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_BD_R_RANDOM = 0x0042, /**< BD-R random recording */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_BD_RE = 0x0043, /**< BD-RE */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_HD_DVD_ROM = 0x0050, /**< HD-DVD-ROM */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_HD_DVD_R = 0x0051, /**< HD-DVD-R */
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_HD_DVD_RAM = 0x0052, /**<"HD-DVD-RAM */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
CDIO_MMC_FEATURE_PROF_NON_CONFORM = 0xFFFF, /**< The Logical Unit does not
|
|
Packit |
dd8086 |
conform to any Profile. */
|
|
Packit |
dd8086 |
} cdio_mmc_feature_profile_t;
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
@param i_feature MMC feature number
|
|
Packit |
dd8086 |
@return string containing the name of the given feature
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
const char *mmc_feature2str( int i_feature );
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Get drive capabilities for a device.
|
|
Packit |
dd8086 |
@param p_cdio the CD object to be acted upon.
|
|
Packit |
dd8086 |
@param p_read_cap list of read capabilities that are set on return
|
|
Packit |
dd8086 |
@param p_write_cap list of write capabilities that are set on return
|
|
Packit |
dd8086 |
@param p_misc_cap list of miscellaneous capabilities (that are neither
|
|
Packit |
dd8086 |
read nor write related) that are set on return
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
void mmc_get_drive_cap ( CdIo_t *p_cdio,
|
|
Packit |
dd8086 |
/*out*/ cdio_drive_read_cap_t *p_read_cap,
|
|
Packit |
dd8086 |
/*out*/ cdio_drive_write_cap_t *p_write_cap,
|
|
Packit |
dd8086 |
/*out*/ cdio_drive_misc_cap_t *p_misc_cap);
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Return a string containing the name of the given feature
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
const char *mmc_feature_profile2str( int i_feature_profile );
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
bool mmc_is_disctype_bd(cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
bool mmc_is_disctype_cdrom(cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
bool mmc_is_disctype_dvd(cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
bool mmc_is_disctype_hd_dvd (cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
bool mmc_is_disctype_overwritable (cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
bool mmc_is_disctype_rewritable(cdio_mmc_feature_profile_t disctype);
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/** The default read timeout is 3 minutes. */
|
|
Packit |
dd8086 |
#define MMC_READ_TIMEOUT_DEFAULT 3*60*1000
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Set this to the maximum value in milliseconds that we will
|
|
Packit |
dd8086 |
wait on an MMC read command.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
extern uint32_t mmc_read_timeout_ms;
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Maps a mmc_sense_key_t into a string name.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
extern const char mmc_sense_key2str[16][40];
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
The default timeout (non-read) is 6 seconds.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
#define MMC_TIMEOUT_DEFAULT 6000
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
/**
|
|
Packit |
dd8086 |
Set this to the maximum value in milliseconds that we will
|
|
Packit |
dd8086 |
wait on an MMC command.
|
|
Packit |
dd8086 |
*/
|
|
Packit |
dd8086 |
extern uint32_t mmc_timeout_ms;
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#ifdef __cplusplus
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
#endif /* __cplusplus */
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#endif /* CDIO_MMC_UTIL_H_ */
|
|
Packit |
dd8086 |
/*
|
|
Packit |
dd8086 |
* Local variables:
|
|
Packit |
dd8086 |
* c-file-style: "gnu"
|
|
Packit |
dd8086 |
* tab-width: 8
|
|
Packit |
dd8086 |
* indent-tabs-mode: nil
|
|
Packit |
dd8086 |
* End:
|
|
Packit |
dd8086 |
*/
|