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…
Reference in New Issue
Block a user