~ruther/qmk_firmware

7b31fc54df6543e3426cce159a915fdaa947b57d — Dasky 3 years ago c99cbd9
Enable a default task throttle for split pointing. (#15925)

M docs/feature_pointing_device.md => docs/feature_pointing_device.md +1 -1
@@ 204,7 204,7 @@ void           pointing_device_driver_set_cpi(uint16_t cpi) {}
|`POINTING_DEVICE_MOTION_PIN`      | (Optional) If supported, will only read from sensor if pin is active. | _not defined_     |
|`POINTING_DEVICE_TASK_THROTTLE_MS`      | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_     |

!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and would recommend `POINTING_DEVICE_TASK_THROTTLE_MS` be set to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.
!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.


## Split Keyboard Configuration

M quantum/pointing_device.c => quantum/pointing_device.c +1 -5
@@ 217,16 217,12 @@ __attribute__((weak)) void pointing_device_task(void) {
    };
#endif

#if defined(POINTING_DEVICE_TASK_THROTTLE_MS)
#if (POINTING_DEVICE_TASK_THROTTLE_MS > 0)
    static uint32_t last_exec = 0;
    if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) {
        return;
    }
    last_exec = timer_read32();
#else
#    if defined(SPLIT_POINTING_ENABLE)
#        pragma message("It's recommended you enable a throttle when sharing pointing devices.")
#    endif
#endif

    // Gather report info

M quantum/pointing_device.h => quantum/pointing_device.h +3 -0
@@ 94,6 94,9 @@ report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report);
#if defined(SPLIT_POINTING_ENABLE)
void     pointing_device_set_shared_report(report_mouse_t report);
uint16_t pointing_device_get_shared_cpi(void);
#    if !defined(POINTING_DEVICE_TASK_THROTTLE_MS)
#        define POINTING_DEVICE_TASK_THROTTLE_MS 1
#    endif
#    if defined(POINTING_DEVICE_COMBINED)
void           pointing_device_set_cpi_on_side(bool left, uint16_t cpi);
report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report);

M quantum/split_common/transactions.c => quantum/split_common/transactions.c +1 -1
@@ 624,7 624,7 @@ static void pointing_handlers_slave(matrix_row_t master_matrix[], matrix_row_t s
#    endif
    report_mouse_t temp_report;
    uint16_t       temp_cpi;
#    ifdef POINTING_DEVICE_TASK_THROTTLE_MS
#    if (POINTING_DEVICE_TASK_THROTTLE_MS > 0)
    static uint32_t last_exec = 0;
    if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) {
        return;