⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialutils.cpp

📁 Symbian OS C++ for Mobile Phones Volume 3 源码
💻 CPP
字号:
// Copyright (c) 2004 - 2007, Symbian Software Ltd. All rights reserved.

#include "serialutils.h"


/** Name of serial logical device driver on both hardware and emulator. */
_LIT(KLddName, "ECOMM");
/** Installed name of logical device driver on emulator. */
_LIT(KLddInstallName, "Comm");

#if defined(__WINS__)
	/** Name of physical device driver on emulator. */
	_LIT(KPddName, "ECDRV");
#elif defined(__EPOC32__)
	/** Name of physical device driver on hardware. */
	_LIT(KPddName, "EUART");
#endif


EXPORT_C void SerialUtils::LoadDeviceDriversL(TBool& aLoadedLdd, TBool& aLoadedPdd)
/**
	Open the serial LDD and PDD.  This function takes references to two booleans
	to simplify freeing resources when FreeDeviceDrivers is closed.

	@param	aLoadedLdd		Whether the logical device driver was loaded.  This	
							value is valid even if this function leaves.
	@param	aLoadedPdd		Whether the physical device driver was loaded.  This
							value is valid even if this function leaves.
	@see FreeDeviceDrivers
 */
	{
	aLoadedLdd = aLoadedPdd = EFalse;

	TInt r;

	r = User::LoadLogicalDevice(KLddName);
	TRAN_LOG1("-SerialUtils::LoadDeviceDriversL,ldd=%d", r);
	if (r == KErrAlreadyExists)
		r = KErrNone;
	User::LeaveIfError(r);
	aLoadedLdd = ETrue;

	r = User::LoadPhysicalDevice(KPddName);
	TRAN_LOG1("-SerialUtils::LoadDeviceDriversL,pdd=%d", r);
	if (r == KErrAlreadyExists)
		r = KErrNone;
	User::LeaveIfError(r);
	aLoadedPdd = ETrue;
	}

EXPORT_C void SerialUtils::FreeDeviceDrivers(TBool aLoadedLdd, TBool aLoadedPdd)
/**
	Free the serial LDD and PDD if required.

	@param	aLoadedLdd		Whether the LDD was loaded.  This value should
							have been set by LoadDeviceDriversL.
	@param	aLoadedPdd		Whether the PDD was loaded.  This value should
							have been set by LoadDeviceDriversL.
 */
	{
	TRAN_LOG2(">SerialUtils::FreeDeviceDrivers,lldd=%d,lpdd=%d", aLoadedLdd, aLoadedPdd);

	TInt r;

	if (aLoadedLdd)
		{
		r = User::FreeLogicalDevice(KLddInstallName);
		TRAN_LOG1("-SerialUtils::FreeDeviceDrivers,lldd=%d", r);
		}

	if (aLoadedPdd)
		{
		TFindPhysicalDevice fpd;
		TFullName installedName;
		_LIT(KPddInstallNamePattern, "Comm.*");
		fpd.Find(KPddInstallNamePattern);
		r = fpd.Next(installedName);
		TRAN_LOG2("-SerialUtils::FreeDeviceDrivers,pnext=%d,insnm=\"%S\"", r, &installedName);
		if (r == KErrNone)
			r = User::FreePhysicalDevice(installedName);
		TRAN_LOG1("-SerialUtils::FreeDeviceDrivers,pfree=%d", r);
		}

	(void) r;
	TRAN_LOG0("<SerialUtils::FreeDeviceDrivers");
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -