84 lines
2.3 KiB
C
84 lines
2.3 KiB
C
|
|
#pragma once
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <ctime>
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <map>
|
|||
|
|
#include <string>
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
#include "pqdif/include/pqdif_ph.h"
|
|||
|
|
|
|||
|
|
// ============================
|
|||
|
|
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ
|
|||
|
|
// ============================
|
|||
|
|
struct RawChannelTagMeta
|
|||
|
|
{
|
|||
|
|
std::string raw_channel_name; // ԭʼ tagChannelName
|
|||
|
|
std::string normalized_channel_name; // <20><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>õĹ淶<C4B9><E6B7B6> key
|
|||
|
|
|
|||
|
|
long phase_id = -1; // tagPhaseID
|
|||
|
|
GUID quantity_type_id{}; // tagQuantityTypeID
|
|||
|
|
long quantity_measured_id = -1; // tagQuantityMeasuredID
|
|||
|
|
|
|||
|
|
double channel_frequency = 0.0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int group_id = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>г<EFBFBD><D0B3><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ============================
|
|||
|
|
// ϵ<>м<EFBFBD><D0BC><EFBFBD>ǩ
|
|||
|
|
// ============================
|
|||
|
|
struct RawSeriesTagMeta
|
|||
|
|
{
|
|||
|
|
long quantity_units_id = -1; // tagQuantityUnitsID
|
|||
|
|
GUID quantity_characteristic_id{}; // tagQuantityCharacteristicID
|
|||
|
|
GUID value_type_id{}; // tagValueTypeID
|
|||
|
|
|
|||
|
|
long series_base_type = -1; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
double series_scale = 1.0; // <20><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
|||
|
|
double series_offset = 0.0; // ƫ<><C6AB>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// ============================
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ԭʼͳ<CABC><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// <20><>ǰ<EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǩ + ԭʼֵ
|
|||
|
|
// ============================
|
|||
|
|
struct RawChannelSeries
|
|||
|
|
{
|
|||
|
|
RawChannelTagMeta channel_tag;
|
|||
|
|
|
|||
|
|
RawSeriesTagMeta time_meta;
|
|||
|
|
RawSeriesTagMeta max_meta;
|
|||
|
|
RawSeriesTagMeta min_meta;
|
|||
|
|
RawSeriesTagMeta avg_meta;
|
|||
|
|
RawSeriesTagMeta cp95_meta;
|
|||
|
|
RawSeriesTagMeta val_meta;
|
|||
|
|
|
|||
|
|
std::vector<time_t> times;
|
|||
|
|
std::vector<double> max_values;
|
|||
|
|
std::vector<double> min_values;
|
|||
|
|
std::vector<double> avg_values;
|
|||
|
|
std::vector<double> cp95_values;
|
|||
|
|
std::vector<double> val_values;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
using RawChannelMap = std::map<std::string, RawChannelSeries>;
|
|||
|
|
|
|||
|
|
// һ<><D2BB> PQDIF <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
struct ParsedPqdifFile
|
|||
|
|
{
|
|||
|
|
std::string mac; // <20>豸Ŀ¼<C4BF><C2BC>
|
|||
|
|
std::string source_file; // ԭʼ<D4AD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
time_t parsed_at = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
RawChannelMap channels; // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> PQDIF ɨ<><C9A8><EFBFBD>߳<EFBFBD>
|
|||
|
|
void RunPqdifScanLoop();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽӿ<CABD>
|
|||
|
|
bool PopOldestParsedPqdifFile(ParsedPqdifFile& out);
|
|||
|
|
bool PeekOldestParsedPqdifFile(ParsedPqdifFile& out);
|
|||
|
|
size_t GetParsedPqdifCacheSize();
|
|||
|
|
void ClearParsedPqdifCache();
|