Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PvaClientNTMultiMonitor lacks a method to check which channels returned with change after poll #66

Open
marciodo opened this issue Jan 13, 2021 · 7 comments

Comments

@marciodo
Copy link

I have the impression that, after a poll, I have to examine the contents of the "values" array if I want to check which channels have changed. For the ones that return as none, I know they had no change during the last poll. I would say that this is an indirect and unclear way of checking this. I may be wrong, but I couldn't find this explanation in the documentation.

@sveseli
Copy link

sveseli commented Jan 19, 2021

This issue should be resolved with PR #67

@mrkraimer
Copy link
Contributor

marciodo's comment is correct. Thanks for raising this issue.

After private discussion with sveseli, it was decided that no code change is necessary.
I will close PR #67

I agree that documentation should be better.
I will work on it.
When I tried to run doxygen in pcaClientCPP it failed.
Looks like I have some work to do.

Marty

@mrkraimer
Copy link
Contributor

I am going to start work on improving documentation.
I will also review code while working on documentation.

@mrkraimer
Copy link
Contributor

Sinisa Veseli prepared a test case that shows that PvaClientNTMuiliMonitor does not work properly.
I am going add a method like Sinisa suggested but the implementation will be different.
I will also carefully look at the PvaClientNTMuiliMonitor code.

@mrkraimer mrkraimer reopened this Feb 12, 2021
@mrkraimer
Copy link
Contributor

I made changes on branch pvaClientChannel_changes.

  1. Added method PvaClientNTMultiData::getChannelChangeFlags.
  2. In pvaClientMultiChannel, methods not intended for client are now protected.
  3. Fixed many connection related problems.
  4. Cleaned up doxygen.

I also pushed changes to
https://github.com/epics-base/exampleCPP

  1. multiGetDouble, multiMonitorDouble, and multiPutDouble are new.
  2. ntMulti* have default for multiple channelNames.
  3. ntMultiMonitor has #ifndef that uses previous monitor semantics.
    If this is changed to #ifdef than the new pvaClient getChannelChangeFlags is used.
    This results in only channels that changed since the last put show new values.

It would be great if both of You get a chance to try the new version before I merge the branch into master

@sveseli
Copy link

sveseli commented Feb 17, 2021

I just took a brief look at the new pvaClientNTMultiData.cpp, and it seems that line 146 will cause the same problem that PR#67 addressed (commit fe74c59).

@mrkraimer
Copy link
Contributor

I will remove lines 145 and 146.
Note that if a value field does not exists in the channel then I suspect that this code will never be executed.
But the lines should be removed.
I want to do more testing before I push this change.

mrkraimer added a commit that referenced this issue Feb 26, 2021
1) Fix issues #66 and #70
2) All tests in exampleCPP/testMultiplePutGet now work successfully.

I still want to do more testing, especially on connection management.
Also relese notes and documentation needs work.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants