Program Listing for File DInput10Module.hpp

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

/****************************************************************************
 * @defgroup PackageName Modules
 * @file DInput10Module.hpp
 * @brief
 * @author info@pickdata.net
 ***************************************************************************/
#ifndef DINPUT_MODULE_HPP_
#define DINPUT_MODULE_HPP_

#include "DInput10Module.h"
#include "Module.hpp"

// Forward declaration
class DigitalInputFunctions;

class DInput10Module : public Module {
    friend class digital_inputs_module;

protected:
    DigitalInputFunctions* digitalInputs;
    EmodRet initFunctions();
    uint8_t getInputsOffsetId();
    uint8_t getFunctionsOffsetId();

public:
    // Constants
    static constexpr uint16_t DI_INPUT01 = DInput10Module_INPUT01;
    static constexpr uint16_t DI_INPUT02 = DInput10Module_INPUT02;
    static constexpr uint16_t DI_INPUT03 = DInput10Module_INPUT03;
    static constexpr uint16_t DI_INPUT04 = DInput10Module_INPUT04;
    static constexpr uint16_t DI_INPUT05 = DInput10Module_INPUT05;
    static constexpr uint16_t DI_INPUT06 = DInput10Module_INPUT06;
    static constexpr uint16_t DI_INPUT07 = DInput10Module_INPUT07;
    static constexpr uint16_t DI_INPUT08 = DInput10Module_INPUT08;
    static constexpr uint16_t DI_INPUT09 = DInput10Module_INPUT09;
    static constexpr uint16_t DI_INPUT10 = DInput10Module_INPUT10;
    static constexpr uint16_t DI_ALL_INPUT = DInput10Module_ALL_INPUT;

    static constexpr uint8_t NUMBER_OF_DI_INPUTS = DInput10Module_NUMBER_OF_DI_INPUTS;

    static constexpr uint32_t MODE_PRETRIGGER_TIME = DInput10Module_MODE_PRETRIGGER_TIME;
    static constexpr uint32_t MODE_PULSE_COUNTER = DInput10Module_MODE_PULSE_COUNTER;
    static constexpr uint32_t MODE_WIDTH_COUNTER = DInput10Module_MODE_WIDTH_COUNTER;

    static constexpr uint8_t idFunctionINPUTS = DInput10Module_idFunctionINPUTS;
    static constexpr uint8_t idFunctionCOUNTER01 = DInput10Module_idFunctionCOUNTER01;
    static constexpr uint8_t idFunctionCOUNTER02 = DInput10Module_idFunctionCOUNTER02;
    static constexpr uint8_t idFunctionCOUNTER03 = DInput10Module_idFunctionCOUNTER03;
    static constexpr uint8_t idFunctionCOUNTER04 = DInput10Module_idFunctionCOUNTER04;
    static constexpr uint8_t idFunctionCOUNTER05 = DInput10Module_idFunctionCOUNTER05;
    static constexpr uint8_t idFunctionCOUNTER06 = DInput10Module_idFunctionCOUNTER06;
    static constexpr uint8_t idFunctionCOUNTER07 = DInput10Module_idFunctionCOUNTER07;
    static constexpr uint8_t idFunctionCOUNTER08 = DInput10Module_idFunctionCOUNTER08;
    static constexpr uint8_t idFunctionCOUNTER09 = DInput10Module_idFunctionCOUNTER09;
    static constexpr uint8_t idFunctionCOUNTER10 = DInput10Module_idFunctionCOUNTER10;

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

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

    EmodRet init(const uint8_t variant);

    // DI methods

    EmodRet getStatus(const uint16_t DI_INPUT_mask, uint8_t* status, bool* new_data = nullptr);

    EmodRet getAllStatus(uint8_t status[NUMBER_OF_DI_INPUTS], bool* new_data = nullptr);

    EmodRet setPulseFilterTime(const uint16_t DI_INPUT_mask, const uint32_t ms_time);

    EmodRet setAllPulseFilterTime(const uint32_t ms_time);

    EmodRet getPulseFilterTime(const uint16_t DI_INPUT_mask, uint32_t* ms_time);

    EmodRet getAllPulseFilterTime(uint32_t ms_times[NUMBER_OF_DI_INPUTS]);

    EmodRet getPulseCount(const uint16_t DI_INPUT_mask, uint32_t* count);

    EmodRet getAllPulseCount(uint32_t counts[NUMBER_OF_DI_INPUTS]);

    EmodRet resetPulseCount(uint16_t DI_INPUT_mask);

    EmodRet resetAllPulseCount();

    EmodRet getPulseWidth(const uint16_t DI_INPUT_mask, uint32_t* width);

    EmodRet getAllPulseWidth(uint32_t widths[NUMBER_OF_DI_INPUTS]);

    // Callback methods

    EmodRet configEventAtTimeInterval(const uint32_t time_interval);

    EmodRet switchToMode(const uint16_t DI_INPUT_mask, const uint32_t mode);

    EmodRet configEventOnNewData();

    EmodRet configEventOnValueChange(const uint32_t threshold, const uint32_t event_mask = DI_ALL_INPUT);

    EmodRet resetEventConfig(void);
};

#endif  // DINPUT_MODULE_HPP_