From f2bbec36efc8646f13aaf6ae50732bad23b1b733 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Mon, 25 Aug 2014 06:23:52 -0400 Subject: [PATCH] added connectionState --- src/nt/ntmultiChannel.cpp | 5 ++++- src/nt/ntmultiChannel.h | 10 ++++++++-- test/nt/ntmultiChannelTest.cpp | 4 +++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/nt/ntmultiChannel.cpp b/src/nt/ntmultiChannel.cpp index dbeae2c..2eb7a44 100644 --- a/src/nt/ntmultiChannel.cpp +++ b/src/nt/ntmultiChannel.cpp @@ -86,7 +86,7 @@ NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::addUserTag() StructureConstPtr NTMultiChannelBuilder::createStructure() { StandardFieldPtr standardField = getStandardField(); - size_t nfields = 2; + size_t nfields = 3; if(descriptor) ++nfields; if(alarm) ++nfields; if(timeStamp) ++nfields; @@ -107,6 +107,8 @@ StructureConstPtr NTMultiChannelBuilder::createStructure() } names[ind] = "channelName"; fields[ind++] = fieldCreate->createScalarArray(pvString); + names[ind] = "isConnected"; + fields[ind++] = fieldCreate->createScalarArray(pvBoolean); if(timeStamp) { names[ind] = "timeStamp"; fields[ind++] = standardField->timeStamp(); @@ -198,6 +200,7 @@ NTMultiChannel::NTMultiChannel(PVStructurePtr const & pvStructure) pvAlarm(pvStructure->getSubField("alarm")), pvValue(pvStructure->getSubField("value")), pvChannelName(pvStructure->getSubField("channelName")), + pvIsConnected(pvStructure->getSubField("isConnected")), pvSeverity(pvStructure->getSubField("severity")), pvStatus(pvStructure->getSubField("status")), pvMessage(pvStructure->getSubField("message")), diff --git a/src/nt/ntmultiChannel.h b/src/nt/ntmultiChannel.h index 2fc0455..749077f 100644 --- a/src/nt/ntmultiChannel.h +++ b/src/nt/ntmultiChannel.h @@ -94,13 +94,13 @@ namespace detail { epics::pvData::StructureConstPtr createStructure(); /** * Create a {@code PVStructure} that represents NTMultiChannel. - * This resets this instance state and allows new {@code instance to be created. + * This resets this instance state and allows new {@code instance to be created.} * @return a new instance of a {@code PVStructure} */ epics::pvData::PVStructurePtr createPVStructure(); /** * Create a {@code NTMultiChannel} instance. - * This resets this instance state and allows new {@code instance to be created. + * This resets this instance state and allows new {@code instance to be created.} * @return a new instance of a {@code NTMultiChannel} */ NTMultiChannelPtr create(); @@ -189,6 +189,11 @@ public: * @return PVStringArrayPtr */ epics::pvData::PVStringArrayPtr getChannelName() { return pvChannelName;}; + /** + * Get the connection state of each channel. + * @return PVBooleanArrayPtr + */ + epics::pvData::PVBooleanArrayPtr getIsConnected() { return pvIsConnected;}; /** * Get the severity of each channel. * @return PVIntArrayPtr which may be null. @@ -231,6 +236,7 @@ private: epics::pvData::PVStructurePtr pvAlarm; epics::pvData::PVUnionArrayPtr pvValue; epics::pvData::PVStringArrayPtr pvChannelName; + epics::pvData::PVBooleanArrayPtr pvIsConnected; epics::pvData::PVIntArrayPtr pvSeverity; epics::pvData::PVIntArrayPtr pvStatus; epics::pvData::PVStringArrayPtr pvMessage; diff --git a/test/nt/ntmultiChannelTest.cpp b/test/nt/ntmultiChannelTest.cpp index 885f33b..55d5339 100644 --- a/test/nt/ntmultiChannelTest.cpp +++ b/test/nt/ntmultiChannelTest.cpp @@ -4,7 +4,7 @@ * in file LICENSE that is included with this distribution. */ /* - * ntnameValueTest.cpp + * ntmutiChannelTest.cpp * * Created on: 2014.08 * Author: Marty Kraimer @@ -103,6 +103,8 @@ static void test() PVIntArrayPtr pvSeverity = multiChannel->getSeverity(); pvSeverity->replace(freeze(severities)); if(debug) {cout << *pvStructure << endl;} + PVBooleanArrayPtr pvIsConnected = multiChannel->getIsConnected(); + shared_vector isConnected = pvIsConnected->view(); multiChannel = builder-> addValue(unionPtr) -> addDescriptor()->