##// END OF EJS Templates
Implements unit test (3)...
Implements unit test (3) Implements validation method and generates last value for CosinusProvider

File last commit:

r689:e4699d579435
r689:e4699d579435
Show More
CosinusProvider.cpp
110 lines | 3.7 KiB | text/x-c | CppLexer
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r120 #include "CosinusProvider.h"
#include <Data/DataProviderParameters.h>
#include <Data/ScalarSeries.h>
Add cmath header missing
r127 #include <cmath>
Add DownloadProgress emission for mock plugin
r394 #include <QFuture>
Add current progression for thread fix
r336 #include <QThread>
Add DownloadProgress emission for mock plugin
r394 #include <QtConcurrent/QtConcurrent>
Fix the cosinus bug....
r276
The cosinus provider can now handle data request
r215 Q_LOGGING_CATEGORY(LOG_CosinusProvider, "CosinusProvider")
Alexandre Leroux
Generates and registers clone provider
r656 std::shared_ptr<IDataProvider> CosinusProvider::clone() const
{
// No copy is made in clone
return std::make_shared<CosinusProvider>();
}
Implementation of V5 acquisition
r510 std::shared_ptr<IDataSeries> CosinusProvider::retrieveData(QUuid acqIdentifier,
const SqpRange &dataRangeRequested)
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r120 {
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
Fix the cosinus bug....
r276 auto dataIndex = 0;
The cosinus provider can now handle data request
r215
// Gets the timerange from the parameters
Alexandre Leroux
Uses std::vector instead of QVector in ArrayData (1)...
r644 double freq = 100.0;
Implementation of V5 acquisition
r510 double start = std::ceil(dataRangeRequested.m_TStart * freq); // 100 htz
double end = std::floor(dataRangeRequested.m_TEnd * freq); // 100 htz
The cosinus provider can now handle data request
r215
// We assure that timerange is valid
if (end < start) {
std::swap(start, end);
}
Alexandre Leroux
Implements unit test (3)...
r689 // Generates scalar series containing cosinus values (one value per second, end value is
// included)
auto dataCount = end - start + 1;
The cosinus provider can now handle data request
r215
Alexandre Leroux
Uses std::vector instead of QVector in ArrayData (1)...
r644 auto xAxisData = std::vector<double>{};
Alexandre Leroux
Updates cosinus provider...
r418 xAxisData.resize(dataCount);
Alexandre Leroux
Uses std::vector instead of QVector in ArrayData (1)...
r644 auto valuesData = std::vector<double>{};
Alexandre Leroux
Updates cosinus provider...
r418 valuesData.resize(dataCount);
Add DownloadProgress emission for mock plugin
r394
int progress = 0;
Alexandre Leroux
Updates cosinus provider...
r418 auto progressEnd = dataCount;
Alexandre Leroux
Implements unit test (3)...
r689 for (auto time = start; time <= end; ++time, ++dataIndex) {
Implementation of V5 acquisition
r510 auto it = m_VariableToEnableProvider.find(acqIdentifier);
Add DownloadProgress emission for mock plugin
r394 if (it != m_VariableToEnableProvider.end() && it.value()) {
const auto timeOnFreq = time / freq;
Alexandre Leroux
Updates cosinus provider...
r418
Alexandre Leroux
Uses std::vector instead of QVector in ArrayData (1)...
r644 xAxisData[dataIndex] = timeOnFreq;
valuesData[dataIndex] = std::cos(timeOnFreq);
Add DownloadProgress emission for mock plugin
r394
// progression
int currentProgress = (time - start) * 100.0 / progressEnd;
if (currentProgress != progress) {
progress = currentProgress;
Implementation of V5 acquisition
r510 emit dataProvidedProgress(acqIdentifier, progress);
Add DownloadProgress emission for mock plugin
r394 }
}
else {
if (!it.value()) {
qCDebug(LOG_CosinusProvider())
<< "CosinusProvider::retrieveData: ARRET De l'acquisition detecté"
<< end - time;
}
}
The cosinus provider can now handle data request
r215 }
Implementation of V5 acquisition
r510 emit dataProvidedProgress(acqIdentifier, 0.0);
Add DownloadProgress emission for mock plugin
r394
Alexandre Leroux
Updates cosinus provider...
r418 return std::make_shared<ScalarSeries>(std::move(xAxisData), std::move(valuesData),
Unit{QStringLiteral("t"), true}, Unit{});
Alexandre Leroux
Creates a default provider that will be returned by the mock plugin
r120 }
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287
Implementation of V5 acquisition
r510 void CosinusProvider::requestDataLoading(QUuid acqIdentifier,
const DataProviderParameters &parameters)
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 {
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
Implementation of V5 acquisition
r510 m_VariableToEnableProvider[acqIdentifier] = true;
Initialisation of the graph range at creation in a new graphe, or inside...
r518 qCDebug(LOG_CosinusProvider()) << "TORM: CosinusProvider::requestDataLoading"
Change info to debug on thread display log
r339 << QThread::currentThread()->objectName();
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 // NOTE: Try to use multithread if possible
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r375 const auto times = parameters.m_Times;
Add DownloadProgress emission for mock plugin
r394
Alexandre Leroux
Updates IDataProvider::requestDataLoading() method's signature...
r375 for (const auto &dateTime : qAsConst(times)) {
Implementation of V5 acquisition
r510 if (m_VariableToEnableProvider[acqIdentifier]) {
auto scalarSeries = this->retrieveData(acqIdentifier, dateTime);
Initialisation of the graph range at creation in a new graphe, or inside...
r518 qCDebug(LOG_CosinusProvider()) << "TORM: CosinusProvider::dataProvided";
Implementation of V5 acquisition
r510 emit dataProvided(acqIdentifier, scalarSeries, dateTime);
Add DownloadProgress emission for mock plugin
r394 }
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 }
}
Implement of the abort download process
r388
Implementation of V5 acquisition
r510 void CosinusProvider::requestDataAborting(QUuid acqIdentifier)
Implement of the abort download process
r388 {
Add DownloadProgress emission for mock plugin
r394 // TODO: Add Mutex
Implementation of V5 acquisition
r510 qCDebug(LOG_CosinusProvider()) << "CosinusProvider::requestDataAborting" << acqIdentifier
Remove abort button validity when the progress is finished (eg. == 0)
r398 << QThread::currentThread()->objectName();
Implementation of V5 acquisition
r510 auto it = m_VariableToEnableProvider.find(acqIdentifier);
Add DownloadProgress emission for mock plugin
r394 if (it != m_VariableToEnableProvider.end()) {
it.value() = false;
}
else {
qCWarning(LOG_CosinusProvider())
<< tr("Aborting progression of inexistant identifier detected !!!");
}
Implement of the abort download process
r388 }