Download presentation
Presentation is loading. Please wait.
Published byOscar Green Modified over 9 years ago
1
CLI339 Building Bluetooth Applications On The Windows CE 5.0 And Windows Mobile Platforms Anil Dhawan Program Manager Windows Mobile
3
M anagement T ools C ommunications & M essaging Device Update Agent Software Update Services Live Communications Server Exchange Server Internet Security and Acceleration Server Speech Server Image Update L ocation S ervices M ultimedia MapPoint DirectX Windows Media Visual Studio 2005 D evelopment T ools Win32 MFC 8.0, ATL 8.0 N ative M anaged S erver S ide L ightweight R elational SQL Server 2005 Express EditionEDB D ata P rogramming M odel D evice B uilding T ools D evice B uilding T ools H ardware/ D rivers Windows XP DDK Windows Embedded Studio Platform Builder OEM/IHV Supplied BSP (ARM, SH4, MIPS) OEM Hardware and Standard Drivers Standard PC Hardware and Drivers SQL Server 2005SQL Server 2005 Mobile Edition ASP.NET Mobile ControlsASP.NET.NET Compact Framework.NET Framework Microsoft Operations Manager Systems Management Server
4
Agenda Technology Overview Bluetooth Application Concepts Windows CE Development Windows Mobile Development DemoQ&A
5
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
6
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
7
Agenda Technology Overview Bluetooth Application Concepts Windows CE Development Windows Mobile Development DemoQ&A
8
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
9
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)
10
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
11
The 5 Step Process Find devices in range Choose a device to connect with Establish a secure connection (pairing) Choose a service Transfer Data
12
Step 1: Find Devices In Range Target devices must be in discoverable mode Client device listens to broadcasts from discoverable devices
13
Step 2: Choose A Device To Connect With OS usually provides GUI to connect with another device Each device identified by a unique address
14
Step 3: Establish A Secure Connection Process called “pairing” Requires both end points to use the same pin key Usually part of connecting UI
15
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
16
Step 5: Transfer Data Point to point style 2-way communication Applications use service/profile protocols to communicate effectively
17
Agenda Technology Overview Bluetooth Application Concepts Windows CE Development Windows Mobile Development DemoQ&A
18
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
19
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()
20
Bluetooth Enabling Legacy Applications Useful for applications built around interfacing with serial devices GPS receivers, barcode scanners, etc. Virtual serial ports expose Bluetooth link as a COM port Legacy application remains untouched Limited number of COM ports available on device
21
Agenda Technology Overview Bluetooth Application Concepts Windows CE Development Windows Mobile Development DemoQ&A
22
Bluetooth Application Development On Windows Mobile Native Can leverage WinCE Winsock APIs Windows Mobile specific utility methods BthGetMode()/BthSetMode() Managed Code Bluetooth Class Library
23
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
24
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
25
Agenda Technology Overview Bluetooth Application Concepts Windows CE Development Windows Mobile Development DemoQ&A
26
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
27
While at MEDC 2005… Fill out an evaluation for this session Randomly selected instant WIN prizes! Randomly selected instant WIN prizes! Use real technology in a lab Instructor led Reef E/F & Breakers L Self-paced Reef B/C Self-paced Reef B/C Visit the Microsoft Product Pavilion in the Exhibit Hall Shorelines B in the Exhibit Hall Shorelines B
28
After The Conference… Develop Build InstallBuildJoin Install Enter Enter Join Full-featured trial versions of Windows CE and/or Windows XP Embedded Cool stuff & tell us about it: msdn.microsoft.com/embedded/community msdn.microsoft.com/embedded/community Windows Embedded Partner Program: www.mswep.com www.mswep.com Windows Mobile 5.0 Eval Kit including Visual Studio 2005 Beta 2 Mobile2Market Contest and win up to $25000: mobile2marketcontest.com mobile2marketcontest.com Microsoft Solutions Partner Program: partner.microsoft.com partner.microsoft.com
29
Tools & Resources msdn.microsoft.com/ embedded microsoft.public. windowsxp.embedded windowsce.platbuilder windowsce.platbuilder windowsce.embedded.vc windowsce.embedded.vc blogs.msdn.com/ mikehall Windows CE 5.0 Eval Kit Windows XP Embedded Eval Kit msdn.microsoft.com/ mobility microsoft.public. pocketpc.developer smartphone.developer dotnet.framework.compactframework blogs.msdn.com/ windowsmobile vsdteam netcfteam Windows Mobile 5.0 Eval Kit Websites Newsgroups Blogs Tools Build Develop
30
Q&A
31
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
32
Appendix
33
Link Properties Asynchronous Connection-Less (ACL) 721/57.6 kbps max asymmetric 432.6 kbps max symmetric Synchronous Connection-Oriented (SCO) Symmetric Point-to-point channel Used for voice channels 64 kbps bi-directional data streams ACL and SCO can be present in a single piconet Data transmitted in Time Divided Slots
34
Bluetooth v1.2 Faster connection Adaptive frequency hopping Extended SCO links Scatter mode Enhanced error detection and flow control
35
Bluetooth Piconet / Scatternet Piconet Master controls piconet, hopping sequence and phase Up to 7 active slaves Up to 127 “parked” slaves Node must be part of a piconet to communicate Master tells slave when it can transmit Piconets can chain together and form a larger network ( Scatternet ) M S S S M S
36
Bluetooth Services (Profiles) Supported in CE GAP SPP DUN LAP GOEP OPP FTP HS HF HID PAN General Access Profile Serial Port Profile Dialup Networking Profile LAN Access Profile General Object Exchange Profile Object Push Profile File Transfer Profile Headset Profile Handsfree Profile Human Input Device Profile Personal Area Network Profile
37
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);
38
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 );
39
Bluetooth Creating a socket SOCKET s = socket (AF_BT, SOCK_STREAM, BTHPROTO_RFCOMM);
40
Bluetooth Connecting 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));
41
Bluetooth Listening 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);
42
Bluetooth getsockname 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); }
43
Bluetooth getpeername 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); }
44
Bluetooth getsockopt 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,…
45
Bluetooth setsockopt 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, …
46
Bluetooth Discovering Devices WSAQUERYSETwsaq; 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
47
Bluetooth Querying for names Change WSALookupServiceNext to WSALookupServiceNext (hLookup, LUP_RETURN_NAME | LUP_RETURN_ADDR, &dwSize, pwsaResults) … wcscpy (pRes->szName, pwsaResults- >lpszServiceInstanceName);
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.