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