pipa: peripheralmanaher: improve watchdog stuck logic

This commit is contained in:
Roman Lubij
2025-06-26 17:44:36 +02:00
committed by gensis01
parent 12a554bf3b
commit ee61cb73aa

View File

@@ -7,7 +7,7 @@
#include <android/log.h>
#include <android/looper.h>
#include <android/sensor.h>
#include <arm_neon.h> // for fast square root
#include <arm_neon.h> // for fast square root + vector math
#include <ctype.h> // Add for isspace() function
#include <dirent.h>
#include <errno.h>
@@ -117,7 +117,8 @@ void* accelerometer_thread(void* args) {
}
pthread_mutex_unlock(&shared_mutex);
sensorManager = ASensorManager_getInstanceForPackage("org.lineageos.xiaomiperipheralmanager");
sensorManager = ASensorManager_getInstanceForPackage(
"org.lineageos.xiaomiperipheralmanager");
accelerometer = ASensorManager_getDefaultSensor(sensorManager,
ASENSOR_TYPE_ACCELEROMETER);
@@ -395,8 +396,8 @@ void* watchdog_thread_func(void* arg) {
pthread_mutex_unlock(&shared_mutex);
// If monitor thread hasn't updated in WATCHDOG_INTERVAL, it might be stuck
if ((is_paused || !watchdog_enabled) &&
now - last_activity > WATCHDOG_INTERVAL && watchdog_enabled) {
if (!is_paused && watchdog_enabled &&
now - last_activity > WATCHDOG_INTERVAL) {
LOGW("Watchdog: Monitor thread appears stuck for %d seconds",
(int)(now - last_activity));
@@ -595,7 +596,7 @@ void* angle_thread_function(void* arg) {
float dy = kbY - last_kbY;
float dz = kbZ - last_kbZ;
float delta = dx*dx + dy*dy + dz*dz;
float delta = dx * dx + dy * dy + dz * dz;
if (delta > vector_threshold) {
float angle = calculateAngle(kbX, kbY, kbZ, padX, padY, padZ);