list connected SNESes if more than one; allow connecting to specific one
This commit is contained in:
parent
9402d82405
commit
fd0a87626e
|
@ -52,11 +52,26 @@ class LttPCommandProcessor(ClientCommandProcessor):
|
||||||
self.output(f"Setting slow mode to {self.ctx.slow_mode}")
|
self.output(f"Setting slow mode to {self.ctx.slow_mode}")
|
||||||
|
|
||||||
@mark_raw
|
@mark_raw
|
||||||
def _cmd_snes(self, snes_address: str = "") -> bool:
|
def _cmd_snes(self, snes_options: str = "") -> bool:
|
||||||
"""Connect to a snes.
|
"""Connect to a snes. Optionally include network address of a snes to connect to, otherwise show available devices; and a SNES device number if more than one SNES is detected"""
|
||||||
Optionally include network address of a snes to connect to, otherwise show available devices"""
|
|
||||||
|
snes_address = self.ctx.snes_address
|
||||||
|
snes_device_number = -1
|
||||||
|
|
||||||
|
options = snes_options.split()
|
||||||
|
num_options = len(options)
|
||||||
|
|
||||||
|
if num_options > 0:
|
||||||
|
snes_address = options[0]
|
||||||
|
|
||||||
|
if num_options > 1:
|
||||||
|
try:
|
||||||
|
snes_device_number = int(options[1])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
self.ctx.snes_reconnect_address = None
|
self.ctx.snes_reconnect_address = None
|
||||||
asyncio.create_task(snes_connect(self.ctx, snes_address if snes_address else self.ctx.snes_address))
|
asyncio.create_task(snes_connect(self.ctx, snes_address, snes_device_number))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _cmd_snes_close(self) -> bool:
|
def _cmd_snes_close(self) -> bool:
|
||||||
|
@ -504,6 +519,7 @@ async def snes_connect(ctx: Context, address):
|
||||||
snes_logger.error('Already connected to SNI, likely awaiting a device.')
|
snes_logger.error('Already connected to SNI, likely awaiting a device.')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
device = None
|
||||||
recv_task = None
|
recv_task = None
|
||||||
ctx.snes_state = SNESState.SNES_CONNECTING
|
ctx.snes_state = SNESState.SNES_CONNECTING
|
||||||
socket = await _snes_connect(ctx, address)
|
socket = await _snes_connect(ctx, address)
|
||||||
|
@ -512,15 +528,29 @@ async def snes_connect(ctx: Context, address):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
devices = await get_snes_devices(ctx)
|
devices = await get_snes_devices(ctx)
|
||||||
|
numDevices = len(devices)
|
||||||
|
|
||||||
if len(devices) == 1:
|
if numDevices == 1:
|
||||||
device = devices[0]
|
device = devices[0]
|
||||||
elif ctx.snes_reconnect_address:
|
elif ctx.snes_reconnect_address:
|
||||||
if ctx.snes_attached_device[1] in devices:
|
if ctx.snes_attached_device[1] in devices:
|
||||||
device = ctx.snes_attached_device[1]
|
device = ctx.snes_attached_device[1]
|
||||||
else:
|
else:
|
||||||
device = devices[ctx.snes_attached_device[0]]
|
device = devices[ctx.snes_attached_device[0]]
|
||||||
|
elif numDevices > 1:
|
||||||
|
if deviceIndex == -1:
|
||||||
|
logger.info("Found " + str(numDevices) + " SNES devices; connect to one with /snes <address> <device number>:")
|
||||||
|
|
||||||
|
for idx, availableDevice in enumerate(devices):
|
||||||
|
logger.info(str(idx + 1) + ": " + availableDevice)
|
||||||
|
|
||||||
|
elif (deviceIndex < 0) or (deviceIndex - 1) > numDevices:
|
||||||
|
logger.warning("SNES device number out of range")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
device = devices[deviceIndex - 1]
|
||||||
|
|
||||||
|
if device is None:
|
||||||
await snes_disconnect(ctx)
|
await snes_disconnect(ctx)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue