You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

197 lines
3.2 KiB

#include "gpio.hpp"
#include "../../systems/systemCall.h"
#include <stdint.h>
#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);
}