WIP
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
|
||||
ecmcDAQDataArray::ecmcDAQDataArray(size_t nelm){
|
||||
buffer_ = new double [nelm];
|
||||
memset(buffer_,0,sizeof(buffer_))
|
||||
nelm_ = nelm;
|
||||
channelCounter_ = 0;
|
||||
}
|
||||
@@ -28,8 +29,8 @@ ecmcDAQDataArray::~ecmcDAQDataArray() {
|
||||
|
||||
}
|
||||
|
||||
void ecmcDAQDataArray::addDataItem(char* name, int timeFormat) {
|
||||
dataChannels_.push_back(new ecmcDataChannel(name, timeFormat);
|
||||
void ecmcDAQDataArray::addDataItem(int type) {
|
||||
dataChannels_.push_back(new ecmcDAQDataChannel(type);
|
||||
channelCounter_++;
|
||||
}
|
||||
|
||||
@@ -38,11 +39,11 @@ void ecmcDAQDataArray::connectToDataSources() {
|
||||
return;
|
||||
}
|
||||
|
||||
for(std::vector<ecmcDataChannel*>::iterator pDataCh = dataChannels_.begin(); pDataCh != dataChannels_.end(); ++pDataCh) {
|
||||
for(std::vector<ecmcDAQDataChannel*>::iterator pDataCh = dataChannels_.begin(); pDataCh != dataChannels_.end(); ++pDataCh) {
|
||||
if(!(*pDataCh)) {
|
||||
throw std::runtime_error( "Channel empty..");
|
||||
}
|
||||
(*pDataCh)->connectToSource();
|
||||
(*pDataCh)->connectToSources();
|
||||
}
|
||||
|
||||
// Register asyn parameters
|
||||
@@ -51,8 +52,33 @@ void ecmcDAQDataArray::connectToDataSources() {
|
||||
dataSourceLinked_ = 1;
|
||||
}
|
||||
|
||||
void ecmcDAQDataArray::buildHeader(){
|
||||
// Prepare header first in array 4 elements per channel.
|
||||
void ecmcDAQDataArray::buildArrayHeader(){
|
||||
size_t index = 0;
|
||||
size_t dataStartOffset=channelCounter_* 4 + 1; //4 elements plus first timestamp
|
||||
buffer_[index] = 0; // Timestamp, will be set in each loop in execute
|
||||
index++;
|
||||
// Each Data channel takes 4 doubles
|
||||
for(std::vector<ecmcDAQDataChannel*>::iterator pDataCh = dataChannels_.begin(); pDataCh != dataChannels_.end(); ++pDataCh) {
|
||||
if(!(*pDataCh)) {
|
||||
throw std::runtime_error( "Channel empty..");
|
||||
}
|
||||
// 4 elements per channel
|
||||
// First element: Type
|
||||
buffer_[index] = (double)(*pDataCh)->getType();
|
||||
index++;
|
||||
// Second element: data start index
|
||||
buffer_[index] = (double)dataStartOffset;
|
||||
index++;
|
||||
// Third element: data start index
|
||||
buffer_[index] = (double)(*pDataCh)->getElementCount();
|
||||
// Prepare data start index for next data item
|
||||
dataStartOffset = dataStartOffset + (*pDataCh)->getElementCount();
|
||||
index++;
|
||||
// Forth index spare...
|
||||
buffer_[index] = 0;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
void ecmcDAQDataArray::execute() {
|
||||
|
||||
Reference in New Issue
Block a user