/*
 * GPIO_Pin_STM32.cpp
 *
 *  Created on: Feb 10, 2024
 *      Author: Gabriel
 */

#include "GPIO_Pin_STM32.hpp"

GPIO_Pin_STM32::GPIO_Pin_STM32(GPIO_TypeDef *gpio_port, uint16_t gpio_pin) :
	gpio_port(gpio_port), gpio_pin(gpio_pin){
}

GPIO_Pin_STM32::~GPIO_Pin_STM32() {

}

int32_t GPIO_Pin_STM32::init() {
	return 0;
}

int32_t GPIO_Pin_STM32::read(uint8_t* state) {
	*state = (uint8_t)HAL_GPIO_ReadPin(gpio_port, gpio_pin);
	return 0;
}

int32_t GPIO_Pin_STM32::write(uint8_t state) {
	HAL_GPIO_WritePin(gpio_port, gpio_pin, (GPIO_PinState)state);
	return 0;
}

int32_t GPIO_Pin_STM32::set() {
	HAL_GPIO_WritePin(gpio_port, gpio_pin, GPIO_PIN_SET);
	return 0;
}

int32_t GPIO_Pin_STM32::reset() {
	HAL_GPIO_WritePin(gpio_port, gpio_pin, GPIO_PIN_RESET);
	return 0;
}

int32_t GPIO_Pin_STM32::toggle() {
	HAL_GPIO_TogglePin(gpio_port, gpio_pin);
	return 0;
}
