Cleapups, Fix memory leaks,

Patch by Mika Lindqvist. Could we give give him Commit access? 
I am getting daily patches from him with fixes and new features.
 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26227 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Ruiz Dorantes
2008-07-02 19:41:45 +00:00
parent 765ae3a785
commit 9bfe62f9aa
5 changed files with 79 additions and 63 deletions
+2 -1
View File
@@ -52,10 +52,11 @@ class LocalDevice : public BluetoothDevice {
private: private:
LocalDevice(hci_id hid); LocalDevice(hci_id hid);
virtual ~LocalDevice();
hci_id GetID(void) {return hid;} hci_id GetID(void) {return hid;}
static LocalDevice* RequestLocalDeviceID(BMessage* request); static LocalDevice* RequestLocalDeviceID(BMessage* request);
static BMessenger* sfMessenger;
BMessenger* fMessenger; BMessenger* fMessenger;
hci_id hid; hci_id hid;
+5
View File
@@ -28,6 +28,8 @@ class RemoteDevice : public BluetoothDevice {
static const int WAIT = B_BT_WAIT; static const int WAIT = B_BT_WAIT;
static const int SUCCEEDED = B_BT_SUCCEEDED; static const int SUCCEEDED = B_BT_SUCCEEDED;
virtual ~RemoteDevice();
bool IsTrustedDevice(); bool IsTrustedDevice();
BString GetFriendlyName(bool alwaysAsk); /* Throwing */ BString GetFriendlyName(bool alwaysAsk); /* Throwing */
BString GetFriendlyName(void); /* Throwing */ BString GetFriendlyName(void); /* Throwing */
@@ -52,6 +54,8 @@ class RemoteDevice : public BluetoothDevice {
RemoteDevice(BString address); RemoteDevice(BString address);
RemoteDevice(bdaddr_t address); RemoteDevice(bdaddr_t address);
/* Instances of this class only would be instantiated by Discovery[Listener|Agent] */ /* Instances of this class only would be instantiated by Discovery[Listener|Agent] */
friend class DiscoveryListener; friend class DiscoveryListener;
void SetLocalDeviceOwner(LocalDevice* ld); void SetLocalDeviceOwner(LocalDevice* ld);
@@ -59,6 +63,7 @@ class RemoteDevice : public BluetoothDevice {
private: private:
LocalDevice* fDiscovererLocalDevice; LocalDevice* fDiscovererLocalDevice;
BMessenger* fMessenger;
uint8 fPageRepetitionMode; uint8 fPageRepetitionMode;
uint8 fScanPeriodMode; uint8 fScanPeriodMode;
+1 -1
View File
@@ -27,7 +27,7 @@ DiscoveryAgent::RetrieveDevices(int option)
{ {
/* No inquiry process initiated */ /* No inquiry process initiated */
if (fLastUsedListener == NULL) if (fLastUsedListener == NULL)
return NULL; // xxx: Fix me return RemoteDevicesList();
return fLastUsedListener->GetRemoteDevicesList(); return fLastUsedListener->GetRemoteDevicesList();
} }
+32 -28
View File
@@ -22,29 +22,31 @@
#include "KitSupport.h" #include "KitSupport.h"
/* TODO: remove me */
#include <stdio.h>
namespace Bluetooth { namespace Bluetooth {
BMessenger* LocalDevice::sfMessenger = NULL;
LocalDevice* LocalDevice*
LocalDevice::RequestLocalDeviceID(BMessage* request) LocalDevice::RequestLocalDeviceID(BMessage* request)
{ {
BMessage reply; BMessage reply;
hci_id hid; hci_id hid;
LocalDevice* lDevice = NULL;
if (sfMessenger->SendMessage(request, &reply) == B_OK && BMessenger* messenger = _RetrieveBluetoothMessenger();
if (messenger == NULL)
return NULL;
if (messenger->SendMessage(request, &reply) == B_OK &&
reply.FindInt32("hci_id", &hid) == B_OK ) { reply.FindInt32("hci_id", &hid) == B_OK ) {
if (hid >= 0) { if (hid >= 0)
return new LocalDevice(hid); lDevice = new LocalDevice(hid);
}
} }
return NULL; delete messenger;
return lDevice;
} }
@@ -56,9 +58,6 @@ LocalDevice::RequestLocalDeviceID(BMessage* request)
LocalDevice* LocalDevice*
LocalDevice::GetLocalDevice() LocalDevice::GetLocalDevice()
{ {
if ((sfMessenger = _RetrieveBluetoothMessenger()) == NULL)
return NULL;
BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE); BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE);
return RequestLocalDeviceID(&request); return RequestLocalDeviceID(&request);
@@ -68,27 +67,20 @@ LocalDevice::GetLocalDevice()
LocalDevice* LocalDevice*
LocalDevice::GetLocalDevice(hci_id hid) LocalDevice::GetLocalDevice(hci_id hid)
{ {
if ((sfMessenger = _RetrieveBluetoothMessenger()) == NULL)
return NULL;
BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE); BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE);
request.AddInt32("hci_id", hid); request.AddInt32("hci_id", hid);
return RequestLocalDeviceID(&request); return RequestLocalDeviceID(&request);
} }
LocalDevice* LocalDevice*
LocalDevice::GetLocalDevice(bdaddr_t bdaddr) LocalDevice::GetLocalDevice(bdaddr_t bdaddr)
{ {
if ((sfMessenger = _RetrieveBluetoothMessenger()) == NULL)
return NULL;
BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE); BMessage request(BT_MSG_ACQUIRE_LOCAL_DEVICE);
request.AddData("bdaddr", B_ANY_TYPE, &bdaddr, sizeof(bdaddr_t)); request.AddData("bdaddr", B_ANY_TYPE, &bdaddr, sizeof(bdaddr_t));
return RequestLocalDeviceID(&request); return RequestLocalDeviceID(&request);
} }
@@ -96,16 +88,21 @@ LocalDevice::GetLocalDevice(bdaddr_t bdaddr)
uint32 uint32
LocalDevice::GetLocalDeviceCount() LocalDevice::GetLocalDeviceCount()
{ {
if ((sfMessenger = _RetrieveBluetoothMessenger()) == NULL) BMessenger* messenger = _RetrieveBluetoothMessenger();
return 0; uint32 count = 0;
if (messenger != NULL) {
BMessage request(BT_MSG_COUNT_LOCAL_DEVICES); BMessage request(BT_MSG_COUNT_LOCAL_DEVICES);
BMessage reply; BMessage reply;
if (sfMessenger->SendMessage(&request, &reply) == B_OK) if (messenger->SendMessage(&request, &reply) == B_OK)
return reply.FindInt32("count"); count = reply.FindInt32("count");
else
return 0; delete messenger;
}
return count;
} }
@@ -146,7 +143,7 @@ LocalDevice::GetDiscoverable()
status_t status_t
LocalDevice::SetDiscoverable(int mode) LocalDevice::SetDiscoverable(int mode)
{ {
if ((fMessenger = _RetrieveBluetoothMessenger()) == NULL) if (fMessenger == NULL)
return B_ERROR; return B_ERROR;
BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST); BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST);
@@ -184,7 +181,7 @@ LocalDevice::SetDiscoverable(int mode)
bdaddr_t bdaddr_t
LocalDevice::GetBluetoothAddress() LocalDevice::GetBluetoothAddress()
{ {
if ((fMessenger = _RetrieveBluetoothMessenger()) == NULL) if (fMessenger == NULL)
return bdaddrUtils::NullAddress(); return bdaddrUtils::NullAddress();
const bdaddr_t* bdaddr; const bdaddr_t* bdaddr;
@@ -214,7 +211,7 @@ LocalDevice::GetBluetoothAddress()
BString BString
LocalDevice::GetFriendlyName() LocalDevice::GetFriendlyName()
{ {
if ((fMessenger = _RetrieveBluetoothMessenger()) == NULL) if (fMessenger == NULL)
return NULL; return NULL;
BString friendlyname; BString friendlyname;
@@ -258,7 +255,14 @@ LocalDevice::updateRecord(ServiceRecord srvRecord) {
LocalDevice::LocalDevice(hci_id hid) : hid(hid) LocalDevice::LocalDevice(hci_id hid) : hid(hid)
{ {
fMessenger = _RetrieveBluetoothMessenger();
}
LocalDevice::~LocalDevice()
{
if (fMessenger)
delete fMessenger;
} }
+13 -7
View File
@@ -38,21 +38,18 @@ RemoteDevice::GetFriendlyName(bool alwaysAsk)
if (!alwaysAsk) { if (!alwaysAsk) {
// Check if the name is already retrieved // Check if the name is already retrieved
return BString("Not implemented");
// TODO: Check if It is known from a KnownDevicesList // TODO: Check if It is known from a KnownDevicesList
return BString("Not implemented");
} }
if (fDiscovererLocalDevice == NULL) if (fDiscovererLocalDevice == NULL)
return BString("#NoOwnerError#Not Valid name"); return BString("#NoOwnerError#Not Valid name");
BMessenger* btsm = NULL; if (fMessenger == NULL)
size_t size;
if ((btsm = _RetrieveBluetoothMessenger()) == NULL)
return BString("#ServerNotReady#Not Valid name"); return BString("#ServerNotReady#Not Valid name");
void* remoteNameCommand = NULL; void* remoteNameCommand = NULL;
size_t size;
/* Issue inquiry command */ /* Issue inquiry command */
BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST); BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST);
@@ -71,7 +68,7 @@ RemoteDevice::GetFriendlyName(bool alwaysAsk)
request.AddInt16("eventExpected", HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE); request.AddInt16("eventExpected", HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE);
if (btsm->SendMessage(&request, &reply) == B_OK) if (fMessenger->SendMessage(&request, &reply) == B_OK)
{ {
BString name; BString name;
int8 status; int8 status;
@@ -155,12 +152,21 @@ RemoteDevice::SetLocalDeviceOwner(LocalDevice* ld)
RemoteDevice::RemoteDevice(bdaddr_t address) RemoteDevice::RemoteDevice(bdaddr_t address)
{ {
fBdaddr = address; fBdaddr = address;
fMessenger = _RetrieveBluetoothMessenger();
} }
RemoteDevice::RemoteDevice(BString address) RemoteDevice::RemoteDevice(BString address)
{ {
fBdaddr = bdaddrUtils::FromString((const char *)address.String()); fBdaddr = bdaddrUtils::FromString((const char *)address.String());
fMessenger = _RetrieveBluetoothMessenger();
}
RemoteDevice::~RemoteDevice()
{
if (fMessenger)
delete fMessenger;
} }