Implemented automatic START UNIT after STOP UNIT before any other SCSI command
This commit is contained in:
parent
0109f4b2b5
commit
ba6b4bc974
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2009.08.24.161646"
|
||||
#define Cdrskin_timestamP "2009.08.24.202517"
|
||||
|
@ -236,6 +236,11 @@ int mmc_function_spy(struct burn_drive *d, char * text)
|
||||
d->cancel = 1;
|
||||
return 0;
|
||||
}
|
||||
if (d->is_stopped && strcmp(text, "stop_unit") != 0 &&
|
||||
strcmp(text, "start_unit") != 0) {
|
||||
d->start_unit(d);
|
||||
d->is_stopped = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -80,6 +80,7 @@ void sbc_eject(struct burn_drive *d)
|
||||
int sbc_start_unit(struct burn_drive *d)
|
||||
{
|
||||
struct command c;
|
||||
int ret;
|
||||
|
||||
if (mmc_function_spy(d, "start_unit") <= 0)
|
||||
return 0;
|
||||
@ -92,13 +93,16 @@ int sbc_start_unit(struct burn_drive *d)
|
||||
if (c.error)
|
||||
return 0;
|
||||
/* ts A70918 : now asynchronous */
|
||||
return spc_wait_unit_attention(d, 1800, "START UNIT", 0);
|
||||
d->is_stopped = 0;
|
||||
ret = spc_wait_unit_attention(d, 1800, "START UNIT", 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ts A90824 : Trying to reduce drive noise */
|
||||
int sbc_stop_unit(struct burn_drive *d)
|
||||
{
|
||||
struct command c;
|
||||
int ret;
|
||||
|
||||
if (mmc_function_spy(d, "stop_unit") <= 0)
|
||||
return 0;
|
||||
@ -110,7 +114,9 @@ int sbc_stop_unit(struct burn_drive *d)
|
||||
d->issue_command(d, &c);
|
||||
if (c.error)
|
||||
return 0;
|
||||
return spc_wait_unit_attention(d, 1800, "STOP UNIT", 0);
|
||||
ret = spc_wait_unit_attention(d, 1800, "STOP UNIT", 0);
|
||||
d->is_stopped = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -123,6 +129,7 @@ int sbc_setup_drive(struct burn_drive *d)
|
||||
d->load = sbc_load;
|
||||
d->start_unit = sbc_start_unit;
|
||||
d->stop_unit = sbc_stop_unit;
|
||||
d->is_stopped = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -317,7 +317,11 @@ struct burn_drive
|
||||
void (*eject) (struct burn_drive *);
|
||||
void (*load) (struct burn_drive *);
|
||||
int (*start_unit) (struct burn_drive *);
|
||||
|
||||
/* ts A90824 : Calming down noisy drives */
|
||||
int (*stop_unit) (struct burn_drive *);
|
||||
int is_stopped;
|
||||
|
||||
void (*read_disc_info) (struct burn_drive *);
|
||||
void (*read_sectors) (struct burn_drive *,
|
||||
int start,
|
||||
|
Loading…
Reference in New Issue
Block a user