📄 smbmusicapsyncserverplayerreceivemwnotify.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 + -