#include "gpio.hpp" #include "../../bsl_nucleo_f042k6.h" #include "/home/key/git/ked/bsl/csl/stm32f042/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h" //#include "gpioMap.hpp" #define PIN_COUNT 26 class Gpio::gpioImpl { public: uint8_t pinCount = PIN_COUNT; char buffer[50]; uint8_t currentPin = 0; int ck = 0; pinDefinition pins[PIN_COUNT + 1]; gpioImpl() { // Enable CLock to GPIO port B RCC->AHBENR |= RCC_AHBENR_GPIOBEN; // Set PIN 3 of port B as Output GPIOB->MODER |= GPIO_MODER_MODER3_0; GPIOB->MODER &=~ GPIO_MODER_MODER3_1; } void setFunction(uint8_t gpioNo, Gpio::pinFunction function) { } 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::pinFunction function, Gpio::pinMode mode, Gpio::pinState state, Gpio::pinPullUpDown resistance, Gpio::pinSpeed speed) { } int8_t readPin(uint8_t gpioNo) { return 2; } void writePin(uint8_t gpioNo, uint8_t value) { if(value == 1) { GPIOB->ODR |= LED_G_Pin; //LL_GPIO_SetOutputPin(LED_G_GPIO_Port,LED_G_Pin); } else if(value == 0) { GPIOB->ODR &=~ LED_G_Pin; //LL_GPIO_ResetOutputPin(LED_G_GPIO_Port,LED_G_Pin); } } uint16_t readRange(uint8_t start, uint8_t stop) { return 0; } void writeRange(uint8_t start, uint8_t stop, uint16_t value) { } void pinInitiate(uint8_t gpioNo) { } void pinUninitiate(uint8_t gpioNo) { } void checkCurrentPins() { } void pinList() // Lists allthe pins whom their mode in not set to undefined. { } void pinPrintInfo(uint8_t gpioNo) // a graphical arrangement to see the cunnrently acive pins { } void throwError(uint16_t line, Gpio::errors errNo) { } }; Gpio::Gpio():gpioPimpl(new gpioImpl()){} Gpio::~Gpio(){} void Gpio::setFunction(uint8_t gpioNo, Gpio::pinFunction function) { return gpioPimpl->setFunction(gpioNo, function); } 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::pinFunction function, Gpio::pinMode mode, Gpio::pinState state, Gpio::pinPullUpDown resistance, Gpio::pinSpeed speed) { return gpioPimpl->config(gpioNo,function ,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::pinInitiate(uint8_t gpioNo) { return gpioPimpl->pinInitiate(gpioNo); } void Gpio::pinUninitiate(uint8_t gpioNo) { return gpioPimpl->pinUninitiate(gpioNo); } void Gpio::checkCurrentPins() { return gpioPimpl->checkCurrentPins(); } void Gpio::pinList() { return gpioPimpl->pinList(); } void Gpio::pinPrintInfo(uint8_t gpioNo) { return gpioPimpl->pinPrintInfo(gpioNo); } void Gpio::throwError(uint16_t line, Gpio::errors error) { return gpioPimpl->throwError(line, error); }