irda/irdastack/irtranp/tranp.h
changeset 0 29b1cd4cb562
equal deleted inserted replaced
-1:000000000000 0:29b1cd4cb562
       
     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 // IrTranp API 
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @publishedAll
       
    21  @released
       
    22 */
       
    23 
       
    24 #ifndef _TRANP_H_
       
    25 #define _TRANP_H_
       
    26 
       
    27 #include <e32base.h>
       
    28 
       
    29 const TInt KErrIrtranpPeerDoesNotHaveIrtranp = -5530;
       
    30 
       
    31 _LIT8(KDefaultPMID, "\x08\x00\x74\x00\x00\x00\x00\x01"); //Casio's number
       
    32 _LIT8(KNullPMID, "\x00\x00\x00\x00\x00\x00\x00\x00");
       
    33 
       
    34 enum TLatticeSize 
       
    35 /** Encodes the size of a picture.
       
    36 
       
    37 @see TTranpPicture */
       
    38 	{
       
    39 	/** Quarter VGA, 320x240 pixels. */
       
    40 	EQVGA,
       
    41 	/** Full VGA, 640x480 pixels. */
       
    42 	EVGA,
       
    43 	/** Super VGA, 800x600 pixels. */
       
    44 	ESVGA,
       
    45     /** XGA, 1024x768 pixels. */
       
    46 	EXGA,
       
    47 	/** Super XGA, 1280x960 pixels. */
       
    48 	ESXGA,
       
    49 	/** Arbitrary size. There is no implied width and height. These values must be 
       
    50 	explicitly supplied. */
       
    51 	EFREE
       
    52 };
       
    53 
       
    54 NONSHARABLE_CLASS(TTranpConfig)
       
    55 
       
    56 /** Encapsulates configuration parameters for a session.
       
    57 @publishedAll
       
    58 @released
       
    59 @see CTranpSession */
       
    60 	{
       
    61 public:
       
    62 	IMPORT_C TTranpConfig();
       
    63 	IMPORT_C ~TTranpConfig();
       
    64 
       
    65 	IMPORT_C void SetPrimaryMachine(const TDesC8& aPMID);
       
    66 	IMPORT_C void SetSecondaryMachine(const TDesC8& aSMID);
       
    67 
       
    68 	IMPORT_C const TDesC8& PrimaryMachine();
       
    69 	IMPORT_C const TDesC8& SecondaryMachine();
       
    70 
       
    71 private:
       
    72 	TBufC8<8> iPMID;
       
    73 	TBufC8<8> iSMID;
       
    74 
       
    75 	// This data padding has been added to help prevent future binary compatibility breaks	
       
    76 	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
       
    77 	TUint32     iPadding1; 
       
    78 	TUint32     iPadding2; 	
       
    79 	};
       
    80 
       
    81 //
       
    82 // Encapsulation the UPF file format.
       
    83 //
       
    84 NONSHARABLE_CLASS(TTranpPicture)
       
    85 
       
    86 /** Represents a picture in Unified Picture Format (UPF), a standard for image 
       
    87 data transmitted via infrared communication.
       
    88 
       
    89 An object of this type is used when transmitting pictures using the IrTranP 
       
    90 protocol.
       
    91 
       
    92 A received picture can be saved as a JPEG type for viewing or it can be saved 
       
    93 in native UPF format. 
       
    94 @publishedAll
       
    95 @released */
       
    96 	{
       
    97 friend class CTranpProtocol;
       
    98 public:
       
    99 	IMPORT_C void SetFilename(const TDesC8& aName);
       
   100 	IMPORT_C void SetLongFilename(const TDesC8& aName);    
       
   101 	IMPORT_C void SetTime(const TDesC8& aTime);
       
   102 
       
   103 	IMPORT_C const TDesC8& Filename();
       
   104 	IMPORT_C const TDesC8& LongFilename();
       
   105 	IMPORT_C const TDesC8& Time();
       
   106 	IMPORT_C const TDesC8* Picture();
       
   107 	
       
   108 	IMPORT_C void SetDesiredLatticeSize(TLatticeSize aSize, TInt iWidth = 0, TInt iHeight = 0); // Default is EVGA
       
   109 	IMPORT_C void GetLatticeSize(TLatticeSize& aSize, TInt& iWidth, TInt& iHeight);
       
   110 
       
   111 	IMPORT_C const TDesC8* GetThumbNail();
       
   112 
       
   113 	IMPORT_C TInt SaveAsJpeg(const TFileName& aFileName);
       
   114 	IMPORT_C TInt LoadFromJpeg(const TFileName& aFileName);
       
   115 	IMPORT_C TInt SaveAsUPF(const TFileName& aFileName);
       
   116 	IMPORT_C TInt LoadFromUPF(const TFileName& aFileName);
       
   117 
       
   118 public:
       
   119 	IMPORT_C TTranpPicture();
       
   120 	IMPORT_C ~TTranpPicture();
       
   121 
       
   122 private:
       
   123 	TBuf8<31> iFilename;		// fomatted in DOS 8.3 format
       
   124 	TBuf8<256> iLongFilename;	// in SJIS or ISO8859-1 [Latin-1]
       
   125 	TBuf8<14> iTime;			// Time string in format YYYYMMDDHHMMSS
       
   126 	TPtrC8 iPicture;			// Pointer to a buffer conatining the image data [JPEG format]
       
   127 	TDesC8* iUPFPicture;		// Pointer to a buffer conatining the image data [UPF format]
       
   128 	TPtrC8 iThumbNail;			// Pointer to a buffer conatining the thumbnail image data [JPEG format] Not implemented.
       
   129 	TLatticeSize iLatticeSize;	// Size of picture 
       
   130 	TInt iWidth;	// QVGA:=320x240, VGA:=640x480, SVGA:=800x600, XGA:=1024x768, SXGA:=1280x960, FREE:=m x n
       
   131 	TInt iHeight;
       
   132 	TInt iX;		// Aspect Ratio iX:iY
       
   133 	TInt iY;
       
   134 	HBufC8* iHeapData;
       
   135 	
       
   136 	// This data padding has been added to help prevent future binary compatibility breaks	
       
   137 	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
       
   138 	TUint32     iPadding1; 
       
   139 	TUint32     iPadding2; 	
       
   140 	};
       
   141 
       
   142 // 
       
   143 // Callback interface for Asynchrnous requests
       
   144 //
       
   145 class MTranpNotification
       
   146 /** A callback interface providing notification of events that occur during a picture 
       
   147 transmission session.
       
   148 
       
   149 Users of a picture transmission session must derive from this class an provide 
       
   150 implementation for all of the pure virtual functions.
       
   151 
       
   152 @publishedAll
       
   153 @released
       
   154 @see CTranpSession */
       
   155 	{
       
   156 public:
       
   157 	
       
   158 	/** This function is called when a peer device connects successfully to the host 
       
   159 	device following an attempt to receive a picture. */
       
   160 	virtual void Connected() = 0;
       
   161 	
       
   162 	/** This function is called when a peer device disconnects or is disconnected from 
       
   163 	the host device. */
       
   164 	virtual void Disconnected() =0;
       
   165 	
       
   166 	/** This function is called when the reception of picture data is complete. */
       
   167 	virtual void GetComplete() = 0;
       
   168 	
       
   169 	/** This function is called during the sending or receiving of picture data and 
       
   170 	indicates the percentage of the data that has been transmitted.
       
   171 	
       
   172 	@param aPercent The percentage of picture data transmitted. */
       
   173 	virtual void ProgressIndication(TInt aPercent) = 0;
       
   174 	
       
   175 	/** This function is called when the sending of picture data is complete. */
       
   176 	virtual void PutComplete() = 0;
       
   177 	
       
   178 	/** This function is called when an operation querying the processing ability of 
       
   179 	a peer device completes. */
       
   180 	virtual void QueryComplete(/*return result from query [what]*/)= 0;
       
   181 	
       
   182 	/** This function is called when the connection with the peer device drops during 
       
   183 	picture data transmission.
       
   184 	
       
   185 	@param aError An error code associated with the connection drop. Normally, 
       
   186 	one of the system wide error codes. */
       
   187 	virtual void Error(TInt aError) =0;
       
   188 
       
   189     /**
       
   190  	 Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
       
   191 	 @param aInterface UID of the interface to return
       
   192 	 @param aObject the container for another interface as specified by aInterface
       
   193 	 */
       
   194 	IMPORT_C virtual void MTN_ExtensionInterfaceL(TUid aInterface, void*& aObject);	
       
   195 	};
       
   196 
       
   197 class CTranpProtocol;
       
   198 
       
   199 NONSHARABLE_CLASS(CTranpSession) : public CBase
       
   200 
       
   201 /** Encapsulates the behaviour for sending a picture to a peer device and for receiving 
       
   202 a picture from a peer device. 
       
   203 
       
   204 @publishedAll
       
   205 @released */
       
   206 	{
       
   207 public: 
       
   208     enum TTranP
       
   209     /** The type of information required from a peer device. */
       
   210     {
       
   211      /** Request still-information from the peer, e.g. resolution and size. */
       
   212      EReqImageInfo = 0, 
       
   213      /** Request information about the peer's battery status and free memory. */
       
   214      EReqStatus, 
       
   215      /** Request how many commands can be executed in one SCEP session. */
       
   216      EReqCommands
       
   217 	};
       
   218 
       
   219 public:
       
   220 	// Constructs a TranP Session
       
   221 	IMPORT_C static CTranpSession* NewL(MTranpNotification& aNotifier);
       
   222 
       
   223 private:
       
   224 	void ConstructL(MTranpNotification& aNotifier);
       
   225 
       
   226 public:
       
   227 	// Methods for establishing a connection
       
   228 	IMPORT_C void Connect();
       
   229 	IMPORT_C void Disconnect();
       
   230 	IMPORT_C void Abort();
       
   231 	// Query capabilities of peer
       
   232 	IMPORT_C void Query(TTranP aWhat);
       
   233 	// Receive picture from peer
       
   234 	IMPORT_C void Get(TTranpPicture& aPicture);
       
   235 	// Send picture to peer
       
   236 	IMPORT_C void Put(const TTranpPicture& aPicture);
       
   237 	// Change configuration parameters
       
   238 	IMPORT_C void Config(const TTranpConfig& aConfig);
       
   239 	IMPORT_C TTranpConfig Config() const;
       
   240 	IMPORT_C ~CTranpSession();
       
   241 
       
   242 private:
       
   243 	CTranpSession();	
       
   244 
       
   245 private:
       
   246 	CTranpProtocol* iTranpProtocol;
       
   247 	TTranpConfig iConfig;
       
   248 	};
       
   249 
       
   250 #endif //_TRANP_H_