htiui/HtiAdminQt/chtiadminengine.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 11 May 2010 16:14:15 +0300
branchRCL_3
changeset 11 454d022d514b
child 12 aefcba28a3e0
permissions -rw-r--r--
Revision: 201017 Kit: 201019

/*
* Copyright (c) 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:  Implementation of HtiAdmin main.
*
*/

#ifndef CHTIADMINENGINE_H
#define CHTIADMINENGINE_H

#include <e32std.h>
#include <e32base.h>
#include <BADESCA.H> 


class HtiEngineWrapper;
class CPeriodic;
class CHtiCfg;


class CHtiAdminEngine : public CBase
	{
	public:
	
	/**
	 * Constructor
	 */
	CHtiAdminEngine();
	
	/**
	 * Destructor
	 */
	~CHtiAdminEngine();
	
	/**
	 * Two-phased constructor.
	 */
	static CHtiAdminEngine* NewL(HtiEngineWrapper *aEngineWrapper);

	/**
	 * Two-phased constructor.
	 */
	static CHtiAdminEngine* NewLC(HtiEngineWrapper *aEngineWrapper);
	
	void StartHtiL();
	
	void StopHtiL();
	
	void EnableBtByAddressL(const TDesC& aAddress);
	
	void EnableBtByNameL(const TDesC& aAddress);
	
	void BtSearchL();
	
	void IPListenL(const TDesC& aPort, const TDesC& aIAP);
	
	void IPConnectL(const TDesC& aHost, const TDesC& aPort, const TDesC& aIAP);
	
	void EnableSerialL(const TDesC& aComPortNumber);
	
	void EnableOtherCommL(const TDesC& aSelectedPluginName);
	
	void SetPriorityBackgroundL();
	
	void SetPriorityForegroundL();
	
	void SetPriorityHighL();
	
	void SetPriorityAbsoluteHighL();
	
	void AutoStartEnableL(TBool aEnableAutoStart);
	
	void ConsoleEnableL(TBool aEnableConsole);
	
	void ErrorDialogsEnableL(TBool aEnableErrorDialogs);
	
	void SetHtiCfgParamL(const TDesC& aParamName, const TDesC& aParamValue);
	void GetHtiCfgParamL(const TDesC& aParamName, TDes& aParamValue);
	
	void SetBtCfgParamL(const TDesC& aParamName, const TDesC& aParamValue);
	void GetBtCfgParamL(const TDesC& aParamName, TDes& aParamValue);
	
	void SetSerialCfgParamL(const TDesC& aParamName, const TDesC& aParamValue);
	void GetSerialCfgParamL(const TDesC& aParamName, TDes& aParamValue);
	
	void SetIPCfgParamL(const TDesC& aParamName, const TDesC& aParamValue);
	void GetIPCfgParamL(const TDesC& aParamName, TDes& aParamValue);
	
	void GetSelectedComm(TDes& aPluginName);
	
	void CheckStatusesL();
	
	CDesCArray* SearchCommPluginsL();	
	
	CDesCArray* SearchIAPsL();
	
	void CHtiAdminEngine::WatchDogEnableL(TBool aEnableWDog);
	
	/**
	* Kills the HtiWatchDog process if it is running.
	*/
	void KillHtiWatchDogL();

	/**
	* Stops the timer issuing the periodical HTI Framework process
	* status checks.
	*/
	void KillTimer();

	/**
	* The method called by the periodic timer.
	* @param aPtr pointer to this CHtiAdminAppUi instance
	* @return zero if the callback function should not be called again,
	* otherwise non-zero. Current implementation returns always ETrue.
	*/
	static TInt TimerCallBackL( TAny* aPtr );
	
	/**
	* Tries to find the HTIFramework.exe process and open a handle to it.
	* @param aPrs on return contains an open handle to the HTIFramework.exe
	* process if process found and opened successfully
	* @return ETrue if process found and opened successfully,
	* otherwise EFalse
	*/
	TBool OpenHtiProcess( RProcess& aPrs );
	
	/**
	* Updates the HTI Framework process status in the display.
	*/
	void UpdateStatusL();
	
	/**
	* Updates the HTI auto start status in the display.
	*/
	void UpdateAutoStartStatus();
	
	
	void UpdateConsoleStatus();
	
	void UpdateWatchDogStatus();
	
	/**
	* Updates the selected communication in the display.
	*/
	void UpdateSelectedComm();

	private:
		void ConstructL(HtiEngineWrapper *aEngineWrapper);
		
		void SetCfgParamL(const TDesC& aParamName, const TDesC& aParamValue, const TDesC& aFileName);
		void GetCfgParamL(const TDesC& aParamName, TDes& aParamValue, const TDesC& aFileName);
		
	private:
		// Enginewrapper that is used for communicating between QT and Symbian
		HtiEngineWrapper* iEngineWrapper;             
		
		// Timer triggering periodic checking of HTIFramework process status
        CPeriodic*        iPeriodic;
        
        // For reading and writing HTI configuration files
        CHtiCfg*          iHtiCfg;
        
        CDesCArrayFlat* iPluginNameArray;
        
        CDesC8ArrayFlat* iPluginDataTypeArray;

        CDesCArrayFlat* iIAPsArray;
	
		
	};

#endif //CHTIADMINENGINE_H