11590Srgrimes/*
250477Speter * Copyright 2004-2008, Fran��ois Revol, <revol@free.fr>.
31590Srgrimes * Distributed under the terms of the MIT License.
41590Srgrimes */
51590Srgrimes#ifndef _CAM_ROSTER_H
6201386Sed#define _CAM_ROSTER_H
7201386Sed
81590Srgrimes#include <image.h>
9#include <List.h>
10#include <Locker.h>
11
12#include "CamDevice.h"
13
14class WebCamMediaAddOn;
15class CamDeviceAddon;
16
17class CamRoster : public BUSBRoster {
18public:
19						CamRoster(WebCamMediaAddOn* _addon);
20	virtual				~CamRoster();
21	virtual status_t	DeviceAdded(BUSBDevice* _device);
22	virtual void		DeviceRemoved(BUSBDevice* _device);
23
24			uint32		CountCameras();
25			bool		Lock();
26			void		Unlock();
27	// those must be called with Lock()
28			CamDevice*	CameraAt(int32 index);
29
30
31
32private:
33			status_t	LoadInternalAddons();
34			status_t	LoadExternalAddons();
35
36	BLocker				fLocker;
37	WebCamMediaAddOn*	fAddon;
38	BList			fCamerasAddons;
39	BList			fCameras;
40};
41
42#endif
43