#ifndef BSP_RPI_BOARDTEST_RPIGPIO_H_
#define BSP_RPI_BOARDTEST_RPIGPIO_H_

#include <cstdint>

/**
 * @brief   Really simple C++ GPIO wrapper for the Raspberry Pi, using the sysfs interface.
 *          Use BCM pins notation (https://pinout.xyz/#)
 *
 */
class RPiGPIO {
public:
    enum Directions {
        IN = 0,
        OUT = 1
    };

    enum States {
        LOW = 0,
        HIGH = 1
    };

    static int enablePin(int pin);
    static int disablePin(int pin);
    static int pinDirection(int pin, Directions dir);
    static int readPin(int pin);
    static int writePin(int pin, States state);

private:


    static constexpr uint8_t BUFFER_MAX = 3;
    static constexpr uint8_t DIRECTION_MAX = 35;
    static constexpr uint8_t VALUE_MAX = 30;

    static constexpr uint8_t IN_WRITE_SIZE = 3;
    static constexpr uint8_t OUT_WRITE_SIZE = 4;
};


#endif /* BSP_RPI_BOARDTEST_RPIGPIO_H_ */