Reviewed-by: Hao Wu <hao.a...@intel.com>

Best Regards,
Hao Wu


> -----Original Message-----
> From: Ni, Ruiyu
> Sent: Tuesday, June 06, 2017 11:36 AM
> To: edk2-devel@lists.01.org
> Cc: Wu, Hao A
> Subject: [PATCH v2 1/5] MdePkg/DevicePath: Add BluetoothLe device path node
> support
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ruiyu Ni <ruiyu...@intel.com>
> Cc: Hao A Wu <hao.a...@intel.com>
> ---
>  MdePkg/Include/IndustryStandard/Bluetooth.h        | 17 +++++++++-
>  MdePkg/Include/Protocol/DevicePath.h               | 11 ++++++-
>  .../Library/UefiDevicePathLib/DevicePathFromText.c | 34
> +++++++++++++++++++
>  .../Library/UefiDevicePathLib/DevicePathToText.c   | 38
> ++++++++++++++++++++++
>  4 files changed, 98 insertions(+), 2 deletions(-)
> 
> diff --git a/MdePkg/Include/IndustryStandard/Bluetooth.h
> b/MdePkg/Include/IndustryStandard/Bluetooth.h
> index 7dc9d558dc..caea3ac034 100644
> --- a/MdePkg/Include/IndustryStandard/Bluetooth.h
> +++ b/MdePkg/Include/IndustryStandard/Bluetooth.h
> @@ -2,7 +2,7 @@
>    This file contains the Bluetooth definitions that are consumed by drivers.
>    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
>    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
> @@ -38,6 +38,21 @@ typedef struct {
>    UINT16     MajorServiceClass:11;
>  } 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()
> 
>  #define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE
> 248
> diff --git a/MdePkg/Include/Protocol/DevicePath.h
> b/MdePkg/Include/Protocol/DevicePath.h
> index aa7aec793e..220fa90765 100644
> --- a/MdePkg/Include/Protocol/DevicePath.h
> +++ b/MdePkg/Include/Protocol/DevicePath.h
> @@ -5,7 +5,7 @@
>    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.
> 
> -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
>  the terms and conditions of the BSD License that accompanies this 
> distribution.
>  The full text of the license may be found at
> @@ -938,6 +938,15 @@ typedef struct {
>    UINT8                           SSId[32];
>  } 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
>  //
> diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
> b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
> index 187c1cc4dc..f50c11cfa2 100644
> --- a/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
> +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
> @@ -2692,6 +2692,39 @@ DevPathFromTextWiFi (
>  }
> 
>  /**
> +  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.
> 
>    @param TextDeviceNode  The input Text device path node.
> @@ -3367,6 +3400,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED
> DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
>    {L"Uri",                     DevPathFromTextUri                     },
>    {L"Bluetooth",               DevPathFromTextBluetooth               },
>    {L"Wi-Fi",                   DevPathFromTextWiFi                    },
> +  {L"BluetoothLE",             DevPathFromTextBluetoothLE             },
>    {L"MediaPath",               DevPathFromTextMediaPath               },
>    {L"HD",                      DevPathFromTextHD                      },
>    {L"CDROM",                   DevPathFromTextCDROM                   },
> diff --git a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
> b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
> index f45d3dd338..b8d9491885 100644
> --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
> +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
> @@ -1660,6 +1660,43 @@ DevPathToTextWiFi (
>  }
> 
>  /**
> +  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.
> 
>    @param Str             The string representative of input device.
> @@ -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_BLUETOOTH_DP,
> DevPathToTextBluetooth      },
>    {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_CDROM_DP,
> DevPathToTextCDROM          },
>    {MEDIA_DEVICE_PATH,     MEDIA_VENDOR_DP,
> DevPathToTextVendor         },
> --
> 2.12.2.windows.2

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to