Program Listing for File EnergyMeter3Module.hpp

Return to documentation for file (doc/include/EnergyMeter3Module.hpp)

#ifndef ENERGYMETER3_MODULE_HPP_
#define ENERGYMETER3_MODULE_HPP_

#include "EnergyMeter3Module.h"
#include "EnergyMeterParameters.hpp"
#include "Module.hpp"

// Forward declaration
class EnergyMeterFunctions;

class EnergyMeter3Module : public Module {
    friend class EnergyMeter3ModuleNapi;

    ModuleType em3_type_;

protected:
    EnergyMeterFunctions* energy_meter;
    EnergyMeter3ModuleCookedCallback_Type cooked_callback_func_;
    void* callback_ctx_;
    static void cookedCallback(const uint8_t* data, const uint16_t data_len, const uint8_t id_function, void* ctx);

    EmodRet initFunctions();

public:
    EnergyMeter3Module();
    ~EnergyMeter3Module();

    EmodRet init(const ModuleType em3_type = ModuleType::typeEM3, const EnergyMeter3ModuleCallback_Type callback_func = nullptr,
                 void* const callback_context = nullptr, const uint8_t variant = 1);
    EmodRet init(const ModuleType em3_type, const EnergyMeter3ModuleCookedCallback_Type callback_func, void* const callback_context, const uint8_t variant);

    EmodRet init(const uint8_t variant);

    EmodRet configCurrentFullScale(const float full_current_L1, const float full_current_L2, const float full_current_L3);

    EmodRet configVoltageFullScale(const float full_voltage_L1, const float full_voltage_L2, const float full_voltage_L3);

    EmodRet configSecondaryVoltageFullScale(const float full_voltage_L1, const float full_voltage_L2, const float full_voltage_L3);

    EmodRet configCurrentDirection(const bool current_direction_L1, const bool current_direction_L2, const bool current_direction_L3);

    EmodRet configWorkMode(const uint16_t mode);

    EmodRet configMeteringStandard(const uint16_t standard);

    EmodRet resetAllEnergyMeter(void);

    EmodRet getCurrentFullScale(float* full_current_L1, float* full_current_L2, float* full_current_L3);

    EmodRet getVoltageFullScale(float* full_voltage_L1, float* full_voltage_L2, float* full_voltage_L3);

    EmodRet getSecondaryVoltageFullScale(float* full_voltage_L1, float* full_voltage_L2, float* full_voltage_L3);

    EmodRet getCurrentDirection(bool* current_direction_L1, bool* current_direction_L2, bool* current_direction_L3);

    EmodRet getWorkMode(uint16_t* mode);

    EmodRet getMeteringStandard(uint16_t* standard);

    EmodRet getPowerParameters(const int32_t phase, PhasePowerParameters* parameters);

    EmodRet getEnergyParameters(const int32_t phase, EnergyParameters* parameters);

    EmodRet getPowerParameters_L123Combined(CombinedPowerParameters* parameters);

    EmodRet getEnergyParameters_L123Combined(EnergyParameters* parameters);

    // Callback methods

    EmodRet configEventAtTimeInterval(const uint32_t time_interval);

    EmodRet resetEventConfig(void);
};

#endif  // ENERGYMETER3_MODULE_HPP_