From 7523729bd6152adefd53a3775f456d4dfb37ff54 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Thu, 6 Aug 1992 16:27:46 +0000 Subject: [PATCH] now conforms with std init and report interface --- src/drv/drvVmi4100.c | 47 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/drv/drvVmi4100.c b/src/drv/drvVmi4100.c index bab15b59a..41cb00ab5 100644 --- a/src/drv/drvVmi4100.c +++ b/src/drv/drvVmi4100.c @@ -42,16 +42,46 @@ * .08 01-10-92 bg Added levels to io_report and warning message * that raw values cannot be read from vmi4100 * card even it the level is 1. + * .09 08-05-92 joh arguments to init routine now conform with the + * standard + * .10 08-05-92 joh added EPICS driver dispatch table + * .11 08-05-92 joh moved parameters from ao_driver.h to here */ #include #include +#include +#include #include "module_types.h" -#include "ao_driver.h" +/* VMIVME 4100 defines */ +#define MAX_AO_VMI_CARDS 8 +#define VMI_ENABLE_OUT 0xc100 /*Fail LED off, enable P3 output.*/ + +/* memory structure of the Xycom 4100 Interface */ + +union aoVMI{ + unsigned short csr; + unsigned short data[16]; +}; + +long vmi4100_io_report(); +long vmi4100_init(); + +struct { + long number; + DRVSUPFUN report; + DRVSUPFUN init; +} drvVmi4100={ + 2, + vmi4100_io_report, + vmi4100_init}; + +LOCAL unsigned short *pao_vmi4100[MAX_AO_VMI_CARDS]; -static int vmi4100_addr; +LOCAL +int vmi4100_addr; /* @@ -59,10 +89,10 @@ static int vmi4100_addr; * * intialize the VMI analog outputs */ -vmi4100_init(pcards_present,base_addr) -register unsigned short **pcards_present; -register unsigned short *base_addr; +long vmi4100_init() { + register unsigned short **pcards_present = pao_vmi4100; + register unsigned short *base_addr = ao_addrs[VMI4100]; short shval; int status; register union aoVMI *pcard; @@ -88,7 +118,10 @@ register unsigned short *base_addr; } } + + return OK; } + /* * vmi4100_driver @@ -137,7 +170,7 @@ unsigned short *pval; * VME analog output driver */ -vmi4100_io_report(level) +long vmi4100_io_report(level) short int level; { register int i; @@ -153,5 +186,7 @@ vmi4100_io_report(level) } } + + return OK; }