19 #include <epicsString.h> 23 #include <initHooks.h> 24 #include <epicsExit.h> 26 #include <devLibPCI.h> 28 #include <epicsInterrupt.h> 29 #include <epicsThread.h> 37 #include <epicsExport.h> 52 #define strtok_r(strToken,strDelimit,lasts ) (*(lasts) = strtok((strToken),(strDelimit))) 57 static const iocshArg mrmEvrSetupPCIArg0 = {
"name",iocshArgString};
58 static const iocshArg mrmEvrSetupPCIArg1 = {
"PCI id or slot=#",iocshArgString};
59 static const iocshArg *
const mrmEvrSetupPCIArgs[2] =
60 {&mrmEvrSetupPCIArg0,&mrmEvrSetupPCIArg1};
61 static const iocshFuncDef mrmEvrSetupPCIFuncDef =
62 {
"mrmEvrSetupPCI",2,mrmEvrSetupPCIArgs};
63 static void mrmEvrSetupPCICallFunc(
const iocshArgBuf *
args)
68 static const iocshArg mrmEvrSetupVMEArg0 = {
"name",iocshArgString};
69 static const iocshArg mrmEvrSetupVMEArg1 = {
"Bus number",iocshArgInt};
70 static const iocshArg mrmEvrSetupVMEArg2 = {
"A32 base address",iocshArgInt};
71 static const iocshArg mrmEvrSetupVMEArg3 = {
"IRQ Level 1-7 (0 - disable)",iocshArgInt};
72 static const iocshArg mrmEvrSetupVMEArg4 = {
"IRQ vector 0-255",iocshArgInt};
73 static const iocshArg *
const mrmEvrSetupVMEArgs[5] =
74 {&mrmEvrSetupVMEArg0,&mrmEvrSetupVMEArg1,&mrmEvrSetupVMEArg2,&mrmEvrSetupVMEArg3,&mrmEvrSetupVMEArg4};
75 static const iocshFuncDef mrmEvrSetupVMEFuncDef =
76 {
"mrmEvrSetupVME",5,mrmEvrSetupVMEArgs};
77 static void mrmEvrSetupVMECallFunc(
const iocshArgBuf *
args)
79 mrmEvrSetupVME(args[0].sval,args[1].ival,args[2].ival,args[3].ival,args[4].ival);
83 static const iocshArg mrmEvrDumpMapArg0 = {
"name",iocshArgString};
84 static const iocshArg mrmEvrDumpMapArg1 = {
"Event code",iocshArgInt};
85 static const iocshArg mrmEvrDumpMapArg2 = {
"Mapping select 0 or 1",iocshArgInt};
86 static const iocshArg *
const mrmEvrDumpMapArgs[3] =
87 {&mrmEvrDumpMapArg0,&mrmEvrDumpMapArg1,&mrmEvrDumpMapArg2};
88 static const iocshFuncDef mrmEvrDumpMapFuncDef =
89 {
"mrmEvrDumpMap",3,mrmEvrDumpMapArgs};
90 static void mrmEvrDumpMapCallFunc(
const iocshArgBuf *
args)
96 static const iocshArg mrmEvrForwardArg0 = {
"name",iocshArgString};
97 static const iocshArg mrmEvrForwardArg1 = {
"Event spec string",iocshArgString};
98 static const iocshArg *
const mrmEvrForwardArgs[2] =
99 {&mrmEvrForwardArg0,&mrmEvrForwardArg1};
100 static const iocshFuncDef mrmEvrForwardFuncDef =
101 {
"mrmEvrForward",2,mrmEvrForwardArgs};
102 static void mrmEvrForwardCallFunc(
const iocshArgBuf *
args)
107 static const iocshArg mrmEvrLoopbackArg0 = {
"name",iocshArgString};
108 static const iocshArg mrmEvrLoopbackArg1 = {
"RX-loopback",iocshArgInt};
109 static const iocshArg mrmEvrLoopbackArg2 = {
"TX-loopback",iocshArgInt};
110 static const iocshArg *
const mrmEvrLoopbackArgs[3] =
111 {&mrmEvrLoopbackArg0,&mrmEvrLoopbackArg1,&mrmEvrLoopbackArg2};
112 static const iocshFuncDef mrmEvrLoopbackFuncDef =
113 {
"mrmEvrLoopback",3,mrmEvrLoopbackArgs};
115 static void mrmEvrLoopbackCallFunc(
const iocshArgBuf *
args)
124 iocshRegister(&mrmEvrSetupPCIFuncDef,mrmEvrSetupPCICallFunc);
125 iocshRegister(&mrmEvrSetupVMEFuncDef,mrmEvrSetupVMECallFunc);
126 iocshRegister(&mrmEvrDumpMapFuncDef,mrmEvrDumpMapCallFunc);
127 iocshRegister(&mrmEvrForwardFuncDef,mrmEvrForwardCallFunc);
128 iocshRegister(&mrmEvrLoopbackFuncDef,mrmEvrLoopbackCallFunc);
void epicsShareFunc mrmEvrLoopback(const char *id, int rxLoopback, int txLoopback)
long epicsShareFunc mrmEvrReport(int level)
void epicsShareFunc mrmEvrSetupVME(const char *id, int slot, int base, int level, int vector)
void epicsShareFunc mrmEvrSetupPCI(const char *id, const char *pcispec)
void epicsShareFunc mrmEvrDumpMap(const char *id, int evt, int ram)
epicsExportRegistrar(mrmsetupreg)
void epicsShareFunc mrmEvrInithooks(initHookState state)
epicsExportAddress(drvet, drvEvrMrm)
void epicsShareFunc mrmEvrForward(const char *id, const char *events_iocsh)
Setup Event forwarding to downstream link.