feature: create device_info field for MinerData.

This commit is contained in:
Upstream Data
2024-05-01 11:36:28 -06:00
parent ed3a4bd32a
commit 5f76cb9f0a
113 changed files with 223 additions and 122 deletions

View File

@@ -25,6 +25,7 @@ from pyasic.config import MinerConfig
from pyasic.config.mining import MiningModePowerTune
from .boards import HashBoard
from .device import DeviceInfo
from .error_codes import BraiinsOSError, InnosiliconError, WhatsminerError, X19Error
from .fans import Fan
@@ -71,9 +72,8 @@ class MinerData:
datetime: str = field(init=False)
timestamp: int = field(init=False)
uptime: int = None
device_info: DeviceInfo = None
mac: str = None
model: str = None
make: str = None
api_ver: str = None
fw_ver: str = None
hostname: str = None

11
pyasic/data/device.py Normal file
View File

@@ -0,0 +1,11 @@
from dataclasses import dataclass
from pyasic.device.firmware import MinerFirmware
from pyasic.device.makes import MinerMake
@dataclass
class DeviceInfo:
make: MinerMake = None
model: str = None
firmware: MinerFirmware = None

View File

27
pyasic/device/firmware.py Normal file
View File

@@ -0,0 +1,27 @@
# ------------------------------------------------------------------------------
# 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 enum import StrEnum
class MinerFirmware(StrEnum):
STOCK = "Stock"
BRAIINS_OS = "BOS+"
VNISH = "VNish"
EPIC = "ePIC"
HIVEON = "Hive"
LUXOS = "LuxOS"
MARATHON = "MaraFW"

View File

@@ -30,6 +30,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.antminer import AntminerRPCAPI
from pyasic.ssh.antminer import AntminerModernSSH
from pyasic.web.antminer import AntminerModernWebAPI, AntminerOldWebAPI

View File

@@ -28,6 +28,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.gcminer import GCMinerRPCAPI
from pyasic.web.auradine import AuradineWebAPI
@@ -113,7 +114,7 @@ class AuradineLEDCodes(Enum):
return self.value
class Auradine(BaseMiner):
class Auradine(StockFirmware):
"""Base handler for Auradine miners"""
_rpc_cls = GCMinerRPCAPI

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError
from pyasic.miners.backends.cgminer import CGMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
AVALON_DATA_LOC = DataLocations(
**{

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.bfgminer import BFGMinerRPCAPI
BFGMINER_DATA_LOC = DataLocations(
@@ -53,7 +54,7 @@ BFGMINER_DATA_LOC = DataLocations(
)
class BFGMiner(BaseMiner):
class BFGMiner(StockFirmware):
"""Base handler for BFGMiner based miners."""
_rpc_cls = BFGMinerRPCAPI

View File

@@ -21,6 +21,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.bmminer import BMMinerRPCAPI
BMMINER_DATA_LOC = DataLocations(
@@ -57,7 +58,7 @@ BMMINER_DATA_LOC = DataLocations(
)
class BMMiner(BaseMiner):
class BMMiner(StockFirmware):
"""Base handler for BMMiner based miners."""
_rpc_cls = BMMinerRPCAPI

View File

@@ -32,6 +32,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import BraiinsOSFirmware
from pyasic.rpc.bosminer import BOSMinerRPCAPI
from pyasic.ssh.braiins_os import BOSMinerSSH
from pyasic.web.braiins_os import BOSerWebAPI, BOSMinerWebAPI
@@ -95,7 +96,7 @@ BOSMINER_DATA_LOC = DataLocations(
)
class BOSMiner(BaseMiner):
class BOSMiner(BraiinsOSFirmware):
"""Handler for old versions of BraiinsOS+ (pre-gRPC)"""
_rpc_cls = BOSMinerRPCAPI
@@ -105,8 +106,6 @@ class BOSMiner(BaseMiner):
_ssh_cls = BOSMinerSSH
ssh: BOSMinerSSH
firmware = "BOS+"
data_locations = BOSMINER_DATA_LOC
supports_shutdown = True
@@ -634,7 +633,7 @@ BOSER_DATA_LOC = DataLocations(
)
class BOSer(BaseMiner):
class BOSer(BraiinsOSFirmware):
"""Handler for new versions of BraiinsOS+ (post-gRPC)"""
_rpc_cls = BOSMinerRPCAPI
@@ -642,8 +641,6 @@ class BOSer(BaseMiner):
_web_cls = BOSerWebAPI
web: BOSerWebAPI
firmware = "BOS+"
data_locations = BOSER_DATA_LOC
supports_autotuning = True

View File

@@ -23,6 +23,7 @@ from pyasic.data.error_codes import MinerErrorData, WhatsminerError
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.btminer import BTMinerRPCAPI
BTMINER_DATA_LOC = DataLocations(
@@ -110,7 +111,7 @@ BTMINER_DATA_LOC = DataLocations(
)
class BTMiner(BaseMiner):
class BTMiner(StockFirmware):
"""Base handler for BTMiner based miners."""
_rpc_cls = BTMinerRPCAPI

View File

@@ -20,6 +20,7 @@ from pyasic.config import MinerConfig
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import StockFirmware
from pyasic.rpc.cgminer import CGMinerRPCAPI
CGMINER_DATA_LOC = DataLocations(
@@ -56,7 +57,7 @@ CGMINER_DATA_LOC = DataLocations(
)
class CGMiner(BaseMiner):
class CGMiner(StockFirmware):
"""Base handler for CGMiner based miners"""
_rpc_cls = CGMinerRPCAPI

View File

@@ -23,6 +23,7 @@ from pyasic.errors import APIError
from pyasic.logger import logger
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand
from pyasic.miners.device.firmware import ePICFirmware
from pyasic.web.epic import ePICWebAPI
EPIC_DATA_LOC = DataLocations(
@@ -82,14 +83,12 @@ EPIC_DATA_LOC = DataLocations(
)
class ePIC(BaseMiner):
class ePIC(ePICFirmware):
"""Handler for miners with the ePIC board"""
_web_cls = ePICWebAPI
web: ePICWebAPI
firmware = "ePIC"
data_locations = EPIC_DATA_LOC
supports_shutdown = True

View File

@@ -27,6 +27,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import StockFirmware
from pyasic.web.goldshell import GoldshellWebAPI
GOLDSHELL_DATA_LOC = DataLocations(

View File

@@ -15,7 +15,8 @@
# ------------------------------------------------------------------------------
from pyasic.miners.backends import BMMiner
from pyasic.miners.device.firmware import HiveonFirmware
class Hiveon(BMMiner):
firmware = "Hive"
class Hiveon(BMMiner, HiveonFirmware):
pass

View File

@@ -28,6 +28,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import StockFirmware
from pyasic.web.innosilicon import InnosiliconWebAPI
INNOSILICON_DATA_LOC = DataLocations(

View File

@@ -20,6 +20,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
from pyasic.miners.device.firmware import LuxOSFirmware
from pyasic.rpc.luxminer import LUXMinerRPCAPI
LUXMINER_DATA_LOC = DataLocations(
@@ -55,14 +56,12 @@ LUXMINER_DATA_LOC = DataLocations(
)
class LUXMiner(BaseMiner):
class LUXMiner(LuxOSFirmware):
"""Handler for LuxOS miners"""
_rpc_cls = LUXMinerRPCAPI
rpc: LUXMinerRPCAPI
firmware = "LuxOS"
data_locations = LUXMINER_DATA_LOC
async def _get_session(self) -> Optional[str]:

View File

@@ -6,6 +6,7 @@ from pyasic.data import Fan, HashBoard
from pyasic.errors import APIError
from pyasic.miners.base import BaseMiner
from pyasic.miners.data import DataFunction, DataLocations, DataOptions, WebAPICommand
from pyasic.miners.device.firmware import MaraFirmware, StockFirmware
from pyasic.misc import merge_dicts
from pyasic.web.marathon import MaraWebAPI
@@ -63,14 +64,12 @@ MARA_DATA_LOC = DataLocations(
)
class MaraMiner(BaseMiner):
class MaraMiner(MaraFirmware):
_web_cls = MaraWebAPI
web: MaraWebAPI
data_locations = MARA_DATA_LOC
firmware = "MaraFW"
async def fault_light_off(self) -> bool:
res = await self.web.set_locate_miner(blinking=False)
return res.get("blinking") is False

View File

@@ -26,6 +26,7 @@ from pyasic.miners.data import (
RPCAPICommand,
WebAPICommand,
)
from pyasic.miners.device.firmware import VNishFirmware
from pyasic.web.vnish import VNishWebAPI
VNISH_DATA_LOC = DataLocations(
@@ -82,7 +83,7 @@ VNISH_DATA_LOC = DataLocations(
)
class VNish(BMMiner):
class VNish(BMMiner, VNishFirmware):
"""Handler for VNish miners"""
_web_cls = VNishWebAPI
@@ -90,8 +91,6 @@ class VNish(BMMiner):
supports_shutdown = True
firmware = "VNish"
data_locations = VNISH_DATA_LOC
async def restart_backend(self) -> bool:

View File

@@ -20,7 +20,10 @@ from typing import List, Optional, Protocol, Tuple, Type, TypeVar, Union
from pyasic.config import MinerConfig
from pyasic.data import Fan, HashBoard, MinerData
from pyasic.data.device import DeviceInfo
from pyasic.data.error_codes import MinerErrorData
from pyasic.device.firmware import MinerFirmware
from pyasic.device.makes import MinerMake
from pyasic.errors import APIError
from pyasic.logger import logger
from pyasic.miners.data import DataLocations, DataOptions, RPCAPICommand, WebAPICommand
@@ -36,9 +39,9 @@ class MinerProtocol(Protocol):
web: _web_cls = None
ssh: _ssh_cls = None
make: str = None
make: MinerMake = None
raw_model: str = None
firmware: str = None
firmware: MinerFirmware = None
expected_hashboards: int = 3
expected_chips: int = None
@@ -79,6 +82,10 @@ class MinerProtocol(Protocol):
model_data.append(f"({self.firmware})")
return " ".join(model_data)
@property
def device_info(self) -> DeviceInfo:
return DeviceInfo(make=self.make, model=self.raw_model, firmware=self.firmware)
@property
def api(self):
return self.rpc
@@ -183,6 +190,14 @@ class MinerProtocol(Protocol):
"""
return self.model
async def get_device_info(self) -> Optional[DeviceInfo]:
"""Get device information, including model, make, and firmware.
Returns:
A dataclass containing device information.
"""
return self.device_info
async def get_api_ver(self) -> Optional[str]:
"""Get the API version of the miner and is as a string.
@@ -465,8 +480,7 @@ class MinerProtocol(Protocol):
"""
data = MinerData(
ip=str(self.ip),
make=self.make,
model=self.model,
device_info=self.device_info,
expected_chips=(
self.expected_chips * self.expected_hashboards
if self.expected_chips is not None

View File

View File

@@ -0,0 +1,46 @@
# ------------------------------------------------------------------------------
# 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 pyasic.device.firmware import MinerFirmware
from pyasic.miners.base import BaseMiner
class StockFirmware(BaseMiner):
firmware = MinerFirmware.STOCK
class BraiinsOSFirmware(BaseMiner):
firmware = MinerFirmware.BRAIINS_OS
class VNishFirmware(BaseMiner):
firmware = MinerFirmware.VNISH
class ePICFirmware(BaseMiner):
firmware = MinerFirmware.EPIC
class HiveonFirmware(BaseMiner):
firmware = MinerFirmware.HIVEON
class LuxOSFirmware(BaseMiner):
firmware = MinerFirmware.LUXOS
class MaraFirmware(BaseMiner):
firmware = MinerFirmware.MARATHON

View File

@@ -34,9 +34,9 @@ from pyasic.miners.backends import *
from pyasic.miners.backends.unknown import UnknownMiner
from pyasic.miners.base import AnyMiner
from pyasic.miners.blockminer import *
from pyasic.miners.device.makes import *
from pyasic.miners.goldshell import *
from pyasic.miners.innosilicon import *
from pyasic.miners.makes import *
from pyasic.miners.whatsminer import *

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class Z15(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class S17(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class T17(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class S19(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class T19(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class S21(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class T21(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class D3(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class HS3(AntMinerMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class L3Plus(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class DR5(AntMinerMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class L7(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class E9Pro(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class S9(AntMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AntMinerMake
from pyasic.miners.device.makes import AntMinerMake
class T9(AntMinerMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAD2500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAD3500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAI2500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAI3680(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAT1500(AuradineMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import AuradineMake
from pyasic.miners.device.makes import AuradineMake
class AuradineAT2860(AuradineMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1026(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1047(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1066(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1166Pro(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon1246(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon721(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon741(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon761(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon821(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon841(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon851(AvalonMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import AvalonMinerMake
from pyasic.miners.device.makes import AvalonMinerMake
class Avalon921(AvalonMinerMake):

View File

@@ -1,4 +1,4 @@
from pyasic.miners.makes import ePICMake
from pyasic.miners.device.makes import ePICMake
class BlockMiner520i(ePICMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake
from pyasic.miners.device.makes import GoldshellMake
class CK5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake
from pyasic.miners.device.makes import GoldshellMake
class HS5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake
from pyasic.miners.device.makes import GoldshellMake
class KD5(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake
from pyasic.miners.device.makes import GoldshellMake
class KDBoxII(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import GoldshellMake
from pyasic.miners.device.makes import GoldshellMake
class KDMax(GoldshellMake):

View File

@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import InnosiliconMake
from pyasic.miners.device.makes import InnosiliconMake
class A10X(InnosiliconMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import InnosiliconMake
from pyasic.miners.device.makes import InnosiliconMake
class T3HPlus(InnosiliconMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M20V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M20PV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M20SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M20SPlusV30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M21V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M21SV20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M21SPlusV20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M29V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30KV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30LV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30SPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M30SPlusPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31HV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31LV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31SV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31SEV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M31SPlusV10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M32V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M32S(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M33V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M33SVG30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M33SPlusVG20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M33SPlusPlusVH20(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M34SPlusVE10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M36SVE10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M36SPlusVG30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M36SPlusPlusVH30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M39V10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M50VE30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M50SVJ10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M50SPlusVH30(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M50SPlusPlusVK10(WhatsMinerMake):

View File

@@ -14,7 +14,7 @@
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.makes import WhatsMinerMake
from pyasic.miners.device.makes import WhatsMinerMake
class M53VH30(WhatsMinerMake):

Some files were not shown because too many files have changed in this diff Show More