Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

578 lines
15 KiB

/*
状態管理クラスクラス
(NP2) Sachiko Yasukawa
*/
#include "stdafx.h"
#include "includes.h"
#include "classlib.h"
void CMPEGBoardState::SetState(LIBSTATE State)
{
m_State = State;
switch(m_State){
case PowerOff:
m_pStateObject = &m_PowerOffState;
DBG_PRINTF(("CLASSLIB: STATE = POWEROFF\n"));
#ifdef TEST
TRACE("STATE = POWEROFF\n");
#endif
break;
case Stop:
m_pStateObject = &m_StopState;
#ifdef TEST
TRACE("STATE = STOP\n");
#endif
DBG_PRINTF(("CLASSLIB: STATE = STOP\n"));
break;
case Pause:
m_pStateObject = &m_PauseState;
#ifdef TEST
TRACE("STATE = PAUSE\n");
#endif
DBG_PRINTF(("CLASSLIB: STATE = PAUSE\n"));
break;
case Play:
m_pStateObject = &m_PlayState;
#ifdef TEST
TRACE("STATE = PLAY\n");
#endif
DBG_PRINTF(("CLASSLIB: STATE = PLAY\n"));
break;
case Slow:
m_pStateObject = &m_SlowState;
#ifdef TEST
TRACE("STATE = SLOW\n");
#endif
DBG_PRINTF(("CLASSLIB: STATE = SLOW\n"));
break;
default:
m_pStateObject = &m_ScanState;
#ifdef TEST
TRACE("STATE = SCAN\n");
#endif
DBG_PRINTF(("CLASSLIB: STATE = SCAN\n"));
break;
}
}
BOOL CPowerOffState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
return TRUE;
}
BOOL CPowerOffState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
HALRESULT st;
if((st = pCHAL->SetPowerState(POWERSTATE_ON)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE POWERON\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangeStpe:HAL CAN'T CHANGE POWERON\n"));
DBG_BREAK();
return FALSE;
}
if((st = pSHAL->SetPlayStop()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE STOP\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangeState:HAL CAN'T CHANGE STOP\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Stop);
return TRUE;
}
BOOL CPowerOffState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO PAUSE\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangeState:CAN'T CHANGE FROM POWERSTATE TO PAUSE\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPowerOffState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO PLAY\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangePlay:CAN'T CHANGE FROM POWERSTATE TO PLAY\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPowerOffState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO PAUSEVIASINGLESTEPE\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangePauseViaSingleStep:CAN'T CHANGE FROM POWERSTATE TO PAUSEVIASINGLESTEPE\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPowerOffState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO SLOW\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangeSlow:CAN'T CHANGE FROM POWERSTATE TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPowerOffState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO SCAN\n");
DBG_PRINTF(("CLASSLIB:CPowerOffState::ChangeScan:CAN'T CHANGE FROM POWERSTATE TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
BOOL CStopState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
BOOL st;
if((st = pCHAL->SetPowerState(POWERSTATE_OFF)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE POWEROFF\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangePowerOff:HAL CAN'T CHANGE POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(PowerOff);
return TRUE;
}
BOOL CStopState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
return TRUE;
}
BOOL CStopState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
BOOL st;
if((st = pSHAL->SetPlayPause()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PAUSE\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangePause:HAL CAN'T CHANGE PAUSE\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Pause);
return TRUE;
}
BOOL CStopState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM STOP TO PLAY\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangePlay:CAN'T CHANGE FROM STOP TO PLAY\n"));
DBG_BREAK();
return FALSE;
}
BOOL CStopState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM STOP TO PAUSEVIASINGLESTEP\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangePauseViaSingleStep:CAN'T CHANGE FROM STOP TO PAUSEVIASINGLESTEP\n"));
DBG_BREAK();
return FALSE;
}
BOOL CStopState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM STOP TO SLOW\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangeSlow:CAN'T CHANGE FROM STOP TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
BOOL CStopState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM POWERSTATE TO SCAN\n");
DBG_PRINTF(("CLASSLIB:CStopState::ChangeScan:CAN'T CHANGE FROM STOP TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPauseState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM PAUSE TO POWEROFF\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangePowerOff:CAN'T CHANGE FROM PAUSE TO POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPauseState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
HALRESULT st;
if((st = pSHAL->SetPlayStop()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE STOP\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangeStop:HAL CAN'T CHANGE FROM PAUSE TO STOP\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Stop);
pStream->FlushTransferBuffer();
return TRUE;
}
BOOL CPauseState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
return TRUE;
}
BOOL CPauseState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayNormal()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PLAY\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangePlay:HAL CAN'T CHANGE FROM PAUSE TO PLAY\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Play);
return TRUE;
}
BOOL CPauseState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlaySingleStep()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PAUSEVIASINGLESTEP\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangePauseViaSingleStep:HAL CAN'T CHANGE FROM PAUSE TO SINGLESTEPn"));
DBG_BREAK();
return FALSE;
}
return TRUE;
}
BOOL CPauseState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlaySlow(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SLOW\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangeSlow:CAN'T CHANGE FROM PAUSE TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Slow);
return TRUE;
}
BOOL CPauseState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayScan(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SCAN\n");
DBG_PRINTF(("CLASSLIB:CPauseState::ChangeScan:HAL CAN'T CHANGE FROM PAUSE TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Scan);
return TRUE;
}
BOOL CPlayState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM PLAY TO POWEROFF\n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangePowerOff:CAN'T CHANGE FROM PLAY TO POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
BOOL CPlayState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
HALRESULT st;
if((st = pSHAL->SetPlayStop()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PLAY\n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangeStop:HAL CAN'T CHANGE FROM PLAY TO STOP\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Stop);
pStream->FlushTransferBuffer();
return TRUE;
}
BOOL CPlayState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayPause()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PAUSE\n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangePause:HAL CAN'T CHANGE FROM PLAY TO PAUSE\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Pause);
return TRUE;
}
BOOL CPlayState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
return TRUE;
}
BOOL CPlayState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
//本当は遷移できない?
if((st = pSHAL->SetPlaySingleStep()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE FROM PAUSE TO \n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangePowerOff:HAL CAN'T CHANGE FROM PLAY TO POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Pause);
return TRUE;
}
BOOL CPlayState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlaySlow(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SLOW\n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangeSlow:HAL CAN'T CHANGE FROM PLAY TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Slow);
return TRUE;
}
BOOL CPlayState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayScan(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SCAN\n");
DBG_PRINTF(("CLASSLIB:CPlayState::ChangeScan:HAL CAN'T CHANGE FROM PLAY TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Scan);
return TRUE;
}
BOOL CSlowState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM SLOW TO POWEROFF\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangePowerOff:CAN'T CHANGE FROM STLOW TO POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
BOOL CSlowState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
HALRESULT st;
if((st = pSHAL->SetPlayStop()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE STOP\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangeStop:HAL CAN'T CHANGE FROM STLOW TO STOP\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Stop);
pStream->FlushTransferBuffer();
return TRUE;
}
BOOL CSlowState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayPause()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PAUSE\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangePause:HAL CAN'T CHANGE FROM STLOW TO PAUSE\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Pause);
return TRUE;
}
BOOL CSlowState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayNormal()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PLAY\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangePlay:HAL CAN'T CHANGE FROM STLOW TO PLAY\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Play);
return TRUE;
}
BOOL CSlowState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM SLOW TO PAUSEVIASINGLESTEP\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangePauseViaSingleStep:CAN'T CHANGE FROM STLOW TO SINGLESTEP\n"));
DBG_BREAK();
return FALSE;
}
BOOL CSlowState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlaySlow(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SLOW\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangeSlow:HAL CAN'T CHANGE FROM STLOW TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
return TRUE;
}
BOOL CSlowState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayScan(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SCAN\n");
DBG_PRINTF(("CLASSLIB:CSlowState::ChangeScan:HAL CAN'T CHANGE FROM STLOW TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Scan);
return TRUE;
}
BOOL CScanState::ChangePowerOff(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM SCAN TO POWEROFF\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangePowerOff:CAN'T CHANGE FROM SCAN TO POWEROFF\n"));
DBG_BREAK();
return FALSE;
}
BOOL CScanState::ChangeStop(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL,CBaseStream *pStream)
{
HALRESULT st;
if((st = pSHAL->SetPlayStop()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE STOP \n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangeStop:HAL CAN'T CHANGE FROM SCAN TO STOP\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Stop);
pStream->FlushTransferBuffer();
return TRUE;
}
BOOL CScanState::ChangePause(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayPause()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PAUSE\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangePause:HAL CAN'T CHANGE FROM SCAN TO PAUSE\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Pause);
return TRUE;
}
BOOL CScanState::ChangePlay(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayNormal()) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE PLAY\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangePlay:HAL CAN'T CHANGE FROM SCAN TO PLAY\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Play);
return TRUE;
}
BOOL CScanState::ChangePauseViaSingleStep(IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
_RPTF0(_CRT_WARN, "CAN'T CHANGE FROM SCAN TO PAUSEVIASINGLESTEP\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangePauseVidaSingleStep:CAN'T CHANGE FROM SCAN TO SINGLESTEP\n"));
DBG_BREAK();
return FALSE;
}
BOOL CScanState::ChangeSlow(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayScan(Slow)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SCAN\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangeSlow:HAL CAN'T CHANGE FROM SCAN TO SLOW\n"));
DBG_BREAK();
return FALSE;
}
((CMPEGBoardState *)m_pMPEGBoardState)->SetState(Slow);
return TRUE;
}
BOOL CScanState::ChangeScan(DWORD Speed, IClassLibHAL *pCHAL, IHALStreamControl *pSHAL)
{
HALRESULT st;
if((st = pSHAL->SetPlayScan(Speed)) != HAL_SUCCESS){
_RPTF0(_CRT_WARN, "HAL CAN'T CHANGE SCAN\n");
DBG_PRINTF(("CLASSLIB:CScanState::ChangeScan:HAL CAN'T CHANGE FROM SCAN TO SCAN\n"));
DBG_BREAK();
return FALSE;
}
return TRUE;
}