EPICS Home

Experimental Physics and Industrial Control System


 
1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Here is a Message
From: Mark Rivers <[email protected]>
To: "Szalata, Zenon M." <[email protected]>, "[email protected]" <[email protected]>
Date: Fri, 9 Mar 2012 20:58:13 +0000
This one is simple I think.  Your driver has not implemented the readInt32Array method.  You don't need to implement that if your record is only I/O Intr scanned, but if it is periodically scanned you need to implement it.

Mark


________________________________________
From: Szalata, Zenon M. [[email protected]]
Sent: Friday, March 09, 2012 2:31 PM
To: Mark Rivers; [email protected]
Subject: RE: Here is a Message

Hi Mark,
Yes, I needed to add the mask.  So now that error is gone but I have a new one:

2012/03/09 11:48:48.618 TEST1:GADC0:WF:DATA devAsynInt32Array::callbackWf read error asynPortDriver:readArray not implemented

I guess today is not my day.  I am still missing something in my device driver...
I am looking at two other similar driver modules that I have implemented some time ago, which are using this type of code and I just can't see what I am missing.

Thanks,
Mark

> -----Original Message-----
> From: Mark Rivers [mailto:[email protected]]
> Sent: Friday, March 09, 2012 11:43 AM
> To: Szalata, Zenon M.; [email protected]
> Subject: RE: Here is a Message
>
> Hi Zen,
>
> I suspect you did not set the asynInt32ArrayMask bit to the asynPortDriver
> constructor, telling it that your driver will implement that interface.
>
> The 64-bit issue is not a problem, FTVL=LONG means 32-bit integer in EPICS.
>
> Mark
>
>
> ________________________________________
> From: Szalata, Zenon M. [[email protected]]
> Sent: Friday, March 09, 2012 1:40 PM
> To: Mark Rivers; [email protected]
> Subject: RE: Here is a Message
>
> Hi Mark,
> No, it is a different problem.
> The error is generated by doCallbacksInt32Array(), which is not called at
> interrupt level.
> I notice that there is something wrong with my waveform record to which the
> callback is supposed to put data.
>
> record(waveform,"$(P):WF:DATA"){
>   field( DTYP, "asynInt32ArrayIn")
>   field( INP,  "@asyn($(PORT),0,1)WF_DATA")
>   field( SCAN, "I/O Intr")
>   field( NELM, "16")
>   field( FTVL, "LONG")
>   field( PINI, "1")
> }
>
> At IOC init time I get this message, I don't understand why:
>
> devAsynInt32Array::initCommon, TEST1:GADC0:WF:DATA find asynInt32Array
> interface failed.
> There is reference in my .dbd file to asynInt32ArrayIn.
>
> In a different device driver and a different IOC I use the same record with
> Float32 and that IOC works.
>
> As somewhat different and related issue, I wonder what will happen when I
> build and run this code on a 64 bit machine.  I wonder if field( FTVL,"LONG")
> means that on 64 bit each element will be 8 bytes long?  If so there may be
> trouble.
>
> Thanks,
> Zen
>
>
> > -----Original Message-----
> > From: Mark Rivers [mailto:[email protected]]
> > Sent: Friday, March 09, 2012 11:11 AM
> > To: Szalata, Zenon M.; [email protected]
> > Subject: RE: Here is a Message
> >
> > Hi Zen,
> >
> >
> >
> > This message makes me wonder if you are doing asyn callbacks at interrupt
> > level?  If so, you should not do that, you should have your interrupt routine
> > signal another thread which does the asyn callbacks.
> >
> >
> > >  interrupt: errlogPrintf called from interrupt level
> >
> > Mark
> >
> >
> > ________________________________
> > From: [email protected] [[email protected]] on
> > behalf of Szalata, Zenon M. [[email protected]]
> > Sent: Friday, March 09, 2012 12:59 PM
> > To: [email protected]
> > Subject: Here is a Message
> >
> > While modifying and testing a device driver subclassed from asynPortDriver
> for
> > a VME module I am getting this message:
> >
> >
> > A call to 'assert(status == epicsMutexLockOK)'
> >     by thread 'cbLow' failed in ../../asyn/asynDriver/asynManager.c line 2222.
> > EPICS Release EPICS R3.14.11 $R3-14-11$ $2009/08/28 18:47:36$.
> > Local time is 2012-03-09 10:52:43.182719160 PUS
> > Please E-mail this message to the author or to [email protected]
> > Calling epicsThreadSuspendSelf()
> > Thread cbLow (0x1692b30) suspended
> > interrupt: errlogPrintf called from interrupt level
> >
> > I am using asyn R4.17.
> >
> > I am sending this message because the message tells me to.
> > I will comment out my recent modifications and try to pinpoint which part of
> > my device driver is responsible.
> >
> > Thanks,
> > Zen

Replies:
RE: Here is a Message Szalata, Zenon M.
References:
Here is a Message Szalata, Zenon M.
RE: Here is a Message Mark Rivers
RE: Here is a Message Szalata, Zenon M.
RE: Here is a Message Mark Rivers
RE: Here is a Message Szalata, Zenon M.

Navigate by Date:
Prev: RE: Here is a Message Szalata, Zenon M.
Next: Re: Invitation to test cothread.catools release candidate Matt Newville
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Here is a Message Szalata, Zenon M.
Next: RE: Here is a Message Szalata, Zenon M.
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024