mirror of
https://github.com/mjg59/python-broadlink.git
synced 2024-11-22 07:00:12 +01:00
3216b069f0
* Raise exceptions for errors * Fix lb1 error check * Fix typo * Improve code readability * Fix exception
98 lines
2.2 KiB
Python
98 lines
2.2 KiB
Python
"""Exceptions for Broadlink devices."""
|
|
|
|
|
|
class BroadlinkException(Exception):
|
|
"""Common base class for all Broadlink exceptions."""
|
|
pass
|
|
|
|
|
|
class AuthenticationError(BroadlinkException):
|
|
"""Authentication error."""
|
|
pass
|
|
|
|
|
|
class AuthorizationError(BroadlinkException):
|
|
"""Authorization error."""
|
|
pass
|
|
|
|
|
|
class CommandNotSupportedError(BroadlinkException):
|
|
"""Command not supported error."""
|
|
pass
|
|
|
|
|
|
class ConnectionClosedError(BroadlinkException):
|
|
"""Connection closed error."""
|
|
pass
|
|
|
|
|
|
class DataValidationError(BroadlinkException):
|
|
"""Data validation error."""
|
|
pass
|
|
|
|
|
|
class DeviceOfflineError(BroadlinkException):
|
|
"""Device offline error."""
|
|
pass
|
|
|
|
|
|
class ReadError(BroadlinkException):
|
|
"""Read error."""
|
|
pass
|
|
|
|
|
|
class SendError(BroadlinkException):
|
|
"""Send error."""
|
|
pass
|
|
|
|
|
|
class SSIDNotFoundError(BroadlinkException):
|
|
"""SSID not found error."""
|
|
pass
|
|
|
|
|
|
class StorageError(BroadlinkException):
|
|
"""Storage error."""
|
|
pass
|
|
|
|
|
|
class UnknownError(BroadlinkException):
|
|
"""Unknown error."""
|
|
pass
|
|
|
|
|
|
class WriteError(BroadlinkException):
|
|
"""Write error."""
|
|
pass
|
|
|
|
|
|
FIRMWARE_ERRORS = {
|
|
0xffff: (AuthenticationError, "Authentication failed"),
|
|
0xfffe: (ConnectionClosedError, "You have been logged out"),
|
|
0xfffd: (DeviceOfflineError, "The device is offline"),
|
|
0xfffc: (CommandNotSupportedError, "Command not supported"),
|
|
0xfffb: (StorageError, "The device storage is full"),
|
|
0xfffa: (DataValidationError, "Structure is abnormal"),
|
|
0xfff9: (AuthorizationError, "Control key is expired"),
|
|
0xfff8: (SendError, "Send error"),
|
|
0xfff7: (WriteError, "Write error"),
|
|
0xfff6: (ReadError, "Read error"),
|
|
0xfff5: (SSIDNotFoundError, "SSID could not be found in AP configuration"),
|
|
}
|
|
|
|
|
|
def exception(error_code):
|
|
"""Return exception corresponding to an error code."""
|
|
try:
|
|
exc, msg = FIRMWARE_ERRORS[error_code]
|
|
return exc(msg)
|
|
except KeyError:
|
|
return UnknownError("Unknown error: " + hex(error_code))
|
|
|
|
|
|
def check_error(error):
|
|
"""Raise exception if an error occurred."""
|
|
error_code = error[0] | (error[1] << 8)
|
|
if error_code:
|
|
raise exception(error_code)
|