Beginning to implement write code for BD-R SRM without POW

This commit is contained in:
2008-12-09 12:35:13 +00:00
parent d52ea49eb6
commit a5e2729604
6 changed files with 68 additions and 17 deletions

View File

@ -58,6 +58,9 @@ extern struct libdax_msgs *libdax_messenger;
/* ts A70509 : handling 0x41 and 0x42 as read-only types */
#define Libburn_support_bd_r_readonlY 1
/* >>> ts A81208 */
#define Libburn_support_bd_plus_r_srM 1
/* ts A80410 : <<< Dangerous experiment: Pretend that DVD-RAM is BD-RE
# define Libburn_dvd_ram_as_bd_rE yes
@ -119,6 +122,8 @@ extern struct libdax_msgs *libdax_messenger;
drive->do_stream_recording it does full nominal speed.
ts A80506 : Giulio Orsero reports success with BD-RE formatting.
BD-RE is now an officially supported profile.
ts A81209 : The first two sessions have been written to BD-R SRM
(auto formatted without Defect Management).
*/
/* ts A70519 : With MMC commands of data direction FROM_DRIVE:
@ -1528,8 +1533,15 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
#ifdef Libburn_support_bd_r_readonlY
/* <<< For now: declaring BD-R read-only
*/
if (d->current_profile == 0x41 || d->current_profile == 0x42) {
/* BD-R seq, BD-R rnd */
#ifndef Libburn_support_bd_plus_r_srM
if (d->current_profile == 0x41) {
/* BD-R seq as readonly dummy */
disc_status = 2; /* always full and finalized */
d->erasable = 0; /* never erasable */
}
#endif
if (d->current_profile == 0x42) {
/* BD-R rnd */
disc_status = 2; /* always full and finalized */
d->erasable = 0; /* never erasable */
}
@ -2239,7 +2251,11 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
d->current_is_supported_profile = 1;
#ifdef Libburn_support_bd_r_readonlY
if (cp == 0x41 || cp == 0x42) /* BD-R sequential, BD-R random */
#ifndef Libburn_support_bd_plus_r_srM
if (cp == 0x41) /* BD-R sequential (here as read-only dummy) */
d->current_is_supported_profile = 1;
#endif
if (cp == 0x42) /* BD-R random recording */
d->current_is_supported_profile = 1;
#endif
@ -2280,6 +2296,10 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
if (cp == 0x1b || cp == 0x2b) /* DVD+R , DVD+R/DL */
d->current_is_supported_profile = 1;
#endif
#ifdef Libburn_support_bd_plus_r_srM
if (cp == 0x41) /* BD-R SRM */
d->current_is_supported_profile = 1;
#endif
/* Enable this to get loud and repeated reports about the feature set :
#define Libburn_print_feature_descriptorS 1
@ -3440,8 +3460,9 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
} else if (d->current_profile == 0x1a || d->current_profile == 0x1b ||
d->current_profile == 0x2b || d->current_profile == 0x12 ||
d->current_profile == 0x41 || d->current_profile == 0x42 ||
d->current_profile == 0x43) {
/* not with DVD+R[W][/DL] or DVD-RAM or BD-RE */;
/* not with DVD+R[W][/DL] or DVD-RAM or BD-R[E] */;
return 0;
} else {
/* Traditional setup for CD */