1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Problems with StreamDevice |
From: | Mark Rivers via Tech-talk <[email protected]> |
To: | "'[email protected]'" <[email protected]>, 'Dirk Zimoch' <[email protected]> |
Date: | Fri, 15 Feb 2019 18:17:12 +0000 |
I am running StreamDevice 2.8.8. I am having 3 issues. I don’t know if these are bugs or features, because I cannot find the release notes for StreamDevice. Where are
they located?
1)
StreamDevice seems to set asynTraceMask to 0 for the port. This is my startup script. ************************** < envPaths # Tell EPICS all about the record types, device-support modules, drivers, # etc. in this build from CARS dbLoadDatabase("../../dbd/CARSLinux.dbd") CARSLinux_registerRecordDeviceDriver(pdbbase) drvAsynIPPortConfigure("PORT","gse-tetramm2:10001",0,0,0) asynOctetSetInputEos(PORT, 0, "\r\n") asynOctetSetOutputEos(PORT, 0, "\r") asynSetTraceIOMask(PORT, 0, 2) asynSetTraceMask(PORT, 0, 9) asynSetOption(PORT, 0, "disconnectOnReadTimeout", "Y") dbLoadRecords("stream2.db", "P=13TEST:, R=R:, PORT=PORT") dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=13TEST:, R=asyn1, PORT=PORT, ADDR=0, IMAX=80, OMAX=80") iocInit ************************** Note that it sets the trace mask to 9 with asynSetTraceMask. However, when I boot and look at the trace mask with asynReport it is 0. The TraceIOMask is 2 like I set it,
but the traceMask is 0. ************************** epics> asynReport 10 PORT multiDevice:No canBlock:Yes autoConnect:Yes enabled:Yes connected:Yes numberConnects 1 nDevices 0 nQueued 0 blocked:No asynManagerLock:No synchronousLock:No exceptionActive:No exceptionUsers 5 exceptionNotifys 0 traceMask:0x0 traceIOMask:0x2 traceInfoMask:0x1 interposeInterfaceList asynOctet pinterface 0x1da89e0 drvPvt 0x3624870 interfaceList asynCommon pinterface 0x1ce6770 drvPvt 0x3620c10 asynOption pinterface 0x1ce6790 drvPvt 0x3620c10 asynOctet pinterface 0x3620d30 drvPvt 0x3620c10 Port gse-tetramm2:10001: Connected fd: 5 Characters written: 152 Characters read: 208 ************************** If I uncomment the line that loads the StreamDevice records then asynTrace is set correctly when I boot. #dbLoadRecords("stream2.db", "P=13TEST:, R=R:, PORT=PORT") ************************** epics> asynReport 10 PORT multiDevice:No canBlock:Yes autoConnect:Yes enabled:Yes connected:Yes numberConnects 1 nDevices 0 nQueued 0 blocked:No asynManagerLock:No synchronousLock:No exceptionActive:No exceptionUsers 2 exceptionNotifys 0 traceMask:0x9 traceIOMask:0x2 traceInfoMask:0x1 interposeInterfaceList asynOctet pinterface 0x1da89e0 drvPvt 0x2c6b830 interfaceList asynCommon pinterface 0x1ce6770 drvPvt 0x2c67bd0 asynOption pinterface 0x1ce6790 drvPvt 0x2c67bd0 asynOctet pinterface 0x2c67cf0 drvPvt 0x2c67bd0 Port gse-tetramm2:10001: Connected fd: 6 Characters written: 0 Characters read: 0 ************************** If I put the asynSetTraceMask after iocInit it works. Is this indeed something StreamDevice is doing?
2)
If I have an error in my protocol file I am not seeing any error messages. I used to see them in previous versions. This is what the protocol should be, command is CHN. readChans { out "CHN:?"; in "CHN:%d"; } If I break the protocol by changing CHN to CHAN readChans { out "CHAN:?"; in "CHAN:%d"; } then this is what I see with asynTrace on. Note that the CHAN:? command returned NAK:00 which the protocol won’t parse. 2019/02/15 12:07:15.074 gse-tetramm2:10001 write 7 CHAN:?\r 2019/02/15 12:07:15.075 gse-tetramm2:10001 read 8 NAK:00\r\n 2019/02/15 12:07:15.077 gse-tetramm2:10001 write 6 HVV:?\r 2019/02/15 12:07:15.078 gse-tetramm2:10001 read 10 HVV:0.00\r\n The record is indeed in invalid alarm but I don’t see any error messages from StreamDevice (STAT=CALC, SEVR=INVALID). Is this new behavior to see no errors? epics> dbpr 13TEST:R:Chans 3 ACKS: INVALID ACKT: YES ADEL: 0 AFTC: 0 AFVL: 0 ALST: 0 AOFF: 0 ASG : ASLO: 1 BKPT: 00 DESC: DISA: 0 DISP: 0 DISS: NO_ALARM DISV: 1 DTYP: stream EGU : EGUF: 0 EGUL: 0 EOFF: 0 ESLO: 1 EVNT: FLNK: CONSTANT HHSV: NO_ALARM HIGH: 0 HIHI: 0 HOPR: 0 HSV : NO_ALARM HYST: 0 INIT: 0 INP : INST_IO @stream2.proto readChans PORT 0 0 LALM: 0 LBRK: 0 LCNT: 0 LINR: NO CONVERSION LLSV: NO_ALARM LOLO: 0 LOPR: 0 LOW : 0 LSV : NO_ALARM MDEL: 0 MLST: 0 NAME: 13TEST:R:Chans NSEV: NO_ALARM NSTA: NO_ALARM ORAW: 0 PACT: 0 PHAS: 0 PINI: NO PREC: 0 PRIO: LOW PROC: 0 PUTF: 0 ROFF: 0 RPRO: 0 RVAL: 0 SCAN: 1 second SDIS: CONSTANT SDLY: -1 SEVR: INVALID SIML: CONSTANT SIMM: NO SIMS: NO_ALARM SIOL: CONSTANT SMOO: 0 SSCN: <nil> STAT: CALC SVAL: 0 TIME: 2019-02-15 12:10:16.524791659 TPRO: 0 TSE : 0 TSEL: CONSTANT UDF : 1 UDFS: INVALID VAL : 0
3)
If I have a communications error I don’t see any error messages. I used to see them in previous versions. This is what I see when I disconnect the cable to my
device. 2019/02/15 12:12:18.494 gse-tetramm2:10001 read 10 HVV:0.00\r\n 2019/02/15 12:12:19.488 gse-tetramm2:10001 write 7 CABLE DISCONNECTED TEMP:?\r 2019/02/15 12:12:36.488 gse-tetramm2:10001 write 7 TEMP:?\r 2019/02/15 12:12:36.489 gse-tetramm2:10001 read 9 There are no error messages from StreamDevice. This is with disconnectOnReadTimeout=Y, but there are no messages with that not set either. Thanks, Mark |