82 lines
2.4 KiB
C
82 lines
2.4 KiB
C
|
|
|
|
#include "inputselect.h"
|
|
#include "hw/gpio.h"
|
|
#include "error.h"
|
|
#include "gui.h"
|
|
#include "debug.h"
|
|
#include "main.h"
|
|
#include "stm32f10x.h"
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
//------------------------definicje--------------------------------//
|
|
|
|
//------------------------zmienne-------------------------//
|
|
|
|
//-----------------------------Funkcje------------------------------//
|
|
|
|
int8_t inputselect_Initialize(void)
|
|
{
|
|
GPIO_InitTypeDef GPIO_Conf;
|
|
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|
|
|
RCC_APB2Periph_GPIOE, ENABLE);
|
|
|
|
//wyjścia, diody - stan poczatkowy wysoki (wyłączone)
|
|
GPIO_Conf.GPIO_Pin = LED_TOSLINK|OE_SPDIF;
|
|
GPIO_Conf.GPIO_Mode = GPIO_Mode_Out_PP;
|
|
GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
|
|
GPIO_Init(GPIOB, &GPIO_Conf);
|
|
GPIO_Set(GPIOB, LED_TOSLINK|OE_SPDIF);
|
|
GPIO_Conf.GPIO_Pin = LED_SPDIF|LED_AES_EBU;
|
|
GPIO_Init(GPIOD, &GPIO_Conf);
|
|
GPIO_Set(GPIOD, LED_SPDIF|LED_AES_EBU);
|
|
GPIO_Conf.GPIO_Pin = OE_PCM|OE_DSD|OE_AMANERO|OE_BT;
|
|
GPIO_Init(GPIOE, &GPIO_Conf);
|
|
GPIO_Set(GPIOE, OE_PCM|OE_DSD|OE_AMANERO|OE_BT);
|
|
}
|
|
|
|
|
|
|
|
int8_t inputselect_SelectInput(uint8_t input)
|
|
{
|
|
|
|
//disable all inputs
|
|
GPIO_Set(GPIOB, LED_TOSLINK|OE_SPDIF);
|
|
GPIO_Set(GPIOD, LED_SPDIF|LED_AES_EBU);
|
|
GPIO_Set(GPIOE, OE_PCM|OE_DSD|OE_AMANERO|OE_BT);
|
|
|
|
//enable selected input
|
|
switch(input)
|
|
{
|
|
case INPUT_OFF:
|
|
break;
|
|
case INPUT_AMANERO:
|
|
GPIO_Reset(GPIOE, OE_AMANERO);
|
|
break;
|
|
case INPUT_PCM:
|
|
GPIO_Reset(GPIOE, OE_PCM);
|
|
break;
|
|
case INPUT_DSD:
|
|
GPIO_Reset(GPIOE, OE_DSD);
|
|
break;
|
|
case INPUT_SPDIF:
|
|
GPIO_Reset(GPIOB, OE_SPDIF);
|
|
GPIO_Reset(GPIOD, LED_SPDIF);
|
|
break;
|
|
case INPUT_TOSLINK:
|
|
GPIO_Reset(GPIOB, OE_SPDIF);
|
|
GPIO_Reset(GPIOB, LED_TOSLINK);
|
|
break;
|
|
case INPUT_AES_EBU:
|
|
GPIO_Reset(GPIOB, OE_SPDIF);
|
|
GPIO_Reset(GPIOD, LED_AES_EBU);
|
|
break;
|
|
case INPUT_BT:
|
|
GPIO_Reset(GPIOE, OE_BT);
|
|
break;
|
|
default:
|
|
debug_ReportError(-MULTIPLE_INPUT_SELECTED, "inputctrl_SetInput");
|
|
break;
|
|
}
|
|
} |