1/* 2 File: IrDiscovery.h 3 4 Contains: Class definitions for discovery module 5 6*/ 7 8#ifndef __IRDISCOVERY__ 9#define __IRDISCOVERY__ 10 11#include "IrDATypes.h" 12#include "IrStream.h" 13#include "IrEvent.h" 14// #include "IrExec.h" 15//#include "IrDscInfo.h" 16 17 18enum DiscoverEvent { 19 kMaxDiscoverSlots = 16, 20 kDiscoverDefaultSlotCount = 8 21}; 22 23 24enum DiscoverState { 25 kDiscoverIdle, 26 kDiscoverActive 27}; 28 29 30class TIrLMP; 31class TIrGlue; 32class TIrDscInfo; 33 34class CIrDiscovery : public TIrStream 35{ 36 OSDeclareDefaultStructors(CIrDiscovery); 37 38public: 39 40 static CIrDiscovery *cIrDiscovery(TIrGlue * glue); 41 void free(); 42 43 Boolean Init(TIrGlue * glue); 44 45 void PassiveDiscovery (TIrDscInfo * dscInfo); 46 void GetRemoteDeviceName (UInt32 lapAddr, UInt8 * name, int maxnamelen); 47 TIrDscInfo *GetDiscoveryInfo(void); 48 49 //***************** TESTING 50 //Boolean ExtDiscoveryAvailable(void); // true if not busy (testing?) 51 52 IrDAErr ExtDiscoverStart(UInt32 numSlots); // , 53 //ExtDiscoveryUserCallBackUPP callback, 54 //ExtDiscoveryBlock *userData); 55 56 private: 57 58 void NextState(ULong event); // TIrStream override 59 void DiscoverStart(void); // start a discover 60 void HandleDiscoverComplete(void); // discover finished 61 void DeleteDiscoveredDevicesList(void); 62 63 UInt32 fState; // idle or discovering 64 65 CList *fPendingDiscoverList; // list of pending discover request events 66 CList *fDiscoveredDevices; // list of discovered devices (IrDscInfo) 67 TIrDscInfo *fMyDscInfo; // discovery info for this host 68 69 void HandleExtDiscoverComplete(TIrDiscoverReply * reply); // TESTING ONLY 70}; 71 72inline TIrDscInfo * CIrDiscovery::GetDiscoveryInfo( void ) { return fMyDscInfo; } 73//inline Boolean CIrDiscovery::ExtDiscoveryAvailable( void ) { return fExtDiscRequest == nil; } 74 75#endif // __IRDISCOVERY__ 76 77