📄 drv_philips.c
字号:
/* @(#)drv_philips.c 1.17 98/09/15 Copyright 1997 J. Schilling */#ifndef lintstatic char sccsid[] = "@(#)drv_philips.c 1.17 98/09/15 Copyright 1997 J. Schilling";#endif/* * CDR device implementation for * Philips/Yamaha/Ricoh/Plasmon * * Copyright (c) 1997 J. Schilling *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */#include <mconfig.h>#include <stdio.h>#include <standard.h>#include <scsireg.h>#include <scsitransp.h>#include "cdrecord.h"extern int debug;extern int silent;extern int verbose;extern int lverbose;LOCAL int philips_load __PR((void));LOCAL int philips_unload __PR((void));LOCAL int philips_dumbload __PR((void));LOCAL int philips_dumbunload __PR((void));LOCAL int speed_select_oldphilips __PR((int speed, int dummy));LOCAL int speed_select_dumbphilips __PR((int speed, int dummy));LOCAL int speed_select_pioneer __PR((int speed, int dummy));LOCAL int philips_getdisktype __PR((cdr_t *dp, dstat_t *dsp));LOCAL BOOL capacity_philips __PR((long *lp));LOCAL int next_wr_addr_philips __PR((int track, track_t *trackp, long *ap));LOCAL int scsi_cdr_write_philips __PR((caddr_t bp, long sectaddr, long size, int blocks, BOOL islast));LOCAL int open_track_philips __PR((cdr_t *dp, int track, track_t *track_info));LOCAL int open_track_oldphilips __PR((cdr_t *dp, int track, track_t *track_info));LOCAL int open_track_yamaha __PR((cdr_t *dp, int track, track_t *track_info));LOCAL int philips_attach __PR((cdr_t *));LOCAL int plasmon_attach __PR((cdr_t *));LOCAL int ricoh_attach __PR((cdr_t *));LOCAL int philips_getlilo __PR((long *lilenp, long *lolenp));cdr_t cdr_philips_cdd521O = { 0, CDR_TAO|CDR_TRAYLOAD, "philips_cdd521_old", "driver for Philips old CDD-521", 0, drive_identify, philips_attach, philips_getdisktype, philips_load, philips_unload, recovery_needed, recover, speed_select_oldphilips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_oldphilips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_philips_dumb = { 0, CDR_TAO|CDR_TRAYLOAD, "philips_dumb", "driver for Philips CDD-521 with pessimistic assumptions", 0, drive_identify, philips_attach, philips_getdisktype, philips_dumbload, philips_dumbunload, recovery_needed, recover, speed_select_dumbphilips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_oldphilips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_philips_cdd521 = { 0, CDR_TAO|CDR_TRAYLOAD, "philips_cdd521", "driver for Philips CDD-521", 0, drive_identify, philips_attach, philips_getdisktype, philips_load, philips_unload, recovery_needed, recover, speed_select_philips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_philips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_philips_cdd522 = { 0, CDR_TAO|CDR_DAO|CDR_TRAYLOAD, "philips_cdd522", "driver for Philips CDD-522", 0, drive_identify, philips_attach, philips_getdisktype, philips_load, philips_unload, recovery_needed, recover, speed_select_philips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_philips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_kodak_pcd600 = { 0, CDR_TAO|CDR_TRAYLOAD, "kodak_pcd_600", "driver for Kodak PCD-600", 0, drive_identify, philips_attach, philips_getdisktype, philips_load, philips_unload, recovery_needed, recover, speed_select_philips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_oldphilips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_plasmon_rf4100 = { 0, CDR_TAO|CDR_TRAYLOAD, "plasmon_rf4100", "driver for Plasmon RF 4100", 0, drive_identify, plasmon_attach, philips_getdisktype, philips_load, philips_unload, recovery_needed, recover, speed_select_philips, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_philips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_pioneer_dw_s114x = { 0, CDR_TAO|CDR_TRAYLOAD, "pioneer_dws114x", "driver for Pioneer DW-S114X", 0, drive_identify, philips_attach, philips_getdisktype, scsi_load, scsi_unload, recovery_needed, recover, speed_select_pioneer, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips,/* open_track_yamaha,*//*???*/ open_track_oldphilips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_yamaha_cdr100 = { 0, CDR_TAO|CDR_DAO|CDR_CADDYLOAD|CDR_SWABAUDIO, "yamaha_cdr100", "driver for Yamaha CDR-100 / CDR-102", 0, drive_identify, philips_attach, drive_getdisktype, cmd_dummy, philips_unload, recovery_needed, recover, speed_select_yamaha, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_yamaha, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};cdr_t cdr_ricoh_ro1420 = { 0, CDR_TAO|CDR_DAO|CDR_CADDYLOAD, "ricoh_ro1420c", "driver for Ricoh RO-1420C", 0, drive_identify, ricoh_attach, philips_getdisktype, scsi_load, scsi_unload, recovery_needed, recover, speed_select_yamaha, select_secsize, next_wr_addr_philips, reserve_track, scsi_cdr_write_philips, open_track_philips, close_track_philips, (int(*)__PR((int, track_t *, int, int)))cmd_dummy, cmd_dummy, read_session_offset_philips, fixation, blank_dummy,};LOCAL intphilips_load(){ return (load_unload_philips(1));}LOCAL intphilips_unload(){ return (load_unload_philips(0));}LOCAL intphilips_dumbload(){ int ret; silent++; ret = load_unload_philips(1); silent--; if (ret < 0) return (scsi_load()); return (0);}LOCAL intphilips_dumbunload(){ int ret; silent++; ret = load_unload_philips(0); silent--; if (ret < 0) return (scsi_unload()); return (0);}LOCAL intspeed_select_pioneer(speed, dummy) int speed; int dummy;{ if (speed < 2) { speed = 2; if (lverbose) printf("WARNING: setting to minimum speed (2).\n"); } return (speed_select_philips(speed, dummy));}LOCAL intspeed_select_oldphilips(speed, dummy) int speed; int dummy;{ if (lverbose) printf("WARNING: ignoring selected speed.\n"); if (dummy) { errmsgno(EX_BAD, "Cannot set dummy writing for this device.\n"); return (-1); } return (0);}LOCAL intspeed_select_dumbphilips(speed, dummy) int speed; int dummy;{ if (speed_select_philips(speed, dummy) < 0) return (speed_select_oldphilips(speed, dummy)); return (0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -