1/* 2 File: IrDscInfo.h 3 4 Contains: Methods for implementing IrDscInfo (IrLMP's XID discovery/device info) 5 6 7*/ 8 9 10#ifndef __IRDSCINFO_H 11#define __IRDSCINFO_H 12 13#include "IrDATypes.h" 14 15 16// Constants 17 18// Max nickname length (must be shorter if more than one service hints byte) 19#define kMaxNicknameLen 21 20 21enum DevInfoHints 22{ 23 kDevInfoHintPnPSupport = 0x00000001, 24 kDevInfoHintPDA = 0x00000002, 25 kDevInfoHintComputer = 0x00000004, 26 kDevInfoHintPrinter = 0x00000008, 27 kDevInfoHintModem = 0x00000010, 28 kDevInfoHintFAX = 0x00000020, 29 kDevInfoHintLANAccess = 0x00000040, 30 kDevInfoHintExtension1 = 0x00000080, // Not a real hint, an implementation gizmo 31 32 kDevInfoHintTelephony = 0x00000100, 33 kDevInfoHintFileServer = 0x00000200, 34 kDevInfoHintIrCOMM = 0x00000400, 35 kDevInfoHintReserved1 = 0x00000800, 36 kDevInfoHintReserved2 = 0x00001000, 37 kDevInfoHintReserved3 = 0x00002000, 38 kDevInfoHintReserved4 = 0x00004000, 39 kDevInfoHintExtension2 = 0x00008000, // Not a real hint, an implementation gizmo 40 41 kDevInfoHintExtension3 = 0x00800000 // Not a real hint, an implementation gizmo 42}; 43 44#define kHintCount 32 45 46class CBufferSegment; 47 48// Classes 49 50// -------------------------------------------------------------------------------------------------------------------- 51// TIrDscInfo 52// -------------------------------------------------------------------------------------------------------------------- 53 54class TIrDscInfo : public OSObject 55{ 56 OSDeclareDefaultStructors(TIrDscInfo); 57public: 58 static TIrDscInfo * tIrDscInfo(); 59 bool init(void); 60 void free(void); 61 62 63 // Specify DeviceInfo fields 64 void SetVersion(UByte version) { fVersion = version; } 65 void SetServiceHints(ULong hintBits); 66 void RemoveServiceHints( ULong hintBits ); 67 void SetDeviceAddr(ULong address) { fDevAddr = address; } 68 void SetCharacterSet(UByte charset) { fCharset = charset; } 69 IrDAErr SetNickname(const char* name); 70 71 // Obtain DeviceInfo fields 72 UByte GetVersion() { return fVersion; } 73 UByte GetCharacterSet() { return fCharset; } 74 ULong GetServiceHints() { return fHints; } 75 ULong GetDeviceAddr() { return fDevAddr; } 76 void GetNickname(UChar* name, int maxnamelen); 77 78 // Put/Get DevInfo part of the discovery info (service hints, char set, nickname) 79 ULong AddDevInfoToBuffer(UByte* buffer, ULong maxBytes); 80 IrDAErr ExtractDevInfoFromBuffer(CBufferSegment* buffer); 81 82 private: 83 84 ULong fDevAddr; 85 ULong fHints; 86 UByte fVersion; // Of IrLAP supported 87 UByte fCharset; 88 UByte fNickname[kMaxNicknameLen+1]; 89 UByte fHintCount[kHintCount]; 90}; 91 92#endif // __IRDSCINFO_H 93