svcore  1.9
FFTDataServer Class Reference

#include <FFTDataServer.h>

Collaboration diagram for FFTDataServer:

List of all members.

Classes

struct  CacheBlock
class  FillThread

Public Member Functions

const DenseTimeValueModelgetModel () const
int getChannel () const
WindowType getWindowType () const
int getWindowSize () const
int getWindowIncrement () const
int getFFTSize () const
bool getPolar () const
int getWidth () const
int getHeight () const
float getMagnitudeAt (int x, int y)
float getNormalizedMagnitudeAt (int x, int y)
float getMaximumMagnitudeAt (int x)
float getPhaseAt (int x, int y)
void getValuesAt (int x, int y, float &real, float &imaginary)
bool isColumnReady (int x)
bool getMagnitudesAt (int x, float *values, int minbin=0, int count=0, int step=1)
bool getNormalizedMagnitudesAt (int x, float *values, int minbin=0, int count=0, int step=1)
bool getPhasesAt (int x, float *values, int minbin=0, int count=0, int step=1)
bool getValuesAt (int x, float *reals, float *imaginaries, int minbin=0, int count=0, int step=1)
void suspend ()
void suspendWrites ()
void resume ()
bool isLocalPeak (int x, int y)
bool isOverThreshold (int x, int y, float threshold)
QString getError () const
int getFillCompletion () const
int getFillExtent () const

Static Public Member Functions

static FFTDataServergetInstance (const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria=StorageAdviser::NoCriteria, int fillFromColumn=0)
static FFTDataServergetFuzzyInstance (const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria=StorageAdviser::NoCriteria, int fillFromColumn=0)
static void claimInstance (FFTDataServer *)
static void releaseInstance (FFTDataServer *)
static void modelAboutToBeDeleted (Model *)

Private Types

typedef float fftsample
typedef std::vector< CacheBlock * > CacheVector
typedef std::pair
< FFTDataServer *, int > 
ServerCountPair
typedef std::map< QString,
ServerCountPair
ServerMap
typedef std::deque
< FFTDataServer * > 
ServerQueue

Private Member Functions

 FFTDataServer (QString fileBaseName, const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar, StorageAdviser::Criteria criteria, int fillFromColumn=0)
virtual ~FFTDataServer ()
 FFTDataServer (const FFTDataServer &)
FFTDataServeroperator= (const FFTDataServer &)
FFTCacheReadergetCacheReader (int x, int &col)
FFTCacheWritergetCacheWriter (int x, int &col)
bool haveCache (int x)
bool makeCache (int c)
bool makeCacheReader (int c)
void getStorageAdvice (int w, int h, bool &memory, bool &compact)
void deleteProcessingData ()
void fillColumn (int x)
void fillComplete ()
QString generateFileBasename () const

Static Private Member Functions

static QString generateFileBasename (const DenseTimeValueModel *model, int channel, WindowType windowType, int windowSize, int windowIncrement, int fftSize, bool polar)
static FFTDataServerfindServer (QString)
static void purgeLimbo (int maxSize=3)
static void claimInstance (FFTDataServer *, bool needLock)
static void releaseInstance (FFTDataServer *, bool needLock)

Private Attributes

QString m_fileBaseName
const DenseTimeValueModelm_model
int m_channel
Window< fftsamplem_windower
int m_windowSize
int m_windowIncrement
int m_fftSize
bool m_polar
int m_width
int m_height
int m_cacheWidth
int m_cacheWidthPower
int m_cacheWidthMask
CacheVector m_caches
QReadWriteLock m_cacheVectorLock
QMutex m_cacheCreationMutex
StorageAdviser::Criteria m_criteria
QMutex m_fftBuffersLock
QWaitCondition m_condition
fftsamplem_fftInput
fftf_complexm_fftOutput
float * m_workbuffer
fftf_plan m_fftPlan
bool m_exiting
bool m_suspended
FillThreadm_fillThread
QString m_error

Static Private Attributes

static ServerMap m_servers
static ServerQueue m_releasedServers
static QMutex m_serverMapMutex

Detailed Description

Definition at line 40 of file FFTDataServer.h.


Member Typedef Documentation

typedef float FFTDataServer::fftsample [private]

Definition at line 130 of file FFTDataServer.h.

typedef std::vector<CacheBlock *> FFTDataServer::CacheVector [private]

Definition at line 165 of file FFTDataServer.h.

typedef std::pair<FFTDataServer *, int> FFTDataServer::ServerCountPair [private]

Definition at line 279 of file FFTDataServer.h.

typedef std::map<QString, ServerCountPair> FFTDataServer::ServerMap [private]

Definition at line 280 of file FFTDataServer.h.

typedef std::deque<FFTDataServer *> FFTDataServer::ServerQueue [private]

Definition at line 281 of file FFTDataServer.h.


Constructor & Destructor Documentation

FFTDataServer::FFTDataServer ( QString  fileBaseName,
const DenseTimeValueModel model,
int  channel,
WindowType  windowType,
int  windowSize,
int  windowIncrement,
int  fftSize,
bool  polar,
StorageAdviser::Criteria  criteria,
int  fillFromColumn = 0 
) [private]

Member Function Documentation

FFTDataServer * FFTDataServer::getInstance ( const DenseTimeValueModel model,
int  channel,
WindowType  windowType,
int  windowSize,
int  windowIncrement,
int  fftSize,
bool  polar,
StorageAdviser::Criteria  criteria = StorageAdviser::NoCriteria,
int  fillFromColumn = 0 
) [static]
FFTDataServer * FFTDataServer::getFuzzyInstance ( const DenseTimeValueModel model,
int  channel,
WindowType  windowType,
int  windowSize,
int  windowIncrement,
int  fftSize,
bool  polar,
StorageAdviser::Criteria  criteria = StorageAdviser::NoCriteria,
int  fillFromColumn = 0 
) [static]
void FFTDataServer::claimInstance ( FFTDataServer server) [static]

Definition at line 255 of file FFTDataServer.cpp.

Referenced by FFTModel::FFTModel(), findServer(), and getFuzzyInstance().

int FFTDataServer::getChannel ( ) const [inline]

Definition at line 71 of file FFTDataServer.h.

References m_channel.

Referenced by getFuzzyInstance().

Definition at line 72 of file FFTDataServer.h.

References Window< T >::getType(), and m_windower.

Referenced by getFuzzyInstance().

int FFTDataServer::getWindowSize ( ) const [inline]

Definition at line 73 of file FFTDataServer.h.

References m_windowSize.

Referenced by getFuzzyInstance().

bool FFTDataServer::getPolar ( ) const [inline]

Definition at line 76 of file FFTDataServer.h.

References m_polar.

Referenced by getFuzzyInstance().

int FFTDataServer::getWidth ( ) const [inline]

Definition at line 78 of file FFTDataServer.h.

References m_width.

Referenced by FFTFuzzyAdapter::getWidth(), and FFTModel::getWidth().

int FFTDataServer::getHeight ( ) const [inline]

Definition at line 79 of file FFTDataServer.h.

References m_height.

Referenced by FFTFuzzyAdapter::getHeight(), FFTModel::getHeight(), and isLocalPeak().

void FFTDataServer::getValuesAt ( int  x,
int  y,
float &  real,
float &  imaginary 
)

!! if (m_lastUsedCache == -1) { if (m_suspended) { std::cerr << "FFTDataServer::isColumnReady(" << x << "): no cache, calling resume" << std::endl; resume(); } m_fillThread->start(); }

Definition at line 1182 of file FFTDataServer.cpp.

References getCacheReader(), haveCache(), FFTCacheReader::haveSetColumnAt(), m_error, and m_width.

Referenced by FFTModel::isColumnAvailable(), and FFTFuzzyAdapter::isColumnReady().

bool FFTDataServer::getMagnitudesAt ( int  x,
float *  values,
int  minbin = 0,
int  count = 0,
int  step = 1 
)
bool FFTDataServer::getNormalizedMagnitudesAt ( int  x,
float *  values,
int  minbin = 0,
int  count = 0,
int  step = 1 
)
bool FFTDataServer::getPhasesAt ( int  x,
float *  values,
int  minbin = 0,
int  count = 0,
int  step = 1 
)
bool FFTDataServer::getValuesAt ( int  x,
float *  reals,
float *  imaginaries,
int  minbin = 0,
int  count = 0,
int  step = 1 
)

Definition at line 636 of file FFTDataServer.cpp.

References m_fftBuffersLock, and m_suspended.

Referenced by releaseInstance(), and FFTModel::suspend().

Definition at line 648 of file FFTDataServer.cpp.

References m_suspended.

Referenced by modelAboutToBeDeleted(), and FFTModel::suspendWrites().

bool FFTDataServer::isLocalPeak ( int  x,
int  y 
) [inline]

Definition at line 99 of file FFTDataServer.h.

References getHeight(), and getMagnitudeAt().

bool FFTDataServer::isOverThreshold ( int  x,
int  y,
float  threshold 
) [inline]

Definition at line 105 of file FFTDataServer.h.

References getMagnitudeAt().

QString FFTDataServer::getError ( ) const

Definition at line 1393 of file FFTDataServer.cpp.

References FFTDataServer::FillThread::getError(), m_error, and m_fillThread.

Referenced by FFTModel::getError().

FFTDataServer& FFTDataServer::operator= ( const FFTDataServer ) [private]
FFTCacheWriter* FFTDataServer::getCacheWriter ( int  x,
int &  col 
) [inline, private]
bool FFTDataServer::haveCache ( int  x) [inline, private]

Definition at line 221 of file FFTDataServer.h.

References m_caches, and m_cacheWidthPower.

Referenced by isColumnReady().

bool FFTDataServer::makeCacheReader ( int  c) [private]

Definition at line 621 of file FFTDataServer.cpp.

References fftf_destroy_plan, fftf_free, m_fftInput, m_fftOutput, m_fftPlan, and m_workbuffer.

Referenced by resume(), and ~FFTDataServer().

void FFTDataServer::fillComplete ( ) [private]

Definition at line 1379 of file FFTDataServer.cpp.

References m_caches.

Referenced by FFTDataServer::FillThread::run().

QString FFTDataServer::generateFileBasename ( const DenseTimeValueModel model,
int  channel,
WindowType  windowType,
int  windowSize,
int  windowIncrement,
int  fftSize,
bool  polar 
) [static, private]

Definition at line 1423 of file FFTDataServer.cpp.

References XmlExportable::getObjectExportId().

FFTDataServer * FFTDataServer::findServer ( QString  n) [static, private]

Definition at line 228 of file FFTDataServer.cpp.

References claimInstance(), and m_servers.

Referenced by getInstance().

void FFTDataServer::purgeLimbo ( int  maxSize = 3) [static, private]

Definition at line 378 of file FFTDataServer.cpp.

References m_releasedServers, and m_servers.

Referenced by getStorageAdvice(), and releaseInstance().

void FFTDataServer::claimInstance ( FFTDataServer server,
bool  needLock 
) [static, private]

Definition at line 261 of file FFTDataServer.cpp.

References m_releasedServers, m_serverMapMutex, and m_servers.

void FFTDataServer::releaseInstance ( FFTDataServer server,
bool  needLock 
) [static, private]

!! if (server->m_lastUsedCache == -1) { // never used #ifdef DEBUG_FFT_SERVER std::cerr << "FFTDataServer::releaseInstance: instance " << server << " has never been used, erasing" << std::endl; #endif delete server; m_servers.erase(i); } else {

!! }

Definition at line 306 of file FFTDataServer.cpp.

References m_releasedServers, m_serverMapMutex, m_servers, purgeLimbo(), and suspend().


Member Data Documentation

QString FFTDataServer::m_fileBaseName [private]

Definition at line 132 of file FFTDataServer.h.

Referenced by makeCache().

int FFTDataServer::m_channel [private]

Definition at line 134 of file FFTDataServer.h.

Referenced by fillColumn(), generateFileBasename(), and getChannel().

int FFTDataServer::m_fftSize [private]

Definition at line 140 of file FFTDataServer.h.

Referenced by FFTDataServer(), fillColumn(), generateFileBasename(), and getFFTSize().

Definition at line 145 of file FFTDataServer.h.

Referenced by FFTDataServer(), and makeCache().

Definition at line 146 of file FFTDataServer.h.

Referenced by FFTDataServer(), getCacheReader(), getCacheWriter(), and haveCache().

Definition at line 147 of file FFTDataServer.h.

Referenced by FFTDataServer(), fillColumn(), getCacheReader(), and getCacheWriter().

QReadWriteLock FFTDataServer::m_cacheVectorLock [private]

Definition at line 168 of file FFTDataServer.h.

Referenced by makeCache().

QWaitCondition FFTDataServer::m_condition [private]

Definition at line 234 of file FFTDataServer.h.

Referenced by resume(), FFTDataServer::FillThread::run(), and ~FFTDataServer().

Definition at line 236 of file FFTDataServer.h.

Referenced by deleteProcessingData(), FFTDataServer(), and fillColumn().

float* FFTDataServer::m_workbuffer [private]

Definition at line 238 of file FFTDataServer.h.

Referenced by deleteProcessingData(), FFTDataServer(), and fillColumn().

Definition at line 239 of file FFTDataServer.h.

Referenced by deleteProcessingData(), FFTDataServer(), and fillColumn().

bool FFTDataServer::m_exiting [private]

Definition at line 261 of file FFTDataServer.h.

Referenced by FFTDataServer::FillThread::run(), and ~FFTDataServer().


The documentation for this class was generated from the following files: