From nobody Sat Dec 28 12:05:36 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1496720152706438.193418351452; Mon, 5 Jun 2017 20:35:52 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 1E1C721959CA6; Mon, 5 Jun 2017 20:34:42 -0700 (PDT) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B231B21AE30D0 for ; Mon, 5 Jun 2017 20:34:40 -0700 (PDT) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga105.jf.intel.com with ESMTP; 05 Jun 2017 20:35:46 -0700 Received: from ray-dev.ccr.corp.intel.com ([10.239.9.1]) by FMSMGA003.fm.intel.com with ESMTP; 05 Jun 2017 20:35:46 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,304,1493708400"; d="scan'208";a="864937047" From: Ruiyu Ni To: edk2-devel@lists.01.org Date: Tue, 6 Jun 2017 11:35:39 +0800 Message-Id: <20170606033543.254936-2-ruiyu.ni@intel.com> X-Mailer: git-send-email 2.12.2.windows.2 In-Reply-To: <20170606033543.254936-1-ruiyu.ni@intel.com> References: <20170606033543.254936-1-ruiyu.ni@intel.com> Subject: [edk2] [PATCH v2 1/5] MdePkg/DevicePath: Add BluetoothLe device path node support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Hao A Wu MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Cc: Hao A Wu Reviewed-by: Hao Wu --- 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/I= ndustryStandard/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 driver= s. These definitions are from Bluetooth Core Specification Version 4.0 June= , 2010 =20 - Copyright (c) 2015, Intel Corporation. All rights reserved.
+ Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at @@ -38,6 +38,21 @@ typedef struct { UINT16 MajorServiceClass:11; } BLUETOOTH_CLASS_OF_DEVICE; =20 +/// +/// 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() =20 #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=20 it can not contain things like PCI bus numbers that change from boot to = boot. =20 -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made availabl= e under=20 the terms and conditions of the BSD License that accompanies this distribu= tion. =20 The full text of the license may be found at @@ -938,6 +938,15 @@ typedef struct { UINT8 SSId[32]; } WIFI_DEVICE_PATH; =20 +/// +/// 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 ( } =20 /** + 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 structur= e. + +**/ +EFI_DEVICE_PATH_PROTOCOL * +DevPathFromTextBluetoothLE ( + IN CHAR16 *TextDeviceNode + ) +{ + CHAR16 *BluetoothLeAddrStr; + CHAR16 *BluetoothLeAddrTypeStr; + BLUETOOTH_LE_DEVICE_PATH *BluetoothLeDp; + + BluetoothLeAddrStr =3D GetNextParamStr (&TextDeviceNode); + BluetoothLeAddrTypeStr =3D GetNextParamStr (&TextDeviceNode); + BluetoothLeDp =3D (BLUETOOTH_LE_DEVICE_PATH *) CreateDeviceNode ( + MESSAGING_DEVICE_PATH, + MSG_BLUETOOTH_LE_DP, + (UINT16) sizeof (BLUETOOT= H_LE_DEVICE_PATH) + ); + + BluetoothLeDp->Address.Type =3D (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. =20 @param TextDeviceNode The input Text device path node. @@ -3367,6 +3400,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_T= ABLE 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/L= ibrary/UefiDevicePathLib/DevicePathToText.c index f45d3dd338..b8d9491885 100644 --- a/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c +++ b/MdePkg/Library/UefiDevicePathLib/DevicePathToText.c @@ -1660,6 +1660,43 @@ DevPathToTextWiFi ( } =20 /** + 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 rep= resentation + 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 form= s of text + representation for a device node can be used, whe= re applicable. + +**/ +VOID +DevPathToTextBluetoothLE ( + IN OUT POOL_PRINT *Str, + IN VOID *DevPath, + IN BOOLEAN DisplayOnly, + IN BOOLEAN AllowShortcuts + ) +{ + BLUETOOTH_LE_DEVICE_PATH *BluetoothLE; + + BluetoothLE =3D 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. =20 @param Str The string representative of input device. @@ -2191,6 +2228,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TE= XT_TABLE mUefiDevicePathLib {MESSAGING_DEVICE_PATH, MSG_URI_DP, DevPathToTextU= ri }, {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_DP, DevPathToTextB= luetooth }, {MESSAGING_DEVICE_PATH, MSG_WIFI_DP, DevPathToTextW= iFi }, + {MESSAGING_DEVICE_PATH, MSG_BLUETOOTH_LE_DP, DevPathToTextB= luetoothLE }, {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextH= ardDrive }, {MEDIA_DEVICE_PATH, MEDIA_CDROM_DP, DevPathToTextC= DROM }, {MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP, DevPathToTextV= endor }, --=20 2.12.2.windows.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel