// 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 "Eclipse Public License v1.0"// which accompanies this distribution, and is available// at the URL "http://www.eclipse.org/legal/epl-v10.html".//// Initial Contributors:// Nokia Corporation - initial contribution.//// Contributors://// Description:// IrTranp API // ///** @file @publishedAll @released*/#ifndef _TRANP_H_#define _TRANP_H_#include <e32base.h>const TInt KErrIrtranpPeerDoesNotHaveIrtranp = -5530;_LIT8(KDefaultPMID, "\x08\x00\x74\x00\x00\x00\x00\x01"); //Casio's number_LIT8(KNullPMID, "\x00\x00\x00\x00\x00\x00\x00\x00");enum TLatticeSize /** Encodes the size of a picture.@see TTranpPicture */ { /** Quarter VGA, 320x240 pixels. */ EQVGA, /** Full VGA, 640x480 pixels. */ EVGA, /** Super VGA, 800x600 pixels. */ ESVGA, /** XGA, 1024x768 pixels. */ EXGA, /** Super XGA, 1280x960 pixels. */ ESXGA, /** Arbitrary size. There is no implied width and height. These values must be explicitly supplied. */ EFREE};NONSHARABLE_CLASS(TTranpConfig)/** Encapsulates configuration parameters for a session.@publishedAll@released@see CTranpSession */ {public: IMPORT_C TTranpConfig(); IMPORT_C ~TTranpConfig(); IMPORT_C void SetPrimaryMachine(const TDesC8& aPMID); IMPORT_C void SetSecondaryMachine(const TDesC8& aSMID); IMPORT_C const TDesC8& PrimaryMachine(); IMPORT_C const TDesC8& SecondaryMachine();private: TBufC8<8> iPMID; TBufC8<8> iSMID; // 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; };//// Encapsulation the UPF file format.//NONSHARABLE_CLASS(TTranpPicture)/** Represents a picture in Unified Picture Format (UPF), a standard for image data transmitted via infrared communication.An object of this type is used when transmitting pictures using the IrTranP protocol.A received picture can be saved as a JPEG type for viewing or it can be saved in native UPF format. @publishedAll@released */ {friend class CTranpProtocol;public: IMPORT_C void SetFilename(const TDesC8& aName); IMPORT_C void SetLongFilename(const TDesC8& aName); IMPORT_C void SetTime(const TDesC8& aTime); IMPORT_C const TDesC8& Filename(); IMPORT_C const TDesC8& LongFilename(); IMPORT_C const TDesC8& Time(); IMPORT_C const TDesC8* Picture(); IMPORT_C void SetDesiredLatticeSize(TLatticeSize aSize, TInt iWidth = 0, TInt iHeight = 0); // Default is EVGA IMPORT_C void GetLatticeSize(TLatticeSize& aSize, TInt& iWidth, TInt& iHeight); IMPORT_C const TDesC8* GetThumbNail(); IMPORT_C TInt SaveAsJpeg(const TFileName& aFileName); IMPORT_C TInt LoadFromJpeg(const TFileName& aFileName); IMPORT_C TInt SaveAsUPF(const TFileName& aFileName); IMPORT_C TInt LoadFromUPF(const TFileName& aFileName);public: IMPORT_C TTranpPicture(); IMPORT_C ~TTranpPicture();private: TBuf8<31> iFilename; // fomatted in DOS 8.3 format TBuf8<256> iLongFilename; // in SJIS or ISO8859-1 [Latin-1] TBuf8<14> iTime; // Time string in format YYYYMMDDHHMMSS TPtrC8 iPicture; // Pointer to a buffer conatining the image data [JPEG format] TDesC8* iUPFPicture; // Pointer to a buffer conatining the image data [UPF format] TPtrC8 iThumbNail; // Pointer to a buffer conatining the thumbnail image data [JPEG format] Not implemented. TLatticeSize iLatticeSize; // Size of picture TInt iWidth; // QVGA:=320x240, VGA:=640x480, SVGA:=800x600, XGA:=1024x768, SXGA:=1280x960, FREE:=m x n TInt iHeight; TInt iX; // Aspect Ratio iX:iY TInt iY; HBufC8* iHeapData; // 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; };// // Callback interface for Asynchrnous requests//class MTranpNotification/** A callback interface providing notification of events that occur during a picture transmission session.Users of a picture transmission session must derive from this class an provide implementation for all of the pure virtual functions.@publishedAll@released@see CTranpSession */ {public: /** This function is called when a peer device connects successfully to the host device following an attempt to receive a picture. */ virtual void Connected() = 0; /** This function is called when a peer device disconnects or is disconnected from the host device. */ virtual void Disconnected() =0; /** This function is called when the reception of picture data is complete. */ virtual void GetComplete() = 0; /** This function is called during the sending or receiving of picture data and indicates the percentage of the data that has been transmitted. @param aPercent The percentage of picture data transmitted. */ virtual void ProgressIndication(TInt aPercent) = 0; /** This function is called when the sending of picture data is complete. */ virtual void PutComplete() = 0; /** This function is called when an operation querying the processing ability of a peer device completes. */ virtual void QueryComplete(/*return result from query [what]*/)= 0; /** This function is called when the connection with the peer device drops during picture data transmission. @param aError An error code associated with the connection drop. Normally, one of the system wide error codes. */ virtual void Error(TInt aError) =0; /** Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is. @param aInterface UID of the interface to return @param aObject the container for another interface as specified by aInterface */ IMPORT_C virtual void MTN_ExtensionInterfaceL(TUid aInterface, void*& aObject); };class CTranpProtocol;NONSHARABLE_CLASS(CTranpSession) : public CBase/** Encapsulates the behaviour for sending a picture to a peer device and for receiving a picture from a peer device. @publishedAll@released */ {public: enum TTranP /** The type of information required from a peer device. */ { /** Request still-information from the peer, e.g. resolution and size. */ EReqImageInfo = 0, /** Request information about the peer's battery status and free memory. */ EReqStatus, /** Request how many commands can be executed in one SCEP session. */ EReqCommands };public: // Constructs a TranP Session IMPORT_C static CTranpSession* NewL(MTranpNotification& aNotifier);private: void ConstructL(MTranpNotification& aNotifier);public: // Methods for establishing a connection IMPORT_C void Connect(); IMPORT_C void Disconnect(); IMPORT_C void Abort(); // Query capabilities of peer IMPORT_C void Query(TTranP aWhat); // Receive picture from peer IMPORT_C void Get(TTranpPicture& aPicture); // Send picture to peer IMPORT_C void Put(const TTranpPicture& aPicture); // Change configuration parameters IMPORT_C void Config(const TTranpConfig& aConfig); IMPORT_C TTranpConfig Config() const; IMPORT_C ~CTranpSession();private: CTranpSession(); private: CTranpProtocol* iTranpProtocol; TTranpConfig iConfig; };#endif //_TRANP_H_