This tutorial describes how to enable a Bluetooth connection using the AIW Service API. This API also enables applications to register for callback notifications when a phone comes in contact with another phone and gets paired successfully.
Define an AIW_INTEREST
resource element in the application using F
as the service command and KAiwClassBase
as the service class:
RESOURCE AIW_INTEREST r_example_app_aiw_nfc_bt_interest { items = { AIW_CRITERIA_ITEM { id = 200002; serviceCmd = KAiwCmdNFCEasySetup; contentType = "*"; serviceClass = KAiwClassBase; maxProviders = 1; } }; }
Register Bluetooth pairing callbacks using any of the following ways:
Run the KAiwCmdNFCEasySetup
service command
with KAiwOptASyncronous
as the only parameter:
iAiwServiceHandler = CAiwServiceHandler::NewL(); iAiwServiceHandler->AttachL( R_EXAMPLE_APP_AIW_NFC_BT_INTEREST ); iAiwServiceHandler->ExecuteServiceCmdL( KAiwCmdNFCEasySetup, iAiwServiceHandler->InParamList(), iAiwServiceHandler->OutParamListL(), KAiwOptASyncronous, this );
ExecuteServiceCmdL
method without any
optional parameter (value 0). When one phone comes in contact with
another and before a time-out occurs, the ExecuteServiceCmdL
method sets up a Bluetooth connection between the two phones.iAiwServiceHandler->ExecuteServiceCmdL( KAiwCmdNFCEasySetup, iAiwServiceHandler->InParamListL(), iAiwServiceHandler->OutParamListL(), 0, this );
Note: The previous service commands must be
canceled before ExecuteServiceCmdL
is called.
Implement
the MAiwNotifyCallback::HandleNotifyL
method to receive
callback notifications when the two NFC enabled devices are held together
and the Bluetooth information have been exchanged between the devices.
To start the Bluetooth Out-Of-Band (OOB) pairing, call ExecureServiceCmdL()
after the KAiwEventStarted
event has been received.
If the pairing (that is authenticated Bluetooth link) is not required, Reset()
must be called when receiving the KAiwEventStarted
event.
TInt CExampleApplication::HandleNotifyL( TInt aCmdId, TInt aEventId, CAiwGenericParamList& /*aEventParamList*/, const CAiwGenericParamList& /*aInParamList*/ ) { If ( aCmdId == KAiwCmdNFCEasySetup ) { if ( aEventId == KAiwEventStarted ) { // aEventParamList contains information about the other device // Start OOB pairing by calling ExecuteServiceCmdL another time. // If pairing is not needed, Reset should be called already here. iAiwServiceHandler->ExecuteServiceCmdL( KAiwCmdNFCEasySetup, iAiwServiceHandler->InParamListL(), iAiwServiceHandler->OutParamListL(), KAiwOptASyncronous, this ); } else if ( aEventId == KAiwEventCompleted ) { // Easy Setup completed – release touch iAiwServiceHandler->Reset(); } else // KAiwEventError { // In case of easy setup failure release must be done // For preparation failure resetting is not necessary iAiwServiceHandler->Reset(); } } return KErrNone;
In KAiwEventStarted
event aEventParamList
contains a buffer with information about the device that was touched.
The information in the buffer may contain multiple item, the type
of each defined by the first byte of the item:
Item identifier byte |
Item description |
---|---|
0x00 |
RFU |
0x01 |
Bluetooth information |
0x02 |
20:02:45.841 ....0x2 // KPeerDeviceNameEasyDataType 20:02:45.841 ....0xb // devicename length 11 20:02:45.841 ....0x4e // N 20:02:45.841 ....0x6f // o 20:02:45.841 ....0x6b // k 20:02:45.841 ....0x69 // i 20:02:45.841 ....0x61 // a 20:02:45.841 ....0x20 // space 20:02:45.841 ....0x43 // C 20:02:45.841 ....0x37 // 7 20:02:45.841 ....0x2d // - 20:02:45.841 ....0x30 // 0 20:02:45.841 ....0x30 // 0 |
Format of the Bluetooth information item is following: