Files

116 lines
2.8 KiB
C#

// 32feet.NET - Personal Area Networking for .NET
//
// InTheHand.Net.Bluetooth.BluetoothRadio (Android)
//
// Copyright (c) 2003-2021 In The Hand Ltd, All rights reserved.
// This source code is licensed under the MIT License
using Android.App;
using Android.Bluetooth;
namespace InTheHand.Net.Bluetooth
{
partial class BluetoothRadio
{
private static BluetoothRadio GetDefault()
{
var manager = (BluetoothManager)Application.Context.GetSystemService(Application.BluetoothService);
if (manager.Adapter == null)
return null;
return new BluetoothRadio(manager.Adapter);
}
public static implicit operator BluetoothAdapter(BluetoothRadio radio)
{
return radio._adapter;
}
public static implicit operator BluetoothRadio(BluetoothAdapter adapter)
{
return new BluetoothRadio(adapter);
}
private readonly BluetoothAdapter _adapter;
private BluetoothRadio(BluetoothAdapter adapter)
{
_adapter = adapter;
}
private string GetName()
{
return _adapter.Name;
}
private BluetoothAddress GetLocalAddress()
{
return BluetoothAddress.Parse(_adapter.Address);
}
private RadioMode GetMode()
{
State state = _adapter.State;
switch (state)
{
case State.TurningOff:
case State.Off:
return RadioMode.PowerOff;
default:
switch (_adapter.ScanMode)
{
case ScanMode.ConnectableDiscoverable:
return RadioMode.Discoverable;
case ScanMode.Connectable:
return RadioMode.Connectable;
case ScanMode.None:
default:
return RadioMode.PowerOff;
}
}
}
private void SetMode(RadioMode value)
{
switch (value)
{
case RadioMode.PowerOff:
_adapter.Disable();
break;
default:
// TODO: Determine if setting ScanMode is possible
if (!_adapter.IsEnabled)
_adapter.Enable();
break;
}
}
#region IDisposable Support
private bool disposedValue = false; // To detect redundant calls
void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
}
disposedValue = true;
}
}
#endregion
}
}