Prevent sending duplicate movement
This commit is contained in:
		
							parent
							
								
									9583fd5529
								
							
						
					
					
						commit
						4b3a9e71b3
					
				
					 1 changed files with 15 additions and 11 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue