/* 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.
***********************************************************************/
#defineDSET_AIdevAiCPDL200A
#defineDSET_AOdevAoCPDL200A
#defineDSET_BIdevBiCPDL200A
#defineDSET_BOdevBoCPDL200A
#defineDSET_LIdevLiCPDL200A
#defineDSET_LOdevLoCPDL200A
#defineDSET_MBBOdevMbboCPDL200A
#defineDSET_MBBIdevMbbiCPDL200A
#defineDSET_SIdevSiCPDL200A
#defineDSET_SOdevSoCPDL200A
#include <devGpib.h> #include <string.h> #include <stdlib.h>
#defineTIMEOUT1
#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 NUMPARAMSsizeof(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); }