Changes include:

1) Added method PvaClientNTMultiData::getChannelChangeFlags.
2) In pvaClientMultiChannel made methods not intended for client protected.
3) Fixed many connection related problems.
4) Cleaned up doxygen.
This commit is contained in:
mrkraimer
2021-02-17 11:10:41 -05:00
parent 7722fdf353
commit 65a69a8901
36 changed files with 233 additions and 1612 deletions
+14 -3
View File
@@ -53,7 +53,7 @@ PvaClientMultiMonitorDouble::~PvaClientMultiMonitorDouble()
void PvaClientMultiMonitorDouble::connect()
{
shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
shared_vector<boolean> isConnected = pvaClientMultiChannel->getIsConnected();
string request = "value";
for(size_t i=0; i<nchannel; ++i)
{
@@ -86,10 +86,21 @@ bool PvaClientMultiMonitorDouble::poll()
epicsThreadSleep(.1);
}
bool result = false;
shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
shared_vector<boolean> isConnected = pvaClientMultiChannel->getIsConnected();
for(size_t i=0; i<nchannel; ++i)
{
if(isConnected[i]) {
if(!pvaClientMonitor[i]){
pvaClientMonitor[i] = pvaClientChannelArray[i]->createMonitor("value");
pvaClientMonitor[i]->issueConnect();
Status status = pvaClientMonitor[i]->waitConnect();
if(!status.isOK()) {
string message = string("channel ") + pvaClientChannelArray[i]->getChannelName()
+ " PvaChannelMonitor::waitConnect " + status.getMessage();
throw std::runtime_error(message);
}
pvaClientMonitor[i]->start();
}
if(pvaClientMonitor[i]->poll()) {
doubleValue[i] = pvaClientMonitor[i]->getData()->getDouble();
pvaClientMonitor[i]->releaseEvent();
@@ -116,7 +127,7 @@ bool PvaClientMultiMonitorDouble::waitEvent(double waitForEvent)
return false;
}
epics::pvData::shared_vector<double> PvaClientMultiMonitorDouble::get()
shared_vector<double> PvaClientMultiMonitorDouble::get()
{
return doubleValue;
}