New API call burn_drive_release_v2()

This commit is contained in:
Thomas Schmitt 2024-09-20 18:21:29 +02:00
parent a63fa82724
commit 5ff9e12a27
4 changed files with 33 additions and 6 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2024.09.15.141244"
#define Cdrskin_timestamP "2024.09.20.162105"

View File

@ -686,9 +686,10 @@ int burn_drive_mark_unready(struct burn_drive *d, int flag)
}
/* ts A70918 : outsourced from burn_drive_release() and enhanced */
/* ts A70918-C40918 : outsourced from burn_drive_release() and enhanced */
/** @param flag bit0-2 = mode : 0=unlock , 1=unlock+eject , 2=leave locked
bit3= do not call d->release()
bit3= do not calm drive and do not call d->release()
bit4= do not calm drive (@since 1.5.8)
*/
int burn_drive_release_fl(struct burn_drive *d, int flag)
{
@ -719,10 +720,10 @@ int burn_drive_release_fl(struct burn_drive *d, int flag)
d->unlock(d);
if ((flag & 7) == 1)
d->eject(d);
if (!(flag & 8)) {
if (!(flag & (8 | 16)))
burn_drive_snooze(d, 0);
if (!(flag & 8))
d->release(d);
}
}
d->needs_sync_cache = 0; /* just to be sure */
@ -765,6 +766,14 @@ void burn_drive_release(struct burn_drive *d, int le)
}
/* API */
/* ts C40918 */
int burn_drive_release_v2(struct burn_drive *d, int flag)
{
return burn_drive_release_fl(d, flag & 0x17);
}
/* ts B11002 */
/* API */
int burn_drive_re_assess(struct burn_drive *d, int flag)

View File

@ -1269,6 +1269,23 @@ int burn_drive_re_assess(struct burn_drive *d, int flag);
void burn_drive_release(struct burn_drive *drive, int eject);
/* ts C40918 */
/** Release a drive like with burn_drive_release() or burn_drive_leave_locked()
but with the additional option not to calm down the drive.
@param drive The drive to release.
@param flag Bitfield for control purposes:
bit0-2= mode
0= unlock
1= unlock+eject
2= leave locked
bit3= reserved, submit 0
bit4= do not calm drive
@return 1 means success, <=0 means failure
@since 1.5.8
*/
int burn_drive_release_v2(struct burn_drive *d, int flag);
/* ts A70918 */
/** Like burn_drive_release() but keeping the drive tray closed and its
eject button disabled. This physically locked drive state will last until
@ -4252,7 +4269,7 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
int burn_get_read_capacity(struct burn_drive *d, int *capacity, int flag);
/* ts C40303 */
/** Like burn_get_read_capacity(), but with off_t result.
/** Like burn_get_read_capacity(), but with uncurbed off_t result.
@since 1.5.8
*/
int burn_get_read_capacity_v2(struct burn_drive *d, off_t *capacity, int flag);

View File

@ -218,6 +218,7 @@ LIBBURN4_1.5.8 {
burn_disc_get_sectors_v2;
burn_disc_track_lba_nwa_v2;
burn_drive_get_status_v2;
burn_drive_release_v2;
burn_get_read_capacity_v2;
burn_session_get_sectors_v2;
burn_track_get_sectors_v2;