From: Christian P. <cp...@us...> - 2005-02-17 14:28:23
|
Update of /cvsroot/pclasses/pclasses2/src/System In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23674/src/System Modified Files: CdRomDevice.linux.cpp Log Message: Cleanup of CdRomDevice and TrackInfo. Index: CdRomDevice.linux.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/System/CdRomDevice.linux.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- CdRomDevice.linux.cpp 14 Feb 2005 16:46:46 -0000 1.5 +++ CdRomDevice.linux.cpp 17 Feb 2005 14:28:08 -0000 1.6 @@ -27,6 +27,20 @@ namespace System { +void lba2msf(size_t lba, uint8_t *msf) +{ +#ifndef CD_MSF_OFFSET +# define CD_MSF_OFFSET 150 +#endif + + lba += CD_MSF_OFFSET; // msf addressing starts a lba=150 + lba &= 0xffffff; // only 24bit ... + msf[0] = lba / (CD_SECS*CD_FRAMES); + lba %= CD_SECS*CD_FRAMES; + msf[1] = lba / CD_FRAMES; + msf[2] = lba % CD_FRAMES; +} + CdRomDevice::CdRomDevice(const std::string& path, AccessMode access, ShareMode share) throw(IO::IOError) : StorageDevice(path, access, share) @@ -87,7 +101,7 @@ status = DiscOk; break; case CDS_NO_INFO: - /* fall through */ + // fall through default: status = NoInfo; } @@ -124,7 +138,7 @@ break; case CDS_NO_DISC: case CDS_NO_INFO: - /* fall through */ + // fall through default: status = DiscUnknown; } @@ -149,10 +163,16 @@ throw IO::IOError(errno, "ioctl error on device", P_SOURCEINFO); } -void CdRomDevice::play(const Track& from, const Track& to) throw(IO::IOError) +void CdRomDevice::play(const TrackInfo& from, const TrackInfo& to) throw(IO::IOError) { - play(from.startMinute(), from.startSecond(), from.startFrame(), - to.endMinute(), to.endSecond(), to.endFrame()); + uint8_t startMsf[3]; + uint8_t endMsf[3]; + + lba2msf(from.lba(), startMsf); + lba2msf(to.lba(), endMsf); + + play(startMsf[0], startMsf[1], startMsf[2], + endMsf[0], endMsf[1], endMsf[2]); } void CdRomDevice::stop() throw(IO::IOError) @@ -198,7 +218,7 @@ throw IO::IOError(errno, "ioctl error on device", P_SOURCEINFO); } -CdRomDevice::TrackList CdRomDevice::readTOC() throw(IO::IOError) +CdRomDevice::TrackList CdRomDevice::readTracks() throw(IO::IOError) { struct cdrom_tochdr hdr; @@ -233,89 +253,45 @@ for(i = 1; i < ti; ++i); { int length = toc_entries[i].cdte_addr.lba - toc_entries[i-1].cdte_addr.lba; - toc.push_back(Track(i, - toc_entries[i-1].cdte_ctrl & CDROM_DATA_TRACK ? Track::Data : Track::Audio, + toc.push_back(TrackInfo(i, + toc_entries[i-1].cdte_ctrl & CDROM_DATA_TRACK ? + TrackInfo::Data : TrackInfo::Audio, toc_entries[i-1].cdte_addr.lba, length)); } return toc; } -void lba2msf(size_t lba, uint8_t *msf) -{ -#ifndef CD_MSF_OFFSET -# define CD_MSF_OFFSET 150 -#endif - - lba += CD_MSF_OFFSET; // msf addressing starts a lba=150 - lba &= 0xffffff; // only 24bit ... - msf[0] = lba / (CD_SECS*CD_FRAMES); - lba %= CD_SECS*CD_FRAMES; - msf[1] = lba / CD_FRAMES; - msf[2] = lba % CD_FRAMES; -} - -CdRomDevice::Track::Track(unsigned int num, Type type, size_t lba, size_t size) -: _num(num), _type(type), _lba(lba), _size(size) +CdRomDevice::TrackInfo::TrackInfo(unsigned int num, Format f, size_t lba, size_t length) +: _num(num), _format(f), _lba(lba), _length(length) { - lba2msf(lba, _startMsf); - lba2msf(lba + size, _endMsf); } -CdRomDevice::Track::~Track() +CdRomDevice::TrackInfo::~TrackInfo() { } -unsigned int CdRomDevice::Track::num() const throw() +unsigned int CdRomDevice::TrackInfo::num() const throw() { return _num; } -CdRomDevice::Track::Type CdRomDevice::Track::type() const +CdRomDevice::TrackInfo::Format CdRomDevice::TrackInfo::format() const throw() { - return _type; + return _format; } -size_t CdRomDevice::Track::lba() const throw() +size_t CdRomDevice::TrackInfo::lba() const throw() { return _lba; } -size_t CdRomDevice::Track::size() const throw() -{ - return _size; -} - -uint8_t CdRomDevice::Track::startMinute() const throw() -{ - return _startMsf[0]; -} - -uint8_t CdRomDevice::Track::startSecond() const throw() -{ - return _startMsf[1]; -} - -uint8_t CdRomDevice::Track::startFrame() const throw() -{ - return _startMsf[2]; -} - -uint8_t CdRomDevice::Track::endMinute() const throw() -{ - return _endMsf[0]; -} - -uint8_t CdRomDevice::Track::endSecond() const throw() +size_t CdRomDevice::TrackInfo::length() const throw() { - return _endMsf[1]; + return _length; } -uint8_t CdRomDevice::Track::endFrame() const throw() -{ - return _endMsf[2]; -} } // !namespace System |