diff --git a/pyasic/API/__init__.py b/pyasic/API/__init__.py index 97d8049a..c748784e 100644 --- a/pyasic/API/__init__.py +++ b/pyasic/API/__init__.py @@ -83,15 +83,15 @@ class BaseMinerAPI: data = self._load_api_data(data) # check for if the user wants to allow errors to return - if not ignore_errors: - # validate the command succeeded - validation = self._validate_command_output(data) - if not validation[0]: - if allow_warning: - logging.warning( - f"{self.ip}: API Command Error: {command}: {validation[1]}" - ) + validation = self._validate_command_output(data) + if not validation[0]: + if not ignore_errors: + # validate the command succeeded raise APIError(validation[1]) + if allow_warning: + logging.warning( + f"{self.ip}: API Command Error: {command}: {validation[1]}" + ) logging.debug(f"{self} - (Send Command) - Received data.") return data @@ -118,11 +118,12 @@ class BaseMinerAPI: data = await self.send_command(command, allow_warning=allow_warning) except APIError as e: # try to identify the error - if ":" in e.message: - err_command = e.message.split(":")[0] - if err_command in commands: - commands.remove(err_command) - continue + if e.message is not None: + if ":" in e.message: + err_command = e.message.split(":")[0] + if err_command in commands: + commands.remove(err_command) + continue return {command: [{}] for command in commands} logging.debug(f"{self} - (Multicommand) - Received data") data["multicommand"] = True diff --git a/pyasic/miners/base.py b/pyasic/miners/base.py index 359b9317..24e5f490 100644 --- a/pyasic/miners/base.py +++ b/pyasic/miners/base.py @@ -541,7 +541,7 @@ class BaseMiner(ABC): ) gathered_data = await self._get_data( - allow_warning, include=include, exclude=exclude + allow_warning=allow_warning, include=include, exclude=exclude ) for item in gathered_data: if gathered_data[item] is not None: diff --git a/pyasic/web/bosminer.py b/pyasic/web/bosminer.py deleted file mode 100644 index c82bf8d8..00000000 --- a/pyasic/web/bosminer.py +++ /dev/null @@ -1,194 +0,0 @@ -# ------------------------------------------------------------------------------ -# 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. - -# ------------------------------------------------------------------------------ -import json -from typing import Union - -import httpx - -from pyasic import APIError, settings -from pyasic.web import BaseWebAPI - - -class BOSMinerWebAPI(BaseWebAPI): - def __init__(self, ip: str) -> None: - super().__init__(ip) - self.pwd = settings.get("default_bosminer_password", "root") - - async def send_command( - self, - command: Union[str, dict], - ignore_errors: bool = False, - allow_warning: bool = True, - **parameters: Union[str, int, bool], - ) -> dict: - if isinstance(command, str): - return await self.send_luci_command(command) - else: - return await self.send_gql_command(command) - - def parse_command(self, graphql_command: Union[dict, set]) -> str: - if isinstance(graphql_command, dict): - data = [] - for key in graphql_command: - if graphql_command[key] is not None: - parsed = self.parse_command(graphql_command[key]) - data.append(key + parsed) - else: - data.append(key) - else: - data = graphql_command - return "{" + ",".join(data) + "}" - - async def send_gql_command( - self, - command: dict, - ) -> dict: - url = f"http://{self.ip}/graphql" - query = command - if command.get("query") is None: - query = {"query": self.parse_command(command)} - try: - async with httpx.AsyncClient() as client: - await self.auth(client) - data = await client.post(url, json=query) - except httpx.HTTPError: - pass - else: - if data.status_code == 200: - try: - return data.json() - except json.decoder.JSONDecodeError: - pass - - async def multicommand( - self, *commands: Union[dict, str], allow_warning: bool = True - ) -> dict: - luci_commands = [] - gql_commands = [] - for cmd in commands: - if isinstance(cmd, dict): - gql_commands.append(cmd) - if isinstance(cmd, str): - luci_commands.append(cmd) - - luci_data = await self.luci_multicommand(*luci_commands) - gql_data = await self.gql_multicommand(*gql_commands) - - if gql_data is None: - gql_data = {} - if luci_data is None: - luci_data = {} - - data = dict(**luci_data, **gql_data) - return data - - async def luci_multicommand(self, *commands: str) -> dict: - data = {} - for command in commands: - data[command] = await self.send_luci_command(command, ignore_errors=True) - return data - - async def gql_multicommand(self, *commands: dict) -> dict: - def merge(*d: dict): - ret = {} - for i in d: - if i: - for k in i: - if not k in ret: - ret[k] = i[k] - else: - ret[k] = merge(ret[k], i[k]) - return None if ret == {} else ret - - command = merge(*commands) - data = await self.send_command(command) - if data is not None: - if data.get("data") is None: - try: - commands = list(commands) - # noinspection PyTypeChecker - commands.remove({"bos": {"faultLight": None}}) - command = merge(*commands) - data = await self.send_gql_command(command) - except (LookupError, ValueError): - pass - if not data: - data = {} - data["multicommand"] = False - return data - - async def auth(self, client: httpx.AsyncClient) -> None: - url = f"http://{self.ip}/graphql" - await client.post( - url, - json={ - "query": 'mutation{auth{login(username:"' - + "root" - + '", password:"' - + self.pwd - + '"){__typename}}}' - }, - ) - - async def send_luci_command(self, path: str, ignore_errors: bool = False) -> dict: - try: - async with httpx.AsyncClient() as client: - await self.luci_auth(client) - data = await client.get( - f"http://{self.ip}{path}", headers={"User-Agent": "BTC Tools v0.1"} - ) - if data.status_code == 200: - return data.json() - if ignore_errors: - return {} - raise APIError( - f"Web command failed: path={path}, code={data.status_code}" - ) - except (httpx.HTTPError, json.JSONDecodeError): - if ignore_errors: - return {} - raise APIError(f"Web command failed: path={path}") - - async def luci_auth(self, session: httpx.AsyncClient): - login = {"luci_username": self.username, "luci_password": self.pwd} - url = f"http://{self.ip}/cgi-bin/luci" - headers = { - "User-Agent": "BTC Tools v0.1", # only seems to respond if this user-agent is set - "Content-Type": "application/x-www-form-urlencoded", - } - await session.post(url, headers=headers, data=login) - - async def get_net_conf(self): - return await self.send_luci_command( - "/cgi-bin/luci/admin/network/iface_status/lan" - ) - - async def get_cfg_metadata(self): - return await self.send_luci_command("/cgi-bin/luci/admin/miner/cfg_metadata") - - async def get_cfg_data(self): - return await self.send_luci_command("/cgi-bin/luci/admin/miner/cfg_data") - - async def get_bos_info(self): - return await self.send_luci_command("/cgi-bin/luci/bos/info") - - async def get_overview(self): - return await self.send_luci_command( - "/cgi-bin/luci/admin/status/overview?status=1" - ) # needs status=1 or it fails - - async def get_api_status(self): - return await self.send_luci_command("/cgi-bin/luci/admin/miner/api_status") diff --git a/pyasic/web/bosminer/__init__.py b/pyasic/web/bosminer/__init__.py new file mode 100644 index 00000000..aa70a8aa --- /dev/null +++ b/pyasic/web/bosminer/__init__.py @@ -0,0 +1,541 @@ +# ------------------------------------------------------------------------------ +# 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. - +# ------------------------------------------------------------------------------ +import asyncio +import json +import warnings +from datetime import datetime, timedelta +from enum import Enum +from typing import List, Union + +import grpc_requests +import httpx +from grpc import RpcError + +from pyasic import APIError, settings +from pyasic.web import BaseWebAPI +from pyasic.web.bosminer.proto import ( + get_auth_service_descriptors, + get_service_descriptors, +) + + +class SaveAction(Enum): + UNSPECIFIED = "SaveAction.SAVE_ACTION_UNSPECIFIED" + SAVE = "SaveAction.SAVE_ACTION_SAVE" + SAVE_AND_APPLY = "SaveAction.SAVE_ACTION_SAVE_AND_APPLY" + SAVE_AND_FORCE_APPLY = "SaveAction.SAVE_ACTION_SAVE_AND_FORCE_APPLY" + + +class BOSMinerWebAPI(BaseWebAPI): + def __init__(self, ip: str) -> None: + self.gql = BOSMinerGQLAPI(ip, settings.get("default_bosminer_password", "root")) + self.luci = BOSMinerLuCIAPI( + ip, settings.get("default_bosminer_password", "root") + ) + self.grpc = BOSMinerGRPCAPI( + ip, settings.get("default_bosminer_password", "root") + ) + self._pwd = settings.get("default_bosminer_password", "root") + super().__init__(ip) + + @property + def pwd(self): + return self._pwd + + @pwd.setter + def pwd(self, other: str): + self._pwd = other + self.luci.pwd = other + self.gql.pwd = other + + async def send_command( + self, + command: Union[str, dict], + ignore_errors: bool = False, + allow_warning: bool = True, + **parameters: Union[str, int, bool], + ) -> dict: + if isinstance(command, dict): + return await self.gql.send_command(command) + elif command.startswith("/cgi-bin/luci"): + return await self.gql.send_command(command) + + async def multicommand( + self, *commands: Union[dict, str], allow_warning: bool = True + ) -> dict: + luci_commands = [] + gql_commands = [] + for cmd in commands: + if isinstance(cmd, dict): + gql_commands.append(cmd) + elif cmd.startswith("/cgi-bin/luci"): + luci_commands.append(cmd) + + luci_data = await self.luci.multicommand(*luci_commands) + gql_data = await self.gql.multicommand(*gql_commands) + + if gql_data is None: + gql_data = {} + if luci_data is None: + luci_data = {} + + data = dict(**luci_data, **gql_data) + return data + + +class BOSMinerGQLAPI: + def __init__(self, ip: str, pwd: str): + self.ip = ip + self.username = "root" + self.pwd = pwd + + async def multicommand(self, *commands: dict) -> dict: + def merge(*d: dict): + ret = {} + for i in d: + if i: + for k in i: + if not k in ret: + ret[k] = i[k] + else: + ret[k] = merge(ret[k], i[k]) + return None if ret == {} else ret + + command = merge(*commands) + data = await self.send_command(command) + if data is not None: + if data.get("data") is None: + try: + commands = list(commands) + # noinspection PyTypeChecker + commands.remove({"bos": {"faultLight": None}}) + command = merge(*commands) + data = await self.send_command(command) + except (LookupError, ValueError): + pass + if not data: + data = {} + data["multicommand"] = False + return data + + async def send_command( + self, + command: dict, + ) -> dict: + url = f"http://{self.ip}/graphql" + query = command + if command.get("query") is None: + query = {"query": self.parse_command(command)} + try: + async with httpx.AsyncClient() as client: + await self.auth(client) + data = await client.post(url, json=query) + except httpx.HTTPError: + pass + else: + if data.status_code == 200: + try: + return data.json() + except json.decoder.JSONDecodeError: + pass + + def parse_command(self, graphql_command: Union[dict, set]) -> str: + if isinstance(graphql_command, dict): + data = [] + for key in graphql_command: + if graphql_command[key] is not None: + parsed = self.parse_command(graphql_command[key]) + data.append(key + parsed) + else: + data.append(key) + else: + data = graphql_command + return "{" + ",".join(data) + "}" + + async def auth(self, client: httpx.AsyncClient) -> None: + url = f"http://{self.ip}/graphql" + await client.post( + url, + json={ + "query": 'mutation{auth{login(username:"' + + "root" + + '", password:"' + + self.pwd + + '"){__typename}}}' + }, + ) + + +class BOSMinerLuCIAPI: + def __init__(self, ip: str, pwd: str): + self.ip = ip + self.username = "root" + self.pwd = pwd + + async def multicommand(self, *commands: str) -> dict: + data = {} + for command in commands: + data[command] = await self.send_command(command, ignore_errors=True) + return data + + async def send_command(self, path: str, ignore_errors: bool = False) -> dict: + try: + async with httpx.AsyncClient() as client: + await self.auth(client) + data = await client.get( + f"http://{self.ip}{path}", headers={"User-Agent": "BTC Tools v0.1"} + ) + if data.status_code == 200: + return data.json() + if ignore_errors: + return {} + raise APIError( + f"Web command failed: path={path}, code={data.status_code}" + ) + except (httpx.HTTPError, json.JSONDecodeError): + if ignore_errors: + return {} + raise APIError(f"Web command failed: path={path}") + + async def auth(self, session: httpx.AsyncClient): + login = {"luci_username": self.username, "luci_password": self.pwd} + url = f"http://{self.ip}/cgi-bin/luci" + headers = { + "User-Agent": "BTC Tools v0.1", # only seems to respond if this user-agent is set + "Content-Type": "application/x-www-form-urlencoded", + } + await session.post(url, headers=headers, data=login) + + async def get_net_conf(self): + return await self.send_command("/cgi-bin/luci/admin/network/iface_status/lan") + + async def get_cfg_metadata(self): + return await self.send_command("/cgi-bin/luci/admin/miner/cfg_metadata") + + async def get_cfg_data(self): + return await self.send_command("/cgi-bin/luci/admin/miner/cfg_data") + + async def get_bos_info(self): + return await self.send_command("/cgi-bin/luci/bos/info") + + async def get_overview(self): + return await self.send_command( + "/cgi-bin/luci/admin/status/overview?status=1" + ) # needs status=1 or it fails + + async def get_api_status(self): + return await self.send_command("/cgi-bin/luci/admin/miner/api_status") + + +class BOSMinerGRPCAPI: + def __init__(self, ip: str, pwd: str): + self.ip = ip + self.username = "root" + self.pwd = pwd + self._auth = None + self._auth_time = datetime.now() + + @property + def commands(self) -> list: + return self.get_commands() + + def get_commands(self) -> list: + return [ + func + for func in + # each function in self + dir(self) + if func + not in ["send_command", "multicommand", "auth", "commands", "get_commands"] + if callable(getattr(self, func)) and + # no __ or _ methods + not func.startswith("__") and not func.startswith("_") + ] + + async def multicommand(self, *commands: str) -> dict: + pass + + async def send_command( + self, command: str, ignore_errors: bool = False, auth: bool = True, **parameters + ) -> dict: + service, method = command.split("/") + metadata = [] + if auth: + metadata.append(("authorization", await self.auth())) + async with grpc_requests.StubAsyncClient( + f"{self.ip}:50051", service_descriptors=get_service_descriptors() + ) as client: + await client.register_all_service() + try: + return await client.request( + service, + method, + request=parameters, + metadata=metadata, + ) + except RpcError as e: + if ignore_errors: + return {} + raise APIError(e._details) + + async def auth(self): + if self._auth is not None and self._auth_time - datetime.now() < timedelta( + seconds=3540 + ): + return self._auth + await self._get_auth() + return self._auth + + async def _get_auth(self): + async with grpc_requests.StubAsyncClient( + f"{self.ip}:50051", service_descriptors=get_auth_service_descriptors() + ) as client: + await client.register_all_service() + method_meta = client.get_method_meta( + "braiins.bos.v1.AuthenticationService", "Login" + ) + _request = method_meta.method_type.request_parser( + {"username": self.username, "password": self.pwd}, + method_meta.input_type, + ) + metadata = await method_meta.handler(_request).initial_metadata() + + for key, value in metadata: + if key == "authorization": + self._auth = value + self._auth_time = datetime.now() + return self._auth + + async def get_api_version(self): + return await self.send_command( + "braiins.bos.ApiVersionService/GetApiVersion", auth=False + ) + + async def start(self): + return await self.send_command("braiins.bos.v1.ActionsService/Start") + + async def stop(self): + return await self.send_command("braiins.bos.v1.ActionsService/Stop") + + async def pause_mining(self): + return await self.send_command("braiins.bos.v1.ActionsService/PauseMining") + + async def resume_mining(self): + return await self.send_command("braiins.bos.v1.ActionsService/ResumeMining") + + async def restart(self): + return await self.send_command("braiins.bos.v1.ActionsService/Restart") + + async def reboot(self): + return await self.send_command("braiins.bos.v1.ActionsService/Reboot") + + async def set_locate_device_status(self, enable: bool): + return await self.send_command( + "braiins.bos.v1.ActionsService/SetLocateDeviceStatus", enable=enable + ) + + async def get_locate_device_status(self): + return await self.send_command( + "braiins.bos.v1.ActionsService/GetLocateDeviceStatus" + ) + + async def set_password(self, password: str = None): + kwargs = {} + if password: + kwargs["password"] = password + return await self.send_command( + "braiins.bos.v1.AuthenticationService/SetPassword", **kwargs + ) + + async def get_cooling_state(self): + return await self.send_command("braiins.bos.v1.CoolingService/GetCoolingState") + + async def set_immersion_mode( + self, enable: bool, save_action: SaveAction = SaveAction.SAVE_AND_APPLY + ): + return await self.send_command( + "braiins.bos.v1.CoolingService/SetImmersionMode", + save_action=save_action, + enable_immersion_mode=enable, + ) + + async def get_tuner_state(self): + return await self.send_command( + "braiins.bos.v1.PerformanceService/GetTunerState" + ) + + async def list_target_profiles(self): + return await self.send_command( + "braiins.bos.v1.PerformanceService/ListTargetProfiles" + ) + + async def set_default_power_target( + self, save_action: SaveAction = SaveAction.SAVE_AND_APPLY + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/SetDefaultPowerTarget", + save_action=save_action, + ) + + async def set_power_target( + self, power_target: int, save_action: SaveAction = SaveAction.SAVE_AND_APPLY + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/SetPowerTarget", + save_action=save_action, + power_target=power_target, + ) + + async def increment_power_target( + self, + power_target_increment: int, + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/IncrementPowerTarget", + save_action=save_action, + power_target_increment=power_target_increment, + ) + + async def decrement_power_target( + self, + power_target_decrement: int, + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/DecrementPowerTarget", + save_action=save_action, + power_target_decrement=power_target_decrement, + ) + + async def set_default_hashrate_target( + self, save_action: SaveAction = SaveAction.SAVE_AND_APPLY + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/SetDefaultHashrateTarget", + save_action=save_action, + ) + + async def set_hashrate_target( + self, hashrate_target: int, save_action: SaveAction = SaveAction.SAVE_AND_APPLY + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/SetHashrateTarget", + save_action=save_action, + hashrate_target=hashrate_target, + ) + + async def increment_hashrate_target( + self, + hashrate_target_increment: int, + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/IncrementHashrateTarget", + save_action=save_action, + hashrate_target_increment=hashrate_target_increment, + ) + + async def decrement_hashrate_target( + self, + hashrate_target_decrement: int, + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.PerformanceService/DecrementHashrateTarget", + save_action=save_action, + hashrate_target_decrement=hashrate_target_decrement, + ) + + async def set_dps(self): + raise NotImplementedError + return await self.send_command("braiins.bos.v1.PerformanceService/SetDPS") + + async def set_performance_mode(self): + raise NotImplementedError + return await self.send_command( + "braiins.bos.v1.PerformanceService/SetPerformanceMode" + ) + + async def get_active_performance_mode(self): + return await self.send_command( + "braiins.bos.v1.PerformanceService/GetActivePerformanceMode" + ) + + async def get_pool_groups(self): + return await self.send_command("braiins.bos.v1.PoolService/GetPoolGroups") + + async def create_pool_group(self): + raise NotImplementedError + return await self.send_command("braiins.bos.v1.PoolService/CreatePoolGroup") + + async def update_pool_group(self): + raise NotImplementedError + return await self.send_command("braiins.bos.v1.PoolService/UpdatePoolGroup") + + async def remove_pool_group(self): + raise NotImplementedError + return await self.send_command("braiins.bos.v1.PoolService/RemovePoolGroup") + + async def get_miner_configuration(self): + return await self.send_command( + "braiins.bos.v1.ConfigurationService/GetMinerConfiguration" + ) + + async def get_constraints(self): + return await self.send_command( + "braiins.bos.v1.ConfigurationService/GetConstraints" + ) + + async def get_license_state(self): + return await self.send_command("braiins.bos.v1.LicenseService/GetLicenseState") + + async def get_miner_status(self): + return await self.send_command("braiins.bos.v1.MinerService/GetMinerStatus") + + async def get_miner_details(self): + return await self.send_command("braiins.bos.v1.MinerService/GetMinerDetails") + + async def get_miner_stats(self): + return await self.send_command("braiins.bos.v1.MinerService/GetMinerStats") + + async def get_hashboards(self): + return await self.send_command("braiins.bos.v1.MinerService/GetHashboards") + + async def get_support_archive(self): + return await self.send_command("braiins.bos.v1.MinerService/GetSupportArchive") + + async def enable_hashboards( + self, + hashboard_ids: List[str], + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.MinerService/EnableHashboards", + hashboard_ids=hashboard_ids, + save_action=save_action, + ) + + async def disable_hashboards( + self, + hashboard_ids: List[str], + save_action: SaveAction = SaveAction.SAVE_AND_APPLY, + ): + return await self.send_command( + "braiins.bos.v1.MinerService/DisableHashboards", + hashboard_ids=hashboard_ids, + save_action=save_action, + ) diff --git a/pyasic/web/bosminer/proto/__init__.py b/pyasic/web/bosminer/proto/__init__.py new file mode 100644 index 00000000..5538f2b5 --- /dev/null +++ b/pyasic/web/bosminer/proto/__init__.py @@ -0,0 +1,52 @@ +# ------------------------------------------------------------------------------ +# 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 .bos import version_pb2 +from .bos.v1 import ( + actions_pb2, + authentication_pb2, + common_pb2, + configuration_pb2, + constraints_pb2, + cooling_pb2, + license_pb2, + miner_pb2, + performance_pb2, + pool_pb2, + units_pb2, + work_pb2, +) + + +def get_service_descriptors(): + return [ + *version_pb2.DESCRIPTOR.services_by_name.values(), + *authentication_pb2.DESCRIPTOR.services_by_name.values(), + *actions_pb2.DESCRIPTOR.services_by_name.values(), + *common_pb2.DESCRIPTOR.services_by_name.values(), + *configuration_pb2.DESCRIPTOR.services_by_name.values(), + *constraints_pb2.DESCRIPTOR.services_by_name.values(), + *cooling_pb2.DESCRIPTOR.services_by_name.values(), + *license_pb2.DESCRIPTOR.services_by_name.values(), + *miner_pb2.DESCRIPTOR.services_by_name.values(), + *performance_pb2.DESCRIPTOR.services_by_name.values(), + *pool_pb2.DESCRIPTOR.services_by_name.values(), + *units_pb2.DESCRIPTOR.services_by_name.values(), + *work_pb2.DESCRIPTOR.services_by_name.values(), + ] + + +def get_auth_service_descriptors(): + return authentication_pb2.DESCRIPTOR.services_by_name.values() diff --git a/pyasic/web/bosminer/proto/bos/v1/actions_pb2.py b/pyasic/web/bosminer/proto/bos/v1/actions_pb2.py new file mode 100644 index 00000000..4c36707d --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/actions_pb2.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/actions.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x14\x62os/v1/actions.proto\x12\x0e\x62raiins.bos.v1"\x0e\n\x0cStartRequest"(\n\rStartResponse\x12\x17\n\x0f\x61lready_running\x18\x01 \x01(\x08"\x10\n\x0eRestartRequest"*\n\x0fRestartResponse\x12\x17\n\x0f\x61lready_running\x18\x01 \x01(\x08"\x0f\n\rRebootRequest"\x10\n\x0eRebootResponse"\r\n\x0bStopRequest"\'\n\x0cStopResponse\x12\x17\n\x0f\x61lready_stopped\x18\x01 \x01(\x08"\x14\n\x12PauseMiningRequest"-\n\x13PauseMiningResponse\x12\x16\n\x0e\x61lready_paused\x18\x01 \x01(\x08"\x15\n\x13ResumeMiningRequest".\n\x14ResumeMiningResponse\x12\x16\n\x0e\x61lready_mining\x18\x01 \x01(\x08".\n\x1cSetLocateDeviceStatusRequest\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08"-\n\x1aLocateDeviceStatusResponse\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08"\x1e\n\x1cGetLocateDeviceStatusRequest2\xc7\x05\n\x0e\x41\x63tionsService\x12\x44\n\x05Start\x12\x1c.braiins.bos.v1.StartRequest\x1a\x1d.braiins.bos.v1.StartResponse\x12\x41\n\x04Stop\x12\x1b.braiins.bos.v1.StopRequest\x1a\x1c.braiins.bos.v1.StopResponse\x12V\n\x0bPauseMining\x12".braiins.bos.v1.PauseMiningRequest\x1a#.braiins.bos.v1.PauseMiningResponse\x12Y\n\x0cResumeMining\x12#.braiins.bos.v1.ResumeMiningRequest\x1a$.braiins.bos.v1.ResumeMiningResponse\x12J\n\x07Restart\x12\x1e.braiins.bos.v1.RestartRequest\x1a\x1f.braiins.bos.v1.RestartResponse\x12G\n\x06Reboot\x12\x1d.braiins.bos.v1.RebootRequest\x1a\x1e.braiins.bos.v1.RebootResponse\x12q\n\x15SetLocateDeviceStatus\x12,.braiins.bos.v1.SetLocateDeviceStatusRequest\x1a*.braiins.bos.v1.LocateDeviceStatusResponse\x12q\n\x15GetLocateDeviceStatus\x12,.braiins.bos.v1.GetLocateDeviceStatusRequest\x1a*.braiins.bos.v1.LocateDeviceStatusResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.actions_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_STARTREQUEST"]._serialized_start = 40 + _globals["_STARTREQUEST"]._serialized_end = 54 + _globals["_STARTRESPONSE"]._serialized_start = 56 + _globals["_STARTRESPONSE"]._serialized_end = 96 + _globals["_RESTARTREQUEST"]._serialized_start = 98 + _globals["_RESTARTREQUEST"]._serialized_end = 114 + _globals["_RESTARTRESPONSE"]._serialized_start = 116 + _globals["_RESTARTRESPONSE"]._serialized_end = 158 + _globals["_REBOOTREQUEST"]._serialized_start = 160 + _globals["_REBOOTREQUEST"]._serialized_end = 175 + _globals["_REBOOTRESPONSE"]._serialized_start = 177 + _globals["_REBOOTRESPONSE"]._serialized_end = 193 + _globals["_STOPREQUEST"]._serialized_start = 195 + _globals["_STOPREQUEST"]._serialized_end = 208 + _globals["_STOPRESPONSE"]._serialized_start = 210 + _globals["_STOPRESPONSE"]._serialized_end = 249 + _globals["_PAUSEMININGREQUEST"]._serialized_start = 251 + _globals["_PAUSEMININGREQUEST"]._serialized_end = 271 + _globals["_PAUSEMININGRESPONSE"]._serialized_start = 273 + _globals["_PAUSEMININGRESPONSE"]._serialized_end = 318 + _globals["_RESUMEMININGREQUEST"]._serialized_start = 320 + _globals["_RESUMEMININGREQUEST"]._serialized_end = 341 + _globals["_RESUMEMININGRESPONSE"]._serialized_start = 343 + _globals["_RESUMEMININGRESPONSE"]._serialized_end = 389 + _globals["_SETLOCATEDEVICESTATUSREQUEST"]._serialized_start = 391 + _globals["_SETLOCATEDEVICESTATUSREQUEST"]._serialized_end = 437 + _globals["_LOCATEDEVICESTATUSRESPONSE"]._serialized_start = 439 + _globals["_LOCATEDEVICESTATUSRESPONSE"]._serialized_end = 484 + _globals["_GETLOCATEDEVICESTATUSREQUEST"]._serialized_start = 486 + _globals["_GETLOCATEDEVICESTATUSREQUEST"]._serialized_end = 516 + _globals["_ACTIONSSERVICE"]._serialized_start = 519 + _globals["_ACTIONSSERVICE"]._serialized_end = 1230 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/authentication_pb2.py b/pyasic/web/bosminer/proto/bos/v1/authentication_pb2.py new file mode 100644 index 00000000..245a60cd --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/authentication_pb2.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/authentication.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x1b\x62os/v1/authentication.proto\x12\x0e\x62raiins.bos.v1"2\n\x0cLoginRequest\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t"\x0f\n\rLoginResponse"8\n\x12SetPasswordRequest\x12\x15\n\x08password\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_password"\x15\n\x13SetPasswordResponse2\xb5\x01\n\x15\x41uthenticationService\x12\x44\n\x05Login\x12\x1c.braiins.bos.v1.LoginRequest\x1a\x1d.braiins.bos.v1.LoginResponse\x12V\n\x0bSetPassword\x12".braiins.bos.v1.SetPasswordRequest\x1a#.braiins.bos.v1.SetPasswordResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages( + DESCRIPTOR, "bos.v1.authentication_pb2", _globals +) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_LOGINREQUEST"]._serialized_start = 47 + _globals["_LOGINREQUEST"]._serialized_end = 97 + _globals["_LOGINRESPONSE"]._serialized_start = 99 + _globals["_LOGINRESPONSE"]._serialized_end = 114 + _globals["_SETPASSWORDREQUEST"]._serialized_start = 116 + _globals["_SETPASSWORDREQUEST"]._serialized_end = 172 + _globals["_SETPASSWORDRESPONSE"]._serialized_start = 174 + _globals["_SETPASSWORDRESPONSE"]._serialized_end = 195 + _globals["_AUTHENTICATIONSERVICE"]._serialized_start = 198 + _globals["_AUTHENTICATIONSERVICE"]._serialized_end = 379 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/common_pb2.py b/pyasic/web/bosminer/proto/bos/v1/common_pb2.py new file mode 100644 index 00000000..9dd91256 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/common_pb2.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/common.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b"\n\x13\x62os/v1/common.proto\x12\x0e\x62raiins.bos.v1*\x85\x01\n\nSaveAction\x12\x1b\n\x17SAVE_ACTION_UNSPECIFIED\x10\x00\x12\x14\n\x10SAVE_ACTION_SAVE\x10\x01\x12\x1e\n\x1aSAVE_ACTION_SAVE_AND_APPLY\x10\x02\x12$\n SAVE_ACTION_SAVE_AND_FORCE_APPLY\x10\x03\x62\x06proto3" +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.common_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_SAVEACTION"]._serialized_start = 40 + _globals["_SAVEACTION"]._serialized_end = 173 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/configuration_pb2.py b/pyasic/web/bosminer/proto/bos/v1/configuration_pb2.py new file mode 100644 index 00000000..f44c4dd8 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/configuration_pb2.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/configuration.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import cooling_pb2 as bos_dot_v1_dot_cooling__pb2 +from ...bos.v1 import performance_pb2 as bos_dot_v1_dot_performance__pb2 +from ...bos.v1 import pool_pb2 as bos_dot_v1_dot_pool__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x1a\x62os/v1/configuration.proto\x12\x0e\x62raiins.bos.v1\x1a\x14\x62os/v1/cooling.proto\x1a\x18\x62os/v1/performance.proto\x1a\x11\x62os/v1/pool.proto"\x1e\n\x1cGetMinerConfigurationRequest"\xc6\x02\n\x1dGetMinerConfigurationResponse\x12;\n\x0bpool_groups\x18\x01 \x03(\x0b\x32&.braiins.bos.v1.PoolGroupConfiguration\x12\x39\n\x0btemperature\x18\x02 \x01(\x0b\x32$.braiins.bos.v1.CoolingConfiguration\x12\x31\n\x05tuner\x18\x03 \x01(\x0b\x32".braiins.bos.v1.TunerConfiguration\x12-\n\x03\x64ps\x18\x04 \x01(\x0b\x32 .braiins.bos.v1.DPSConfiguration\x12K\n\x10hashboard_config\x18\x05 \x01(\x0b\x32\x31.braiins.bos.v1.HashboardPerformanceConfiguration"\x17\n\x15GetConstraintsRequest"\x95\x02\n\x16GetConstraintsResponse\x12;\n\x11tuner_constraints\x18\x01 \x01(\x0b\x32 .braiins.bos.v1.TunerConstraints\x12?\n\x13\x63ooling_constraints\x18\x02 \x01(\x0b\x32".braiins.bos.v1.CoolingConstraints\x12\x37\n\x0f\x64ps_constraints\x18\x03 \x01(\x0b\x32\x1e.braiins.bos.v1.DPSConstraints\x12\x44\n\x16hashboards_constraints\x18\x04 \x01(\x0b\x32$.braiins.bos.v1.HashboardConstraints2\xed\x01\n\x14\x43onfigurationService\x12t\n\x15GetMinerConfiguration\x12,.braiins.bos.v1.GetMinerConfigurationRequest\x1a-.braiins.bos.v1.GetMinerConfigurationResponse\x12_\n\x0eGetConstraints\x12%.braiins.bos.v1.GetConstraintsRequest\x1a&.braiins.bos.v1.GetConstraintsResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages( + DESCRIPTOR, "bos.v1.configuration_pb2", _globals +) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_GETMINERCONFIGURATIONREQUEST"]._serialized_start = 113 + _globals["_GETMINERCONFIGURATIONREQUEST"]._serialized_end = 143 + _globals["_GETMINERCONFIGURATIONRESPONSE"]._serialized_start = 146 + _globals["_GETMINERCONFIGURATIONRESPONSE"]._serialized_end = 472 + _globals["_GETCONSTRAINTSREQUEST"]._serialized_start = 474 + _globals["_GETCONSTRAINTSREQUEST"]._serialized_end = 497 + _globals["_GETCONSTRAINTSRESPONSE"]._serialized_start = 500 + _globals["_GETCONSTRAINTSRESPONSE"]._serialized_end = 777 + _globals["_CONFIGURATIONSERVICE"]._serialized_start = 780 + _globals["_CONFIGURATIONSERVICE"]._serialized_end = 1017 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/constraints_pb2.py b/pyasic/web/bosminer/proto/bos/v1/constraints_pb2.py new file mode 100644 index 00000000..58ee8800 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/constraints_pb2.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/constraints.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x18\x62os/v1/constraints.proto\x12\x0e\x62raiins.bos.v1\x1a\x12\x62os/v1/units.proto">\n\x11UInt32Constraints\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\r\x12\x0b\n\x03min\x18\x02 \x01(\r\x12\x0b\n\x03max\x18\x03 \x01(\r">\n\x11\x44oubleConstraints\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x01\x12\x0b\n\x03min\x18\x02 \x01(\x01\x12\x0b\n\x03max\x18\x03 \x01(\x01"\x82\x01\n\x10PowerConstraints\x12&\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12"\n\x03min\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12"\n\x03max\x18\x03 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x9a\x01\n\x13HashrateConstraints\x12-\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12)\n\x03min\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12)\n\x03max\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x9a\x01\n\x16TemperatureConstraints\x12,\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12(\n\x03min\x18\x02 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12(\n\x03max\x18\x03 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature"$\n\x11\x42ooleanConstraint\x12\x0f\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x08"\x85\x01\n\x13\x44urationConstraints\x12&\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Hours\x12"\n\x03min\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Hours\x12"\n\x03max\x18\x03 \x01(\x0b\x32\x15.braiins.bos.v1.Hours"\x92\x01\n\x14\x46requencyConstraints\x12*\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12&\n\x03min\x18\x02 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12&\n\x03max\x18\x03 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency"\x8a\x01\n\x12VoltageConstraints\x12(\n\x07\x64\x65\x66\x61ult\x18\x01 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage\x12$\n\x03min\x18\x02 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage\x12$\n\x03max\x18\x03 \x01(\x0b\x32\x17.braiins.bos.v1.Voltageb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.constraints_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_UINT32CONSTRAINTS"]._serialized_start = 64 + _globals["_UINT32CONSTRAINTS"]._serialized_end = 126 + _globals["_DOUBLECONSTRAINTS"]._serialized_start = 128 + _globals["_DOUBLECONSTRAINTS"]._serialized_end = 190 + _globals["_POWERCONSTRAINTS"]._serialized_start = 193 + _globals["_POWERCONSTRAINTS"]._serialized_end = 323 + _globals["_HASHRATECONSTRAINTS"]._serialized_start = 326 + _globals["_HASHRATECONSTRAINTS"]._serialized_end = 480 + _globals["_TEMPERATURECONSTRAINTS"]._serialized_start = 483 + _globals["_TEMPERATURECONSTRAINTS"]._serialized_end = 637 + _globals["_BOOLEANCONSTRAINT"]._serialized_start = 639 + _globals["_BOOLEANCONSTRAINT"]._serialized_end = 675 + _globals["_DURATIONCONSTRAINTS"]._serialized_start = 678 + _globals["_DURATIONCONSTRAINTS"]._serialized_end = 811 + _globals["_FREQUENCYCONSTRAINTS"]._serialized_start = 814 + _globals["_FREQUENCYCONSTRAINTS"]._serialized_end = 960 + _globals["_VOLTAGECONSTRAINTS"]._serialized_start = 963 + _globals["_VOLTAGECONSTRAINTS"]._serialized_end = 1101 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/cooling_pb2.py b/pyasic/web/bosminer/proto/bos/v1/cooling_pb2.py new file mode 100644 index 00000000..d72f2ea0 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/cooling_pb2.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/cooling.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import common_pb2 as bos_dot_v1_dot_common__pb2 +from ...bos.v1 import constraints_pb2 as bos_dot_v1_dot_constraints__pb2 +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x14\x62os/v1/cooling.proto\x12\x0e\x62raiins.bos.v1\x1a\x13\x62os/v1/common.proto\x1a\x18\x62os/v1/constraints.proto\x1a\x12\x62os/v1/units.proto"\xbc\x01\n\x0f\x43oolingAutoMode\x12\x37\n\x12target_temperature\x18\x01 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12\x34\n\x0fhot_temperature\x18\x02 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12:\n\x15\x64\x61ngerous_temperature\x18\x03 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature"\xb7\x01\n\x11\x43oolingManualMode\x12\x1c\n\x0f\x66\x61n_speed_ratio\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x34\n\x0fhot_temperature\x18\x02 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12:\n\x15\x64\x61ngerous_temperature\x18\x03 \x01(\x0b\x32\x1b.braiins.bos.v1.TemperatureB\x12\n\x10_fan_speed_ratio"G\n\x13\x43oolingDisabledMode\x12\x1c\n\x0f\x66\x61n_speed_ratio\x18\x01 \x01(\x01H\x00\x88\x01\x01\x42\x12\n\x10_fan_speed_ratio"\xfb\x01\n\x14\x43oolingConfiguration\x12"\n\x15minimum_required_fans\x18\x01 \x01(\rH\x01\x88\x01\x01\x12/\n\x04\x61uto\x18\x02 \x01(\x0b\x32\x1f.braiins.bos.v1.CoolingAutoModeH\x00\x12\x33\n\x06manual\x18\x03 \x01(\x0b\x32!.braiins.bos.v1.CoolingManualModeH\x00\x12\x37\n\x08\x64isabled\x18\x04 \x01(\x0b\x32#.braiins.bos.v1.CoolingDisabledModeH\x00\x42\x06\n\x04modeB\x18\n\x16_minimum_required_fans"\x99\x03\n\x12\x43oolingConstraints\x12\x39\n\x14\x64\x65\x66\x61ult_cooling_mode\x18\x01 \x01(\x0e\x32\x1b.braiins.bos.v1.CoolingMode\x12\x42\n\x12target_temperature\x18\x02 \x01(\x0b\x32&.braiins.bos.v1.TemperatureConstraints\x12?\n\x0fhot_temperature\x18\x03 \x01(\x0b\x32&.braiins.bos.v1.TemperatureConstraints\x12\x45\n\x15\x64\x61ngerous_temperature\x18\x04 \x01(\x0b\x32&.braiins.bos.v1.TemperatureConstraints\x12:\n\x0f\x66\x61n_speed_ratio\x18\x05 \x01(\x0b\x32!.braiins.bos.v1.DoubleConstraints\x12@\n\x15minimum_required_fans\x18\x06 \x01(\x0b\x32!.braiins.bos.v1.UInt32Constraints"s\n\x08\x46\x61nState\x12\x15\n\x08position\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03rpm\x18\x02 \x01(\r\x12\x1f\n\x12target_speed_ratio\x18\x03 \x01(\x01H\x01\x88\x01\x01\x42\x0b\n\t_positionB\x15\n\x13_target_speed_ratio"\x8f\x01\n\x11TemperatureSensor\x12\x0f\n\x02id\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x30\n\x08location\x18\x02 \x01(\x0e\x32\x1e.braiins.bos.v1.SensorLocation\x12\x30\n\x0btemperature\x18\x03 \x01(\x0b\x32\x1b.braiins.bos.v1.TemperatureB\x05\n\x03_id"\x18\n\x16GetCoolingStateRequest"\x81\x01\n\x17GetCoolingStateResponse\x12&\n\x04\x66\x61ns\x18\x01 \x03(\x0b\x32\x18.braiins.bos.v1.FanState\x12>\n\x13highest_temperature\x18\x02 \x01(\x0b\x32!.braiins.bos.v1.TemperatureSensor"i\n\x17SetImmersionModeRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x1d\n\x15\x65nable_immersion_mode\x18\x02 \x01(\x08"2\n\x18SetImmersionModeResponse\x12\x16\n\x0eimmersion_mode\x18\x01 \x01(\x08*v\n\x0b\x43oolingMode\x12\x1c\n\x18\x43OOLING_MODE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x43OOLING_MODE_AUTO\x10\x01\x12\x17\n\x13\x43OOLING_MODE_MANUAL\x10\x02\x12\x19\n\x15\x43OOLING_MODE_DISABLED\x10\x03*d\n\x0eSensorLocation\x12\x1f\n\x1bSENSOR_LOCATION_UNSPECIFIED\x10\x00\x12\x18\n\x14SENSOR_LOCATION_CHIP\x10\x01\x12\x17\n\x13SENSOR_LOCATION_PCB\x10\x02\x32\xdb\x01\n\x0e\x43oolingService\x12\x62\n\x0fGetCoolingState\x12&.braiins.bos.v1.GetCoolingStateRequest\x1a\'.braiins.bos.v1.GetCoolingStateResponse\x12\x65\n\x10SetImmersionMode\x12\'.braiins.bos.v1.SetImmersionModeRequest\x1a(.braiins.bos.v1.SetImmersionModeResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.cooling_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_COOLINGMODE"]._serialized_start = 1803 + _globals["_COOLINGMODE"]._serialized_end = 1921 + _globals["_SENSORLOCATION"]._serialized_start = 1923 + _globals["_SENSORLOCATION"]._serialized_end = 2023 + _globals["_COOLINGAUTOMODE"]._serialized_start = 108 + _globals["_COOLINGAUTOMODE"]._serialized_end = 296 + _globals["_COOLINGMANUALMODE"]._serialized_start = 299 + _globals["_COOLINGMANUALMODE"]._serialized_end = 482 + _globals["_COOLINGDISABLEDMODE"]._serialized_start = 484 + _globals["_COOLINGDISABLEDMODE"]._serialized_end = 555 + _globals["_COOLINGCONFIGURATION"]._serialized_start = 558 + _globals["_COOLINGCONFIGURATION"]._serialized_end = 809 + _globals["_COOLINGCONSTRAINTS"]._serialized_start = 812 + _globals["_COOLINGCONSTRAINTS"]._serialized_end = 1221 + _globals["_FANSTATE"]._serialized_start = 1223 + _globals["_FANSTATE"]._serialized_end = 1338 + _globals["_TEMPERATURESENSOR"]._serialized_start = 1341 + _globals["_TEMPERATURESENSOR"]._serialized_end = 1484 + _globals["_GETCOOLINGSTATEREQUEST"]._serialized_start = 1486 + _globals["_GETCOOLINGSTATEREQUEST"]._serialized_end = 1510 + _globals["_GETCOOLINGSTATERESPONSE"]._serialized_start = 1513 + _globals["_GETCOOLINGSTATERESPONSE"]._serialized_end = 1642 + _globals["_SETIMMERSIONMODEREQUEST"]._serialized_start = 1644 + _globals["_SETIMMERSIONMODEREQUEST"]._serialized_end = 1749 + _globals["_SETIMMERSIONMODERESPONSE"]._serialized_start = 1751 + _globals["_SETIMMERSIONMODERESPONSE"]._serialized_end = 1801 + _globals["_COOLINGSERVICE"]._serialized_start = 2026 + _globals["_COOLINGSERVICE"]._serialized_end = 2245 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/license_pb2.py b/pyasic/web/bosminer/proto/bos/v1/license_pb2.py new file mode 100644 index 00000000..f70f9ae1 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/license_pb2.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/license.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x14\x62os/v1/license.proto\x12\x0e\x62raiins.bos.v1\x1a\x12\x62os/v1/units.proto")\n\x0bNoneLicense\x12\x1a\n\x12time_to_restricted\x18\x01 \x01(\r"\x10\n\x0eLimitedLicense"\x9a\x01\n\x0cValidLicense\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.braiins.bos.v1.LicenseType\x12\x15\n\rcontract_name\x18\x02 \x01(\t\x12\x1a\n\x12time_to_restricted\x18\x03 \x01(\r\x12,\n\x07\x64\x65v_fee\x18\x04 \x01(\x0b\x32\x1b.braiins.bos.v1.BasesPoints"\x80\x01\n\x0e\x45xpiredLicense\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.braiins.bos.v1.LicenseType\x12\x15\n\rcontract_name\x18\x02 \x01(\t\x12,\n\x07\x64\x65v_fee\x18\x03 \x01(\x0b\x32\x1b.braiins.bos.v1.BasesPoints"\x18\n\x16GetLicenseStateRequest"\xe4\x01\n\x17GetLicenseStateResponse\x12+\n\x04none\x18\x01 \x01(\x0b\x32\x1b.braiins.bos.v1.NoneLicenseH\x00\x12\x31\n\x07limited\x18\x02 \x01(\x0b\x32\x1e.braiins.bos.v1.LimitedLicenseH\x00\x12-\n\x05valid\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.ValidLicenseH\x00\x12\x31\n\x07\x65xpired\x18\x04 \x01(\x0b\x32\x1e.braiins.bos.v1.ExpiredLicenseH\x00\x42\x07\n\x05state*_\n\x0bLicenseType\x12\x1c\n\x18LICENSE_TYPE_UNSPECIFIED\x10\x00\x12\x19\n\x15LICENSE_TYPE_STANDARD\x10\x01\x12\x17\n\x13LICENSE_TYPE_CUSTOM\x10\x02\x32t\n\x0eLicenseService\x12\x62\n\x0fGetLicenseState\x12&.braiins.bos.v1.GetLicenseStateRequest\x1a\'.braiins.bos.v1.GetLicenseStateResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.license_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_LICENSETYPE"]._serialized_start = 666 + _globals["_LICENSETYPE"]._serialized_end = 761 + _globals["_NONELICENSE"]._serialized_start = 60 + _globals["_NONELICENSE"]._serialized_end = 101 + _globals["_LIMITEDLICENSE"]._serialized_start = 103 + _globals["_LIMITEDLICENSE"]._serialized_end = 119 + _globals["_VALIDLICENSE"]._serialized_start = 122 + _globals["_VALIDLICENSE"]._serialized_end = 276 + _globals["_EXPIREDLICENSE"]._serialized_start = 279 + _globals["_EXPIREDLICENSE"]._serialized_end = 407 + _globals["_GETLICENSESTATEREQUEST"]._serialized_start = 409 + _globals["_GETLICENSESTATEREQUEST"]._serialized_end = 433 + _globals["_GETLICENSESTATERESPONSE"]._serialized_start = 436 + _globals["_GETLICENSESTATERESPONSE"]._serialized_end = 664 + _globals["_LICENSESERVICE"]._serialized_start = 763 + _globals["_LICENSESERVICE"]._serialized_end = 879 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/miner_pb2.py b/pyasic/web/bosminer/proto/bos/v1/miner_pb2.py new file mode 100644 index 00000000..314b07bd --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/miner_pb2.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/miner.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 + +from ...bos.v1 import common_pb2 as bos_dot_v1_dot_common__pb2 +from ...bos.v1 import cooling_pb2 as bos_dot_v1_dot_cooling__pb2 +from ...bos.v1 import pool_pb2 as bos_dot_v1_dot_pool__pb2 +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 +from ...bos.v1 import work_pb2 as bos_dot_v1_dot_work__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x12\x62os/v1/miner.proto\x12\x0e\x62raiins.bos.v1\x1a\x13\x62os/v1/common.proto\x1a\x14\x62os/v1/cooling.proto\x1a\x11\x62os/v1/pool.proto\x1a\x12\x62os/v1/units.proto\x1a\x11\x62os/v1/work.proto\x1a\x1egoogle/protobuf/wrappers.proto"s\n\rMinerIdentity\x12)\n\x05\x62rand\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.MinerBrand\x12)\n\x05model\x18\x02 \x01(\x0e\x32\x1a.braiins.bos.v1.MinerModel\x12\x0c\n\x04name\x18\x03 \x01(\t">\n\nBosVersion\x12\x0f\n\x07\x63urrent\x18\x01 \x01(\t\x12\r\n\x05major\x18\x02 \x01(\t\x12\x10\n\x08\x62os_plus\x18\x03 \x01(\x08"\x17\n\x15GetMinerStatusRequest"E\n\x16GetMinerStatusResponse\x12+\n\x06status\x18\x01 \x01(\x0e\x32\x1b.braiins.bos.v1.MinerStatus"\x18\n\x16GetMinerDetailsRequest"\xdb\x02\n\x17GetMinerDetailsResponse\x12\x0b\n\x03uid\x18\x01 \x01(\t\x12\x35\n\x0eminer_identity\x18\x02 \x01(\x0b\x32\x1d.braiins.bos.v1.MinerIdentity\x12*\n\x08platform\x18\x03 \x01(\x0e\x32\x18.braiins.bos.v1.Platform\x12)\n\x08\x62os_mode\x18\x04 \x01(\x0e\x32\x17.braiins.bos.v1.BosMode\x12/\n\x0b\x62os_version\x18\x05 \x01(\x0b\x32\x1a.braiins.bos.v1.BosVersion\x12\x10\n\x08hostname\x18\x06 \x01(\t\x12\x13\n\x0bmac_address\x18\x07 \x01(\t\x12\x15\n\rsystem_uptime\x18\x08 \x01(\x04\x12\x36\n\x10sticker_hashrate\x18\t \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate"\x7f\n\x0fMinerPowerStats\x12\x37\n\x18\x61pproximated_consumption\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12\x33\n\nefficiency\x18\x02 \x01(\x0b\x32\x1f.braiins.bos.v1.PowerEfficiency"\x16\n\x14GetMinerStatsRequest"\xb2\x01\n\x15GetMinerStatsResponse\x12-\n\npool_stats\x18\x01 \x01(\x0b\x32\x19.braiins.bos.v1.PoolStats\x12\x34\n\x0bminer_stats\x18\x02 \x01(\x0b\x32\x1f.braiins.bos.v1.WorkSolverStats\x12\x34\n\x0bpower_stats\x18\x03 \x01(\x0b\x32\x1f.braiins.bos.v1.MinerPowerStats"\xe2\x02\n\tHashboard\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\x12\x31\n\x0b\x63hips_count\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x30\n\x0f\x63urrent_voltage\x18\x04 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage\x12\x34\n\x11\x63urrent_frequency\x18\x05 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12<\n\x11highest_chip_temp\x18\x06 \x01(\x0b\x32!.braiins.bos.v1.TemperatureSensor\x12/\n\nboard_temp\x18\x07 \x01(\x0b\x32\x1b.braiins.bos.v1.Temperature\x12.\n\x05stats\x18\x08 \x01(\x0b\x32\x1f.braiins.bos.v1.WorkSolverStats"P\n\x18GetSupportArchiveRequest\x12\x34\n\x06\x66ormat\x18\x01 \x01(\x0e\x32$.braiins.bos.v1.SupportArchiveFormat"/\n\x19GetSupportArchiveResponse\x12\x12\n\nchunk_data\x18\x01 \x01(\x0c"\x16\n\x14GetHashboardsRequest"F\n\x15GetHashboardsResponse\x12-\n\nhashboards\x18\x01 \x03(\x0b\x32\x19.braiins.bos.v1.Hashboard"a\n\x17\x45nableHashboardsRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x15\n\rhashboard_ids\x18\x02 \x03(\t"T\n\x18\x45nableHashboardsResponse\x12\x38\n\nhashboards\x18\x01 \x03(\x0b\x32$.braiins.bos.v1.HashboardEnableState"b\n\x18\x44isableHashboardsRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x15\n\rhashboard_ids\x18\x02 \x03(\t"U\n\x19\x44isableHashboardsResponse\x12\x38\n\nhashboards\x18\x01 \x03(\x0b\x32$.braiins.bos.v1.HashboardEnableState"6\n\x14HashboardEnableState\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\nis_enabled\x18\x02 \x01(\x08*\xba\x01\n\x08Platform\x12\x18\n\x14PLATFORM_UNSPECIFIED\x10\x00\x12\x13\n\x0fPLATFORM_AM1_S9\x10\x01\x12\x14\n\x10PLATFORM_AM2_S17\x10\x02\x12\x14\n\x10PLATFORM_AM3_BBB\x10\x03\x12\x14\n\x10PLATFORM_AM3_AML\x10\x04\x12 \n\x1cPLATFORM_STM32MP157C_II1_AM2\x10\x05\x12\x1b\n\x17PLATFORM_CVITEK_BM1_AM2\x10\x06*\x87\x01\n\x07\x42osMode\x12\x18\n\x14\x42OS_MODE_UNSPECIFIED\x10\x00\x12\x14\n\x10\x42OS_MODE_UPGRADE\x10\x01\x12\x15\n\x11\x42OS_MODE_RECOVERY\x10\x02\x12\x0f\n\x0b\x42OS_MODE_SD\x10\x03\x12\x11\n\rBOS_MODE_NAND\x10\x04\x12\x11\n\rBOS_MODE_EMMC\x10\x05*_\n\nMinerBrand\x12\x1b\n\x17MINER_BRAND_UNSPECIFIED\x10\x00\x12\x18\n\x14MINER_BRAND_ANTMINER\x10\x01\x12\x1a\n\x16MINER_BRAND_WHATSMINER\x10\x02*\x89\x05\n\nMinerModel\x12\x1b\n\x17MINER_MODEL_UNSPECIFIED\x10\x00\x12\x1b\n\x17MINER_MODEL_ANTMINER_S9\x10\x01\x12\x1c\n\x18MINER_MODEL_ANTMINER_X17\x10\x02\x12\x1c\n\x18MINER_MODEL_ANTMINER_S17\x10\x03\x12!\n\x1dMINER_MODEL_ANTMINER_S17_PLUS\x10\x04\x12 \n\x1cMINER_MODEL_ANTMINER_S17_PRO\x10\x05\x12\x1d\n\x19MINER_MODEL_ANTMINER_S17E\x10\x06\x12\x1c\n\x18MINER_MODEL_ANTMINER_T17\x10\x07\x12\x1d\n\x19MINER_MODEL_ANTMINER_T17E\x10\x08\x12!\n\x1dMINER_MODEL_ANTMINER_T17_PLUS\x10\t\x12\x1c\n\x18MINER_MODEL_ANTMINER_X19\x10\n\x12\x1c\n\x18MINER_MODEL_ANTMINER_S19\x10\x0b\x12 \n\x1cMINER_MODEL_ANTMINER_S19_PRO\x10\x0c\x12!\n\x1dMINER_MODEL_ANTMINER_S19_PLUS\x10\r\x12\x1d\n\x19MINER_MODEL_ANTMINER_S19J\x10\x0e\x12!\n\x1dMINER_MODEL_ANTMINER_S19J_PRO\x10\x0f\x12\x1d\n\x19MINER_MODEL_ANTMINER_S19A\x10\x10\x12!\n\x1dMINER_MODEL_ANTMINER_S19A_PRO\x10\x11\x12\x1e\n\x1aMINER_MODEL_ANTMINER_S19XP\x10\x12\x12\x1c\n\x18MINER_MODEL_ANTMINER_T19\x10\x13*\xb4\x01\n\x0bMinerStatus\x12\x1c\n\x18MINER_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18MINER_STATUS_NOT_STARTED\x10\x01\x12\x17\n\x13MINER_STATUS_NORMAL\x10\x02\x12\x17\n\x13MINER_STATUS_PAUSED\x10\x03\x12\x1a\n\x16MINER_STATUS_SUSPENDED\x10\x04\x12\x1b\n\x17MINER_STATUS_RESTRICTED\x10\x05*~\n\x14SupportArchiveFormat\x12&\n"SUPPORT_ARCHIVE_FORMAT_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSUPPORT_ARCHIVE_FORMAT_ZIP\x10\x01\x12\x1e\n\x1aSUPPORT_ARCHIVE_FORMAT_BOS\x10\x02\x32\xce\x05\n\x0cMinerService\x12\x61\n\x0eGetMinerStatus\x12%.braiins.bos.v1.GetMinerStatusRequest\x1a&.braiins.bos.v1.GetMinerStatusResponse0\x01\x12\x62\n\x0fGetMinerDetails\x12&.braiins.bos.v1.GetMinerDetailsRequest\x1a\'.braiins.bos.v1.GetMinerDetailsResponse\x12\\\n\rGetMinerStats\x12$.braiins.bos.v1.GetMinerStatsRequest\x1a%.braiins.bos.v1.GetMinerStatsResponse\x12\\\n\rGetHashboards\x12$.braiins.bos.v1.GetHashboardsRequest\x1a%.braiins.bos.v1.GetHashboardsResponse\x12j\n\x11GetSupportArchive\x12(.braiins.bos.v1.GetSupportArchiveRequest\x1a).braiins.bos.v1.GetSupportArchiveResponse0\x01\x12\x65\n\x10\x45nableHashboards\x12\'.braiins.bos.v1.EnableHashboardsRequest\x1a(.braiins.bos.v1.EnableHashboardsResponse\x12h\n\x11\x44isableHashboards\x12(.braiins.bos.v1.DisableHashboardsRequest\x1a).braiins.bos.v1.DisableHashboardsResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.miner_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_PLATFORM"]._serialized_start = 2171 + _globals["_PLATFORM"]._serialized_end = 2357 + _globals["_BOSMODE"]._serialized_start = 2360 + _globals["_BOSMODE"]._serialized_end = 2495 + _globals["_MINERBRAND"]._serialized_start = 2497 + _globals["_MINERBRAND"]._serialized_end = 2592 + _globals["_MINERMODEL"]._serialized_start = 2595 + _globals["_MINERMODEL"]._serialized_end = 3244 + _globals["_MINERSTATUS"]._serialized_start = 3247 + _globals["_MINERSTATUS"]._serialized_end = 3427 + _globals["_SUPPORTARCHIVEFORMAT"]._serialized_start = 3429 + _globals["_SUPPORTARCHIVEFORMAT"]._serialized_end = 3555 + _globals["_MINERIDENTITY"]._serialized_start = 171 + _globals["_MINERIDENTITY"]._serialized_end = 286 + _globals["_BOSVERSION"]._serialized_start = 288 + _globals["_BOSVERSION"]._serialized_end = 350 + _globals["_GETMINERSTATUSREQUEST"]._serialized_start = 352 + _globals["_GETMINERSTATUSREQUEST"]._serialized_end = 375 + _globals["_GETMINERSTATUSRESPONSE"]._serialized_start = 377 + _globals["_GETMINERSTATUSRESPONSE"]._serialized_end = 446 + _globals["_GETMINERDETAILSREQUEST"]._serialized_start = 448 + _globals["_GETMINERDETAILSREQUEST"]._serialized_end = 472 + _globals["_GETMINERDETAILSRESPONSE"]._serialized_start = 475 + _globals["_GETMINERDETAILSRESPONSE"]._serialized_end = 822 + _globals["_MINERPOWERSTATS"]._serialized_start = 824 + _globals["_MINERPOWERSTATS"]._serialized_end = 951 + _globals["_GETMINERSTATSREQUEST"]._serialized_start = 953 + _globals["_GETMINERSTATSREQUEST"]._serialized_end = 975 + _globals["_GETMINERSTATSRESPONSE"]._serialized_start = 978 + _globals["_GETMINERSTATSRESPONSE"]._serialized_end = 1156 + _globals["_HASHBOARD"]._serialized_start = 1159 + _globals["_HASHBOARD"]._serialized_end = 1513 + _globals["_GETSUPPORTARCHIVEREQUEST"]._serialized_start = 1515 + _globals["_GETSUPPORTARCHIVEREQUEST"]._serialized_end = 1595 + _globals["_GETSUPPORTARCHIVERESPONSE"]._serialized_start = 1597 + _globals["_GETSUPPORTARCHIVERESPONSE"]._serialized_end = 1644 + _globals["_GETHASHBOARDSREQUEST"]._serialized_start = 1646 + _globals["_GETHASHBOARDSREQUEST"]._serialized_end = 1668 + _globals["_GETHASHBOARDSRESPONSE"]._serialized_start = 1670 + _globals["_GETHASHBOARDSRESPONSE"]._serialized_end = 1740 + _globals["_ENABLEHASHBOARDSREQUEST"]._serialized_start = 1742 + _globals["_ENABLEHASHBOARDSREQUEST"]._serialized_end = 1839 + _globals["_ENABLEHASHBOARDSRESPONSE"]._serialized_start = 1841 + _globals["_ENABLEHASHBOARDSRESPONSE"]._serialized_end = 1925 + _globals["_DISABLEHASHBOARDSREQUEST"]._serialized_start = 1927 + _globals["_DISABLEHASHBOARDSREQUEST"]._serialized_end = 2025 + _globals["_DISABLEHASHBOARDSRESPONSE"]._serialized_start = 2027 + _globals["_DISABLEHASHBOARDSRESPONSE"]._serialized_end = 2112 + _globals["_HASHBOARDENABLESTATE"]._serialized_start = 2114 + _globals["_HASHBOARDENABLESTATE"]._serialized_end = 2168 + _globals["_MINERSERVICE"]._serialized_start = 3558 + _globals["_MINERSERVICE"]._serialized_end = 4276 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/performance_pb2.py b/pyasic/web/bosminer/proto/bos/v1/performance_pb2.py new file mode 100644 index 00000000..02fbc0cd --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/performance_pb2.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/performance.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +from ...bos.v1 import common_pb2 as bos_dot_v1_dot_common__pb2 +from ...bos.v1 import constraints_pb2 as bos_dot_v1_dot_constraints__pb2 +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x18\x62os/v1/performance.proto\x12\x0e\x62raiins.bos.v1\x1a\x13\x62os/v1/common.proto\x1a\x18\x62os/v1/constraints.proto\x1a\x12\x62os/v1/units.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xdd\x01\n\x12TunerConfiguration\x12\x14\n\x07\x65nabled\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x32\n\ntuner_mode\x18\x02 \x01(\x0e\x32\x19.braiins.bos.v1.TunerModeH\x01\x88\x01\x01\x12+\n\x0cpower_target\x18\x03 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12\x35\n\x0fhashrate_target\x18\x04 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrateB\n\n\x08_enabledB\r\n\x0b_tuner_mode"\x88\x01\n\x10TunerConstraints\x12\x36\n\x0cpower_target\x18\x01 \x01(\x0b\x32 .braiins.bos.v1.PowerConstraints\x12<\n\x0fhashrate_target\x18\x02 \x01(\x0b\x32#.braiins.bos.v1.HashrateConstraints"\xe6\x02\n\x10\x44PSConfiguration\x12\x14\n\x07\x65nabled\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12)\n\npower_step\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12\x33\n\rhashrate_step\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12/\n\x10min_power_target\x18\x04 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12\x39\n\x13min_hashrate_target\x18\x05 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12\x1d\n\x10shutdown_enabled\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x30\n\x11shutdown_duration\x18\x07 \x01(\x0b\x32\x15.braiins.bos.v1.HoursB\n\n\x08_enabledB\x13\n\x11_shutdown_enabled"\xbe\x01\n!HashboardPerformanceConfiguration\x12\x33\n\x10global_frequency\x18\x01 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12/\n\x0eglobal_voltage\x18\x02 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage\x12\x33\n\nhashboards\x18\x03 \x03(\x0b\x32\x1f.braiins.bos.v1.HashboardConfig"\xfd\x02\n\x0e\x44PSConstraints\x12\x34\n\npower_step\x18\x01 \x01(\x0b\x32 .braiins.bos.v1.PowerConstraints\x12:\n\rhashrate_step\x18\x02 \x01(\x0b\x32#.braiins.bos.v1.HashrateConstraints\x12:\n\x10min_power_target\x18\x03 \x01(\x0b\x32 .braiins.bos.v1.PowerConstraints\x12@\n\x13min_hashrate_target\x18\x04 \x01(\x0b\x32#.braiins.bos.v1.HashrateConstraints\x12;\n\x10shutdown_enabled\x18\x05 \x01(\x0b\x32!.braiins.bos.v1.BooleanConstraint\x12>\n\x11shutdown_duration\x18\x06 \x01(\x0b\x32#.braiins.bos.v1.DurationConstraints"\xcf\x01\n\x14HashboardConstraints\x12\x15\n\rhashboard_ids\x18\x01 \x03(\t\x12\x32\n\x07\x65nabled\x18\x02 \x01(\x0b\x32!.braiins.bos.v1.BooleanConstraint\x12\x37\n\tfrequency\x18\x03 \x01(\x0b\x32$.braiins.bos.v1.FrequencyConstraints\x12\x33\n\x07voltage\x18\x04 \x01(\x0b\x32".braiins.bos.v1.VoltageConstraints"\xdd\x01\n\x12PowerTargetProfile\x12+\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12%\n\x06target\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12\x37\n\x11measured_hashrate\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12:\n\x1b\x65stimated_power_consumption\x18\x04 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\xe7\x01\n\x15HashrateTargetProfile\x12+\n\x07\x63reated\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x06target\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12\x37\n\x11measured_hashrate\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12:\n\x1b\x65stimated_power_consumption\x18\x04 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x16\n\x14GetTunerStateRequest"\xf6\x01\n\x15GetTunerStateResponse\x12\x37\n\x13overall_tuner_state\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.TunerState\x12G\n\x17power_target_mode_state\x18\x02 \x01(\x0b\x32$.braiins.bos.v1.PowerTargetModeStateH\x00\x12M\n\x1ahashrate_target_mode_state\x18\x03 \x01(\x0b\x32\'.braiins.bos.v1.HashrateTargetModeStateH\x00\x42\x0c\n\nmode_state"z\n\x14PowerTargetModeState\x12\x33\n\x07profile\x18\x01 \x01(\x0b\x32".braiins.bos.v1.PowerTargetProfile\x12-\n\x0e\x63urrent_target\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x87\x01\n\x17HashrateTargetModeState\x12\x36\n\x07profile\x18\x01 \x01(\x0b\x32%.braiins.bos.v1.HashrateTargetProfile\x12\x34\n\x0e\x63urrent_target\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x1b\n\x19ListTargetProfilesRequest"\xa8\x01\n\x1aListTargetProfilesResponse\x12\x41\n\x15power_target_profiles\x18\x01 \x03(\x0b\x32".braiins.bos.v1.PowerTargetProfile\x12G\n\x18hashrate_target_profiles\x18\x02 \x03(\x0b\x32%.braiins.bos.v1.HashrateTargetProfile"O\n\x1cSetDefaultPowerTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction"u\n\x15SetPowerTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12+\n\x0cpower_target\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x85\x01\n\x1bIncrementPowerTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x35\n\x16power_target_increment\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x85\x01\n\x1b\x44\x65\x63rementPowerTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x35\n\x16power_target_decrement\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power"E\n\x16SetPowerTargetResponse\x12+\n\x0cpower_target\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Power"R\n\x1fSetDefaultHashrateTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction"\x82\x01\n\x18SetHashrateTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x35\n\x0fhashrate_target\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x92\x01\n\x1eIncrementHashrateTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12?\n\x19hashrate_target_increment\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x92\x01\n\x1e\x44\x65\x63rementHashrateTargetRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12?\n\x19hashrate_target_decrement\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"R\n\x19SetHashrateTargetResponse\x12\x35\n\x0fhashrate_target\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"l\n\x0e\x44PSPowerTarget\x12)\n\npower_step\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Power\x12/\n\x10min_power_target\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.Power"\x83\x01\n\x11\x44PSHashrateTarget\x12\x33\n\rhashrate_step\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate\x12\x39\n\x13min_hashrate_target\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x8b\x01\n\tDPSTarget\x12\x36\n\x0cpower_target\x18\x01 \x01(\x0b\x32\x1e.braiins.bos.v1.DPSPowerTargetH\x00\x12<\n\x0fhashrate_target\x18\x02 \x01(\x0b\x32!.braiins.bos.v1.DPSHashrateTargetH\x00\x42\x08\n\x06target"\x8a\x02\n\rSetDPSRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x13\n\x06\x65nable\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1c\n\x0f\x65nable_shutdown\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x35\n\x11shutdown_duration\x18\x04 \x01(\x0b\x32\x15.braiins.bos.v1.HoursH\x02\x88\x01\x01\x12)\n\x06target\x18\x05 \x01(\x0b\x32\x19.braiins.bos.v1.DPSTargetB\t\n\x07_enableB\x12\n\x10_enable_shutdownB\x14\n\x12_shutdown_duration"\xa5\x02\n\x0eSetDPSResponse\x12\x14\n\x07\x65nabled\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x1d\n\x10shutdown_enabled\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x35\n\x11shutdown_duration\x18\x03 \x01(\x0b\x32\x15.braiins.bos.v1.HoursH\x02\x88\x01\x01\x12\x34\n\x0cpower_target\x18\x04 \x01(\x0b\x32\x1e.braiins.bos.v1.DPSPowerTarget\x12:\n\x0fhashrate_target\x18\x05 \x01(\x0b\x32!.braiins.bos.v1.DPSHashrateTargetB\n\n\x08_enabledB\x13\n\x11_shutdown_enabledB\x14\n\x12_shutdown_duration"\x82\x01\n\x1cHashboardPerformanceSettings\x12\n\n\x02id\x18\x01 \x01(\t\x12,\n\tfrequency\x18\x02 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12(\n\x07voltage\x18\x03 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage"\x97\x01\n\x0fHashboardConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x07\x65nabled\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12,\n\tfrequency\x18\x03 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12(\n\x07voltage\x18\x04 \x01(\x0b\x32\x17.braiins.bos.v1.VoltageB\n\n\x08_enabled"\xbf\x01\n\x15ManualPerformanceMode\x12\x33\n\x10global_frequency\x18\x01 \x01(\x0b\x32\x19.braiins.bos.v1.Frequency\x12/\n\x0eglobal_voltage\x18\x02 \x01(\x0b\x32\x17.braiins.bos.v1.Voltage\x12@\n\nhashboards\x18\x03 \x03(\x0b\x32,.braiins.bos.v1.HashboardPerformanceSettings">\n\x0fPowerTargetMode\x12+\n\x0cpower_target\x18\x01 \x01(\x0b\x32\x15.braiins.bos.v1.Power"K\n\x12HashrateTargetMode\x12\x35\n\x0fhashrate_target\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.TeraHashrate"\x98\x01\n\x14TunerPerformanceMode\x12\x37\n\x0cpower_target\x18\x01 \x01(\x0b\x32\x1f.braiins.bos.v1.PowerTargetModeH\x00\x12=\n\x0fhashrate_target\x18\x02 \x01(\x0b\x32".braiins.bos.v1.HashrateTargetModeH\x00\x42\x08\n\x06target"{\n\x19SetPerformanceModeRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12-\n\x04mode\x18\x02 \x01(\x0b\x32\x1f.braiins.bos.v1.PerformanceMode"\x93\x01\n\x0fPerformanceMode\x12<\n\x0bmanual_mode\x18\x01 \x01(\x0b\x32%.braiins.bos.v1.ManualPerformanceModeH\x00\x12:\n\ntuner_mode\x18\x02 \x01(\x0b\x32$.braiins.bos.v1.TunerPerformanceModeH\x00\x42\x06\n\x04mode"\x1b\n\x19GetPerformanceModeRequest*d\n\tTunerMode\x12\x1a\n\x16TUNER_MODE_UNSPECIFIED\x10\x00\x12\x1b\n\x17TUNER_MODE_POWER_TARGET\x10\x01\x12\x1e\n\x1aTUNER_MODE_HASHRATE_TARGET\x10\x02*\x8a\x01\n\nTunerState\x12\x1b\n\x17TUNER_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14TUNER_STATE_DISABLED\x10\x01\x12\x16\n\x12TUNER_STATE_STABLE\x10\x02\x12\x16\n\x12TUNER_STATE_TUNING\x10\x03\x12\x15\n\x11TUNER_STATE_ERROR\x10\x04\x32\xea\n\n\x12PerformanceService\x12\\\n\rGetTunerState\x12$.braiins.bos.v1.GetTunerStateRequest\x1a%.braiins.bos.v1.GetTunerStateResponse\x12k\n\x12ListTargetProfiles\x12).braiins.bos.v1.ListTargetProfilesRequest\x1a*.braiins.bos.v1.ListTargetProfilesResponse\x12m\n\x15SetDefaultPowerTarget\x12,.braiins.bos.v1.SetDefaultPowerTargetRequest\x1a&.braiins.bos.v1.SetPowerTargetResponse\x12_\n\x0eSetPowerTarget\x12%.braiins.bos.v1.SetPowerTargetRequest\x1a&.braiins.bos.v1.SetPowerTargetResponse\x12k\n\x14IncrementPowerTarget\x12+.braiins.bos.v1.IncrementPowerTargetRequest\x1a&.braiins.bos.v1.SetPowerTargetResponse\x12k\n\x14\x44\x65\x63rementPowerTarget\x12+.braiins.bos.v1.DecrementPowerTargetRequest\x1a&.braiins.bos.v1.SetPowerTargetResponse\x12v\n\x18SetDefaultHashrateTarget\x12/.braiins.bos.v1.SetDefaultHashrateTargetRequest\x1a).braiins.bos.v1.SetHashrateTargetResponse\x12h\n\x11SetHashrateTarget\x12(.braiins.bos.v1.SetHashrateTargetRequest\x1a).braiins.bos.v1.SetHashrateTargetResponse\x12t\n\x17IncrementHashrateTarget\x12..braiins.bos.v1.IncrementHashrateTargetRequest\x1a).braiins.bos.v1.SetHashrateTargetResponse\x12t\n\x17\x44\x65\x63rementHashrateTarget\x12..braiins.bos.v1.DecrementHashrateTargetRequest\x1a).braiins.bos.v1.SetHashrateTargetResponse\x12G\n\x06SetDPS\x12\x1d.braiins.bos.v1.SetDPSRequest\x1a\x1e.braiins.bos.v1.SetDPSResponse\x12`\n\x12SetPerformanceMode\x12).braiins.bos.v1.SetPerformanceModeRequest\x1a\x1f.braiins.bos.v1.PerformanceMode\x12\x66\n\x18GetActivePerformanceMode\x12).braiins.bos.v1.GetPerformanceModeRequest\x1a\x1f.braiins.bos.v1.PerformanceModeb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.performance_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_TUNERMODE"]._serialized_start = 6022 + _globals["_TUNERMODE"]._serialized_end = 6122 + _globals["_TUNERSTATE"]._serialized_start = 6125 + _globals["_TUNERSTATE"]._serialized_end = 6263 + _globals["_TUNERCONFIGURATION"]._serialized_start = 145 + _globals["_TUNERCONFIGURATION"]._serialized_end = 366 + _globals["_TUNERCONSTRAINTS"]._serialized_start = 369 + _globals["_TUNERCONSTRAINTS"]._serialized_end = 505 + _globals["_DPSCONFIGURATION"]._serialized_start = 508 + _globals["_DPSCONFIGURATION"]._serialized_end = 866 + _globals["_HASHBOARDPERFORMANCECONFIGURATION"]._serialized_start = 869 + _globals["_HASHBOARDPERFORMANCECONFIGURATION"]._serialized_end = 1059 + _globals["_DPSCONSTRAINTS"]._serialized_start = 1062 + _globals["_DPSCONSTRAINTS"]._serialized_end = 1443 + _globals["_HASHBOARDCONSTRAINTS"]._serialized_start = 1446 + _globals["_HASHBOARDCONSTRAINTS"]._serialized_end = 1653 + _globals["_POWERTARGETPROFILE"]._serialized_start = 1656 + _globals["_POWERTARGETPROFILE"]._serialized_end = 1877 + _globals["_HASHRATETARGETPROFILE"]._serialized_start = 1880 + _globals["_HASHRATETARGETPROFILE"]._serialized_end = 2111 + _globals["_GETTUNERSTATEREQUEST"]._serialized_start = 2113 + _globals["_GETTUNERSTATEREQUEST"]._serialized_end = 2135 + _globals["_GETTUNERSTATERESPONSE"]._serialized_start = 2138 + _globals["_GETTUNERSTATERESPONSE"]._serialized_end = 2384 + _globals["_POWERTARGETMODESTATE"]._serialized_start = 2386 + _globals["_POWERTARGETMODESTATE"]._serialized_end = 2508 + _globals["_HASHRATETARGETMODESTATE"]._serialized_start = 2511 + _globals["_HASHRATETARGETMODESTATE"]._serialized_end = 2646 + _globals["_LISTTARGETPROFILESREQUEST"]._serialized_start = 2648 + _globals["_LISTTARGETPROFILESREQUEST"]._serialized_end = 2675 + _globals["_LISTTARGETPROFILESRESPONSE"]._serialized_start = 2678 + _globals["_LISTTARGETPROFILESRESPONSE"]._serialized_end = 2846 + _globals["_SETDEFAULTPOWERTARGETREQUEST"]._serialized_start = 2848 + _globals["_SETDEFAULTPOWERTARGETREQUEST"]._serialized_end = 2927 + _globals["_SETPOWERTARGETREQUEST"]._serialized_start = 2929 + _globals["_SETPOWERTARGETREQUEST"]._serialized_end = 3046 + _globals["_INCREMENTPOWERTARGETREQUEST"]._serialized_start = 3049 + _globals["_INCREMENTPOWERTARGETREQUEST"]._serialized_end = 3182 + _globals["_DECREMENTPOWERTARGETREQUEST"]._serialized_start = 3185 + _globals["_DECREMENTPOWERTARGETREQUEST"]._serialized_end = 3318 + _globals["_SETPOWERTARGETRESPONSE"]._serialized_start = 3320 + _globals["_SETPOWERTARGETRESPONSE"]._serialized_end = 3389 + _globals["_SETDEFAULTHASHRATETARGETREQUEST"]._serialized_start = 3391 + _globals["_SETDEFAULTHASHRATETARGETREQUEST"]._serialized_end = 3473 + _globals["_SETHASHRATETARGETREQUEST"]._serialized_start = 3476 + _globals["_SETHASHRATETARGETREQUEST"]._serialized_end = 3606 + _globals["_INCREMENTHASHRATETARGETREQUEST"]._serialized_start = 3609 + _globals["_INCREMENTHASHRATETARGETREQUEST"]._serialized_end = 3755 + _globals["_DECREMENTHASHRATETARGETREQUEST"]._serialized_start = 3758 + _globals["_DECREMENTHASHRATETARGETREQUEST"]._serialized_end = 3904 + _globals["_SETHASHRATETARGETRESPONSE"]._serialized_start = 3906 + _globals["_SETHASHRATETARGETRESPONSE"]._serialized_end = 3988 + _globals["_DPSPOWERTARGET"]._serialized_start = 3990 + _globals["_DPSPOWERTARGET"]._serialized_end = 4098 + _globals["_DPSHASHRATETARGET"]._serialized_start = 4101 + _globals["_DPSHASHRATETARGET"]._serialized_end = 4232 + _globals["_DPSTARGET"]._serialized_start = 4235 + _globals["_DPSTARGET"]._serialized_end = 4374 + _globals["_SETDPSREQUEST"]._serialized_start = 4377 + _globals["_SETDPSREQUEST"]._serialized_end = 4643 + _globals["_SETDPSRESPONSE"]._serialized_start = 4646 + _globals["_SETDPSRESPONSE"]._serialized_end = 4939 + _globals["_HASHBOARDPERFORMANCESETTINGS"]._serialized_start = 4942 + _globals["_HASHBOARDPERFORMANCESETTINGS"]._serialized_end = 5072 + _globals["_HASHBOARDCONFIG"]._serialized_start = 5075 + _globals["_HASHBOARDCONFIG"]._serialized_end = 5226 + _globals["_MANUALPERFORMANCEMODE"]._serialized_start = 5229 + _globals["_MANUALPERFORMANCEMODE"]._serialized_end = 5420 + _globals["_POWERTARGETMODE"]._serialized_start = 5422 + _globals["_POWERTARGETMODE"]._serialized_end = 5484 + _globals["_HASHRATETARGETMODE"]._serialized_start = 5486 + _globals["_HASHRATETARGETMODE"]._serialized_end = 5561 + _globals["_TUNERPERFORMANCEMODE"]._serialized_start = 5564 + _globals["_TUNERPERFORMANCEMODE"]._serialized_end = 5716 + _globals["_SETPERFORMANCEMODEREQUEST"]._serialized_start = 5718 + _globals["_SETPERFORMANCEMODEREQUEST"]._serialized_end = 5841 + _globals["_PERFORMANCEMODE"]._serialized_start = 5844 + _globals["_PERFORMANCEMODE"]._serialized_end = 5991 + _globals["_GETPERFORMANCEMODEREQUEST"]._serialized_start = 5993 + _globals["_GETPERFORMANCEMODEREQUEST"]._serialized_end = 6020 + _globals["_PERFORMANCESERVICE"]._serialized_start = 6266 + _globals["_PERFORMANCESERVICE"]._serialized_end = 7652 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/pool_pb2.py b/pyasic/web/bosminer/proto/bos/v1/pool_pb2.py new file mode 100644 index 00000000..55913f07 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/pool_pb2.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------------------------ +# 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. - +# ------------------------------------------------------------------------------ + +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/pool.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import common_pb2 as bos_dot_v1_dot_common__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x11\x62os/v1/pool.proto\x12\x0e\x62raiins.bos.v1\x1a\x13\x62os/v1/common.proto"\x16\n\x05Quota\x12\r\n\x05value\x18\x01 \x01(\r" \n\x0f\x46ixedShareRatio\x12\r\n\x05value\x18\x01 \x01(\x01"\xe4\x01\n\x16PoolGroupConfiguration\x12\x0b\n\x03uid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12&\n\x05quota\x18\x03 \x01(\x0b\x32\x15.braiins.bos.v1.QuotaH\x00\x12<\n\x11\x66ixed_share_ratio\x18\x04 \x01(\x0b\x32\x1f.braiins.bos.v1.FixedShareRatioH\x00\x12\x30\n\x05pools\x18\x05 \x03(\x0b\x32!.braiins.bos.v1.PoolConfigurationB\x17\n\x15load_balance_strategy"\x81\x01\n\x11PoolConfiguration\x12\x0b\n\x03uid\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0c\n\x04user\x18\x03 \x01(\t\x12\x15\n\x08password\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07\x65nabled\x18\x05 \x01(\x08H\x01\x88\x01\x01\x42\x0b\n\t_passwordB\n\n\x08_enabled"\xb0\x01\n\tPoolGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x05quota\x18\x02 \x01(\x0b\x32\x15.braiins.bos.v1.QuotaH\x00\x12<\n\x11\x66ixed_share_ratio\x18\x03 \x01(\x0b\x32\x1f.braiins.bos.v1.FixedShareRatioH\x00\x12#\n\x05pools\x18\x04 \x03(\x0b\x32\x14.braiins.bos.v1.PoolB\n\n\x08strategy"\x88\x01\n\x04Pool\x12\x0b\n\x03uid\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x0c\n\x04user\x18\x03 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x04 \x01(\x08\x12\r\n\x05\x61live\x18\x05 \x01(\x08\x12\x0e\n\x06\x61\x63tive\x18\x06 \x01(\x08\x12(\n\x05stats\x18\x07 \x01(\x0b\x32\x19.braiins.bos.v1.PoolStats"\x98\x01\n\tPoolStats\x12\x17\n\x0f\x61\x63\x63\x65pted_shares\x18\x01 \x01(\x04\x12\x17\n\x0frejected_shares\x18\x02 \x01(\x04\x12\x14\n\x0cstale_shares\x18\x03 \x01(\x04\x12\x17\n\x0flast_difficulty\x18\x04 \x01(\x04\x12\x12\n\nbest_share\x18\x05 \x01(\x04\x12\x16\n\x0egenerated_work\x18\x06 \x01(\x04"\x16\n\x14GetPoolGroupsRequest"G\n\x15GetPoolGroupsResponse\x12.\n\x0bpool_groups\x18\x01 \x03(\x0b\x32\x19.braiins.bos.v1.PoolGroup"\x80\x01\n\x16\x43reatePoolGroupRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x35\n\x05group\x18\x02 \x01(\x0b\x32&.braiins.bos.v1.PoolGroupConfiguration"P\n\x17\x43reatePoolGroupResponse\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32&.braiins.bos.v1.PoolGroupConfiguration"\x80\x01\n\x16UpdatePoolGroupRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x35\n\x05group\x18\x02 \x01(\x0b\x32&.braiins.bos.v1.PoolGroupConfiguration"P\n\x17UpdatePoolGroupResponse\x12\x35\n\x05group\x18\x01 \x01(\x0b\x32&.braiins.bos.v1.PoolGroupConfiguration"V\n\x16RemovePoolGroupRequest\x12/\n\x0bsave_action\x18\x01 \x01(\x0e\x32\x1a.braiins.bos.v1.SaveAction\x12\x0b\n\x03uid\x18\x02 \x01(\t"\x19\n\x17RemovePoolGroupResponse2\x97\x03\n\x0bPoolService\x12\\\n\rGetPoolGroups\x12$.braiins.bos.v1.GetPoolGroupsRequest\x1a%.braiins.bos.v1.GetPoolGroupsResponse\x12\x62\n\x0f\x43reatePoolGroup\x12&.braiins.bos.v1.CreatePoolGroupRequest\x1a\'.braiins.bos.v1.CreatePoolGroupResponse\x12\x62\n\x0fUpdatePoolGroup\x12&.braiins.bos.v1.UpdatePoolGroupRequest\x1a\'.braiins.bos.v1.UpdatePoolGroupResponse\x12\x62\n\x0fRemovePoolGroup\x12&.braiins.bos.v1.RemovePoolGroupRequest\x1a\'.braiins.bos.v1.RemovePoolGroupResponseb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.pool_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_QUOTA"]._serialized_start = 58 + _globals["_QUOTA"]._serialized_end = 80 + _globals["_FIXEDSHARERATIO"]._serialized_start = 82 + _globals["_FIXEDSHARERATIO"]._serialized_end = 114 + _globals["_POOLGROUPCONFIGURATION"]._serialized_start = 117 + _globals["_POOLGROUPCONFIGURATION"]._serialized_end = 345 + _globals["_POOLCONFIGURATION"]._serialized_start = 348 + _globals["_POOLCONFIGURATION"]._serialized_end = 477 + _globals["_POOLGROUP"]._serialized_start = 480 + _globals["_POOLGROUP"]._serialized_end = 656 + _globals["_POOL"]._serialized_start = 659 + _globals["_POOL"]._serialized_end = 795 + _globals["_POOLSTATS"]._serialized_start = 798 + _globals["_POOLSTATS"]._serialized_end = 950 + _globals["_GETPOOLGROUPSREQUEST"]._serialized_start = 952 + _globals["_GETPOOLGROUPSREQUEST"]._serialized_end = 974 + _globals["_GETPOOLGROUPSRESPONSE"]._serialized_start = 976 + _globals["_GETPOOLGROUPSRESPONSE"]._serialized_end = 1047 + _globals["_CREATEPOOLGROUPREQUEST"]._serialized_start = 1050 + _globals["_CREATEPOOLGROUPREQUEST"]._serialized_end = 1178 + _globals["_CREATEPOOLGROUPRESPONSE"]._serialized_start = 1180 + _globals["_CREATEPOOLGROUPRESPONSE"]._serialized_end = 1260 + _globals["_UPDATEPOOLGROUPREQUEST"]._serialized_start = 1263 + _globals["_UPDATEPOOLGROUPREQUEST"]._serialized_end = 1391 + _globals["_UPDATEPOOLGROUPRESPONSE"]._serialized_start = 1393 + _globals["_UPDATEPOOLGROUPRESPONSE"]._serialized_end = 1473 + _globals["_REMOVEPOOLGROUPREQUEST"]._serialized_start = 1475 + _globals["_REMOVEPOOLGROUPREQUEST"]._serialized_end = 1561 + _globals["_REMOVEPOOLGROUPRESPONSE"]._serialized_start = 1563 + _globals["_REMOVEPOOLGROUPRESPONSE"]._serialized_end = 1588 + _globals["_POOLSERVICE"]._serialized_start = 1591 + _globals["_POOLSERVICE"]._serialized_end = 1998 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/units_pb2.py b/pyasic/web/bosminer/proto/bos/v1/units_pb2.py new file mode 100644 index 00000000..5ba78648 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/units_pb2.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------------------------ +# 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. - +# ------------------------------------------------------------------------------ + +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/units.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x12\x62os/v1/units.proto\x12\x0e\x62raiins.bos.v1"+\n\x0cMegaHashrate\x12\x1b\n\x13megahash_per_second\x18\x01 \x01(\x01"+\n\x0cGigaHashrate\x12\x1b\n\x13gigahash_per_second\x18\x01 \x01(\x01"+\n\x0cTeraHashrate\x12\x1b\n\x13terahash_per_second\x18\x01 \x01(\x01"\x1a\n\tFrequency\x12\r\n\x05hertz\x18\x01 \x01(\x01"\x17\n\x07Voltage\x12\x0c\n\x04volt\x18\x01 \x01(\x01"\x15\n\x05Power\x12\x0c\n\x04watt\x18\x01 \x01(\x04"-\n\x0fPowerEfficiency\x12\x1a\n\x12joule_per_terahash\x18\x01 \x01(\x01"\x1f\n\x0bTemperature\x12\x10\n\x08\x64\x65gree_c\x18\x01 \x01(\x01"\x1a\n\x0b\x42\x61sesPoints\x12\x0b\n\x03\x62sp\x18\x01 \x01(\r"\x16\n\x05Hours\x12\r\n\x05hours\x18\x01 \x01(\rb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.units_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_MEGAHASHRATE"]._serialized_start = 38 + _globals["_MEGAHASHRATE"]._serialized_end = 81 + _globals["_GIGAHASHRATE"]._serialized_start = 83 + _globals["_GIGAHASHRATE"]._serialized_end = 126 + _globals["_TERAHASHRATE"]._serialized_start = 128 + _globals["_TERAHASHRATE"]._serialized_end = 171 + _globals["_FREQUENCY"]._serialized_start = 173 + _globals["_FREQUENCY"]._serialized_end = 199 + _globals["_VOLTAGE"]._serialized_start = 201 + _globals["_VOLTAGE"]._serialized_end = 224 + _globals["_POWER"]._serialized_start = 226 + _globals["_POWER"]._serialized_end = 247 + _globals["_POWEREFFICIENCY"]._serialized_start = 249 + _globals["_POWEREFFICIENCY"]._serialized_end = 294 + _globals["_TEMPERATURE"]._serialized_start = 296 + _globals["_TEMPERATURE"]._serialized_end = 327 + _globals["_BASESPOINTS"]._serialized_start = 329 + _globals["_BASESPOINTS"]._serialized_end = 355 + _globals["_HOURS"]._serialized_start = 357 + _globals["_HOURS"]._serialized_end = 379 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/v1/work_pb2.py b/pyasic/web/bosminer/proto/bos/v1/work_pb2.py new file mode 100644 index 00000000..9bff6586 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/v1/work_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------------------------ +# 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. - +# ------------------------------------------------------------------------------ + +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/v1/work.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from ...bos.v1 import units_pb2 as bos_dot_v1_dot_units__pb2 + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x11\x62os/v1/work.proto\x12\x0e\x62raiins.bos.v1\x1a\x12\x62os/v1/units.proto"\xef\x03\n\x0cRealHashrate\x12-\n\x07last_5s\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12.\n\x08last_15s\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12.\n\x08last_30s\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12-\n\x07last_1m\x18\x04 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12-\n\x07last_5m\x18\x05 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12.\n\x08last_15m\x18\x06 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12.\n\x08last_30m\x18\x07 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12-\n\x07last_1h\x18\x08 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12.\n\x08last_24h\x18\t \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12\x33\n\rsince_restart\x18\n \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate"\xde\x01\n\x0fWorkSolverStats\x12\x33\n\rreal_hashrate\x18\x01 \x01(\x0b\x32\x1c.braiins.bos.v1.RealHashrate\x12\x36\n\x10nominal_hashrate\x18\x02 \x01(\x0b\x32\x1c.braiins.bos.v1.GigaHashrate\x12\x34\n\x0e\x65rror_hashrate\x18\x03 \x01(\x0b\x32\x1c.braiins.bos.v1.MegaHashrate\x12\x14\n\x0c\x66ound_blocks\x18\x04 \x01(\r\x12\x12\n\nbest_share\x18\x05 \x01(\x04\x62\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.v1.work_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_REALHASHRATE"]._serialized_start = 58 + _globals["_REALHASHRATE"]._serialized_end = 553 + _globals["_WORKSOLVERSTATS"]._serialized_start = 556 + _globals["_WORKSOLVERSTATS"]._serialized_end = 778 +# @@protoc_insertion_point(module_scope) diff --git a/pyasic/web/bosminer/proto/bos/version_pb2.py b/pyasic/web/bosminer/proto/bos/version_pb2.py new file mode 100644 index 00000000..aed5ad35 --- /dev/null +++ b/pyasic/web/bosminer/proto/bos/version_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- + +# ------------------------------------------------------------------------------ +# 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. - +# ------------------------------------------------------------------------------ + +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: bos/version.proto +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n\x11\x62os/version.proto\x12\x0b\x62raiins.bos"U\n\nApiVersion\x12\r\n\x05major\x18\x01 \x01(\x04\x12\r\n\x05minor\x18\x02 \x01(\x04\x12\r\n\x05patch\x18\x03 \x01(\x04\x12\x0b\n\x03pre\x18\x04 \x01(\t\x12\r\n\x05\x62uild\x18\x05 \x01(\t"\x13\n\x11\x41piVersionRequest2]\n\x11\x41piVersionService\x12H\n\rGetApiVersion\x12\x1e.braiins.bos.ApiVersionRequest\x1a\x17.braiins.bos.ApiVersionb\x06proto3' +) + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "bos.version_pb2", _globals) +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + _globals["_APIVERSION"]._serialized_start = 34 + _globals["_APIVERSION"]._serialized_end = 119 + _globals["_APIVERSIONREQUEST"]._serialized_start = 121 + _globals["_APIVERSIONREQUEST"]._serialized_end = 140 + _globals["_APIVERSIONSERVICE"]._serialized_start = 142 + _globals["_APIVERSIONSERVICE"]._serialized_end = 235 +# @@protoc_insertion_point(module_scope) diff --git a/pyproject.toml b/pyproject.toml index 22ca9682..deeed047 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyasic" -version = "0.39.4" +version = "0.40.0" description = "A set of modules for interfacing with many common types of ASIC bitcoin miners, using both their API and SSH." authors = ["UpstreamData "] repository = "https://github.com/UpstreamData/pyasic" @@ -14,6 +14,7 @@ httpx = "^0.24.0" passlib = "^1.7.4" pyaml = "^23.5.9" toml = "^0.10.2" +grpc-requests = "^0.1.11" [tool.poetry.group.dev] optional = true