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: | Help to ADCore 3.12.1 with RIXSCam IOC and PluginXIP |
From: | Nicolas Guilhermo Silva Moliterno via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Cc: | SWC <swc at lnls.br> |
Date: | Wed, 20 Sep 2023 17:19:40 +0000 |
Hi everyone, I'm compiling a RIXSCam detector.
I compiled EPICS BASE = 7.0.7
SYNAPPS = 6.2 with AreaDetector -> ADCore, ADSupport.
I was successful in compiling the entire system, detector and epics modules.
But after compiling and changing the version of ADCore, the XIP plugin has been showing strange behavior.
I think it's something related to the version of ADCore=2.2.0, it doesn't handle NDPluginDriverQueueSize and NDPluginDriverNumThreads.
In the new version of ADCore = 3.12.1, it handles these functions.
I got around this problem with the code:
asynStatus NDPluginXIP::writeInt32(asynUser *pasynUser, epicsInt32 value)
{
int function = pasynUser->reason;
asynStatus status = setIntegerParam(function, value);
for (auto histogramParam : _histogramParams)
{
if (histogramParam->HasParameterIndex(function))
{
_histogramParamsChanged = true;
break;
}
}
/* If this parameter belongs to a base class, call its method */
if (function < FIRST_NDPluginXIP_PARAM && function != NDPluginDriverQueueSize && function != NDPluginDriverNumThreads)
status = NDPluginDriver::writeInt32(pasynUser, value);
/* Do callbacks so higher layers see any changes */
callParamCallbacks();
ReportWriteStatus(pasynUser, status, "writeInt32");
return status;
}
But after that, IOC zeroed out the Array Size. And by definition, this is the PluginXIP call.
# Load XIP plugin. Specify BlockCallbacks to true, which is how it should stay.
NDPluginXIPConfigure("XIP1", $(QSIZE), 1, "$(PORT)", 0, -1, -1)
dbLoadRecords("$(ADPLUGINXIP)/db/NDPluginXIP.template", "P=$(PREFIX),R=XIP1:,PORT=XIP1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
dbLoadRecords("$(ADPLUGINXIP)/db/XIPPVDefinitions.template", "P=$(PREFIX),R=XIP1:,PORT=XIP1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
set_requestfile_path("$(ADPLUGINXIP)", "Db")
Thanks.
Nicolas Guilhermo Silva Moliterno
nicolas.moliterno at lnls.br
Grupo SWC-Software de Controle / Control Software Group Laboratório Nacional de Luz Síncrotron - LNLS Centro Nacional de Pesquisa em Energia e Materiais - CNPEM Aviso Legal: Esta mensagem e seus anexos podem conter informações confidenciais e/ou de uso restrito. Observe atentamente seu conteúdo e considere eventual consulta ao remetente antes de copiá-la, divulgá-la ou distribuí-la. Se você recebeu esta mensagem por engano, por favor avise o remetente e apague-a imediatamente. Disclaimer: This email and its attachments may contain confidential and/or privileged information. Observe its content carefully and consider possible querying to the sender before copying, disclosing or distributing it. If you have received this email by mistake, please notify the sender and delete it immediately. |
Attachment:
1.png
Description: 1.png
Attachment:
2.png
Description: 2.png