epoc32/include/ir_sock.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 /**
    17  @file
    18  @publishedAll
    19  @released
    20 */
    21 
    22 #ifndef __IR_SOCK_H__
    23 #define __IR_SOCK_H__
    24 
    25 #include "es_sock.h"
    26 #include <e32property.h>
    27 
    28 //################## EXPORTED CONSTANTS ########################
    29 
    30 
    31 /** IrDA protocol family. */
    32 const TUint KIrdaAddrFamily=0x100;   // Address of Irda prot family
    33 
    34 /** IrMUX protocol within the IrDA protocol family. */
    35 const TUint KIrmux=88;               // Protocol number for Irmux
    36 
    37 /** IrTinyTP protocol within the IrDA protocol family.. */
    38 const TUint KIrTinyTP=89;            // Protocol number for IrTinyTP
    39 
    40 /** An invalid LSAP number--binding to this will select the first unused LSAP. */
    41 const TUint KAutoBindLSAP = 0xffff;
    42 
    43 
    44 /** Category used when publishing IrDA status notifications. */
    45 const TUid KIrdaPropertyCategory = {KUidSystemCategoryValue};
    46 
    47 /** Key used when publishing IrDA status notifications. */
    48 const TUint KIrdaStatus = 0x100052d1;
    49 
    50 
    51 /** Names used for IrDA status notifications. */
    52 namespace TIrdaStatusCodes
    53 	{
    54 	enum
    55 		{
    56 		EIrLoaded,
    57 		EIrDiscoveredPeer,
    58 		EIrLostPeer,
    59 		EIrConnected,
    60 		EIrBlocked,
    61 		EIrDisconnected,
    62 		EIrUnloaded,
    63 		};
    64 	}
    65 
    66 /** PnP support - first service hint byte. */
    67 const TUint8 KIrPnPMask=0x01;	   // PnP support - FIRST SERVICE HINT BYTE
    68 
    69 /** PDA/Palmtop - first service hint byte. */
    70 const TUint8 KPalmtopMask=0x02;    // PDA/Palmtop - FIRST SERVICE HINT BYTE
    71 
    72 /** Computer - first service hint byte. */
    73 const TUint8 KComputerMask=0x04;   // Computer - FIRST SERVICE HINT BYTE
    74 
    75 /** Printer - first service hint byte. */
    76 const TUint8 KPrinterMask=0x08;	   // Printer - FIRST SERVICE HINT BYTE
    77 
    78 /** IrModem - first service hint byte. */
    79 const TUint8 KModemMask=0x10;      // IrModem - FIRST SERVICE HINT BYTE
    80 
    81 /** Fax - first service hint byte. */
    82 const TUint8 KFaxMask=0x20;        // Fax - FIRST SERVICE HINT BYTE
    83 
    84 /** LAN Access - first service hint byte. */
    85 const TUint8 KLANAccessMask=0x40;  // LAN Access - FIRST SERVICE HINT BYTE
    86 
    87 /** Extension bit - first service hint byte. */
    88 const TUint8 KExtensionMask=0x80;  // Extension bit - FIRST SERVICE HINT BYTE
    89 
    90 /** Telephony - second service hint byte. */
    91 const TUint8 KTelephonyMask=0x01;  // Telephony - SECOND SERVICE HINT BYTE
    92 
    93 /** File Server - second service hint byte. */
    94 const TUint8 KFileServerMask=0x02; // File Server - SECOND SERVICE HINT BYTE
    95 
    96 /** IrCOMM support - second service hint byte. */
    97 const TUint8 KIrCommMask=0x04;     // IrCOMM support - SECOND SERVICE HINT BYTE
    98 
    99 /** IrOBEX support - second service hint byte. */
   100 const TUint8 KIrObexMask=0x20;     // IrObex support - SECOND SERVICE HINT BYTE
   101 
   102 //
   103 // IrDA Ioctls
   104 //
   105 
   106 /** Completes on receipt of a discovery indication. 
   107 
   108 Returns log entry in a TNameEntry. 
   109 
   110 Ioctl level : KIrdaAddrFamily */
   111 const TUint KDiscoveryIndicationIoctl=0;
   112 
   113 /** Completes on successfully making RSocket EXCLUSIVE else returns error. 
   114 
   115 Completes successfully or returns KErrDisconnected if failed.
   116 
   117 Ioctl level: KIrdaAddrFamily */
   118 const TUint KExclusiveModeIoctl=1;
   119 
   120 /** Completes on successfully making RSocket MULTIPLEXED else returns error.
   121 
   122 Completes successfully or returns KErrDisconnected if failed.
   123 
   124 Ioctl level: KIrdaAddrFamily */
   125 const TUint KMultiplexModeIoctl=2;
   126 
   127 /** Completes on doing a status request on IrMUX layer packets to send.
   128 
   129 Returns TDes8* holding TUint indicating number of outstanding MUX data requests.
   130 
   131 Ioctl level: KIrdaAddrFamily */
   132 const TUint KIrmuxStatusRequestIoctl=3;
   133 
   134 /** Completes on doing a status request on IrLAP layer packets to send.
   135 
   136 Returns TDes8* holding TUint indicating the number of outstanding LAP data 
   137 requests.
   138 
   139 Ioctl level: KIrdaAddrFamily */
   140 const TUint KIrlapStatusRequestIoctl=4;
   141 
   142 /** Completes on successfully putting RSocket into IDLE mode.
   143 
   144 Completes successfully or returns KErrAbort if failed.
   145 
   146 Ioctl level: KIrdaAddrFamily */
   147 const TUint KIdleRequestIoctl=5;
   148 
   149 /** Completes on successfully taking RSocket out of IDLE mode.
   150 
   151 Completes successfully or returns KErrAbort if failed.
   152 
   153 Ioctl level: KIrdaAddrFamily */
   154 const TUint KIdleClearRequestIoctl=6;
   155 
   156 /** Completes on receipt of an IrLAP disconnect indication.
   157 
   158 Completes successfully on IrLAP or IrMUX disconnect on this connection.
   159 
   160 Ioctl level: KIrdaAddrFamily */
   161 const TUint KDisconnectIndicationIoctl=7;
   162 
   163 /** Completes on doing a status request on IrLAP layer packets to send.
   164 
   165 Returns TDes8* holding TUint indicating the number of outstanding LAP data 
   166 requests.
   167 
   168 Ioctl level: KIrdaAddrFamily */
   169 const TUint KIrlapStatusIndicationIoctl=8;
   170 
   171 /** Completes on receiving a status indication from IrLAP.
   172 
   173 Returns TDes8* holding TUint indicating the number of outstanding MUX data 
   174 requests.
   175 
   176 Ioctl level: KIrdaAddrFamily */
   177 const TUint KIrmuxStatusIndicationIoctl=9;
   178 
   179 /** Completes on doing an IrLAP link reset.
   180 
   181 Does an SNRMP-UAF link reset which can be initiated from either primary or 
   182 secondary.
   183 
   184 Ioctl level: KIrdaAddrFamily */
   185 const TUint KIrlapResetRequestIoctl=10;
   186 
   187 /** Completes on receipt of an IrLAP link reset indication.
   188 
   189 Completes with error value KErrNone if link is successfully reset.
   190 
   191 Ioctl level: KIrdaAddrFamily */
   192 const TUint KIrlapResetIndicationIoctl=11;
   193 
   194 /** Completes on doing an IrLAP link reset.
   195 
   196 Does a DISCP-UAF link disconnect which can be initiated from either primary 
   197 or secondary.
   198 
   199 Ioctl level: KIrdaAddrFamily */
   200 const TUint KIrlapDisconnectRequestIoctl=12;
   201 
   202 const TUint KExclusiveMode=0;
   203 
   204 const TUint KMultiplexMode=1;
   205 
   206 
   207 //********************  Irda Set/GetOpts ******************************
   208 // These two are done on Socket Write
   209 //
   210 
   211 
   212 /** KLevelIrlap.
   213 
   214 Sets transfer mode to be unexpedited (the default).
   215 
   216 Not recommended for use with SetOpt(). Preferred use is with RSocket::Send()
   217 
   218 Returns KErrNone */
   219 const TUint KUnexpeditedDataOpt		= 0;		// Default
   220 
   221 /** KLevelIrlap
   222 
   223 Sets transfer mode to be expedited (urgent).
   224 
   225 Not recommended for use with SetOpt(). Preferred use is with RSocket::Send()
   226 
   227 Returns KErrNone */
   228 const TUint KExpeditedDataOpt		= 1;		// Urgent data transfer
   229 
   230 // On KLevelIrlap
   231 
   232 /** KLevelIrlap
   233 
   234 Sets number of discovery slots.
   235 
   236 Returns KErrNone */
   237 const TUint KDiscoverySlotsOpt		= 2;
   238 
   239 /** KLevelIrlap
   240 
   241 Sets the requested maximum link baud rate.
   242 
   243 Returns KErrInUse, if the link is already running.
   244 
   245 Returns with the currently set maximum link baud supported. */
   246 const TUint KUserBaudOpt			= 3;
   247 
   248 /** KLevelIrlap
   249 
   250 Sets the requested maximum data packet size that can be received by the host.
   251 
   252 Returns KErrInUse, if the link is already running.
   253 
   254 Returns with the currently set value for the maximum receivable data size 
   255 of the host IrLAP layer. */
   256 const TUint KHostMaxDataSizeOpt		= 4;
   257 
   258 /** KLevelIrlap
   259 
   260 Returns KErrNotSupported.
   261 
   262 Cannot set this value for the remote station.
   263 
   264 Returns with the currently set value for the maximum transmissible data size 
   265 to remote IrLAP layer. */
   266 const TUint KRemoteMaxDataSizeOpt	= 6;	// Remote packet size
   267 
   268 /** KLevelIrlap
   269 
   270 Set the maximum link turnaround time for the host IrLAP layer.
   271 
   272 Returns KErrInUse, if the link is already running.
   273 
   274 Returns with the currently set value for the host link turnaround time */
   275 const TUint KHostMaxTATimeOpt		= 5;
   276 
   277 /** KLevelIrlap
   278 
   279 Disables IrLAP level reset_check/wait states */
   280 const TUint KIrlapDisableResetOpt	= 9;	// This disables Irlap level reset_check/wait states.
   281 
   282 /** KLevelIrlap
   283 
   284 Allows the client to set local busy in IrLAP. */
   285 const TUint KLocalBusyDetectedOpt	= 10;	// Client can set local busy in Irlap
   286 
   287 /** KLevelIrlap
   288 
   289 Allows the client to clear local busy in IrLAP */
   290 const TUint KLocalBusyClearedOpt	= 11;	// Client can clear local busy in Irlap
   291 
   292 /** KLevelIrlap
   293 
   294 Disables discovery response for a short period (typically 3 seconds). */
   295 const TUint KDiscoveryResponseDisableOpt = 12;
   296 
   297 /** KLevelIrlap
   298 
   299 Sets the host's first service hint byte used in XID frames.
   300 
   301 Retrieves the first hint byte. */
   302 const TUint KFirstHintByteOpt		= 13;	// Hint Bytes
   303 
   304 /** KLevelIrlap
   305 
   306 Sets the host's second service hint byte used in XID frames.
   307 
   308 Retrieves the second hint byte */
   309 const TUint KSecondHintByteOpt		= 14;
   310 
   311 // On KLevelIrmux
   312 
   313 /** KLevelIrmux
   314 
   315 Turns on transport layer segmentation with the segment size specified. This 
   316 value is advertised to the remote machine as the maximum amount of data we 
   317 can reassemble.
   318 
   319 Returns KErrNone */
   320 const TUint KTinyTPLocalSegSizeOpt=7;	// This value is advertised to the remote machine as the max amount of data we can reassemble
   321 
   322 /** KLevelIrmux
   323 
   324 Queries the remote machine's segment size. The remote machine is unable 
   325 to assemble more data than this.
   326 
   327 Returns the remote machine's segment size. */
   328 const TUint KTinyTPRemoteSegSizeOpt=8;	// Remote machine is unable to reassemble more data than this
   329 
   330 /**
   331 Disables TinyTP reassembly of segmented packets. */
   332 const TUint KTinyTPDisabledSegmentation=15;
   333 /**
   334 @deprecated
   335 Disables TinyTP reassembly of segmented packets. */
   336 const TUint KTinyTPDiasbledSegmentation=15;
   337 
   338 /**
   339 @internalComponent
   340 */
   341 const TUint KIrdaInternalOption=0x4000000;
   342 
   343 /**
   344 @internalTechnology
   345 */
   346 const TUint KTinyTPSetMaxBufferSpace=16 | KIrdaInternalOption;
   347 
   348 
   349 
   350 /** The option relates to IrLAP. */
   351 const TUint KLevelIrlap=4;
   352 
   353 /** The option relates to IrMUX. */
   354 const TUint KLevelIrmux=5;
   355 
   356 /** The maximum length of a class name in an IAS entry. */
   357 const TUint KIASClassNameMax=60;
   358 
   359 /** The maximum length of an attribute in an IAS entry. */
   360 const TUint KIASAttributeNameMax=60;
   361 
   362 /** The maximum length of a TIASQuery descriptor. */
   363 const TUint KMaxQueryStringLength=128;
   364 
   365 //################# CLASS DEFINITIONS ########################
   366 
   367 NONSHARABLE_CLASS(TIrdaSockAddr) : public TSockAddr
   368 /** An IrDA socket address. 
   369 	@publishedAll 
   370 	@released */
   371 	{
   372 struct SIrdaAddr
   373 	{	
   374 	TUint iHostDevAddr;
   375 	TUint iRemoteDevAddr;
   376 	TBool iSniff;
   377 	TBool iSolicited;
   378 	TUint8 iIrlapVersion;
   379 	TUint8 iFirstServiceHintByte;
   380 	TUint8 iSecondServiceHintByte;
   381 	TUint8 iCharacterSet;
   382 	TUint8 iServiceHintByteCount;
   383 	// Extra stuff for MUX
   384 	TUint8 iHomePort;
   385 	TUint8 iRemotePort;
   386 	TUint8 iSpare;
   387     };
   388 public:
   389 	IMPORT_C TIrdaSockAddr();
   390 	IMPORT_C TIrdaSockAddr(const TSockAddr &aAddr);
   391 	/** Casts a reference to a general socket address into an IrDA socket address.
   392 	
   393 	@param aAddr A reference to a general socket address. 
   394 	@return The socket address returned as a reference to an IrDA socket address. */
   395 	
   396 	/** Casts a pointer to a general socket address into an IrDA socket address.
   397 	
   398 	@param aAddr A pointer to a general socket address. 
   399 	@return The socket address returned as a reference to an IrDA socket address. */
   400 	IMPORT_C static TIrdaSockAddr &Cast(const TSockAddr &aAddr);
   401 
   402 	/** Casts a reference to a general socket address into an IrDA socket address.
   403 	
   404 	@param aAddr A reference to a general socket address. 
   405 	@return The socket address returned as a reference to an IrDA socket address. */
   406 	
   407 	/** Casts a pointer to a general socket address into an IrDA socket address.
   408 	
   409 	@param aAddr A pointer to a general socket address. 
   410 	@return The socket address returned as a reference to an IrDA socket address. */
   411 
   412 	IMPORT_C static TIrdaSockAddr &Cast(const TSockAddr *aAddr);
   413 	/** Returns the remote device address.
   414 	
   415 	@return The remote device address as a 32 bit value. */
   416 
   417 	IMPORT_C TUint GetRemoteDevAddr() const;
   418 	/** Sets the remote device address.
   419 	
   420 	@param aRemote The remote device address as a 32-bit value. */
   421 
   422 	IMPORT_C void SetRemoteDevAddr(const TUint aRemote);
   423 	
   424 	/** Returns the host device address.
   425 	
   426 	@return The host device address as a 32 bit value. */
   427 	IMPORT_C TUint GetHostDevAddr() const;
   428 	
   429 	/** Sets the host device address.
   430 	
   431 	@param aHost The host device address as a 32-bit value. */
   432 	IMPORT_C void SetHostDevAddr(const TUint aHost);
   433 	
   434 	/** Returns the remote device's sniff status, i.e. whether the device is capable 
   435 	of sniffing for IrDA devices.
   436 	
   437 	@return True, if the device is capable of sniffing for IrDA devices; false, 
   438 	otherwise. */
   439 	IMPORT_C TBool GetSniffStatus() const;
   440 	
   441 	/** Sets the sniff status for the remote device, i.e. whether the device is capable 
   442 	of sniffing for IrDA devices.
   443 	
   444 	@param aSniff True, if the device is capable of sniffing for IrDA devices; 
   445 	false, otherwise. */
   446 	IMPORT_C void SetSniffStatus(const TBool aSniff);
   447 	
   448 	/** Returns the solicited status.
   449 	
   450 	The solicited status indicates whether a discovery was initiated by the host 
   451 	device or a remote device.
   452 	
   453 	@return True, if the discovery was initiated by the host device; false if 
   454 	the discovery was initiated by the remote device. */
   455 	IMPORT_C TBool GetSolicitedStatus() const;
   456 	
   457 	/** Sets the solicited status. The solicited status indcates whether a discovery 
   458 	was initiated by the host device or a remote device.
   459 	
   460 	@param aSolicited ETrue, if the discovery was initiated by the host device; 
   461 	EFalse, if discovery was initiated by the remote device. */
   462 	IMPORT_C void SetSolicitedStatus(const TBool aSolicited);
   463 	
   464 	/** Returns the remote device's IrLAP version number.
   465 	
   466 	This should be 0x00 indicating that the device conforms to the IrDA IrLAP 
   467 	1.00 specification.
   468 	
   469 	@return The device's IrLAP version number. */
   470 	IMPORT_C TUint8 GetIrlapVersion() const;
   471 	
   472 	/** Sets the IrLAP version number for the remote device.
   473 	
   474 	This should be 0x00 indicating that the device conforms to the IrDA IrLAP 
   475 	1.00 specification.
   476 	
   477 	@param aIrlapVersion The device's IrLAP version number. */
   478 	IMPORT_C void SetIrlapVersion(const TUint8 aIrlapVersion);
   479 	
   480 	/** Returns the character set supported by the remote device.
   481 	
   482 	@return One of the TIASCharSet enumerator values defining the character set 
   483 	supported by the device. */
   484 	IMPORT_C TUint8 GetCharacterSet() const;
   485 	
   486 	/** Sets the character set supported by the remote device.
   487 	
   488 	@param aCharacterSet One of the TIASCharSet enumerator values defining the 
   489 	character set supported by the device */
   490 	IMPORT_C void SetCharacterSet(const TUint8 aCharacterSet);
   491 	
   492 	/** Returns the remote device's first service hint byte. Service hint bytes indicate 
   493 	the level of IrLMP support provided by the device.
   494 	
   495 	@return The first service hint byte. The individual bits have the following 
   496 	meaning: Bit 0 (0x01) - PnP Compatible Bit 1 (0x02) - PDA/Palmtop Bit 2 (0x04) 
   497 	- Computer Bit 3 (0x08) - Printer Bit 4 (0x10) - Modem Bit 5 (0x20) - Fax 
   498 	Bit 6 (0x40) - LAN Access Bit 7 (0x80) - Extension */
   499 	IMPORT_C TUint8 GetFirstServiceHintByte() const;
   500 	
   501 	/** Sets the first service hint byte for the remote device. The service hint bytes 
   502 	indicate the level of IrLMP support provided by the device.
   503 	
   504 	@param aFirstServiceHintByte The first service hint byte. The individual bits 
   505 	have the following meaning: Bit 0 (0x01) - PnP Compatible Bit 1 (0x02) - PDA/Palmtop 
   506 	Bit 2 (0x04) - Computer Bit 3 (0x08) - Printer Bit 4 (0x10) - Modem Bit 5 
   507 	(0x20) - Fax Bit 6 (0x40) - LAN Access Bit 7 (0x80) - Extension */
   508 	IMPORT_C void SetFirstServiceHintByte(const TUint8 aFirstServiceHintByte);
   509 	
   510 	/** Returns the remote device's first service hint byte. Service hint bytes indicate 
   511 	the level of IrLMP support provided by the device.
   512 	
   513 	@return The second service hint byte. The individual bits have the following 
   514 	meaning: Bit 0 (0x01) - Telephony Bit 1 (0x02) - File Server Bit 2 (0x04) 
   515 	- IrCOMM Bit 3 (0x08) - reserved Bit 4 (0x10) - reserved Bit 5 (0x20) - IrOBEX 
   516 	Bit 6 (0x40) - reserved Bit 7 (0x80) - Extension */
   517 	IMPORT_C TUint8 GetSecondServiceHintByte() const;
   518 	
   519 	/** Sets the second service hint byte for the remote device. The service hint bytes 
   520 	indicate the level of IrLMP support provided by the device.
   521 	
   522 	@param aSecondServiceHintByte The second service hint byte. The individual 
   523 	bits have the following meaning: Bit 0 (0x01) - Telephony Bit 1 (0x02) - File 
   524 	Server Bit 2 (0x04) - IrCOMM Bit 3 (0x08) - reserved Bit 4 (0x10) - reserved 
   525 	Bit 5 (0x20) - IrOBEX Bit 6 (0x40) - reserved Bit 7 (0x80) - Extension */
   526 	IMPORT_C void SetSecondServiceHintByte(const TUint8 aSecondServiceHintByte);
   527 	
   528 	/** Returns the number of service hint bytes for the remote device.
   529 	
   530 	@return The number of service hint bytes. */
   531 	IMPORT_C TUint8 GetServiceHintByteCount() const;
   532 	
   533 	/** Sets the number of service hint bytes for the remote device.
   534 	
   535 	@param aServiceHintByteCount The number of service hint bytes. */
   536 	IMPORT_C void SetServiceHintByteCount(const TUint8 aServiceHintByteCount);
   537 	IMPORT_C TUint8 GetHomePort() const;
   538 	IMPORT_C void SetHomePort(const TUint8 aHomePort);
   539 	IMPORT_C TUint8 GetRemotePort() const;
   540 	IMPORT_C void SetRemotePort(const TUint8 aRemotePort);
   541 private:
   542 	SIrdaAddr* addrPtr() const;
   543 	};
   544 
   545 enum TIASDataType
   546 /** An enumeration whose enumerators define the type of response received from 
   547 an Information Access Service (IAS) query.
   548 
   549 @see TIASResponse */
   550 {
   551 	/** No response type defined. */
   552 	EIASDataMissing=0,
   553 	/** The response type is an integer. */
   554 	EIASDataInteger=1,
   555 	/** The response type is binary data. */
   556 	EIASDataOctetSequence=2,
   557 	/** The response type is a string. */
   558 	EIASDataUserString=3
   559 };
   560 
   561 enum TIASCharSet
   562 /** The character set encoding of the character string response from an IAS query.
   563 
   564 @see TIASResponse::GetCharString()
   565 @see TIrdaSockAddr::GetCharacterSet() */
   566 	{ 
   567 	/** String is standard ASCII. */
   568 	EIASCharSetUserStringASCII =0x00,
   569 	/** String is ISO Latin-1. */
   570 	EIASCharSetUserStringISO_8859_1=0x01,
   571 	/** String is ISO Latin-2. */
   572 	EIASCharSetUserStringISO_8859_2=0x02,
   573 	/** String is ISO Latin-3. */
   574 	EIASCharSetUserStringISO_8859_3=0x03,
   575 	/** String is ISO Latin-4. */
   576 	EIASCharSetUserStringISO_8859_4=0x04,
   577 	/** String is ISO-8859-5 (Cyrillic). */
   578 	EIASCharSetUserStringISO_8859_5=0x05,
   579 	/** String is ISO-8859-6 (Arabic). */
   580 	EIASCharSetUserStringISO_8859_6=0x06,
   581 	/** String is ISO-8859-7 (Greek). */
   582 	EIASCharSetUserStringISO_8859_7=0x07,
   583 	/** String is ISO-8859-8 (Hebrew). */
   584 	EIASCharSetUserStringISO_8859_8=0x08,
   585 	/** String is ISO Latin-5. */
   586 	EIASCharSetUserStringISO_8859_9=0x09,
   587 	/** String is UNICODE. */
   588 	EIASCharSetUserStringUnicode=0xFF,
   589 	};
   590 
   591 NONSHARABLE_CLASS(TIASQuery) : public TBuf8<KMaxQueryStringLength>
   592 /** An Information Access Service (IAS) query to another device's IAS server.
   593 @publishedAll
   594 @released
   595 @see TIASResponse */
   596 	{
   597 public:
   598 	IMPORT_C TIASQuery(const TDesC8& aClass,const TDesC8& aAttribute,TUint aRemoteDevAddr);
   599 	IMPORT_C TIASQuery();
   600 	IMPORT_C void Set(const TDesC8& aClass,const TDesC8& aAttribute,TUint aRemoteDevAddr);
   601 	IMPORT_C void Get(TDes8& aClass,TDes8& aAttribute,TUint& aRemoteDevAddr);
   602 private:
   603 	// This data padding has been added to help prevent future binary compatibility breaks	
   604 	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
   605 	TUint32     iPadding1; 
   606 	TUint32     iPadding2; 
   607 	};
   608 
   609 NONSHARABLE_CLASS(TIASResponse) : public TBuf8<KMaxQueryStringLength>
   610 /** Response from an Information Access Service (IAS) query to another device's 
   611 IAS server.
   612 @publishedAll
   613 @released
   614 @see TIASQuery */
   615 	{
   616 public:		// But not exported :-)
   617 	void SetToInteger(TUint anInteger);
   618 	void SetToCharString(const TDesC8& aCharString);
   619 	void SetToOctetSeq(const TDesC8& aData);
   620 #ifdef _UNICODE
   621 	void SetToCharString(const TDesC16& aWideString);
   622 #endif
   623 
   624 public:
   625 	IMPORT_C TIASResponse();
   626 /** Indicates the response contains a list. */
   627 	IMPORT_C TBool IsList() const;
   628 /** Indicates the number of items in the response. */
   629 	IMPORT_C TInt NumItems() const;
   630 
   631 /** Returns the type of the response.
   632 	
   633 	@return An enumeration identifying the type of response. */
   634 	IMPORT_C TIASDataType Type() const;
   635 
   636 	IMPORT_C TInt GetInteger(TInt &aResult,TInt anIndex=0) const;
   637 	IMPORT_C TInt GetOctetSeq(TDes8 &aResult,TInt anIndex=0) const;
   638 	IMPORT_C TInt GetCharString(TDes8 &aResult,TInt anIndex=0) const;
   639 	IMPORT_C const TPtrC8 GetCharString8(TInt anIndex=0) const;
   640 	
   641 	/** Gets the response string.
   642 	
   643 	This is called if the response type indicates a string.
   644 	
   645 	@param aResult On return, an 8 bit modifiable descriptor containing the response 
   646 	string. The length of the response string can never be greater than the value 
   647 	of (KMaxQueryStringLength - 3). 
   648 	@param anIndex Reserved for future use. This argument must be allowed to default 
   649 	to 0 and must not be overriden. 
   650 	@return If successful, one of the TIASCharSet enumerator values defining the 
   651 	character set encoding of the response string. KErrNotSupported, if a non-zero 
   652 	value has been specified for anIndex. KErrCorrupt, if the response type is 
   653 	not a string. 
   654 	@see TIASResponse::Type() */
   655 	IMPORT_C TInt GetCharString(TDes16 &aResult,TInt anIndex=0) const;
   656 
   657 	IMPORT_C const TPtrC16 GetCharString16(TInt anIndex=0) const;
   658 	
   659 private:
   660 	// This data padding has been added to help prevent future binary compatibility breaks	
   661 	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
   662 	TUint32     iPadding1;
   663 	TUint32     iPadding2;	
   664 	};
   665 
   666 NONSHARABLE_CLASS(TIASDatabaseEntryV001)
   667 /** The data for an Information Access Service (IAS) record in the network database.
   668 
   669 An object of this type is contained in a packaged modifiable buffer descriptor.
   670 @publishedAll
   671 @released
   672 @see TIASDatabaseEntry */
   673 	{
   674 public:
   675 	IMPORT_C TIASDatabaseEntryV001();
   676 	
   677 	/** The class name for the IAS entry
   678 	
   679 	This is a template specialisation of a TBuf8<TInt> */
   680 	TBuf8<KIASClassNameMax> iClassName;
   681 	
   682 	/** The attribute for the IAS entry.
   683 	
   684 	This is a template specialisation of a TBuf8<TInt> */
   685 	TBuf8<KIASAttributeNameMax> iAttributeName;
   686 	
   687 	/** The response data. */
   688 	TIASResponse iData;
   689 	
   690 private:
   691 	// This data padding has been added to help prevent future binary compatibility breaks	
   692 	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
   693 	TUint32     iPadding1; 
   694 	TUint32     iPadding2; 	
   695 	};
   696 	
   697 NONSHARABLE_CLASS(TIASDatabaseEntry) : public TPckgBuf<TIASDatabaseEntryV001>
   698 /** An Information Access Service (IAS) record in the network database.
   699 
   700 The record data is contained in an object of type TIASDatabaseEntryV001 packaged 
   701 in a modifiable buffer descriptor.
   702 @publishedAll
   703 @released
   704 @see RNetDatabase */
   705 	{
   706 public:
   707 	IMPORT_C void SetClassName(const TDesC8& aClassName);
   708 	IMPORT_C void SetAttributeName(const TDesC8& anAttributeName);
   709 	IMPORT_C void SetToInteger(const TUint anInteger);
   710 	IMPORT_C void SetToCharString(const TDesC8& aCharString);
   711 	
   712 	/** Sets the response type corresponding to the class and attribute defined in 
   713 	this record, as binary data.
   714 	
   715 	@param aData The response binary data. The length of this data can never be 
   716 	greater than (KMaxQueryStringLength - 3). */
   717 	IMPORT_C void SetToOctetSeq(const TDesC8& aData);
   718 
   719 #ifdef _UNICODE	//need to be able to enter wide entries in unicode builds
   720 	IMPORT_C void SetToCharString(const TDesC16& aWideString);//new export
   721 #endif
   722 	};
   723 
   724 #endif // __IR_SOCK_H__