Program Listing for File LevelMeter6_3Module.hpp

Return to documentation for file (/home/asunye/wd/dev/emod_docs/emod_controller/build_x86/install/include/LevelMeter6_3Module.hpp)

#ifndef LEVELMETER6_3MODULE_HPP_
#define LEVELMETER6_3MODULE_HPP

#include "Module.hpp"
#include "LevelMeterParameters.hpp"

// Forward declaration
class LevelMeterFunctions;
class AnalogInputFunctions;

typedef void (*LevelMeter6_3ModuleCallback_Type) (const uint8_t meter_num, const uint8_t new_status, void* const ctx);

class LevelMeter6_3Module : public Module
{
friend class LevelMeter6_3Napi;

protected:
    LevelMeterFunctions* levelMeters;
    static void rawControllerCallback(const uint8_t* data, const uint16_t data_len, const uint8_t id_function, void* const ctx);
    LevelMeter6_3ModuleCallback_Type callback;
    std::vector<int> callback_input_status;
    EmodRet initFunctions();

public:
    // Constants
    static constexpr int kNumResistiveSensors = 6;
    static constexpr int kNumCurrentSensors = 3;
    static constexpr int kNumAnalogInputs = 1;

    // Constructor, destructor and init methods
    LevelMeter6_3Module();
    ~LevelMeter6_3Module();

    EmodRet init( const LevelMeter6_3ModuleCallback_Type callback_func = nullptr, void* const callback_context = nullptr, const uint8_t variant = 1 );

    EmodRet init( const uint8_t variant );

    EmodRet setResistiveSensorThreshold( const uint8_t meter_num,
                                        const DetectResistance detect_resistance,
                                        const RefillResistance refill_resistance );


    EmodRet setAllResistiveSensorThreshold( const DetectResistance detect_resistance,
                                        const RefillResistance refill_resistance );


    EmodRet setCurrentSensorType( const uint8_t meter_num, const LevelMeterType type );


    EmodRet setAllCurrentSensorType( const LevelMeterType type );


    EmodRet getLevelStatus( const uint16_t meter_num, uint8_t* status );

    EmodRet getAllLevelStatus( uint8_t status[kNumResistiveSensors + kNumCurrentSensors + 1] );

    EmodRet getAnalogInputCurrent( float* data );

    EmodRet configEventOnNewData();

    EmodRet resetEventConfig( void );
};

#endif // LEVELMETER6_3MODULE_HPP