Template base Class for doing FFTs. More...
#include "rdm_time_series_fft.h"

Public Member Functions |
|
void | reset (void) |
Reset this object. More... |
|
RDM_RETCODE | flush_value (uint32_t threshold=1, RDM::DB::TRANSACTIONAL_T transactional=RDM::DB::NOT_TRANSACTIONAL) |
Flush this object. More... |
|
RDM_RETCODE | flush_stats (uint32_t threshold=1, RDM::DB::TRANSACTIONAL_T transactional=RDM::DB::NOT_TRANSACTIONAL) |
Flush this object. More... |
|
template<class SOURCE_VALUE_T > | |
RDM_RETCODE | put_value (SOURCE_VALUE_T *source_value, RDM::DB::TRANSACTIONAL_T transactional=RDM::DB::NOT_TRANSACTIONAL) |
Template method for receiving a data value. More... |
|
template<class SOURCE_STATS_T > | |
RDM_RETCODE | put_stats (SOURCE_STATS_T *source_stats, RDM::DB::TRANSACTIONAL_T transactional=RDM::DB::NOT_TRANSACTIONAL) |
Template method for receiving statistics. More... |
|
Protected Member Functions |
|
virtual RDM_RETCODE | doFft (void)=0 |
uint32_t | init_tables_to_write_lock (RDM_TABLE_ID *tables) |
ID of the tables where rows are inserted. More... |
|
uint32_t | init_tables_to_read_lock (RDM_TABLE_ID *tables) |
IDs of the tables where rows are read. More... |
|
void | unput (void) |
Undo a previous put operation. More... |
|
void | unflush (void) |
Undo a previous flush operation. More... |
|
RDM_RETCODE | init (RDM_DB db) |
Initialize this object. More... |
|
Static Protected Member Functions |
|
constexpr static int | number_of_tables_to_write_lock (void) |
Number of tables where rows are inserted. More... |
|
constexpr static int | number_of_tables_to_read_lock (void) |
Number of tables where rows are read. More... |
|
Protected Attributes |
|
INDATA_T | in_data [N] |
RANGE_T | aggregate_range |
uint32_t | n |
Friends |
|
template<class ANY_NEXT > | |
class | RDM::DB::transaction |
template<class ANY_NEXT_1 , class ANY_NEXT_2 > | |
class | split |
template<uint32_t ANY_N, class ANY_RANGE_T , class ANY_NEXT > | |
class | collect |
template<uint32_t ANY_N, class ANY_RANGE_T , class ANY_INDATA_T , class ANY_NEXT > | |
class | fft |
template<uint32_t ANY_N, class ANY_AGGREGATE_T , class ANY_AGG_ELEMENT_T , class ANY_NEXT > | |
class | mean |
template<class ANY_RATIO , class ANY_NEXT > | |
class | scale |
template<uint32_t ANY_N, class ANY_STATS_T , class ANY_NEXT > | |
class | stats |
template<uint32_t ANY_N, class ANY_NEXT > | |
class | downsample |
template<class ANY_NEXT > | |
class | custom |
Detailed Description
template<uint32_t N, class RANGE_T, class INDATA_T, class NEXT>
class RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >
Template base Class for doing FFTs.
Template base class for FFT of data values, ranges, or statistics. What is received will be collected and used for doing FFT computations. The result of those computations will be forwarded as a range to the next class in the chain.
This class is incomplete as it does not have the code for doing the actual FFT computation. Use one of the following derived classes:
- Template Parameters
-
N The number of data points for each FFT computation. In the case ranges are received, then N must fit its size. RANGE_T The aggregate FFT class for which objects will be passed to the next class. INDATA_T The type of the data that is passed to this class. NEXT The class in the chain to receive the result of the ranges.
Member Function Documentation
doFft()
|
protectedpure virtual |
Referenced by RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_stats(), and RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_value().

flush_stats()
|
inline |
Flush this object.
Call this method to flush what has been collected so far. A threshold can also be provided. All the data collected for those statistics will be kept as is. The same is the case where the threshold has not been reached.
This operation can be specified as being transactional. However, if the caller always rolls back the transaction in the case of a failure, there is no need to specify single operations to be transactional.
- Return values
-
sOKAY Normal, successful return. eNOSTARTUPDATE An update operation was attempted when no rdm_dbStartUpdate() is active. eNOTLOCKED Attempt to access a table for reading or update without proper locks. eCURSORDB Cursor is associated with a different database. eDBNOTOPEN Database not open. ePRECOMMITTED A precommitted transaction must be committed or rolled back before further operations on this database are allowed. eDUPLICATE Attempt to insert a duplicate value as a unique/primary key. eREADONLY Database is read-only and cannot be updated. eREFINTEGRITY Integrity constraint violation. eROWLIMIT Table row limit reached. eINVARG Invalid argument.
- Parameters
-
threshold [IN] Only flush objects where at least this many elements have been collected transactional [IN] Is the flush required to be transactional
flush_value()
|
inline |
Flush this object.
Call this method to flush what has been collected so far. A threshold can also be provided. All the data collected for those values will be kept as is. The same is the case where the threshold has not been reached.
This operation can be specified as being transactional. However, if the caller always rolls back the transaction in the case of a failure, there is no need to specify single operations to be transactional.
- Return values
-
sOKAY Normal, successful return. eNOSTARTUPDATE An update operation was attempted when no rdm_dbStartUpdate() is active. eNOTLOCKED Attempt to access a table for reading or update without proper locks. eCURSORDB Cursor is associated with a different database. eDBNOTOPEN Database not open. ePRECOMMITTED A precommitted transaction must be committed or rolled back before further operations on this database are allowed. eDUPLICATE Attempt to insert a duplicate value as a unique/primary key. eREADONLY Database is read-only and cannot be updated. eREFINTEGRITY Integrity constraint violation. eROWLIMIT Table row limit reached. eINVARG Invalid argument.
- Parameters
-
threshold [IN] Only flush objects where at least this many elements have been collected transactional [IN] Is the flush required to be transactional
init()
|
inlineprotected |
Initialize this object.
Call this method before sending it any data values or statistics.
- Return values
-
sOKAY Normal, successful return. eINVARG Invalid argument. eDBNOTOPEN Database not open. eCURSORDB Cursor is associated with a different database. ePRECOMMITTED A precommitted transaction must be committed or rolled back before further operations on this database are allowed.
- Parameters
-
db [IN] Use this database for chained classes that need to insert rows
References RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::n, and sOKAY.
Referenced by RDM::TIME_SERIES::fft_rdm< N, RANGE_T, INDATA_T, NEXT >::init().

init_tables_to_read_lock()
|
inlineprotected |
init_tables_to_write_lock()
|
inlineprotected |
number_of_tables_to_read_lock()
|
inlinestaticconstexprprotected |
number_of_tables_to_write_lock()
|
inlinestaticconstexprprotected |
put_stats()
|
inline |
Template method for receiving statistics.
Receive one statistic and process it accordingly.
The type for the value provided is required to have columns for 'time_stamp_first', 'time_stamp_last', 'n', 'value_sum', and 'value_sum2' with appropriate types. Such a type can be generated using rdm-compile with a schema including a table similar to this:
This operation can be specified as being transactional. However, if the caller always rolls back the transaction in the case of a failure, there is no need to specify single operations to be transactional.
- Template Parameters
-
SOURCE_STATS_T The actual type of the statistic received.
- Return values
-
sOKAY Normal, successful return. eNOSTARTUPDATE An update operation was attempted when no rdm_dbStartUpdate() is active. eNOTLOCKED Attempt to access a table for reading or update without proper locks. eCURSORDB Cursor is associated with a different database. eDBNOTOPEN Database not open. ePRECOMMITTED A precommitted transaction must be committed or rolled back before further operations on this database are allowed. eDUPLICATE Attempt to insert a duplicate value as a unique/primary key. eREADONLY Database is read-only and cannot be updated. eREFINTEGRITY Integrity constraint violation. eROWLIMIT Table row limit reached. eINVARG Invalid argument.
- Parameters
-
[in] source_stats The source statistics sent to this class transactional [IN] Is the put required to be transactional
References RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::aggregate_range, RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::doFft(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::in_data, RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::n, and sOKAY.

put_value()
|
inline |
Template method for receiving a data value.
Receive one data value and process it accordingly.
The type for the value provided is required to have columns for 'time_stamp_current' and 'value_current' with appropriate types. Such a type can be generated using rdm-compile with a schema including a table similar to this:
This operation can be specified as being transactional. However, if the caller always rolls back the transaction in the case of a failure, there is no need to specify single operations to be transactional.
- Template Parameters
-
SOURCE_VALUE_T The actual type of the source values received
- Return values
-
sOKAY Normal, successful return. eNOSTARTUPDATE An update operation was attempted when no rdm_dbStartUpdate() is active. eNOTLOCKED Attempt to access a table for reading or update without proper locks. eCURSORDB Cursor is associated with a different database. eDBNOTOPEN Database not open. ePRECOMMITTED A precommitted transaction must be committed or rolled back before further operations on this database are allowed. eDUPLICATE Attempt to insert a duplicate value as a unique/primary key. eREADONLY Database is read-only and cannot be updated. eREFINTEGRITY Integrity constraint violation. eROWLIMIT Table row limit reached. eINVARG Invalid argument.
- Parameters
-
[in] source_value The source value sent to this class transactional [IN] Is the put required to be transactional
References RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::aggregate_range, RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::doFft(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::in_data, RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::n, and sOKAY.

reset()
|
inline |
Reset this object.
Call this method to discard all internally kept data values, ranges, and statistics that have not yet been persisted and start over from scratch.
References RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::n.
unflush()
|
inlineprotected |
unput()
|
inlineprotected |
Friends And Related Function Documentation
collect
|
friend |
custom
|
friend |
downsample
|
friend |
fft
|
friend |
mean
|
friend |
RDM::DB::transaction
|
friend |
scale
|
friend |
split
|
friend |
stats
|
friend |
Field Documentation
aggregate_range
|
protected |
The aggregated FFTs are placed here
Referenced by RDM::TIME_SERIES::fft_abs< N, RANGE_T, INDATA_T, NEXT >::init(), RDM::TIME_SERIES::fft_abs_positive< N, RANGE_T, INDATA_T, NEXT >::init(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_stats(), and RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_value().
in_data
|
protected |
The data point received that we use for doing the FFT
Referenced by RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_stats(), and RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_value().
n
|
protected |
How many data values we have collected so far
Referenced by RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::init(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_stats(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::put_value(), RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::reset(), and RDM::TIME_SERIES::fft< N, RANGE_T, INDATA_T, NEXT >::unput().
The documentation for this class was generated from the following files: