EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  2020  2021  2022  2023  2024  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: asynPortDriver createParam complains duplicated parameter name
From: "Kim, Kukhee" <[email protected]>
To: Mark Rivers <[email protected]>, Ralph Lange <[email protected]>, EPICS Tech Talk <[email protected]>
Cc: "Kurty, Thomas Charles" <[email protected]>, "Weaver, Matt" <[email protected]>
Date: Tue, 27 Mar 2018 18:08:05 +0000
Hi Mark and Ralph,

Thank you for your discussion and advice for the issue.

Mark, you are right. Even there are error messages for duplications of parameter name, all of the parameters are created successfully.

// ------ Error Message ------//
KlystronConfigure("KlystronPort")
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC5 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8 to list 0, parameter already exists.
2018/03/27 10:56:49.469 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.

// ----- Search in the parameter list ----- //

Parameter 131 type=asynFloat64, name=refsub_phaseC5, value=-113.081536, status=0
Parameter 139 type=asynFloat64, name=refsub_phaseC6T4, value=-123.403931, status=0
Parameter 151 type=asynFloat64, name=refsub_phaseC6, value=-123.403931, status=0
Parameter 159 type=asynFloat64, name=refsub_phaseC7T4, value=-72.263947, status=0
Parameter 171 type=asynFloat64, name=refsub_phaseC7, value=-72.263947, status=0
Parameter 179 type=asynFloat64, name=refsub_phaseC8T4, value=160.250702, status=0
Parameter 191 type=asynFloat64, name=refsub_phaseC8, value=160.250702, status=0
Parameter 199 type=asynFloat64, name=refsub_phaseC9T4, value=-47.933350, status=0

Thus, the error messages were false alarm. 
Thank you for your help.

Best regards,
Kukhee
-------------------------------------------
Kukhee Kim
SLAC National Accelerator Laboratory
2575 Sand Hill Rd, MS 64
Menlo Park, CA 94025
Email: [email protected]
Phone: (650)926-4912
Fax:   (650)926-3800


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Mark Rivers
Sent: Tuesday, March 27, 2018 3:56 AM
To: Ralph Lange; EPICS Tech Talk
Cc: Kurty, Thomas Charles; Weaver, Matt
Subject: Re: asynPortDriver createParam complains duplicated parameter name


> The char * you supply is the same for all parameters, so if the port drive does not create a local copy, all names will always be the same.

asynPortDriver does make a local copy of the string you provide, so that should not be the problem.

Kukhee, after the port driver is created (with the errors you see) type:

asynReport 1, KlystronPort

That will show you all the parameters that we successfully created.

Mark

________________________________
From: [email protected] <[email protected]> on behalf of Ralph Lange <[email protected]>
Sent: Tuesday, March 27, 2018 3:52 AM
To: EPICS Tech Talk
Cc: Kurty, Thomas Charles; Weaver, Matt
Subject: Re: asynPortDriver createParam complains duplicated parameter name

Hi Kukhee,

The name argument to the createParam() method is defined as const char *. (See the documentation<https://epics.anl.gov/modules/soft/asyn/R4-31/asynDoxygenHTML/classasyn_port_driver.html#a20e248e20dcecf64350ad34dda0482be> for more details.) As you are definitely not using constant strings, so you should have seen warnings at compile time.

The char * you supply is the same for all parameters, so if the port drive does not create a local copy, all names will always be the same.

Cheers,
~Ralph



On Tue, Mar 27, 2018 at 7:18 AM, Kim, Kukhee <[email protected]<mailto:[email protected]>> wrote:
Hi Mark,

I am using asyn R4-31  for LCLS1 mission readiness LLRF project.
During creating parameters for asyn Port driver, I got error messages as the followings:

2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC5 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8 to list 0, parameter already exists.
2018/03/26 21:48:32.076 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.

It complains about duplicated parameter names but, I do not have any duplicated name.

I am using the following code to create the parameters.

#define rawWaveformString       "raw_wfC%dT%d"
#define iWaveformString         "i_wfC%dT%d"
#define qWaveformString         "q_wfC%dT%d"
#define phaseWaveformString     "p_wfC%dT%d"
#define amplitudeWaveformString "a_wfC%dT%d"

#define avgPhasePerChnString      "avg_phaseC%dT%d"
#define avgAmplitudePerChnString  "avg_amplitudeC%dT%d"
#define avgPowerPerChnString      "avg_powerC%dT%d"
#define refSubPhasePerChnString   "refsub_phaseC%dT%d"

#define tsUnaware_avgPhasePerChnString      "avg_phaseC%d"
#define tsUnaware_avgAmplitudePerChnString  "avg_amplitudeC%d"
#define tsUnaware_avgPowerPerChnString      "avg_powerC%d"
#define tsUnaware_refSubPhasePerChnString   "refsub_phaseC%d"
--------------------

    for(int i=0; i < MAX_CHANNEL_NUMBER; i++) {
        for(int j =0; ts[j] > 0; j++) {
            if( i < MAX_RAW_CHANNEL_NUMBER ) sprintf(param_name, rawWaveformString,       i, ts[j]); createParam(param_name, asynParamInt16Array,   &p_signalWaveform[i][j].raw);
            sprintf(param_name, iWaveformString,         i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].i);
            sprintf(param_name, qWaveformString,         i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].q);
            sprintf(param_name, phaseWaveformString,     i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].phase);
            sprintf(param_name, amplitudeWaveformString, i, ts[j]); createParam(param_name, asynParamFloat64Array, &p_signalWaveform[i][j].amplitude);

            sprintf(param_name, avgPhasePerChnString,     i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_phase);
            sprintf(param_name, avgAmplitudePerChnString, i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_amplitude);
            sprintf(param_name, avgPowerPerChnString,     i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].avg_power);
            sprintf(param_name, refSubPhasePerChnString,  i, ts[j]); createParam(param_name, asynParamFloat64, &p_signalWaveform[i][j].refsub_phase);
        }

        sprintf(param_name, tsUnaware_avgPhasePerChnString,     i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i].avg_phase);
        sprintf(param_name, tsUnaware_avgAmplitudePerChnString, i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i].avg_amplitude);
        sprintf(param_name, tsUnaware_avgPowerPerChnString,     i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i].avg_power);
        sprintf(param_name, tsUnaware_refSubPhasePerChnString,  i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i].refsub_phase);
    }
----------------

If I commented out one of line in the code, the error messages point out other parameters.
For example, if I commented out the following line.

//        sprintf(param_name, tsUnaware_refSubPhasePerChnString,  i); createParam(param_name, asynParamFloat64, &p_signalWaveform_tsUnaware[i].refsub_phase);

The error message changed as the followings:

2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC5 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC6T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC6 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC7T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC7 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC8T4 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter avg_powerC8 to list 0, parameter already exists.
2018/03/26 22:02:59.907 asynPortDriver:createParam: port=KlystronPort error adding parameter refsub_phaseC9T4 to list 0, parameter already exists.

The parameter avg_powerC5, C6, C7, and C8 were not in the previous error messages.
Would you give me your advice for this issue?

Thank you.
Best regards,
Kukhee
--------------------------------------------
Kukhee Kim
SLAC National Accelerator Laboratory
2575 Sand Hill Rd<https://maps.google.com/?q=2575+Sand+Hill+Rd&entry=gmail&source=g>, MS 64 Menlo Park, CA 94025
Email: [email protected]<mailto:[email protected]>
Phone: (650)926-4912<tel:(650)%20926-4912>
Fax:   (650)926-3800<tel:(650)%20926-3800>



Replies:
Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
References:
asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
Re: asynPortDriver createParam complains duplicated parameter name Ralph Lange
Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers

Navigate by Date:
Prev: Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
Next: Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
Next: Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
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  <20182019  2020  2021  2022  2023  2024 
ANJ, 27 Mar 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·