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;
|
d->cancel = 1;
|
||||||
return 0;
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +80,7 @@ void sbc_eject(struct burn_drive *d)
|
|||||||
int sbc_start_unit(struct burn_drive *d)
|
int sbc_start_unit(struct burn_drive *d)
|
||||||
{
|
{
|
||||||
struct command c;
|
struct command c;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (mmc_function_spy(d, "start_unit") <= 0)
|
if (mmc_function_spy(d, "start_unit") <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
@ -92,13 +93,16 @@ int sbc_start_unit(struct burn_drive *d)
|
|||||||
if (c.error)
|
if (c.error)
|
||||||
return 0;
|
return 0;
|
||||||
/* ts A70918 : now asynchronous */
|
/* 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 */
|
/* ts A90824 : Trying to reduce drive noise */
|
||||||
int sbc_stop_unit(struct burn_drive *d)
|
int sbc_stop_unit(struct burn_drive *d)
|
||||||
{
|
{
|
||||||
struct command c;
|
struct command c;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (mmc_function_spy(d, "stop_unit") <= 0)
|
if (mmc_function_spy(d, "stop_unit") <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
@ -110,7 +114,9 @@ int sbc_stop_unit(struct burn_drive *d)
|
|||||||
d->issue_command(d, &c);
|
d->issue_command(d, &c);
|
||||||
if (c.error)
|
if (c.error)
|
||||||
return 0;
|
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->load = sbc_load;
|
||||||
d->start_unit = sbc_start_unit;
|
d->start_unit = sbc_start_unit;
|
||||||
d->stop_unit = sbc_stop_unit;
|
d->stop_unit = sbc_stop_unit;
|
||||||
|
d->is_stopped = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,7 +317,11 @@ struct burn_drive
|
|||||||
void (*eject) (struct burn_drive *);
|
void (*eject) (struct burn_drive *);
|
||||||
void (*load) (struct burn_drive *);
|
void (*load) (struct burn_drive *);
|
||||||
int (*start_unit) (struct burn_drive *);
|
int (*start_unit) (struct burn_drive *);
|
||||||
|
|
||||||
|
/* ts A90824 : Calming down noisy drives */
|
||||||
int (*stop_unit) (struct burn_drive *);
|
int (*stop_unit) (struct burn_drive *);
|
||||||
|
int is_stopped;
|
||||||
|
|
||||||
void (*read_disc_info) (struct burn_drive *);
|
void (*read_disc_info) (struct burn_drive *);
|
||||||
void (*read_sectors) (struct burn_drive *,
|
void (*read_sectors) (struct burn_drive *,
|
||||||
int start,
|
int start,
|
||||||
|
Loading…
Reference in New Issue
Block a user