Definition at line 133 of file mrmSeq.cpp.
◆ base_t
◆ codes_t
◆ times_t
◆ SoftSequence()
SoftSequence::SoftSequence |
( |
SeqManager * |
o, |
|
|
const std::string & |
name |
|
) |
| |
Definition at line 391 of file mrmSeq.cpp.
bool is_enabled
Whether user has requested enable.
mrf::ObjectInst< SoftSequence > base_t
bool is_committed
clear when scratch and commited sequences differ
const std::string & name() const
epicsUInt32 numStart
Guarded by interruptLock only.
◆ ~SoftSequence()
SoftSequence::~SoftSequence |
( |
| ) |
|
|
virtual |
◆ commit()
void SoftSequence::commit |
( |
| ) |
|
Definition at line 488 of file mrmSeq.cpp.
499 size_t buflen = std::min(conf.codes.size(),
501 conf.codes.resize(buflen);
502 conf.times.resize(buflen);
505 if(conf.codes.empty() || conf.codes.back()!=0x7f)
507 if(!conf.times.empty() && conf.times.back()==0xffffffff)
508 throw std::runtime_error(
"Wow, input array is missing 0x7f and maxing out times");
510 conf.codes.push_back(0x7f);
512 if(conf.times.empty())
513 conf.times.push_back(0);
515 conf.times.push_back(conf.times.back()+1);
518 if(conf.times.size()>2048)
519 throw std::runtime_error(
"Sequence too long");
534 DEBUG(1, (
"Committed\n") );
bool is_committed
clear when scratch and commited sequences differ
struct SoftSequence::Config scratch
struct SoftSequence::Config committed
SoftSequence * loaded
current association. may be NULL
◆ counterEnd()
epicsUInt32 SoftSequence::counterEnd |
( |
| ) |
const |
|
inline |
◆ counterEndScan()
IOSCANPVT SoftSequence::counterEndScan |
( |
| ) |
const |
|
inline |
◆ counterStart()
epicsUInt32 SoftSequence::counterStart |
( |
| ) |
const |
|
inline |
Definition at line 303 of file mrmSeq.cpp.
303 { interruptLock L;
return numStart; }
epicsUInt32 numStart
Guarded by interruptLock only.
◆ counterStartScan()
IOSCANPVT SoftSequence::counterStartScan |
( |
| ) |
const |
|
inline |
◆ disable()
void SoftSequence::disable |
( |
| ) |
|
Definition at line 555 of file mrmSeq.cpp.
560 {
DEBUG(3, (
"Skip\n"));
return;}
570 DEBUG(1, (
"Disabled\n") );
bool is_enabled
Whether user has requested enable.
◆ enable()
void SoftSequence::enable |
( |
| ) |
|
Definition at line 537 of file mrmSeq.cpp.
542 {
DEBUG(3, (
"Skip\n"));
return;}
552 DEBUG(1, (
"Enabled\n") );
bool is_enabled
Whether user has requested enable.
◆ getErr()
std::string SoftSequence::getErr |
( |
| ) |
const |
|
inline |
◆ getErrScan()
IOSCANPVT SoftSequence::getErrScan |
( |
| ) |
const |
|
inline |
◆ getEventCode()
epicsUInt32 SoftSequence::getEventCode |
( |
epicsUInt8 * |
arr, |
|
|
epicsUInt32 |
count |
|
) |
| const |
|
inline |
Definition at line 235 of file mrmSeq.cpp.
238 epicsUInt32 ret = std::min(
size_t(count),
committed.
codes.size());
struct SoftSequence::Config committed
◆ getRunModeCt()
epicsUInt32 SoftSequence::getRunModeCt |
( |
| ) |
const |
|
inline |
Definition at line 282 of file mrmSeq.cpp.
struct SoftSequence::Config committed
◆ getTimestamp()
epicsUInt32 SoftSequence::getTimestamp |
( |
double * |
arr, |
|
|
epicsUInt32 |
count |
|
) |
| const |
|
inline |
Definition at line 209 of file mrmSeq.cpp.
212 const double tmult = getTimeScale();
213 epicsUInt32 ret = std::min(
size_t(count),
committed.
times.size());
214 for(epicsUInt32 i=0; i<ret; i++) {
struct SoftSequence::Config committed
◆ getTimestampResolution()
epicsUInt32 SoftSequence::getTimestampResolution |
( |
| ) |
const |
|
inline |
◆ getTrigSrcCt()
epicsUInt32 SoftSequence::getTrigSrcCt |
( |
| ) |
const |
|
inline |
Definition at line 257 of file mrmSeq.cpp.
struct SoftSequence::Config committed
◆ isCommited()
bool SoftSequence::isCommited |
( |
| ) |
const |
|
inline |
Definition at line 293 of file mrmSeq.cpp.
bool is_committed
clear when scratch and commited sequences differ
◆ isEnabled()
bool SoftSequence::isEnabled |
( |
| ) |
const |
|
inline |
Definition at line 292 of file mrmSeq.cpp.
bool is_enabled
Whether user has requested enable.
◆ isLoaded()
bool SoftSequence::isLoaded |
( |
| ) |
const |
|
inline |
◆ load()
void SoftSequence::load |
( |
| ) |
|
Definition at line 423 of file mrmSeq.cpp.
426 DEBUG(3, (
"Loading %c\n",
hw ?
'L' :
'U') );
427 if(
hw) {
DEBUG(3, (
"Skip\n"));
return;}
435 for(
size_t i=0,
N=
owner->hw.size(); i<
N; i++) {
437 if(temp && !temp->
loaded) {
455 scanIoRequest(
onErr);
460 DEBUG(1, (
"Loaded\n") );
SoftSequence * loaded
current association. may be NULL
virtual void mapTriggerSrc(unsigned i, unsigned src)=0
◆ lock()
virtual void SoftSequence::lock |
( |
| ) |
const |
|
inlinevirtual |
◆ setEventCode()
void SoftSequence::setEventCode |
( |
const epicsUInt8 * |
arr, |
|
|
epicsUInt32 |
count |
|
) |
| |
|
inline |
Definition at line 220 of file mrmSeq.cpp.
231 DEBUG(4, (
"Set events\n"));
bool is_committed
clear when scratch and commited sequences differ
struct SoftSequence::Config scratch
std::vector< epicsUInt8 > codes_t
◆ setRunMode()
void SoftSequence::setRunMode |
( |
epicsUInt32 |
mode | ) |
|
|
inline |
Definition at line 263 of file mrmSeq.cpp.
270 throw std::runtime_error(
"Unknown sequencer run mode");
278 DEBUG(4, (
"Set run mode %u\n", (
unsigned)mode));
bool is_committed
clear when scratch and commited sequences differ
struct SoftSequence::Config scratch
◆ setTimestamp()
void SoftSequence::setTimestamp |
( |
const double * |
arr, |
|
|
epicsUInt32 |
count |
|
) |
| |
|
inline |
Definition at line 182 of file mrmSeq.cpp.
184 const double tmult = getTimeScale();
188 for(epicsUInt32 i=0; i<count; i++)
190 if(!finite(arr[i]) || arr[i]<0.0)
191 throw std::runtime_error(
"times must be finite >=0");
193 times[i] = (arr[i]*tmult)+0.5;
196 throw std::runtime_error(
"Non-monotonic timestamp array");
197 else if(
times[i]==0xffffffff)
198 throw std::runtime_error(
"Time overflow, rollover not supported");
205 DEBUG(4, (
"Set times\n"));
bool is_committed
clear when scratch and commited sequences differ
struct SoftSequence::Config scratch
std::vector< epicsUInt64 > times_t
◆ setTimestampResolution()
void SoftSequence::setTimestampResolution |
( |
epicsUInt32 |
val | ) |
|
|
inline |
◆ setTrigSrc()
void SoftSequence::setTrigSrc |
( |
epicsUInt32 |
src | ) |
|
|
inline |
Definition at line 245 of file mrmSeq.cpp.
247 DEBUG(4, (
"Setting trig src %x\n", (
unsigned)src));
253 DEBUG(4, (
"Set trig src %x\n", (
unsigned)src));
bool is_committed
clear when scratch and commited sequences differ
struct SoftSequence::Config scratch
◆ softTrig()
void SoftSequence::softTrig |
( |
| ) |
|
Definition at line 410 of file mrmSeq.cpp.
412 DEBUG(3, (
"SW Triggering\n") );
420 DEBUG(2, (
"SW Triggered\n") );
bool is_enabled
Whether user has requested enable.
INLINE void nat_iowrite32(volatile void *addr, epicsUInt32 val)
#define EVG_SEQ_RAM_SW_TRIG
volatile void *const ctrlreg
epicsUInt32 ctrlreg_hw
current in HW. either same as _user or trigger disabled
◆ stateChange()
IOSCANPVT SoftSequence::stateChange |
( |
| ) |
const |
|
inline |
◆ sync()
void SoftSequence::sync |
( |
| ) |
|
Definition at line 574 of file mrmSeq.cpp.
578 {
DEBUG(3, (
"Skip\n"));
return;}
585 epicsInterruptContextMessage(
"SoftSequence::sync() while running\n");
657 DEBUG(5, (
" Trig Src %x\n", src));
662 volatile epicsUInt32 *ram =
static_cast<volatile epicsUInt32 *
>(
hw->
rambase);
678 DEBUG(3, (
" SeqCtrl %x\n", ctrl));
683 DEBUG(3, (
"In Sync\n") );
bool is_enabled
Whether user has requested enable.
#define EVG_SEQ_RAM_RESET
INLINE void nat_iowrite32(volatile void *addr, epicsUInt32 val)
#define EVG_SEQ_RAM_RUNNING
INLINE epicsUInt32 nat_ioread32(volatile void *addr)
#define EVG_SEQ_RAM_SRC_MASK
#define EVG_SEQ_RAM_REPEAT_MASK
#define EVG_SEQ_RAM_DISABLE
volatile void *const ctrlreg
volatile void *const *const rambase
struct SoftSequence::Config committed
#define EVG_SEQ_RAM_NORMAL
#define EVG_SEQ_RAM_SINGLE
epicsUInt32 ctrlreg_hw
current in HW. either same as _user or trigger disabled
epicsUInt32 ctrlreg_user
user requested (based on commited sequence)
virtual void mapTriggerSrc(unsigned i, unsigned src)=0
◆ unload()
void SoftSequence::unload |
( |
| ) |
|
Definition at line 463 of file mrmSeq.cpp.
466 DEBUG(3, (
"Unloading %c\n",
hw ?
'L' :
'U') );
468 if(!
hw) {
DEBUG(3, (
"Skip\n"));
return;}
484 DEBUG(1, (
"Unloaded\n") );
SoftSequence * loaded
current association. may be NULL
◆ unlock()
virtual void SoftSequence::unlock |
( |
| ) |
const |
|
inlinevirtual |
◆ changed
IOSCANPVT SoftSequence::changed |
◆ committed
◆ hw
guarded by our mutex and interruptLock only write when both held read when either held
Definition at line 317 of file mrmSeq.cpp.
◆ is_committed
bool SoftSequence::is_committed |
clear when scratch and commited sequences differ
Definition at line 346 of file mrmSeq.cpp.
◆ is_enabled
bool SoftSequence::is_enabled |
Whether user has requested enable.
Definition at line 344 of file mrmSeq.cpp.
◆ is_insync
bool SoftSequence::is_insync |
clear when the commited sequence differs from the HW sequence (eg. commit while running) Guarded by interruptLock only
Definition at line 349 of file mrmSeq.cpp.
◆ last_err
std::string SoftSequence::last_err |
◆ mutex
epicsMutex SoftSequence::mutex |
|
mutable |
◆ numEnd
epicsUInt32 SoftSequence::numEnd |
◆ numStart
epicsUInt32 SoftSequence::numStart |
Guarded by interruptLock only.
Definition at line 352 of file mrmSeq.cpp.
◆ onEnd
IOSCANPVT SoftSequence::onEnd |
◆ onErr
IOSCANPVT SoftSequence::onErr |
◆ onStart
IOSCANPVT SoftSequence::onStart |
◆ owner
◆ scratch
◆ timeScale
epicsUInt32 SoftSequence::timeScale |
The documentation for this struct was generated from the following file: