From c0cb48e97ed61c0f15c6ff016a5993636f5207e4 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Thu, 21 Aug 2014 12:57:36 -0400 Subject: [PATCH] added userTag --- src/nt/ntmultiChannel.cpp | 11 +++++++++++ src/nt/ntmultiChannel.h | 16 ++++++++++++++-- test/nt/ntmultiChannelTest.cpp | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/nt/ntmultiChannel.cpp b/src/nt/ntmultiChannel.cpp index 3e5a9cb..dbeae2c 100644 --- a/src/nt/ntmultiChannel.cpp +++ b/src/nt/ntmultiChannel.cpp @@ -77,6 +77,12 @@ NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::addNanoseconds() return shared_from_this(); } +NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::addUserTag() +{ + userTag = true; + return shared_from_this(); +} + StructureConstPtr NTMultiChannelBuilder::createStructure() { StandardFieldPtr standardField = getStandardField(); @@ -89,6 +95,7 @@ StructureConstPtr NTMultiChannelBuilder::createStructure() if(message) ++nfields; if(secondsPastEpoch) ++nfields; if(nanoseconds) ++nfields; + if(userTag) ++nfields; FieldConstPtrArray fields(nfields); StringArray names(nfields); size_t ind = 0; @@ -132,6 +139,10 @@ StructureConstPtr NTMultiChannelBuilder::createStructure() names[ind] = "nanoseconds"; fields[ind++] = fieldCreate->createScalarArray(pvInt); } + if(userTag) { + names[ind] = "userTag"; + fields[ind++] = fieldCreate->createScalarArray(pvInt); + } StructureConstPtr st = fieldCreate->createStructure(NTMultiChannel::URI,names,fields); reset(); return st; diff --git a/src/nt/ntmultiChannel.h b/src/nt/ntmultiChannel.h index fd274bd..2fc0455 100644 --- a/src/nt/ntmultiChannel.h +++ b/src/nt/ntmultiChannel.h @@ -81,6 +81,11 @@ namespace detail { * @return this instance of a {@code NTMultiChannelBuilder}. */ shared_pointer addNanoseconds(); + /** + * Add userTag array to the NTMultiChannel. + * @return this instance of a {@code NTMultiChannelBuilder}. + */ + shared_pointer addUserTag(); /** * Create a {@code Structure} that represents NTMultiChannel. * This resets this instance state and allows new instance to be created. @@ -114,6 +119,7 @@ namespace detail { bool message; bool secondsPastEpoch; bool nanoseconds; + bool userTag; friend class ::epics::nt::NTMultiChannel; }; @@ -199,15 +205,20 @@ public: */ epics::pvData::PVStringArrayPtr getMessage() {return pvMessage;} /** - * Get the SecondsPastEpoch of each channel. + * Get the secondsPastEpoch of each channel. * @return PVLongArrayPtr which may be null. */ epics::pvData::PVLongArrayPtr getSecondsPastEpoch() {return pvSecondsPastEpoch;} /** - * Get the SecondsPastEpoch of each channel. + * Get the nanoseconds of each channel. * @return PVIntArrayPtr which may be null. */ epics::pvData::PVIntArrayPtr getNanoseconds() {return pvNanoseconds;} + /** + * Get the userTag of each channel. + * @return PVIntArrayPtr which may be null. + */ + epics::pvData::PVIntArrayPtr getUserTag() {return pvUserTag;} /** * Get the descriptor. * @return PVStringPtr which may be null. @@ -225,6 +236,7 @@ private: epics::pvData::PVStringArrayPtr pvMessage; epics::pvData::PVLongArrayPtr pvSecondsPastEpoch; epics::pvData::PVIntArrayPtr pvNanoseconds; + epics::pvData::PVIntArrayPtr pvUserTag; epics::pvData::PVStringPtr pvDescriptor; friend class detail::NTMultiChannelBuilder; }; diff --git a/test/nt/ntmultiChannelTest.cpp b/test/nt/ntmultiChannelTest.cpp index b6e82af..885f33b 100644 --- a/test/nt/ntmultiChannelTest.cpp +++ b/test/nt/ntmultiChannelTest.cpp @@ -113,6 +113,7 @@ static void test() addMessage() -> addSecondsPastEpoch() -> addNanoseconds() -> + addUserTag() -> create(); testOk1(multiChannel.get() != 0); pvStructure = multiChannel->getPVStructure();