Connecting Bluetooth Low Energy devices to Windows 9/16/2018 3:20 PM HW-254T Connecting Bluetooth Low Energy devices to Windows Ellick Sung - Program Manager Alain Michaud – Software Design Engineer Microsoft Corporation © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Agenda What is Bluetooth LE? The Windows Bluetooth LE platform Technical overview and examples You’ll leave with information on how to Easily connect your device to Windows with Bluetooth LE Complete your Bluetooth LE device experience with a Metro style device app
What is Bluetooth LE?
Bluetooth LE enables new kinds of wireless device experiences.
Prototype Logitech keyboard LE HID support inbox with Win8 demo LE HID Profile Prototype Logitech keyboard LE HID support inbox with Win8
Bluetooth Bluetooth low energy Global standard Low cost Robust Secure Profile interoperability Low power Low duty cycle Simplicity
Bluetooth connectivity for low power devices Sport and fitness Heartrate monitors Pedometers Cycling cadence/distance Health Glucose meters Blood pressure monitors Weighing scales Some existing device experiences improved Keyboards Mice
Windows Bluetooth LE platform Discovery and pairing experiences built into Windows Simple API to collect and administer device data Windows Runtime support for Metro style apps Inbox support for HID class devices Interoperability enhanced by the Windows platform and Bluetooth qualification
Development partners
Bluetooth LE in Windows
Windows makes it easy to create new wireless device experiences with Bluetooth LE.
Bluetooth LE services Simple, self-described, data A characteristic comprises a set of data describing a value A service comprises a set of one or more characteristics A profile comprises a set of one or more services
Windows Bluetooth LE client API BluetoothGATTGetServices BluetoothGATTGetIncludedServices BluetoothGATTGetCharacteristics BluetoothGATTGetDescriptors BluetoothGATTGetCharacteristicValue BluetoothGATTGetDescriptorValue BluetoothGATTBeginReliableWrite BluetoothGATTSetCharacteristicValue BluetoothGATTEndReliableWrite BluetoothGATTAbortReliableWrite BluetoothGATTSetDescriptorValue BluetoothGATTRegisterEvent BluetoothGATTUnregisterEvent Get Data Set Data Receive Data Events
Metro style apps for Bluetooth LE Metro style device app experience can focus on integrated solution Custom class driver can allow access to multiple apps Metro Style App WinRT Library WPD API LE Profile Driver Bluetooth LE Driver Stack LE Device
Proprietary sample service demo Proprietary sample service TI CC2540 development kit Sample Simple Keys Service (w/ dev kit) Sample WPD driver (Windows Driver Kit)
Health thermometer profile demo Health thermometer profile Prototype Nordic Thermometer
Recap
Windows and Bluetooth LE It’s easy to create new device experiences using Windows and Bluetooth LE New kinds of devices are now connectable Existing device experiences can be improved HID device support is included inbox
Related sessions [HW-747T] Building Metro style apps that connect to specialized devices
Further reading and documentation MSDN Bluetooth Low Energy Functions Bluetooth Low Energy Enumerations Bluetooth Low Energy Structures Metro style device app for specialized devices – Design Guide Windows Hardware Development More about Bluetooth LE and its Profiles http://www.bluetooth.org
thank you Feedback and questions http://forums.dev.windows.com Session feedback http://bldw.in/SessionFeedback
9/16/2018 3:20 PM © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Backup
Bluetooth LE keyboards will last for years on the same set of batteries
Get Service and Characteristic Data // // Get the services hr = BluetoothGATTGetServices( hDeviceHandle, numServices, services, &numServicesActual, BLUETOOTH_GATT_FLAG_NONE); // // Get the characteristic hr = BluetoothGATTGetCharacteristics( hDeviceHandle, services[serviceIndex], numChar, characteristics, &numCharsActual, BLUETOOTH_GATT_FLAG_NONE); // // Get the characteristic descriptors hr = BluetoothGATTGetDescriptors( hDeviceHandle, characteristics[foundCharacteristicIndex], numDesc, descriptors, &numDescsActual, BLUETOOTH_GATT_FLAG_NONE);
Register for Events // // Register a value change callback (asynchronous value // change events) hr = BluetoothGATTRegisterEvent( hDeviceHandle, CharacteristicValueChangedEvent, (PVOID)&characteristics[foundCharacteristicIndex], s_ValueChangeEvent, (PVOID)this, &m_ValueChangeEventReg, BLUETOOTH_GATT_FLAG_NONE);
Set Device to Send (Write Data) // // Set the client config descriptor to register for indications ::ZeroMemory(&clientConfigValue, sizeof(clientConfigValue)); clientConfigValue.DescriptorType = ClientCharacteristicConfiguration; clientConfigValue.ClientCharacteristicConfiguration .IsSubscribeToNotification = TRUE; hr = BluetoothGATTSetDescriptorValue( hDeviceHandle, descriptors[clientConfigDescIndex], &clientConfigValue, BLUETOOTH_GATT_FLAG_NONE);
Adapting the LE WPD sample // // Placeholder code hr = BluetoothGATTRegisterEvent( hDeviceHandle, CharacteristicValueChangedEvent, (PVOID)&characteristics[foundCharacteristicIndex], s_ValueChangeEvent, (PVOID)this, &m_ValueChangeEventReg, BLUETOOTH_GATT_FLAG_NONE);
Easily create a new wireless device to application experience using Windows and Bluetooth LE
Bluetooth LE vs. other radio technologies Wi-Fi Bluetooth BR/EDR Bluetooth LE Zigbee ANT Range 100 m? 10 - 100 m 50 m (10-100) 200 m 30 m Throughput (Actual) Up to 300 Mbps 2.1 Mbps 200 kbps 100 kbps 20 kbps Power Consumption High Low Lowest Frequency 2.4/5 GHz 2.4 GHz Security 64b/128b 128b AES Standard Wi-Fi Alliance Bluetooth SIG ZigBee Alliance Proprietary Cost Higher Lower Robustness Advanced coding, 32 bit CRC, ARQ, transmit rate adaptation Adaptive fast frequency hopping, FEC, fast ACK Adaptive fast frequency hopping DSSS