2022-09-16 10:07:57 -06:00
|
|
|
'''
|
|
|
|
Linux accelerometer
|
|
|
|
---------------------
|
|
|
|
'''
|
|
|
|
|
2024-06-02 10:31:58 -06:00
|
|
|
from sbapp.plyer.facades import Accelerometer
|
2022-09-16 10:07:57 -06:00
|
|
|
import glob
|
|
|
|
import re
|
|
|
|
|
|
|
|
|
|
|
|
class LinuxAccelerometer(Accelerometer):
|
|
|
|
|
|
|
|
def _enable(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def _disable(self):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def _get_acceleration(self):
|
|
|
|
try:
|
|
|
|
pos = glob.glob("/sys/devices/platform/*/position")[0]
|
|
|
|
except IndexError:
|
|
|
|
raise Exception('Could not enable accelerometer!')
|
|
|
|
|
|
|
|
with open(pos, "r") as p:
|
|
|
|
t = p.read()
|
|
|
|
coords = re.findall(r"[-]?\d+\.?\d*", t)
|
|
|
|
# Apparently the acceleration on sysfs goes from -1000 to 1000.
|
|
|
|
# I divide it by 100 to make it equivalent to Android.
|
|
|
|
# The negative is because the coordinates are inverted on Linux
|
|
|
|
return [float(i) / -100 for i in coords]
|
|
|
|
|
|
|
|
|
|
|
|
def instance():
|
|
|
|
return LinuxAccelerometer()
|