www.pudn.com > Bluetooth_PMP_Example_v1_0.zip > BluetoothPMPExampleEngine.h


/* 
* ============================================================================ 
*  Name     : CBluetoothPMPExampleEngine from BluetoothPMPExampleEngine.h 
*  Part of  : BluetoothPMPExample 
*  Created  : 14.01.2004 by Forum Nokia 
*  Description: 
*     Declares container control for application. 
*  Version  : 
*  Copyright: Nokia Corporation 
* ============================================================================ 
*/ 
 
#ifndef BLUETOOTHPMPEXAMPLEENGINE_H 
#define BLUETOOTHPMPEXAMPLEENGINE_H 
 
// INCLUDES 
#include  
#include   
 
#include  
#include  
#include  
#include  
#include  
#include   
 
 
#include "BluetoothPMPExample.hrh" 
#include "BluetoothPMPExampleContainer.h"	 
#include "BluetoothPMPExampleAppUi.h" 
 
#include "Common.h" 
#include "DeviceDiscoverer.h" 
#include "ServiceDiscoverer.h" 
#include "Listener.h" 
#include "Connector.h" 
 
// maximum number of bluetooth device connections 
const TInt KMaxConnectedDevices=7; 
 
// length of label message buffer 
const TInt KMsgLength = 384; 
 
    
// FORWARD DECLARATIONS 
class CBluetoothPMPExampleContainer; 
class CDeviceDiscoverer; 
class CServiceAdvertiser; 
class CServiceDiscoverer; 
class CListener; 
class CConnector; 
 
 
// CLASS DECLARATION 
 
/** 
*  CBluetoothPMPExampleEngine application engine class. 
*   
*/ 
class CBluetoothPMPExampleEngine : public CBase,  
								   public MListenerObserver, 
								   public MConnectorObserver, 
								   public MDeviceDiscoObserver, 
								   public MServiceDiscoObserver 
{ 
public: 
      
/*! 
 * NewL() 
 *  
 * discussion Create new CBluetoothPMPExampleEngine object 
 * return a pointer to the created instance of CBluetoothPMPExampleEngine 
 */ 
	static CBluetoothPMPExampleEngine* NewL(CBluetoothPMPExampleAppUi*  
		/* aAppUi */); 
		 
/*! 
 * NewLC() 
 *  
 */ 
	static CBluetoothPMPExampleEngine* NewLC(CBluetoothPMPExampleAppUi*  
		/* aAppUi */); 
 
/*! 
 * ~CBluetoothPMPExampleContainer() 
 * 
 * discussion Destroy the object and release all memory objects 
 */ 
	~CBluetoothPMPExampleEngine(); 
 
public: // New functions 
 
/*! 
 * DiscoverDevicesL() 
 * 
 * discussion Discovers bluetooth devices within range.  the discovered  
 * devices will be displayed to user. 
 */ 
	void DiscoverDevicesL(); 
 
/*! 
 * StartServiceDiscovery() 
 * 
 * discussion Starts service discovery for services on remote devices. 
 */ 
	void DiscoverServicesL(); 
 
/*! 
 * StartSlaveL() 
 * 
 * discussion Starts the application in slave more.  the application will open 
 * listening socket to listen to incoming connection request, and advertise 
 * its services. 
 */ 
	void StartSlaveL(); 
 
/*! 
 * SendMessage() 
 * 
 * discussion Send a message to all connected slaves.  the user will be 
 * prompted to enter the message text he/she wishes to send. 
 */ 
	void SendMessage(); 
 
/*! 
 * ConnectDevicesL() 
 * 
 * discussion Connects to the remote devices that were discovered to offer 
 * the service we require.   
 */ 
	void ConnectDevicesL(); 
 
/*! 
 * DisconnectDevicesL() 
 * 
 * discussion Disconnects from connected remote devices. 
 */ 
	void DisconnectDevicesL(); 
 
/*! 
 * ShowConnectedDevicesL() 
 * 
 * discussion Displays the connected remote devices. 
 */ 
	void ShowConnectedDevicesL(); 
 
/*! 
 * HandleListenerDataReceivedL() 
 * 
 * discussion Handles the data slave received from a master. 
 * 
 * param aData the data received. 
 */ 
	void HandleListenerDataReceivedL(TDesC& aData); 
 
/*! 
 * HandleConnectedDataReceivedL() 
 * 
 * discussion Handles the data a master received from a slave. 
 * 
 * param aName the name of the slave that sent the data. 
 * param aData the data received. 
 */ 
	void HandleConnectorDataReceivedL(THostName aName, TDesC& aData); 
 
/*! 
 * HandleListenerConnectedL() 
 * 
 * discussion Handles the event of slave connection (slave was connected to 
 * by master).  user will be notified of connection. 
 */ 
	void HandleListenerConnectedL(); 
 
/*! 
 * HandleListenerDisconnectedL() 
 * 
 * discussion Handles the event of slave disconnection, the master connection 
 * to slave was terminated.  user will be notitied of disconnection. 
 */ 
	void HandleListenerDisconnectedL(); 
 
/*! 
 * HandleDeviceDiscoveryCompleteL() 
 * 
 * discussion Handles the event of device discovery completion.  the  
 * discovered devices will be displayed to user. 
 */ 
	void HandleDeviceDiscoveryCompleteL(); 
 
/*! 
 * HandleServiceDiscoveryCompleteL() 
 * 
 * discussion Handles the event of service discovery completion.  the  
 * discovered services will be displayed to user. 
 */ 
	void HandleServiceDiscoveryCompleteL(); 
 
/*! 
 * HasConnection() 
 * 
 * discussion Returns true if master has any slave connections. 
 */ 
	TBool HasConnections(); 
 
	 
private: // in-class methods 
 
/*! 
 * ShowMessageL() 
 * 
 * discussion Displays application messages for user on a label 
 * 
 * param aMsg text to be displayed 
 * param aReset if true, the label will be cleared before displaying aMsg, 
 *    if false, aMsg text will be appended to existing message on label 
 */ 
	void ShowMessageL(const TDesC& /* aMsg */, TBool /* aReset=false */); 
 
 
private: // Basic two-phase EPOC constructors 
 
/*! 
 * ConstructL() 
 * 
 */ 
    void ConstructL(); 
 
/*! 
 * CBluetoothPMPExampleContainer() 
 * 
 * discussion Perform the first phase of two phase construction  
 */ 
    CBluetoothPMPExampleEngine(CBluetoothPMPExampleAppUi* /* aAppUi */); 
 
 
public:		// data members 
	// listener 
	CListener* iListener; 
	// device discoverer 
	CDeviceDiscoverer* iDeviceDiscoverer; 
	// service advertiser 
	CServiceAdvertiser* iServiceAdvertiser; 
	// service discoverer 
	CServiceDiscoverer* iServiceDiscoverer; 
	// true if the application is acting as a slave 
	TBool iIsSlave; 
	 
private:	// data members         
	// application UI object reference 
	CBluetoothPMPExampleAppUi* iAppUi; 
	// socket server 
	RSocketServ iSocketServ; 
	// contains the messages shown on label 
	TBuf iMsg; 
	// number of lines in above 
	TInt iMsgLines; 
	// array holding the connectors 
	CConnector *iConnectedDevices[KMaxConnectedDevices]; 
	// device data list reference 
	TDeviceDataList iDevDataList; 
	// number of slave connections master has 
	TInt iConnectedDeviceCount; 
	 
}; 
 
#endif 
 
// End of File