#ifndef _GPIO_H_ #define _GPIO_H_ #include #include #include #include #include #include "../../config.h" class Gpio { public: enum pinMode { input, output }; enum pinState { pushPull, openDrain, floating, analog }; enum pinPullUpDown { none, pullUp, pullDown }; enum pinSpeed { slow, normal, fast, veryFast }; enum errors { pinNotDeclared, pinNotReachable, pinNoPullUpDown, pinNotAnalog, pinNotDigital, pinTooFast, pinBocked, pinAlreadyUsed }; Gpio(); ~Gpio(); void setMode(uint8_t gpioNo, pinMode mode); void setOutputState(uint8_t gpioNo, pinState state); void setPullUpDonw(uint8_t gpioNo, pinPullUpDown resistance); void setSpeed(uint8_t gpioNo, pinSpeed speed); void config(uint8_t gpioNo, pinMode mode, pinState state, pinPullUpDown resistance, pinSpeed speed); uint8_t readPin(uint8_t gpioNo); void writePin(uint8_t gpioNo, uint8_t value); uint16_t readRange(uint8_t start, uint8_t stop); void writeRange(uint8_t start, uint8_t stop, uint16_t value); void pinBlock(uint8_t gpioNo); void pinUnblock(uint8_t gpioNo); private: void throwError(errors errNo); class gpioImpl; std::unique_ptr gpioPimpl; }; #endif // _GPIO_H_