Use high frequency when available
This commit is contained in:
parent
c68e06a88b
commit
5947da5f2d
3 changed files with 37 additions and 5 deletions
13
dev_out.c
13
dev_out.c
|
|
@ -435,9 +435,16 @@ void *dev_out_thread_func(void *ptr) {
|
|||
printf("Keyboard initialized: fd=%d\n", current_keyboard_fd);
|
||||
}
|
||||
|
||||
const int64_t kbd_report_timing_us = 2025;
|
||||
const int64_t mouse_report_timing_us = 1650;
|
||||
const int64_t gamepad_report_timing_us = 2500;
|
||||
bool high_hz_avail = false;
|
||||
const char *const avail_freq = inline_read_file("/sys/bus/iio/devices/iio:device0/", "name");
|
||||
if ((avail_freq != NULL) && (strstr(avail_freq, "1600.0") != NULL)) {
|
||||
printf("High iio sampling frequency available: 1600.0 Hz");
|
||||
high_hz_avail = true;
|
||||
}
|
||||
|
||||
const int64_t kbd_report_timing_us = high_hz_avail ? 1125 : 2025;
|
||||
const int64_t mouse_report_timing_us = high_hz_avail ? 950 : 1650;
|
||||
const int64_t gamepad_report_timing_us = high_hz_avail ? 1250 : 2500;
|
||||
|
||||
if (current_gamepad == GAMEPAD_DUALSENSE) {
|
||||
const int ds5_init_res = virt_dualsense_init(
|
||||
|
|
|
|||
26
rog_ally.c
26
rog_ally.c
|
|
@ -1708,7 +1708,15 @@ static dev_old_iio_t* dev_old_iio_create(const char* path) {
|
|||
|
||||
// ======================================= anglvel_sampling_rate_hz ==========================================
|
||||
{
|
||||
const char *const avail_freq = inline_read_file(iio->path, "/in_anglvel_sampling_frequency_available");
|
||||
|
||||
const char* preferred_scale = PREFERRED_SAMPLING_FREQ_STR;
|
||||
double new_freq = PREFERRED_SAMPLING_FREQ;
|
||||
if ((avail_freq != NULL) && (strstr(avail_freq, "1600.0"))) {
|
||||
preferred_scale = PREFERRED_SAMPLING_FREQ_HIGH_HZ_STR;
|
||||
new_freq = PREFERRED_SAMPLING_FREQ_HIGH_HZ;
|
||||
}
|
||||
|
||||
const char *scale_main_file = "/in_anglvel_sampling_frequency";
|
||||
|
||||
char* const accel_scale = inline_read_file(iio->path, scale_main_file);
|
||||
|
|
@ -1717,7 +1725,7 @@ static dev_old_iio_t* dev_old_iio_create(const char* path) {
|
|||
free((void*)accel_scale);
|
||||
|
||||
if (inline_write_file(iio->path, scale_main_file, preferred_scale, strlen(preferred_scale)) >= 0) {
|
||||
iio->anglvel_sampling_rate_hz = PREFERRED_SAMPLING_FREQ;
|
||||
iio->anglvel_sampling_rate_hz = new_freq;
|
||||
printf("anglvel sampling rate changed to %f for device %s\n", iio->accel_scale_x, iio->name);
|
||||
} else {
|
||||
fprintf(stderr, "Unable to set preferred in_anglvel_sampling_frequency for device %s.\n", iio->name);
|
||||
|
|
@ -1734,7 +1742,15 @@ static dev_old_iio_t* dev_old_iio_create(const char* path) {
|
|||
|
||||
// ======================================= accel_sampling_rate_hz ==========================================
|
||||
{
|
||||
const char *const avail_freq = inline_read_file(iio->path, "/in_accel_sampling_frequency_available");
|
||||
|
||||
const char* preferred_scale = PREFERRED_SAMPLING_FREQ_STR;
|
||||
double new_freq = PREFERRED_SAMPLING_FREQ;
|
||||
if ((avail_freq != NULL) && (strstr(avail_freq, "1600.0"))) {
|
||||
preferred_scale = PREFERRED_SAMPLING_FREQ_HIGH_HZ_STR;
|
||||
new_freq = PREFERRED_SAMPLING_FREQ_HIGH_HZ;
|
||||
}
|
||||
|
||||
const char *scale_main_file = "/in_accel_sampling_frequency";
|
||||
|
||||
char* const accel_scale = inline_read_file(iio->path, scale_main_file);
|
||||
|
|
@ -1743,7 +1759,7 @@ static dev_old_iio_t* dev_old_iio_create(const char* path) {
|
|||
free((void*)accel_scale);
|
||||
|
||||
if (inline_write_file(iio->path, scale_main_file, preferred_scale, strlen(preferred_scale)) >= 0) {
|
||||
iio->accel_sampling_rate_hz = PREFERRED_SAMPLING_FREQ;
|
||||
iio->accel_sampling_rate_hz = new_freq;
|
||||
printf("accel sampling rate changed to %f for device %s\n", iio->accel_scale_x, iio->name);
|
||||
} else {
|
||||
fprintf(stderr, "Unable to set preferred in_accel_sampling_frequency for device %s.\n", iio->name);
|
||||
|
|
@ -2050,6 +2066,12 @@ input_dev_composite_t rc71l_composite = {
|
|||
|
||||
input_dev_composite_t* rog_ally_device_def(const dev_in_settings_t *const conf) {
|
||||
if (conf->enable_imu) {
|
||||
const char *const avail_freq = inline_read_file(iio_base_path, "/in_accel_sampling_frequency_available");
|
||||
if ((avail_freq != NULL) && (strstr(avail_freq, "1600.0"))) {
|
||||
printf("Using high sampling rate mode");
|
||||
bmc150_timer_dev.filters.timer.ticktime_ns = 625000;
|
||||
}
|
||||
|
||||
bmc150_timer_data.name = inline_read_file(iio_base_path, "name");
|
||||
if ((bmc150_timer_data.name != NULL) && (strcmp(bmc150_timer_data.name, "bmi323"))) {
|
||||
printf("Old bmc150-accel-i2c for bmi323 device has been selected! Are you running a neptune kernel?\n");
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@
|
|||
#define PREFERRED_SAMPLING_FREQ ((double)800.000000)
|
||||
#define PREFERRED_SAMPLING_FREQ_STR "800.000000"
|
||||
|
||||
#define PREFERRED_SAMPLING_FREQ_HIGH_HZ ((double)1600.000000)
|
||||
#define PREFERRED_SAMPLING_FREQ_HIGH_HZ_STR "1600.000000"
|
||||
|
||||
// courtesy of linux kernel
|
||||
#ifndef __packed
|
||||
#define __packed __attribute__((packed))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue