/* devCPDL200A.c */
/*
* Author: Makoto Tobiyama
* Date: 15_Oct_2018
*/
#include <epicsStdio.h>
#include <devCommonGpib.h>
/***********************************************************************
* asynDriver is distributed subject to a Software License Agreement
* found in file LICENSE that is included with this distribution.
***********************************************************************/
| #define | DSET_AI | | devAiCPDL200A |
| #define | DSET_AO | | devAoCPDL200A |
| #define | DSET_BI | | devBiCPDL200A |
| #define | DSET_BO | | devBoCPDL200A |
| #define | DSET_LI | | devLiCPDL200A |
| #define | DSET_LO | | devLoCPDL200A |
| #define | DSET_MBBO | devMbboCPDL200A |
| #define | DSET_MBBI | devMbbiCPDL200A |
| #define | DSET_SI | | devSiCPDL200A |
| #define | DSET_SO | | devSoCPDL200A |
#include <devGpib.h>
#include <string.h>
#include <stdlib.h>
#define TIMEWINDOW 0.01
static int readString(gpibDpvt *pdpvt,int P1, int P2, char **P3);
/*
* Define end-of-string character(s) here to allow
* easier changes when testing the driver.
*/
/* #define EOSNL "\n" */
#define EOSNL NULL
static struct gpibCmd gpibCmds[] = {
/* CMMAND 0 set_delay ch1 */
{&DSET_AO, GPIBWRITE, IB_Q_LOW, NULL, "DEL1 %lf PS\n", 0, 255, NULL, 0, 0, NULL, NULL, EOSNL },
/* CMMAND 1 get_delay ch1 */
{&DSET_AI, GPIBREAD, IB_Q_LOW, "DEL1?\n", "%lf\n", 0, 4096, NULL, 0, 0, NULL, NULL, EOSNL },
/* CMMAND 2 set_delay ch2 */
{&DSET_AO, GPIBWRITE, IB_Q_LOW, NULL, "DEL2 %lf PS\n", 0, 255, NULL, 0, 0, NULL, NULL, EOSNL },
/* CMMAND 3 get_delay ch2 */
{&DSET_AI, GPIBREAD, IB_Q_LOW, "DEL2?\n", "%lf\n", 0, 4096, NULL, 0, 0, NULL, NULL, EOSNL }
};
/* The following is the number of elements in the command array above. */
| #define NUMPARAMS | sizeof(gpibCmds)/sizeof(struct gpibCmd) |
/******************************************************************************
*
* Initialization for device support
* This is called one time before any records are initialized with a parm
* value of 0. And then again AFTER all record-level init is complete
* with a param value of 1.
*
******************************************************************************/
static long init_ai(int parm)
{
if(parm==0) {
devSupParms.name = "devCPDL200A";
devSupParms.gpibCmds = gpibCmds;
devSupParms.numparams = NUMPARAMS;
devSupParms.timeout = TIMEOUT;
devSupParms.timeWindow = TIMEWINDOW;
devSupParms.respond2Writes = -1.0;
}
return(0);
}
static int readString(gpibDpvt *pdpvt,int P1, int P2, char **P3)
{
stringinRecord *prec = (stringinRecord*)pdpvt->precord;
strncpy(prec->val,pdpvt->msg,sizeof(prec->val));
prec->val[sizeof(prec->val) - 1] = 0;
return(0);
}