Skip to content

Commit 7987e6e

Browse files
puddlyrob-smallshire
authored andcommitted
Use loop.create_connection instead of pyserial's protocol_socket
1 parent 93b4edc commit 7987e6e

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

serial_asyncio/__init__.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"""
1818
import asyncio
1919
import os
20+
import urllib.parse
2021

2122
import serial
2223
from functools import partial
@@ -422,7 +423,7 @@ async def _call_connection_lost(self, exc):
422423
self._loop = None
423424

424425

425-
async def create_serial_connection(loop, protocol_factory, *args, **kwargs):
426+
async def create_serial_connection(loop, protocol_factory, url, *args, **kwargs):
426427
"""Create a connection to a new serial port instance.
427428
428429
This function is a coroutine which will try to establish the
@@ -447,9 +448,23 @@ async def create_serial_connection(loop, protocol_factory, *args, **kwargs):
447448
448449
Any additional arguments will be forwarded to the Serial constructor.
449450
"""
450-
callback = partial(serial.serial_for_url, *args, **kwargs)
451+
parsed_url = urllib.parse.urlparse(url)
452+
453+
callback = partial(serial.serial_for_url, url, *args, **kwargs)
451454
serial_instance = await loop.run_in_executor(None, callback)
452-
transport, protocol = await connection_for_serial(loop, protocol_factory, serial_instance)
455+
456+
if parsed_url.scheme == "socket":
457+
transport, protocol = await loop.create_connection(protocol_factory, parsed_url.hostname, parsed_url.port)
458+
459+
# To maintain API compatibility
460+
transport.flush = lambda: None
461+
transport.loop = loop
462+
transport.serial = serial_instance
463+
transport._extra["serial"] = serial_instance
464+
serial_instance._socket = transport.get_extra_info("socket")._sock
465+
else:
466+
transport, protocol = await connection_for_serial(loop, protocol_factory, serial_instance)
467+
453468
return transport, protocol
454469

455470

0 commit comments

Comments
 (0)