420 likes | 1.18k Views
Building Bluetooth Applications On The Windows CE 5.0 And Windows Mobile Platforms. Gaurav Khanna gkhanna@microsoft.com Developer Evangelist Microsoft India. OEM/IHV Supplied. BSP (ARM, SH4, MIPS). OEM Hardware and Standard Drivers. Standard PC Hardware and Drivers. H ardware/ D rivers.
E N D
Building Bluetooth Applications On The Windows CE 5.0 And Windows Mobile Platforms Gaurav Khannagkhanna@microsoft.comDeveloper EvangelistMicrosoft India
OEM/IHV Supplied BSP(ARM, SH4, MIPS) OEM Hardware and Standard Drivers Standard PC Hardware and Drivers Hardware/Drivers Windows XP DDK Device Building Tools Windows Embedded Studio Platform Builder Data Lightweight Relational EDB SQL Server 2005 Express Edition SQL Server 2005 Mobile Edition SQL Server 2005 Win32 Native Managed Server Side Programming Model MFC 8.0, ATL 8.0 .NET Compact Framework .NET Framework ASP.NET Mobile Controls ASP.NET Windows Media Multimedia DirectX Location Services MapPoint Development Tools Visual Studio 2005 Internet Security and Acceleration Server Communications& Messaging Exchange Server Live Communications Server Speech Server Device Update Agent ManagementTools Software Update Services Image Update Systems Management Server Microsoft Operations Manager
Agenda • Technology Overview • Bluetooth Application Concepts • Windows CE Development • Windows Mobile Development • Demo • Q&A
Technology Overview • A short range wireless communication technology • 10-100 meter range • Operates in 2.4 GHz band using frequency hopping • Ad-Hoc network topology • Supports voice and data through separate channels • Support for device discovery • Devices can be queried for capabilities • Standardized services
Typical Usage Scenarios • Audio Services • Hands Free devices • Wireless Stereo Headsets • Wireless Data services • Share Internet Connections • Ad-Hoc Data Exchange • Business card transfer • File exchange • Printing • Cable Replacement • Keyboard, Mouse, Printer
Agenda • Technology Overview • Bluetooth Application Concepts • Windows CE Development • Windows Mobile Development • Demo • Q&A
Bluetooth Devices • Identified by unique address • Advertise to others in discoverable mode • Class of device field • Devices maintain list of supported services • Use Service Discovery for querying list on other devices
Bluetooth Services • Describe data exchange protocols • Identified by a unique GUID • Standardized services called “profiles” for common use cases • File Transfer (FTP) • Dial-Up networking (DUN) • Stereo Audio (A2DP)
General Tips • Keep users informed • Use OS UI for device discovery, pairing • Application should handle latency • Don’t block UI threads • Handle errors gracefully • Conserve the juice • Limit time in discoverable mode • Keep Bluetooth Off when not in use • 5 step process for application development
The 5 Step Process • Find devices in range • Choose a device to connect with • Establish a secure connection (pairing) • Choose a service • Transfer Data
Step 1: Find Devices In Range • Target devices must be in discoverable mode • Client device listens to broadcasts from discoverable devices
Step 2: Choose A Device To Connect With • OS usually provides GUI to connect with another device • Each device identified by a unique address
Step 3: Establish A Secure Connection • Process called “pairing” • Requires both end points to use the same pin key • Usually part of connecting UI
Step 4: Choose A Service • Each service identified by unique GUID • Set of “standard” services for well-known profiles • New applications can publish own GUID • Services usually chosen through device UI
Step 5: Transfer Data • Point to point style 2-way communication • Applications use service/profile protocols to communicate effectively
Agenda • Technology Overview • Bluetooth Application Concepts • Windows CE Development • Windows Mobile Development • Demo • Q&A
Bluetooth Application Programming • Winsock API is extended to support Bluetooth • New Protocol Family for Bluetooth • AF_BTH • New Protocol Option • BTPROTO_RFCOMM • New socket options for Bluetooth • Enable/disable encryption • Control send/receive buffer size • Set power level
BluetoothCreating a socket SOCKET s = socket (AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);
Windows CE: Native Approach • Windows Sockets APIs • Device and Service Discovery: WSALookupServiceBegin(), WSALookupServiceNext(), WSALookupServiceEnd() • Use standard socket connection APIs • bind(), listen(), accept(), connect() • Data Transfer APIs • send(), recv()
BluetoothConnecting a socket SOCKADDR_BTH sa; memset (&sa, 0, sizeof(sa)); sa.addressFamily = AF_BT; sa.btAddr = b; sa.port = channel; connect (s, (SOCKADDR*)&sa, sizeof(sa));
BluetoothListening on a socket SOCKADDR_BTH sa; memset (&sa, 0, sizeof(sa)); sa.addressFamily = AF_BT; sa.port = BT_PORT_ANY; bind (server, (SOCKADDR *)&sa, sizeof(sa); getsockname(server, (SOCKADDR *)&sa, &namelen); listen (server, 5); SOCKET s2 = accept (server, (SOCKADDR *)&sa2, &size);
Bluetoothgetsockname Use getsockname to retrieve server channel allocated to socket by a call to bind and Bluetooth address of local device. SOCKADDR_BTH sab; int len = sizeof(sab); if (0 == getsockname (s, &sab, &len)) { wprintf (L”Local Bluetooth device is %04x%08x, server channel = %d\n”, GET_NAP(sab.btAddr), GET_SAP(sab.btAddr), sab.port); }
Bluetoothgetpeername Use getpeername on connected socket to retrieve Bluetooth address of peer Bluetooth device. SOCKADDR_BTH sab; int len = sizeof(sab); if (0 == getpeername (s, &sab, &len)) { wprintf (L”Remote Bluetooth device is %04x%08x, connected to %d\n”, GET_NAP(sab.btAddr), GET_SAP(sab.btAddr), sab.port); }
Bluetoothgetsockopt • Queries various parameters associated with server channel or connection. The parameters are as follows: • s must be Bluetooth socket • level must be SOL_RFCOMM • SO_BTH_GET_MTU_MAX,…
Bluetoothsetsockopt • Configures various parameters associated with server channel or connection. The parameters are as follows: • s must be Bluetooth socket • level must be SOL_RFCOMM • SO_BTH_AUTHENTICATE, SO_BTH_ENCRYPT, …
BluetoothDiscovering Devices WSAQUERYSET wsaq; wsaq.dwNameSpace = NS_BTH; WSALookupServiceBegin (&wsaq, LUP_CONTAINERS, &hLookup); WSALookupServiceNext (hLookup, LUP_RETURN_ADDR, &dwSize, pwsaResults); pNew->b = ((SOCKADDR_BTH *)pwsaResults->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr
BluetoothQuerying for names • Change WSALookupServiceNext to WSALookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults) … wcscpy (pRes->szName, pwsaResults->lpszServiceInstanceName);
Bluetooth Enabling Legacy Applications: Registering COM ports PORTEMUPortParams pp; memset( &pp, 0, sizeof( pp ) ); // connect to serial port profile on device identified by // remoteDeviceAddr pp.device = remoteDeviceAddr; pp.uuidService = SerialPortServiceClass_UUID; pp.uiportflags = RFCOMM_PORT_FLAGS_REMOTE_DCB; HANDLE h = RegisterDevice (L"COM", index, L"btd.dll", (DWORD)&pp);
Bluetooth Enabling Legacy Applications: Serial Data Transfer WCHAR szComPort[30]; // open previously registered COM port for reading and writing wsprintf( szComPort, L"COM%d:", index ); HANDLE hCommPort = CreateFile( szComPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); WriteFile( hCommPort, …); ReadFile( hCommPort, …); // cleanup CloseHandle( hCommPort ); DeregisterDevice( h );
Agenda • Technology Overview • Bluetooth Application Concepts • Windows CE Development • Windows Mobile Development • Demo • Q&A
Bluetooth Application Development On Windows Mobile • Native • Can leverage WinCE Winsock APIs • Windows Mobile specific utility methods • BthGetMode()/BthSetMode() • Managed Code • Bluetooth Class Library
Windows Mobile: Managed Approach • Use UI for pairing • Publish Service • new BluetoothService( GUID ) • List of Paired Devices • BluetoothRadio.PairedDevices • Connect to a service • BluetoothDevice.Connect( GUID ) • Use NetworkStream objects for data transfer
Windows Mobile Managed Approach Benefits • Simplicity • Intuitive class interface for all levels of managed developers • Focus on the application, not on the technology • Easy to build custom services • Leverage NETCF APIs for object serialization • Flexible, high level networking APIs • Powerful NetworkStream class • Rich threading support • Shared Source • Add and change under the hood
Agenda • Technology Overview • Bluetooth Application Concepts • Windows CE Development • Windows Mobile Development • Demo • Q&A
Windows Mobile Managed Library Download http://msdn.microsoft.com/embedded/usewinemb/ce/sharedsrccode/west/default.aspx
Conclusion • Bluetooth is a ubiquitous, powerful ad-hoc networking technology • Rich support on Windows CE and Windows Mobile • Windows Sockets API • Managed Class Library for Windows Mobile • Leverage Visual Studio 2005 for native and managed development
Tools & Resources Build Develop Websites msdn.microsoft.com/embedded msdn.microsoft.com/mobility Newsgroups microsoft.public.pocketpc.developer smartphone.developer dotnet.framework.compactframework microsoft.public.windowsxp.embedded windowsce.platbuilder windowsce.embedded.vc Blogs blogs.msdn.com/windowsmobilevsdteamnetcfteam blogs.msdn.com/mikehall Tools Windows CE 5.0 Eval KitWindows XP Embedded Eval Kit Windows Mobile 5.0 Eval Kit
Your Feedbackis Important! Please Fill Out the feedback form Questions? gkhanna@microsoft.com
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.