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

Go to the source code of this file.

Functions

 CESTER_BODY (static int stopCommand(uint8_t command, uint8_t *cause1, uint8_t *stat1, uint32_t *ackTime, uint8_t *cause2, uint8_t *stat2, uint32_t *completeTime) { uint8_t response[16];*cause1=*stat1=*cause2=*stat2=0xff;*ackTime=*completeTime=0;initializeTime();CDROM_REG0=0;CDROM_REG1=command;uint32_t timeout=1000000;if(!waitCDRomIRQWithTimeout(&timeout)) return 0;*ackTime=timeout;*cause1=ackCDRomCause();readResponse(response);*stat1=response[0];timeout=10000000;if(!waitCDRomIRQWithTimeout(&timeout)) return 0;*completeTime=timeout;*cause2=ackCDRomCause();readResponse(response);*stat2=response[0];return 1;} static uint8_t stopNopStat() { uint8_t response[16];CDROM_REG0=0;CDROM_REG1=CDL_NOP;waitCDRomIRQ();ackCDRomCause();readResponse(response);return response[0];})
 
 ramsyscall_printf ("Stop while spinning: ack %i stat %02x in %ius, complete %i stat %02x in %ius, Nop stat %02x\n", cause1, stat1, ackTime, cause2, stat2, completeTime, nopStat)
 
 cester_assert_true (ok)
 
 cester_assert_uint_eq (3, cause1)
 
 cester_assert_uint_eq (0x02, stat1)
 
 cester_assert_uint_lt (ackTime, 10000)
 
 cester_assert_uint_eq (2, cause2)
 
 cester_assert_uint_eq (0x00, stat2)
 
 cester_assert_uint_ge (completeTime, 300000)
 
 cester_assert_uint_lt (completeTime, 600000)
 
 cester_assert_uint_eq (0x00, nopStat)
 
 CESTER_TEST (cdlStopStopped, test_instance, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} uint8_t cause1, stat1, cause2, stat2;uint32_t ackTime, completeTime;int setupOk=stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime);if(!setupOk) { cester_assert_true(setupOk);return;} int ok=stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime);ramsyscall_printf("Stop while stopped: ack %i stat %02x in %ius, complete %i stat %02x in %ius\n", cause1, stat1, ackTime, cause2, stat2, completeTime);cester_assert_true(ok);cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0x00, stat1);cester_assert_uint_eq(2, cause2);cester_assert_uint_eq(0x00, stat2);cester_assert_uint_lt(completeTime, 10000);) CESTER_TEST(cdlStandbyAfterStop
 
 if (!resetDone)
 
 ramsyscall_printf ("Standby after Stop: ack %i stat %02x in %ius, complete %i stat %02x in %ius, Nop stat %02x\n", cause1, stat1, ackTime, cause2, stat2, completeTime, nopStat)
 
 cester_assert_uint_eq (0x00, stat1)
 
 cester_assert_uint_eq (0x02, stat2)
 
 cester_assert_uint_ge (completeTime, 1500000)
 
 cester_assert_uint_lt (completeTime, 4000000)
 
 cester_assert_uint_eq (0x02, nopStat)
 

Variables

uint8_t cause1
 
uint8_t stat1
 
uint8_t cause2
 
uint8_t stat2
 
uint32_t ackTime
 
uint32_t completeTime
 
int ok = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime)
 
uint8_t nopStat = stopNopStat()
 
 test_instance
 
int resetDone = resetCDRom()
 
int setupOk = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime)
 

Function Documentation

◆ cester_assert_true()

cester_assert_true ( ok  )

◆ cester_assert_uint_eq() [1/8]

cester_assert_uint_eq ( 0x00  ,
nopStat   
)

◆ cester_assert_uint_eq() [2/8]

cester_assert_uint_eq ( 0x00  ,
stat1   
)

◆ cester_assert_uint_eq() [3/8]

cester_assert_uint_eq ( 0x00  ,
stat2   
)

◆ cester_assert_uint_eq() [4/8]

cester_assert_uint_eq ( 0x02  ,
nopStat   
)

◆ cester_assert_uint_eq() [5/8]

cester_assert_uint_eq ( 0x02  ,
stat1   
)

◆ cester_assert_uint_eq() [6/8]

cester_assert_uint_eq ( 0x02  ,
stat2   
)

◆ cester_assert_uint_eq() [7/8]

cester_assert_uint_eq ( 2  ,
cause2   
)

◆ cester_assert_uint_eq() [8/8]

cester_assert_uint_eq ( 3  ,
cause1   
)

◆ cester_assert_uint_ge() [1/2]

cester_assert_uint_ge ( completeTime  ,
1500000   
)

◆ cester_assert_uint_ge() [2/2]

cester_assert_uint_ge ( completeTime  ,
300000   
)

◆ cester_assert_uint_lt() [1/3]

cester_assert_uint_lt ( ackTime  ,
10000   
)

◆ cester_assert_uint_lt() [2/3]

cester_assert_uint_lt ( completeTime  ,
4000000   
)

◆ cester_assert_uint_lt() [3/3]

cester_assert_uint_lt ( completeTime  ,
600000   
)

◆ CESTER_BODY()

CESTER_BODY ( static int stopCommand(uint8_t command, uint8_t *cause1, uint8_t *stat1, uint32_t *ackTime, uint8_t *cause2, uint8_t *stat2, uint32_t *completeTime) { uint8_t response[16]; *cause1= *stat1= *cause2= *stat2=0xff; *ackTime= *completeTime=0;initializeTime();CDROM_REG0=0;CDROM_REG1=command;uint32_t timeout=1000000;if(!waitCDRomIRQWithTimeout(&timeout)) return 0; *ackTime=timeout; *cause1=ackCDRomCause();readResponse(response); *stat1=response[0];timeout=10000000;if(!waitCDRomIRQWithTimeout(&timeout)) return 0; *completeTime=timeout; *cause2=ackCDRomCause();readResponse(response); *stat2=response[0];return 1;} static uint8_t stopNopStat() { uint8_t response[16];CDROM_REG0=0;CDROM_REG1=CDL_NOP;waitCDRomIRQ();ackCDRomCause();readResponse(response);return response[0];}  )

◆ CESTER_TEST()

CESTER_TEST ( cdlStopStopped  ,
test_instance  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } uint8_t cause1,
stat1  ,
cause2  ,
stat2;uint32_t  ackTime,
completeTime;int  setupOk = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime); if (!setupOk) { cester_assert_true(setupOk); return; } int ok = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime); ramsyscall_printf("Stop while stopped: ack %i stat %02x in %ius, complete %i stat %02x in %ius\n", cause1, stat1,                      ackTime, cause2, stat2, completeTime); cester_assert_true(ok); cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(0x00, stat1); cester_assert_uint_eq(2, cause2); cester_assert_uint_eq(0x00, stat2); cester_assert_uint_lt(completeTime, 10000); 
)

◆ if()

if ( !  resetDone)

◆ ramsyscall_printf() [1/2]

ramsyscall_printf ( "Standby after Stop: ack %i stat %02x in %  ius,
complete %i stat %02x in %  ius,
Nop stat %02x\n"  ,
cause1  ,
stat1  ,
ackTime  ,
cause2  ,
stat2  ,
completeTime  ,
nopStat   
)

◆ ramsyscall_printf() [2/2]

ramsyscall_printf ( "Stop while spinning: ack %i stat %02x in %  ius,
complete %i stat %02x in %  ius,
Nop stat %02x\n"  ,
cause1  ,
stat1  ,
ackTime  ,
cause2  ,
stat2  ,
completeTime  ,
nopStat   
)

Variable Documentation

◆ ackTime

uint32_t ackTime

◆ cause1

uint8_t cause1

◆ cause2

uint8_t cause2

◆ completeTime

uint32_t completeTime

◆ nopStat

uint8_t nopStat = stopNopStat()

◆ ok

int ok = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime)

◆ resetDone

int resetDone = resetCDRom()

◆ setupOk

int setupOk = stopCommand(CDL_STOP, &cause1, &stat1, &ackTime, &cause2, &stat2, &completeTime)

◆ stat1

uint8_t stat1

◆ stat2

uint8_t stat2

◆ test_instance

test_instance