void BtnIMPVoicesPreviousCallback( GUI_BUTTON *btn, INT32 reason ) { // btn callback for IMP attrbite begin button if ( !(btn->uiFlags & BUTTON_ENABLED) ) return; if ( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags |= (BUTTON_CLICKED_ON); } else if ( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { if ( btn->uiFlags & BUTTON_CLICKED_ON ) { btn->uiFlags &= ~(BUTTON_CLICKED_ON); // previous voice, please!!! DecrementVoice( ); // play voice if ( !SoundIsPlaying( uiVocVoiceSound ) ) { uiVocVoiceSound = PlayVoice( ); } else { SoundStop( uiVocVoiceSound ); uiVocVoiceSound = PlayVoice( ); } fReDrawVoicesScreenFlag = TRUE; } } }
void EnterIMPVoices( void ) { fVoiceAVisited = FALSE; fVoiceBVisited = FALSE; fVoiceCVisited = FALSE; // Set the initial voice if (fCharacterIsMale == TRUE) { iCurrentVoice = GetFirstFreeSlot(MALE); } else { iCurrentVoice = GetFirstFreeSlot(FEMALE); } // create buttons CreateIMPVoicesButtons( ); // create mouse regions CreateIMPVoiceMouseRegions( ); // render background RenderIMPVoices( ); // play voice once uiVocVoiceSound = PlayVoice( ); return; }
void BtnIMPFinishVoiceCallback(GUI_BUTTON *btn,INT32 reason) { // btn callback for Main Page Begin Profiling if (!(btn->uiFlags & BUTTON_ENABLED)) return; // if not this far in char generation, don't alot ANY action if( iCurrentProfileMode < 4 ) { btn->uiFlags&=~(BUTTON_CLICKED_ON); fButtonPendingFlag = TRUE; return; } if(reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags|=(BUTTON_CLICKED_ON); } else if(reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { if (btn->uiFlags & BUTTON_CLICKED_ON) { // play voice if( ! SoundIsPlaying( uiVoiceSound ) ) { uiVoiceSound = PlayVoice( ); } btn->uiFlags&=~(BUTTON_CLICKED_ON); fButtonPendingFlag = TRUE; } } }
void PlayAudio(char *name, char mode) { ssize_t bytes = 0; bytes = load_audio_file(name, &soundbuf, &soundbuf_size); soundbuf_used = (bytes > 0) ? bytes : 0; PlayVoice(); }
void CRadio::OnRadioMessage(int id, EntityId fromId) { int groupId=id/RADIO_GROUP_SIZE; int keyId=id%RADIO_GROUP_SIZE; char *pSoundName,*pSoundText; int variations = 1; bool result=GetRadioSoundName(m_pGameRules,m_TeamName,groupId+1,keyId+1,&pSoundName,&pSoundText, &variations); assert(result); if(g_pGame->GetGameRules()) { ILocalizationManager *pLocalizationMan = gEnv->pSystem->GetLocalizationManager(); wstring completeMsg; wstring wRadio, wSoundText; pLocalizationMan->LocalizeString("@mp_radio", wRadio); pLocalizationMan->LocalizeString(pSoundText, wSoundText); IEntity *pEntity = gEnv->pEntitySystem->GetEntity(fromId); if(pEntity) { Vec2i grid(0,0); completeMsg += L"("; completeMsg += wRadio; completeMsg += L", "; wchar_t letter = 'A' + grid.x - 1; wchar_t number = '0' + grid.y; completeMsg += letter; completeMsg += number; completeMsg += L"): "; } completeMsg += wSoundText; //pLocalizationMan->FormatStringMessage(localizedString, completeMsg, "@mp_radio", pSoundText); //g_pGame->GetGameRules()->OnChatMessage(eChatToTeam, fromId, 0, completeMsg.c_str()); string sound = pSoundName; if(variations > 1) { int rand = Random(variations); sound += string().Format("_0%1d", rand+1); } PlayVoice(sound.c_str()); } }
void IMPPortraitRegionButtonCallback( MOUSE_REGION * pRegion, INT32 iReason ) { // callback handler for imp portrait region button events if ( iReason & MSYS_CALLBACK_REASON_INIT ) { return; } if ( iReason & MSYS_CALLBACK_REASON_LBUTTON_UP ) { if ( !SoundIsPlaying( uiVocVoiceSound ) ) { uiVocVoiceSound = PlayVoice( ); } } }
void play_audio(int sidx, int mode) { char filename[40]; ssize_t size; char *name = seq_filename(sidx, mode); if (!name) { CWARNING4(audio, "failed request for sound idx %d, mode %d", sidx, mode); return; } snprintf(filename, sizeof(filename), "%s.ogg", name); CINFO3(audio, "play sound file `%s'", filename); size = load_audio_file(filename, &soundbuf, &soundbuf_size); soundbuf_used = (size > 0) ? size : 0; PlayVoice(); }
BOOL SaveWnd::selectExec() { int i; BOOL bSetCur = FALSE; int oldSelect = selectNum, oldBtn = btnSelect; switch(state){ case save_fadein: if(timeGetTime() >= startTime){ alpha = 1.0f; state = save_exec; }else{ alpha = 1.0f - (startTime -timeGetTime()) /500.0f; } SetAlpha(); btn[2].selectRect.top = 565; btn[2].selectRect.bottom = btn[2].selectRect.top+25; btn[2].selectRect.left = LONG(709 +(1.0f- alpha)*(47+40*4)); btn[2].selectRect.right = btn[2].selectRect.left +86; return TRUE; case save_fadeout: if(timeGetTime() >= startTime){ alpha = 0; changeExecMode(bak_mode); return FALSE; } alpha = (startTime -timeGetTime()) /500.0f; SetAlpha(); btn[2].selectRect.top = 457+4*27; btn[2].selectRect.top += LONG((1.0f-alpha)*40); btn[2].selectRect.bottom = btn[2].selectRect.top +25; return TRUE; case save_writeSure: if(keyState.push_left || keyState.push_right || keyState.push_up || keyState.push_down){ bYesNo = !bYesNo; SetWindowCursorPos(sysInf.hWnd,yesnoBtn[bYesNo].selectRect.left+43, yesnoBtn[bYesNo].selectRect.top+12); } for(i=0;i<2;i++){ if(yesnoBtn[i].CheckState(&sysInf.msPoint)){ if(i==0){ PlayEffectNum(evtHandle[11],SE_PUSH); state = save_writeExec; return TRUE; }else{ PlayEffectNum(evtHandle[11],SE_CANCEL); state = save_exec; } } } if(keyState.push_cancel){ PlayEffectNum(evtHandle[11],SE_CANCEL); state = save_exec; } return TRUE; case save_loadSure: if(keyState.push_left || keyState.push_right || keyState.push_up || keyState.push_down){ bYesNo = !bYesNo; SetWindowCursorPos(sysInf.hWnd,yesnoBtn[bYesNo].selectRect.left+43, yesnoBtn[bYesNo].selectRect.top+12); } for(i=0;i<2;i++){ if(yesnoBtn[i].CheckState(&sysInf.msPoint)){ if(i==0){ if(SAV_Load( selectNum+offsetNum+1 )){ PlayEffectNum(evtHandle[11],SE_PUSH); startTime = timeGetTime(); state = save_loadEnd; return TRUE; } startTime = timeGetTime() +500; state = save_fadeout; return TRUE; }else{ PlayEffectNum(evtHandle[11],SE_CANCEL); state = save_exec; } } } if(keyState.push_cancel){ PlayEffectNum(evtHandle[11],SE_CANCEL); state = save_exec; } return TRUE; case save_writeExec: new_time = selectNum+offsetNum+1; SAV_Save( new_time ); useTable[selectNum+offsetNum] = TRUE; struct _stat fstatus; char fname[32]; wsprintf( fname, "save_%02d.sav", new_time ); _stat(fname,&fstatus); file_time[selectNum+offsetNum] = fstatus.st_mtime; CreateInfo(); startTime = timeGetTime(); state = save_writeEnd; case save_loadEnd: case save_writeEnd: i = timeGetTime() -startTime; if(i>1000){ if(state==save_writeEnd){ changeExecMode(bak_mode); }else{ changeExecMode(event_exec_mode); } startTime = timeGetTime(); if(voicefile[0])PlayVoice(voicefile, FALSE, 255); voicefile[0] = '\0'; bFadeOut = TRUE; } return TRUE; } btnSelect = 0xff; for(i=0;i<3;i++){ if(btn[i].CheckState(&sysInf.msPoint)){ btnSelect = i; switch(i){ case 0: PlayEffectNum(evtHandle[11],SE_PUSH); if(0==offsetNum)offsetNum = 45; else offsetNum -= 5; CreateInfo(); return TRUE; case 1: PlayEffectNum(evtHandle[11],SE_PUSH); offsetNum += 5; if(offsetNum>45)offsetNum = 0; CreateInfo(); return TRUE; default: PlayEffectNum(evtHandle[11],SE_CANCEL); startTime = timeGetTime() +500; state = save_fadeout; return TRUE; } }else if(btn_onCursor==btn[i].GetState()){ btnSelect = i; if(oldBtn != btnSelect){ PlayEffectNum(evtHandle[11],SE_SELECT); } } } for(i=0;i<10;i++){ if(pageBtn[i].CheckState(&sysInf.msPoint)){ PlayEffectNum(evtHandle[11],SE_PUSH); btnSelect = i+3; offsetNum = i*5; CreateInfo(); return TRUE; }else if(btn_onCursor==pageBtn[i].GetState()){ btnSelect = i+3; if(oldBtn != btnSelect){ PlayEffectNum(evtHandle[11],SE_SELECT); } } } if(keyState.push_action){ if(selectNum<5){ if(useTable[selectNum+offsetNum]){ PlayEffectNum(evtHandle[11],SE_PUSH); SetWindowCursorPos(sysInf.hWnd,yesnoBtn[0].selectRect.left +43, yesnoBtn[0].selectRect.top +12); if(mode==save_mode) state = save_writeSure; else state = save_loadSure; return TRUE; }else if(mode==save_mode){ PlayEffectNum(evtHandle[11],SE_PUSH); state = save_writeExec; return TRUE; } } }else if(keyState.push_cancel){ PlayEffectNum(evtHandle[11],SE_CANCEL); startTime = timeGetTime() +500; state = save_fadeout; return TRUE; }else if(keyState.push_up){ for(i=0;i<5;i++){ if(selectNum==0xff){ selectNum = 0; }else if(selectNum==0){ selectNum = 4; if(0==offsetNum)offsetNum = 45; else offsetNum -= 5; CreateInfo(); }else{ selectNum --; } if(mode==save_mode || useTable[selectNum+offsetNum])break; } if(i==5){ selectNum = 0xff; }else{ bSetCur = TRUE; } }else if(keyState.push_down){ for(i=0;i<5;i++){ if(selectNum>=4){ selectNum = 0; offsetNum += 5; if(offsetNum>45)offsetNum = 0; CreateInfo(); }else{ selectNum ++; } if(mode==save_mode || useTable[selectNum+offsetNum])break; } if(i==5){ selectNum = 0xff; }else{ bSetCur = TRUE; } }else if(keyState.push_left){ if(0==offsetNum)offsetNum = 45; else offsetNum -= 5; CreateInfo(); return TRUE; }else if(keyState.push_right){ offsetNum += 5; if(offsetNum>45)offsetNum = 0; CreateInfo(); return TRUE; } if(bSetCur){ if(sysInf.msPoint.x>=20 && sysInf.msPoint.x<706){ point.x = sysInf.msPoint.x; }else{ point.x = 20 +40; } point.y = 18 +40 +selectNum*100; SetWindowCursorPos(sysInf.hWnd, point.x, point.y); }else{ selectNum = 0xff; for(i=0;i<5;i++){ rect.left = 20; rect.right = rect.left +686; rect.top = 18 +100*i; rect.bottom = rect.top +96; if(myPtInRect(&rect, &sysInf.msPoint)){ if(mode==save_mode || useTable[i+offsetNum]){ selectNum = i; break; } } } } if(0xff != selectNum){ yesnoBtn[0].selectRect.top = yesnoBtn[1].selectRect.top = 18+128+100*selectNum; yesnoBtn[0].selectRect.bottom = yesnoBtn[1].selectRect.bottom = yesnoBtn[0].selectRect.top +25; if(selectNum!=oldSelect){ PlayEffectNum(evtHandle[11],SE_SELECT); } } return TRUE; } // SaveWnd::selectExec
int32_t main() { /*************************************************************************** * ClkInit() ****************************************************************************/ ClkInit(); /*************************************************************************** * GPIOInit(); ****************************************************************************/ // DrvGPIO_InitFunction(E_FUNC_GPIO); outpw(&SYS->P0_MFP, 0); outpw(&SYS->P1_MFP, 0); outpw(&SYS->P2_MFP, 0); outpw(&SYS->P3_MFP, 0); outpw(&SYS->P4_MFP, 0); _GPIO_SET_PIN_MODE(MODEM_ON_PORT, MODEM_ON_PIN, GPIO_PMD_OUTPUT); ModuleOn(TRUE); _GPIO_SET_PIN_MODE(MODEM_POWER_PORT, MODEM_POWER_PIN, GPIO_PMD_OUTPUT); ModulePowerOn(FALSE); _GPIO_SET_PIN_MODE(LOCK_POWER_PORT, LOCK_POWER_PIN, GPIO_PMD_OUTPUT); LockPower(FALSE); _GPIO_SET_PIN_MODE(KEY_HELP_PORT, KEY_HELP_PIN, GPIO_PMD_QUASI); _GPIO_SET_PIN_MODE(KEY_BAT_PORT, KEY_BAT_PIN, GPIO_PMD_QUASI); _GPIO_SET_PIN_MODE(SLEEP_PORT, SLEEP_PIN, GPIO_PMD_OUTPUT); ModemSleep(FALSE); _GPIO_SET_PIN_MODE(LED_PORT, LED_PIN, GPIO_PMD_OUTPUT); LedDark(); _GPIO_SET_PIN_MODE(INT_PORT, INT_PIN, GPIO_PMD_INPUT); /*************************************************************************** * TimerInit(); ****************************************************************************/ SysTick_Config(SYS_TICK); // SYS_LockReg(); /*************************************************************************** * UartInit(); ****************************************************************************/ UartInit(); // debug(VERSION); // DrvSYS_GetPLLClockFreq(); /*************************************************************************** * WatchdogInit(); ****************************************************************************/ WatchdogInit(); // udpTest(); NvInit(); WhatToDo(); AdcInit(); WaitLockPower(); LockPower(!custermParam.param.lockState); InitMsgDebug(); if( Communication(10) == FALSE ) SoftReset(); if( isCheckingBattery ) { delay_50ms(40); MeasurePower(4); } else { MeasurePower(2); } Flag_ModuleOn = TRUE; //Flag_ModuleOn = TRUE; ModemVolumeInit(); ///--------------------24.11.2015---------------------------------------------- //////////////////////////////////////////////////////////////////////////////////////// while(PressHelp()&&(tmp_my<200)&&(PressBatter())){ tmp_my++; delay_50ms(1); if (tmp_my>=150) { LedLight(144); if (custermParam.param.lockState) { LockPower(TRUE); custermParam.param.lockState = FALSE; WriteToNv( &custermParam ); //- save to eeprom PlayVoice("\"unitUnlock.wav\",2\r"); delay_ms(2000); LockPower(FALSE); } else { // debug("ins"); while(PressBatter()){}; tmp_my=0; while (tmp_my<25){ tmp_my++; delay_ms(150); if (PressBatter()){counterPress++; while(!PressBatter()){}; } if (counterPress>2){ PlayVoice("\"unitLock.wav\",2\r"); delay_ms(2000); custermParam.param.lockState = TRUE; WriteToNv( &custermParam ); //- save to eeprom tmp_my=0; delay_ms(2000); LockPower(DISABLE); } } LedBlink(); } /////// tmp_my=0; } } while(custermParam.param.lockState){} /////////////////////////////////////////////////////////////////////////////////////////////// #ifdef DELAY_TEST DelayTest(); #endif PowerOn(); if(state==STATE_POWERING_DOWN || Flag_Power_Down) { Flag_Power_Down = FALSE; EnterPowerDown(); while( TimerWait ) FeedWatchdog(); PowerDown(); //不会返回 } InitVariables(); if(state == STATE_NULL) { state = STATE_1ST_CALL; TimerWait = 100; // 5 s } TimerTestMode = 6000; //debug("ent main loop"); while(1) { ///-------------------- if (!TimerTestMode && state==STATE_TEST) { PlayMusic(MUSIC_PD); EnterPowerDown(); } ///-------------------- if( Flag_Incomming ) { #if 1 TimerWait = 200; Flag_Incomming = FALSE; TimerStandby = custermParam.param.delay; //if(state != STATE_ACTIVE) { ModemSleep(FALSE); state = STATE_INCOMMING; } #else Flag_Incomming = FALSE; if(state != STATE_INCOMMING) { state = STATE_INCOMMING; ModemSleep(FALSE); EnterAnswer(); } #endif } if(TimerWait == 0) { switch(state) { case STATE_POWERING_DOWN: PowerDown(); break; case STATE_1ST_CALL: RegisterWait(); break; case STATE_REGISTER_OK: GetCpsiInfo(); if( Flag_ObtainCpsi==TRUE) { state = STATE_GSM_STEADY; if( Flag_SimExist ) { //delay_50ms(200); SockOpen(); TimerWait = 400; } else { TimerWait = 60; } } else { TimerWait = 70; } break; case STATE_GSM_STEADY: if( gPhoneNumOk==PHONE_NUM_READY || Flag_SimExist==FALSE) EnterCall(); else TimerWait = 40; break; case STATE_CALL_PROMPT: Call(); break; case STATE_ALERT: EnterCallFail(); break; case STATE_NEXT_CALL: Redial(); break; case STATE_BATT_DISPLAY: EnterPowerDown(); break; case STATE_INCOMMING: TimerStandby = custermParam.param.delay; EnterStandby(); break; } } if( TimerSock==0 && Flag_SimExist && ( (state>=STATE_GSM_STEADY && state<STATE_STANDBY) || progress>=TEST_GPS ) ) { switch(sockState) { //case SOCKSTATE_NULL: case SOCKSTATE_CONFIG: case SOCKSTATE_OPENNING: SockOpen(); // 打开失败,从新打开 break; case SOCKSTATE_OPENED: SendAtWaitRsq(50, 1, FALSE, "AT+CIPOPEN=0,\"UDP\",,,%s\r\n", custermParam.param.local_port); TimerSock = 80; break; #if 0 case SOCKSTATE_CONNECTING: SockConnect(); // 连接失败,从新连接 break; #endif case SOCKSTATE_CONNECT_OK: if( witchApn == 1) ClientInit(); break; default: break; } } KeyHandle(); SecondHandle(); //SignalCheck(); BatterCheck(); PowerDownHandle(); MsgHandle(); if( Flag_SimExist ) { UdpHandle(); SmsHandle(); PowerDownHandle(); } FeedWatchdog(); } }
void TinMan::Run() { FMOD::Sound * primarySound = GetRandomSound(); FMOD::Channel * primaryChannel; result = system->playSound(FMOD_CHANNEL_FREE, primarySound, true, &primaryChannel); ERRCHECK(); primaryChannel->setVolume(0.f); primaryChannel->setPaused(false); FMOD::Sound * secondarySound = 0; FMOD::Channel * secondaryChannel = 0; const unsigned int crossfadeTime = 2500; time_t voiceStartTime = time(0) + 10 + (rand() % 20); while(true) { system->update(); bool isPlaying = false; result = primaryChannel->isPlaying(&isPlaying); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(); } if(isPlaying) { unsigned int primaryPos = 0; unsigned int primaryLen = 0; result = primaryChannel->getPosition(&primaryPos, FMOD_TIMEUNIT_MS); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(); } result = primarySound->getLength(&primaryLen, FMOD_TIMEUNIT_MS); ERRCHECK(); float volume = 1.f; if(primaryPos < crossfadeTime) { volume = std::max(0.f, std::min((float)(primaryPos)/(float)crossfadeTime, 1.f)); } else if(primaryPos > primaryLen - crossfadeTime) { volume = std::max(0.f, std::min((float)(primaryLen - primaryPos)/(float)crossfadeTime, 1.f)); } //std::cout<<std::time(0)<<" "<<voiceStartTime<<" "<<primaryPos<<"/"<<primaryLen<<" "<<volume<<"\n"; result = primaryChannel->setVolume(volume); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(); } if(primaryPos > primaryLen - crossfadeTime) { if(!secondaryChannel) { secondarySound = GetRandomSound(); result = system->playSound(FMOD_CHANNEL_FREE, secondarySound, true, &secondaryChannel); ERRCHECK(); result = secondaryChannel->setVolume(1.f - volume); ERRCHECK(); result = secondaryChannel->setPaused(false); ERRCHECK(); } else { secondaryChannel->setVolume(1.f - volume); if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN)) { ERRCHECK(); } } } } else { if(secondaryChannel && secondarySound) { primaryChannel = secondaryChannel; primarySound = secondarySound; secondaryChannel = 0; } else { // for some reason all channels are stopped primarySound = GetRandomSound(); result = system->playSound(FMOD_CHANNEL_FREE, primarySound, 0, &primaryChannel); ERRCHECK(); } } if(time(0) >= voiceStartTime) { voiceStartTime = time(0) + 15 + (rand() % 25); PlayVoice(); } boost::this_thread::sleep(boost::posix_time::milliseconds(10)); } }