Isomet Modular Synthesiser (iMS) API  v1.4.2
iMS API
Public Member Functions | List of all members
iMS::ImageSequenceEntry Struct Reference

An ImageSequenceEntry object can be created by application software to specify the parameters by which an Image is played back during an ImageSequence. More...

#include <include/Image.h>

Public Member Functions

bool operator== (ImageSequenceEntry const &rhs) const
 Equality Operator checks ImageSequenceEntry object for equivalence. More...
 
Constructors & Destructor
 ImageSequenceEntry ()
 Default Constructor.
 
 ImageSequenceEntry (const Image &img, const ImageRepeats &Rpt=ImageRepeats::NONE, const int rpts=0)
 Construct ImageSequenceEntry object from Image object resident in application software. More...
 
 ImageSequenceEntry (const ImageTableEntry &ite, const kHz &InternalClock=kHz(1.0), const ImageRepeats &Rpt=ImageRepeats::NONE, const int rpts=0)
 Construct ImageSequenceEntry object from an Image resident in Controller memory referenced by its index table entry. More...
 
 ImageSequenceEntry (const ImageTableEntry &ite, const int ExtClockDivide=1, const ImageRepeats &Rpt=ImageRepeats::NONE, const int rpts=0)
 Construct ImageSequenceEntry object from an Image resident in Controller memory referenced by its index table entry. More...
 
 ~ImageSequenceEntry ()
 Destructor.
 
 ImageSequenceEntry (const ImageSequenceEntry &)
 Copy Constructor.
 
ImageSequenceEntryoperator= (const ImageSequenceEntry &)
 Assignment Constructor.
 
Delay Settings
std::chrono::duration< double > & PostImgDelay ()
 Setter for post Image delay. More...
 
const std::chrono::duration< double > & PostImgDelay () const
 Getter for post Image delay. More...
 
std::chrono::duration< double > & SyncOutDelay ()
 Setter for Synchronous Digital Output signal Delay. More...
 
const std::chrono::duration< double > & SyncOutDelay () const
 Getter for Synchronous Digital Output signal delay. More...
 
Sequence Entry Parameters
const std::array< std::uint8_t, 16 > & UUID () const
 Image Unique Identifier can be used to synchronise Sequence Entries with host software Image objects. More...
 
const int & ExtDiv () const
 returns the programmed External Clock Divider ratio More...
 
const FrequencyIntOsc () const
 returns the programmed Internal Oscillator Frequency More...
 
const ImageRepeatsRptType () const
 returns the configured Repeat style More...
 
const int & NumRpts () const
 returns the number of times to repeat an Image before moving to the next entry in the Sequence More...
 

Detailed Description

An ImageSequenceEntry object can be created by application software to specify the parameters by which an Image is played back during an ImageSequence.

An ImageSequence contains a list of ImageSequenceEntry s each of which is programmed with one Image (or ImageTableEntry) specifying the ImagePoint data that will be output during playback. Additional parameters that can be specified include

Constructor & Destructor Documentation

iMS::ImageSequenceEntry::ImageSequenceEntry ( const Image img,
const ImageRepeats Rpt = ImageRepeats::NONE,
const int  rpts = 0 
)

Construct ImageSequenceEntry object from Image object resident in application software.

If using this construction method, the Internal Clock Rate or External Clock Divider, if required, should first be set using the Image::ClockRate() and Image::ExtClockDivide() functions.

The user can optionally specify the number of times to repeat the Image before moving on to the next entry in the sequence. The default is no repeats, and these parameters may then be ommitted.

Parameters
imgA reference to the Image object which is to be played in the Sequence (must have been downloaded to Controller memory before playback)
RptAn optional parameter specifying whether repeats are required (ImageRepeats::PROGRAM) or not (ImageRepeats::NONE)
rptsAn optional integer specifying the number of repeats to perform (max 255).
iMS::ImageSequenceEntry::ImageSequenceEntry ( const ImageTableEntry ite,
const kHz InternalClock = kHz(1.0),
const ImageRepeats Rpt = ImageRepeats::NONE,
const int  rpts = 0 
)

Construct ImageSequenceEntry object from an Image resident in Controller memory referenced by its index table entry.

This is the preferred method for constructing an ImageSequenceEntry object when the Image has already have been downloaded to the Controller. However, the Index Table in the Controller does not store default clock frequency or clock divider information, so this must be specified manually.

The user can optionally specify the number of times to repeat the Image before moving on to the next entry in the sequence. The default is no repeats, and these parameters may then be ommitted.

Parameters
iteA reference to the Image object from ite ImageTableEntry (can be retrieved from the IMSSystem object through an ImageTableViewer)
InternalClockSpecifies the clock rate with which to program the Internal NCO oscillator (optional, defaults to 1kHz)
RptAn optional parameter specifying whether repeats are required (ImageRepeats::PROGRAM) or not (ImageRepeats::NONE)
rptsAn optional integer specifying the number of repeats to perform (max 255).
iMS::ImageSequenceEntry::ImageSequenceEntry ( const ImageTableEntry ite,
const int  ExtClockDivide = 1,
const ImageRepeats Rpt = ImageRepeats::NONE,
const int  rpts = 0 
)

Construct ImageSequenceEntry object from an Image resident in Controller memory referenced by its index table entry.

This is the preferred method for constructing an ImageSequenceEntry object when the Image has already have been downloaded to the Controller. However, the Index Table in the Controller does not store default clock frequency or clock divider information, so this must be specified manually.

The user can optionally specify the number of times to repeat the Image before moving on to the next entry in the sequence. The default is no repeats, and these parameters may then be ommitted.

Parameters
iteA reference to the Image object from ite ImageTableEntry (can be retrieved from the IMSSystem object through an ImageTableViewer)
ExtClockDividedivides down the externally supplied clock signal by an integer ratio, e.g. 3 => update every 3rd clock edge (optional, default to 1, i.e. off)
RptAn optional parameter specifying whether repeats are required (ImageRepeats::PROGRAM) or not (ImageRepeats::NONE)
rptsAn optional integer specifying the number of repeats to perform (max 255).

Member Function Documentation

const int& iMS::ImageSequenceEntry::ExtDiv ( ) const

returns the programmed External Clock Divider ratio

Returns
the programmed External Clock Divider ratio
const Frequency& iMS::ImageSequenceEntry::IntOsc ( ) const

returns the programmed Internal Oscillator Frequency

Returns
the programmed Internal Oscillator Frequency
const int& iMS::ImageSequenceEntry::NumRpts ( ) const

returns the number of times to repeat an Image before moving to the next entry in the Sequence

Returns
the number of times to repeat an Image before moving to the next entry in the Sequence
bool iMS::ImageSequenceEntry::operator== ( ImageSequenceEntry const &  rhs) const

Equality Operator checks ImageSequenceEntry object for equivalence.

Parameters
[in]rhsAn ImageSequenceEntry object to perform the comparison with
Returns
True if the supplied ImageSequenceEntry is identical to this one.
std::chrono::duration<double>& iMS::ImageSequenceEntry::PostImgDelay ( )

Setter for post Image delay.

If the ImageSequence is configured to create a 'pause' at the end of playback for each Image in the sequence, the pause time can be programmed on a per entry basis using this function. Set SequenceManager::SeqConfiguration::trig to ImageTrigger::POST_DELAY to use this feature.

The Pause time may be specified as any std::chrono value using duration_cast but hardware limitations restrict the real delay time to a resolution of 0.1ms and a maximum of 6.5535s.

Returns
a lvalue reference to the Post Delay time
const std::chrono::duration<double>& iMS::ImageSequenceEntry::PostImgDelay ( ) const

Getter for post Image delay.

Returns
a const reference (rvalue) for reading the Post Delay time
const ImageRepeats& iMS::ImageSequenceEntry::RptType ( ) const

returns the configured Repeat style

Returns
the configured Repeat style
std::chrono::duration<double>& iMS::ImageSequenceEntry::SyncOutDelay ( )

Setter for Synchronous Digital Output signal Delay.

The Synchronous Digital Output signals of the Synthesiser can be used to output data from either the FAP Synchronous digital field or from entries in the Compensation Look Up Table. The data updates at the same time as the Image data updated the RF output. Using the SyncOutDelay field, the data can be shifted in time to compensate for latency in the system or to, for example, delay a trigger pulse to the middle of an RF Image Point.

The Delay time may be specified as any std::chrono value using duration_cast but hardware limitations restrict the real delay time to a minimum of 0.01us and a maximum of 655.35us.

Returns
a lvalue reference to the Synchronous Digital Output delay time
const std::chrono::duration<double>& iMS::ImageSequenceEntry::SyncOutDelay ( ) const

Getter for Synchronous Digital Output signal delay.

Returns
a const reference (rvalue) for reading the Synchronous Digital Output signal delay time
const std::array<std::uint8_t, 16>& iMS::ImageSequenceEntry::UUID ( ) const

Image Unique Identifier can be used to synchronise Sequence Entries with host software Image objects.

Each Image created in application software is automatically assigned a Unique ID (UUID) which is updated anytime the Image is modified. Sequences are internally specified using the UUID of an Image to ensure absolute consistency with the Image stored in Controller memory and referenced in the Index table. The User can check whether an Image object matches the Image referenced in a ImageSequenceEntry by comparing its UUID.

Returns
a 16 byte array containing the Image UUID.

The documentation for this struct was generated from the following file: