00001
00002
00003
00004
00005
00006 #ifndef __BT_DISCOVERER_H__
00007 #define __BT_DISCOVERER_H__
00008
00009
00010 #include <e32base.h>
00011 #include <btsdp.h>
00012 #include <e32std.h>
00013 #include <btextnotifiers.h>
00014 #include <bt_sock.h>
00015 #include <BTDevice.h>
00016 #include <es_sock.h>
00017 #include <badesca.h>
00018
00019
00020 const TInt KBTDeviceLength = 40;
00021 const TInt KBTDeviceAddress = 40;
00022
00023
00024 class CSharedIntermediator;
00025
00026
00027
00031 class CBTDiscoverer: public CActive
00032 {
00033 public:
00034
00042 static CBTDiscoverer* NewL(CSharedIntermediator* aSMediator);
00043
00047 static CBTDiscoverer* NewLC(CSharedIntermediator* aSMediator);
00048
00054 ~CBTDiscoverer();
00055
00056
00057 void RunL();
00058 TInt RunError(TInt aError);
00059 void DoCancel();
00060
00066 void StartDiscoveringDevicesL();
00067
00073 void RefreshDevices();
00074
00081 CArrayPtrFlat< HBufC >* GetNames();
00082
00089 CArrayPtrFlat< HBufC >* GetDeviceAddress();
00090
00091 private:
00092
00098 CBTDiscoverer(CSharedIntermediator* aSMediator);
00099
00103 void ConstructL();
00104
00105 private:
00106
00113 void PushListL(TNameEntry& aNameEntry);
00114
00121 void TransformSockAddressL(TInquirySockAddr& aInquirySockAddr);
00122
00123 private:
00124
00125
00126 RArray<TInquirySockAddr> iInqSockAddrArray;
00127
00128
00129 CArrayPtrFlat< HBufC >* iDeviceAddress;
00130
00131
00132 CArrayPtrFlat< HBufC >* iDeviceNames;
00133
00134
00135 RSocketServ iSocketServer;
00136
00137
00138 RHostResolver iHostResolver;
00139
00140
00141 TInquirySockAddr iSockAddr;
00142
00143
00144 TNameEntry iNameEntry;
00145
00146
00147 CSharedIntermediator* iSMediator;
00148 };
00149
00150 #endif // __BT_DISCOVERER_H__