📄 aphearsaycommand.c
字号:
g_RrParam.wSndMode |= APHS_REPEAT_OCCUR;
// break;
case CMD_HS_RPT_MORE:
#ifdef APHS_IFINITE_CYCLE_SET
if (g_RrParam.wRptTotalCycles == APHS_IFINITE_CYCLE)
{
g_RrParam.wRptCycles = g_RrParam.wRptTotalCycles; //当前复读环数
}
#endif
if ( g_RrParam.wRptCycles ==0 )
{
BOOL bStop =TRUE;
if ( (!(g_RrParam.wRptMode & RR_MODE_NOMST))
&& (uParam != HEARSAY_BTN2_CMD) )
{ // if MST FIle Auto Mode
// to Next Node
UINT16 xStep;
xStep = ApHsGetTextTimeNodeEx(g_RrParam.aPlay[0].dwPrevTm);
xStep +=1;
g_RrParam.aPlay[0].dwPlayTm = ApHsGetTextNodeTime(xStep);
if (g_RrParam.aPlay[0].dwPlayTm < g_RrParam.aPlay[0].dwTotalTm)
{
ApHsSetPlayTm(0);
HearSayEvent_C2( pGui,uEvent,HEARSAY_BTN2_CMD);
bStop = FALSE;
}
}
if (bStop)
{
HearSayEvent_C2( pGui,uEvent,CMD_HS_RPT_END);
}
}
else
{
g_RrParam.wRptCycles--;
// Set current to A.B
g_RrParam.aPlay[0].dwPlayTm=g_RrParam.dwRptTmA; // 0.5s
ApHsSetPlayTm(0);
ApHsStartPlay(0);
g_RrParam.bRpt = TRUE;
g_RrParam.wSndMode |= (APHS_SOUND_PLAY);
g_RrParam.wSndMode |= APHS_REPEAT;
// Skip 1s Display refresh current
ApHSDisableTimerRefreshMst();
}
break;
}
DrawCurrentAp();
}
return nRet;
}
//==============================================================================
// Follow Mode
//--------------------------------
INT HearSayEvent_C3 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
if (!g_RrParam.bRpt)
{ // if not repeat
ApHsHint((const char *)APHS_RPT_REQUIRED);
}
else
{ // if have repeat
// Stop the sound First
APHsStopCurrentSound();
APHsStopMark();
g_RrParam.wSndMode &= ~APHS_REPEAT;
//==================================================
switch(uParam)
{
case CMD_HS_FOLLOW_END: // Follow Ending
ApHsStopRecord(); // Record the same file
// Close the sound mode 0
g_RrParam.wSndMode &= ~APHS_SOUND_REC;
g_RrParam.wSndMode &= ~APHS_SOUND_PLAYREC;
g_RrParam.wSndMode &= ~APHS_SOUND_PLAY;
ApHsClosePlay(1);
ApHsOpenPlay(0);
ApHsSetPlayTm(0);
g_RrParam.wSndMode &= ~APHS_FOLLOW;
break;
case CMD_HS_FOLLOW_PLAYSND: // play repeat sound
ApHsClosePlay(1);
g_RrParam.wSndMode &= ~APHS_SOUND_REC;
g_RrParam.wSndMode &= ~APHS_SOUND_PLAYREC;
g_RrParam.wSndMode |= APHS_FOLLOW;
if (!HearSayEvent_SetRptTime()) // Set Repreat time
{ // if not set AB pont
HearSayEvent_C3(pGui,EVENT_COMMAND,CMD_HS_FOLLOW_END);
ApHsHint((const char *)APHS_AB_REQUIRED);
}
else
{
// Reboot the mode 0
ApHsOpenPlay(0);
g_RrParam.aPlay[0].dwPlayTm=g_RrParam.dwRptTmA;
ApHsSetPlayTm(0); // Set time
ApHsStartPlay(0);
g_RrParam.wSndMode |= APHS_SOUND_PLAY;
// Skip 1s Display refresh current
ApHSDisableTimerRefreshMst();
}
break;
case CMD_HS_FOLLOW_RECEND: // Record Sound is Ending
// Play Record Sound
ApHsStopRecord(); // Record the same file
g_RrParam.wSndMode &= ~APHS_SOUND_REC;
g_RrParam.wSndMode &= ~APHS_FOLLOW;
g_RrParam.wFollowCycles = g_RrParam.wRptTotalCycles;
// break; // Note: this break is no needed
case CMD_HS_FOLLOW_PLAYREC: // Play record sound
APHsRestorePlay0SndTm(); // Must Restore
ApHsClosePlay(0); // Close mode 0 and backup
ApHsClosePlay(1); // Play
g_RrParam.wSndMode &= ~APHS_SOUND_PLAY;
g_RrParam.wSndMode &= ~APHS_SOUND_REC;
if (g_RrParam.wFollowCycles--)
{
ApHsOpenPlay(1); // Here is restore the time
ApHsStartPlay(1); // Play
g_RrParam.wSndMode |= APHS_SOUND_PLAYREC;
g_RrParam.wSndMode |= APHS_FOLLOW;
}
else
{ // 这是一个递归
return HearSayEvent_C3(pGui,EVENT_COMMAND,CMD_HS_FOLLOW_END);
}
break;
default: // Start to record
ApHsClosePlay(1); // to avoid play record sound
if (ApHsStartRecord(0)) // Record the same file
{
ApHsClosePlay(0);
// Close the sound mode 0 and backup the time
g_RrParam.wSndMode |=APHS_SOUND_REC;
g_RrParam.wSndMode |=APHS_FOLLOW;
}
else
{ // record fail
HearSayEvent_C3(pGui, EVENT_COMMAND,CMD_HS_FOLLOW_RECEND);
ApHsHint((const char *)APHS_REC_FAIL);
}
}
DrawCurrentAp();
}
return 1;
}
/****************************************************************************/
/* FUNCTION: INT HearSayEvent_C4( APGUI_STRUCT *pGui, */
/* UINT uEvent, UINT uParam ) */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-03-15 First Issue */
/****************************************************************************/
// Mark Command
INT HearSayEvent_C4 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
if ( g_RrParam.wRptMode & RR_MODE_NOTEXT )
{// if no file text
ApHsHint( (const char *)APHS_CUR_NOTEXT);
return 1;
}
// check the sound playing or not
if (g_RrParam.wSndMode&(APHS_SOUND_REC|APHS_SOUND_PLAYREC|APHS_SOUND_PLAY) )
{ // error for record, if record sound, do not
#if 0
ApHsHint( (const char *)APHS_CUROP_INVALID);
return 1;
#endif
// Stop command
HearSayEvent_C1(pGui,EVENT_COMMAND,HEARSAY_BTN1_CMD);
}
g_RrParam.bMarkFlag=TRUE;
// Set Mark
HearSayBrowserProc(g_RrParam.pBwrGui,EVENT_COMMAND, CM_BROWSER_MARKSTART);
DrawCurrentAp();
return 1;
}
//==========================================================================
// Command for play when an error
INT HearSayEvent_OpenFail(APGUI_STRUCT *pGui, UINT uEvent, UINT uParam)
{
if (g_RrParam.wSndMode &(APHS_SOUND_REC|APHS_SOUND_PLAYREC) )
{ // if record file fail
ApHsHint((const char *)APHS_REC_FAIL);
}
else
{
ApHsHint((const char *)APHS_PLAY_FAIL);
}
return HearSayEvent_C1 (pGui, uEvent, uParam );
}
#ifdef _WIN32
#define APHS_STOPCNT_MAXDELAY 10000
#else
#define APHS_STOPCNT_MAXDELAY 500
#endif
INT HearSayEvent_PlayStop ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
#if 0
if (g_RrParam.uStopCntDelay<APHS_STOPCNT_MAXDELAY)
{ // Added this for bug2866
// for Delay
MsgPost((APGUI_STRUCT_MODEL*)NULL,uEvent,uParam);
g_RrParam.uStopCntDelay++;
return 1;
}
g_RrParam.uStopCntDelay = 0;
#endif
if (g_RrParam.wSndMode & APHS_REPEAT)
{
return HearSayEvent_C2(pGui,EVENT_COMMAND,CMD_HS_RPT_MORE);
}
return HearSayEvent_C1(pGui, EVENT_COMMAND, uParam );
}
INT HearSayEvent_PlayBreak ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
ApHsHint((const char *)APHS_CUROP_FAIL);
return HearSayEvent_C1(pGui, uEvent, uParam );
}
/****************************************************************************/
/* FUNCTION: INT HearSayEvent_C5( APGUI_STRUCT *pGui, */
/* UINT uEvent, UINT uParam ) */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-03-15 First Issue */
/****************************************************************************/
// Set funtion command
INT HearSayEvent_C5 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
INT nRet;
if (g_RrParam.wSndMode& (APHS_SOUND_REC|APHS_SOUND_PLAY|APHS_SOUND_PLAYREC) )
{ // Give one hint message for operatin ???, if sound is playing or record
ApHsHint((const char *)APHS_CUROP_INVALID);
nRet=1;
}
else
{
nRet=HearSaySetMain(0);
}
//////// EditLoadSetting();
DrawCurrentAp();
return nRet;
}
//====================================================================
// Reserved for ED135
// AB Switch of Button
INT HearSayEvent_C6 ( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
return 0;
}
/****************************************************************************/
/* FUNCTION: INT HearSayEvent_SDPullout( APGUI_STRUCT *pGui, */
/* UINT uEvent, UINT uParam ) */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-03-15 First Issue */
/****************************************************************************/
// command for SD Card Pull out
INT HearSayEvent_SDPullout( APGUI_STRUCT *pGui, UINT uEvent, UINT uParam )
{
/*如果SD卡拔出*/
if ( (g_RrParam.pFile[0] == 'B')
||(g_RrParam.pFile[0] == 'b') )
{
MsgBoxRun (MSGBOX_NONE, (UINT8*)"SD卡已拔出,取消相关操作!");
ExitAp (EXIT_CODE_ERROR);
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -