diff -r 7fdc9a71d314 -r 8ad140f3dd41 hti/HtiCommPlugins/HtiBtCommPlugin/BtEngine/inc/btservicesearcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hti/HtiCommPlugins/HtiBtCommPlugin/BtEngine/inc/btservicesearcher.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,264 @@ +/* +* Copyright (c) 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: Bluetooth service searcher. +* +*/ + + +#ifndef __BTSERVICESEARCHER_H__ +#define __BTSERVICESEARCHER_H__ + +// INCLUDES +#include +#include +#include + +#include "sdpattributeparser.h" +#include "sdpattributenotifier.h" + +// CONSTANTS +#include "messageprotocolconstants.h" + +// CLASS DECLARATIONS +/** +* CBTServiceSearcher +* Searches for a service on a remote machine +*/ + +class CBTServiceSearcher : public CBase, + public MSdpAgentNotifier, + public MSdpAttributeNotifier + { + public: // Destructor + + /** + * ~CBTServiceSearcher() + * Destroy the object and release all memory objects + */ + virtual ~CBTServiceSearcher(); + + public: // New functions + + /** + * SelectDeviceByDiscoveryL() + * Select a device + * @param aObserverRequestStatus the observer that is to + * be notified when the device selection is complete. + */ + void SelectDeviceByDiscoveryL( TRequestStatus& + aObserverRequestStatus ); + + /** + * SelectDeviceByNameL() + * Select a device by BT device name. + * @param aDeviceName the name of the device to search and select. + * @param aObserverRequestStatus the observer that is to + * be notified when the device selection is complete. + */ + void SelectDeviceByNameL( const TDesC& aDeviceName, + TRequestStatus& aObserverRequestStatus ); + + /** + * FindServiceL() + * Find a service on the specified device + * @param aDeviceAddress the BT address of the device to search for + * the service + * @param aObserverRequestStatus the observer that is to be notified + * when the service search is complete + */ + void FindServiceL( const TBTDevAddr& aDeviceAddress, + TRequestStatus& aObserverRequestStatus ); + + /** + * BTDevAddr() + * @return the bluetooth device address + */ + const TBTDevAddr& BTDevAddr(); + + /** + * ResponseParams() + * @return Information about the device selected by the user + */ + const TBTDeviceResponseParams& ResponseParams(); + + protected: // New functions + + /** + * CBTServiceSearcher() + * Constructs this object + */ + CBTServiceSearcher(); + + /** + * Finished() + * The search has finished. Notify the observer + * that the process is complete. + */ + virtual void Finished( TInt aError = KErrNone ); + + /** + * HasFinishedSearching() + * Is the instance still wanting to search. + * @return EFalse if the instance wants searching to continue. + */ + virtual TBool HasFinishedSearching() const; + + /** + * HasFoundService() + * @return ETrue if a service has been found + */ + TBool HasFoundService() const; + + protected: // abstract methods + + /** + * ProtocolList() + * The list of Protocols required by the service. + */ + virtual const TSdpAttributeParser::TSdpAttributeList& + ProtocolList() const = 0; + + /** + * ServiceClass() + * The service class to search for + * @return the service class UUID + */ + virtual const TUUID& ServiceClass() const = 0; + + /** + * FoundElementL() + * Read the data element + * @param aKey a key that identifies the element + * @param aValue the data element + */ + virtual void FoundElementL( TInt aKey, CSdpAttrValue& aValue ) = 0; + + public: // from MSdpAgentNotifier + + /** + * NextRecordRequestComplete() + * Process the result of the next record request + * @param aError the error code + * @param aHandle the handle of the service record + * @param aTotalRecordsCount the total number of matching + * service records + */ + void NextRecordRequestComplete( TInt aError, + TSdpServRecordHandle aHandle, + TInt aTotalRecordsCount ); + + /** + * AttributeRequestResult() + * Process the next attribute requested + * @param aHandle the handle of the service record + * @param aAttrID the id of the attribute + * @param aAttrValue the value of the attribute + */ + void AttributeRequestResult( TSdpServRecordHandle aHandle, + TSdpAttributeID aAttrID, + CSdpAttrValue* aAttrValue ); + + /** + * AttributeRequestComplete() + * Process the arrtibute request completion + * @param aHandle the handle of the service record + * @param aError the error code + */ + void AttributeRequestComplete( TSdpServRecordHandle aHandle, + TInt aError ); + + private: // Functions from base classes + + /** + * NextRecordRequestCompleteL() + * Process the result of the next record request + * @param aError the error code + * @param aHandle the handle of the service record + * @param aTotalRecordsCount the total number of + * matching service records + */ + void NextRecordRequestCompleteL( TInt aError, + TSdpServRecordHandle aHandle, + TInt aTotalRecordsCount ); + + /** + * AttributeRequestResultL() + * Process the next attribute requested + * @param aHandle the handle of the service record + * @param aAttrID the id of the attribute + * @param aAttrValue the value of the attribute + */ + void AttributeRequestResultL( TSdpServRecordHandle aHandle, + TSdpAttributeID aAttrID, + CSdpAttrValue* aAttrValue ); + + /** + * AttributeRequestCompleteL() + * Process the arrtibute request completion + * @param aHandle the handle of the service record + * @param aError the error code + */ + void AttributeRequestCompleteL( TSdpServRecordHandle, + TInt aError ); + + private: // data + + /** + * iStatusObserver pointer to the request status observer + * Not owned by CBTServiceSearcher + */ + TRequestStatus* iStatusObserver; + + /** + * iIsDeviceSelectorConnected is the device + * selector connected? + */ + TBool iIsDeviceSelectorConnected; + + /** + * iDeviceSelector + * a handle to the bluetooth device selector notifier + */ + RNotifier iDeviceSelector; + + /** + * iResponse + * the response of the device selection. + */ + TBTDeviceResponseParamsPckg iResponse; + + /** + * iSelectionFilter + * Request a device selection + */ + TBTDeviceSelectionParamsPckg iSelectionFilter; + /** + * iAgent a connetction to the SDP client + * Owned by CBTServiceSearcher + */ + CSdpAgent* iAgent; + + /** + * iSdpSearchPattern a search pattern + * Owned by CBTServiceSearcher + */ + CSdpSearchPattern* iSdpSearchPattern; + + /** iHasFoundService has the service been found ? */ + TBool iHasFoundService; + }; + +#endif // __BTSERVICESEARCHER_H__ + +// End of File