/*
FILE: Player.c/cpp
NOTE: The State Machine Wizard will add mapping macros between /*{{ and /*}}. Do NOT modify manually.
*/
#include "stdafx.h"
#include "sme.h"
#include "Player.h"
#include "PlayerEventId.h"
#include "SampleEVCDlg.h"
#include "SrvAgent.h"
SME_BEGIN_STATE_DEF(Player,Player)
/*{{SME_STATE_DEF(Player,Player)*/
SME_STATE_ENTRY_FUNC(PlayerEntry)
SME_STATE_EXIT_FUNC(PlayerExit)
/*}}SME_STATE_DEF*/
SME_END_STATE_DEF
SME_BEGIN_STATE_DEF(Player,PowerDown)
/*{{SME_STATE_DEF(Player,PowerDown)*/
SME_STATE_ENTRY_FUNC(PowerDownEntry)
SME_STATE_EXIT_FUNC(PowerDownExit)
SME_ON_EVENT(EXT_EVENT_ID_POWER,OnPowerDownEXT_EVENT_ID_POWER,PowerUp)
/*}}SME_STATE_DEF*/
SME_END_STATE_DEF
SME_BEGIN_STATE_DEF(Player,PowerUp)
/*{{SME_STATE_DEF(Player,PowerUp)*/
SME_STATE_ENTRY_FUNC(PowerUpEntry)
SME_STATE_EXIT_FUNC(PowerUpExit)
SME_ON_EVENT(EXT_EVENT_ID_POWER,OnPowerUpEXT_EVENT_ID_POWER,PowerDown)
/*}}SME_STATE_DEF*/
SME_END_STATE_DEF
SME_BEGIN_STATE_DEF(Player,Playing)
/*{{SME_STATE_DEF(Player,Playing)*/
SME_STATE_ENTRY_FUNC(PlayingEntry)
SME_STATE_EXIT_FUNC(PlayingExit)
SME_ON_EVENT(EXT_EVENT_ID_PAUSE_RESUME,OnPlayingEXT_EVENT_ID_PAUSE_RESUME,Pause)
/*}}SME_STATE_DEF*/
SME_END_STATE_DEF
SME_BEGIN_STATE_DEF(Player,Pause)
/*{{SME_STATE_DEF(Player,Pause)*/
SME_STATE_ENTRY_FUNC(PauseEntry)
SME_STATE_EXIT_FUNC(PauseExit)
SME_ON_EVENT(EXT_EVENT_ID_PAUSE_RESUME,OnPauseEXT_EVENT_ID_PAUSE_RESUME,Playing)
/*}}SME_STATE_DEF*/
SME_END_STATE_DEF
/*{{SME_STATE_STATETREE_SEPARATOR}}*/
SME_BEGIN_STATE_TREE_DEF(Player)
/*{{SME_STATE_TREE_DEF(Player)*/
SME_STATE(Player,Player,SME_INVALID_STATE,PowerDown)
SME_STATE(Player,PowerDown,0,-1)
SME_STATE(Player,PowerUp,0,Playing)
SME_STATE(Player,Playing,PowerUp,-1)
SME_STATE(Player,Pause,PowerUp,-1)
/*}}SME_STATE_TREE_DEF*/
SME_END_STATE_TREE_DEF
/*{{SME_DEC_IMP_SEPARATOR}}*/
SME_APPLICATION_DEF(Player, "Player")
TCHAR * sStateMapping[] =
{
_T("Player"),
_T("PowerDown"),
_T("PowerUp"),
_T("Playing"),
_T("Pause"),
};
extern HWND g_hwndMain;
extern SME_THREAD_CONTEXT_T g_AppChildThreadContext;
int PlayerEntry(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain, WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PlayerExit(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain, WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PowerDownEntry(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain, WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PowerDownExit(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PowerUpEntry(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PowerUpExit(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PlayingEntry(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
// Post an event to another thread.
// Start playing
MfcSendExtIntEventToWnd(EVENT_PLAY_START, 0, 0, NULL, g_hwndMain);
//SmePostExtThreadEvent(EVENT_PLAY_START, NULL, 0, NULL, &g_AppChildThreadContext);
return 0;
}
int PlayingExit(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
// Post an event to another thread
// Stop playing
//SmePostExtThreadEvent(EVENT_PLAY_STOP, NULL, 0, NULL, &g_AppChildThreadContext);
MfcSendExtIntEventToWnd(EVENT_PLAY_STOP, 0, 0, NULL, g_hwndMain);
return 0;
}
int PauseEntry(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int PauseExit(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int OnPowerDownEXT_EVENT_ID_POWER(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int OnPlayingEXT_EVENT_ID_PAUSE_RESUME(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int OnPauseEXT_EVENT_ID_PAUSE_RESUME(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}
int OnPowerUpEXT_EVENT_ID_POWER(struct SME_APP_T *pApp, struct SME_EVENT_T *pEvent)
{
if (g_hwndMain)
::PostMessage(g_hwndMain,WM_STATE_UPDATE, pApp->nAppState,0);
return 0;
}