mirror of https://github.com/acidanthera/audk.git
MdePkg/DevicePath: Add BluetoothLe device path node support
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
7b5d848dbf
commit
ff5623e990
|
@ -2,7 +2,7 @@
|
||||||
This file contains the Bluetooth definitions that are consumed by drivers.
|
This file contains the Bluetooth definitions that are consumed by drivers.
|
||||||
These definitions are from Bluetooth Core Specification Version 4.0 June, 2010
|
These definitions are from Bluetooth Core Specification Version 4.0 June, 2010
|
||||||
|
|
||||||
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -38,6 +38,21 @@ typedef struct {
|
||||||
UINT16 MajorServiceClass:11;
|
UINT16 MajorServiceClass:11;
|
||||||
} BLUETOOTH_CLASS_OF_DEVICE;
|
} BLUETOOTH_CLASS_OF_DEVICE;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// BLUETOOTH_LE_ADDRESS
|
||||||
|
///
|
||||||
|
typedef struct {
|
||||||
|
///
|
||||||
|
/// 48-bit Bluetooth device address
|
||||||
|
///
|
||||||
|
UINT8 Address[6];
|
||||||
|
///
|
||||||
|
/// 0x00 - Public Device Address
|
||||||
|
/// 0x01 - Random Device Address
|
||||||
|
///
|
||||||
|
UINT8 Type;
|
||||||
|
} BLUETOOTH_LE_ADDRESS;
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE 248
|
#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE 248
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
from a software point of view. The path must persist from boot to boot, so
|
from a software point of view. The path must persist from boot to boot, so
|
||||||
it can not contain things like PCI bus numbers that change from boot to boot.
|
it can not contain things like PCI bus numbers that change from boot to boot.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials are licensed and made available under
|
This program and the accompanying materials are licensed and made available under
|
||||||
the terms and conditions of the BSD License that accompanies this distribution.
|
the terms and conditions of the BSD License that accompanies this distribution.
|
||||||
The full text of the license may be found at
|
The full text of the license may be found at
|
||||||
|
@ -938,6 +938,15 @@ typedef struct {
|
||||||
UINT8 SSId[32];
|
UINT8 SSId[32];
|
||||||
} WIFI_DEVICE_PATH;
|
} WIFI_DEVICE_PATH;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Bluetooth LE Device Path SubType.
|
||||||
|
///
|
||||||
|
#define MSG_BLUETOOTH_LE_DP 0x1E
|
||||||
|
typedef struct {
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL Header;
|
||||||
|
BLUETOOTH_LE_ADDRESS Address;
|
||||||
|
} BLUETOOTH_LE_DEVICE_PATH;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Media Device Path
|
// Media Device Path
|
||||||
//
|
//
|
||||||
|
|
|
@ -2691,6 +2691,39 @@ DevPathFromTextWiFi (
|
||||||
return (EFI_DEVICE_PATH_PROTOCOL *) WiFiDp;
|
return (EFI_DEVICE_PATH_PROTOCOL *) WiFiDp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts a text device path node to Bluetooth LE device path structure.
|
||||||
|
|
||||||
|
@param TextDeviceNode The input Text device path node.
|
||||||
|
|
||||||
|
@return A pointer to the newly-created Bluetooth LE device path structure.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL *
|
||||||
|
DevPathFromTextBluetoothLE (
|
||||||
|
IN CHAR16 *TextDeviceNode
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CHAR16 *BluetoothLeAddrStr;
|
||||||
|
CHAR16 *BluetoothLeAddrTypeStr;
|
||||||
|
BLUETOOTH_LE_DEVICE_PATH *BluetoothLeDp;
|
||||||
|
|
||||||
|
BluetoothLeAddrStr = GetNextParamStr (&TextDeviceNode);
|
||||||
|
BluetoothLeAddrTypeStr = GetNextParamStr (&TextDeviceNode);
|
||||||
|
BluetoothLeDp = (BLUETOOTH_LE_DEVICE_PATH *) CreateDeviceNode (
|
||||||
|
MESSAGING_DEVICE_PATH,
|
||||||
|
MSG_BLUETOOTH_LE_DP,
|
||||||
|
(UINT16) sizeof (BLUETOOTH_LE_DEVICE_PATH)
|
||||||
|
);
|
||||||
|
|
||||||
|
BluetoothLeDp->Address.Type = (UINT8) Strtoi (BluetoothLeAddrTypeStr);
|
||||||
|
StrHexToBytes (
|
||||||
|
BluetoothLeAddrStr, sizeof (BluetoothLeDp->Address.Address) * 2,
|
||||||
|
BluetoothLeDp->Address.Address, sizeof (BluetoothLeDp->Address.Address)
|
||||||
|
);
|
||||||
|
return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothLeDp;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Converts a text device path node to URI device path structure.
|
Converts a text device path node to URI device path structure.
|
||||||
|
|
||||||
|
@ -3367,6 +3400,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
|
||||||
{L"Uri", DevPathFromTextUri },
|
{L"Uri", DevPathFromTextUri },
|
||||||
{L"Bluetooth", DevPathFromTextBluetooth },
|
{L"Bluetooth", DevPathFromTextBluetooth },
|
||||||
{L"Wi-Fi", DevPathFromTextWiFi },
|
{L"Wi-Fi", DevPathFromTextWiFi },
|
||||||
|
{L"BluetoothLE", DevPathFromTextBluetoothLE },
|
||||||
{L"MediaPath", DevPathFromTextMediaPath },
|
{L"MediaPath", DevPathFromTextMediaPath },
|
||||||
{L"HD", DevPathFromTextHD },
|
{L"HD", DevPathFromTextHD },
|
||||||
{L"CDROM", DevPathFromTextCDROM },
|
{L"CDROM", DevPathFromTextCDROM },
|
||||||
|
|
|
@ -1659,6 +1659,43 @@ DevPathToTextWiFi (
|
||||||
UefiDevicePathLibCatPrint (Str, L"Wi-Fi(%a)", SSId);
|
UefiDevicePathLibCatPrint (Str, L"Wi-Fi(%a)", SSId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts a Bluetooth device path structure to its string representative.
|
||||||
|
|
||||||
|
@param Str The string representative of input device.
|
||||||
|
@param DevPath The input device path structure.
|
||||||
|
@param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
|
||||||
|
of the display node is used, where applicable. If DisplayOnly
|
||||||
|
is FALSE, then the longer text representation of the display node
|
||||||
|
is used.
|
||||||
|
@param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
|
||||||
|
representation for a device node can be used, where applicable.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
DevPathToTextBluetoothLE (
|
||||||
|
IN OUT POOL_PRINT *Str,
|
||||||
|
IN VOID *DevPath,
|
||||||
|
IN BOOLEAN DisplayOnly,
|
||||||
|
IN BOOLEAN AllowShortcuts
|
||||||
|
)
|
||||||
|
{
|
||||||
|
BLUETOOTH_LE_DEVICE_PATH *BluetoothLE;
|
||||||
|
|
||||||
|
BluetoothLE = DevPath;
|
||||||
|
UefiDevicePathLibCatPrint (
|
||||||
|
Str,
|
||||||
|
L"BluetoothLE(%02x%02x%02x%02x%02x%02x,0x%02x)",
|
||||||
|
BluetoothLE->Address.Address[0],
|
||||||
|
BluetoothLE->Address.Address[1],
|
||||||
|
BluetoothLE->Address.Address[2],
|
||||||
|
BluetoothLE->Address.Address[3],
|
||||||
|
BluetoothLE->Address.Address[4],
|
||||||
|
BluetoothLE->Address.Address[5],
|
||||||
|
BluetoothLE->Address.Type
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Converts a URI device path structure to its string representative.
|
Converts a URI device path structure to its string representative.
|
||||||
|
|
||||||
|
@ -2191,6 +2228,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
|
||||||
{MESSAGING_DEVICE_PATH, MSG_URI_DP, DevPathToTextUri },
|
{MESSAGING_DEVICE_PATH, MSG_URI_DP, DevPathToTextUri },
|
||||||
{MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, DevPathToTextBluetooth },
|
{MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, DevPathToTextBluetooth },
|
||||||
{MESSAGING_DEVICE_PATH, MSG_WIFI_DP, DevPathToTextWiFi },
|
{MESSAGING_DEVICE_PATH, MSG_WIFI_DP, DevPathToTextWiFi },
|
||||||
|
{MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, DevPathToTextBluetoothLE },
|
||||||
{MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextHardDrive },
|
{MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextHardDrive },
|
||||||
{MEDIA_DEVICE_PATH, MEDIA_CDROM_DP, DevPathToTextCDROM },
|
{MEDIA_DEVICE_PATH, MEDIA_CDROM_DP, DevPathToTextCDROM },
|
||||||
{MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP, DevPathToTextVendor },
|
{MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP, DevPathToTextVendor },
|
||||||
|
|
Loading…
Reference in New Issue