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: | Re: Retrieving record name from aSub input/output fields |
From: | Andrew Johnson via Tech-talk <tech-talk at aps.anl.gov> |
To: | "Wang, Andrew" <wang126 at llnl.gov>, EPICS tech-talk <tech-talk at aps.anl.gov> |
Date: | Wed, 27 Jul 2022 11:25:41 -0500 |
A DBLINK is a structure (not a pointer) so your first line of code is copying data that you don't need to do, and the value.pvlink union member is only valid for certain kinds of link, so I would suggest something like this, which adds protection from that by only showing DB and CA links:Update. I think I got it. I had to do the following.
static long func(aSubRecord *prec)
{
DBLINK inpa = prec->inpa;
char *rec_name = inpa.value.pv_link.pvname;
printf("Record name in INPA is %s\n", rec_name);
return 0;
}
From: Wang, Andrew
Sent: Tuesday, July 26, 2022 4:17 PM
To: EPICS tech-talk <tech-talk at aps.anl.gov>
Subject: Retrieving record name from aSub input/output fieldsHi all,
Quick question this time. I was wondering if there was a way to retrieve the name of the record referenced in an OUTLINK/INLINK field such as INPA, OUTA, etc. in the aSub routine.
For instance, suppose I had an aSub record such as the following.
record(aSub, “example”)
{
field(SNAM, “func”)
field(INPA, “rec_in_inpa”)
}
I would like to be able to print the name of the record in INPA within “func”.
static long func(aSubRecord *prec)
{
char *rec_name = prec->____;
printf(“Record name in INPA is %s\n”, rec_name);
return 0;
}
Thanks,
Andy
-- Complexity comes for free, Simplicity you have to work for.