#ifndef __IRDSCINFO_H
#define __IRDSCINFO_H
#include "IrDATypes.h"
#define kMaxNicknameLen 21
enum DevInfoHints
{
kDevInfoHintPnPSupport = 0x00000001,
kDevInfoHintPDA = 0x00000002,
kDevInfoHintComputer = 0x00000004,
kDevInfoHintPrinter = 0x00000008,
kDevInfoHintModem = 0x00000010,
kDevInfoHintFAX = 0x00000020,
kDevInfoHintLANAccess = 0x00000040,
kDevInfoHintExtension1 = 0x00000080,
kDevInfoHintTelephony = 0x00000100,
kDevInfoHintFileServer = 0x00000200,
kDevInfoHintIrCOMM = 0x00000400,
kDevInfoHintReserved1 = 0x00000800,
kDevInfoHintReserved2 = 0x00001000,
kDevInfoHintReserved3 = 0x00002000,
kDevInfoHintReserved4 = 0x00004000,
kDevInfoHintExtension2 = 0x00008000,
kDevInfoHintExtension3 = 0x00800000 };
#define kHintCount 32
class CBufferSegment;
class TIrDscInfo : public OSObject
{
OSDeclareDefaultStructors(TIrDscInfo);
public:
static TIrDscInfo * tIrDscInfo();
bool init(void);
void free(void);
void SetVersion(UByte version) { fVersion = version; }
void SetServiceHints(ULong hintBits);
void RemoveServiceHints( ULong hintBits );
void SetDeviceAddr(ULong address) { fDevAddr = address; }
void SetCharacterSet(UByte charset) { fCharset = charset; }
IrDAErr SetNickname(const char* name);
UByte GetVersion() { return fVersion; }
UByte GetCharacterSet() { return fCharset; }
ULong GetServiceHints() { return fHints; }
ULong GetDeviceAddr() { return fDevAddr; }
void GetNickname(UChar* name, int maxnamelen);
ULong AddDevInfoToBuffer(UByte* buffer, ULong maxBytes);
IrDAErr ExtractDevInfoFromBuffer(CBufferSegment* buffer);
private:
ULong fDevAddr;
ULong fHints;
UByte fVersion; UByte fCharset;
UByte fNickname[kMaxNicknameLen+1];
UByte fHintCount[kHintCount];
};
#endif // __IRDSCINFO_H