Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Functions | Variables
reading.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 (simpleReading, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int seekDone=seekLTo(0x20, 2, 0);if(!seekDone) { cester_assert_true(seekDone);return;} CDROM_REG0=0;CDROM_REG1=CDL_READN;uint8_t response[16];waitCDRomIRQ();uint8_t cause1=ackCDRomCause();readResponse(response);uint32_t sectorData[100];uint8_t causes[100];__builtin_memset(sectorData, 0, sizeof(sectorData));__builtin_memset(causes, 0, sizeof(causes));for(unsigned i=0;i< 100;i++) { waitCDRomIRQ();uint8_t cause=ackCDRomCause();causes[i]=cause;readResponse(response);if(cause !=1) break;uint8_t sector[2048];CDROM_REG0=0;CDROM_REG3=0x80;uint32_t dicr=DICR;dicr &=0x00ffffff;dicr|=0x00880000;DICR=dicr;DPCR|=0x8000;DMA_CTRL[DMA_CDROM].MADR=(uintptr_t) sector;DMA_CTRL[DMA_CDROM].BCR=(2048 > > 2)|0x10000;DMA_CTRL[DMA_CDROM].CHCR=0x11000000;while((DMA_CTRL[DMA_CDROM].CHCR &0x01000000) !=0);dicr=DICR;dicr &=0x00ffffff;dicr|=0x88000000;DICR=dicr;CDROM_REG3=0;uint32_t *sector32=(uint32_t *) sector;sectorData[i]=sector32[0];} CDROM_REG0=0;CDROM_REG1=CDL_PAUSE;waitCDRomIRQ();uint8_t cause2=ackCDRomCause();readResponse(response);waitCDRomIRQ();uint8_t cause3=ackCDRomCause();readResponse(response);uint32_t start=20 *60 *75;for(unsigned i=0;i< 100;i++) { cester_assert_uint_eq(start+i, sectorData[i]);cester_assert_uint_eq(1, causes[i]);} cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(3, cause2);cester_assert_uint_eq(2, cause3);) CESTER_TEST(setLocDuringSimpleReading
 
 if (!resetDone)
 
 waitCDRomIRQ ()
 
 readResponse (response)
 
 __builtin_memset (sectorData, 0, sizeof(sectorData))
 
 __builtin_memset (causes, 0, sizeof(causes))
 
 for (unsigned i=0;i< 100;i++)
 
 cester_assert_uint_eq (3, cause1)
 
 cester_assert_uint_eq (3, cause2)
 
 cester_assert_uint_eq (2, cause3)
 
 cester_assert_true (seekDone)
 
 CESTER_TEST (simpleReadingWithoutAck, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int seekDone=seekLTo(0x20, 0, 0);if(!seekDone) { cester_assert_true(seekDone);return;} CDROM_REG0=0;CDROM_REG1=CDL_READN;waitCDRomIRQ();ackCDRomCause();uint8_t response[16];readResponse(response);initializeTime();while(updateTime()<=500000);initializeTime();uint32_t time1=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;initializeTime();uint32_t time2=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;CDROM_REG0=0;CDROM_REG1=CDL_PAUSE;initializeTime();uint32_t time3=waitCDRomIRQ();uint8_t cause3=ackCDRomCause();uint8_t ctrl5=CDROM_REG0 &~3;uint8_t response3[16];uint8_t responseSize3=readResponse(response3);uint8_t ctrl6=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause3b=CDROM_REG3_UC;initializeTime();uint32_t time4=waitCDRomIRQ();uint8_t cause4=ackCDRomCause();uint8_t ctrl7=CDROM_REG0 &~3;uint8_t response4[16];uint8_t responseSize4=readResponse(response4);uint8_t ctrl8=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause4b=CDROM_REG3_UC;cester_assert_uint_eq(1, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(1, cause2);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(3, cause3);cester_assert_uint_eq(0xe0, cause3b);cester_assert_uint_eq(2, cause4);cester_assert_uint_eq(0xe0, cause4b);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_eq(0x38, ctrl5);cester_assert_uint_eq(0x18, ctrl6);cester_assert_uint_eq(0x38, ctrl7);cester_assert_uint_eq(0x18, ctrl8);cester_assert_uint_eq(0x22, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(0x22, response2[0]);cester_assert_uint_eq(1, responseSize2);cester_assert_uint_eq(0x22, response3[0]);cester_assert_uint_eq(1, responseSize3);cester_assert_uint_eq(2, response4[0]);cester_assert_uint_eq(1, responseSize4);ramsyscall_printf("Long read, ack then pause, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4);) CESTER_TEST(simpleReadingWithoutAckNorResponseReadThenInit
 
 ackCDRomCause ()
 
 initializeTime ()
 
 while (updateTime()<=500000)
 
 cester_assert_uint_eq (1, cause1)
 
 cester_assert_uint_eq (0xe0, cause1b)
 
 cester_assert_uint_eq (1, cause2)
 
 cester_assert_uint_eq (0xe0, cause2b)
 
 cester_assert_uint_eq (3, cause3)
 
 cester_assert_uint_eq (0xe0, cause3b)
 
 cester_assert_uint_eq (2, cause4)
 
 cester_assert_uint_eq (0xe0, cause4b)
 
 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_eq (0x38, ctrl5)
 
 cester_assert_uint_eq (0x18, ctrl6)
 
 cester_assert_uint_eq (0x38, ctrl7)
 
 cester_assert_uint_eq (0x18, ctrl8)
 
 cester_assert_uint_eq (0x22, response1[0])
 
 cester_assert_uint_eq (1, responseSize1)
 
 cester_assert_uint_eq (0x22, response2[0])
 
 cester_assert_uint_eq (1, responseSize2)
 
 cester_assert_uint_eq (0x22, response3[0])
 
 cester_assert_uint_eq (1, responseSize3)
 
 cester_assert_uint_eq (2, response4[0])
 
 cester_assert_uint_eq (1, responseSize4)
 
 ramsyscall_printf ("Long read, no response read, ack then init, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4)
 
 CESTER_TEST (simpleReadingWithoutAckThenInit, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int seekDone=seekLTo(0x20, 0, 0);if(!seekDone) { cester_assert_true(seekDone);return;} CDROM_REG0=0;CDROM_REG1=CDL_READN;waitCDRomIRQ();ackCDRomCause();uint8_t response[16];readResponse(response);initializeTime();while(updateTime()<=500000);initializeTime();uint32_t time1=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;initializeTime();uint32_t time2=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;CDROM_REG0=0;CDROM_REG1=CDL_INIT;initializeTime();uint32_t time3=waitCDRomIRQ();uint8_t cause3=ackCDRomCause();uint8_t ctrl5=CDROM_REG0 &~3;uint8_t response3[16];uint8_t responseSize3=readResponse(response3);uint8_t ctrl6=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause3b=CDROM_REG3_UC;initializeTime();uint32_t time4=waitCDRomIRQ();uint8_t cause4=ackCDRomCause();uint8_t ctrl7=CDROM_REG0 &~3;uint8_t response4[16];uint8_t responseSize4=readResponse(response4);uint8_t ctrl8=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause4b=CDROM_REG3_UC;cester_assert_uint_eq(1, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(1, cause2);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(3, cause3);cester_assert_uint_eq(0xe0, cause3b);cester_assert_uint_eq(2, cause4);cester_assert_uint_eq(0xe0, cause4b);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_eq(0x38, ctrl5);cester_assert_uint_eq(0x18, ctrl6);cester_assert_uint_eq(0x38, ctrl7);cester_assert_uint_eq(0x18, ctrl8);cester_assert_uint_eq(0x22, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(0x22, response2[0]);cester_assert_uint_eq(1, responseSize2);cester_assert_uint_eq(0x22, response3[0]);cester_assert_uint_eq(1, responseSize3);cester_assert_uint_eq(2, response4[0]);cester_assert_uint_eq(1, responseSize4);ramsyscall_printf("Long read, ack then init, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4);) CESTER_TEST(simpleReadingPauseWithoutAck
 
 while (1)
 
 cester_assert_uint_eq (2, cause2)
 
 cester_assert_uint_eq (2, response2[0])
 
 cester_assert_uint_ge (readyCount, 1)
 
 cester_assert_uint_le (readyCount, 2)
 
 ramsyscall_printf ("Long read, pause then ack, ack in %ius, complete in %ius\n", time1, time2)
 
 CESTER_TEST (simpleReadingNopQuery, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int seekDone=seekLTo(0x20, 0, 0);if(!seekDone) { cester_assert_true(seekDone);return;} CDROM_REG0=0;CDROM_REG1=CDL_READN;waitCDRomIRQ();ackCDRomCause();uint8_t response[16];readResponse(response);CDROM_REG0=0;CDROM_REG1=CDL_NOP;initializeTime();uint32_t time1=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;initializeTime();uint32_t time2=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;CDROM_REG0=0;CDROM_REG1=CDL_PAUSE;initializeTime();uint32_t time3=waitCDRomIRQ();uint8_t cause3=ackCDRomCause();uint8_t ctrl5=CDROM_REG0 &~3;uint8_t response3[16];uint8_t responseSize3=readResponse(response3);uint8_t ctrl6=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause3b=CDROM_REG3_UC;initializeTime();uint32_t time4=waitCDRomIRQ();uint8_t cause4=ackCDRomCause();uint8_t ctrl7=CDROM_REG0 &~3;uint8_t response4[16];uint8_t responseSize4=readResponse(response4);uint8_t ctrl8=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause4b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(1, cause2);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(3, cause3);cester_assert_uint_eq(0xe0, cause3b);cester_assert_uint_eq(2, cause4);cester_assert_uint_eq(0xe0, cause4b);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_eq(0x38, ctrl5);cester_assert_uint_eq(0x18, ctrl6);cester_assert_uint_eq(0x38, ctrl7);cester_assert_uint_eq(0x18, ctrl8);cester_assert_uint_eq(0x02, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(0x22, response2[0]);cester_assert_uint_eq(1, responseSize2);cester_assert_uint_eq(0x22, response3[0]);cester_assert_uint_eq(1, responseSize3);cester_assert_uint_eq(2, response4[0]);cester_assert_uint_eq(1, responseSize4);ramsyscall_printf("Long read, nop then pause, ack in %ius, ready in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4);) CESTER_TEST(simpleReadingNopSeriesQuery
 
 if (cause==1)
 
 while (cause==1)
 
 while (!gotInt1)
 
 cester_assert_uint_lt (countToRead, 80)
 
 cester_assert_uint_eq (0x02, response4[0])
 
 ramsyscall_printf ("Long read, nop series of %i then pause, ack in %ius, ready in %ius, ack in %ius, complete in %ius\n", countToRead, time1, time2, time3, time4)
 

Variables

 test_instances
 
int resetDone = resetCDRom()
 
int setModeDone = setMode(0x80)
 
int seekDone = seekLTo(0x20, 2, 0)
 
int setLocDone = 0
 
 CDROM_REG0 = 0
 
 CDROM_REG1 = CDL_READN
 
uint8_t response [16]
 
uint8_t cause1 = ackCDRomCause()
 
uint32_t sectorData [100]
 
uint8_t causes [100]
 
uint8_t cause2 = ackCDRomCause()
 
uint8_t cause3 = ackCDRomCause()
 
uint32_t start = 20 * 60 * 75
 
uint32_t time1 = waitCDRomIRQ()
 
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 time2 = waitCDRomIRQ()
 
uint8_t ctrl3 = CDROM_REG0 & ~3
 
uint8_t response2 [16]
 
uint8_t responseSize2 = readResponse(response2)
 
uint8_t ctrl4 = CDROM_REG0 & ~3
 
uint8_t cause2b = CDROM_REG3_UC
 
uint32_t time3 = waitCDRomIRQ()
 
uint8_t ctrl5 = CDROM_REG0 & ~3
 
uint8_t response3 [16]
 
uint8_t responseSize3 = readResponse(response3)
 
uint8_t ctrl6 = CDROM_REG0 & ~3
 
uint8_t cause3b = CDROM_REG3_UC
 
uint32_t time4 = waitCDRomIRQ()
 
uint8_t cause4 = ackCDRomCause()
 
uint8_t ctrl7 = CDROM_REG0 & ~3
 
uint8_t response4 [16]
 
uint8_t responseSize4 = readResponse(response4)
 
uint8_t ctrl8 = CDROM_REG0 & ~3
 
uint8_t cause4b = CDROM_REG3_UC
 
unsigned readyCount = 0
 
unsigned countToRead = 0
 
unsigned gotInt1 = 0
 
 do
 
uint8_t cause = 0
 

Function Documentation

◆ __builtin_memset() [1/2]

__builtin_memset ( causes  ,
0  ,
sizeof(causes)   
)

◆ __builtin_memset() [2/2]

__builtin_memset ( sectorData  ,
0  ,
sizeof(sectorData)   
)

◆ ackCDRomCause()

ackCDRomCause ( )

◆ cester_assert_true()

cester_assert_true ( seekDone  )

◆ cester_assert_uint_eq() [1/30]

cester_assert_uint_eq ( 0x02  ,
response4  [0] 
)

◆ cester_assert_uint_eq() [2/30]

cester_assert_uint_eq ( 0x18  ,
ctrl2   
)

◆ cester_assert_uint_eq() [3/30]

cester_assert_uint_eq ( 0x18  ,
ctrl4   
)

◆ cester_assert_uint_eq() [4/30]

cester_assert_uint_eq ( 0x18  ,
ctrl6   
)

◆ cester_assert_uint_eq() [5/30]

cester_assert_uint_eq ( 0x18  ,
ctrl8   
)

◆ cester_assert_uint_eq() [6/30]

cester_assert_uint_eq ( 0x22  ,
response1  [0] 
)

◆ cester_assert_uint_eq() [7/30]

cester_assert_uint_eq ( 0x22  ,
response2  [0] 
)

◆ cester_assert_uint_eq() [8/30]

cester_assert_uint_eq ( 0x22  ,
response3  [0] 
)

◆ cester_assert_uint_eq() [9/30]

cester_assert_uint_eq ( 0x38  ,
ctrl1   
)

◆ cester_assert_uint_eq() [10/30]

cester_assert_uint_eq ( 0x38  ,
ctrl3   
)

◆ cester_assert_uint_eq() [11/30]

cester_assert_uint_eq ( 0x38  ,
ctrl5   
)

◆ cester_assert_uint_eq() [12/30]

cester_assert_uint_eq ( 0x38  ,
ctrl7   
)

◆ cester_assert_uint_eq() [13/30]

cester_assert_uint_eq ( 0xe0  ,
cause1b   
)

◆ cester_assert_uint_eq() [14/30]

cester_assert_uint_eq ( 0xe0  ,
cause2b   
)

◆ cester_assert_uint_eq() [15/30]

cester_assert_uint_eq ( 0xe0  ,
cause3b   
)

◆ cester_assert_uint_eq() [16/30]

cester_assert_uint_eq ( 0xe0  ,
cause4b   
)

◆ cester_assert_uint_eq() [17/30]

cester_assert_uint_eq ( 1  ,
cause1   
)

◆ cester_assert_uint_eq() [18/30]

cester_assert_uint_eq ( 1  ,
cause2   
)

◆ cester_assert_uint_eq() [19/30]

cester_assert_uint_eq ( 1  ,
responseSize1   
)

◆ cester_assert_uint_eq() [20/30]

cester_assert_uint_eq ( 1  ,
responseSize2   
)

◆ cester_assert_uint_eq() [21/30]

cester_assert_uint_eq ( 1  ,
responseSize3   
)

◆ cester_assert_uint_eq() [22/30]

cester_assert_uint_eq ( 1  ,
responseSize4   
)

◆ cester_assert_uint_eq() [23/30]

cester_assert_uint_eq ( 2  ,
cause2   
)

◆ cester_assert_uint_eq() [24/30]

cester_assert_uint_eq ( 2  ,
cause3   
)

◆ cester_assert_uint_eq() [25/30]

cester_assert_uint_eq ( 2  ,
cause4   
)

◆ cester_assert_uint_eq() [26/30]

cester_assert_uint_eq ( 2  ,
response2  [0] 
)

◆ cester_assert_uint_eq() [27/30]

cester_assert_uint_eq ( 2  ,
response4  [0] 
)

◆ cester_assert_uint_eq() [28/30]

cester_assert_uint_eq ( 3  ,
cause1   
)

◆ cester_assert_uint_eq() [29/30]

cester_assert_uint_eq ( 3  ,
cause2   
)

◆ cester_assert_uint_eq() [30/30]

cester_assert_uint_eq ( 3  ,
cause3   
)

◆ cester_assert_uint_ge()

cester_assert_uint_ge ( readyCount  ,
1   
)

◆ cester_assert_uint_le()

cester_assert_uint_le ( readyCount  ,
2   
)

◆ cester_assert_uint_lt()

cester_assert_uint_lt ( countToRead  ,
80   
)

◆ CESTER_TEST() [1/4]

CESTER_TEST ( simpleReading  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0x80); if (!setModeDone) { cester_assert_true(setModeDone); return; } int seekDone = seekLTo(0x20, 2, 0); if (!seekDone) { cester_assert_true(seekDone); return; } CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; uint8_t response[16]; waitCDRomIRQ(); uint8_t cause1 = ackCDRomCause(); readResponse(response); uint32_t sectorData[100]; uint8_t causes[100]; __builtin_memset(sectorData, 0, sizeof(sectorData)); __builtin_memset(causes, 0, sizeof(causes)); for (unsigned i = 0; i < 100; i++) { waitCDRomIRQ(); uint8_t cause = ackCDRomCause(); causes[i] = cause; readResponse(response); if (cause != 1) break; uint8_t sector[2048]; CDROM_REG0 = 0; CDROM_REG3 = 0x80; uint32_t dicr = DICR; dicr &= 0x00ffffff; dicr |= 0x00880000; DICR = dicr; DPCR |= 0x8000; DMA_CTRL[DMA_CDROM].MADR = (uintptr_t)sector; DMA_CTRL[DMA_CDROM].BCR = (2048 >> 2) | 0x10000; DMA_CTRL[DMA_CDROM].CHCR = 0x11000000; while ((DMA_CTRL[DMA_CDROM].CHCR & 0x01000000) != 0); dicr = DICR; dicr &= 0x00ffffff; dicr |= 0x88000000; DICR = dicr; CDROM_REG3 = 0; uint32_t *sector32 = (uint32_t *)sector; sectorData[i] = sector32[0]; } CDROM_REG0 = 0; CDROM_REG1 = CDL_PAUSE; waitCDRomIRQ(); uint8_t cause2 = ackCDRomCause(); readResponse(response); waitCDRomIRQ(); uint8_t cause3 = ackCDRomCause(); readResponse(response); uint32_t start = 20 * 60 * 75; for (unsigned i = 0; i < 100; i++) { cester_assert_uint_eq(start + i, sectorData[i]); cester_assert_uint_eq(1, causes[i]); } cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(3, cause2); cester_assert_uint_eq(2, cause3); 
)

◆ CESTER_TEST() [2/4]

CESTER_TEST ( simpleReadingNopQuery  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0x80); if (!setModeDone) { cester_assert_true(setModeDone); return; } int seekDone = seekLTo(0x20, 0, 0); if (!seekDone) { cester_assert_true(seekDone); return; } CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; waitCDRomIRQ(); ackCDRomCause(); uint8_t response[16]; readResponse(response); CDROM_REG0 = 0; CDROM_REG1 = CDL_NOP; initializeTime(); uint32_t time1 = 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; initializeTime(); uint32_t time2 = 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; CDROM_REG0 = 0; CDROM_REG1 = CDL_PAUSE; initializeTime(); uint32_t time3 = waitCDRomIRQ(); uint8_t cause3 = ackCDRomCause(); uint8_t ctrl5 = CDROM_REG0 & ~3; uint8_t response3[16]; uint8_t responseSize3 = readResponse(response3); uint8_t ctrl6 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause3b = CDROM_REG3_UC; initializeTime(); uint32_t time4 = waitCDRomIRQ(); uint8_t cause4 = ackCDRomCause(); uint8_t ctrl7 = CDROM_REG0 & ~3; uint8_t response4[16]; uint8_t responseSize4 = readResponse(response4); uint8_t ctrl8 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause4b = CDROM_REG3_UC; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(1, cause2); cester_assert_uint_eq(0xe0, cause2b); cester_assert_uint_eq(3, cause3); cester_assert_uint_eq(0xe0, cause3b); cester_assert_uint_eq(2, cause4); cester_assert_uint_eq(0xe0, cause4b); 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_eq(0x38, ctrl5); cester_assert_uint_eq(0x18, ctrl6); cester_assert_uint_eq(0x38, ctrl7); cester_assert_uint_eq(0x18, ctrl8); cester_assert_uint_eq(0x02, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(0x22, response2[0]); cester_assert_uint_eq(1, responseSize2); cester_assert_uint_eq(0x22, response3[0]); cester_assert_uint_eq(1, responseSize3); cester_assert_uint_eq(2, response4[0]); cester_assert_uint_eq(1, responseSize4); ramsyscall_printf("Long read, nop then pause, ack in %ius, ready in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4); 
)

◆ CESTER_TEST() [3/4]

CESTER_TEST ( simpleReadingWithoutAck  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0x80); if (!setModeDone) { cester_assert_true(setModeDone); return; } int seekDone = seekLTo(0x20, 0, 0); if (!seekDone) { cester_assert_true(seekDone); return; } CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; waitCDRomIRQ(); ackCDRomCause(); uint8_t response[16]; readResponse(response); initializeTime(); while (updateTime() <= 500000); initializeTime(); uint32_t time1 = 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; initializeTime(); uint32_t time2 = 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; CDROM_REG0 = 0; CDROM_REG1 = CDL_PAUSE; initializeTime(); uint32_t time3 = waitCDRomIRQ(); uint8_t cause3 = ackCDRomCause(); uint8_t ctrl5 = CDROM_REG0 & ~3; uint8_t response3[16]; uint8_t responseSize3 = readResponse(response3); uint8_t ctrl6 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause3b = CDROM_REG3_UC; initializeTime(); uint32_t time4 = waitCDRomIRQ(); uint8_t cause4 = ackCDRomCause(); uint8_t ctrl7 = CDROM_REG0 & ~3; uint8_t response4[16]; uint8_t responseSize4 = readResponse(response4); uint8_t ctrl8 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause4b = CDROM_REG3_UC; cester_assert_uint_eq(1, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(1, cause2); cester_assert_uint_eq(0xe0, cause2b); cester_assert_uint_eq(3, cause3); cester_assert_uint_eq(0xe0, cause3b); cester_assert_uint_eq(2, cause4); cester_assert_uint_eq(0xe0, cause4b); 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_eq(0x38, ctrl5); cester_assert_uint_eq(0x18, ctrl6); cester_assert_uint_eq(0x38, ctrl7); cester_assert_uint_eq(0x18, ctrl8); cester_assert_uint_eq(0x22, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(0x22, response2[0]); cester_assert_uint_eq(1, responseSize2); cester_assert_uint_eq(0x22, response3[0]); cester_assert_uint_eq(1, responseSize3); cester_assert_uint_eq(2, response4[0]); cester_assert_uint_eq(1, responseSize4); ramsyscall_printf("Long read, ack then pause, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4); 
)

◆ CESTER_TEST() [4/4]

CESTER_TEST ( simpleReadingWithoutAckThenInit  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0x80); if (!setModeDone) { cester_assert_true(setModeDone); return; } int seekDone = seekLTo(0x20, 0, 0); if (!seekDone) { cester_assert_true(seekDone); return; } CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; waitCDRomIRQ(); ackCDRomCause(); uint8_t response[16]; readResponse(response); initializeTime(); while (updateTime() <= 500000); initializeTime(); uint32_t time1 = 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; initializeTime(); uint32_t time2 = 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; CDROM_REG0 = 0; CDROM_REG1 = CDL_INIT; initializeTime(); uint32_t time3 = waitCDRomIRQ(); uint8_t cause3 = ackCDRomCause(); uint8_t ctrl5 = CDROM_REG0 & ~3; uint8_t response3[16]; uint8_t responseSize3 = readResponse(response3); uint8_t ctrl6 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause3b = CDROM_REG3_UC; initializeTime(); uint32_t time4 = waitCDRomIRQ(); uint8_t cause4 = ackCDRomCause(); uint8_t ctrl7 = CDROM_REG0 & ~3; uint8_t response4[16]; uint8_t responseSize4 = readResponse(response4); uint8_t ctrl8 = CDROM_REG0 & ~3; CDROM_REG0 = 1; uint8_t cause4b = CDROM_REG3_UC; cester_assert_uint_eq(1, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(1, cause2); cester_assert_uint_eq(0xe0, cause2b); cester_assert_uint_eq(3, cause3); cester_assert_uint_eq(0xe0, cause3b); cester_assert_uint_eq(2, cause4); cester_assert_uint_eq(0xe0, cause4b); 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_eq(0x38, ctrl5); cester_assert_uint_eq(0x18, ctrl6); cester_assert_uint_eq(0x38, ctrl7); cester_assert_uint_eq(0x18, ctrl8); cester_assert_uint_eq(0x22, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(0x22, response2[0]); cester_assert_uint_eq(1, responseSize2); cester_assert_uint_eq(0x22, response3[0]); cester_assert_uint_eq(1, responseSize3); cester_assert_uint_eq(2, response4[0]); cester_assert_uint_eq(1, responseSize4); ramsyscall_printf("Long read, ack then init, ready1 in %ius, ready2 in %ius, ack in %ius, complete in %ius\n", time1, time2, time3, time4); 
)

◆ for()

for ( )

◆ if() [1/2]

if ( !  resetDone)

◆ if() [2/2]

if ( cause  = = 1)

◆ initializeTime()

initializeTime ( )

◆ ramsyscall_printf() [1/3]

ramsyscall_printf ( "Long  read,
no response  read,
ack then  init,
ready1 in %  ius,
ready2 in %  ius,
ack in %  ius,
complete in %ius\n"  ,
time1  ,
time2  ,
time3  ,
time4   
)

◆ ramsyscall_printf() [2/3]

ramsyscall_printf ( "Long  read,
nop series of %i then  pause,
ack in %  ius,
ready in %  ius,
ack in %  ius,
complete in %ius\n"  ,
countToRead  ,
time1  ,
time2  ,
time3  ,
time4   
)

◆ ramsyscall_printf() [3/3]

ramsyscall_printf ( "Long  read,
pause then  ack,
ack in %  ius,
complete in %ius\n"  ,
time1  ,
time2   
)

◆ readResponse()

readResponse ( response  )

◆ waitCDRomIRQ()

waitCDRomIRQ ( )

◆ while() [1/4]

while ( !  gotInt1)

◆ while() [2/4]

while ( 1  )

◆ while() [3/4]

while ( cause  = =1)

◆ while() [4/4]

while ( updateTime()<=  500000)

Variable Documentation

◆ cause

cause = 0

◆ 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

◆ cause4

uint8_t cause4 = ackCDRomCause()

◆ cause4b

uint8_t cause4b = CDROM_REG3_UC

◆ causes

uint8_t causes[100]

◆ CDROM_REG0

CDROM_REG0 = 0

◆ CDROM_REG1

CDROM_REG1 = CDL_READN

◆ countToRead

countToRead = 0

◆ 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

◆ ctrl6

uint8_t ctrl6 = CDROM_REG0 & ~3

◆ ctrl7

uint8_t ctrl7 = CDROM_REG0 & ~3

◆ ctrl8

uint8_t ctrl8 = CDROM_REG0 & ~3

◆ do

do
Initial value:
{
CDROM_REG0
Definition reading.c:134

◆ gotInt1

unsigned gotInt1 = 0

◆ readyCount

unsigned readyCount = 0

◆ resetDone

int resetDone = resetCDRom()

◆ response

uint8_t response[16]

◆ response1

uint8_t response1[16]

◆ response2

uint8_t response2[16]

◆ response3

uint8_t response3[16]

◆ response4

uint8_t response4[16]

◆ responseSize1

uint8_t responseSize1 = readResponse(response1)

◆ responseSize2

uint8_t responseSize2 = readResponse(response2)

◆ responseSize3

uint8_t responseSize3 = readResponse(response3)

◆ responseSize4

uint8_t responseSize4 = readResponse(response4)

◆ sectorData

uint32_t sectorData[100]

◆ seekDone

int seekDone = seekLTo(0x20, 2, 0)

◆ setLocDone

int setLocDone = 0

◆ setModeDone

int setModeDone = setMode(0x80)

◆ start

uint32_t start = 20 * 60 * 75

◆ test_instances

test_instances

◆ time1

◆ time2

◆ time3

◆ time4