Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Functions | Variables
cdlid.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 CESTER_TEST (cdlId, test_instance, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_GETID;uint32_t ackTime=waitCDRomIRQ();uint8_t cause1=ackCDRomCause();uint8_t ctrl1=CDROM_REG0 &~3;uint8_t response1[16];uint8_t responseSize1=readResponse(response1);uint8_t ctrl2=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause1b=CDROM_REG3_UC;uint32_t completeTime=waitCDRomIRQ();uint8_t cause2=ackCDRomCause();uint8_t ctrl3=CDROM_REG0 &~3;uint8_t response2[16];uint8_t responseSize2=readResponse(response2);uint8_t ctrl4=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause2b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(2, cause2);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(2, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(8, responseSize2);cester_assert_uint_eq(0x38, ctrl1);cester_assert_uint_eq(0x18, ctrl2);cester_assert_uint_eq(0x38, ctrl3);cester_assert_uint_eq(0x18, ctrl4);cester_assert_uint_ge(ackTime, 500);cester_assert_uint_lt(ackTime, 7000);ramsyscall_printf("Basic cdlId, ack in %ius, complete in %ius\n", ackTime, completeTime);ramsyscall_printf("Full response: %02x %02x %02x %02x %02x %02x %02x %02x\n", response2[0], response2[1], response2[2], response2[3], response2[4], response2[5], response2[6], response2[7]);) CESTER_TEST(cdlIdTooManyArgs
 
 if (!resetDone)
 
 initializeTime ()
 
 cester_assert_uint_eq (5, cause1)
 
 cester_assert_uint_eq (0xe0, cause1b)
 
 cester_assert_uint_eq (3, response1[0])
 
 cester_assert_uint_eq (0x20, response1[1])
 
 cester_assert_uint_eq (2, responseSize1)
 
 cester_assert_uint_eq (0x38, ctrl1)
 
 cester_assert_uint_eq (0x18, ctrl2)
 
 cester_assert_uint_ge (errorTime, 500)
 
 cester_assert_uint_lt (errorTime, 7000)
 
 ramsyscall_printf ("Basic cdlId with too many args, errored in %ius\n", errorTime)
 
 CESTER_TEST (cdlIdReads12BytesThenGetTN, test_instance, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_GETID;uint32_t ackTime=waitCDRomIRQ();uint8_t cause1=ackCDRomCause();uint8_t ctrl1=CDROM_REG0 &~3;uint8_t response1[16];uint8_t responseSize1=readResponse(response1);uint8_t ctrl2=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause1b=CDROM_REG3_UC;uint32_t completeTime=waitCDRomIRQ();uint8_t cause2=ackCDRomCause();uint8_t ctrl3=CDROM_REG0 &~3;uint8_t response2[12];for(unsigned i=0;i< 12;i++) { response2[i]=CDROM_REG1;} uint8_t ctrl4=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause2b=CDROM_REG3_UC;CDROM_REG0=0;CDROM_REG1=CDL_GETTN;waitCDRomIRQ();uint8_t cause3=ackCDRomCause();uint8_t response3[16];uint8_t responseSize3=readResponse(response3);uint8_t ctrl5=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause3b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(2, cause2);cester_assert_uint_eq(3, cause3);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(0xe0, cause3b);cester_assert_uint_eq(2, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(0x38, ctrl1);cester_assert_uint_eq(0x18, ctrl2);cester_assert_uint_eq(0x38, ctrl3);cester_assert_uint_eq(0x38, ctrl4);cester_assert_uint_eq(0x18, ctrl5);cester_assert_uint_ge(ackTime, 500);cester_assert_uint_lt(ackTime, 7000);cester_assert_uint_eq(2, response3[0]);cester_assert_uint_eq(1, response3[1]);cester_assert_uint_eq(0x25, response3[2]);cester_assert_uint_eq(3, responseSize3);ramsyscall_printf("cdlId reading 12 bytes then cdlGetTN, ack in %ius, complete in %ius\n", ackTime, completeTime);) CESTER_TEST(cdlIdReads17BytesThenGetTN
 
 for (unsigned i=0;i< 17;i++) == s_upload[i]) matches_reserved++
 
 waitCDRomIRQ ()
 
 cester_assert_uint_eq (3, cause1)
 
 cester_assert_uint_eq (2, cause2)
 
 cester_assert_uint_eq (3, cause3)
 
 cester_assert_uint_eq (0xe0, cause2b)
 
 cester_assert_uint_eq (0xe0, cause3b)
 
 cester_assert_uint_eq (2, response1[0])
 
 cester_assert_uint_eq (1, responseSize1)
 
 cester_assert_uint_eq (0x38, ctrl3)
 
 cester_assert_uint_eq (0x38, ctrl4)
 
 cester_assert_uint_eq (0x18, ctrl5)
 
 cester_assert_uint_ge (ackTime, 500)
 
 cester_assert_uint_lt (ackTime, 7000)
 
 cester_assert_uint_eq (2, response3[0])
 
 cester_assert_uint_eq (1, response3[1])
 
 cester_assert_uint_eq (0x25, response3[2])
 
 cester_assert_uint_eq (3, responseSize3)
 
 ramsyscall_printf ("cdlId reading 17 bytes then cdlGetTN, ack in %ius, complete in %ius\n", ackTime, completeTime)
 

Variables

 test_instance
 
int resetDone = resetCDRom()
 
 CDROM_REG0 = 0
 
 CDROM_REG2 = 0
 
 CDROM_REG1 = CDL_GETID
 
uint32_t errorTime = waitCDRomIRQ()
 
uint8_t cause1 = ackCDRomCause()
 
uint8_t ctrl1 = CDROM_REG0 & ~3
 
uint8_t response1 [16]
 
uint8_t responseSize1 = readResponse(response1)
 
uint8_t ctrl2 = CDROM_REG0 & ~3
 
uint8_t cause1b = CDROM_REG3_UC
 
uint32_t ackTime = waitCDRomIRQ()
 
uint32_t completeTime = waitCDRomIRQ()
 
uint8_t cause2 = ackCDRomCause()
 
uint8_t ctrl3 = CDROM_REG0 & ~3
 
uint8_t response2 [17]
 
uint8_t ctrl4 = CDROM_REG0 & ~3
 
uint8_t cause2b = CDROM_REG3_UC
 
uint8_t cause3 = ackCDRomCause()
 
uint8_t response3 [16]
 
uint8_t responseSize3 = readResponse(response3)
 
uint8_t ctrl5 = CDROM_REG0 & ~3
 
uint8_t cause3b = CDROM_REG3_UC
 

Function Documentation

◆ cester_assert_uint_eq() [1/21]

cester_assert_uint_eq ( 0x18  ,
ctrl2   
)

◆ cester_assert_uint_eq() [2/21]

cester_assert_uint_eq ( 0x18  ,
ctrl5   
)

◆ cester_assert_uint_eq() [3/21]

cester_assert_uint_eq ( 0x20  ,
response1  [1] 
)

◆ cester_assert_uint_eq() [4/21]

cester_assert_uint_eq ( 0x25  ,
response3  [2] 
)

◆ cester_assert_uint_eq() [5/21]

cester_assert_uint_eq ( 0x38  ,
ctrl1   
)

◆ cester_assert_uint_eq() [6/21]

cester_assert_uint_eq ( 0x38  ,
ctrl3   
)

◆ cester_assert_uint_eq() [7/21]

cester_assert_uint_eq ( 0x38  ,
ctrl4   
)

◆ cester_assert_uint_eq() [8/21]

cester_assert_uint_eq ( 0xe0  ,
cause1b   
)

◆ cester_assert_uint_eq() [9/21]

cester_assert_uint_eq ( 0xe0  ,
cause2b   
)

◆ cester_assert_uint_eq() [10/21]

cester_assert_uint_eq ( 0xe0  ,
cause3b   
)

◆ cester_assert_uint_eq() [11/21]

cester_assert_uint_eq ( 1  ,
response3  [1] 
)

◆ cester_assert_uint_eq() [12/21]

cester_assert_uint_eq ( 1  ,
responseSize1   
)

◆ cester_assert_uint_eq() [13/21]

cester_assert_uint_eq ( 2  ,
cause2   
)

◆ cester_assert_uint_eq() [14/21]

cester_assert_uint_eq ( 2  ,
response1  [0] 
)

◆ cester_assert_uint_eq() [15/21]

cester_assert_uint_eq ( 2  ,
response3  [0] 
)

◆ cester_assert_uint_eq() [16/21]

cester_assert_uint_eq ( 2  ,
responseSize1   
)

◆ cester_assert_uint_eq() [17/21]

cester_assert_uint_eq ( 3  ,
cause1   
)

◆ cester_assert_uint_eq() [18/21]

cester_assert_uint_eq ( 3  ,
cause3   
)

◆ cester_assert_uint_eq() [19/21]

cester_assert_uint_eq ( 3  ,
response1  [0] 
)

◆ cester_assert_uint_eq() [20/21]

cester_assert_uint_eq ( 3  ,
responseSize3   
)

◆ cester_assert_uint_eq() [21/21]

cester_assert_uint_eq ( 5  ,
cause1   
)

◆ cester_assert_uint_ge() [1/2]

cester_assert_uint_ge ( ackTime  ,
500   
)

◆ cester_assert_uint_ge() [2/2]

cester_assert_uint_ge ( errorTime  ,
500   
)

◆ cester_assert_uint_lt() [1/2]

cester_assert_uint_lt ( ackTime  ,
7000   
)

◆ cester_assert_uint_lt() [2/2]

cester_assert_uint_lt ( errorTime  ,
7000   
)

◆ CESTER_TEST() [1/2]

CESTER_TEST ( cdlId  ,
test_instance  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_GETID; uint32_t ackTime = waitCDRomIRQ(); uint8_t cause1 = ackCDRomCause(); uint8_t ctrl1 = CDROM_REG0 & ~3; uint8_t response1[16]; uint8_t responseSize1 = readResponse(response1); uint8_t ctrl2 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause1b = CDROM_REG3_UC; uint32_t completeTime = waitCDRomIRQ(); uint8_t cause2 = ackCDRomCause(); uint8_t ctrl3 = CDROM_REG0 & ~3; uint8_t response2[16]; uint8_t responseSize2 = readResponse(response2); uint8_t ctrl4 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause2b = CDROM_REG3_UC; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(2, cause2); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(0xe0, cause2b); cester_assert_uint_eq(2, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(8, responseSize2); cester_assert_uint_eq(0x38, ctrl1); cester_assert_uint_eq(0x18, ctrl2); cester_assert_uint_eq(0x38, ctrl3); cester_assert_uint_eq(0x18, ctrl4); cester_assert_uint_ge(ackTime, 500); cester_assert_uint_lt(ackTime, 7000); ramsyscall_printf("Basic cdlId, ack in %ius, complete in %ius\n", ackTime, completeTime); ramsyscall_printf("Full response: %02x %02x %02x %02x %02x %02x %02x %02x\n",        response2[0], response2[1], response2[2], response2[3],        response2[4], response2[5], response2[6], response2[7]); 
)

◆ CESTER_TEST() [2/2]

CESTER_TEST ( cdlIdReads12BytesThenGetTN  ,
test_instance  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_GETID; uint32_t ackTime = waitCDRomIRQ(); uint8_t cause1 = ackCDRomCause(); uint8_t ctrl1 = CDROM_REG0 & ~3; uint8_t response1[16]; uint8_t responseSize1 = readResponse(response1); uint8_t ctrl2 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause1b = CDROM_REG3_UC; uint32_t completeTime = waitCDRomIRQ(); uint8_t cause2 = ackCDRomCause(); uint8_t ctrl3 = CDROM_REG0 & ~3; uint8_t response2[12]; for (unsigned i = 0; i < 12; i++) { response2[i] = CDROM_REG1; } uint8_t ctrl4 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause2b = CDROM_REG3_UC; CDROM_REG0 = 0; CDROM_REG1 = CDL_GETTN; waitCDRomIRQ(); uint8_t cause3 = ackCDRomCause(); uint8_t response3[16]; uint8_t responseSize3 = readResponse(response3); uint8_t ctrl5 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause3b = CDROM_REG3_UC; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(2, cause2); cester_assert_uint_eq(3, cause3); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(0xe0, cause2b); cester_assert_uint_eq(0xe0, cause3b); cester_assert_uint_eq(2, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(0x38, ctrl1); cester_assert_uint_eq(0x18, ctrl2); cester_assert_uint_eq(0x38, ctrl3); cester_assert_uint_eq(0x38, ctrl4); cester_assert_uint_eq(0x18, ctrl5); cester_assert_uint_ge(ackTime, 500); cester_assert_uint_lt(ackTime, 7000); cester_assert_uint_eq(2, response3[0]); cester_assert_uint_eq(1, response3[1]); cester_assert_uint_eq(0x25, response3[2]); cester_assert_uint_eq(3, responseSize3); ramsyscall_printf("cdlId reading 12 bytes then cdlGetTN, ack in %ius, complete in %ius\n", ackTime, completeTime); 
)

◆ for()

for ( ) == s_upload[i]) matches_reserved++

◆ if()

if ( !  resetDone)

◆ initializeTime()

initializeTime ( )

◆ ramsyscall_printf() [1/2]

ramsyscall_printf ( "Basic cdlId with too many  args,
errored in %ius\n"  ,
errorTime   
)

◆ ramsyscall_printf() [2/2]

ramsyscall_printf ( "cdlId reading 17 bytes then  cdlGetTN,
ack in %  ius,
complete in %ius\n"  ,
ackTime  ,
completeTime   
)

◆ waitCDRomIRQ()

waitCDRomIRQ ( )

Variable Documentation

◆ ackTime

uint32_t ackTime = waitCDRomIRQ()

◆ cause1

uint8_t cause1 = ackCDRomCause()

◆ cause1b

uint8_t cause1b = CDROM_REG3_UC

◆ cause2

uint8_t cause2 = ackCDRomCause()

◆ cause2b

uint8_t cause2b = CDROM_REG3_UC

◆ cause3

uint8_t cause3 = ackCDRomCause()

◆ cause3b

uint8_t cause3b = CDROM_REG3_UC

◆ CDROM_REG0

CDROM_REG0 = 0

◆ CDROM_REG1

CDROM_REG1 = CDL_GETID

◆ CDROM_REG2

CDROM_REG2 = 0

◆ completeTime

uint32_t completeTime = waitCDRomIRQ()

◆ ctrl1

uint8_t ctrl1 = CDROM_REG0 & ~3

◆ ctrl2

uint8_t ctrl2 = CDROM_REG0 & ~3

◆ ctrl3

uint8_t ctrl3 = CDROM_REG0 & ~3

◆ ctrl4

uint8_t ctrl4 = CDROM_REG0 & ~3

◆ ctrl5

uint8_t ctrl5 = CDROM_REG0 & ~3

◆ errorTime

uint32_t errorTime = waitCDRomIRQ()

◆ resetDone

int resetDone = resetCDRom()

◆ response1

uint8_t response1[16]

◆ response2

uint8_t response2

◆ response3

uint8_t response3

◆ responseSize1

uint8_t responseSize1 = readResponse(response1)

◆ responseSize3

uint8_t responseSize3 = readResponse(response3)

◆ test_instance

test_instance