Skip to content

Commit

Permalink
Revert encoder sensitivity change (portapack-mayhem#1314)
Browse files Browse the repository at this point in the history
  • Loading branch information
NotherNgineer authored Jul 27, 2023
1 parent b27c738 commit e7c5a86
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 39 deletions.
8 changes: 3 additions & 5 deletions firmware/application/apps/ui_settings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -480,12 +480,10 @@ class SetEncoderDialView : public View {

OptionsField field_encoder_dial_sensitivity{
{20 * 8, 3 * 16},
7,
{{"LOWEST", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOWEST},
{"LOW", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOW},
6,
{{"LOW", encoder_dial_sensitivity::DIAL_SENSITIVITY_LOW},
{"NORMAL", encoder_dial_sensitivity::DIAL_SENSITIVITY_NORMAL},
{"HIGH", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGH},
{"HIGHEST", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGHEST}}};
{"HIGH", encoder_dial_sensitivity::DIAL_SENSITIVITY_HIGH}}};

Button button_save{
{2 * 8, 16 * 16, 12 * 8, 32},
Expand Down
89 changes: 62 additions & 27 deletions firmware/application/hw/encoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,66 @@
// 12 degrees of rotation.
//
// For each encoder "pulse" there are 4 state transitions, and we can choose
// how many transitions are needed before movement is registered
static const int8_t transition_map[16] = {
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
// between looking at all of them (high sensitivity), half of them (medium/default),
// or one quarter of them (low sensitivity).
static const int8_t transition_map[][16] = {
// Normal (Medium) Sensitivity -- default
{
0, // 0000: noop
0, // 0001: ccw start
0, // 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
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(
Expand All @@ -60,13 +102,6 @@ int_fast8_t Encoder::update(
state <<= 1;
state |= phase_1;

int_fast8_t retval = transition_map[state & 0xf];

transition_count += retval;
if (abs(transition_count) > portapack::persistent_memory::config_encoder_dial_sensitivity())
transition_count = 0;
else
retval = 0;

return retval;
// dial sensitivity setting is stored in pmem
return transition_map[portapack::persistent_memory::config_encoder_dial_sensitivity()][state & 0xf];
}
1 change: 0 additions & 1 deletion firmware/application/hw/encoder.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ class Encoder {

private:
uint_fast8_t state{0};
int_fast8_t transition_count{0};
};

#endif /*__ENCODER_H__*/
2 changes: 1 addition & 1 deletion firmware/common/portapack_persistent_memory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ constexpr clkout_freq_range_t clkout_freq_range{10, 60000};
constexpr uint16_t clkout_freq_reset_value{10000};

enum data_structure_version_enum : uint32_t {
VERSION_CURRENT = 0x10000004,
VERSION_CURRENT = 0x10000005,
};

static const uint32_t TOUCH_CALIBRATION_MAGIC = 0x074af82f;
Expand Down
8 changes: 3 additions & 5 deletions firmware/common/portapack_persistent_memory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,9 @@ struct backlight_config_t {
};

enum encoder_dial_sensitivity {
DIAL_SENSITIVITY_HIGHEST = 0,
DIAL_SENSITIVITY_HIGH = 1,
DIAL_SENSITIVITY_NORMAL = 2,
DIAL_SENSITIVITY_LOW = 3,
DIAL_SENSITIVITY_LOWEST = 4,
DIAL_SENSITIVITY_NORMAL = 0,
DIAL_SENSITIVITY_LOW = 1,
DIAL_SENSITIVITY_HIGH = 2,
NUM_DIAL_SENSITIVITY
};

Expand Down

0 comments on commit e7c5a86

Please sign in to comment.