⛏️ index : haiku.git

/*
 * Copyright 2008-2009, Oliver Ruiz Dorantes, <oliver.ruiz.dorantes@gmail.com>
 * Copyright 2012-2013, Tri-Edge AI <triedgeai@gmail.com>
 * Copyright 2021, Haiku, Inc.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 * 		Fredrik ModΓ©en <fredrik_at_modeen.se>
 */


#include "BluetoothSettings.h"

#include <SettingsMessage.h>


BluetoothSettings::BluetoothSettings()
	:
	fSettingsMessage(B_USER_SETTINGS_DIRECTORY, "Bluetooth_settings")
{
	fCurrentSettings.pickeddevice = bdaddrUtils::NullAddress();
	fCurrentSettings.localdeviceclass = DeviceClass();
	fCurrentSettings.policy = 0;
	fCurrentSettings.inquirytime = 15;
}


void
BluetoothSettings::SetPickedDevice(bdaddr_t pickeddevice)
{
	fCurrentSettings.pickeddevice = pickeddevice;
}


void
BluetoothSettings::SetLocalDeviceClass(DeviceClass localdeviceclass)
{
	fCurrentSettings.localdeviceclass = localdeviceclass;
}


void
BluetoothSettings::SetPolicy(int32 policy)
{
	fCurrentSettings.policy = policy;
}


void
BluetoothSettings::SetInquiryTime(int32 inquirytime)
{
	fCurrentSettings.inquirytime = inquirytime;
}


void
BluetoothSettings::LoadSettings()
{
	bdaddr_t* addr;
	ssize_t size;
	status_t status = fSettingsMessage.FindData("BDAddress", B_RAW_TYPE,
		(const void**)&addr, &size);
	if (status == B_OK)
		SetPickedDevice(*addr);
	else
		SetPickedDevice(bdaddrUtils::NullAddress());

	DeviceClass* devclass;
	status = fSettingsMessage.FindData("DeviceClass", B_RAW_TYPE,
		(const void**)&devclass, &size);
	if (status == B_OK)
		SetLocalDeviceClass(*devclass);
	else
		SetLocalDeviceClass(DeviceClass());

	SetPolicy(fSettingsMessage.GetValue("Policy", (int32)0));
	SetInquiryTime(fSettingsMessage.GetValue("InquiryTime", (int32)15));
}


void
BluetoothSettings::SaveSettings()
{
	fSettingsMessage.SetValue("DeviceClass", B_RAW_TYPE,
		&fCurrentSettings.localdeviceclass, sizeof(DeviceClass));
	fSettingsMessage.SetValue("BDAddress", B_RAW_TYPE, &fCurrentSettings.pickeddevice,
		sizeof(bdaddr_t));
	fSettingsMessage.SetValue("Policy", fCurrentSettings.policy);
	fSettingsMessage.SetValue("InquiryTime", fCurrentSettings.inquirytime);

	fSettingsMessage.Save();
}