sw: Implement preliminary key press handlers
This commit is contained in:
		
							parent
							
								
									b92eb13f76
								
							
						
					
					
						commit
						f369f88899
					
				| @ -129,12 +129,39 @@ class display_manager(object): | ||||
| 		# TODO: Consider also animating inactive screens... Might resolve some glitches when updating text while a screen is in the background (or pass `tick` to update funcs) | ||||
| 
 | ||||
| class radioserv: | ||||
| 	def handle_rx(self, rdata): | ||||
| 		# Handle key presses | ||||
| 		key_id = rdata[0] & 0x0F | ||||
| 		key_press_short = ((rdata[0] & 0xC0) == 128) | ||||
| 		if (key_press_short): | ||||
| 			print("Press key: {}".format(key_id)) | ||||
| 			if (key_id == 0): # Tune- | ||||
| 				pass | ||||
| 			elif (key_id == 1): # Tune+ | ||||
| 				self.mpd.previous() | ||||
| 			elif (key_id == 2): # Power | ||||
| 				self.kill_event.set() | ||||
| 			elif (key_id == 4): # Wheel | ||||
| 				self.mpd.pause() | ||||
| 			elif (key_id == 5): # Source | ||||
| 				pass | ||||
| 			elif (key_id == 6): # Info / Menu | ||||
| 				self.mpd.next() | ||||
| 			elif (key_id == 7): # PRESET | ||||
| 				pass | ||||
| 		# Handle rotary input | ||||
| 		rotary_delta = int(rdata[1])# - 128 | ||||
| 		if (rotary_delta > 0): | ||||
| 			print("Rotary: {}".format(rdata[2])) | ||||
| 			# self.mpd.volume(rotary_delta) | ||||
| 		#print("Battery: {}".format(rdata[2])) | ||||
| 
 | ||||
| 	async def io_main(self): | ||||
| 		while True: | ||||
| 			self.disp_mgr.animate(1) | ||||
| 			self.disp_mgr.render() | ||||
| 			rdata = self.spi.xfer([100, 101, 102], 50000, 1000) | ||||
| 			print(rdata) | ||||
| 			self.handle_rx(rdata) | ||||
| 			data = list(self.disp_mgr.get_image()) | ||||
| 			rdata = self.spi.xfer(data, SPI_SPEED, 10000) | ||||
| 			await self.io_event.wait() | ||||
| @ -214,13 +241,14 @@ class radioserv: | ||||
| 
 | ||||
| 		# Create main tasks | ||||
| 		self.io_event = asyncio.Event() | ||||
| 		self.kill_event = asyncio.Event() | ||||
| 
 | ||||
| 		io_task = asyncio.create_task(self.io_main()) | ||||
| 		io_timer_task = asyncio.create_task(self.io_timer_main()) | ||||
| 		mpd_task = asyncio.create_task(self.mpd_main()) | ||||
| 
 | ||||
| 		# TODO: Wait for exit condition (shutdown command) | ||||
| 		await asyncio.sleep(6000) | ||||
| 		await self.kill_event.wait() | ||||
| 		self.kill_event.clear() | ||||
| 
 | ||||
| 		io_timer_task.cancel() | ||||
| 		io_task.cancel() | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user