summaryrefslogtreecommitdiffstats
path: root/kscd/libwm/plat_template.c
diff options
context:
space:
mode:
Diffstat (limited to 'kscd/libwm/plat_template.c')
-rw-r--r--kscd/libwm/plat_template.c295
1 files changed, 295 insertions, 0 deletions
diff --git a/kscd/libwm/plat_template.c b/kscd/libwm/plat_template.c
new file mode 100644
index 00000000..bd47c20b
--- /dev/null
+++ b/kscd/libwm/plat_template.c
@@ -0,0 +1,295 @@
+/*
+ * $Id$
+ *
+ * This file is part of WorkMan, the civilized CD player library
+ * (c) 1991-1997 by Steven Grimm (original author)
+ * (c) by Dirk Försterling (current 'author' = maintainer)
+ * The maintainer can be contacted by his e-mail address:
+ * milliByte@DeathsDoor.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ *
+ * This file surely contains nonsense. It's the porter's part to fill
+ * the gaps and assure that the resulting code makes sense.
+ *
+ */
+
+
+static char plat_template_id[] = "$Id$"
+
+#if [TEMPLATESYSTEM]
+
+
+#include "include/wm_config.h"
+#include "include/wm_struct.h"
+#include "include/wm_cdtext.h"
+
+#define WM_MSG_CLASS WM_MSG_CLASS_PLATFORM
+
+/*
+ * gen_init();
+ *
+ */
+int
+gen_init(struct wm_drive *d)
+{
+ return (0);
+} /* gen_init() */
+
+/*
+ * wmcd_open()
+ *
+ */
+int
+wmcd_open(struct wm_drive *d)
+{
+ char vendor[32] = WM_STR_GENVENDOR;
+ char model[32] = WM_STR_GENMODEL;
+ char rev[32] = WM_STR_GENREV;
+
+ if( ! d )
+ {
+ errno = EFAULT;
+ return -1;
+ }
+
+ if(d->fd > -1) /* device already open? */
+ {
+ wm_lib_message(WM_MSG_LEVEL_DEBUG|WM_MSG_CLASS, "wmcd_open(): [device is open (fd=%d)]\n", d->fd);
+ return 0;
+ }
+
+ if( d->cd_device == (char *)NULL )
+ d->cd_device = DEFAULT_CD_DEVICE;
+
+ /* open() goes here */
+
+ if(find_drive_struct(vendor, model, rev)) {
+ gen_close(d);
+ return -1;
+ }
+
+ d->init(d);
+
+ return (0);
+} /* wmcd_open() */
+
+/*
+ * Re-Open the device if it is open.
+ */
+int
+wmcd_reopen( struct wm_drive *d )
+{
+ int status;
+
+ do {
+ wm_lib_message(WM_MSG_LEVEL_DEBUG, "wmcd_reopen\n");
+ status = gen_close( d );
+ wm_susleep( 1000 );
+ wm_lib_message(WM_MSG_LEVEL_DEBUG, "calling wmcd_open()\n");
+ status = wmcd_open( d ); /* open it as usual */
+ wm_susleep( 1000 );
+ } while ( status != 0 );
+ return status;
+} /* wmcd_reopen() */
+
+/*
+ * wm_scsi()
+ *
+ */
+int
+wm_scsi(struct wm_drive *d,
+ uchar_t *cdb, int cdblen,void *retbuf,int retbuflen,int getreply)
+{
+ return (0);
+} /* wm_scsi() */
+
+/*
+ * close the CD device
+ */
+
+int
+gen_close(struct wm_drive *d)
+{
+ if(d->fd != -1) {
+ wm_lib_message(WM_MSG_LEVEL_DEBUG, "closing the device\n");
+ close(d->fd);
+ d->fd = -1;
+ }
+ return 0;
+} /* gen_close() */
+
+/*
+ * gen_get_drive_status()
+ *
+ */
+int
+gen_get_drive_status(struct wm_drive *d,
+ int oldmode,
+ int *mode,
+ int *pos,
+ int *track,
+ int *index)
+{
+ return (0);
+} /* gen_get_drive_status() */
+
+/*
+ * gen_get_trackcount()
+ *
+ */
+int
+gen_get_trackcount(struct wm_drive *d,int *tracks)
+{
+ return (0);
+} /* gen_get_trackcount() */
+
+/*
+ * gen_get_trackinfo()
+ *
+ */
+int
+gen_get_trackinfo(struct wm_drive *d,int track,int *data,int *startframe)
+{
+ return (0);
+} /* gen_get_trackinfo() */
+
+/*
+ * gen_get_cdlen()
+ *
+ */
+int
+gen_get_cdlen(struct wm_drive *d,int *frames)
+{
+ return (0);
+} /* gen_get_cdlen() */
+
+/*
+ * gen_play()
+ *
+ */
+int
+gen_play(struct wm_drive *d,int start,int end)
+{
+ return (0);
+} /* gen_play() */
+
+/*
+ * gen_pause()
+ *
+ */
+int
+gen_pause(struct wm_drive *d)
+{
+ return ioctl( 0 );
+} /* gen_pause() */
+
+/*
+ * gen_resume
+ *
+ */
+int
+gen_resume(struct wm_drive *d)
+{
+ return (0);
+} /* gen_resume() */
+
+/*
+ * gen_stop()
+ *
+ */
+int
+gen_stop(struct wm_drive *d)
+{
+ return (0);
+} /* gen_stop() */
+
+/*
+ * gen_eject()
+ *
+ */
+int
+gen_eject(struct wm_drive *d)
+{
+ return (0);
+} /* gen_eject() */
+
+/*----------------------------------------*
+ * Close the CD tray
+ *----------------------------------------*/
+int gen_closetray(struct wm_drive *d)
+{
+#ifdef CAN_CLOSE
+ if(!wmcd_close(d->fd))
+ {
+ d->fd=-1;
+ return(wmcd_reopen(d));
+ } else {
+ return(-1);
+ }
+#else
+ /* Always succeed if the drive can't close */
+ return(0);
+#endif /* CAN_CLOSE */
+} /* gen_closetray() */
+
+int
+scale_volume(int vol,int max)
+{
+ return ((vol * (max_volume - min_volume)) / max + min_volume);
+} /* scale_volume() */
+
+int
+unscale_volume(int vol,int max)
+{
+ int n;
+ n = ( vol - min_volume ) * max_volume / (max - min_volume);
+ return (n <0)?0:n;
+} /* unscale_volume() */
+
+/*
+ * gen_set_volume()
+ *
+ */
+int
+gen_set_volume(struct wm_drive *d,int left,int right)
+{
+ return (0);
+} /* gen_set_volume() */
+
+/*
+ * gen_get_volume()
+ *
+ */
+int
+gen_get_volume(struct wm_drive *d,int *left,int *right)
+{
+ return (0);
+} /* gen_get_volume() */
+
+/*------------------------------------------------------------------------*
+ * gen_get_cdtext(drive, buffer, lenght)
+ *
+ * For systems without working wm_scsi(), this should return -1
+ *------------------------------------------------------------------------*/
+
+int
+gen_get_cdtext(struct wm_drive *d, unsigned char **pp_buffer, int *p_buffer_lenght)
+{
+ return wm_scsi_get_cdtext(d, pp_buffer, p_buffer_lenght);
+} /* gen_get_cdtext() */
+
+#endif /* TEMPLATESYSTEM */