#include <ansi_c.h>
#include "CAENV462.h"
#include "CAENV462_DEF.h"
#ifdef SISVME
#include "sisvme_dll.h"
#endif
#ifdef WIENVME
#include "wienvme_dll.h"
#endif
static unsigned long ModuleAddress[10];
int _VI_FUNC V462_map (int ModuleNumber,
unsigned long ModuleOffset, int print)
{
unsigned short vsr, mmt, fix;
ModuleAddress[ModuleNumber] = ModuleOffset;
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_FIX,&fix);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_MMT,&mmt);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_VSR,&vsr);
if (print) {
printf("fixed code = 0x%04x\n", fix
);
printf("manufacturer number = %i\n", MANUFACTURER
(mmt
));
printf("module type = %i\n", MODULE_TYPE
(mmt
));
printf("version = %i\n", VERSION
(vsr
));
printf("serial no. = %i\n", SERIAL
(vsr
));
}
if ((fix != FIX_CODE) || (mmt != CAENV462_MMT_VALUE)) return 1;
return 0;
}
int _VI_FUNC V462_set0
(int ModuleNumber
, int time)
{
int i;
unsigned int status;
union {
unsigned short lsbmsb[2];
unsigned long bcd;
} set;
set.bcd = 0;
for (i=0;i<32;i+=4) {
set.
bcd |= (time % 10) << i
;
}
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_MSB0, &set.lsbmsb[1]);
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_LSB0, &set.lsbmsb[0]);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return (status & CAENV462_STATUS);
}
int _VI_FUNC V462_set1
(int ModuleNumber
, int time)
{
int i;
unsigned int status;
union {
unsigned short lsbmsb[2];
unsigned long bcd;
} set;
set.bcd = 0;
for (i=0;i<32;i+=4) {
set.
bcd |= (time % 10) << i
;
}
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_MSB1, &set.lsbmsb[1]);
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_LSB1, &set.lsbmsb[0]);
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
int _VI_FUNC V462_start0 (int ModuleNumber)
{
unsigned int status;
unsigned short dum16= CAENV462_START0;
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_CSR, &dum16 );
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
int _VI_FUNC V462_start1 (int ModuleNumber)
{
unsigned int status;
unsigned short dum16= CAENV462_START1;
VME_A24D16_W(ModuleAddress[ModuleNumber] + CAENV462_CSR, &dum16 );
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return ( status & CAENV462_STATUS );
}
int _VI_FUNC V462_status (int ModuleNumber)
{
unsigned int status;
VME_A24D16_R(ModuleAddress[ModuleNumber] + CAENV462_CSR, &status);
return (status & CAENV462_STATUS );
}