/* Copyright (C) 2010, 2012 Rocky Bernstein This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /** \file mmc_hl_cmds.h \brief Higher-level MMC commands which build on top of the lower-level MMC commands. */ #ifndef CDIO_MMC_HL_CMDS_H_ #define CDIO_MMC_HL_CMDS_H_ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** Close tray using a MMC START STOP UNIT command. @param p_cdio the CD object to be acted upon. @return DRIVER_OP_SUCCESS (0) if we got the status. return codes are the same as driver_return_code_t */ driver_return_code_t mmc_close_tray( CdIo_t *p_cdio ); /** Detects if a disc (CD or DVD) is erasable or not. @param p_cdio the CD object to be acted upon. @param b_erasable if not NULL, on return will be set indicate whether the operation was a success (DRIVER_OP_SUCCESS) or if not to some other value. @return true if the disc is detected as erasable (rewritable), false otherwise. */ driver_return_code_t mmc_get_disc_erasable(const CdIo_t *p_cdio, bool *b_erasable); /** Eject using MMC commands. If CD-ROM is "locked" we'll unlock it. Command is not "immediate" -- we'll wait for the command to complete. For a more general (and lower-level) routine, @see mmc_start_stop_unit. @param p_cdio the CD object to be acted upon. @return DRIVER_OP_SUCCESS (0) if we got the status. return codes are the same as driver_return_code_t */ driver_return_code_t mmc_eject_media( const CdIo_t *p_cdio ); /** Detects the disc type using the SCSI-MMC GET CONFIGURATION command. @param p_cdio the CD object to be acted upon. @param i_timeout_ms number of millisections to wait before timeout @param p_disctype the disc type set on success. @return DRIVER_OP_SUCCESS (0) if we got the status. return codes are the same as driver_return_code_t */ driver_return_code_t mmc_get_disctype(const CdIo_t *p_cdio, unsigned int i_timeout_ms, cdio_mmc_feature_profile_t *p_disctype); /** Run a SCSI-MMC MODE_SENSE command (6- or 10-byte version) and put the results in p_buf @param p_cdio the CD object to be acted upon. @param p_buf pointer to location to store mode sense information @param i_size number of bytes allocated to p_buf @param page which "page" of the mode sense command we are interested in @return DRIVER_OP_SUCCESS if we ran the command ok. */ driver_return_code_t mmc_mode_sense( CdIo_t *p_cdio, /*out*/ void *p_buf, unsigned int i_size, int page); /** Set the drive speed in CD-ROM speed units. @param p_cdio CD structure set by cdio_open(). @param i_drive_speed speed in CD-ROM speed units. Note this not Kbs as would be used in the MMC spec or in mmc_set_speed(). To convert CD-ROM speed units to Kbs, multiply the number by 176 (for raw data) and by 150 (for filesystem data). On many CD-ROM drives, specifying a value too large will result in using the fastest speed. @return the drive speed if greater than 0. -1 if we had an error. is -2 returned if this is not implemented for the current driver. @see cdio_set_speed and mmc_set_speed */ driver_return_code_t mmc_set_drive_speed( const CdIo_t *p_cdio, int i_drive_speed ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CDIO_MMC_HL_CMDS_H_ */ /* * Local variables: * c-file-style: "gnu" * tab-width: 8 * indent-tabs-mode: nil * End: */