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

📄 smbmusicapsyncserverplayerreceivemwnotify.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
字号:
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
/*--------------------------------------------------------------------*/
// FileName:
//	SmbMusicAPSyncServerPlayerReceiveMWNotify.cpp
//
// Description:
//	PTX810 Music傾僾儕摨婜僒乕僶 MW偐傜偺僀儀儞僩捠抦傪庴怣偡傞僋儔僗
/*--------------------------------------------------------------------*/
//曄峏棜楌
//擔晅			|曄峏幰			|撪梕
//--------------+---------------+--------------------------------------
//2006/06/09	|娵壀			|怴婯嶌惉
//2006/07/19	|娵壀			|CM2849懳墳
//----PTX824----+---------------+--------------------------------------
//2007/04/03	|K3悪杮			|PTX824懳墳
//2007/04/18	|K3悪杮			|嵞惗晄壜尨場捛壛丒嶍彍
//2007/04/24	|K3悪杮			|嵞惗晄壜尨場偵WMA偺DRM惂尷僄儔乕傪捛壛
//2007/07/05	|K3悪杮			|QAC巜揈懳墳


#ifndef __SMBMUSICAPSYNCSERVERPLAYERRECEIVEMWNOTIFY_H__
#include "SmbMusicAPSyncServerPlayerReceiveMWNotify.h"
#endif

#ifndef	__SMBMUSICAPSYNCSERVERUTIL_H__
#include "SmbMusicAPSyncServerUtil.h"
#endif	//  __SMBMUSICAPSYNCSERVERUTIL_H__

USING_NAMESPACE_SEMCJ

/**
 僐儞僗僩儔僋僞
 * @param[in]	aAyncObserver	旕摨婜僐儅儞僪僆僽僓乕僶
 * @return		側偟
 */
CSmbMusicAPSyncServerPlayerReceiveMWNotify::CSmbMusicAPSyncServerPlayerReceiveMWNotify(
		MSmbMusicAPSyncServerPlayerAsyncObserver& aAsyncObserver,
		DCM_NAMESPACE::RLog& aLog
		)
	: CActive(CActive::EPriorityStandard), iAsyncObserver(aAsyncObserver), iLog(aLog)
	{
	//傾僋僥傿僽僗働僕儏乕儔偵帺暘帺恎傪捛壛偡傞
	CActiveScheduler::Add(this);
	}

/**
 僨僗僩儔僋僞
 * @param	側偟
 * @return	側偟
 */
CSmbMusicAPSyncServerPlayerReceiveMWNotify::~CSmbMusicAPSyncServerPlayerReceiveMWNotify()
	{
	}

/**
 AO偺僉儍儞僙儖
 * @param[in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerPlayerReceiveMWNotify::DoCancel()
	{
	if(NULL == iPlayer)
		{
		//僒乕僶傊偺僙僢僔儑儞傪強桳偟偰偄側偗傟偽側偵傕偟側偄
		return;
		}
	//僾儗僀儎乕僀儀儞僩捠抦偺僉儍儞僙儖梫媮
	iPlayer->CancelNotifyPlayerEvent() ;
	}

/**
 僾儗僀儎乕惂屼偐傜僀儀儞僩傪庴怣
 * @param[in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerPlayerReceiveMWNotify::RunL()
	{
	//嵞惗宯偺撪晹僐儅儞僪
	TSmbMusicAPSyncServerPlayerAsyncCommand command = ESmbMusicAPSyncServerPlayerReceivePlayerMW;

	//儘僌偼弌偟偲偒傑偟傚偆
	TInt log = EMusicAPSyncServerClassNumber54 | EMusicAPSyncServerLocationNumber00;
	_LIT(KServerPlayerFunc01, "SyncServerPlayerReceiveMWNotify::RunL(iStatus:%d) Receive Event=[%d], State=[%d], ModifyCause=[%d], FailCause=[%d]");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelLowest, KServerPlayerFunc01,
							iStatus.Int(),
							iPlayerEvent.iPlayerEvent,
							iPlayerEvent.iPlayState,
							iPlayerEvent.iModifyCause,
							iPlayerEvent.iPlayFailCause
							);

	//僾儗僀儎乕惂屼MW偐傜庴偗偨捠抦撪梕傪撪晹僐儅儞僪偵曄姺偡傞
	switch(iPlayerEvent.iPlayerEvent)
		{
	//忬懺曄峏捠抦
	case ESmbMusicMWPlayerChgState:
		//堦帪掆巭忬懺偵慗堏偟偨偺偱偁傟偽偦偺梫場傪摿掕偡傞
		if(ESmbMusicMWPlayerStatePause == iPlayerEvent.iPlayState)
			{
			switch(iPlayerEvent.iModifyCause)
				{
			//FF偵傛傝嬋廔抂専弌僐儅儞僪
			case ESmbMusicMWPlayerFFSongEnd:
				command = ESmbMusicAPSyncServerPlayerSongTailNotify;
				break;

			//FR偵傛傝嬋偺愭摢傪専弌偟偨僐儅儞僪
			case ESmbMusicMWPlayerFRSongFront:
				command = ESmbMusicAPSyncServerPlayerSongHeadNotify;
				break;

			//	儕僗僩嵞惗姰椆僐儅儞僪
			case ESmbMusicMWPlayerListEnd:
				command = ESmbMusicAPSyncServerPlayerFinishPlayListNotify;
				break;

			default:
				//忬懺曄峏僐儅儞僪傪敪峴偡傞
				command = ESmbMusicAPSyncServerPlayerChangeStateNotify;
				break;
				}
			}
		else
			{
			//堦帪掆巭忬懺埲奜偺忬懺曄峏捠抦(嵞惗宯偺撪晹僐儅儞僪傪敪峴)
			command = ESmbMusicAPSyncServerPlayerReceivePlayerMW;
			}
		break;

	//嵞惗奐巒捠抦
	case ESmbMusicMWPlayerStartPlay:
		command = ESmbMusicAPSyncServerPlayerStartPlayNotify;
		break;

	//嵞惗妋擣梫媮
//	case ESmbMusicMWPlayerConfirmation:
//		break;

	//FF嵞惗奐巒捠抦
	case ESmbMusicMWPlayerPlayFF:
		command = ESmbMusicAPSyncServerPlayerStartPlayFFNotify;
		break;

	//FR嵞惗奐巒捠抦
	case ESmbMusicMWPlayerPlayFR:
		command = ESmbMusicAPSyncServerPlayerStartPlayFRNotify;
		break;

	//嵞惗晄壜捠抦
	case ESmbMusicMWPlayerFailSong:
		command = ESmbMusicAPSyncServerPlayerErrSongNotify;
		break;

	//HW堎忢専弌
	case ESmbMusicMWPlayerHWAbort:
		command = ESmbMusicAPSyncServerPlayerHWAbortNotify;
		break;

	//嵞惗掆巭捠抦
	case ESmbMusicMWPlayerPlayPosModify:
		command = ESmbMusicAPSyncServerPlayerStopNotify;
		break;

#ifndef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
//  ADD-S PTX824 k3-sugimoto
	//  嵞惗妋擣偑昁梫側僐儞僥儞僣嵞惗偟傛偆偲偟偨応崌
	case ESmbMusicMWPlayerUserConfirm:
		{
		switch(iPlayerEvent.iModifyCause)
			{
			//  僌儗乕僗僺儕僆僪婜娫撪僐儞僥儞僣
			case ESmbMusicMWPlayerGracePriodContents:
				command = ESmbMusicAPSyncServerPlayerConfirmGracePriod;
				break;

			//  嵞惗夞悢惂尷晅僐儞僥儞僣
			case ESmbMusicMWPlayerLimitCntContents:
				command = ESmbMusicAPSyncServerPlayerConfirmLimitCount;
				break;

			default:
				ASSERT(EFalse);
				break;
			}
		}
		break;
//  ADD-E PTX824 k3-sugimoto
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__

	default:
		break;
		}

	if(KErrServerTerminated == iStatus.Int())
		{
		//MW偑巰傫偩帪偼Abort傪捠抦偟傑偡
		command = ESmbMusicAPSyncServerPlayerHWAbortNotify;

		//僾儗僀儎乕惂屼MW偑彑庤偵巰傫偩偺偱儘僌傪弌偟傑偟傚偆
		TInt log = EMusicAPSyncServerClassNumber54 | EMusicAPSyncServerLocationNumber01;
		_LIT(KServerPlayerFunc01, "SyncServerPlayerReceiveMWNotify::PlayerMW Dead ");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc01);
		}
	//	僐儅儞僪敪峴
	iAsyncObserver.AsyncCommand(command);
	}

/**
 僾儗僀儎乕惂屼偵僀儀儞僩捠抦梫媮傪敪峴偡傞
 * @param[in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerPlayerReceiveMWNotify::Start()
	{
	if(NULL == iPlayer)
		{
		//僾儗僀儎乕惂屼MW傪強桳偟偰偄側偄偺偱壗傕偟側偄
		return;
		}

	if(IsActive())
		{
		//婛偵僀儀儞僩捠抦懸偪側偺偱壗傕偟側偄
		return;
		}

	//僾儗僀儎乕僀儀儞僩捠抦梫媮
	iPlayer->SetNotifyPlayerEvent(iStatus, iPlayerEvent);

	SetActive();
	}

/**
 僾儗僀儎乕惂屼偲偺愙懕姰椆
 * @param[in]	aPlayerSession	僙僢僔儑儞
 * @return		側偟
 */
void CSmbMusicAPSyncServerPlayerReceiveMWNotify::SetPlayer(RSmbMusicMWPlayerSession* aPlayerSession)
	{
	iPlayer = aPlayerSession;
	}

/**
 僾儗僀儎乕惂屼偲偺僙僢僔儑儞愗抐捠抦
 * @param[in]	側偟
 * @return		側偟
 */
void CSmbMusicAPSyncServerPlayerReceiveMWNotify::ClearPlayer()
	{
	//僉儍儞僙儖傪敪峴偡傞
	Cancel();
	iPlayer = NULL;
	}

/**
 庴怣偟偨僀儀儞僩偵娷傑傟傞嬋忣曬傪庢摼偡傞
 * @param[out]	aIHandle	Iterator僴儞僪儖
 * @param[out]	aId			嬋ID
 * @return		張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerReceiveMWNotify::GetSongInfo(TInt& aIHandle, TUint64& aId)
	{
	//僾儗僀儎乕惂屼MW偐傜偺捠抦Iterator傪曉偡
	aIHandle = iPlayerEvent.iSongInfo.iIteratorHandle;
	aId		 = iPlayerEvent.iSongInfo.iContainerID;
	return KErrNone;
	}

/**
 庴怣偟偨僀儀儞僩偵娷傑傟傞嵞惗晄壜棟桼傪庢摼偡傞
 * @param[in]	側偟
 * @return		嵞惗晄壜棟桼
 */
TSmbMusicAPSyncEnginePlayFailCause CSmbMusicAPSyncServerPlayerReceiveMWNotify::GetFailReason()
	{
	//嵞惗晄壜棟桼傪弶婜壔
	TSmbMusicAPSyncEnginePlayFailCause cause;

	//僾儗僀儎乕惂屼MW偐傜偺捠抦撪梕傪夝愅
	switch(iPlayerEvent.iPlayFailCause)
		{
	//僼僅乕儅僢僩堎忢
	case ESmbMusicMWPlayerAbnormal:
		cause = ESmbMusicAPSyncEnginePlayerAbnormal;
		break;

	//懳徾僼傽僀儖側偟
	case ESmbMusicMWPlayerNotFound:
		cause = ESmbMusicAPSyncEnginePlayerNotFound;
		break;

	//嵞惗婜尷惂尷奜
	case ESmbMusicMWPlayerOverTimeLimit:
		cause = ESmbMusicAPSyncEnginePlayerOverTimeLimit;
		break;

//CM2849懳墳	Start
	//嵞惗婜娫惂尷慜
	case ESmbMusicMWPlayerBeforePeriod:
		cause = ESmbMusicAPSyncEnginePlayerBeforePeriod;
		break;

	//嵞惗婜娫惂尷屻
	case ESmbMusicMWPlayerOverPeriod:
		cause = ESmbMusicAPSyncEnginePlayerOverPeriod;
		break;
//CM2849懳墳	End

	//嵞惗夞悢惂尷僆乕僶乕
	case ESmbMusicMWPlayerOverCount:
		cause = ESmbMusicAPSyncEnginePlayerOverCount;
		break;

	//UIM惂尷懳徾僼傽僀儖
	case ESmbMusicMWPlayerUIMConfirm:
		cause = ESmbMusicAPSyncEnginePlayerUIMLimit;
		break;

	//晄姰慡僼傽僀儖(僟僂儞儘乕僪搑拞偺嬋)
	case ESmbMusicMWPlayerIncompleteFile:
		cause = ESmbMusicAPSyncEnginePlayerIncompleteFile;
		break;

//CM2849懳墳	Start
	//帪崗枹愝掕
	case ESmbMusicMWPlayerRTCErr:
		cause = ESmbMusicAPSyncEnginePlayerRTCErr;
		break;
//CM2849懳墳	End

//  ADD-S PTX824 k3-sugimoto
#ifndef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	//  僒僽僗僋儕僾僔儑儞僐儞僥儞僣偺儔僀僙儞僗愗傟
	case ESmbMusicMWPlayerLicenseErr:
		cause = ESmbMusicAPSyncEnginePlayerLicenseErr;
		break;

	//  嵞惗嬛巭妝嬋儕僗僩僐儞僥儞僣
	case ESmbMusicMWPlayerProhibitionList:
		cause = ESmbMusicAPSyncEnginePlayerProhibitionList;
		break;

	//  WMA偺DRM惂尷僄儔乕
	case ESmbMusicMWPlayerWMADRMErr:
		cause = ESmbMusicAPSyncEnginePlayerWMADRMErr;
		break;

	//  娗棟DB偵尃棙忣曬偑側偄DataBox撪偺僒僽僗僋儕僾僔儑儞僐儞僥儞僣傪専弌偟偨
	case ESmbMusicMWPlayerNoneCpInfoDataBox:
		cause = ESmbMusicAPSyncEnginePlayerNoneCpInfoDataBox;
		break;

	//  娗棟DB偵尃棙忣曬偑側偄SD僶僀儞僪偝傟偨僒僽僗僋儕僾僔儑儞僐儞僥儞僣傪専弌偟偨
	case ESmbMusicMWPlayerNoneCpInfoSDBind:
		cause = ESmbMusicAPSyncEnginePlayerNoneCpInfoSDBind;
		break;

	//  WMA偺儔僀僙儞僗僼傽僀儖側偟偺応崌
	case ESmbMusicMWPlayerWMALicNotFound:
		cause = ESmbMusicAPSyncEnginePlayerWMALicNotFound;
		break;

	//  WMA偺儔僀僙儞僗僼傽僀儖柍岠偺応崌
	case ESmbMusicMWPlayerWMALicInvalid:
		cause = ESmbMusicAPSyncEnginePlayerWMALicInvalid;
		break;

	//  WMA偺DRM惂尷僄儔乕(仸婜娫慜偺応崌)
	case ESmbMusicMWPlayerWMADRMBeforePeriod:
		cause = ESmbMusicAPSyncEnginePlayerWMADRMBeforePeriod;
		break;
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
//  ADD-E PTX824 k3-sugimoto

	//愝掕抣柍岠
	case ESmbMusicMWPlayerFailCauseInvalid:
		cause = ESmbMusicAPSyncEnginePlayerInvalid;
		break;

	default:
		cause = ESmbMusicAPSyncEnginePlayerInvalid;
		break;
		}
	return cause;
	}


//  ADD-S PTX824 k3-sugimoto
/**
 *  MW偐傜捠抦偝傟偨憤嵞惗帪娫傪庢摼偡傞
 *
 *  @return	憤嵞惗帪娫
 **/
TUint32 CSmbMusicAPSyncServerPlayerReceiveMWNotify::TotalTime()
	{
	if (iPlayerEvent.iPlayerEvent != ESmbMusicMWPlayerStartPlay)
		{	//  嵞惗僀儀儞僩偑壒柭摦奐巒埲奜偺応崌
		TInt log = EMusicAPSyncServerClassNumber54 | EMusicAPSyncServerLocationNumber02;
		_LIT(KServerPlayerFunc02, "SyncServerPlayerReceiveMWNotify::TotalTime NutSupport Event = %d ");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHigh, KServerPlayerFunc02, iPlayerEvent.iPlayerEvent);

		return 0;	//  KErr乣偼巊偊側偄偺偱0偱丅
		}

#ifdef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	return 60000;	//  60昩
#else	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	return iPlayerEvent.iAdditionalInfo.iStartPlayInfo.iTotalTime;
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	}

/**
 *  嵞惗夞悢惂尷捠抦帪偺嵞惗夞悢偲嵞惗壜擻嵟戝夞悢傪庢摼偡傞
 *
 *  @param[out]	aPlayCount	尰嵼偺嵞惗夞悢
 *  @param[out]	aLimitCount	嵞惗惂尷夞悢
 *
 *  @return	張棟寢壥
 **/
TInt CSmbMusicAPSyncServerPlayerReceiveMWNotify::GetLimitCount(TInt16& aPlayCount, TInt16& aLimitCount)
	{
	aPlayCount	= 0;
	aLimitCount	= 0;

#ifndef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
	if ((iPlayerEvent.iPlayerEvent != ESmbMusicMWPlayerUserConfirm) ||
		(iPlayerEvent.iModifyCause != ESmbMusicMWPlayerLimitCntContents))
		{	//  嵞惗夞悢惂尷捠抦偠傖側偄応崌
		return KErrNotReady;
		}

	aPlayCount	= iPlayerEvent.iAdditionalInfo.iLimitCntInfo.iPlayCount;
	aLimitCount	= iPlayerEvent.iAdditionalInfo.iLimitCntInfo.iLimitCount;
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__

	return KErrNone;
	}
//  ADD-E PTX824 k3-sugimoto


// end of SmbMusicAPSyncServerPlayerReceiveMWNotify.cpp
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

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