mvmestd.h

Go to the documentation of this file.
00001 /*********************************************************************
00002 
00003   Name:         mvmestd.h
00004   Created by:   Stefan Ritt
00005 
00006   Cotents:      Midas VME standard routines (MVMESTD) supplying an
00007                 abstract layer to all supported VME interfaces. So far,
00008                 bt617.c and sis3100.c are supported
00009                 
00010   $Log: mvmestd.h,v $
00011   Revision 1.9  2004/12/07 09:59:04  midas
00012   Revised MVMESTD
00013 
00014   Revision 1.8  2004/09/10 12:33:47  midas
00015   Implemented SIS3100/1100
00016 
00017   Revision 1.7  2004/01/08 08:40:09  midas
00018   Implemented standard indentation
00019 
00020   Revision 1.6  2003/11/24 08:22:45  midas
00021   Changed timeouts from INT to DWORD, added ignore_timeout to cm_cleanup, adde '-f' flag to ODBEdit 'cleanup'
00022 
00023   Revision 1.5  2001/06/27 12:16:30  midas
00024   Added OS_IRIX
00025 
00026   Revision 1.4  2001/04/05 05:51:36  midas
00027   Added VME_LM
00028 
00029   Revision 1.3  2000/09/28 11:12:15  midas
00030   Added DMA flag to vme_read/vme_write
00031 
00032   Revision 1.2  2000/09/26 07:45:19  midas
00033   Added vme_write
00034 
00035   Revision 1.1  2000/09/26 07:26:56  midas
00036   Added file
00037 
00038 
00039 *********************************************************************/
00040 
00041 /*---- replacements if not running under MIDAS ---------------------*/
00042 
00043 #ifndef MIDAS_TYPE_DEFINED
00044 #define MIDAS_TYPE_DEFINED
00045 
00046 typedef unsigned short int WORD;
00047 
00048 #ifdef __alpha
00049 typedef unsigned int DWORD;
00050 #else
00051 typedef unsigned long int DWORD;
00052 #endif
00053 
00054 #define SUCCESS  1
00055 
00056 #endif                          /* MIDAS_TYPE_DEFINED */
00057 
00058 /* make functions under WinNT dll exportable */
00059 #if defined(_MSC_VER) && defined(MIDAS_DLL)
00060 #define EXPRT __declspec(dllexport)
00061 #else
00062 #define EXPRT
00063 #endif
00064 
00065 /*---- status codes ------------------------------------------------*/
00066 
00067 #define MVME_SUCCESS                  1
00068 #define MVME_NO_INTERFACE             2
00069 #define MVME_NO_CRATE                 3
00070 #define MVME_UNSUPPORTED              4
00071 
00072 /*---- types -------------------------------------------------------*/
00073 
00074 typedef unsigned long mvme_addr_t;
00075 typedef unsigned long mvme_size_t;
00076 
00077 /*---- constants ---------------------------------------------------*/
00078 
00079 /* vme_ioctl commands */
00080 #define MVME_IOCTL_CRATE_SET          0
00081 #define MVME_IOCTL_CRATE_GET          1
00082 #define MVME_IOCTL_AMOD_SET           2
00083 #define MVME_IOCTL_AMOD_GET           3
00084 #define MVME_IOCTL_DMODE_SET          4
00085 #define MVME_IOCTL_DMODE_GET          5
00086 #define MVME_IOCTL_DMA_SET            6
00087 #define MVME_IOCTL_DMA_GET            7
00088 #define MVME_IOCTL_FIFO_SET           8
00089 #define MVME_IOCTL_FIFO_GET           9
00090 
00091 /* data modes */
00092 #define MVME_DMODE_D8                 1
00093 #define MVME_DMODE_D16                2
00094 #define MVME_DMODE_D32                3
00095 #define MVME_DMODE_D64                4
00096 #define MVME_DMODE_RAMD16             5   /* RAM memory of VME adapter */
00097 #define MVME_DMODE_RAMD32             6
00098 #define MVME_DMODE_LM                 7   /* local memory mapped to VME */
00099 
00100 /* vme bus address modifiers */
00101 #define MVME_AMOD_A32_SB     (0x0F)      /* A32 Extended Supervisory Block */
00102 #define MVME_AMOD_A32_SP     (0x0E)      /* A32 Extended Supervisory Program */
00103 #define MVME_AMOD_A32_SD     (0x0D)      /* A32 Extended Supervisory Data */
00104 #define MVME_AMOD_A32_NB     (0x0B)      /* A32 Extended Non-Privileged Block */
00105 #define MVME_AMOD_A32_NP     (0x0A)      /* A32 Extended Non-Privileged Program */
00106 #define MVME_AMOD_A32_ND     (0x09)      /* A32 Extended Non-Privileged Data */
00107 #define MVME_AMOD_A32_SMBLT  (0x0C)      /* A32 Multiplexed Block Transfer (D64) */
00108 #define MVME_AMOD_A32_NMBLT  (0x08)      /* A32 Multiplexed Block Transfer (D64) */
00109 
00110 #define MVME_AMOD_A32     MVME_AMOD_A32_SD
00111 #define MVME_AMOD_A32_D64 MVME_AMOD_A32_SMBLT
00112 
00113 #define MVME_AMOD_A24_SB     (0x3F)      /* A24 Standard Supervisory Block Transfer      */
00114 #define MVME_AMOD_A24_SP     (0x3E)      /* A24 Standard Supervisory Program Access      */
00115 #define MVME_AMOD_A24_SD     (0x3D)      /* A24 Standard Supervisory Data Access         */
00116 #define MVME_AMOD_A24_NB     (0x3B)      /* A24 Standard Non-Privileged Block Transfer   */
00117 #define MVME_AMOD_A24_NP     (0x3A)      /* A24 Standard Non-Privileged Program Access   */
00118 #define MVME_AMOD_A24_ND     (0x39)      /* A24 Standard Non-Privileged Data Access      */
00119 #define MVME_AMOD_A24_SMBLT  (0x3C)      /* A24 Multiplexed Block Transfer (D64) */
00120 #define MVME_AMOD_A24_NMBLT  (0x38)      /* A24 Multiplexed Block Transfer (D64) */
00121 
00122 #define MVME_AMOD_A24     MVME_AMOD_A24_SD
00123 #define MVME_AMOD_A24_D64 MVME_AMOD_A24_SMBLT
00124 
00125 #define MVME_AMOD_A16_SD  (0x2D) /* A16 Short Supervisory Data Access            */
00126 #define MVME_AMOD_A16_ND  (0x29) /* A16 Short Non-Privileged Data Access         */
00127 
00128 #define MVME_AMOD_A16     MVME_AMOD_A16_SD
00129 
00130 /*---- function declarations ---------------------------------------*/
00131 
00132 /* make functions callable from a C++ program */
00133 #ifdef __cplusplus
00134 extern "C" {
00135 #endif
00136 
00137    int EXPRT mvme_init();
00138    int EXPRT mvme_ioctl(int req, int *parm);
00139    int EXPRT mvme_exit();
00140    int EXPRT mvme_read(void *dst, mvme_addr_t vme_addr, mvme_size_t size);
00141    int EXPRT mvme_write(mvme_addr_t vme_addr, void *src, mvme_size_t n_bytes);
00142    int EXPRT mvme_mmap(void **ptr, mvme_addr_t vme_addr, mvme_size_t size);
00143    int EXPRT mvme_unmap(void *ptr, mvme_size_t size);
00144 
00145 #ifdef __cplusplus
00146 }
00147 #endif

Midas DOC Version 1.9.3 ---- PSI Stefan Ritt ----
Contributions: Pierre-Andre Amaudruz - Suzannah Daviel - Doxygen - Peter Green - Greg Hackman - Gertjan Hofman - Paul Knowles - Rudi Meier - Glenn Moloney - Dave Morris - John M O'Donnell - Konstantin Olchanski - Renee Poutissou - Andreas Suter - Jan M.Wouters - Piotr Adam Zolnierczuk