#ifndef __IRDISCOVERY__
#define __IRDISCOVERY__
#include "IrDATypes.h"
#include "IrStream.h"
#include "IrEvent.h"
enum DiscoverEvent {
kMaxDiscoverSlots = 16,
kDiscoverDefaultSlotCount = 8
};
enum DiscoverState {
kDiscoverIdle,
kDiscoverActive
};
class TIrLMP;
class TIrGlue;
class TIrDscInfo;
class CIrDiscovery : public TIrStream
{
OSDeclareDefaultStructors(CIrDiscovery);
public:
static CIrDiscovery *cIrDiscovery(TIrGlue * glue);
void free();
Boolean Init(TIrGlue * glue);
void PassiveDiscovery (TIrDscInfo * dscInfo);
void GetRemoteDeviceName (UInt32 lapAddr, UInt8 * name, int maxnamelen);
TIrDscInfo *GetDiscoveryInfo(void);
IrDAErr ExtDiscoverStart(UInt32 numSlots);
private:
void NextState(ULong event); void DiscoverStart(void); void HandleDiscoverComplete(void); void DeleteDiscoveredDevicesList(void);
UInt32 fState;
CList *fPendingDiscoverList; CList *fDiscoveredDevices; TIrDscInfo *fMyDscInfo;
void HandleExtDiscoverComplete(TIrDiscoverReply * reply); };
inline TIrDscInfo * CIrDiscovery::GetDiscoveryInfo( void ) { return fMyDscInfo; }
#endif // __IRDISCOVERY__