summaryrefslogtreecommitdiff
path: root/plugins/dfcdrom/cdr.h
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-10 06:54:11 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-07-10 06:54:11 +0000
commitf7823bc1646f1885bd9a0a19a9645c0e2cb884bd (patch)
tree15f115383205088b3fca3f4c41a319e1da183ac7 /plugins/dfcdrom/cdr.h
parentfcf4fb0933140db08c7bc094abc9edb271c13359 (diff)
downloadpcsxr-f7823bc1646f1885bd9a0a19a9645c0e2cb884bd.tar.gz
I was really stupid... just use libcdio and everything's fine, no need to deal with different OSes at all.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@54442 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom/cdr.h')
-rw-r--r--plugins/dfcdrom/cdr.h79
1 files changed, 44 insertions, 35 deletions
diff --git a/plugins/dfcdrom/cdr.h b/plugins/dfcdrom/cdr.h
index e127f89b..32092122 100644
--- a/plugins/dfcdrom/cdr.h
+++ b/plugins/dfcdrom/cdr.h
@@ -52,25 +52,14 @@
#if defined (__linux__)
#include <linux/cdrom.h>
+#include <scsi/scsi.h>
+#include <scsi/sg.h>
+
#ifndef CDROMSETSPINDOWN
#define CDROMSETSPINDOWN 0x531e
#endif
-#define DEV_DEF "/dev/cdrom"
-
-#elif defined (__sun)
-
-#include <sys/cdio.h>
-#include <sys/scsi/scsi.h>
-
-#define CD_SECS 60
-#define CD_FRAMES 75
-#define CD_FRAMESIZE_RAW 2352
-#define CD_FRAMESIZE_SUB 96
-#define CD_MSF_OFFSET 150
-/* The CD-ROM device name seems to vary on different computers on Solaris, so
- let user set this. */
-#define DEV_DEF ""
+#define DEV_DEF "/dev/cdrom"
#else
@@ -90,19 +79,13 @@ struct cdrom_msf {
#define CD_MSF_OFFSET 150
#if defined (__FreeBSD__)
-
-#include <sys/ata.h>
-#include <sys/cdio.h>
-#include <sys/cdrio.h>
-#include <sys/disklabel.h>
-
#define DEV_DEF "/dev/acd0"
-
#else
-
#define DEV_DEF ""
-#define USE_NULL 1
+#endif
+#ifndef USE_LIBCDIO
+#define USE_NULL 1
#endif
#endif
@@ -142,18 +125,32 @@ extern long SpinDown;
#define SPINDOWN_16MIN 0x0E
#define SPINDOWN_32MIN 0x0F
-#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */
-#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */
+typedef struct _MMC_READ_CD {
+ unsigned char Code; // 0xBE
-typedef union {
- struct cdrom_msf msf;
- unsigned char buf[CD_FRAMESIZE_RAW];
-} crdata;
+ unsigned char RelativeAddress : 1;
+ unsigned char : 1;
+ unsigned char ExpectedSectorType : 3;
+ unsigned char Lun : 3;
-typedef struct {
- crdata cr;
- int ret;
-} CacheData;
+ unsigned char StartingLBA[4];
+ unsigned char TransferBlocks[3];
+
+ unsigned char : 1;
+ unsigned char ErrorFlags : 2;
+ unsigned char IncludeEDC : 1;
+ unsigned char IncludeUserData : 1;
+ unsigned char HeaderCode : 2;
+ unsigned char IncludeSyncData : 1;
+
+ unsigned char SubChannelSelection : 3;
+ unsigned char : 5;
+
+ unsigned char Ctrl;
+} MMC_READ_CD;
+
+#define itob(i) ((i)/10*16 + (i)%10) /* u_char to BCD */
+#define btoi(b) ((b)/16*10 + (b)%16) /* BCD to u_char */
struct CdrStat {
unsigned long Type;
@@ -173,6 +170,16 @@ struct SubQ {
char res1[72];
};
+typedef union {
+ struct cdrom_msf msf;
+ unsigned char buf[CD_FRAMESIZE_RAW];
+} crdata;
+
+typedef struct {
+ crdata cr;
+ int ret;
+} CacheData;
+
long ReadNormal();
long ReadThreaded();
unsigned char* GetBNormal();
@@ -190,7 +197,9 @@ void SaveConf();
#endif
unsigned int msf_to_lba(char m, char s, char f);
-void lba_to_msf(unsigned int s, char *msf);
+void lba_to_msf(unsigned int s, unsigned char *msf);
+void DecodeRawSubData(unsigned char *subbuffer);
+unsigned short calcCrc(unsigned char *d, int len);
int OpenCdHandle();
void CloseCdHandle();