##// END OF EJS Templates
Updates data series creation according to the value type (vector or scalar)
Updates data series creation according to the value type (vector or scalar)

File last commit:

r518:5673fc6ded12
r532:522bb785789b
Show More
CosinusProvider.cpp
103 lines | 3.5 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")
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
Fix the cosinus bug....
r276 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);
}
// Generates scalar series containing cosinus values (one value per second)
Alexandre Leroux
Updates cosinus provider...
r418 auto dataCount = end - start;
The cosinus provider can now handle data request
r215
Alexandre Leroux
Updates cosinus provider...
r418 auto xAxisData = QVector<double>{};
xAxisData.resize(dataCount);
auto valuesData = QVector<double>{};
valuesData.resize(dataCount);
Add DownloadProgress emission for mock plugin
r394
int progress = 0;
Alexandre Leroux
Updates cosinus provider...
r418 auto progressEnd = dataCount;
The cosinus provider can now handle data request
r215 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
xAxisData.replace(dataIndex, timeOnFreq);
valuesData.replace(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 }