xref: /haiku/headers/os/bluetooth/DiscoveryListener.h (revision b55a57da7173b9af0432bd3e148d03f06161d036)
1 /*
2  * Copyright 2007 Oliver Ruiz Dorantes, oliver.ruiz.dorantes_at_gmail.com
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 #ifndef _DISCOVERY_LISTENER_H
6 #define _DISCOVERY_LISTENER_H
7 
8 #include <Looper.h>
9 #include <ObjectList.h>
10 
11 #include <bluetooth/DeviceClass.h>
12 #include <bluetooth/RemoteDevice.h>
13 
14 
15 #define BT_INQUIRY_COMPLETED	0x01 // HCI_EVENT_X check specs
16 #define BT_INQUIRY_TERMINATED	0x02 // HCI_EVENT_X
17 #define BT_INQUIRY_ERROR		0x03 // HCI_EVENT_X
18 
19 
20 namespace Bluetooth {
21 
22 typedef BObjectList<RemoteDevice> RemoteDevicesList;
23 
24 class LocalDevice;
25 
26 class DiscoveryListener : public BLooper {
27 
28 public:
29 
30 	static const int INQUIRY_COMPLETED = BT_INQUIRY_COMPLETED;
31 	static const int INQUIRY_TERMINATED = BT_INQUIRY_TERMINATED;
32 	static const int INQUIRY_ERROR = BT_INQUIRY_ERROR;
33 
34 	static const int SERVICE_SEARCH_COMPLETED = 0x01;
35 	static const int SERVICE_SEARCH_TERMINATED = 0x02;
36 	static const int SERVICE_SEARCH_ERROR = 0x03;
37 	static const int SERVICE_SEARCH_NO_RECORDS = 0x04;
38 	static const int SERVICE_SEARCH_DEVICE_NOT_REACHABLE = 0x06;
39 
40 	virtual void DeviceDiscovered(RemoteDevice* btDevice, DeviceClass cod);
41 	/*
42 	virtual void servicesDiscovered(int transID, ServiceRecord[] servRecord);
43 	virtual void serviceSearchCompleted(int transID, int respCode);
44 	*/
45 	virtual void InquiryCompleted(int discType);
46 
47 	/* JSR82 non-defined methods */
48 	virtual void InquiryStarted(status_t status);
49 
50 private:
51 
52 	RemoteDevicesList GetRemoteDevicesList(void);
53 
54 	void MessageReceived(BMessage* msg);
55 
56 	LocalDevice* fLocalDevice;
57 	RemoteDevicesList fRemoteDevicesList;
58 
59 	friend class DiscoveryAgent;
60 
61 protected:
62 	DiscoveryListener();
63 	void SetLocalDeviceOwner(LocalDevice* ld);
64 };
65 
66 }
67 
68 #ifndef _BT_USE_EXPLICIT_NAMESPACE
69 using Bluetooth::DiscoveryListener;
70 #endif
71 
72 #endif // _DISCOVERY_LISTENER_H
73