Prevent sending duplicate movement
This commit is contained in:
parent
9583fd5529
commit
4b3a9e71b3
|
@ -69,6 +69,7 @@ class JoyDance:
|
||||||
self.available_shortcuts = set()
|
self.available_shortcuts = set()
|
||||||
|
|
||||||
self.accel_data = []
|
self.accel_data = []
|
||||||
|
self.last_accel = (0, 0, 0)
|
||||||
|
|
||||||
self.ws = None
|
self.ws = None
|
||||||
self.disconnected = False
|
self.disconnected = False
|
||||||
|
@ -265,11 +266,10 @@ class JoyDance:
|
||||||
|
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
asyncio.sleep(sleep_duration),
|
asyncio.sleep(sleep_duration),
|
||||||
self.collect_accelerometer_data(),
|
self.collect_accelerometer_data(frames),
|
||||||
self.send_accelerometer_data(frames),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
async def collect_accelerometer_data(self):
|
async def collect_accelerometer_data(self, frames):
|
||||||
if self.disconnected:
|
if self.disconnected:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -278,19 +278,23 @@ class JoyDance:
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
accel = {
|
start = time.time()
|
||||||
'x': self.joycon.get_accel_x(),
|
max_runtime = FRAME_DURATION * 0.5
|
||||||
'y': self.joycon.get_accel_y(),
|
while time.time() - start < max_runtime:
|
||||||
'z': self.joycon.get_accel_z(),
|
# Make sure accelerometer axes are changed
|
||||||
}
|
accel = self.joycon.get_accels() # (x, y, z)
|
||||||
|
if accel != self.last_accel:
|
||||||
|
self.last_accel = accel
|
||||||
|
break
|
||||||
|
|
||||||
# Accelerator axes on phone & Joy-Con are different so we need to swap some axes
|
# Accelerator axes on phone & Joy-Con are different so we need to swap some axes
|
||||||
# https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/imu_sensor_notes.md
|
# https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/imu_sensor_notes.md
|
||||||
x = accel['y'] * -1
|
x = accel[1] * -1
|
||||||
y = accel['x']
|
y = accel[0]
|
||||||
z = accel['z']
|
z = accel[2]
|
||||||
|
|
||||||
self.accel_data.append([x, y, z])
|
self.accel_data.append([x, y, z])
|
||||||
|
await self.send_accelerometer_data(frames),
|
||||||
except OSError:
|
except OSError:
|
||||||
self.disconnect()
|
self.disconnect()
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue