From ee4d0793df10745874c84c358bf0619584c810bb Mon Sep 17 00:00:00 2001 From: WindWeaver Date: Sat, 4 Jul 2026 16:25:15 +0800 Subject: [PATCH 1/2] add callback interface for frame-driven data, remove logcat -T 0 flood --- oculus_reader/reader.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/oculus_reader/reader.py b/oculus_reader/reader.py index f66a05d..92fa23e 100644 --- a/oculus_reader/reader.py +++ b/oculus_reader/reader.py @@ -20,7 +20,8 @@ def __init__(self, port = 5555, APK_name='com.rail.oculus.teleop', print_FPS=False, - run=True + run=True, + callback=None, ): self.running = False self.last_transforms = {} @@ -32,6 +33,7 @@ def __init__(self, self.port = port self.APK_name = APK_name self.print_FPS = print_FPS + self.callback = callback if self.print_FPS: self.fps_counter = FPSCounter() @@ -46,7 +48,7 @@ def __del__(self): def run(self): self.running = True self.device.shell('am start -n "com.rail.oculus.teleop/com.rail.oculus.teleop.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER') - self.thread = threading.Thread(target=self.device.shell, args=("logcat -T 0", self.read_logcat_by_line)) + self.thread = threading.Thread(target=self.device.shell, args=("logcat", self.read_logcat_by_line)) self.thread.start() def stop(self): @@ -191,6 +193,8 @@ def read_logcat_by_line(self, connection): transforms, buttons = OculusReader.process_data(data) with self._lock: self.last_transforms, self.last_buttons = transforms, buttons + if self.callback: + self.callback(transforms, buttons) if self.print_FPS: self.fps_counter.getAndPrintFPS() except UnicodeDecodeError: @@ -200,11 +204,19 @@ def read_logcat_by_line(self, connection): def main(): - oculus_reader = OculusReader() + import atexit - while True: - time.sleep(0.3) - print(oculus_reader.get_transformations_and_buttons()) + def on_frame(transforms, buttons): + print(f"right:\n{transforms.get('r')}\nleft:\n{transforms.get('l')}\nbuttons: {buttons}") + + reader = OculusReader(print_FPS=True, callback=on_frame) + + atexit.register(reader.stop) + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + reader.stop() if __name__ == '__main__': From 701e4ef3c359513d7d201de58f93047c7852a78b Mon Sep 17 00:00:00 2001 From: WindWeaver Date: Sat, 4 Jul 2026 19:04:41 +0800 Subject: [PATCH 2/2] use utf-8 for long_description --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b643959..edd95ff 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ version='1.0.0', packages=['oculus_reader'], license='Apache-2.0 License', - long_description=open('README.md').read(), + long_description=open('README.md', encoding='utf-8').read(), install_requires=[ 'numpy', 'pure-python-adb' ],