Hi Kukhee,
Something is not right. Can you send your driver and I'll see if I can spot the problem.
Mark
> -----Original Message-----
> From: Kim, Kukhee <[email protected]>
> Sent: Tuesday, March 27, 2018 3:44 PM
> To: Mark Rivers <[email protected]>; Ralph Lange <[email protected]>; EPICS
> Tech Talk <[email protected]>
> Cc: Kurty, Thomas Charles <[email protected]>; Weaver, Matt
> <[email protected]>
> Subject: RE: asynPortDriver createParam complains duplicated parameter name
>
> Hi Mark,
>
> Thank you for your response.
> There is a strange symptom as I mentioned in the first email in this thread.
>
> Asyn reported duplicated parameter about "refsub_phaseC5".
> So, I removed a code line which related with above parameter.
> Then, Asyn reported error message about " avg_powerC5" which was not appeared previous
> error messages.
> If I removed the code line related with "avg_powerC5", Asyn reported error message for
> another parameter which was not appeared in prior error message.
>
> So, it is moving. That's why I asked your advice.
>
> Thank you.
> 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: Mark Rivers [mailto:[email protected]]
> Sent: Tuesday, March 27, 2018 12:58 PM
> To: Kim, Kukhee; Ralph Lange; EPICS Tech Talk
> Cc: Kurty, Thomas Charles; Weaver, Matt
> Subject: Re: asynPortDriver createParam complains duplicated parameter name
>
> Hi Kukhee,
>
>
> > Thus, the error messages were false alarm.
>
>
> I don't believe the error messages are false alarms. This is asynPortDriver::createParam,
> which prints the error message:
>
>
> asynStatus asynPortDriver::createParam(int list, const char *name, asynParamType type, int
> *index) {
> asynStatus status;
> static const char *functionName = "createParam";
>
> status = this->params[list]->createParam(name, type, index);
> if (status == asynParamAlreadyExists) {
> asynPrint(this->pasynUserSelf, ASYN_TRACE_ERROR,
> "%s:%s: port=%s error adding parameter %s to list %d, parameter already exists.\n",
> driverName, functionName, portName, name, list);
> return(asynError);
> }
>
>
>
> This is paramList::createParam, which is what is called from asynPortDriver::createParam
> above. Note that it is returning asynParamAlreadyExists, which means it did not create the
> parameter on that call.
>
>
> asynStatus paramList::createParam(const char *name, asynParamType type, int *index) {
> //static const char *functionName = "createParam";
>
> if (this->findParam(name, index) == asynSuccess) return asynParamAlreadyExists;
>
> std::auto_ptr<paramVal> param(new paramVal(name, type));
>
> vals.push_back(param.get());
> flags.reserve(vals.size());
> param.release();
> *index = vals.size()-1;
> return asynSuccess;
> }
>
>
> Thus if you see that error message then I am quite sure there is an error in your driver and
> you have attempted to create the same parameter more than once.
>
> Mark
>
>
> ________________________________
> From: Kim, Kukhee <[email protected]>
> Sent: Tuesday, March 27, 2018 1:08 PM
> To: Mark Rivers; Ralph Lange; EPICS Tech Talk
> Cc: Kurty, Thomas Charles; Weaver, Matt
> Subject: RE: asynPortDriver createParam complains duplicated parameter name
>
> 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#a20e248e20dcecf64350ad34dda0482b
> e> 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 Kim, Kukhee
- 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
- RE: asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- Re: asynPortDriver createParam complains duplicated parameter name Mark Rivers
- RE: asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- Navigate by Date:
- Prev:
RE: asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- Next:
asynMotor: NewFocus 874x Picomotor Controller Driver Angelic Ebbers
- 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
- Navigate by Thread:
- Prev:
RE: asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- Next:
RE: asynPortDriver createParam complains duplicated parameter name Kim, Kukhee
- 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
|