mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-11 10:26:58 +02:00
Merge pull request #209 from a1xd/change-poll
Update time interval behavior given polling rate
This commit is contained in:
commit
fba570d2e8
4 changed files with 16 additions and 2 deletions
|
@ -9,7 +9,7 @@ namespace rawaccel {
|
|||
inline constexpr int POLL_RATE_MAX = 8000;
|
||||
|
||||
inline constexpr milliseconds DEFAULT_TIME_MIN = 1000.0 / POLL_RATE_MAX / 2;
|
||||
inline constexpr milliseconds DEFAULT_TIME_MAX = 1000.0 / POLL_RATE_MIN * 2;
|
||||
inline constexpr milliseconds DEFAULT_TIME_MAX = 100;
|
||||
|
||||
inline constexpr milliseconds WRITE_DELAY = 1000;
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ namespace rawaccel {
|
|||
struct device_config {
|
||||
bool disable = false;
|
||||
bool set_extra_info = false;
|
||||
bool poll_time_lock = false;
|
||||
int dpi = 0;
|
||||
int polling_rate = 0;
|
||||
time_clamp clamp;
|
||||
|
|
|
@ -373,11 +373,18 @@ DeviceSetup(WDFOBJECT hDevice)
|
|||
auto set_ext_from_cfg = [devExt](const ra::device_config& cfg) {
|
||||
devExt->enable = !cfg.disable;
|
||||
devExt->set_extra_info = cfg.set_extra_info;
|
||||
devExt->keep_time = cfg.polling_rate <= 0;
|
||||
devExt->dpi_factor = (cfg.dpi > 0) ? (1000.0 / cfg.dpi) : 1;
|
||||
|
||||
bool rate_given = cfg.polling_rate > 0;
|
||||
|
||||
devExt->keep_time = !(cfg.poll_time_lock && rate_given);
|
||||
|
||||
if (devExt->keep_time) {
|
||||
devExt->clamp = cfg.clamp;
|
||||
|
||||
if (rate_given) {
|
||||
devExt->clamp.min = 1000.0 / cfg.polling_rate;
|
||||
}
|
||||
}
|
||||
else {
|
||||
milliseconds interval = 1000.0 / cfg.polling_rate;
|
||||
|
|
|
@ -175,6 +175,10 @@ public value struct DeviceConfig {
|
|||
[JsonProperty(Required = Required::Default)]
|
||||
bool setExtraInfo;
|
||||
|
||||
[MarshalAs(UnmanagedType::U1)]
|
||||
[JsonProperty("Use constant time interval based on polling rate", Required = Required::Default)]
|
||||
bool pollTimeLock;
|
||||
|
||||
[JsonProperty("DPI (normalizes sens to 1000dpi and converts input speed unit: counts/ms -> in/s)")]
|
||||
int dpi;
|
||||
|
||||
|
@ -208,6 +212,7 @@ public value struct DeviceConfig {
|
|||
{
|
||||
disable = cfg.disable;
|
||||
setExtraInfo = cfg.set_extra_info;
|
||||
pollTimeLock = cfg.poll_time_lock;
|
||||
dpi = cfg.dpi;
|
||||
pollingRate = cfg.polling_rate;
|
||||
minimumTime = cfg.clamp.min;
|
||||
|
@ -595,6 +600,7 @@ public:
|
|||
auto* base_data = reinterpret_cast<ra::io_base*>(byte_ptr);
|
||||
base_data->default_dev_cfg.disable = defaultDeviceConfig.disable;
|
||||
base_data->default_dev_cfg.set_extra_info = defaultDeviceConfig.setExtraInfo;
|
||||
base_data->default_dev_cfg.poll_time_lock = defaultDeviceConfig.pollTimeLock;
|
||||
base_data->default_dev_cfg.dpi = defaultDeviceConfig.dpi;
|
||||
base_data->default_dev_cfg.polling_rate = defaultDeviceConfig.pollingRate;
|
||||
base_data->default_dev_cfg.clamp.min = defaultDeviceConfig.minimumTime;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue