72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
# ------------------------------------------------------------------------------
|
|
# Copyright 2022 Upstream Data Inc -
|
|
# -
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); -
|
|
# you may not use this file except in compliance with the License. -
|
|
# You may obtain a copy of the License at -
|
|
# -
|
|
# http://www.apache.org/licenses/LICENSE-2.0 -
|
|
# -
|
|
# Unless required by applicable law or agreed to in writing, software -
|
|
# distributed under the License is distributed on an "AS IS" BASIS, -
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
|
|
# See the License for the specific language governing permissions and -
|
|
# limitations under the License. -
|
|
# ------------------------------------------------------------------------------
|
|
|
|
from dataclasses import asdict, dataclass, field, fields
|
|
|
|
|
|
@dataclass
|
|
class InnosiliconError:
|
|
"""A Dataclass to handle error codes of Innosilicon miners.
|
|
|
|
Attributes:
|
|
error_code: The error code as an int.
|
|
error_message: The error message as a string. Automatically found from the error code.
|
|
"""
|
|
|
|
error_code: int
|
|
error_message: str = field(init=False)
|
|
|
|
@classmethod
|
|
def fields(cls):
|
|
return fields(cls)
|
|
|
|
@property
|
|
def error_message(self): # noqa - Skip PyCharm inspection
|
|
if self.error_code in ERROR_CODES:
|
|
return ERROR_CODES[self.error_code]
|
|
return "Unknown error type."
|
|
|
|
@error_message.setter
|
|
def error_message(self, val):
|
|
pass
|
|
|
|
def asdict(self):
|
|
return asdict(self)
|
|
|
|
|
|
ERROR_CODES = {
|
|
21: "The PLUG signal of the hash board is not detected.",
|
|
22: "Power I2C communication is abnormal.",
|
|
23: "The SPI of all hash boards is blocked.",
|
|
24: "Some of the hash boards fail to connect to the SPI'.",
|
|
25: "Hashboard failed to set frequency.",
|
|
26: "Hashboard failed to set voltage.",
|
|
27: "Chip BIST test failed.",
|
|
28: "Hashboard SPI communication is abnormal.",
|
|
29: "Power I2C communication is abnormal.",
|
|
30: "Pool connection failed.",
|
|
31: "Individual chips are damaged.",
|
|
32: "Over temperature protection.",
|
|
33: "Hashboard fault.",
|
|
34: "The data cables are not connected in the correct order.",
|
|
35: "No power output.",
|
|
36: "Hashboard fault.",
|
|
37: "Control board and/or hashboard do not match.",
|
|
40: "Power output is abnormal.",
|
|
41: "Power output is abnormal.",
|
|
42: "Hashboard fault.",
|
|
}
|