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);
|
printf("Keyboard initialized: fd=%d\n", current_keyboard_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
const int64_t kbd_report_timing_us = 2025;
|
bool high_hz_avail = false;
|
||||||
const int64_t mouse_report_timing_us = 1650;
|
const char *const avail_freq = inline_read_file("/sys/bus/iio/devices/iio:device0/", "name");
|
||||||
const int64_t gamepad_report_timing_us = 2500;
|
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) {
|
if (current_gamepad == GAMEPAD_DUALSENSE) {
|
||||||
const int ds5_init_res = virt_dualsense_init(
|
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 ==========================================
|
// ======================================= 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;
|
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";
|
const char *scale_main_file = "/in_anglvel_sampling_frequency";
|
||||||
|
|
||||||
char* const accel_scale = inline_read_file(iio->path, scale_main_file);
|
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);
|
free((void*)accel_scale);
|
||||||
|
|
||||||
if (inline_write_file(iio->path, scale_main_file, preferred_scale, strlen(preferred_scale)) >= 0) {
|
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);
|
printf("anglvel sampling rate changed to %f for device %s\n", iio->accel_scale_x, iio->name);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unable to set preferred in_anglvel_sampling_frequency for device %s.\n", iio->name);
|
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 ==========================================
|
// ======================================= 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;
|
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";
|
const char *scale_main_file = "/in_accel_sampling_frequency";
|
||||||
|
|
||||||
char* const accel_scale = inline_read_file(iio->path, scale_main_file);
|
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);
|
free((void*)accel_scale);
|
||||||
|
|
||||||
if (inline_write_file(iio->path, scale_main_file, preferred_scale, strlen(preferred_scale)) >= 0) {
|
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);
|
printf("accel sampling rate changed to %f for device %s\n", iio->accel_scale_x, iio->name);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unable to set preferred in_accel_sampling_frequency for device %s.\n", iio->name);
|
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) {
|
input_dev_composite_t* rog_ally_device_def(const dev_in_settings_t *const conf) {
|
||||||
if (conf->enable_imu) {
|
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");
|
bmc150_timer_data.name = inline_read_file(iio_base_path, "name");
|
||||||
if ((bmc150_timer_data.name != NULL) && (strcmp(bmc150_timer_data.name, "bmi323"))) {
|
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");
|
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 ((double)800.000000)
|
||||||
#define PREFERRED_SAMPLING_FREQ_STR "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
|
// courtesy of linux kernel
|
||||||
#ifndef __packed
|
#ifndef __packed
|
||||||
#define __packed __attribute__((packed))
|
#define __packed __attribute__((packed))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue