UHSDR/UHSDR-active-devel/mchf-eclipse/drivers/ui/encoder/ui_rotary.h
2022-11-08 16:13:55 +01:00

75 lines
2.3 KiB
C

/* -*- mode: c; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4; coding: utf-8 -*- */
/************************************************************************************
** **
** mcHF QRP Transceiver **
** K Atanassov - M0NKA 2014 **
** **
**---------------------------------------------------------------------------------**
** **
** File name: **
** Description: **
** Last Modified: **
** Licence: GNU GPLv3 **
************************************************************************************/
#ifndef __UI_ROTARY_H
#define __UI_ROTARY_H
// Some encoders have detend and generate x
// ammount of pulses per click
#define USE_DETENTED_ENCODERS
#define USE_DETENTED_VALUE 4
// Protective band on top and bottom scale
// dependent on encoder quality and debounce
// capacitors
#define ENCODER_FLICKR_BAND 4
// Divider to create non linearity
#define ENCODER_LOG_D 1
// Audio Gain public structure
typedef struct EncoderSelection
{
// pot values
//
uint16_t value_old; // previous value
uint16_t value_new; // most current value
uint8_t de_detent; // sw de-detent flag
TIM_TypeDef* tim;
} EncoderSelection;
//left only for reference:
/*
typedef struct EncoderSelection
{
// pot values
//
ulong value_old; // previous value
ulong value_new; // most current value
uchar de_detent; // sw de-detent flag
TIM_TypeDef* tim;
} EncoderSelection;
*/
void UiRotaryFreqEncoderInit(void);
void UiRotaryEncoderOneInit(void);
void UiRotaryEncoderTwoInit(void);
void UiRotaryEncoderThreeInit(void);
enum EncoderId
{
ENC1 = 0,
ENC2,
ENC3,
ENCFREQ,
ENC_MAX // this needs to be the last entry
};
int UiDriverEncoderRead(const uint32_t encId);
#endif