Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 86 | f9daq | 1 | #ifndef __CC32LIB_H__ | 
        
| 2 | #define __CC32LIB_H__ | 
        ||
| 3 | //**************************************************************************** | 
        ||
| 4 | // Copyright (C) 2000-2004  ARW Elektronik Germany | 
        ||
| 5 | // | 
        ||
| 6 | // | 
        ||
| 7 | // This program is free software; you can redistribute it and/or modify | 
        ||
| 8 | // it under the terms of the GNU Lesser General Public License as published by | 
        ||
| 9 | // the Free Software Foundation; either version 2 of the License, or | 
        ||
| 10 | // (at your option) any later version. | 
        ||
| 11 | // | 
        ||
| 12 | // This program is distributed in the hope that it will be useful, | 
        ||
| 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | 
        ||
| 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
        ||
| 15 | // GNU General Public License for more details. | 
        ||
| 16 | // | 
        ||
| 17 | // You should have received a copy of the GNU General Public License | 
        ||
| 18 | // along with this program; if not, write to the Free Software | 
        ||
| 19 | // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
        ||
| 20 | // | 
        ||
| 21 | // This product is not authorized for use as critical component in  | 
        ||
| 22 | // life support systems without the express written approval of  | 
        ||
| 23 | // ARW Elektronik Germany. | 
        ||
| 24 | //   | 
        ||
| 25 | // Please announce changes and hints to ARW Elektronik | 
        ||
| 26 | // | 
        ||
| 27 | // Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) | 
        ||
| 28 | // | 
        ||
| 29 | //**************************************************************************** | 
        ||
| 30 | |||
| 31 | //**************************************************************************** | 
        ||
| 32 | // | 
        ||
| 33 | // cc32lib.h -- header for a simple access library for the  | 
        ||
| 34 | //                                     PCICC32 PCI to CAMAC Interface | 
        ||
| 35 | // | 
        ||
| 36 | // $Log: libcc32.h,v $ | 
        ||
| 37 | // Revision 1.9  2005/10/03 17:46:31  klaus | 
        ||
| 38 | // simple cosmetic changes, upgrade lib to libcc32.so.3.0.0 | 
        ||
| 39 | // | 
        ||
| 40 | // Revision 1.8  2004/11/29 20:43:12  klaus | 
        ||
| 41 | // added _qx functions to get Q and X for every transfer. Release libcc32.so.2. | 
        ||
| 42 | // | 
        ||
| 43 | // Revision 1.7  2004/08/13 19:48:25  klaus | 
        ||
| 44 | // changed license from GPL to LGPL | 
        ||
| 45 | // | 
        ||
| 46 | // Revision 1.6  2004/08/12 20:00:41  klaus | 
        ||
| 47 | // conversion to kernel-version 2.6, released version 6.0 | 
        ||
| 48 | // | 
        ||
| 49 | // Revision 1.5  2003/05/29 08:29:08  klaus | 
        ||
| 50 | // added _cplusplus extention | 
        ||
| 51 | // | 
        ||
| 52 | // Revision 1.4  2002/04/17 19:41:06  klaus | 
        ||
| 53 | // added support for autoread | 
        ||
| 54 | // | 
        ||
| 55 | // Revision 1.3  2002/04/14 18:25:38  klaus | 
        ||
| 56 | // added interrupt handling, driver 4.4. ...3.5.tar.gz | 
        ||
| 57 | // | 
        ||
| 58 | // Revision 1.2  2001/11/20 20:12:50  klaus | 
        ||
| 59 | // included new header and CVS log | 
        ||
| 60 | // | 
        ||
| 61 | //**************************************************************************** | 
        ||
| 62 | |||
| 63 | /*--- INCLUDES --------------------------------------------------------------------------*/ | 
        ||
| 64 | #include <asm/types.h> | 
        ||
| 65 | |||
| 66 | /*--- TYPEDEFS --------------------------------------------------------------------------*/ | 
        ||
| 67 | typedef void* CC32_HANDLE; /* type of the device handle */  | 
        ||
| 68 | |||
| 69 | /*--- DEFINES ---------------------------------------------------------------------------*/ | 
        ||
| 70 | |||
| 71 | /*--- PROTOTYPES ------------------------------------------------------------------------*/ | 
        ||
| 72 | #ifdef __cplusplus | 
        ||
| 73 | extern "C"  | 
        ||
| 74 | { | 
        ||
| 75 | #endif | 
        ||
| 76 | |||
| 77 | /* open a path to a device. E.g. "/dev/pcicc32_1" */ | 
        ||
| 78 | int cc32_open(char *cszPath, CC32_HANDLE *handle);  | 
        ||
| 79 | |||
| 80 | /* close the opened path */ | 
        ||
| 81 | int cc32_close(CC32_HANDLE handle);  | 
        ||
| 82 | |||
| 83 | /* read only a word - 16 bits - from a address made out of N,A,F */ | 
        ||
| 84 | __u16 cc32_read_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F);  | 
        ||
| 85 | |||
| 86 | /* read only a word - 16 bits - from a address made out of N,A,F, get Q and X */ | 
        ||
| 87 | __u16 cc32_read_word_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, int *Q, int *X);  | 
        ||
| 88 | |||
| 89 | /* read a long - 32 bits - from a address made out of N,A,F and get the result Q and X */ | 
        ||
| 90 | __u32 cc32_read_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F);  | 
        ||
| 91 | |||
| 92 | /* read a long - 32 bits - from a address made out of N,A,F get Q and X */ | 
        ||
| 93 | __u32 cc32_read_long_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, int *Q, int *X);  | 
        ||
| 94 | |||
| 95 | /* read a long - 32 bits - without any interpretaion */ | 
        ||
| 96 | __u32 cc32_read_long_all(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F);  | 
        ||
| 97 | |||
| 98 | /* write a word - 16 bits - to a destination made out of N,A,F */ | 
        ||
| 99 | void cc32_write_word(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u16 uwData);  | 
        ||
| 100 | |||
| 101 | /* write a word - 16 bits - to a destination made out of N,A,F, get Q and X */ | 
        ||
| 102 | void cc32_write_word_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u16 uwData, int *Q, int *X);  | 
        ||
| 103 | |||
| 104 | /* write a long - 32 bits - uninterpreted to a destination made out of N,A,F */ | 
        ||
| 105 | void cc32_write_long(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u32 ulData);  | 
        ||
| 106 | |||
| 107 | /* write a long - 32 bits - uninterpreted to a destination made out of N,A,F, get Q and X */ | 
        ||
| 108 | void cc32_write_long_qx(CC32_HANDLE handle, unsigned int N, unsigned int A, unsigned int F, __u32 ulData, int *Q, int *X);  | 
        ||
| 109 | |||
| 110 | /* poll the state of the timeout line and the LAM state. The timeout line is cleared if it was set */ | 
        ||
| 111 | int cc32_poll_event(CC32_HANDLE handle, int *nTimeout, int *nLam);  | 
        ||
| 112 | |||
| 113 | /* control interrupts caused by timeouts or LAMs */ | 
        ||
| 114 | int cc32_interrupt_disable(CC32_HANDLE handle);  | 
        ||
| 115 | int cc32_interrupt_enable(CC32_HANDLE handle);  | 
        ||
| 116 | |||
| 117 | /* same as cc32_poll_event(), but wait for a state change of timeout or LAMs. */ | 
        ||
| 118 | int cc32_wait_event(CC32_HANDLE handle, int *nTimeout, int *nLam);  | 
        ||
| 119 | |||
| 120 | /* switch cc32 autoread on or off - return the last switch state */ | 
        ||
| 121 | int cc32_autoread_on(CC32_HANDLE handle);  | 
        ||
| 122 | int cc32_autoread_off(CC32_HANDLE handle);  | 
        ||
| 123 | |||
| 124 | #ifdef __cplusplus | 
        ||
| 125 | } | 
        ||
| 126 | #endif | 
        ||
| 127 | |||
| 128 | #endif /* __CC32LIB_H__ */ |