Use asyncio instead of thread in pycon.joycon.py
This commit is contained in:
		
							parent
							
								
									3c32efd6cf
								
							
						
					
					
						commit
						9e0a8ec584
					
				
					 1 changed files with 6 additions and 9 deletions
				
			
		|  | @ -1,4 +1,4 @@ | |||
| import threading | ||||
| import asyncio | ||||
| import time | ||||
| from typing import Optional | ||||
| 
 | ||||
|  | @ -47,10 +47,7 @@ class JoyCon: | |||
|         self._setup_sensors() | ||||
| 
 | ||||
|         # start talking with the joycon in a daemon thread | ||||
|         self._update_input_report_thread \ | ||||
|             = threading.Thread(target=self._update_input_report) | ||||
|         self._update_input_report_thread.setDaemon(True) | ||||
|         self._update_input_report_thread.start() | ||||
|         asyncio.run(self._update_input_report()) | ||||
| 
 | ||||
|     def _open(self, vendor_id, product_id, serial): | ||||
|         try: | ||||
|  | @ -92,7 +89,7 @@ class JoyCon: | |||
|         # TODO: handle subcmd when daemon is running | ||||
|         self._write_output_report(b'\x01', subcommand, argument) | ||||
| 
 | ||||
|         report = self._read_input_report() | ||||
|         report = [0] | ||||
|         while report[0] != 0x21:  # TODO, avoid this, await daemon instead | ||||
|             report = self._read_input_report() | ||||
| 
 | ||||
|  | @ -114,12 +111,12 @@ class JoyCon: | |||
|             raise IOError("Something else than the expected ACK was recieved!") | ||||
|         assert report[2:7] == argument, (report[2:5], argument) | ||||
| 
 | ||||
|         return report[7:size+7] | ||||
|         return report[7:size + 7] | ||||
| 
 | ||||
|     def _update_input_report(self):  # daemon thread | ||||
|     async def _update_input_report(self):  # daemon thread | ||||
|         try: | ||||
|             while self._joycon_device: | ||||
|                 report = self._read_input_report() | ||||
|                 report = [0] | ||||
|                 # TODO, handle input reports of type 0x21 and 0x3f | ||||
|                 while report[0] != 0x30: | ||||
|                     report = self._read_input_report() | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue