Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion src/viam/components/arm/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from grpclib.client import Channel

from viam.components import KinematicsReturn
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetKinematicsRequest, GetKinematicsResponse
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetKinematicsRequest, GetKinematicsResponse, GetStatusRequest, GetStatusResponse
from viam.proto.component.arm import (
ArmServiceStub,
GetEndPositionRequest,
Expand Down Expand Up @@ -112,6 +112,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_kinematics(
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
) -> KinematicsReturn:
Expand Down
11 changes: 11 additions & 0 deletions src/viam/components/arm/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
GetGeometriesResponse,
GetKinematicsRequest,
GetKinematicsResponse,
GetStatusRequest,
GetStatusResponse,
)
from viam.proto.component.arm import (
GetEndPositionRequest,
Expand Down Expand Up @@ -104,6 +106,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
arm = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await arm.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetKinematics(self, stream: Stream[GetKinematicsRequest, GetKinematicsResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
13 changes: 12 additions & 1 deletion src/viam/components/audio_in/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from grpclib.client import Channel
from grpclib.client import Stream as ClientStream

from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest, GetStatusRequest, GetStatusResponse
from viam.proto.component.audioin import AudioInServiceStub, GetAudioRequest, GetAudioResponse
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
from viam.streams import StreamWithIterator
Expand Down Expand Up @@ -71,6 +71,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get("metadata", self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
11 changes: 11 additions & 0 deletions src/viam/components/audio_in/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
GetGeometriesResponse,
GetPropertiesRequest,
GetPropertiesResponse,
GetStatusRequest,
GetStatusResponse,
)
from viam.proto.component.audioin import AudioInServiceBase, GetAudioRequest, GetAudioResponse
from viam.resource.rpc_service_base import ResourceRPCServiceBase
Expand Down Expand Up @@ -73,6 +75,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
audio_in = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await audio_in.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
13 changes: 12 additions & 1 deletion src/viam/components/audio_out/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from grpclib.client import Channel

from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest, GetPropertiesResponse
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest, GetPropertiesResponse, GetStatusRequest, GetStatusResponse
from viam.proto.component.audioout import AudioOutServiceStub, PlayRequest
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
from viam.utils import ValueTypes, dict_to_struct, get_geometries, struct_to_dict
Expand Down Expand Up @@ -62,6 +62,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get("metadata", self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
11 changes: 11 additions & 0 deletions src/viam/components/audio_out/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
GetGeometriesResponse,
GetPropertiesRequest,
GetPropertiesResponse,
GetStatusRequest,
GetStatusResponse,
)
from viam.proto.component.audioout import (
AudioOutServiceBase,
Expand Down Expand Up @@ -53,6 +55,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
audio_out = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await audio_out.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
13 changes: 12 additions & 1 deletion src/viam/components/base/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from grpclib.client import Channel

from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetStatusRequest, GetStatusResponse
from viam.proto.component.base import (
BaseServiceStub,
GetPropertiesRequest,
Expand Down Expand Up @@ -148,6 +148,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get("metadata", self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
11 changes: 10 additions & 1 deletion src/viam/components/base/service.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from grpclib.server import Stream

from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse, GetStatusRequest, GetStatusResponse
from viam.proto.component.base import (
BaseServiceBase,
GetPropertiesRequest,
Expand Down Expand Up @@ -128,6 +128,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
base = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await base.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
13 changes: 12 additions & 1 deletion src/viam/components/board/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from grpclib.client import Channel
from grpclib.client import Stream as ClientStream

from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetStatusRequest, GetStatusResponse
from viam.proto.component.board import (
BoardServiceStub,
GetDigitalInterruptValueRequest,
Expand Down Expand Up @@ -196,6 +196,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def set_power_mode(
self,
mode: PowerMode.ValueType,
Expand Down
11 changes: 10 additions & 1 deletion src/viam/components/board/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from viam.errors import ResourceNotFoundError
from viam.logging import getLogger
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse, GetStatusRequest, GetStatusResponse
from viam.proto.component.board import (
BoardServiceBase,
GetDigitalInterruptValueRequest,
Expand Down Expand Up @@ -194,6 +194,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
board = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await board.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
13 changes: 13 additions & 0 deletions src/viam/components/button/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
from viam.proto.common import (
DoCommandRequest,
DoCommandResponse,
GetStatusRequest,
GetStatusResponse,
)
from viam.proto.component.button import ButtonServiceStub
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
Expand Down Expand Up @@ -50,3 +52,14 @@ async def do_command(
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)
11 changes: 11 additions & 0 deletions src/viam/components/button/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
from viam.proto.common import (
DoCommandRequest,
DoCommandResponse,
GetStatusRequest,
GetStatusResponse,
)
from viam.proto.component.button import ButtonServiceBase
from viam.resource.rpc_service_base import ResourceRPCServiceBase
Expand Down Expand Up @@ -44,3 +46,12 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
)
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
button = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await button.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)
13 changes: 12 additions & 1 deletion src/viam/components/camera/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from grpclib.client import Channel

from viam.media.video import CameraMimeType, NamedImage
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, ResponseMetadata
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetStatusRequest, GetStatusResponse, ResponseMetadata
from viam.proto.component.camera import (
CameraServiceStub,
GetImagesRequest,
Expand Down Expand Up @@ -80,6 +80,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_geometries(
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
) -> Sequence[Geometry]:
Expand Down
11 changes: 10 additions & 1 deletion src/viam/components/camera/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from grpclib.server import Stream

from viam.errors import NotSupportedError
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse, GetStatusRequest, GetStatusResponse
from viam.proto.component.camera import (
CameraServiceBase,
GetImagesRequest,
Expand Down Expand Up @@ -82,6 +82,15 @@ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -
response = DoCommandResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetStatus(self, stream: Stream[GetStatusRequest, GetStatusResponse]) -> None:
request = await stream.recv_message()
assert request is not None
camera = self.get_resource(request.name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
result = await camera.get_status(timeout=timeout, metadata=stream.metadata)
response = GetStatusResponse(result=dict_to_struct(result))
await stream.send_message(response)

async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
3 changes: 3 additions & 0 deletions src/viam/components/component_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ def from_robot(cls, robot: "RobotClient", name: str) -> Self:
async def do_command(self, command: Mapping[str, ValueTypes], *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]:
raise NotImplementedError()

async def get_status(self, *, timeout: Optional[float] = None, **kwargs) -> Mapping[str, ValueTypes]:
return {}

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> Sequence[Geometry]:
"""
Get all geometries associated with the component, in their current configuration, in the
Expand Down
13 changes: 12 additions & 1 deletion src/viam/components/encoder/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from grpclib.client import Channel

from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetStatusRequest, GetStatusResponse
from viam.proto.component.encoder import (
EncoderServiceStub,
GetPositionRequest,
Expand Down Expand Up @@ -78,6 +78,17 @@ async def do_command(
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_status(
self,
*,
timeout: Optional[float] = None,
**kwargs,
) -> Mapping[str, ValueTypes]:
md = kwargs.get("metadata", self.Metadata()).proto
request = GetStatusRequest(name=self.name)
response: GetStatusResponse = await self.client.GetStatus(request, timeout=timeout, metadata=md)
return struct_to_dict(response.result)

async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
md = kwargs.get("metadata", self.Metadata())
return await get_geometries(self.client, self.name, extra, timeout, md)
Loading
Loading