divers/lrs1190.c File Reference

Go to the source code of this file.

Defines

#define INLINE
#define EXTERNAL   extern
#define A32D24_1190   0xf0000000
#define LRS1190_ENABLE(_vmebase)
#define LRS1190_DISABLE(_vmebase)
#define LRS1190_RESET(_vmebase)
#define LRS1190_COUNT(_vmebase, _d)
#define LRS1190_READI4(_vmebase, _d, _r)
#define LRS1190_READL2(_vmebase, _d, _r)
#define LRS1190_READH2(_vmebase, _d, _r)
#define LRS_1190_READL2_TONY(_vmebase, _d, _r)

Typedefs

typedef short int INT
typedef unsigned short int WORD
typedef unsigned long int DWORD

Functions

INLINE void lrs1190_enable (DWORD vmeBase)
INLINE void lrs1190_disable (DWORD vmeBase)
INLINE void lrs1190_reset (DWORD vmeBase)
INLINE void lrs1190_count (DWORD vmeBase, INT *count)
INLINE void lrs1190_readi4 (DWORD vmeBase, DWORD **d, INT r)
INLINE void lrs1190_readl2 (DWORD vmeBase, WORD **d, INT r)
INLINE void lrs1190_readh2 (DWORD vmeBase, WORD **d, INT r)
INLINE void lrs1190_readl2z (DWORD vmeBase, WORD **d, INT r)
void lrs1190 (void)
void ena1190 (DWORD vmeBase)
void dis1190 (DWORD vmeBase)
void res1190 (DWORD vmeBase)
void cn1190 (DWORD vmeBase)
void rd1190l (DWORD vmeBase, DWORD r)
void rd1190h (DWORD vmeBase, DWORD r)
void rd1190 (DWORD vmeBase, DWORD r)


Define Documentation

#define A32D24_1190   0xf0000000

Definition at line 55 of file divers/lrs1190.c.

Referenced by lrs1190_count(), lrs1190_disable(), lrs1190_enable(), lrs1190_readh2(), lrs1190_readi4(), lrs1190_readl2(), lrs1190_readl2z(), and lrs1190_reset().

#define EXTERNAL   extern

Definition at line 36 of file divers/lrs1190.c.

#define INLINE

Definition at line 33 of file divers/lrs1190.c.

#define LRS1190_COUNT ( _vmebase,
_d   ) 

Value:

{\
                                        {\
                                         volatile DWORD _ll, *_pcount;\
                                         _ll = _vmebase;\
                                         _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24_1190);\
                                         *((WORD *) _d) = *(WORD *) _pcount;\
                                       }\
                                    }

Definition at line 90 of file divers/lrs1190.c.

Referenced by cn1190().

#define LRS1190_DISABLE ( _vmebase   ) 

Value:

{\
                                    {\
                                       volatile DWORD _ll, _local;\
                                      _ll = _vmebase;\
                                       _local = ((_ll) | 0x8002) | A32D24_1190;\
                                       *(WORD *)_local = 0x0;\
                                   }\
                                }

Definition at line 70 of file divers/lrs1190.c.

#define LRS1190_ENABLE ( _vmebase   ) 

Value:

{\
                                    {\
                                       volatile DWORD _ll, _local;\
                                       _ll = _vmebase;\
                                       _local = ((_ll) | 0x8002) | A32D24_1190;\
                                       *(WORD *)_local = 0x1;\
                                   }\
                                }

Definition at line 60 of file divers/lrs1190.c.

#define LRS1190_READH2 ( _vmebase,
_d,
_r   ) 

Value:

{\
                                        {\
                                         volatile DWORD _ll, *_pcount, *_local, _count, __r;\
                                         __r = _r;\
                                         _ll = _vmebase;\
                                         _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24_1190);\
                                         _count = *(WORD *) _pcount;\
                                         if (_count <= __r)\
                                           __r = _count;\
                                         _local = (DWORD *)((_ll)  | A32D24_1190);\
                                         while (__r > 0) {\
                                                *(WORD *) _d = *(++((WORD *)_local));\
                                                ((WORD *)_d)++;\
                                                ((WORD *)_local)++;\
                                                __r--;}\
                                         }\
                                      }

Definition at line 138 of file divers/lrs1190.c.

#define LRS1190_READI4 ( _vmebase,
_d,
_r   ) 

Value:

{\
                                        {\
                                         volatile DWORD _ll, *_local, __r, _count;\
                                         DWORD *_pcount;\
                                         __r = _r;\
                                         _ll = _vmebase;\
                                         _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24_1190);\
                                         _count = *(WORD *) _pcount;\
                                         if (_count <= __r)\
                                           __r = _count;\
                                         _local = (DWORD *)((_ll)  | A32D24_1190);\
                                         while (__r > 0) {\
                                                *_d++ = *_local++;\
                                                __r--;}\
                                         }\
                                      }

Definition at line 101 of file divers/lrs1190.c.

#define LRS1190_READL2 ( _vmebase,
_d,
_r   ) 

Value:

{\
                                        {\
                                         volatile DWORD _ll, *_pcount, *_local, __r, _count;\
                                         __r = _r;\
                                         _ll = _vmebase;\
                                         _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24_1190);\
                                         _count = *(WORD *) _pcount;\
                                         if (_count <= __r)\
                                           __r = _count;\
                                         _local = (DWORD *)((_ll)  | A32D24_1190);\
                                         while (__r > 0) {\
                                                *(WORD *) _d = *(WORD *)_local;\
                                                ((WORD *)_d)++;\
                                                (_local)++;\
                                                __r--;}\
                                         }\
                                      }

Definition at line 119 of file divers/lrs1190.c.

#define LRS1190_RESET ( _vmebase   ) 

Value:

{\
                                   {\
                                      volatile DWORD _ll, _dummy, _local;\
                                      _ll = _vmebase;\
                                      _local = (_ll) | A32D24_1190;\
                                      _dummy = *(WORD *) _local;\
                                  }\
                               }

Definition at line 80 of file divers/lrs1190.c.

#define LRS_1190_READL2_TONY ( _vmebase,
_d,
_r   ) 

Value:

{\
                                        {\
                                         volatile DWORD _ll, *_pcount, *_local, __r, _count;\
                                         __r = _r;\
                                         _ll = _vmebase;\
                                         _pcount = (DWORD *) (((_ll) | 0x8000) | A32D24_1190);\
                                         _count = *(WORD *) _pcount;\
                                         if (_count <= __r)\
                                           __r = _count;\
                                         _local = (DWORD *)((_ll)  | A32D24_1190);\
                                         *(WORD *) _d = __r;\
                                         ((WORD *)_d)++;\
                                         while (__r > 0) {\
                                                *(WORD *) _d = *(WORD *)_local;\
                                                ((WORD *)_d)++;\
                                                (_local)++;\
                                                __r--;}\
                                         }\
                                      }

Definition at line 157 of file divers/lrs1190.c.


Typedef Documentation

typedef unsigned long int DWORD

Definition at line 47 of file divers/lrs1190.c.

typedef short int INT

Definition at line 41 of file divers/lrs1190.c.

typedef unsigned short int WORD

Definition at line 42 of file divers/lrs1190.c.


Function Documentation

void cn1190 ( DWORD  vmeBase  ) 

Definition at line 328 of file divers/lrs1190.c.

00329 {
00330    INT count;
00331    lrs1190_count(vmeBase, &count);
00332    printf("Inline counter %i\n", count);
00333    LRS1190_COUNT(vmeBase, &count);
00334    printf("Macro  counter %i\n", count);
00335 }

void dis1190 ( DWORD  vmeBase  ) 

Definition at line 318 of file divers/lrs1190.c.

00319 {
00320    lrs1190_disable(vmeBase);
00321 }

void ena1190 ( DWORD  vmeBase  ) 

Definition at line 313 of file divers/lrs1190.c.

00314 {
00315    lrs1190_enable(vmeBase);
00316 }

void lrs1190 ( void   ) 

Definition at line 285 of file divers/lrs1190.c.

00286 {
00287    printf("\n---> LRS 1190 Dual port memory buffer (lrs1190.c) <---\n");
00288    printf("Macro  : LRS1190_ENABLE (DWORD vmeBase);\n");
00289    printf("Macro  : LRS1190_DISABLE (DWORD vmeBase);\n");
00290    printf("Macro  : LRS1190_CLEAR (DWORD vmeBase);\n");
00291    printf("Macro  : LRS1190_COUNT (DWORD vmeBase, int * count);\n");
00292    printf("Macro  : LRS1190_READI4 (DWORD vmeBase, DWORD *d , int repeat);\n");
00293    printf("Macro  : LRS1190_READL2 (DWORD vmeBase, WORD *d , int repeat);\n");
00294    printf("Macro  : LRS1190_READH2 (DWORD vmeBase, WORD *d , int repeat);\n");
00295    printf("Macro  : LRS1190_READL2_TONY (DWORD vmeBase, DWORD *d , int repeat);\n");
00296    printf("Inline : lrs1190_enable (DWORD vmeBase);\n");
00297    printf("Inline : lrs1190_disable (DWORD vmeBase);\n");
00298    printf("Inline : lrs1190_clear (DWORD vmeBase);\n");
00299    printf("Inline : lrs1190_count (DWORD vmeBase, int * count);\n");
00300    printf("Inline : lrs1190_readi4 (DWORD vmeBase, DWORD *d , int repeat);\n");
00301    printf("Inline : lrs1190_readl2 (DWORD vmeBase, DWORD *d , int repeat);\n");
00302    printf("Inline : lrs1190_readh2 (DWORD vmeBase, DWORD *d , int repeat);\n");
00303    printf("Inline : lrs1190_readl2_tony (DWORD vmeBase, DWORD *d , int repeat);\n");
00304    printf("Test : ena1190  (0x7f0000)         <--- enable  VME buffer\n");
00305    printf("Test : dis1190  (0x7f0000)         <--- disable VME buffer\n");
00306    printf("Test : res1190  (0x7f0000)         <--- reset   VME buffer\n");
00307    printf("Test : cn1190   (0x7f0000)         <--- read    WORD count register\n");
00308    printf("Test : rd1190   (0x7f0000)         <--- read             VME buffer\n");
00309    printf("Test : rd1190l  (0x7f0000)         <--- read low  WORD   VME buffer\n");
00310    printf("Test : rd1190h  (0x7f0000)         <--- read high WORD   VME buffer\n");
00311 }

INLINE void lrs1190_count ( DWORD  vmeBase,
INT count 
)

Definition at line 206 of file divers/lrs1190.c.

Referenced by cn1190(), rd1190(), rd1190h(), and rd1190l().

00207 {
00208    volatile DWORD local;
00209 
00210    local = (vmeBase | 0x8000 | A32D24_1190);
00211    *count = *(WORD *) local;
00212 }

INLINE void lrs1190_disable ( DWORD  vmeBase  ) 

Definition at line 188 of file divers/lrs1190.c.

Referenced by dis1190(), rd1190(), rd1190h(), and rd1190l().

00189 {
00190    volatile DWORD local;
00191 
00192    local = ((vmeBase) | 0x8002) | A32D24_1190;
00193    *(WORD *) local = 0x0;
00194 }

INLINE void lrs1190_enable ( DWORD  vmeBase  ) 

Definition at line 179 of file divers/lrs1190.c.

Referenced by ena1190(), rd1190(), rd1190h(), and rd1190l().

00180 {
00181    volatile DWORD local;
00182 
00183    local = ((vmeBase) | 0x8002) | A32D24_1190;
00184    *(WORD *) local = 0x1;
00185 }

INLINE void lrs1190_readh2 ( DWORD  vmeBase,
WORD **  d,
INT  r 
)

Definition at line 249 of file divers/lrs1190.c.

Referenced by rd1190h().

00250 {
00251    volatile DWORD local, count;
00252 
00253    local = (vmeBase | 0x8000 | A32D24_1190);
00254    count = *(WORD *) local;
00255    if ((int) count <= r)
00256       r = count;
00257    local = vmeBase | A32D24_1190;
00258    while (r > 0) {
00259       *((*d)++) = *(++((WORD *) local));
00260       ((WORD *) local)++;
00261       r--;
00262    }
00263 }

INLINE void lrs1190_readi4 ( DWORD  vmeBase,
DWORD **  d,
INT  r 
)

Definition at line 215 of file divers/lrs1190.c.

Referenced by rd1190().

00216 {
00217    volatile DWORD local, count;
00218 
00219    local = (vmeBase | 0x8000 | A32D24_1190);
00220    count = *(WORD *) local;
00221    if ((int) count <= r)
00222       r = count;
00223    local = vmeBase | A32D24_1190;
00224    while (r > 0) {
00225       *((*d)++) = *((DWORD *) local);
00226       ((DWORD *) local)++;
00227       r--;
00228    }
00229 }

INLINE void lrs1190_readl2 ( DWORD  vmeBase,
WORD **  d,
INT  r 
)

Definition at line 232 of file divers/lrs1190.c.

Referenced by rd1190l().

00233 {
00234    volatile DWORD local, count;
00235 
00236    local = (vmeBase | 0x8000 | A32D24_1190);
00237    count = *(WORD *) local;
00238    if ((int) count <= r)
00239       r = count;
00240    local = vmeBase | A32D24_1190;
00241    while (r > 0) {
00242       *((*d)++) = *((WORD *) local);
00243       ((DWORD *) local)++;
00244       r--;
00245    }
00246 }

INLINE void lrs1190_readl2z ( DWORD  vmeBase,
WORD **  d,
INT  r 
)

Definition at line 266 of file divers/lrs1190.c.

00267 {
00268    volatile DWORD *local, count;
00269 
00270    local = (DWORD *) (vmeBase | 0x8000 | A32D24_1190);
00271    count = *(WORD *) local;
00272    if ((int) count <= r)
00273       r = count;
00274    local = (DWORD *) (vmeBase | A32D24_1190);
00275 
00276    *((*d)++) = r;
00277    while (r > 0) {
00278       *((*d)++) = *((WORD *) local);
00279       (local)++;
00280       r--;
00281    }
00282 }

INLINE void lrs1190_reset ( DWORD  vmeBase  ) 

Definition at line 197 of file divers/lrs1190.c.

Referenced by res1190().

00198 {
00199    volatile DWORD local, dummy;
00200 
00201    local = vmeBase | A32D24_1190;
00202    dummy = *(WORD *) local;
00203 }

void rd1190 ( DWORD  vmeBase,
DWORD  r 
)

Definition at line 371 of file divers/lrs1190.c.

00372 {
00373    DWORD dd[1024], *pdd;
00374    INT i, buf_counter;
00375 
00376    for (i = 0; i < 1024; i++)
00377       dd[i] = 0;
00378    pdd = &dd[0];
00379    lrs1190_disable(vmeBase);
00380    lrs1190_count(vmeBase, &buf_counter);
00381    printf("counter %i\n", buf_counter);
00382    lrs1190_readi4(vmeBase, &pdd, r);
00383    lrs1190_enable(vmeBase);
00384    for (i = 0; i < buf_counter; i++)
00385       printf("%i-> %8.8x\n", i, dd[i]);
00386 }

void rd1190h ( DWORD  vmeBase,
DWORD  r 
)

Definition at line 354 of file divers/lrs1190.c.

00355 {
00356    DWORD dd[1024], *pdd;
00357    INT i, buf_counter;
00358 
00359    for (i = 0; i < 1024; i++)
00360       dd[i] = 0;
00361    pdd = &dd[0];
00362    lrs1190_disable(vmeBase);
00363    lrs1190_count(vmeBase, &buf_counter);
00364    printf("counter %i\n", buf_counter);
00365    lrs1190_readh2(vmeBase, (WORD **) & pdd, r);
00366    lrs1190_enable(vmeBase);
00367    for (i = 0; i < buf_counter; i++)
00368       printf("%i-> %8.8x\n", i, dd[i]);
00369 }

void rd1190l ( DWORD  vmeBase,
DWORD  r 
)

Definition at line 337 of file divers/lrs1190.c.

00338 {
00339    DWORD dd[1024], *pdd;
00340    INT i, buf_counter;
00341 
00342    for (i = 0; i < 1024; i++)
00343       dd[i] = 0;
00344    pdd = &dd[0];
00345    lrs1190_disable(vmeBase);
00346    lrs1190_count(vmeBase, &buf_counter);
00347    printf("counter %i\n", buf_counter);
00348    lrs1190_readl2(vmeBase, (WORD **) & pdd, r);
00349    lrs1190_enable(vmeBase);
00350    for (i = 0; i < buf_counter; i++)
00351       printf("%i-> %8.8x\n", i, dd[i]);
00352 }

void res1190 ( DWORD  vmeBase  ) 

Definition at line 323 of file divers/lrs1190.c.

00324 {
00325    lrs1190_reset(vmeBase);
00326 }


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