Rockwell Automation 6008-SV2R VMEbus remote I/O Scanner User Manual
Page 164

Chapter
Programming the Scanner
8
8Ć30
/* 6008–SV2 Scanner Constants */
#define SVC_SETUP_SIZE
7
#define SVC_IOASWBLK_SIZE
32
#define SVC_FAULTGRP_SIZE
32
#define SVS_SETUP_SIZE
12
#define SVS_IOASWBLK_SIZE
64
#define SVS_FAULTGRP_SIZE
64
/* 6008–SV2 Scanner Channel semaphore */
#define SEMAPHORE
0x0080
/* bit 7 of semaphore word */
/*
** Channel Context structure
*/
typedef struct {
unsigned long
ScannerAddress;
/* VME address */
unsigned short
AddressMode;
/* VME address mode */
int
ScannerMode;
/* operating mode (SVC,SVS) */
unsigned short
CmdCmplIrq;
/* cmd–complete IRQ level */
unsigned short
CmdCmplVec;
/* cmd–complete IRQ vector */
unsigned long
TimeOut;
/* interrupt timeout, in ms */
char far
*ScannerBase;
/* local ptr to channel */
char far
*OutputTable;
/* channel output table */
char far
*InputTable;
/* channel input table */
char far
*ControlStatusArea; /* channel CSA */
char far
*GeneralDataArea;
/* channel general data area */
char far
*ConBTWTable;
/* continuous BT write table */
char far
*ConBTRTable;
/* continuous BT read table */
char far
*ResetArea;
/* reset area */
char far
*VmeIdArea;
/* VME ID/interrupt area */
unsigned long
stash;
/* bus manager context */
} channel;
/*
** Control/Status Area structure
*/
typedef struct {
unsigned short
opstat;
/* Operating Status Word */
unsigned short
cnfstat;
/* Confirmation Status Word */
unsigned short
cmd;
/* Command Word */
unsigned short
addr;
/* Block Transfer Address Word */
unsigned short
tag;
/* Block Transfer Tag Word */
unsigned short
irq;
/* Block Transfer Interrupt Word */
unsigned short
iitm;
/* IITM Index Word */
unsigned short
res[7];
/* reserved fields */
unsigned short
semaphore;
/* Semaphore Word */
unsigned short
datalen;
/* Length of Data Word */
} csa_data;