WIP
This commit is contained in:
90
Db/ecmcPluginScope.template
Normal file
90
Db/ecmcPluginScope.template
Normal file
@@ -0,0 +1,90 @@
|
||||
# Data source
|
||||
record(waveform,"$(P)Plugin-Scope${INDEX}-DataSource"){
|
||||
field(DESC, "Data source name")
|
||||
field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt8ArrayIn/plugin.scope${INDEX}.source?")
|
||||
field(FTVL, "CHAR")
|
||||
field(NELM, "1024")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(TSE, "0")
|
||||
}
|
||||
|
||||
record(waveform,"$(P)Plugin-Scope${INDEX}-TriggSource"){
|
||||
field(DESC, "Trigger source name")
|
||||
field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt8ArrayIn/plugin.scope${INDEX}.trigg?")
|
||||
field(FTVL, "CHAR")
|
||||
field(NELM, "1024")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(TSE, "0")
|
||||
}
|
||||
|
||||
record(waveform,"$(P)Plugin-Scope${INDEX}-NextTimeSource"){
|
||||
field(DESC, "Trigger source name")
|
||||
field(PINI, "1")
|
||||
field(DTYP, "asynInt8ArrayIn")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt8ArrayIn/plugin.scope${INDEX}.nexttime?")
|
||||
field(FTVL, "CHAR")
|
||||
field(NELM, "1024")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(TSE, "0")
|
||||
}
|
||||
|
||||
# result
|
||||
record(waveform,"$(P)Plugin-Scope${INDEX}-Data-Act"){
|
||||
info(asyn:FIFO, "1000")
|
||||
field(DESC, "Result data")
|
||||
field(PINI, "1")
|
||||
field(DTYP, "${RESULT_DTYP}")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=-1)/TYPE=${RESULT_DTYP}/plugin.scope${INDEX}.resultdata?")
|
||||
field(FTVL, "${RESULT_FTVL}")
|
||||
field(NELM, "${RESULT_NELM}")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(TSE, "0")
|
||||
}
|
||||
|
||||
record(bo,"$(P)Plugin-Scope${INDEX}-Enable"){
|
||||
field(DESC, "FFT Enable")
|
||||
field(DTYP,"asynInt32")
|
||||
field(OUT, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.scope${INDEX}.enable=")
|
||||
field(ZNAM,"FALSE")
|
||||
field(ONAM,"TRUE")
|
||||
field(DOL, "0")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(ai,"$(P)Plugin-Scope${INDEX}-MissTriggCntAct"){
|
||||
field(PINI, "1")
|
||||
field(DESC, "Missed trigger counter")
|
||||
field(DTYP,"asynInt32")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.scope${INDEX}.missed?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(ai,"$(P)Plugin-Scope${INDEX}-ScanToTriggSamples"){
|
||||
field(PINI, "1")
|
||||
field(DESC, "Samples between now and trigger []")
|
||||
field(DTYP,"asynFloat64")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynFloat64/plugin.scope${INDEX}.scantotrigg?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(ai,"$(P)Plugin-Scope${INDEX}-TriggCntAct"){
|
||||
field(PINI, "1")
|
||||
field(DESC, "Trigger counter")
|
||||
field(DTYP,"asynInt32")
|
||||
field(INP, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.scope${INDEX}.count?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
#record(bo,"$(P)Plugin-Scope${INDEX}-Trigg"){
|
||||
# field(DESC, "FFT Trigg measurement")
|
||||
# field(DTYP,"asynInt32")
|
||||
# field(OUT, "@asyn(${PORT},$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.scope${INDEX}.trigg")
|
||||
# field(ZNAM,"FALSE")
|
||||
# field(ONAM,"TRUE")
|
||||
# field(DOL, "0")
|
||||
# field(VAL, "0")
|
||||
#}
|
||||
@@ -69,6 +69,11 @@ void ecmcDAQDataArray::connectToDataSources() {
|
||||
void ecmcDAQDataArray::buildArrayHeader(){
|
||||
// 4 elements plus first timestamp to first data element
|
||||
size_t dataStartOffset = channelCounter_* 4 + 1;
|
||||
|
||||
if( nelm_ < dataStartOffset) {
|
||||
throw std::runtime_error( "Array to small, header will not fit (array size must be bigger than total data size plus 4*data_channel_count+1)..");
|
||||
}
|
||||
|
||||
size_t index = 0;
|
||||
buffer_[index] = 0; // Timestamp, will be set in each loop in execute
|
||||
index++;
|
||||
|
||||
Reference in New Issue
Block a user