111 lines
2.9 KiB
C
111 lines
2.9 KiB
C
|
|
|
|
#include "inputdetect.h"
|
|
#include "gpio.h"
|
|
#include "error.h"
|
|
#include "gui.h"
|
|
#include "debug.h"
|
|
#include "main.h"
|
|
#include "stm32f10x.h"
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
|
|
//------------------------definicje--------------------------------//
|
|
|
|
#define GPIOB_MANUAL_INPUT_MASK 0x8000
|
|
#define GPIOD_MANUAL_INPUT_MASK 0x3F00
|
|
//------------------------zmienne-------------------------//
|
|
//-----------------------------Funkcje------------------------------//
|
|
int8_t inputdetect_Initialize(void)
|
|
{
|
|
GPIO_InitTypeDef GPIO_Conf;
|
|
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|
|
|
RCC_APB2Periph_GPIOE, ENABLE);
|
|
|
|
//wejścia auto - floating
|
|
GPIO_Conf.GPIO_Pin = AUTO_AMANERO_CLK|AUTO_AMANERO_DATA;
|
|
GPIO_Conf.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|
GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
|
|
GPIO_Init(GPIOC, &GPIO_Conf);
|
|
GPIO_Conf.GPIO_Pin = AUTO_SPDIF|AUTO_TOSLINK|AUTO_AES_EBU;
|
|
GPIO_Init(GPIOD, &GPIO_Conf);
|
|
GPIO_Conf.GPIO_Pin = AUTO_PCM_CLK|AUTO_PCM_DATA|AUTO_DSD|AUTO_BT;
|
|
GPIO_Init(GPIOE, &GPIO_Conf);
|
|
|
|
//wejścia manualne - pullup, zero aktywne
|
|
GPIO_Conf.GPIO_Pin = IN1;
|
|
GPIO_Conf.GPIO_Mode = GPIO_Mode_IPU;
|
|
GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;
|
|
GPIO_Init(GPIOB, &GPIO_Conf);
|
|
GPIO_Conf.GPIO_Pin = IN2|IN3|IN4|IN5|IN6|IN7;
|
|
GPIO_Init(GPIOD, &GPIO_Conf);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t inputdetect_ReadInputSelector(void)
|
|
{
|
|
uint16_t input;
|
|
input = (~GPIO_Read(GPIOD) & GPIOD_MANUAL_INPUT_MASK) >> 7;
|
|
input |= (~GPIO_Read(GPIOB) & GPIOB_MANUAL_INPUT_MASK) >>15;
|
|
switch(input)
|
|
{
|
|
case 0x01:
|
|
return INPUT_AMANERO;
|
|
case 0x02:
|
|
return INPUT_PCM;
|
|
case 0x04:
|
|
return INPUT_DSD;
|
|
case 0x08:
|
|
return INPUT_AES_EBU;
|
|
case 0x10:
|
|
return INPUT_SPDIF;
|
|
case 0x20:
|
|
return INPUT_TOSLINK;
|
|
case 0x40:
|
|
return INPUT_BT;
|
|
default:
|
|
return INPUT_OFF;
|
|
}
|
|
}
|
|
|
|
uint16_t inputdetect_ReadClockDetectors(void)
|
|
{
|
|
uint16_t detector_state;
|
|
|
|
detector_state=0;
|
|
|
|
if (GPIO_Read(GPIOC) & AUTO_AMANERO_CLK)
|
|
detector_state |= DETECTOR_AMANERO_CLK;
|
|
|
|
if (GPIO_Read(GPIOC) & AUTO_AMANERO_DATA)
|
|
detector_state |= DETECTOR_AMANERO_DATA;
|
|
|
|
if (GPIO_Read(GPIOE) & AUTO_PCM_CLK)
|
|
detector_state |= DETECTOR_PCM_CLK;
|
|
|
|
if (GPIO_Read(GPIOE) & AUTO_PCM_DATA)
|
|
detector_state |= DETECTOR_PCM_DATA;
|
|
|
|
if (GPIO_Read(GPIOE) & AUTO_DSD)
|
|
detector_state |= DETECTOR_DSD;
|
|
|
|
if (GPIO_Read(GPIOD) & AUTO_SPDIF)
|
|
detector_state |= DETECTOR_SPDIF;
|
|
|
|
if (GPIO_Read(GPIOD) & AUTO_AES_EBU)
|
|
detector_state |= DETECTOR_AES_EBU;
|
|
|
|
if (GPIO_Read(GPIOD) & AUTO_TOSLINK)
|
|
detector_state |= DETECTOR_TOSLINK;
|
|
|
|
if (GPIO_Read(GPIOE) & AUTO_BT)
|
|
detector_state |= DETECTOR_BT;
|
|
|
|
return detector_state;
|
|
}
|
|
|
|
|