|
| | 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) |
| |