www.pudn.com > Bluetooth_PMP_Example_v1_0.zip > ServiceDiscoverer.h
/* * ============================================================================ * Name : CServiceDiscoverer from ServiceDiscoverer.h * Part of : BluetoothPMPExample * Created : 14.01.2004 by Forum Nokia * Description: * Declares service discoverer for application * Version : * Copyright: Nokia Corporation * ============================================================================ */ #ifndef SERVICEDISCOVERER_H #define SERVICEDISCOVERER_H // INCLUDES #include#include //#include //#include #include #include #include #include #include #include "Common.h" class MServiceDiscoObserver { public: /*! * HandleServiceDiscoveryCompleteL() * * discussion Observer interface for handling service discovery complete event. */ virtual void HandleServiceDiscoveryCompleteL()=0; }; class CServiceDiscoverer : public CBase, public MSdpAgentNotifier, public MSdpAttributeValueVisitor { public: /*! * NewL() * * discussion Create new CServiceAdvertiser object * return a pointer to the created instance of CServiceAdvertiser */ static CServiceDiscoverer* NewL(MServiceDiscoObserver *aObserver); /*! * NewLC() * */ static CServiceDiscoverer* NewLC(MServiceDiscoObserver *aObserver); /*! * ~CServiceDiscoverer() * * discussion Destroy the object and release all memory objects */ ~CServiceDiscoverer(); /*! * DiscoverServiceOnDeviceL() * * discussion Discovers services on a given device. service discovery * agent will be started to do the service discovery. search pattern * will be used to limit the discovery for our services (matching service * id). * * param aDevData device data record */ void DiscoverServicesOnDeviceL(TDeviceData *aDevData); /*! * DiscoverServiceOnDeviceL() * * discussion Starts service discovery for all given devices. * * param aDevDataList list of devices to do the service discovery for. */ void DiscoverServicesL(TDeviceDataList *aDevDataList); /*! * FinishDiscovery() * * discussion Stops the service discovery, stops the discovery agent. * * param aDevData device data record */ void FinishDiscovery(); /*! * HasServices() * * discussion check if any services were discovered. * * return true if any usable services were discovered. */ TBool HasServices(); private: /*! * CServiceDiscoverer() * * discussion Perform the first phase of two phase construction */ CServiceDiscoverer(MServiceDiscoObserver *aObserver); /*! * ConstructL() * */ void ConstructL(); /*! * HandleServiceDiscoveryCompleteL() * * discussion Handles the service discovery completed event. the handling * request will be passed onto handling observer. */ void HandleServiceDiscoveryCompleteL(); /* * NextRecordRequestComplete() * * discussion called when an service record * (CSdpAgent::NextRecordRequestL()) operation completes. * param aError KErrNone, or an SDP error * param aHandle service record for which the query was made * param aTotalRecordsCount total number of matching records */ void NextRecordRequestComplete( TInt aError, TSdpServRecordHandle aHandle, TInt aTotalRecordsCount); /* * AttributeRequestResult() * * discussion Called by the attribute request * (CSdpAgent::AttributeRequestL()) to pass the results of * a successful attribute request. * * param aHandle service record for which the query was made * param aAttrID ID of the attribute obtained * param aAttrValue attribute value obtained */ void AttributeRequestResult( TSdpServRecordHandle aHandle, TSdpAttributeID aAttrID, CSdpAttrValue* aAttrValue); /*! * AttributeRequestComplete() * * discussion Called when the attribute request * (CSdpAgent::AttributeRequestL()) completes. * * param aHandle service record for which the query was made * param aError KErrNone, or an SDP error */ void AttributeRequestComplete( TSdpServRecordHandle aHandle, TInt aError); /*! * VisitAttributeValueL() * * discussion Called to pass the attribute request values * * param aValue attribute value * param aType attribute type */ void VisitAttributeValueL(CSdpAttrValue &aValue, TSdpElementType aType); // not needed -> not implemented void StartListL(CSdpAttrValueList &aList); // not needed -> not implemented void EndListL(); private: // data // observer reference MServiceDiscoObserver *iObserver; // service discovery agent CSdpAgent* iAgent; // service discovery search pattern CSdpSearchPattern* iSpat; // last discovered uuid in the service attributes TUUID iLastUUID; // port (comm channel) found in the service attributes TUint iPort; // device data record reference TDeviceData *iDevData; // device data list reference TDeviceDataList *iDevDataList; // this indicates that a port number was found in the service attributes // and device data record for this device needs to be updated with the // port number. TBool iDevDataChanged; // index of device in device data list used for service discovery TInt iDeviceIdx; // number of services discovered TInt iDiscoveredServiceCount; }; #endif