asterics / FLipMouse

The repository for FLipMouse (Finger and LipMouse)
https://www.asterics-foundation.org/projects/flipmouse
Other
36 stars 8 forks source link

Saving config: performance and usability #45

Closed klues closed 1 year ago

klues commented 3 years ago

Usability

Current Workflow

The current workflow for making configuration changes is:

Alternative Workflow

This would be an alternative workflow:

I think most of the time the user wants to keep the new configuration, so it would be a benefit for usability if no explicit action would be required for saving the config. It's also a benefit for testing if changes (e.g. sensitivity) immediately take effect and there is no need for clicking on "Test" (currently already implemented in WebGUI).

Technical stuff

Currently it seems to be only possible to persist a config like this:

Proposed changes

@ChrisVeigl, @benjaminaigner: what do you think?

ChrisVeigl commented 3 years ago

changing AT SA so that it overwrites the slot data in EEPROM is not trivial and would need some changes in the eeprom implementation (move all remaining data if the slot size changes), see also discussion in https://github.com/asterics/FLipMouse/pull/46

we could discuss several strategies:

ChrisVeigl commented 3 years ago

a first version of EEPROM slot copy is there: https://github.com/asterics/FLipMouse/commit/8f36024bad3218f2765af4192b3722ac72003089 although it should work in theory and the EEPROM bin/block writes improve performance, this needs further consideration ... I think it is not reasonable to save (and respectively change EEPROM content) every time a user makes small changes in the FlipMouse configuration.

ChrisVeigl commented 3 years ago

further worked on that, see https://github.com/asterics/FLipMouse/commit/27696be0c6627c88f11da63cb918e30bb5356a32

Using EEPROM page writes and optimized I2C buffer size, a slot save can now be performed at 1/3 of the time, and moving slots (in course of the save action) is 10 times faster. Example timing for moving three slots and then overwriting a slot: ~580 ms.

Please note that the C# GUI in this branch now performs the AT SA action when pressing the "Test Settings" button, and that basic debug messages are turned on in the firmware.

klues commented 3 years ago

sounds great! 👍 Sorry for my naive thought that AT SA was just lacking of a single else statement 😉

benjaminaigner commented 1 year ago

With all the last commits on v2 and the ongoing work on v3 with the RP2040 branch, we can close this issue.