epoc32/include/ir_sock.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/ir_sock.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/ir_sock.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,726 @@
-ir_sock.h
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#ifndef __IR_SOCK_H__
+#define __IR_SOCK_H__
+
+#include "es_sock.h"
+#include <e32property.h>
+
+//################## EXPORTED CONSTANTS ########################
+
+
+/** IrDA protocol family. */
+const TUint KIrdaAddrFamily=0x100;   // Address of Irda prot family
+
+/** IrMUX protocol within the IrDA protocol family. */
+const TUint KIrmux=88;               // Protocol number for Irmux
+
+/** IrTinyTP protocol within the IrDA protocol family.. */
+const TUint KIrTinyTP=89;            // Protocol number for IrTinyTP
+
+/** An invalid LSAP number--binding to this will select the first unused LSAP. */
+const TUint KAutoBindLSAP = 0xffff;
+
+
+/** Category used when publishing IrDA status notifications. */
+const TUid KIrdaPropertyCategory = {KUidSystemCategoryValue};
+
+/** Key used when publishing IrDA status notifications. */
+const TUint KIrdaStatus = 0x100052d1;
+
+
+/** Names used for IrDA status notifications. */
+namespace TIrdaStatusCodes
+	{
+	enum
+		{
+		EIrLoaded,
+		EIrDiscoveredPeer,
+		EIrLostPeer,
+		EIrConnected,
+		EIrBlocked,
+		EIrDisconnected,
+		EIrUnloaded,
+		};
+	}
+
+/** PnP support - first service hint byte. */
+const TUint8 KIrPnPMask=0x01;	   // PnP support - FIRST SERVICE HINT BYTE
+
+/** PDA/Palmtop - first service hint byte. */
+const TUint8 KPalmtopMask=0x02;    // PDA/Palmtop - FIRST SERVICE HINT BYTE
+
+/** Computer - first service hint byte. */
+const TUint8 KComputerMask=0x04;   // Computer - FIRST SERVICE HINT BYTE
+
+/** Printer - first service hint byte. */
+const TUint8 KPrinterMask=0x08;	   // Printer - FIRST SERVICE HINT BYTE
+
+/** IrModem - first service hint byte. */
+const TUint8 KModemMask=0x10;      // IrModem - FIRST SERVICE HINT BYTE
+
+/** Fax - first service hint byte. */
+const TUint8 KFaxMask=0x20;        // Fax - FIRST SERVICE HINT BYTE
+
+/** LAN Access - first service hint byte. */
+const TUint8 KLANAccessMask=0x40;  // LAN Access - FIRST SERVICE HINT BYTE
+
+/** Extension bit - first service hint byte. */
+const TUint8 KExtensionMask=0x80;  // Extension bit - FIRST SERVICE HINT BYTE
+
+/** Telephony - second service hint byte. */
+const TUint8 KTelephonyMask=0x01;  // Telephony - SECOND SERVICE HINT BYTE
+
+/** File Server - second service hint byte. */
+const TUint8 KFileServerMask=0x02; // File Server - SECOND SERVICE HINT BYTE
+
+/** IrCOMM support - second service hint byte. */
+const TUint8 KIrCommMask=0x04;     // IrCOMM support - SECOND SERVICE HINT BYTE
+
+/** IrOBEX support - second service hint byte. */
+const TUint8 KIrObexMask=0x20;     // IrObex support - SECOND SERVICE HINT BYTE
+
+//
+// IrDA Ioctls
+//
+
+/** Completes on receipt of a discovery indication. 
+
+Returns log entry in a TNameEntry. 
+
+Ioctl level : KIrdaAddrFamily */
+const TUint KDiscoveryIndicationIoctl=0;
+
+/** Completes on successfully making RSocket EXCLUSIVE else returns error. 
+
+Completes successfully or returns KErrDisconnected if failed.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KExclusiveModeIoctl=1;
+
+/** Completes on successfully making RSocket MULTIPLEXED else returns error.
+
+Completes successfully or returns KErrDisconnected if failed.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KMultiplexModeIoctl=2;
+
+/** Completes on doing a status request on IrMUX layer packets to send.
+
+Returns TDes8* holding TUint indicating number of outstanding MUX data requests.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrmuxStatusRequestIoctl=3;
+
+/** Completes on doing a status request on IrLAP layer packets to send.
+
+Returns TDes8* holding TUint indicating the number of outstanding LAP data 
+requests.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrlapStatusRequestIoctl=4;
+
+/** Completes on successfully putting RSocket into IDLE mode.
+
+Completes successfully or returns KErrAbort if failed.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIdleRequestIoctl=5;
+
+/** Completes on successfully taking RSocket out of IDLE mode.
+
+Completes successfully or returns KErrAbort if failed.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIdleClearRequestIoctl=6;
+
+/** Completes on receipt of an IrLAP disconnect indication.
+
+Completes successfully on IrLAP or IrMUX disconnect on this connection.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KDisconnectIndicationIoctl=7;
+
+/** Completes on doing a status request on IrLAP layer packets to send.
+
+Returns TDes8* holding TUint indicating the number of outstanding LAP data 
+requests.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrlapStatusIndicationIoctl=8;
+
+/** Completes on receiving a status indication from IrLAP.
+
+Returns TDes8* holding TUint indicating the number of outstanding MUX data 
+requests.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrmuxStatusIndicationIoctl=9;
+
+/** Completes on doing an IrLAP link reset.
+
+Does an SNRMP-UAF link reset which can be initiated from either primary or 
+secondary.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrlapResetRequestIoctl=10;
+
+/** Completes on receipt of an IrLAP link reset indication.
+
+Completes with error value KErrNone if link is successfully reset.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrlapResetIndicationIoctl=11;
+
+/** Completes on doing an IrLAP link reset.
+
+Does a DISCP-UAF link disconnect which can be initiated from either primary 
+or secondary.
+
+Ioctl level: KIrdaAddrFamily */
+const TUint KIrlapDisconnectRequestIoctl=12;
+
+const TUint KExclusiveMode=0;
+
+const TUint KMultiplexMode=1;
+
+
+//********************  Irda Set/GetOpts ******************************
+// These two are done on Socket Write
+//
+
+
+/** KLevelIrlap.
+
+Sets transfer mode to be unexpedited (the default).
+
+Not recommended for use with SetOpt(). Preferred use is with RSocket::Send()
+
+Returns KErrNone */
+const TUint KUnexpeditedDataOpt		= 0;		// Default
+
+/** KLevelIrlap
+
+Sets transfer mode to be expedited (urgent).
+
+Not recommended for use with SetOpt(). Preferred use is with RSocket::Send()
+
+Returns KErrNone */
+const TUint KExpeditedDataOpt		= 1;		// Urgent data transfer
+
+// On KLevelIrlap
+
+/** KLevelIrlap
+
+Sets number of discovery slots.
+
+Returns KErrNone */
+const TUint KDiscoverySlotsOpt		= 2;
+
+/** KLevelIrlap
+
+Sets the requested maximum link baud rate.
+
+Returns KErrInUse, if the link is already running.
+
+Returns with the currently set maximum link baud supported. */
+const TUint KUserBaudOpt			= 3;
+
+/** KLevelIrlap
+
+Sets the requested maximum data packet size that can be received by the host.
+
+Returns KErrInUse, if the link is already running.
+
+Returns with the currently set value for the maximum receivable data size 
+of the host IrLAP layer. */
+const TUint KHostMaxDataSizeOpt		= 4;
+
+/** KLevelIrlap
+
+Returns KErrNotSupported.
+
+Cannot set this value for the remote station.
+
+Returns with the currently set value for the maximum transmissible data size 
+to remote IrLAP layer. */
+const TUint KRemoteMaxDataSizeOpt	= 6;	// Remote packet size
+
+/** KLevelIrlap
+
+Set the maximum link turnaround time for the host IrLAP layer.
+
+Returns KErrInUse, if the link is already running.
+
+Returns with the currently set value for the host link turnaround time */
+const TUint KHostMaxTATimeOpt		= 5;
+
+/** KLevelIrlap
+
+Disables IrLAP level reset_check/wait states */
+const TUint KIrlapDisableResetOpt	= 9;	// This disables Irlap level reset_check/wait states.
+
+/** KLevelIrlap
+
+Allows the client to set local busy in IrLAP. */
+const TUint KLocalBusyDetectedOpt	= 10;	// Client can set local busy in Irlap
+
+/** KLevelIrlap
+
+Allows the client to clear local busy in IrLAP */
+const TUint KLocalBusyClearedOpt	= 11;	// Client can clear local busy in Irlap
+
+/** KLevelIrlap
+
+Disables discovery response for a short period (typically 3 seconds). */
+const TUint KDiscoveryResponseDisableOpt = 12;
+
+/** KLevelIrlap
+
+Sets the host's first service hint byte used in XID frames.
+
+Retrieves the first hint byte. */
+const TUint KFirstHintByteOpt		= 13;	// Hint Bytes
+
+/** KLevelIrlap
+
+Sets the host's second service hint byte used in XID frames.
+
+Retrieves the second hint byte */
+const TUint KSecondHintByteOpt		= 14;
+
+// On KLevelIrmux
+
+/** KLevelIrmux
+
+Turns on transport layer segmentation with the segment size specified. This 
+value is advertised to the remote machine as the maximum amount of data we 
+can reassemble.
+
+Returns KErrNone */
+const TUint KTinyTPLocalSegSizeOpt=7;	// This value is advertised to the remote machine as the max amount of data we can reassemble
+
+/** KLevelIrmux
+
+Queries the remote machine's segment size. The remote machine is unable 
+to assemble more data than this.
+
+Returns the remote machine's segment size. */
+const TUint KTinyTPRemoteSegSizeOpt=8;	// Remote machine is unable to reassemble more data than this
+
+/**
+Disables TinyTP reassembly of segmented packets. */
+const TUint KTinyTPDisabledSegmentation=15;
+/**
+@deprecated
+Disables TinyTP reassembly of segmented packets. */
+const TUint KTinyTPDiasbledSegmentation=15;
+
+/**
+@internalComponent
+*/
+const TUint KIrdaInternalOption=0x4000000;
+
+/**
+@internalTechnology
+*/
+const TUint KTinyTPSetMaxBufferSpace=16 | KIrdaInternalOption;
+
+
+
+/** The option relates to IrLAP. */
+const TUint KLevelIrlap=4;
+
+/** The option relates to IrMUX. */
+const TUint KLevelIrmux=5;
+
+/** The maximum length of a class name in an IAS entry. */
+const TUint KIASClassNameMax=60;
+
+/** The maximum length of an attribute in an IAS entry. */
+const TUint KIASAttributeNameMax=60;
+
+/** The maximum length of a TIASQuery descriptor. */
+const TUint KMaxQueryStringLength=128;
+
+//################# CLASS DEFINITIONS ########################
+
+NONSHARABLE_CLASS(TIrdaSockAddr) : public TSockAddr
+/** An IrDA socket address. 
+	@publishedAll 
+	@released */
+	{
+struct SIrdaAddr
+	{	
+	TUint iHostDevAddr;
+	TUint iRemoteDevAddr;
+	TBool iSniff;
+	TBool iSolicited;
+	TUint8 iIrlapVersion;
+	TUint8 iFirstServiceHintByte;
+	TUint8 iSecondServiceHintByte;
+	TUint8 iCharacterSet;
+	TUint8 iServiceHintByteCount;
+	// Extra stuff for MUX
+	TUint8 iHomePort;
+	TUint8 iRemotePort;
+	TUint8 iSpare;
+    };
+public:
+	IMPORT_C TIrdaSockAddr();
+	IMPORT_C TIrdaSockAddr(const TSockAddr &aAddr);
+	/** Casts a reference to a general socket address into an IrDA socket address.
+	
+	@param aAddr A reference to a general socket address. 
+	@return The socket address returned as a reference to an IrDA socket address. */
+	
+	/** Casts a pointer to a general socket address into an IrDA socket address.
+	
+	@param aAddr A pointer to a general socket address. 
+	@return The socket address returned as a reference to an IrDA socket address. */
+	IMPORT_C static TIrdaSockAddr &Cast(const TSockAddr &aAddr);
+
+	/** Casts a reference to a general socket address into an IrDA socket address.
+	
+	@param aAddr A reference to a general socket address. 
+	@return The socket address returned as a reference to an IrDA socket address. */
+	
+	/** Casts a pointer to a general socket address into an IrDA socket address.
+	
+	@param aAddr A pointer to a general socket address. 
+	@return The socket address returned as a reference to an IrDA socket address. */
+
+	IMPORT_C static TIrdaSockAddr &Cast(const TSockAddr *aAddr);
+	/** Returns the remote device address.
+	
+	@return The remote device address as a 32 bit value. */
+
+	IMPORT_C TUint GetRemoteDevAddr() const;
+	/** Sets the remote device address.
+	
+	@param aRemote The remote device address as a 32-bit value. */
+
+	IMPORT_C void SetRemoteDevAddr(const TUint aRemote);
+	
+	/** Returns the host device address.
+	
+	@return The host device address as a 32 bit value. */
+	IMPORT_C TUint GetHostDevAddr() const;
+	
+	/** Sets the host device address.
+	
+	@param aHost The host device address as a 32-bit value. */
+	IMPORT_C void SetHostDevAddr(const TUint aHost);
+	
+	/** Returns the remote device's sniff status, i.e. whether the device is capable 
+	of sniffing for IrDA devices.
+	
+	@return True, if the device is capable of sniffing for IrDA devices; false, 
+	otherwise. */
+	IMPORT_C TBool GetSniffStatus() const;
+	
+	/** Sets the sniff status for the remote device, i.e. whether the device is capable 
+	of sniffing for IrDA devices.
+	
+	@param aSniff True, if the device is capable of sniffing for IrDA devices; 
+	false, otherwise. */
+	IMPORT_C void SetSniffStatus(const TBool aSniff);
+	
+	/** Returns the solicited status.
+	
+	The solicited status indicates whether a discovery was initiated by the host 
+	device or a remote device.
+	
+	@return True, if the discovery was initiated by the host device; false if 
+	the discovery was initiated by the remote device. */
+	IMPORT_C TBool GetSolicitedStatus() const;
+	
+	/** Sets the solicited status. The solicited status indcates whether a discovery 
+	was initiated by the host device or a remote device.
+	
+	@param aSolicited ETrue, if the discovery was initiated by the host device; 
+	EFalse, if discovery was initiated by the remote device. */
+	IMPORT_C void SetSolicitedStatus(const TBool aSolicited);
+	
+	/** Returns the remote device's IrLAP version number.
+	
+	This should be 0x00 indicating that the device conforms to the IrDA IrLAP 
+	1.00 specification.
+	
+	@return The device's IrLAP version number. */
+	IMPORT_C TUint8 GetIrlapVersion() const;
+	
+	/** Sets the IrLAP version number for the remote device.
+	
+	This should be 0x00 indicating that the device conforms to the IrDA IrLAP 
+	1.00 specification.
+	
+	@param aIrlapVersion The device's IrLAP version number. */
+	IMPORT_C void SetIrlapVersion(const TUint8 aIrlapVersion);
+	
+	/** Returns the character set supported by the remote device.
+	
+	@return One of the TIASCharSet enumerator values defining the character set 
+	supported by the device. */
+	IMPORT_C TUint8 GetCharacterSet() const;
+	
+	/** Sets the character set supported by the remote device.
+	
+	@param aCharacterSet One of the TIASCharSet enumerator values defining the 
+	character set supported by the device */
+	IMPORT_C void SetCharacterSet(const TUint8 aCharacterSet);
+	
+	/** Returns the remote device's first service hint byte. Service hint bytes indicate 
+	the level of IrLMP support provided by the device.
+	
+	@return The first service hint byte. The individual bits have the following 
+	meaning: Bit 0 (0x01) - PnP Compatible Bit 1 (0x02) - PDA/Palmtop Bit 2 (0x04) 
+	- Computer Bit 3 (0x08) - Printer Bit 4 (0x10) - Modem Bit 5 (0x20) - Fax 
+	Bit 6 (0x40) - LAN Access Bit 7 (0x80) - Extension */
+	IMPORT_C TUint8 GetFirstServiceHintByte() const;
+	
+	/** Sets the first service hint byte for the remote device. The service hint bytes 
+	indicate the level of IrLMP support provided by the device.
+	
+	@param aFirstServiceHintByte The first service hint byte. The individual bits 
+	have the following meaning: Bit 0 (0x01) - PnP Compatible Bit 1 (0x02) - PDA/Palmtop 
+	Bit 2 (0x04) - Computer Bit 3 (0x08) - Printer Bit 4 (0x10) - Modem Bit 5 
+	(0x20) - Fax Bit 6 (0x40) - LAN Access Bit 7 (0x80) - Extension */
+	IMPORT_C void SetFirstServiceHintByte(const TUint8 aFirstServiceHintByte);
+	
+	/** Returns the remote device's first service hint byte. Service hint bytes indicate 
+	the level of IrLMP support provided by the device.
+	
+	@return The second service hint byte. The individual bits have the following 
+	meaning: Bit 0 (0x01) - Telephony Bit 1 (0x02) - File Server Bit 2 (0x04) 
+	- IrCOMM Bit 3 (0x08) - reserved Bit 4 (0x10) - reserved Bit 5 (0x20) - IrOBEX 
+	Bit 6 (0x40) - reserved Bit 7 (0x80) - Extension */
+	IMPORT_C TUint8 GetSecondServiceHintByte() const;
+	
+	/** Sets the second service hint byte for the remote device. The service hint bytes 
+	indicate the level of IrLMP support provided by the device.
+	
+	@param aSecondServiceHintByte The second service hint byte. The individual 
+	bits have the following meaning: Bit 0 (0x01) - Telephony Bit 1 (0x02) - File 
+	Server Bit 2 (0x04) - IrCOMM Bit 3 (0x08) - reserved Bit 4 (0x10) - reserved 
+	Bit 5 (0x20) - IrOBEX Bit 6 (0x40) - reserved Bit 7 (0x80) - Extension */
+	IMPORT_C void SetSecondServiceHintByte(const TUint8 aSecondServiceHintByte);
+	
+	/** Returns the number of service hint bytes for the remote device.
+	
+	@return The number of service hint bytes. */
+	IMPORT_C TUint8 GetServiceHintByteCount() const;
+	
+	/** Sets the number of service hint bytes for the remote device.
+	
+	@param aServiceHintByteCount The number of service hint bytes. */
+	IMPORT_C void SetServiceHintByteCount(const TUint8 aServiceHintByteCount);
+	IMPORT_C TUint8 GetHomePort() const;
+	IMPORT_C void SetHomePort(const TUint8 aHomePort);
+	IMPORT_C TUint8 GetRemotePort() const;
+	IMPORT_C void SetRemotePort(const TUint8 aRemotePort);
+private:
+	SIrdaAddr* addrPtr() const;
+	};
+
+enum TIASDataType
+/** An enumeration whose enumerators define the type of response received from 
+an Information Access Service (IAS) query.
+
+@see TIASResponse */
+{
+	/** No response type defined. */
+	EIASDataMissing=0,
+	/** The response type is an integer. */
+	EIASDataInteger=1,
+	/** The response type is binary data. */
+	EIASDataOctetSequence=2,
+	/** The response type is a string. */
+	EIASDataUserString=3
+};
+
+enum TIASCharSet
+/** The character set encoding of the character string response from an IAS query.
+
+@see TIASResponse::GetCharString()
+@see TIrdaSockAddr::GetCharacterSet() */
+	{ 
+	/** String is standard ASCII. */
+	EIASCharSetUserStringASCII =0x00,
+	/** String is ISO Latin-1. */
+	EIASCharSetUserStringISO_8859_1=0x01,
+	/** String is ISO Latin-2. */
+	EIASCharSetUserStringISO_8859_2=0x02,
+	/** String is ISO Latin-3. */
+	EIASCharSetUserStringISO_8859_3=0x03,
+	/** String is ISO Latin-4. */
+	EIASCharSetUserStringISO_8859_4=0x04,
+	/** String is ISO-8859-5 (Cyrillic). */
+	EIASCharSetUserStringISO_8859_5=0x05,
+	/** String is ISO-8859-6 (Arabic). */
+	EIASCharSetUserStringISO_8859_6=0x06,
+	/** String is ISO-8859-7 (Greek). */
+	EIASCharSetUserStringISO_8859_7=0x07,
+	/** String is ISO-8859-8 (Hebrew). */
+	EIASCharSetUserStringISO_8859_8=0x08,
+	/** String is ISO Latin-5. */
+	EIASCharSetUserStringISO_8859_9=0x09,
+	/** String is UNICODE. */
+	EIASCharSetUserStringUnicode=0xFF,
+	};
+
+NONSHARABLE_CLASS(TIASQuery) : public TBuf8<KMaxQueryStringLength>
+/** An Information Access Service (IAS) query to another device's IAS server.
+@publishedAll
+@released
+@see TIASResponse */
+	{
+public:
+	IMPORT_C TIASQuery(const TDesC8& aClass,const TDesC8& aAttribute,TUint aRemoteDevAddr);
+	IMPORT_C TIASQuery();
+	IMPORT_C void Set(const TDesC8& aClass,const TDesC8& aAttribute,TUint aRemoteDevAddr);
+	IMPORT_C void Get(TDes8& aClass,TDes8& aAttribute,TUint& aRemoteDevAddr);
+private:
+	// This data padding has been added to help prevent future binary compatibility breaks	
+	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
+	TUint32     iPadding1; 
+	TUint32     iPadding2; 
+	};
+
+NONSHARABLE_CLASS(TIASResponse) : public TBuf8<KMaxQueryStringLength>
+/** Response from an Information Access Service (IAS) query to another device's 
+IAS server.
+@publishedAll
+@released
+@see TIASQuery */
+	{
+public:		// But not exported :-)
+	void SetToInteger(TUint anInteger);
+	void SetToCharString(const TDesC8& aCharString);
+	void SetToOctetSeq(const TDesC8& aData);
+#ifdef _UNICODE
+	void SetToCharString(const TDesC16& aWideString);
+#endif
+
+public:
+	IMPORT_C TIASResponse();
+/** Indicates the response contains a list. */
+	IMPORT_C TBool IsList() const;
+/** Indicates the number of items in the response. */
+	IMPORT_C TInt NumItems() const;
+
+/** Returns the type of the response.
+	
+	@return An enumeration identifying the type of response. */
+	IMPORT_C TIASDataType Type() const;
+
+	IMPORT_C TInt GetInteger(TInt &aResult,TInt anIndex=0) const;
+	IMPORT_C TInt GetOctetSeq(TDes8 &aResult,TInt anIndex=0) const;
+	IMPORT_C TInt GetCharString(TDes8 &aResult,TInt anIndex=0) const;
+	IMPORT_C const TPtrC8 GetCharString8(TInt anIndex=0) const;
+	
+	/** Gets the response string.
+	
+	This is called if the response type indicates a string.
+	
+	@param aResult On return, an 8 bit modifiable descriptor containing the response 
+	string. The length of the response string can never be greater than the value 
+	of (KMaxQueryStringLength - 3). 
+	@param anIndex Reserved for future use. This argument must be allowed to default 
+	to 0 and must not be overriden. 
+	@return If successful, one of the TIASCharSet enumerator values defining the 
+	character set encoding of the response string. KErrNotSupported, if a non-zero 
+	value has been specified for anIndex. KErrCorrupt, if the response type is 
+	not a string. 
+	@see TIASResponse::Type() */
+	IMPORT_C TInt GetCharString(TDes16 &aResult,TInt anIndex=0) const;
+
+	IMPORT_C const TPtrC16 GetCharString16(TInt anIndex=0) const;
+	
+private:
+	// This data padding has been added to help prevent future binary compatibility breaks	
+	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
+	TUint32     iPadding1;
+	TUint32     iPadding2;	
+	};
+
+NONSHARABLE_CLASS(TIASDatabaseEntryV001)
+/** The data for an Information Access Service (IAS) record in the network database.
+
+An object of this type is contained in a packaged modifiable buffer descriptor.
+@publishedAll
+@released
+@see TIASDatabaseEntry */
+	{
+public:
+	IMPORT_C TIASDatabaseEntryV001();
+	
+	/** The class name for the IAS entry
+	
+	This is a template specialisation of a TBuf8<TInt> */
+	TBuf8<KIASClassNameMax> iClassName;
+	
+	/** The attribute for the IAS entry.
+	
+	This is a template specialisation of a TBuf8<TInt> */
+	TBuf8<KIASAttributeNameMax> iAttributeName;
+	
+	/** The response data. */
+	TIASResponse iData;
+	
+private:
+	// This data padding has been added to help prevent future binary compatibility breaks	
+	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
+	TUint32     iPadding1; 
+	TUint32     iPadding2; 	
+	};
+	
+NONSHARABLE_CLASS(TIASDatabaseEntry) : public TPckgBuf<TIASDatabaseEntryV001>
+/** An Information Access Service (IAS) record in the network database.
+
+The record data is contained in an object of type TIASDatabaseEntryV001 packaged 
+in a modifiable buffer descriptor.
+@publishedAll
+@released
+@see RNetDatabase */
+	{
+public:
+	IMPORT_C void SetClassName(const TDesC8& aClassName);
+	IMPORT_C void SetAttributeName(const TDesC8& anAttributeName);
+	IMPORT_C void SetToInteger(const TUint anInteger);
+	IMPORT_C void SetToCharString(const TDesC8& aCharString);
+	
+	/** Sets the response type corresponding to the class and attribute defined in 
+	this record, as binary data.
+	
+	@param aData The response binary data. The length of this data can never be 
+	greater than (KMaxQueryStringLength - 3). */
+	IMPORT_C void SetToOctetSeq(const TDesC8& aData);
+
+#ifdef _UNICODE	//need to be able to enter wide entries in unicode builds
+	IMPORT_C void SetToCharString(const TDesC16& aWideString);//new export
+#endif
+	};
+
+#endif // __IR_SOCK_H__