PicoScenes API Docs
 
Loading...
Searching...
No Matches
LicenseModel.hxx
Go to the documentation of this file.
1//
2// Created by Zhiping Jiang on 2021/7/19.
3//
4
5#ifndef PICOSCENES_PLATFORM_LICENSEMODEL_HXX
6#define PICOSCENES_PLATFORM_LICENSEMODEL_HXX
7
8#include <map>
9#include <vector>
10#include <chrono>
11#include <functional>
12#include <string>
13#include <optional>
14
15namespace License {
17 public:
18 // Platform features
19 static const inline std::string MultiInstance = "MultiInstance";
20 static const inline std::string MaxNumFrontEnd = "MaxNumFrontEnd";
21 static const inline std::string AccessReservedInformation = "AccessReservedInformation";
22
23 // Intel MVM
24 static const inline std::string MVM_RXFTMClock = "MVM_RXFTMClock";
25
26 // SDR
27 static const inline std::string SDR_MultiMotherBoard = "SDR_MultiMotherBoard";
28 static const inline std::string SDR_Tx2File = "SDR_Tx2File";
29 static const inline std::string SDR_TxFromFile = "SDR_TxFromFile";
30 static const inline std::string SDR_Rx2File = "SDR_Rx2File";
31 static const inline std::string SDR_RxFromFile = "SDR_RxFromFile";
32 static const inline std::string SDR_BatchTx = "SDR_BatchTx";
33 static const inline std::string SDR_ClockSource = "SDR_ClockSource";
34 static const inline std::string SDR_NumTxChannels = "SDR_NumTxChannels";
35 static const inline std::string SDR_NumRxChannels = "SDR_NumRxChannels";
36 static const inline std::string SDR_LegacyCSI = "SDR_LegacyCSI";
37 static const inline std::string SDR_BasebandSignals = "SDR_BasebandSignals";
38 };
39
40 class Feature {
41 public:
42 std::string featureName{};
43 std::string featureDescription{};
44 std::optional<std::vector<std::pair<double, double>>> valueRanges;
45 std::optional<std::vector<double>> discreteValueSet;
46 std::optional<std::vector<std::string>> stringSets;
47
48 explicit Feature(const std::string &featureName, const std::optional<std::vector<std::pair<double, double>>> &valueRanges = std::nullopt, const std::optional<std::vector<double>> &discreteValueSet = std::nullopt, const std::optional<std::vector<std::string>> &stringSets = std::nullopt);
49
50 [[nodiscard]] std::string toString() const;
51 };
52
53 class License {
54 public:
55 std::optional<std::string> proLicenseKey{}; // Empty if it's a trial license
56 std::string hardwareId{};
57 std::string licenseName{};
58 std::string licenseDescription{};
59 std::optional<std::chrono::time_point<std::chrono::system_clock, std::chrono::seconds>> licenseExpirationTime;
60 std::map<std::string, Feature> features;
61 std::string licenseFilePath{};
62
63 License() = default;
64
65 [[nodiscard]] std::string toString() const;
66
67 void save2File() const;
68
69 void save2HumanReadableLicenseJson(const std::string &jsonFile) const;
70
71 std::string getLicenseId();
72
73 static License fromFile(const std::string &licenseFilePath);
74 };
75}
76#endif //PICOSCENES_PLATFORM_LICENSEMODEL_HXX
static const std::string SDR_NumRxChannels
static const std::string MultiInstance
static const std::string SDR_MultiMotherBoard
static const std::string SDR_LegacyCSI
static const std::string SDR_RxFromFile
static const std::string SDR_ClockSource
static const std::string SDR_BasebandSignals
static const std::string SDR_Tx2File
static const std::string MaxNumFrontEnd
static const std::string MVM_RXFTMClock
static const std::string SDR_NumTxChannels
static const std::string SDR_Rx2File
static const std::string SDR_TxFromFile
static const std::string AccessReservedInformation
static const std::string SDR_BatchTx
std::optional< std::vector< std::pair< double, double > > > valueRanges
std::optional< std::vector< double > > discreteValueSet
std::string featureName
Feature(const std::string &featureName, const std::optional< std::vector< std::pair< double, double > > > &valueRanges=std::nullopt, const std::optional< std::vector< double > > &discreteValueSet=std::nullopt, const std::optional< std::vector< std::string > > &stringSets=std::nullopt)
std::string featureDescription
std::optional< std::vector< std::string > > stringSets
std::string toString() const
std::string toString() const
std::map< std::string, Feature > features
License()=default
std::optional< std::chrono::time_point< std::chrono::system_clock, std::chrono::seconds > > licenseExpirationTime
std::string getLicenseId()
static License fromFile(const std::string &licenseFilePath)
void save2HumanReadableLicenseJson(const std::string &jsonFile) const
void save2File() const