#include "gpio.hpp" #include "../../systems/systemCall.h" #include #define PIN_COUNT 27 class Gpio::gpioImpl { public: uint8_t pinCount = PIN_COUNT; uint8_t currentPin = 0; enum functionality { undefined, gpio, i2c, spi, pwm, pcm, uart, eeprom, clk }; functionality pins[PIN_COUNT + 1]; gpioImpl() { printf("implementation of Gpio Sucsessfull\n"); pins[1] = eeprom; pins[2] = i2c; pins[3] = i2c; pins[4] = clk; pins[5] = gpio; pins[6] = gpio; pins[7] = spi; pins[8] = spi; pins[9] = spi; pins[10] = spi; pins[11] = spi; pins[12] = pwm; pins[13] = pwm; pins[14] = uart; pins[15] = uart; pins[16] = gpio; pins[17] = gpio; pins[18] = pcm; pins[19] = pcm; pins[20] = pcm; pins[21] = pcm; pins[22] = gpio; pins[23] = gpio; pins[24] = gpio; pins[25] = gpio; pins[26] = gpio; pins[27] = gpio; for(currentPin = 0; currentPin <= pinCount; currentPin ++) { printf("Pin %d %d\n",currentPin, pins[currentPin]); } } void setMode(uint8_t gpioNo, Gpio::pinMode mode) { } void setOutputState(uint8_t gpioNo, Gpio::pinState state) { } void setPullUpDonw(uint8_t gpioNo, Gpio::pinPullUpDown resistance) { } void setSpeed(uint8_t gpioNo, Gpio::pinSpeed speed) { } void config(uint8_t gpioNo, Gpio::pinMode mode, Gpio::pinState state, Gpio::pinPullUpDown resistance, Gpio::pinSpeed speed) { } uint8_t readPin(uint8_t gpioNo) { return 0; } void writePin(uint8_t gpioNo, uint8_t value) { } uint16_t readRange(uint8_t start, uint8_t stop) { return 0; } void writeRange(uint8_t start, uint8_t stop, uint16_t value) { } void pinBlock(uint8_t gpioNo) { } void pinUnblock(uint8_t gpioNo) { } void throwError(Gpio::errors errNo) { } }; Gpio::Gpio():gpioPimpl(new gpioImpl()){} Gpio::~Gpio(){} void Gpio::setMode(uint8_t gpioNo, Gpio::pinMode mode) { return gpioPimpl->setMode(gpioNo, mode); } void Gpio::setOutputState(uint8_t gpioNo, Gpio::pinState state) { return gpioPimpl->setOutputState(gpioNo,state); } void Gpio::setPullUpDonw(uint8_t gpioNo, Gpio::pinPullUpDown resistance) { return gpioPimpl->setPullUpDonw(gpioNo,resistance); } void Gpio::setSpeed(uint8_t gpioNo, Gpio::pinSpeed speed) { return gpioPimpl->setSpeed(gpioNo, speed); } void Gpio::config(uint8_t gpioNo, Gpio::pinMode mode, Gpio::pinState state, Gpio::pinPullUpDown resistance, Gpio::pinSpeed speed) { return gpioPimpl->config(gpioNo,mode,state,resistance,speed); } uint8_t Gpio::readPin(uint8_t gpioNo) { return gpioPimpl->readPin(gpioNo); } void Gpio::writePin(uint8_t gpioNo, uint8_t value) { return gpioPimpl->writePin(gpioNo, value); } uint16_t Gpio::readRange(uint8_t start, uint8_t stop) { return gpioPimpl->readRange(start,stop); } void Gpio::writeRange(uint8_t start, uint8_t stop, uint16_t value) { return gpioPimpl->writeRange(start,stop,value); } void Gpio::pinBlock(uint8_t gpioNo) { return gpioPimpl->pinBlock(gpioNo); } void Gpio::pinUnblock(uint8_t gpioNo) { return gpioPimpl->pinUnblock(gpioNo); } void Gpio::throwError(Gpio::errors error) { return gpioPimpl->throwError(error); }