Skip to content

Commit

Permalink
MultiCameraProvider camera scanning (#139)
Browse files Browse the repository at this point in the history
* make scan_for_cameras abstract and add it to multi_camera_provider

* code review

---------

Co-authored-by: Falko Schindler <falko@zauberzeug.com>
  • Loading branch information
NiklasNeugebauer and falkoschindler committed Jul 9, 2024
1 parent d87d46f commit eacddd5
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
4 changes: 4 additions & 0 deletions rosys/vision/camera_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,7 @@ def prune_images(self, max_age_seconds: Optional[float] = None):
else:
while camera.images and camera.images[0].time < rosys.time() - max_age_seconds:
del camera.images[0]

@abc.abstractmethod
async def update_device_list(self) -> None:
pass
10 changes: 10 additions & 0 deletions rosys/vision/multi_camera_provider.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging

from .camera import Camera
from .camera_provider import CameraProvider

Expand All @@ -11,11 +13,19 @@ class MultiCameraProvider(CameraProvider):
def __init__(self, *camera_providers: CameraProvider) -> None:
super().__init__()
self.providers = camera_providers
self.log = logging.getLogger('rosys.multi_camera_provider')
for camera_provider in self.providers:
camera_provider.NEW_IMAGE.register(self.NEW_IMAGE.emit)
camera_provider.CAMERA_ADDED.register(self.CAMERA_ADDED.emit)
camera_provider.CAMERA_REMOVED.register(self.CAMERA_REMOVED.emit)

async def update_device_list(self) -> None:
for provider in self.providers:
try:
await provider.update_device_list()
except Exception as e:
self.log.error('Error while scanning for cameras in "%s": %s', provider.__class__.__name__, e)

def request_backup(self) -> None:
for provider in self.providers:
provider.request_backup()
Expand Down

0 comments on commit eacddd5

Please sign in to comment.