1/*
2 * Copyright 2007-2008 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_AGENT_H
6#define _DISCOVERY_AGENT_H
7
8#include <bluetooth/bluetooth.h>
9#include <bluetooth/DiscoveryListener.h>
10#include <bluetooth/RemoteDevice.h>
11
12
13#define BT_CACHED 0x00
14#define BT_PREKNOWN 0x01
15#define BT_NOT_DISCOVERABLE 0x01
16
17#define BT_GIAC 0x9E8B33
18#define BT_LIAC 0x9E8B00
19
20#define BT_MAX_RESPONSES		(32)
21
22#define BT_BASE_INQUIRY_TIME	(1.28)
23#define BT_DEFAULT_INQUIRY_TIME	(0x0A)
24#define BT_MIN_INQUIRY_TIME	(0x01) //  1.18 secs
25#define BT_MAX_INQUIRY_TIME	(0x30) // 61.44 secs
26
27namespace Bluetooth {
28
29class LocalDevice;
30
31class DiscoveryAgent {
32
33public:
34
35	static const int GIAC = BT_GIAC;
36	static const int LIAC = BT_LIAC;
37
38	static const int PREKNOWN = BT_PREKNOWN;
39	static const int CACHED = BT_CACHED;
40	static const int NOT_DISCOVERABLE = BT_NOT_DISCOVERABLE;
41
42	RemoteDevicesList RetrieveDevices(int option); /* TODO */
43	status_t StartInquiry(int accessCode, DiscoveryListener* listener); /* Throwing */
44	status_t StartInquiry(uint32 accessCode, DiscoveryListener* listener, bigtime_t secs);
45	status_t CancelInquiry(DiscoveryListener* listener);
46
47	/*
48	int searchServices(int[] attrSet, UUID[] uuidSet, RemoteDevice btDev,
49					DiscoveryListener discListener);
50
51	bool cancelServiceSearch(int transID);
52	BString selectService(UUID uuid, int security, boolean master);
53	*/
54
55private:
56	DiscoveryAgent(LocalDevice* ld);
57	~DiscoveryAgent();
58	void SetLocalDeviceOwner(LocalDevice* ld);
59
60	DiscoveryListener* fLastUsedListener;
61	LocalDevice*       fLocalDevice;
62	BMessenger*        fMessenger;
63
64	friend class LocalDevice;
65};
66
67}
68
69#ifndef _BT_USE_EXPLICIT_NAMESPACE
70using Bluetooth::DiscoveryAgent;
71#endif
72
73#endif // _DISCOVERY_AGENT_H
74