aboutsummaryrefslogtreecommitdiff
path: root/src/protocol_18/types.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol_18/types.h')
-rw-r--r--src/protocol_18/types.h174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/protocol_18/types.h b/src/protocol_18/types.h
new file mode 100644
index 0000000..d3574e9
--- /dev/null
+++ b/src/protocol_18/types.h
@@ -0,0 +1,174 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+#ifndef INVERTER_TOOLS_P18_TYPES_H
+#define INVERTER_TOOLS_P18_TYPES_H
+
+#include <string>
+
+#define ENUM_STR(enum_type) std::ostream& operator<< (std::ostream& os, enum_type val)
+#define ENUM_STR_DEFAULT return os << val
+
+namespace p18 {
+
+enum class CommandType: int {
+ GetProtocolID = 0,
+ GetCurrentTime,
+ GetTotalGenerated,
+ GetYearGenerated,
+ GetMonthGenerated,
+ GetDayGenerated,
+ GetSeriesNumber,
+ GetCPUVersion,
+ GetRatedInformation,
+ GetGeneralStatus,
+ GetWorkingMode,
+ GetFaultsAndWarnings,
+ GetFlagsAndStatuses,
+ GetDefaults,
+ GetAllowedChargingCurrents,
+ GetAllowedACChargingCurrents,
+ GetParallelRatedInformation,
+ GetParallelGeneralStatus,
+ GetACChargingTimeBucket,
+ GetACLoadsSupplyTimeBucket,
+ SetLoads = 100,
+ SetFlag,
+ SetDefaults,
+ SetBatteryMaxChargingCurrent,
+ SetBatteryMaxACChargingCurrent,
+ SetACOutputFreq,
+ SetBatteryMaxChargingVoltage,
+ SetACOutputRatedVoltage,
+ SetOutputSourcePriority,
+ SetBatteryChargingThresholds, /* Battery re-charging and re-discharing voltage when utility is available */
+ SetChargingSourcePriority,
+ SetSolarPowerPriority,
+ SetACInputVoltageRange,
+ SetBatteryType,
+ SetOutputModel,
+ SetBatteryCutOffVoltage,
+ SetSolarConfig,
+ ClearGenerated,
+ SetDateTime,
+ SetACChargingTimeBucket,
+ SetACLoadsSupplyTimeBucket,
+};
+
+enum class BatteryType {
+ AGM = 0,
+ Flooded = 1,
+ User = 2,
+};
+ENUM_STR(BatteryType);
+
+enum class InputVoltageRange {
+ Appliance = 0,
+ USP = 1,
+};
+ENUM_STR(InputVoltageRange);
+
+enum class OutputSourcePriority {
+ SolarUtilityBattery = 0,
+ SolarBatteryUtility = 1,
+};
+ENUM_STR(OutputSourcePriority);
+
+enum class ChargerSourcePriority {
+ SolarFirst = 0,
+ SolarAndUtility = 1,
+ SolarOnly = 2,
+};
+ENUM_STR(ChargerSourcePriority);
+
+enum class MachineType {
+ OffGridTie = 0,
+ GridTie = 1,
+};
+ENUM_STR(MachineType);
+
+enum class Topology {
+ TransformerLess = 0,
+ Transformer = 1,
+};
+ENUM_STR(Topology);
+
+enum class OutputModelSetting {
+ SingleModule = 0,
+ ParallelOutput = 1,
+ Phase1OfThreePhaseOutput = 2,
+ Phase2OfThreePhaseOutput = 3,
+ Phase3OfThreePhaseOutput = 4,
+};
+ENUM_STR(OutputModelSetting);
+
+enum class SolarPowerPriority {
+ BatteryLoadUtility = 0,
+ LoadBatteryUtility = 1,
+};
+ENUM_STR(SolarPowerPriority);
+
+enum class MPPTChargerStatus {
+ Abnormal = 0,
+ NotCharging = 1,
+ Charging = 2,
+};
+ENUM_STR(MPPTChargerStatus);
+
+enum class BatteryPowerDirection {
+ DoNothing = 0,
+ Charge = 1,
+ Discharge = 2,
+};
+ENUM_STR(BatteryPowerDirection);
+
+enum class DC_AC_PowerDirection {
+ DoNothing = 0,
+ AC_DC = 1,
+ DC_AC = 2,
+};
+ENUM_STR(DC_AC_PowerDirection);
+
+enum class LinePowerDirection {
+ DoNothing = 0,
+ Input = 1,
+ Output = 2,
+};
+ENUM_STR(LinePowerDirection);
+
+enum class WorkingMode {
+ PowerOnMode = 0,
+ StandbyMode = 1,
+ BypassMode = 2,
+ BatteryMode = 3,
+ FaultMode = 4,
+ HybridMode = 5,
+};
+ENUM_STR(WorkingMode);
+
+enum class ParallelConnectionStatus {
+ NotExistent = 0,
+ Existent = 1,
+};
+ENUM_STR(ParallelConnectionStatus);
+
+enum class LoadConnectionStatus {
+ Disconnected = 0,
+ Connected = 1,
+};
+ENUM_STR(LoadConnectionStatus);
+
+enum class ConfigurationStatus {
+ Default = 0,
+ Changed = 1,
+};
+ENUM_STR(ConfigurationStatus);
+
+struct Flag {
+ std::string flag;
+ char letter;
+ std::string description;
+};
+
+}
+
+#endif //INVERTER_TOOLS_P18_TYPES_H