getting in sync with LANL

This commit is contained in:
Marty Kraimer
1992-08-26 08:31:33 +00:00
parent 27daa9a3c7
commit 8bc49ef145
2 changed files with 71 additions and 22 deletions
+29 -2
View File
@@ -46,6 +46,7 @@
* and cometDoneTask to allow an external routine
* to control hardware scan mode. Added variable
* scan_control to flag operating mode.
* .09 mrk 082692 added DSET
*/
static char *sccsID = "$Id$\t$Date$";
@@ -71,13 +72,39 @@ static char *sccsID = "$Id$\t$Date$";
#include <task_params.h>
#include <fast_lock.h>
#include <vme.h>
#include <drvSup.h>
static long report();
static long init();
struct {
long number;
DRVSUPFUN report;
DRVSUPFUN init;
} drvComet={
2,
report,
init};
static long report(level)
int level;
{
comet_io_report(level);
return(0);
}
static long init()
{
comet_init();
return(0);
}
#define COMET_NCHAN 4
#define COMET_CHANNEL_MEM_SIZE 0x20000 /* bytes */
#define COMET_DATA_MEM_SIZE (COMET_CHANNEL_MEM_SIZE*COMET_NCHAN)
static char *shortaddr;
static short scan_control; /* scan type/rate (if >0 normal, <=0 external control) */
/* comet conrtol register map */
struct comet_cr{
unsigned char csrh; /* control and status register - high byte */
@@ -305,7 +332,7 @@ register unsigned short card;
register unsigned int *pcbroutine;
register unsigned int *parg; /* number of values read */
{
register struct comet_cr *pcomet_csr;
register struct comet_cr *pcomet_csr=0;
register unsigned short *pcomet_data;
/* check for valid card number */
+42 -20
View File
@@ -36,12 +36,41 @@
* should have been used
* .04 08-11-92 joh now allows for runtime reconfiguration of
* the addr map
* .05 08-25-92 mrk added DSET; made masks a macro
*/
#include "vxWorks.h"
#include "taskLib.h"
#include "vme.h"
#include "module_types.h"
#include <drvSup.h>
static long report();
static long init();
struct {
long number;
DRVSUPFUN report;
DRVSUPFUN init;
} drvXy240={
2,
report,
init};
static long report(level)
int level;
{
xy240_io_report(level);
return(0);
}
static long init()
{
xy240_init();
return(0);
}
#define XY240_ADDR0 (bi_addrs[XY240_BI])
#define XY240_MAX_CARDS (bi_num_cards[XY240_BI])
@@ -188,11 +217,7 @@ register initialization
if (taskSpawn(name,111,VX_SUPERVISOR_MODE|VX_STDIO,1000,dio_scan) == ERROR)
printf("Unable to create scan task\n");
}
return(0);
}
/*
@@ -265,6 +290,7 @@ xy240_bo_driver(card,val,mask)
dio[card].dptr->port6_7 = (unsigned short)(work >> 16);
dio[card].dptr->port4_5 = (unsigned short)work;
return(0);
}
@@ -312,7 +338,7 @@ else if (port == 7)
dio[card].dptr->port6_7 = val;
return -7;
}
return(0);
}
/*XY240_WRITE
@@ -326,10 +352,8 @@ xy240_write(card,val)
{
return xy240_bo_driver(card,val,0xffffffff);
}
#define masks(K) ((1<<K))
xy240_io_report(level)
short int level;
{
@@ -350,7 +374,6 @@ short int level;
xy240_bi_io_report(){
extern masks[];
short int num_chans,i,j,k,l,m,status;
int ival,jval,kval,lval,mval;
unsigned int *prval;
@@ -372,25 +395,25 @@ xy240_bi_io_report(){
if(j < num_chans){
xy240_bi_driver(i,masks[j],&jval);
xy240_bi_driver(i,masks(j),&jval);
if (jval != 0)
jval = 1;
printf("Chan %d = %x\t ",j,jval);
}
if(k < num_chans){
xy240_bi_driver(i,masks[k],&kval);
xy240_bi_driver(i,masks(k),&kval);
if (kval != 0)
kval = 1;
printf("Chan %d = %x\t ",k,kval);
}
if(l < num_chans){
xy240_bi_driver(i,masks[l],&lval);
xy240_bi_driver(i,masks(l),&lval);
if (lval != 0)
lval = 1;
printf("Chan %d = %x \t",l,lval);
}
if(m < num_chans){
xy240_bi_driver(i,masks[m],&mval);
xy240_bi_driver(i,masks(m),&mval);
if (mval != 0)
mval = 1;
printf("Chan %d = %x \n",m,mval);
@@ -402,7 +425,6 @@ xy240_bi_io_report(){
}
xy240_bo_io_report(){
extern masks[];
short int num_chans,i,j,k,l,m,status;
int ival,jval,kval,lval,mval;
unsigned int *prval;
@@ -423,25 +445,25 @@ xy240_bo_io_report(){
m += IOR_MAX_COLS){
if(j < num_chans){
xy240_bo_read(i,masks[j],&jval);
xy240_bo_read(i,masks(j),&jval);
if (jval != 0)
jval = 1;
printf("Chan %d = %x\t ",j,jval);
}
if(k < num_chans){
xy240_bo_read(i,masks[k],&kval);
xy240_bo_read(i,masks(k),&kval);
if (kval != 0)
kval = 1;
printf("Chan %d = %x\t ",k,kval);
}
if(l < num_chans){
xy240_bo_read(i,masks[l],&lval);
xy240_bo_read(i,masks(l),&lval);
if (lval != 0)
lval = 1;
printf("Chan %d = %x \t",l,lval);
}
if(m < num_chans){
xy240_bo_read(i,masks[m],&mval);
xy240_bo_read(i,masks(m),&mval);
if (mval != 0)
mval = 1;
printf("Chan %d = %x \n",m,mval);