added connectionState

This commit is contained in:
Marty Kraimer
2014-08-25 06:23:52 -04:00
parent 887b453bac
commit f2bbec36ef
3 changed files with 15 additions and 4 deletions

View File

@ -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<PVStructure>("alarm")),
pvValue(pvStructure->getSubField<PVUnionArray>("value")),
pvChannelName(pvStructure->getSubField<PVStringArray>("channelName")),
pvIsConnected(pvStructure->getSubField<PVBooleanArray>("isConnected")),
pvSeverity(pvStructure->getSubField<PVIntArray>("severity")),
pvStatus(pvStructure->getSubField<PVIntArray>("status")),
pvMessage(pvStructure->getSubField<PVStringArray>("message")),

View File

@ -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;

View File

@ -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<const boolean> isConnected = pvIsConnected->view();
multiChannel = builder->
addValue(unionPtr) ->
addDescriptor()->