diff --git a/src/dev/devCommonGpib.c b/src/dev/devCommonGpib.c index 51e5f2683..546fc3ebd 100644 --- a/src/dev/devCommonGpib.c +++ b/src/dev/devCommonGpib.c @@ -3,6 +3,9 @@ /* * $Log$ + * Revision 1.24 1995/03/10 16:55:40 winans + * Added waveform writing support + * * Revision 1.23 1995/01/06 16:55:52 winans * Added the log parameter to the doc * @@ -1302,13 +1305,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pai,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } else { @@ -1353,13 +1350,7 @@ int srqStatus; { devGpibLib_setPvSevr(pai,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } devGpibLib_aiGpibFinish(pdpvt); /* and finish the processing */ @@ -1404,13 +1395,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(pai,READ_ALARM,VALID_ALARM); } } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } @@ -1452,13 +1437,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(pao,WRITE_ALARM,VALID_ALARM); } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(IDLE); } @@ -1489,13 +1468,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pli,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } else { @@ -1540,13 +1513,7 @@ int srqStatus; { devGpibLib_setPvSevr(pli,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } devGpibLib_liGpibFinish(pdpvt); /* and finish the processing */ @@ -1590,13 +1557,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(pli,READ_ALARM,VALID_ALARM); } } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } @@ -1638,13 +1599,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(plo,WRITE_ALARM,VALID_ALARM); } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(IDLE); } @@ -1671,13 +1626,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pbi,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } else /* interpret response that came back */ { @@ -1720,13 +1669,7 @@ int srqStatus; { devGpibLib_setPvSevr(pbi,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } devGpibLib_biGpibFinish(pdpvt); /* and finish the processing */ @@ -1773,13 +1716,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(pbi,READ_ALARM,VALID_ALARM); } } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } @@ -1821,14 +1758,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pbo,WRITE_ALARM,VALID_ALARM); } - -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(IDLE); } @@ -1856,13 +1786,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pmbbi,WRITE_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } else { @@ -1907,13 +1831,7 @@ int srqStatus; { devGpibLib_setPvSevr(pmbbi,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } devGpibLib_mbbiGpibFinish(pdpvt); /* and finish the processing */ @@ -1960,13 +1878,7 @@ struct gpibDpvt *pdpvt; devGpibLib_setPvSevr(pmbbi,READ_ALARM,VALID_ALARM); } } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } @@ -2009,14 +1921,8 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pmbbo,WRITE_ALARM,VALID_ALARM); } + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif return(IDLE); } @@ -2046,13 +1952,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(psi,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } else { @@ -2097,13 +1997,7 @@ int srqStatus; { devGpibLib_setPvSevr(psi,READ_ALARM,VALID_ALARM); -#if 1 RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif } devGpibLib_stringinGpibFinish(pdpvt); /* and finish the processing */ @@ -2139,13 +2033,7 @@ struct gpibDpvt *pdpvt; psi->val[40] = '\0'; psi->udf = FALSE; } -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } @@ -2185,14 +2073,8 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pso,WRITE_ALARM,VALID_ALARM); } + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#if 1 - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); -#else - pdpvt->head.header.callback.callback = devGpibLib_processCallback; - pdpvt->head.header.callback.priority = priorityLow; - callbackRequest(&pdpvt->head.header.callback); -#endif return(IDLE); } @@ -2225,7 +2107,7 @@ unsigned short val; /* used for EFAST operations only */ bbnode = pdpvt->head.bitBusDpvt->txMsg.node; /* - * check to see if this node has timed out within last 10 sec + * check to see if this node has timed out within last ticks */ if(tickGet() < (pdpvt->phwpvt->tmoVal + parmBlock->timeWindow) ) { @@ -2679,8 +2561,7 @@ struct gpibDpvt *pdpvt; { devGpibLib_setPvSevr(pwf,READ_ALARM,VALID_ALARM); } - - RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); + RegisterProcessCallback(&pdpvt->head.callback, priorityLow, pdpvt); return(0); } diff --git a/src/drv/old/drvGpib.c b/src/drv/old/drvGpib.c index 9bb308cb0..da123335f 100644 --- a/src/drv/old/drvGpib.c +++ b/src/drv/old/drvGpib.c @@ -59,6 +59,9 @@ * * * $Log$ + * Revision 1.3 1995/04/25 15:32:23 winans + * Changed name of HiDEOS link configuration command/function. + * * Revision 1.2 1995/04/12 19:31:41 winans * Added support for the HiDEOS system as a GPIB bus transport agent. * @@ -974,12 +977,36 @@ char *buffer; /* data to transfer */ int length; /* number of bytes to transfer */ int time; /* time to wait on the DMA operation */ { - int status; - short cnt; - register struct ibregs *b; - char w_imr2; - int temp_addr; - int tmoTmp; + int status = ERROR; + unsigned short cnt; + struct ibregs *b; + char w_imr2; + int temp_addr; + int tmoTmp; + +#ifdef NI_GPIB_LOOP_LENGTH +#define NI_GPIB_CHUNKSIZE 0x0ffff + while (length > 0) + { + if (length > NI_GPIB_CHUNKSIZE) + { + cnt = NI_GPIB_CHUNKSIZE; + length -= NI_GPIB_CHUNKSIZE; + } + else + { + cnt = length; + length = 0; + } +#else + cnt = length; + + if (cnt > 0x0fffe) + { + errMessage(S_IB_SIZE, "NI-1014 max length (65535) exceeded"); + return(ERROR); + } +#endif if (pNiLink[link]->A24BounceBuffer == NULL) { @@ -993,25 +1020,24 @@ int time; /* time to wait on the DMA operation */ logMsg("Got a bouncer at 0x%8.8X\n", pNiLink[link]->A24BounceBuffer); } - if (pNiLink[link]->A24BounceSize < length) + if (pNiLink[link]->A24BounceSize < cnt) { /* Reallocate a larger bounce buffer */ devLibA24Free(pNiLink[link]->A24BounceBuffer); /* Loose the old one */ - if ((pNiLink[link]->A24BounceBuffer = devLibA24Malloc(length)) == NULL) + if ((pNiLink[link]->A24BounceBuffer = devLibA24Malloc(cnt)) == NULL) { errMessage(S_IB_A24 ,"niPhysIo ran out of A24 memory!"); pNiLink[link]->A24BounceSize = 0; pNiLink[link]->A24BounceBuffer = NULL; return(ERROR); } - pNiLink[link]->A24BounceSize = length; + pNiLink[link]->A24BounceSize = cnt; if(ibDebug > 5) logMsg("Got a new bouncer at 0x%8.8X\n", pNiLink[link]->A24BounceBuffer); } b = pNiLink[link]->ibregs; - cnt = length; b->auxmr = AUX_GTS; /* go to standby mode */ b->ch1.ccr = D_SAB; /* halt channel activity */ @@ -1049,7 +1075,7 @@ int time; /* time to wait on the DMA operation */ else /* (dir == READ) */ { /* We will be writing, copy data into the bounce buffer */ - memcpy(pNiLink[link]->A24BounceBuffer, buffer, length); + memcpy(pNiLink[link]->A24BounceBuffer, buffer, cnt); if (cnt != 1) pNiLink[link]->DmaStuff->cc_byte = AUX_SEOI; /* send EOI with last byte */ @@ -1231,9 +1257,13 @@ int time; /* time to wait on the DMA operation */ if (dir == READ) { /* Copy data from the bounce buffer to the user's buffer */ - memcpy(buffer, pNiLink[link]->A24BounceBuffer, length); + memcpy(buffer, pNiLink[link]->A24BounceBuffer, cnt); } +#ifdef NI_GPIB_LOOP_LENGTH + buffer += NI_GPIB_CHUNKSIZE; + } +#endif return (status); }