/*
 * LED_driver.c
 *
 *  Created on: 2. 4. 2020
 *      Author: Ondrej Vitoslavsky
 */


#include "main.h"
#include "LED_driver.h"



void LED_Init(void){
	  GPIO_InitTypeDef GPIO_InitStruct = {0};

	  //Enable GPIOF clock
	  __HAL_RCC_GPIOF_CLK_ENABLE();

	  //Configure LED pins
	  GPIO_InitStruct.Pin = LED1_RED_PIN|LED1_GRN_PIN|LED1_YEL_PIN;
	  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStruct.Pull = GPIO_NOPULL;
	  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	  HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);

	  //Enable GPIOG clock
	  __HAL_RCC_GPIOG_CLK_ENABLE();


	  GPIO_InitStruct.Pin = LED2_RED_PIN|LED2_GRN_PIN|LED2_YEL_PIN;
	  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	  GPIO_InitStruct.Pull = GPIO_NOPULL;
	  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	  HAL_GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStruct);
}


void LED_On(uint16_t Led,GPIO_TypeDef* GPIOx){	HAL_GPIO_WritePin(GPIOx,Led,1);}
void LED_Off(uint16_t Led,GPIO_TypeDef* GPIOx){	HAL_GPIO_WritePin(GPIOx,Led,0);}
void LED_Toggle(uint16_t Led,GPIO_TypeDef* GPIOx){	HAL_GPIO_TogglePin(GPIOx,Led);}


void JP1_Init(void){
	  GPIO_InitTypeDef GPIO_InitStruct = {0};

	  //Enable GPIOG clock
	  __HAL_RCC_GPIOG_CLK_ENABLE();

	  //Configure LED pins
	  GPIO_InitStruct.Pin = JP1_5_PIN|JP1_4_PIN|JP1_3_PIN|
			  JP1_2_PIN|JP1_1_PIN|JP1_0_PIN;
	  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
	  GPIO_InitStruct.Pull = GPIO_PULLUP;
	  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
	  HAL_GPIO_Init(JP1_GPIO_PORT, &GPIO_InitStruct);

}

uint8_t JP1_Is_Connected(uint16_t Pin){
	return !HAL_GPIO_ReadPin(JP1_GPIO_PORT,Pin);
}
