Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

LINUX/archlib.c

00001 /*
00002  *      This program is free software; you can redistribute it and/or
00003  *      modify it under the terms of the GNU General Public License
00004  *      as published by the Free Software Foundation; either version
00005  *      2 of the License, or (at your option) any later version.
00006  *
00007  *  Copyright 1999-2005 Michael Klein <michael(dot)klein(at)puffin(dot)lb(dot)shuttle(dot)de>
00008 */
00009 
00010 #ifdef SAVE_RCSID
00011 static char *rcsid =
00012     "@(#) $Id: archlib.c,v 1.6 2006/04/10 10:26:33 trikalio Exp $";
00013 #endif
00014 
00015 #include <fcntl.h>
00016 #include <stdlib.h>
00017 #include <string.h>
00018 #include <sys/ioctl.h>
00019 #include <unistd.h>
00020 
00021 #include "opencbm.h"
00022 #include "cbm_module.h"
00023 
00024 static char *cbm_dev_name = "/dev/cbm";
00025 
00026 const char *cbmarch_get_driver_name(int port)
00027 {
00028     return cbm_dev_name;
00029 }
00030 
00031 int cbmarch_driver_open(CBM_FILE *f, int port)
00032 {
00033     *f = open(cbm_dev_name, O_RDWR);
00034     return (*f < 0) ? -1 : 0; /* FIXME */
00035 }
00036 
00037 void cbmarch_driver_close(CBM_FILE f)
00038 {
00039     if(f >= 0) {
00040         close(f);
00041     }
00042 }
00043 
00068 void
00069 cbmarch_lock(CBM_FILE f)
00070 {
00071 }
00072 
00090 void
00091 cbmarch_unlock(CBM_FILE f)
00092 {
00093 }
00094 
00095 int cbmarch_raw_write(CBM_FILE f, const void *buf, size_t size)
00096 {
00097     return write(f, buf, size);
00098 }
00099 
00100 int cbmarch_raw_read(CBM_FILE f, void *buf, size_t size)
00101 {
00102     return read(f, buf, size);
00103 }
00104 
00105 int cbmarch_listen(CBM_FILE f, __u_char dev, __u_char secadr)
00106 {
00107     return ioctl(f, CBMCTRL_LISTEN, (dev<<8) | secadr);
00108 }
00109 
00110 int cbmarch_talk(CBM_FILE f, __u_char dev, __u_char secadr)
00111 {
00112     return ioctl(f, CBMCTRL_TALK, (dev<<8) | secadr);
00113 }
00114 
00115 int cbmarch_open(CBM_FILE f, __u_char dev, __u_char secadr)
00116 {
00117     int rv;
00118 
00119     rv = ioctl(f, CBMCTRL_OPEN, (dev<<8) | secadr);
00120     return rv;
00121 }
00122 
00123 int cbmarch_close(CBM_FILE f, __u_char dev, __u_char secadr)
00124 {
00125     return ioctl(f, CBMCTRL_CLOSE, (dev<<8) | secadr);
00126 }
00127 
00128 int cbmarch_unlisten(CBM_FILE f)
00129 {
00130     return ioctl(f, CBMCTRL_UNLISTEN);
00131 }
00132 
00133 int cbmarch_untalk(CBM_FILE f)
00134 {
00135     return ioctl(f, CBMCTRL_UNTALK);
00136 }
00137 
00138 int cbmarch_get_eoi(CBM_FILE f)
00139 {
00140     return ioctl(f, CBMCTRL_GET_EOI);
00141 }
00142 
00143 int cbmarch_clear_eoi(CBM_FILE f)
00144 {
00145     return ioctl(f, CBMCTRL_CLEAR_EOI);
00146 }
00147 
00148 int cbmarch_reset(CBM_FILE f)
00149 {
00150     return ioctl(f, CBMCTRL_RESET);
00151 }
00152 
00153 __u_char cbmarch_pp_read(CBM_FILE f)
00154 {
00155     return ioctl(f, CBMCTRL_PP_READ);
00156 }
00157 
00158 void cbmarch_pp_write(CBM_FILE f, __u_char c)
00159 {
00160     ioctl(f, CBMCTRL_PP_WRITE, c);
00161 }
00162 
00163 int cbmarch_iec_poll(CBM_FILE f)
00164 {
00165     return ioctl(f, CBMCTRL_IEC_POLL);
00166 }
00167 
00168 int cbmarch_iec_get(CBM_FILE f, int line)
00169 {
00170     return (ioctl(f, CBMCTRL_IEC_POLL) & line) != 0;
00171 }
00172 
00173 void cbmarch_iec_set(CBM_FILE f, int line)
00174 {
00175     ioctl(f, CBMCTRL_IEC_SET, line);
00176 }
00177 
00178 void cbmarch_iec_release(CBM_FILE f, int line)
00179 {
00180     ioctl(f, CBMCTRL_IEC_RELEASE, line);
00181 }
00182 
00183 int cbmarch_iec_wait(CBM_FILE f, int line, int state)
00184 {
00185     return ioctl(f, CBMCTRL_IEC_WAIT, (line<<8) | state);
00186 }
00187 
00188 void cbmarch_iec_setrelease(CBM_FILE f, int set, int release)
00189 {
00190     ioctl(f, CBMCTRL_IEC_SETRELEASE, (set<<8) | release);
00191 }

Generated on Sun Apr 30 18:45:42 2006 for opencbm by  doxygen 1.4.2