irda/irdastack/INC/EIKIRDA.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 //
       
    15 
       
    16 #if !defined(__PSIONIR_H__)
       
    17 #define __PSIONIR_H__
       
    18 
       
    19 #include "ir_sock.h"
       
    20 #include "e32base.h"
       
    21 
       
    22 // eikirda can handle two kinds of put - file and data
       
    23 enum TEikirdaTransferDataType {EData,EFile};
       
    24 
       
    25 //**** Client must implement these notify callbacks ****
       
    26 class MEikirdaSenderNotify
       
    27 	{
       
    28 public:
       
    29 	virtual void PutProgressIndication(TInt aPercent)=0;
       
    30 	virtual void AbortIndication()=0;
       
    31 	virtual void ErrorIndication(TInt aError)=0;
       
    32 	};
       
    33 
       
    34 class MEikirdaReceiverNotify
       
    35 	{
       
    36 public:
       
    37 	virtual void DiscoveryIndication(TDes& aDes)=0;
       
    38 	virtual void ConnectIndication(TInt aErr,TDes& aDes)=0;
       
    39 	virtual void DisconnectIndication()=0;
       
    40 	virtual void AbortIndication()=0;
       
    41 	virtual void PutRequestIndication(TDes& aDes)=0;
       
    42 	virtual void PutProgressIndication(TInt aErr,TDes& aDes)=0;
       
    43 	virtual void PutCompleteIndication(TDes& aDes)=0;
       
    44 	virtual void ErrorIndication(TInt aErr)=0;
       
    45 	};
       
    46 //****												****
       
    47 
       
    48 NONSHARABLE_CLASS(CEikirdaSenderBase) : public CBase
       
    49 	{
       
    50 public:
       
    51 	virtual void ConstructL(MEikirdaSenderNotify *aClient)=0;
       
    52 	virtual void Discover(TIrdaSockAddr& aSockAddr,THostName& aName,TRequestStatus& aStat)=0;
       
    53 	virtual void Query(const TDes& aClass,const TDesC& aAttribute,TIASResponse& aResults,TRequestStatus& aStat)=0;
       
    54 	virtual void Connect(TSockAddr& aAddr,TRequestStatus& aStat)=0;
       
    55 	virtual void PutL(TEikirdaTransferDataType aType,const TDesC& aDesc,TRequestStatus& aStat)=0;
       
    56 	virtual void Abort()=0;
       
    57 	virtual void Disconnect(TRequestStatus& aStat)=0;
       
    58 	virtual TInt SetOpt(TInt aOptionName,TInt aOptionLevel,const TDesC& aDesc)=0;
       
    59 	virtual TInt GetOpt(TInt aOptionName,TInt aOptionLevel,TDes& aOption)=0;
       
    60 	virtual void CompleteRequest(TInt aError)=0;
       
    61 	// internal indications to be passed up to client side
       
    62 	inline void PutProgressIndication(TInt aPercent) {if (iClient) iClient->PutProgressIndication(aPercent);};
       
    63 	inline void ErrorIndication(TInt aError) {if (iClient) iClient->ErrorIndication(aError);};
       
    64 protected:
       
    65 	MEikirdaSenderNotify *iClient;
       
    66 	};
       
    67 
       
    68 NONSHARABLE_CLASS(CEikirdaReceiverBase) : public CBase
       
    69 	{
       
    70 public:
       
    71 	virtual void ConstructL(MEikirdaReceiverNotify *aClient)=0;
       
    72 	virtual void Start()=0;
       
    73 	virtual void Stop()=0;
       
    74 //protected:
       
    75 	// internal indications to be passed up to client side
       
    76 //	TInt DiscoveryIndication(TDes& aDes);
       
    77 	TInt ConnectIndication(TInt aErr,TDes& aDes);
       
    78 	inline void DisconnectIndication() {if (iClient) iClient->DisconnectIndication();};
       
    79 	inline void PutRequestIndication(TDes& aDes) {if (iClient) iClient->PutRequestIndication(aDes);};
       
    80 	TInt PutProgressIndication(TInt aErr,TDes& aDes);
       
    81 	inline void PutCompleteIndication(TDes& aDes) {if (iClient) iClient->PutCompleteIndication(aDes);};
       
    82 //protected:
       
    83 	MEikirdaReceiverNotify *iClient;
       
    84 	};
       
    85 
       
    86 NONSHARABLE_CLASS( CEikirdaFactoryBase) : public CObject
       
    87 	{
       
    88 public:
       
    89 	virtual CEikirdaSenderBase *NewEikirdaSenderL(MEikirdaSenderNotify *aClient)=0;
       
    90 	virtual CEikirdaReceiverBase *NewEikirdaReceiverL(MEikirdaReceiverNotify *aClient)=0;
       
    91 	virtual void ConstructL()=0;
       
    92 	};
       
    93 
       
    94 NONSHARABLE_CLASS(CEikirdaFactory) : public CEikirdaFactoryBase
       
    95     {
       
    96 public:
       
    97 	enum {KMajorVersion=1,KMinorVersion=0,KBuild=205};
       
    98 	static CEikirdaFactory *NewL();
       
    99 	virtual CEikirdaSenderBase *NewEikirdaSenderL(MEikirdaSenderNotify *aClient);
       
   100 	virtual CEikirdaReceiverBase *NewEikirdaReceiverL(MEikirdaReceiverNotify *aClient);
       
   101 	virtual void ConstructL();
       
   102 	virtual ~CEikirdaFactory();	
       
   103 private:
       
   104     CEikirdaFactory();
       
   105 private:
       
   106 	TVersion iVersion;
       
   107     };
       
   108 
       
   109 //
       
   110 // The remaining stuff should go into a private header file.
       
   111 // Concrete instantiations
       
   112 //
       
   113 class CEikirdaSenderControl;
       
   114 class CEikirdaReceiverControl;
       
   115 NONSHARABLE_CLASS(CEikirdaSender) : public CEikirdaSenderBase
       
   116 	{
       
   117 public:
       
   118 	virtual ~CEikirdaSender();
       
   119 	static CEikirdaSenderBase *NewL(MEikirdaSenderNotify *aClient);
       
   120 	// concrete instantiation of base class pure virtuals
       
   121 	virtual void ConstructL(MEikirdaSenderNotify *aClient);
       
   122 	virtual void Discover(TIrdaSockAddr& aAddr,THostName& aName,TRequestStatus& aStat);
       
   123 	virtual void Query(const TDes& aClass,const TDesC& aAttribute,TIASResponse& aResults,TRequestStatus& aStat);
       
   124 	virtual void Connect(TSockAddr& aAddr,TRequestStatus& aStat);
       
   125 	virtual void PutL(TEikirdaTransferDataType aType,const TDesC& aDesc,TRequestStatus& aStat);
       
   126 	virtual void Abort();
       
   127 	virtual void Disconnect(TRequestStatus& aStat);
       
   128 	virtual TInt SetOpt(TInt aOptionName,TInt aOptionLevel,const TDesC& aDesc);
       
   129 	virtual TInt GetOpt(TInt aOptionName,TInt aOptionLevel,TDes& aOption);
       
   130 	virtual void CompleteRequest(TInt aError);
       
   131 private:
       
   132 	CEikirdaSender();
       
   133 private:
       
   134 	TRequestStatus *iStatus;
       
   135 	CEikirdaSenderControl *iSenderStation;
       
   136 	};
       
   137 
       
   138 NONSHARABLE_CLASS(CEikirdaReceiver) : public CEikirdaReceiverBase
       
   139 	{
       
   140 public:
       
   141 	virtual ~CEikirdaReceiver();
       
   142 	static CEikirdaReceiverBase *NewL(MEikirdaReceiverNotify *aClient);
       
   143 	// concrete instantiation of base class pure virtuals
       
   144 	virtual void Start();
       
   145 	virtual void Stop();
       
   146 private:
       
   147 	CEikirdaReceiver();
       
   148 	void ConstructL(MEikirdaReceiverNotify *aClient);
       
   149 private:
       
   150 	TRequestStatus iStatus;
       
   151 	CEikirdaReceiverControl *iReceiverStation;
       
   152 	};
       
   153 
       
   154 #endif