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 _REMOTE_DEVICE_H
6#define _REMOTE_DEVICE_H
7
8#include <bluetooth/bluetooth.h>
9#include <bluetooth/bluetooth_error.h>
10#include <bluetooth/BluetoothDevice.h>
11
12#include <String.h>
13
14#define B_BT_WAIT 0x00
15#define B_BT_SUCCEEDED 0x01
16
17
18namespace Bluetooth {
19
20class Connection;
21class LocalDevice;
22
23class RemoteDevice : public BluetoothDevice {
24
25public:
26	static const int WAIT = B_BT_WAIT;
27	static const int SUCCEEDED = B_BT_SUCCEEDED;
28
29	virtual ~RemoteDevice();
30
31	bool IsTrustedDevice();
32	BString GetFriendlyName(bool alwaysAsk); /* Throwing */
33	BString GetFriendlyName(void); /* Throwing */
34	bdaddr_t GetBluetoothAddress();
35	DeviceClass GetDeviceClass();
36
37	bool Equals(RemoteDevice* obj);
38
39	/*static RemoteDevice* GetRemoteDevice(Connection conn);   Throwing */
40	bool		Authenticate(); /* Throwing */
41	status_t	Disconnect(int8 reason = BT_REMOTE_USER_ENDED_CONNECTION);
42	/* bool Authorize(Connection conn);  Throwing */
43	/*bool Encrypt(Connection conn, bool on);  Throwing */
44	bool IsAuthenticated(); /* Throwing */
45	/*bool IsAuthorized(Connection conn);  Throwing */
46	bool IsEncrypted(); /* Throwing */
47
48	BString GetProperty(const char* property); /* Throwing */
49	status_t GetProperty(const char* property, uint32* value); /* Throwing */
50
51	LocalDevice* GetLocalDeviceOwner();
52
53	RemoteDevice(const BString& address);
54	RemoteDevice(const bdaddr_t address, uint8 record[3]);
55
56protected:
57	/* called by Discovery[Listener|Agent] */
58	void SetLocalDeviceOwner(LocalDevice* ld);
59	friend class DiscoveryListener;
60
61private:
62
63	LocalDevice* fDiscovererLocalDevice;
64	BMessenger*	 fMessenger;
65
66	uint16		fHandle;
67	uint8		fPageRepetitionMode;
68	uint8		fScanPeriodMode;
69	uint8		fScanMode;
70	uint16		fClockOffset;
71
72};
73
74}
75
76#ifndef _BT_USE_EXPLICIT_NAMESPACE
77using Bluetooth::RemoteDevice;
78#endif
79
80#endif // _REMOTE_DEVICE_H
81