mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-12-24 23:09:26 -05:00
Increased number of encoder dial sensitivity setting levels (#1275)
* Encoder dial sensitivity 0-4 * Workaround for worn encoders & more sensitivity levels * Workaround for worn encoders & more sensitivity levels * Encoder sensitivity levels 0-4 * Encoder sensitivity levels 0-4 * Fix comment * Clang * Clang * Change default encoder sensitivity in pmem * Set default encoder sensitivity * Set default encoder sensitivity * Revert widget type for encoder sensitivity * Revert widget type for encoder dial sensitivity * Revert worn encoder workaround (didn't work) * 5 levels of encoder dial sensitivity * 5 levels of encoder dial sensitivity
This commit is contained in:
parent
25923e82a4
commit
2498861003
@ -480,10 +480,12 @@ class SetEncoderDialView : public View {
|
|||||||
|
|
||||||
OptionsField field_encoder_dial_sensitivity{
|
OptionsField field_encoder_dial_sensitivity{
|
||||||
{20 * 8, 3 * 16},
|
{20 * 8, 3 * 16},
|
||||||
6,
|
7,
|
||||||
{{"LOW", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOW},
|
{{"LOWEST", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOWEST},
|
||||||
{"NORMAL", encoder_dial_sensitivity::DIAL_SENSITIVITY_MEDIUM},
|
{"LOW", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOW},
|
||||||
{"HIGH", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGH}}};
|
{"NORMAL", encoder_dial_sensitivity::DIAL_SENSITIVITY_NORMAL},
|
||||||
|
{"HIGH", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGH},
|
||||||
|
{"HIGHEST", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGHEST}}};
|
||||||
|
|
||||||
Button button_save{
|
Button button_save{
|
||||||
{2 * 8, 16 * 16, 12 * 8, 32},
|
{2 * 8, 16 * 16, 12 * 8, 32},
|
||||||
|
@ -32,66 +32,24 @@
|
|||||||
// 12 degrees of rotation.
|
// 12 degrees of rotation.
|
||||||
//
|
//
|
||||||
// For each encoder "pulse" there are 4 state transitions, and we can choose
|
// For each encoder "pulse" there are 4 state transitions, and we can choose
|
||||||
// between looking at all of them (high sensitivity), half of them (medium/default),
|
// how many transitions are needed before movement is registered
|
||||||
// or one quarter of them (low sensitivity).
|
static const int8_t transition_map[16] = {
|
||||||
static const int8_t transition_map[][16] = {
|
0, // 0000: noop
|
||||||
// Normal (Medium) Sensitivity -- default
|
-1, // 0001: ccw start
|
||||||
{
|
1, // 0010: cw start
|
||||||
0, // 0000: noop
|
0, // 0011: rate
|
||||||
0, // 0001: ccw start
|
1, // 0100: cw end
|
||||||
0, // 0010: cw start
|
0, // 0101: noop
|
||||||
0, // 0011: rate
|
0, // 0110: rate
|
||||||
1, // 0100: cw end
|
-1, // 0111: ccw end
|
||||||
0, // 0101: noop
|
-1, // 1000: ccw end
|
||||||
0, // 0110: rate
|
0, // 1001: rate
|
||||||
-1, // 0111: ccw end
|
0, // 1010: noop
|
||||||
-1, // 1000: ccw end
|
1, // 1011: cw end
|
||||||
0, // 1001: rate
|
0, // 1100: rate
|
||||||
0, // 1010: noop
|
1, // 1101: cw start
|
||||||
1, // 1011: cw end
|
-1, // 1110: ccw start
|
||||||
0, // 1100: rate
|
0, // 1111: noop
|
||||||
0, // 1101: cw start
|
|
||||||
0, // 1110: ccw start
|
|
||||||
0, // 1111: noop
|
|
||||||
},
|
|
||||||
// Low Sensitivity
|
|
||||||
{
|
|
||||||
0, // 0000: noop
|
|
||||||
0, // 0001: ccw start
|
|
||||||
0, // 0010: cw start
|
|
||||||
0, // 0011: rate
|
|
||||||
1, // 0100: cw end
|
|
||||||
0, // 0101: noop
|
|
||||||
0, // 0110: rate
|
|
||||||
0, // 0111: ccw end
|
|
||||||
-1, // 1000: ccw end
|
|
||||||
0, // 1001: rate
|
|
||||||
0, // 1010: noop
|
|
||||||
0, // 1011: cw end
|
|
||||||
0, // 1100: rate
|
|
||||||
0, // 1101: cw start
|
|
||||||
0, // 1110: ccw start
|
|
||||||
0, // 1111: noop
|
|
||||||
},
|
|
||||||
// High Sensitivity
|
|
||||||
{
|
|
||||||
0, // 0000: noop
|
|
||||||
-1, // 0001: ccw start
|
|
||||||
1, // 0010: cw start
|
|
||||||
0, // 0011: rate
|
|
||||||
1, // 0100: cw end
|
|
||||||
0, // 0101: noop
|
|
||||||
0, // 0110: rate
|
|
||||||
-1, // 0111: ccw end
|
|
||||||
-1, // 1000: ccw end
|
|
||||||
0, // 1001: rate
|
|
||||||
0, // 1010: noop
|
|
||||||
1, // 1011: cw end
|
|
||||||
0, // 1100: rate
|
|
||||||
1, // 1101: cw start
|
|
||||||
-1, // 1110: ccw start
|
|
||||||
0, // 1111: noop
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int_fast8_t Encoder::update(
|
int_fast8_t Encoder::update(
|
||||||
@ -102,6 +60,13 @@ int_fast8_t Encoder::update(
|
|||||||
state <<= 1;
|
state <<= 1;
|
||||||
state |= phase_1;
|
state |= phase_1;
|
||||||
|
|
||||||
// dial sensitivity setting is stored in pmem
|
int_fast8_t retval = transition_map[state & 0xf];
|
||||||
return transition_map[portapack::persistent_memory::config_encoder_dial_sensitivity()][state & 0xf];
|
|
||||||
|
transition_count += retval;
|
||||||
|
if (abs(transition_count) > portapack::persistent_memory::config_encoder_dial_sensitivity())
|
||||||
|
transition_count = 0;
|
||||||
|
else
|
||||||
|
retval = 0;
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ class Encoder {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
uint_fast8_t state{0};
|
uint_fast8_t state{0};
|
||||||
|
int_fast8_t transition_count{0};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*__ENCODER_H__*/
|
#endif /*__ENCODER_H__*/
|
||||||
|
@ -363,6 +363,7 @@ void defaults() {
|
|||||||
|
|
||||||
set_config_backlight_timer(backlight_config_t{});
|
set_config_backlight_timer(backlight_config_t{});
|
||||||
set_config_splash(true);
|
set_config_splash(true);
|
||||||
|
set_encoder_dial_sensitivity(DIAL_SENSITIVITY_NORMAL);
|
||||||
|
|
||||||
// Default values for recon app.
|
// Default values for recon app.
|
||||||
set_recon_autosave_freqs(false);
|
set_recon_autosave_freqs(false);
|
||||||
|
@ -107,9 +107,11 @@ struct backlight_config_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum encoder_dial_sensitivity {
|
enum encoder_dial_sensitivity {
|
||||||
DIAL_SENSITIVITY_MEDIUM = 0,
|
DIAL_SENSITIVITY_HIGHEST = 0,
|
||||||
DIAL_SENSITIVITY_LOW = 1,
|
DIAL_SENSITIVITY_HIGH = 1,
|
||||||
DIAL_SENSITIVITY_HIGH = 2,
|
DIAL_SENSITIVITY_NORMAL = 2,
|
||||||
|
DIAL_SENSITIVITY_LOW = 3,
|
||||||
|
DIAL_SENSITIVITY_LOWEST = 4,
|
||||||
NUM_DIAL_SENSITIVITY
|
NUM_DIAL_SENSITIVITY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user