from miners.cgminer import CGMiner import re class CGMinerAvalon(CGMiner): def __init__(self, ip: str) -> None: super().__init__(ip) self.model = "Avalon" self.api_type = "CGMiner" self.pattern = re.compile(r'Ver\[(?P[-0-9A-Fa-f+]+)\]\s' 'DNA\[(?P[0-9A-Fa-f]+)\]\s' 'Elapsed\[(?P[-0-9]+)\]\s' 'MW\[(?P[-\s0-9]+)\]\s' 'LW\[(?P[-0-9]+)\]\s' 'MH\[(?P[-\s0-9]+)\]\s' 'HW\[(?P[-0-9]+)\]\s' 'Temp\[(?P[0-9]+)\]\s' 'TMax\[(?P[0-9]+)\]\s' 'Fan\[(?P[0-9]+)\]\s' 'FanR\[(?P[0-9]+)%\]\s' 'Vi\[(?P[-\s0-9]+)\]\s' 'Vo\[(?P[-\s0-9]+)\]\s' '(' 'PLL0\[(?P[-\s0-9]+)\]\s' 'PLL1\[(?P[-\s0-9]+)\]\s' 'PLL2\[(?P[-\s0-9]+)\]\s' 'PLL3\[(?P[-\s0-9]+)\]\s' ')?' 'GHSmm\[(?P[-.0-9]+)\]\s' 'WU\[(?P[-.0-9]+)\]\s' 'Freq\[(?P[.0-9]+)\]\s' 'PG\[(?P[0-9]+)\]\s' 'Led\[(?P0|1)\]\s' 'MW0\[(?P[0-9\s]+)\]\s' 'MW1\[(?P[0-9\s]+)\]\s' 'MW2\[(?P[0-9\s]+)\]\s' 'MW3\[(?P[0-9\s]+)\]\s' 'TA\[(?P[0-9]+)\]\s' 'ECHU\[(?P[0-9\s]+)\]\s' 'ECMM\[(?P[0-9]+)\]\s.*' 'FAC0\[(?P[-0-9]+)\]\s' 'OC\[(?P[0-9]+)\]\s' 'SF0\[(?P[-\s0-9]+)\]\s' 'SF1\[(?P[-\s0-9]+)\]\s' 'SF2\[(?P[-\s0-9]+)\]\s' 'SF3\[(?P[-\s0-9]+)\]\s' 'PMUV\[(?P[-\s\S*]+)\]\s' 'PVT_T0\[(?P[-0-9\s]+)\]\s' 'PVT_T1\[(?P[-0-9\s]+)\]\s' 'PVT_T2\[(?P[-0-9\s]+)\]\s' 'PVT_T3\[(?P[-0-9\s]+)\]\s' 'PVT_V0_0\[(?P[-0-9\s]+)\]\s' 'PVT_V0_1\[(?P[-0-9\s]+)\]\s' 'PVT_V0_2\[(?P[-0-9\s]+)\]\s' 'PVT_V0_3\[(?P[-0-9\s]+)\]\s' 'PVT_V0_4\[(?P[-0-9\s]+)\]\s' 'PVT_V0_5\[(?P[-0-9\s]+)\]\s' 'PVT_V0_6\[(?P[-0-9\s]+)\]\s' 'PVT_V0_7\[(?P[-0-9\s]+)\]\s' 'PVT_V0_8\[(?P[-0-9\s]+)\]\s' 'PVT_V0_9\[(?P[-0-9\s]+)\]\s' 'PVT_V0_10\[(?P[-0-9\s]+)\]\s' 'PVT_V0_11\[(?P[-0-9\s]+)\]\s' 'PVT_V0_12\[(?P[-0-9\s]+)\]\s' 'PVT_V0_13\[(?P[-0-9\s]+)\]\s' 'PVT_V0_14\[(?P[-0-9\s]+)\]\s' 'PVT_V0_15\[(?P[-0-9\s]+)\]\s' 'PVT_V0_16\[(?P[-0-9\s]+)\]\s' 'PVT_V0_17\[(?P[-0-9\s]+)\]\s' 'PVT_V0_18\[(?P[-0-9\s]+)\]\s' 'PVT_V0_19\[(?P[-0-9\s]+)\]\s' 'PVT_V0_20\[(?P[-0-9\s]+)\]\s' 'PVT_V0_21\[(?P[-0-9\s]+)\]\s' 'PVT_V0_22\[(?P[-0-9\s]+)\]\s' 'PVT_V0_23\[(?P[-0-9\s]+)\]\s' 'PVT_V0_24\[(?P[-0-9\s]+)\]\s' 'PVT_V0_25\[(?P[-0-9\s]+)\]\s' 'PVT_V1_0\[(?P[-0-9\s]+)\]\s' 'PVT_V1_1\[(?P[-0-9\s]+)\]\s' 'PVT_V1_2\[(?P[-0-9\s]+)\]\s' 'PVT_V1_3\[(?P[-0-9\s]+)\]\s' 'PVT_V1_4\[(?P[-0-9\s]+)\]\s' 'PVT_V1_5\[(?P[-0-9\s]+)\]\s' 'PVT_V1_6\[(?P[-0-9\s]+)\]\s' 'PVT_V1_7\[(?P[-0-9\s]+)\]\s' 'PVT_V1_8\[(?P[-0-9\s]+)\]\s' 'PVT_V1_9\[(?P[-0-9\s]+)\]\s' 'PVT_V1_10\[(?P[-0-9\s]+)\]\s' 'PVT_V1_11\[(?P[-0-9\s]+)\]\s' 'PVT_V1_12\[(?P[-0-9\s]+)\]\s' 'PVT_V1_13\[(?P[-0-9\s]+)\]\s' 'PVT_V1_14\[(?P[-0-9\s]+)\]\s' 'PVT_V1_15\[(?P[-0-9\s]+)\]\s' 'PVT_V1_16\[(?P[-0-9\s]+)\]\s' 'PVT_V1_17\[(?P[-0-9\s]+)\]\s' 'PVT_V1_18\[(?P[-0-9\s]+)\]\s' 'PVT_V1_19\[(?P[-0-9\s]+)\]\s' 'PVT_V1_20\[(?P[-0-9\s]+)\]\s' 'PVT_V1_21\[(?P[-0-9\s]+)\]\s' 'PVT_V1_22\[(?P[-0-9\s]+)\]\s' 'PVT_V1_23\[(?P[-0-9\s]+)\]\s' 'PVT_V1_24\[(?P[-0-9\s]+)\]\s' 'PVT_V1_25\[(?P[-0-9\s]+)\]\s' 'PVT_V2_0\[(?P[-0-9\s]+)\]\s' 'PVT_V2_1\[(?P[-0-9\s]+)\]\s' 'PVT_V2_2\[(?P[-0-9\s]+)\]\s' 'PVT_V2_3\[(?P[-0-9\s]+)\]\s' 'PVT_V2_4\[(?P[-0-9\s]+)\]\s' 'PVT_V2_5\[(?P[-0-9\s]+)\]\s' 'PVT_V2_6\[(?P[-0-9\s]+)\]\s' 'PVT_V2_7\[(?P[-0-9\s]+)\]\s' 'PVT_V2_8\[(?P[-0-9\s]+)\]\s' 'PVT_V2_9\[(?P[-0-9\s]+)\]\s' 'PVT_V2_10\[(?P[-0-9\s]+)\]\s' 'PVT_V2_11\[(?P[-0-9\s]+)\]\s' 'PVT_V2_12\[(?P[-0-9\s]+)\]\s' 'PVT_V2_13\[(?P[-0-9\s]+)\]\s' 'PVT_V2_14\[(?P[-0-9\s]+)\]\s' 'PVT_V2_15\[(?P[-0-9\s]+)\]\s' 'PVT_V2_16\[(?P[-0-9\s]+)\]\s' 'PVT_V2_17\[(?P[-0-9\s]+)\]\s' 'PVT_V2_18\[(?P[-0-9\s]+)\]\s' 'PVT_V2_19\[(?P[-0-9\s]+)\]\s' 'PVT_V2_20\[(?P[-0-9\s]+)\]\s' 'PVT_V2_21\[(?P[-0-9\s]+)\]\s' 'PVT_V2_22\[(?P[-0-9\s]+)\]\s' 'PVT_V2_23\[(?P[-0-9\s]+)\]\s' 'PVT_V2_24\[(?P[-0-9\s]+)\]\s' 'PVT_V2_25\[(?P[-0-9\s]+)\]\s' 'PVT_V3_0\[(?P[-0-9\s]+)\]\s' 'PVT_V3_1\[(?P[-0-9\s]+)\]\s' 'PVT_V3_2\[(?P[-0-9\s]+)\]\s' 'PVT_V3_3\[(?P[-0-9\s]+)\]\s' 'PVT_V3_4\[(?P[-0-9\s]+)\]\s' 'PVT_V3_5\[(?P[-0-9\s]+)\]\s' 'PVT_V3_6\[(?P[-0-9\s]+)\]\s' 'PVT_V3_7\[(?P[-0-9\s]+)\]\s' 'PVT_V3_8\[(?P[-0-9\s]+)\]\s' 'PVT_V3_9\[(?P[-0-9\s]+)\]\s' 'PVT_V3_10\[(?P[-0-9\s]+)\]\s' 'PVT_V3_11\[(?P[-0-9\s]+)\]\s' 'PVT_V3_12\[(?P[-0-9\s]+)\]\s' 'PVT_V3_13\[(?P[-0-9\s]+)\]\s' 'PVT_V3_14\[(?P[-0-9\s]+)\]\s' 'PVT_V3_15\[(?P[-0-9\s]+)\]\s' 'PVT_V3_16\[(?P[-0-9\s]+)\]\s' 'PVT_V3_17\[(?P[-0-9\s]+)\]\s' 'PVT_V3_18\[(?P[-0-9\s]+)\]\s' 'PVT_V3_19\[(?P[-0-9\s]+)\]\s' 'PVT_V3_20\[(?P[-0-9\s]+)\]\s' 'PVT_V3_21\[(?P[-0-9\s]+)\]\s' 'PVT_V3_22\[(?P[-0-9\s]+)\]\s' 'PVT_V3_23\[(?P[-0-9\s]+)\]\s' 'PVT_V3_24\[(?P[-0-9\s]+)\]\s' 'PVT_V3_25\[(?P[-0-9\s]+)\]\s' 'FM\[(?P[0-9]+)\]\s' 'CRC\[(?P[0-9\s]+)\]', re.X ) def __repr__(self) -> str: return f"CGMinerAvalon: {str(self.ip)}"