cbsref/csyrefplugins/csy27010/inc/Portfactory.h
changeset 49 f50f4094acd7
equal deleted inserted replaced
48:14460bf2a402 49:f50f4094acd7
       
     1 //
       
     2 // * Copyright 2004 Neusoft America Inc.
       
     3 // * All rights reserved.
       
     4 // * This component and the accompanying materials are made available
       
     5 // * under the terms of the Eclipse Public License v1.0
       
     6 // * which accompanies this distribution, and is available
       
     7 // * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 // *
       
     9 // * Contributors:
       
    10 // * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
       
    11 // * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
       
    12 // * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
       
    13 // *
       
    14 // * Description:  This file is the root of the module. This file contains the 
       
    15 // *               declarations for the CPortFactory class and is derived from 
       
    16 // *               C32's CSerial.
       
    17 //
       
    18 
       
    19 // PortFactory.h
       
    20 
       
    21 /** @file PortFactory.h
       
    22  *
       
    23  */
       
    24 
       
    25 #ifndef _PORTFACTORY_H__
       
    26 #define _PORTFACTORY_H__
       
    27 
       
    28 #include <e32std.h>
       
    29 #include <e32hal.h>
       
    30 #include <c32comm.h>
       
    31 #include <d32comm.h>
       
    32 #include <cs_port.h>
       
    33 #include <cdblen.h>
       
    34 #include "CsyGlobals.h"
       
    35 
       
    36 class CPortC32Interface;
       
    37 class CPortC32InterfaceBase;
       
    38 class CChannelMgrBase;
       
    39 class CChannelMgrCtrl;
       
    40 class CChannelMgrCmdData;
       
    41 class CMux0710Protocol;
       
    42 class CCommFrameWriterAo;
       
    43 class CCommFrameReaderAo;
       
    44 
       
    45 /** @class CPortFactory PortFactory.h "PortFactory.h"
       
    46  *  @brief  This class provides the factory object which is used to
       
    47  *  construct port objects in the CSY. There is only one instance of
       
    48  *  this class in the CSY. CPortFactory is derived from C32's CSerial
       
    49  *  base class. CPortFactory is also responsible for allocating the
       
    50  *  CSY's multiplexer objects and LDD interface objects.
       
    51  */
       
    52 class CPortFactory : public CSerial  
       
    53 	{
       
    54 public:
       
    55 	enum TC32ClientType
       
    56 		{
       
    57 		EC32ClientUndefined,
       
    58 		EC32ClientTsy,
       
    59 		EC32ClientNif,
       
    60 		EC32ClientIpNif
       
    61 		};
       
    62 
       
    63 	struct TC32PortInfo
       
    64 		{
       
    65 		TC32ClientType iClientType;
       
    66 		TInt           iPortNumber;
       
    67 		};
       
    68 
       
    69 public:
       
    70 	static CPortFactory* NewL();
       
    71 
       
    72 	~CPortFactory();
       
    73 
       
    74 	static void CloseObject(TAny* aObject);
       
    75 
       
    76 	inline TBool IsMultiplexerCreated();
       
    77 
       
    78 	TC32ClientType GetClientType(TInt aPortNum);
       
    79 
       
    80 	inline CCommFrameWriterAo* GetCommWriterAo() const;
       
    81 	inline CCommFrameReaderAo* GetCommReaderAo() const;
       
    82 	
       
    83 	RBusDevComm* DTEPort();  // LDD
       
    84 
       
    85 	void ConnectControlChannel();
       
    86 	void DisconnectControlChannel();
       
    87 	void ChannelCtrlDoCancel();
       
    88 	
       
    89 	CPortC32InterfaceBase* FindPortC32Interface(const TUint8 aDlcNum);
       
    90 	CChannelMgrCmdData* FindChannelMgrByDlcNum(const TUint8 aDlcNum);
       
    91 
       
    92 	inline CMux0710Protocol* GetMux0710Protocol() const;
       
    93 
       
    94 	inline CChannelMgrCtrl* GetControlChannel() const;
       
    95 
       
    96 	void RemoveC32Port(CPortC32InterfaceBase* aPort);
       
    97 
       
    98 	void ConnectIpNifPort(const TUint8 aDlcNum);
       
    99 
       
   100 	TSecurityPolicy PortPlatSecCapability(TUint aPort) const;
       
   101 
       
   102 	TBool FindDlcToEnable();
       
   103 	void FindActiveDataDlcToStop();
       
   104 	void StopAnyDlc();
       
   105 	TBool DecrementNumOfOpenPorts();
       
   106 	
       
   107 
       
   108 
       
   109 private:
       
   110 	CPortFactory();	
       
   111 	void ConstructL();
       
   112 
       
   113 	void CreateCsyObjectsL();
       
   114 
       
   115 	// from CSerial
       
   116 	virtual CPort* NewPortL(const TUint aUnit);
       
   117 	virtual void Info(TSerialInfo& aSerialInfo);
       
   118 
       
   119 	// utility methods
       
   120 	CChannelMgrCmdData* FindChannelMgr(const TUint aC32PortNum);
       
   121 
       
   122 	TInt ConfigurePhysicalCommPortL();
       
   123 
       
   124 private:
       
   125 	// attributes
       
   126 	TBool							iMuxObjectsCreated;
       
   127 
       
   128 	// C32 interface ports
       
   129 	TSglQue<CPortC32InterfaceBase>		iPortC32InterfaceList;
       
   130 	TSglQueIter<CPortC32InterfaceBase>	iPortC32InterfaceIter;	
       
   131 
       
   132 	// multiplexer framer
       
   133  	CMux0710Protocol*				iMux0710Protocol;
       
   134 
       
   135 	// multiplexer Control channel
       
   136 	CChannelMgrCtrl*				iChannelCtrl;
       
   137 
       
   138 	// multiplexer Command channels
       
   139 	TSglQue<CChannelMgrCmdData>		iDataChannelList;
       
   140 	TSglQueIter<CChannelMgrCmdData>	iDataChannelIter;
       
   141 
       
   142 	// interface to the serial port logical device driver
       
   143 	RBusDevComm						iCommPort;
       
   144 	CCommFrameWriterAo*				iCommWriterAo;
       
   145 	CCommFrameReaderAo*				iCommReaderAo;
       
   146 
       
   147 	TBool iDisconnectInProgress;
       
   148 
       
   149 	TUint iLastDlcNum;
       
   150 	TUint iNumOfOpenPorts;
       
   151 	
       
   152 	TBool iOpenPortFailed;
       
   153 	};
       
   154 
       
   155 
       
   156 // Inline Methods
       
   157 inline CCommFrameWriterAo* CPortFactory::GetCommWriterAo() const
       
   158 /**
       
   159  * Return a pointer to the CSY's comm writer object.
       
   160  * @param void
       
   161  * @return Pointer to the CSY's comm writer object
       
   162  */
       
   163 	{ 
       
   164  	return iCommWriterAo; 
       
   165 	}
       
   166 
       
   167 inline CCommFrameReaderAo* CPortFactory::GetCommReaderAo() const
       
   168 /**
       
   169  * Return a pointer to the CSY's comm reader object.
       
   170  * @param void
       
   171  * @return Pointer to the CSY's comm reader object
       
   172  */
       
   173 	{ 
       
   174  	return iCommReaderAo; 
       
   175 	}
       
   176 
       
   177 inline RBusDevComm* CPortFactory::DTEPort()
       
   178 /**
       
   179  * Return a pointer to the CSY's LDD port interface object.
       
   180  * @param void
       
   181  * @return Pointer to the CSY's LDD port interface object
       
   182  */
       
   183 	 { 
       
   184  	return (&iCommPort);
       
   185 	 }
       
   186 
       
   187 inline CMux0710Protocol* CPortFactory::GetMux0710Protocol() const
       
   188 /**
       
   189  * Return a pointer to the CSY's mux protocol object.
       
   190  * @param void
       
   191  * @return Pointer to the CSY's mux protocol object
       
   192  */
       
   193 	{
       
   194 	return iMux0710Protocol;
       
   195 	}
       
   196 
       
   197 inline CChannelMgrCtrl* CPortFactory::GetControlChannel() const
       
   198 /**
       
   199  * Return a pointer to the CSY's control channel object.
       
   200  * @param void
       
   201  * @return Pointer to the CSY's control channel object
       
   202  */
       
   203 	{
       
   204 	return iChannelCtrl;
       
   205 	}
       
   206 
       
   207 #endif  // _PORTFACTORY_H__