diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btexample/example/btsocket/inc/cbtclient.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btexample/example/btsocket/inc/cbtclient.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,118 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : CBtClient.h +* Part of : ex_btsocket +* Created : 17/11/2004 by Shane Kearns +* Client "smart connector" class +* Version : +* +* +*/ + + + +#ifndef CBTCLIENT_H +#define CBTCLIENT_H + +#include +#include +#include +#include "exbtutil.h" +#include "mconnectionobserver.h" + +/** +A helper class for parsing the protocol descriptor list SDP attribute, +in order to retrieve the protocol and port required for connecting +*/ +class TBtClientSdpProtocolListParser : public MSdpAttributeValueVisitor + { + public: + TBtClientSdpProtocolListParser(); + private: + //virtual functions from MSdpAttributeValueVisitor + virtual void VisitAttributeValueL(CSdpAttrValue &aValue, TSdpElementType aType); + virtual void StartListL(CSdpAttrValueList &aList); + virtual void EndListL(); + + public: + //data members + TUint iPort; + TUUID iProtocol; + enum + { + EFoundPort = 0x1, + EFoundProtocol = 0x2, + }; + TUint iFoundFlags; + }; + +/** +This class implements a simple bluetooth application client. +Its responsibility is to make outgoing bluetooth connections. +Most of the complexity in this class deals with using the SDP agent API to +retrieve connection parameters from the remote device. +*/ +class CBtClient : public CActive, MSdpAgentNotifier + { + public: + IMPORT_C static CBtClient* NewL(const TUUID& aServiceUUID, RSocketServ& aSocketServer, MConnectionObserver& aOwner, TBTServiceSecurity* aSecurityRequirements = NULL); + IMPORT_C ~CBtClient(); + + IMPORT_C void ConnectToRemoteDeviceL(MBluetoothSocketNotifier& aSocketOwner); + IMPORT_C void ConnectToRemoteDeviceL(TBTDevAddr& aAddr, MBluetoothSocketNotifier& aSocketOwner); + private: + void ConstructL(TBTServiceSecurity* aSecurityRequirements); + CBtClient(const TUUID& aServiceUUID, RSocketServ& aSocketServer, MConnectionObserver& aOwner); + + void ConnectFailed(TInt aError); + void NewConnection(); + void AttemptConnection(TUUID aProtocol, TUint16 aPort); + + void CallOut(TInt aErr); + //virtual functions from CActive + virtual void RunL(); + virtual void DoCancel(); + + //Virtual functions from MSdpAgentNotifier + virtual void NextRecordRequestComplete(TInt aError, TSdpServRecordHandle aHandle, TInt aTotalRecordsCount); + virtual void AttributeRequestResult(TSdpServRecordHandle aHandle, TSdpAttributeID aAttrID, CSdpAttrValue* aAttrValue); + virtual void AttributeRequestComplete(TSdpServRecordHandle, TInt aError); + + //Data members + /** A socket created in order to make a connection */ + CBluetoothSocket *iConnectionSocket; + /** Handle to the socket server*/ + RSocketServ& iSocketServer; + /** SDP UUID of the service to find */ + TUUID iServiceUUID; + /** SDP agent for performing service search */ + CSdpAgent *iSdpAgent; + /** 48 bit Bluetooth address of the device selected to connect to */ + TBTDevAddr iConnectingToDevice; + /** Security requirements specified by the application */ + TBTServiceSecurity iSecurityRequirements; + /** Handle to an application object - callbacks are sent here */ + MConnectionObserver& iOwner; + /** Helper class for parsing SDP results */ + TBtClientSdpProtocolListParser iParser; + /** Handle to an application object - the socket is created with this as owner*/ + MBluetoothSocketNotifier* iSocketOwner; //not owned + /** Buffer for formatting a socket address*/ + TL2CAPSockAddr iAddrL2CAP; + /** Buffer for formatting a socket address*/ + TRfcommSockAddr iAddrRFCOMM; + }; + +#endif //CBTCLIENT_H