testServer: added testAggregate - one sample only
This commit is contained in:
@@ -322,6 +322,26 @@ static epics::pvData::PVStructure::shared_pointer createNTNameValue(int columnsC
|
||||
return result;
|
||||
}
|
||||
|
||||
static epics::pvData::PVStructure::shared_pointer createNTAggregate()
|
||||
{
|
||||
epics::pvData::StructureConstPtr s =
|
||||
getFieldCreate()->createFieldBuilder()->
|
||||
setId("uri:ev4:nt/2012/pwd:NTAggregate")->
|
||||
add("value", pvDouble)->
|
||||
add("N", pvLong)->
|
||||
add("dispersion", pvDouble)->
|
||||
add("first", pvDouble)->
|
||||
add("firstTimeStamp", getStandardField()->timeStamp())->
|
||||
add("last", pvDouble)->
|
||||
add("lastTimeStamp", getStandardField()->timeStamp())->
|
||||
add("max", pvDouble)->
|
||||
add("min", pvDouble)->
|
||||
createStructure();
|
||||
|
||||
return getPVDataCreate()->createPVStructure(s);
|
||||
}
|
||||
|
||||
|
||||
static void generateNTTableDoubleValues(epics::pvData::PVStructure::shared_pointer result)
|
||||
{
|
||||
PVStringArray::shared_pointer pvLabels = (static_pointer_cast<PVStringArray>(result->getScalarArrayField("labels", pvString)));
|
||||
@@ -361,6 +381,20 @@ static void generateNTNameValueDoubleValues(epics::pvData::PVStructure::shared_p
|
||||
arr->replace(freeze(temp));
|
||||
}
|
||||
|
||||
static void generateNTAggregateValues(epics::pvData::PVStructure::shared_pointer result)
|
||||
{
|
||||
double value = rand()/((double)RAND_MAX+1);
|
||||
result->getSubField<PVDouble>("value")->put(value);
|
||||
result->getSubField<PVDouble>("min")->put(value);
|
||||
result->getSubField<PVDouble>("max")->put(value);
|
||||
result->getSubField<PVDouble>("first")->put(value);
|
||||
result->getSubField<PVDouble>("last")->put(value);
|
||||
result->getSubField<PVDouble>("dispersion")->put(0.0);
|
||||
result->getSubField<PVLong>("N")->put(1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
class ChannelFindRequesterImpl : public ChannelFindRequester
|
||||
{
|
||||
virtual void channelFindResult(epics::pvData::Status const & status,
|
||||
@@ -665,6 +699,10 @@ public:
|
||||
{
|
||||
generateNTNameValueDoubleValues(m_pvStructure);
|
||||
}
|
||||
else if (m_pvStructure->getStructure()->getID() == "uri:ev4:nt/2012/pwd:NTAggregate")
|
||||
{
|
||||
generateNTAggregateValues(m_pvStructure);
|
||||
}
|
||||
else if (m_valueField.get())
|
||||
{
|
||||
switch (m_valueField->getScalar()->getScalarType())
|
||||
@@ -1908,6 +1946,11 @@ protected:
|
||||
m_pvStructure = createNTNameValue(5); // 5 columns
|
||||
generateNTNameValueDoubleValues(m_pvStructure);
|
||||
}
|
||||
else if (m_name.find("testAggregate") == 0)
|
||||
{
|
||||
m_pvStructure = createNTAggregate();
|
||||
generateNTAggregateValues(m_pvStructure);
|
||||
}
|
||||
else if (m_name.find("testADC") == 0)
|
||||
{
|
||||
int i = 0;
|
||||
@@ -2242,6 +2285,10 @@ public:
|
||||
process = c->createChannelProcess(cpr, PVStructure::shared_pointer());
|
||||
m_scan1Hz.toProcess.push_back(process);
|
||||
|
||||
c = MockChannel::create(chProviderPtr, cr, "testAggregate", "local");
|
||||
process = c->createChannelProcess(cpr, PVStructure::shared_pointer());
|
||||
m_scan1Hz.toProcess.push_back(process);
|
||||
|
||||
m_scan1HzThread.reset(new epics::pvData::Thread("process1hz", highPriority, &m_scan1Hz));
|
||||
m_scan10HzThread.reset(new epics::pvData::Thread("process10hz", highPriority, &m_scan10Hz));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user