/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file    gpio.h
  * @brief   This file contains all the function prototypes for
  *          the gpio.c file
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2025 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __GPIO_H__
#define __GPIO_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */
#define RS485_out 	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET)	//	K1921 --> посылка
#define RS485_in 	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)//	K1921 <-- прием
#define RS485_dir	HAL_GPIO_CheckPin(GPIOA, GPIO_PIN_4)				//	Direction

#define Led_0_OFF 	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_SET)	//	Светодиод LED0
#define Led_0_ON 	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_0, GPIO_PIN_RESET)
#define Led_0_TGL 	HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_0)

#define Led_1_OFF 	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_SET)	//	Светодиод LED1
#define Led_1_ON 	HAL_GPIO_WritePin(GPIOE, GPIO_PIN_1, GPIO_PIN_RESET)
#define Led_1_TGL 	HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_1)

#define Led_2_ON 	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_SET)	//	Светодиод LED2
#define Led_2_OFF 	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_4, GPIO_PIN_RESET)
#define Led_2_TGL 	HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_4)

#define Led_3_ON	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET)	//	Светодиод LED3
#define Led_3_OFF 	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_RESET)
#define Led_3_TGL 	HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5)

#define Pvt_1_ON	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET)	//	Лампа "Оперативное питание"
#define Pvt_1_OFF	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET)
#define Pvt_1_TGL 	HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0)

#define Pvt_2_ON	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET)	//	Сигнал "Управление сетью 24В"
#define Pvt_2_OFF	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET)
#define Pvt_2_TGL 	HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2)

#define Pvt_3_ON	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET)	//	Сигнал "Авария системы ВЭП"
#define Pvt_3_OFF	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET)
#define Pvt_3_TGL 	HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0)

#define Pvt_4_ON	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET)	//	Сигнал "Система ВЭП в норме"
#define Pvt_4_OFF	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET)
#define Pvt_4_TGL 	HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1)

	  
#define IN_01 HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_12)	//	Контроль ИП1 (питание управляющего контроллера)
#define IN_02 HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11)	//	Контроль ИП2 (питание периферийных устройств)
#define IN_03 HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_10)	//	Контроль ИП3 (питание эл. замков, ламп освещения, УКСИ)
#define IN_04 HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_9)	//	Контроль ИП4 (питание датчиков тока и напряжения +)
#define IN_05 HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_15)	//	Контроль ИП5 (питание датчиков тока и напряжения –)
#define IN_06 HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_14)	//	Контроль ИП6 (питание драйверов)

#define IN_07 HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_10)	//	Контроль 3х фазного 380 В
#define IN_08 HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_6)	//	Заряд накопителя
#define IN_09 HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_4)	//	Разряд накопителя
#define IN_10 HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_2)	//	Авария в сети 24 В
#define IN_11 HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)	//	Контроль питания ЛСУ
#define IN_12 HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4)	//	резерв
#define IN_13 HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)	//	резерв
#define IN_14 HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_2)	//	Контроль питания СКК
	
#define J0 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6)		// Джампер b0
#define J1 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7)		// Джампер b1
#define J2 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_8)		// Джампер b2
#define J3 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15)		// Джампер b3

#define Jsel HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15)	// Джампер SELECT

/* USER CODE END Private defines */

void MX_GPIO_Init(void);

/* USER CODE BEGIN Prototypes */

uint8_t HAL_GPIO_CheckPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

/* USER CODE END Prototypes */

#ifdef __cplusplus
}
#endif
#endif /*__ GPIO_H__ */

