/* 状態管理クラスクラス (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; }