From e78f844ccd423dc115f8efc2b72b2827759aa617 Mon Sep 17 00:00:00 2001 From: Robert Martin Date: Sun, 8 Mar 2020 22:51:02 +0900 Subject: [PATCH] error message for disconnect --- joycontrol/protocol.py | 11 ++++++++++- joycontrol/report.py | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/joycontrol/protocol.py b/joycontrol/protocol.py index db7bbcc..f260d2e 100644 --- a/joycontrol/protocol.py +++ b/joycontrol/protocol.py @@ -1,6 +1,5 @@ import asyncio import logging -import time from asyncio import BaseTransport, BaseProtocol from typing import Optional, Union, Tuple, Text @@ -93,6 +92,11 @@ class ControllerProtocol(BaseProtocol): reply_send = False if reader.done(): data = await reader + if not data: + # disconnect happened + logger.error('No data received (most likely due to a disconnect).') + break + reader = asyncio.ensure_future(self.transport.read()) try: @@ -115,6 +119,11 @@ class ControllerProtocol(BaseProtocol): await self.write(input_report) async def report_received(self, data: Union[bytes, Text], addr: Tuple[str, int]) -> None: + if not data: + # disconnect happened + logger.error('No data received (most likely due to a disconnect).') + return + self._data_received.set() try: diff --git a/joycontrol/report.py b/joycontrol/report.py index 8fb0128..658aba3 100644 --- a/joycontrol/report.py +++ b/joycontrol/report.py @@ -9,7 +9,7 @@ class InputReport: https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/master/bluetooth_hid_notes.md """ def __init__(self, data=None): - if data is None: + if not data: # TODO: not enough space for NFC/IR data input report self.data = [0x00] * 51 # all input reports are prepended with 0xA1 @@ -212,7 +212,7 @@ class OutputReportID(Enum): class OutputReport: def __init__(self, data=None): - if data is None: + if not data: data = 50 * [0x00] data[0] = 0xA2