VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/Library/CommonLib/EfiBluetooth.c
blob: 13b03e3ed71d7d4d16b34ee87dc398e482f84901 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/** @file
EFI BLUETOOTH helpers

Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov
Copyright (c) 2016. VeraCrypt, Mounir IDRASSI

This program and the accompanying materials are licensed and made available
under the terms and conditions of the GNU Lesser General Public License, version 3.0 (LGPL-3.0).

The full text of the license may be found at
https://opensource.org/licenses/LGPL-3.0
**/

#include <Library/CommonLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DevicePathLib.h>
#include <Library/PrintLib.h>
#include <Protocol/BluetoothIo.h>
#include <Protocol/BluetoothConfig.h>
#include <Protocol/BluetoothHc.h>

EFI_HANDLE* gBluetoothIoHandles = NULL;
UINTN       gBluetoothIoCount = 0;

EFI_HANDLE* gBluetoothHcHandles = NULL;
UINTN       gBluetoothHcCount = 0;

EFI_HANDLE* gBluetoothConfigHandles = NULL;
UINTN       gBluetoothConfigCount = 0;

EFI_STATUS
InitBluetooth() {
	EFI_STATUS res;
	res = EfiGetHandles(ByProtocol, &gEfiBluetoothIoProtocolGuid, 0, &gBluetoothIoHandles, &gBluetoothIoCount);
	res = EfiGetHandles(ByProtocol, &gEfiBluetoothHcProtocolGuid, 0, &gBluetoothHcHandles, &gBluetoothHcCount);
	res = EfiGetHandles(ByProtocol, &gEfiBluetoothConfigProtocolGuid, 0, &gBluetoothConfigHandles, &gBluetoothConfigCount);
	return res;
}

EFI_STATUS
BluetoothGetIO(
	IN    EFI_HANDLE							Handle,
	OUT   EFI_BLUETOOTH_IO_PROTOCOL**	io
	) {
	if (!io) {
		return EFI_INVALID_PARAMETER;
	}
	return gBS->HandleProtocol(Handle, &gEfiBluetoothIoProtocolGuid, (VOID**)io);
}