00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef LISTENER_H
00031 #define LISTENER_H
00032
00033
00034 #include <e32base.h>
00035
00036 #include <es_sock.h>
00037 #include <btdevice.h>
00038 #include <bt_sock.h>
00039 #include <btmanclient.h>
00040
00041 #include "Common.h"
00042
00043 const TInt KReceivedBufferSize = 40;
00044
00045 class MListenerObserver
00046 {
00047
00048 public:
00054 virtual void HandleListenerDataReceivedL(const TDesC& aData)=0;
00060 virtual void HandleListenerConnectedL()=0;
00066 virtual void HandleListenerDisconnectedL()=0;
00067 };
00068
00069
00070 class CListener : public CActive
00071 {
00072 public:
00073
00080 static CListener* NewL(MListenerObserver& aObserver,
00081 RSocketServ& aSocketServ);
00082
00087 static CListener* NewLC(MListenerObserver& aObserver,
00088 RSocketServ& aSocketServ);
00089
00095 ~CListener();
00096
00105 void StartListenerL(TInt& aChannel);
00106
00112 void StopListener();
00113
00122 void SendData(const TDesC8& aData);
00123
00131 TBool IsConnected();
00132
00133 protected:
00134
00140 void RunL();
00141
00147 void DoCancel();
00148
00149 TInt RunError(TInt aError);
00150
00151 private:
00152
00161 CListener(MListenerObserver& aObserver, RSocketServ& aSocketServ);
00162
00167 void ConstructL();
00168
00174 void ReceiveData();
00175
00181 void SetSecurityL(TInt );
00182
00191 void HandleListenerDataReceivedL(const TDesC& aData);
00192
00199 void HandleListenerConnectedL();
00200
00208 void HandleListenerDisconnectedL();
00209
00210
00211 public:
00212
00213
00214 RSocket iListenSock;
00215
00216 RSocket iSock;
00217
00218 TSockXfrLength iLen;
00219
00220 TBuf8<KReceivedBufferSize> iBuffer;
00221
00222 MListenerObserver& iObserver;
00223
00224 RSocketServ& iSocketServ;
00225
00226 TBool iIsConnected;
00227
00228 enum TState
00229 {
00230 ENone = 1,
00231 EConnecting,
00232 EWaiting,
00233 ESending
00234 };
00235
00236 TState iState;
00237 };
00238
00239 #endif