REVISION
Definition in file UI_PSF_play.c.
#include "../SYSTEM/sys_main.h"
#include "../SYSTEM/sys_clock.h"
#include "../SYSTEM/sys_param.h"
#include "../SYSTEM/sys_hardware.h"
#include "../SYSTEM/sys_hiddenfeature.h"
#include "../AUDIO/audio.h"
#include "../DECODER/decoder.h"
#include "../ear/ear.h"
#include "../FMXMIT/xmit_inc.h"
#include "ui.h"
#include "ui_assert.h"
#include "xim.h"
#include "playQ.h"
#include "m3u.h"
Include dependency graph for UI_PSF_play.c:

Go to the source code of this file.
Functions | |
| PARENT_STATE | UI_PSF_play (st_MSG *msgIN) |
| Function serves as the parent play state handle. | |
Variables | |
| PLAY_SRC | playSource |
| Global to hold playback source definition. | |
|
|
Function serves as the parent play state handle.
Definition at line 126 of file UI_PSF_play.c. References st_UI::abMode, st_UI::abStart, AF_ILINK, AI_PAUSE, AI_START, AI_UNMUTE, st_PLAYQ::album, AM_ILINK, AM_MYFI, st_UI::aPtr, st_PLAYQ::artist, Audio, st_DBNAV::audio, st_PRESET::audio, AUDIO_getCacheTrackFile(), AUDIO_getFilePtr(), AUDIO_initInterface(), AUDIO_resetMyfiQuality(), AUDIO_setCurrentTrack(), AUDIO_setFilePtr(), AUDIO_setInterface(), BTN_CANCEL, BTN_NEUROS, BTN_PCDELETE, BTN_YES, CLOCK_PLAY, D2PEAR_ID, DB_deleteRecordByMdb(), DECODER_cacheDepthReset(), st_PLAYQ::duration, st_DBNAV::failedhisi, FAT_delete(), st_PLAYQ::fname, st_PLAYQ::genre, st_DBNAV::idedhisi, st_PLAYQ::mdb, MENU_buf, MENU_CLOSE, MENU_isValid(), MENU_TXTSCROLL, st_AUDIO::mode, st_SYSPARAM::myfiChannel, st_SYSPARAM::myfiMode, PEAR_DATA, st_AUDIO::playtime, st_NDSYSPARAM::preset, SAUDIOTIME_UPDT, SBROWSE, SCURRENTAUDIOFILE, SENDOFMENU, SENDOFMUSIC, st_PRESET::share, st_PLAYQ::size, SMIFIMODECHANGED, SMIFIQUALITYCHANGED, SMSGBOX_EXIT, SMYFICHANNELCHANGED, SMYMIXCHANGED, SNEXTAUDIOFILE, SPLAYQCHANGED, SPRESET, SRESUMEPLAY, SSHUFFLECHANGED, SSTARTRADIO, SSTATE_END, SSTATE_START, SXIM_CREATE, SXIM_EXIT, SYS_clockSetup(), SYS_die(), st_PLAYQ::title, UI_audioPresetUpdate(), UI_earPut(), UI_m3uActvItemPtr(), UI_m3uChgOrder(), UI_m3uPut(), UI_m3uRemove(), UI_msgbxCreate(), UI_playQcurrent(), UI_playQreset(), UI_presetAudio(), UI_updateMembar(), st_DBNAV::unidedhisi, and st_SYSPARAM::x_granularity. 00127 {
00128 MSG_ID id = msgIN->id;
00129 MSG_DATA d1 = msgIN->d1;
00130 MSG_DATA d2 = msgIN->d2;
00131
00132 switch(id)
00133 {
00134 case SYS_MSG_ID:
00135
00136 switch(d1)
00137 {
00138 case SSTATE_START:
00139 {
00140 SYS_clockSetup(CLOCK_PLAY);
00141 if(SYS_HF_linkit())
00142 {
00143 AUDIO_initInterface(AM_ILINK, AF_ILINK, 0, 0);
00144 AUDIO_setInterface(AI_START);
00145 SYS_audioNotPaused();
00146 _linkitGUIon(TRUE);
00147 return P_PLAY;
00148 }
00149
00150 #ifdef DJ_SUPPORT
00151 _abInit();
00152 #endif
00153 return _startPlay(d2, TRUE);
00154 }
00155 case SSTATE_END:
00156 {
00157 if(SYS_HF_linkit())
00158 {
00159 _stopPlay();
00160 return P_NULL;
00161 }
00162 return(_stateEnd());
00163 }
00164 case SSTARTRADIO:
00165 _stopPlay();
00166 return P_RADIO;
00167
00168 case SRESUMEPLAY:
00169 case SENDOFMENU:
00170 {
00171 if(MENU_isValid(menu) == FALSE )
00172 {
00173 _setupPlayMenu(UI_playQcurrent());
00174 menu = mMENU_create((void*)&MENU_buf[0]);
00175 _displayMyfiChannel();
00176 if(SYS_isAudioPaused())
00177 {
00178 mMENU_update(menu, 5, (ULONG)graf_icon_pause, FALSE);
00179 }
00180 else
00181 {
00182 mMENU_update(menu, 5, (ULONG)graf_icon_play, FALSE);
00183 }
00184 _updatePlayTime();
00185 }
00186 return P_PLAY;
00187 }
00188 case SPRESET:
00189 {
00190 if(SYS_isPresetable())
00191 {
00192 ULONG fptr;
00193 //DeepB
00194 // Bugzilla #213
00195 // Only get file pointer while paused
00196 if (SYS_isAudioPaused())
00197 fptr = AUDIO_getFilePtr();
00198 else
00199 fptr = 0;
00200 UI_presetAudio(d2, UI_presetDbId(0),
00201 UI_playQcurrent()->actvTrack,
00202 UI_presetFldEntry(0),
00203 UI_presetFldIdx(0),
00204 fptr);
00205 switch(UI_presetFldIdx(0))
00206 {
00207 case 1: UI_msgbxCreate(MSGBX_PLAYLIST_PRESETDONE); break;
00208 case 2: UI_msgbxCreate(MSGBX_ARTIST_PRESETDONE); break;
00209 case 3: UI_msgbxCreate(MSGBX_ALBUM_PRESETDONE); break;
00210 case 4: UI_msgbxCreate(MSGBX_GENRE_PRESETDONE); break;
00211 case 5: UI_msgbxCreate(MSGBX_RECORDING_PRESETDONE);break;
00212 default: UI_msgbxCreate(MSGBX_SONGS_PRESETDONE); break;
00213 }
00214 }
00215 return P_PLAY;
00216 }
00217 case SAUDIOTIME_UPDT:
00218 {
00219 #ifdef DJ_SUPPORT
00220 _abCheck();
00221 #endif
00222 _updatePlayTime();
00223 return P_PLAY;
00224 }
00225 case SENDOFMUSIC:
00226 {
00227 #ifdef DJ_SUPPORT
00228 if( (Ui.abMode)&&(2 == Ui.abStart) ) return _prevNextMusic(0);
00229 #endif
00230 DECODER_cacheDepthReset(1);
00231 return _prevNextMusic(1);
00232 }
00233 case SPLAYQCHANGED:
00234 {
00235 #ifdef M3U_SUPPORT
00236 if( UI_getPlaySource() != PLAY_FROM_PLAYQ )
00237 {
00238 st_PLAYQ * q = UI_playQcurrent();
00239
00240 UI_presetAudio(0, 0x1234, 1, DONTCARE, DONTCARE, 0);
00241
00242 DB_LOCK(SYS_FOREVER);
00243 UI_m3uPut(0, q->fname, q->artist, q->title, q->album, q->genre, q->duration, q->size);
00244 *UI_m3uActvItemPtr(0) = 2;
00245 UI_m3uChgOrder(0, 0);
00246 DB_UNLOCK();
00247 UI_playQreset(0x1234);
00248 return P_PLAY;
00249 }
00250 #endif
00251 }
00252 case SMYMIXCHANGED:
00253 {
00254 if(FALSE == UI_playQreset(d2))
00255 {
00256 // No playable contents.
00257 _stopPlay();
00258 UI_msgbxCreate(MSGBX_CONTENTSNA);
00259 return P_NULL;
00260 }
00261 return P_PLAY;
00262 }
00263 case SSHUFFLECHANGED:
00264 {
00265 UI_playQreset(DONTCARE);
00266 return P_PLAY;
00267 }
00268 case SMIFIQUALITYCHANGED:
00269 {
00270 AUDIO_resetMyfiQuality();
00271 return P_PLAY;
00272 }
00273 case SMIFIMODECHANGED:
00274 {
00275 // Check new myfi mode.
00276 if( ((sysParam.myfiMode == 1) // off.
00277 &&(AUDIO_isMyfiActive())) ||
00278 //DeepB
00279 ((sysParam.myfiMode == 2) // on
00280 && (!AUDIO_isMyfiActive())) ||
00281 //Auto detectar
00282 ((sysParam.myfiMode == 3) // auto-detect.
00283 &&((AUDIO_isMyfiActive()) == (SYS_isHPpresent()))) )
00284 {
00285 // Restart.
00286 UI_presetAudio(0, UI_presetDbId(0),
00287 UI_playQcurrent()->actvTrack,
00288 UI_presetFldEntry(0),
00289 UI_presetFldIdx(0),
00290 AUDIO_getFilePtr());
00291 _stopPlay();
00292 return _startPlay(0, FALSE);
00293 }
00294 break;
00295 }
00296 case SMYFICHANNELCHANGED:
00297 {
00298 _displayMyfiChannel();
00299 return P_PLAY;
00300 }
00301 case SXIM_EXIT:
00302 {
00303 return(_ximAction(d2));
00304 }
00305 case SMSGBOX_EXIT:
00306 {
00307 if(MENU_curMsgbx() == MSGBX_CONTENTSNA)
00308 {
00309 return P_NULL;
00310 }
00311 else if(MENU_curMsgbx() == MSGBX_REMOVEQRECORD)
00312 {
00313 if(BTN_YES == d2)
00314 {
00315 _stateEnd();
00316 UI_m3uRemove(0, UI_playQcurrent()->actvTrack);
00317 // Start next track from the very beginning.
00318 nandSysParam.preset[0].share.audio.fptr = 0L;
00319 return _startPlay(0, TRUE);
00320 }
00321 else return P_PLAY;
00322 }
00323 else if(MENU_curMsgbx() == MSGBX_DELETERECORD)
00324 {
00325 D2PEAR_ID earID;
00326 st_PLAYQ * q = UI_playQcurrent();
00327
00328 if( BTN_CANCEL == d2 ) return P_PLAY;
00329
00330 if( (BTN_NEUROS == d2)||(BTN_PCDELETE == d2) )
00331 {
00332 _stateEnd();
00333 FAT_delete(q->fname);
00334 switch(UI_getPlaySource())
00335 {
00336 case PLAY_FROM_IDEDHISI:
00337 DB_deleteRecordByMdb(DBnav.idedhisi, q->mdb);
00338 break;
00339 case PLAY_FROM_FAILEDHISI:
00340 DB_deleteRecordByMdb(DBnav.failedhisi, q->mdb);
00341 break;
00342 case PLAY_FROM_AUDIODB:
00343 DB_deleteRecordByMdb(DBnav.audio, q->mdb);
00344 UI_audioPresetUpdate(-1);
00345 break;
00346 default: SYS_die(UI_PSF_PLAY);
00347 }
00348 }
00349
00350 earID = (BTN_NEUROS == d2)? DELETE_NEUROS_AUDIO: DELETE_PC_AUDIO;
00351
00352 if(SYS_isHDDpresent())
00353 {
00354 UI_earPut(strDISKC, earID,(PEAR_DATA)q->fname,strlen(q->fname)+1, 0);
00355 SYS_NAND_DBMOD_2HDD_PENDING();
00356 }
00357 else
00358 {
00359 UI_earPut(strDISKD, earID,(PEAR_DATA)q->fname,strlen(q->fname)+1, 0);
00360 SYS_NAND_CONTENTS_CHANGED();
00361 }
00362 // Start next track from the very beginning.
00363 nandSysParam.preset[0].share.audio.fptr = 0L;
00364 return _startPlay(0, TRUE);
00365 }
00366 else if(MENU_curMsgbx() == MSGBX_DELETERECORDFILE)
00367 {
00368 if(BTN_YES == d2)
00369 {
00370 st_PLAYQ * q = UI_playQcurrent();
00371 _stateEnd();
00372 FAT_delete(q->fname);
00373 UI_updateMembar();
00374 return P_NULL;
00375 }
00376 }
00377 else if(MENU_curMsgbx() == MSGBX_DELETEHISICLIP)
00378 {
00379 if(BTN_YES == d2)
00380 {
00381 st_PLAYQ * q = UI_playQcurrent();
00382
00383 _stateEnd();
00384 FAT_delete(q->fname);
00385 if(UI_getPlaySource() == PLAY_FROM_UNIDEDHISI)
00386 {
00387 DB_deleteRecordByMdb(DBnav.unidedhisi, q->mdb);
00388 UI_earPut(SYS_isHDDpresent()? strDISKC:strDISKD,
00389 HISI_DELETE_UNIDED_CLIP,(PEAR_DATA)q->fname, strlen(q->fname)+1, 0);
00390
00391 if(SYS_isHDDpresent())
00392 {
00393 SYS_NAND_DBMOD_2HDD_PENDING();
00394 }
00395 else
00396 {
00397 SYS_NAND_CONTENTS_CHANGED();
00398 }
00399 }
00400 return P_NULL;
00401 }
00402 }
00403 return P_PLAY;
00404 }
00405 case SCURRENTAUDIOFILE:
00406 {
00407 AUDIO_setCurrentTrack();
00408 return P_PLAY;
00409 }
00410 case SNEXTAUDIOFILE:
00411 {
00412 AUDIO_getCacheTrackFile(d2);
00413 return P_PLAY;
00414 }
00415 }
00416 break;
00417
00418 case TMR_MSG_ID:
00419 switch(d1)
00420 {
00421 case TTXTSCROLL:
00422 mMENU_action(menu, MENU_TXTSCROLL);
00423 return P_PLAY;
00424 }
00425 break;
00426
00427 case KBD_MSG_ID:
00428 switch(d1)
00429 {
00430 case KEY_BACK:
00431 if(SYS_HF_linkit())
00432 {
00433 _stopPlay();
00434 return P_NULL;
00435 }
00436
00437 if(!PLAY_isFromDb())
00438 {
00439 _stopPlay();
00440 return (SYS_wasFromHisi())? P_HISIDONE:P_RECORDDONE;
00441 }
00442 mMENU_action(menu, MENU_CLOSE);
00443 // Auto resume play window.
00444 SYS_autoResumePlayEnable();
00445 mMSG_send(uiChildMsgQ, SYS_MSG_ID, SBROWSE, DONTCARE, SYS_FOREVER);
00446 return P_PLAY;
00447
00448 case KEY_HREWIND:
00449 if(SYS_HF_myfiTest())
00450 {
00451 //sysParam.myfiChannel = 911;
00452 sysParam.myfiChannel = 875;
00453 _updateLinkitDisplay(sysParam.myfiChannel, menu);
00454 XMIT_SetFreq(XMIT_SET, (MAX_CHANNEL-sysParam.myfiChannel)/2);
00455 }
00456 case KEY_RREWIND:
00457 if(SYS_HF_linkit()) return P_PLAY;
00458 DECODER_frwd();
00459 return P_PLAY;
00460
00461 case KEY_REWIND:
00462 if(SYS_HF_linkit()) return P_PLAY;
00463 DECODER_cacheDepthReset(0);
00464 #ifdef DJ_SUPPORT
00465 if(Ui.abStart == 2)
00466 {
00467 AUDIO_setFilePtr(Ui.aPtr);
00468 return P_PLAY;
00469 }
00470 #endif
00471 //DeepB
00472 // To previous song
00473 // if on first 5 seconds
00474 // of non-paused song
00475 if((Audio.playtime < 5) && !(SYS_isAudioPaused())) return _prevNextMusic(-1);
00476 else return _prevNextMusic(0);
00477
00478 case KEY_FORWARD:
00479 if(SYS_HF_linkit()) return P_PLAY;
00480 DECODER_cacheDepthReset(0);
00481 #ifdef DJ_SUPPORT
00482 if(Ui.abStart == 2)
00483 {
00484 AUDIO_setFilePtr(Ui.aPtr);
00485 return P_PLAY;
00486 }
00487 #endif
00488 return _prevNextMusic(1);
00489
00490 case KEY_HFORWARD:
00491 if(SYS_HF_myfiTest())
00492 {
00493 //sysParam.myfiChannel = 1049;
00494 sysParam.myfiChannel = 1041;
00495 _updateLinkitDisplay(sysParam.myfiChannel, menu);
00496 XMIT_SetFreq(XMIT_SET, (MAX_CHANNEL-sysParam.myfiChannel)/2);
00497 }
00498 case KEY_RFORWARD:
00499 if(SYS_HF_linkit()) return P_PLAY;
00500 DECODER_ffwd();
00501 return P_PLAY;
00502
00503 case KEY_PLAY:
00504
00505 SYS_toggleAudioPaused();
00506 if(SYS_isAudioPaused())
00507 {
00508 PLAY_setPaused();
00509 AUDIO_setInterface(AI_PAUSE);
00510 if(SYS_HF_linkit())
00511 mMENU_update(menu, 7, (ULONG)text_tunermuted, FALSE);
00512 else
00513 mMENU_update(menu, 5, (ULONG)graf_icon_pause, FALSE);
00514 }
00515 else
00516 {
00517 PLAY_unsetPaused();
00518 AUDIO_setInterface(AI_START);
00519 AUDIO_setInterface(AI_UNMUTE);
00520 if(SYS_HF_linkit())
00521 mMENU_update(menu, 7, (ULONG)text_null, FALSE);
00522 else
00523 mMENU_update(menu, 5, (ULONG)graf_icon_play, FALSE);
00524 }
00525 mMENU_refresh(menu);
00526 return P_PLAY;
00527
00528 case KEY_HUP:
00529 case KEY_UP:
00530 case KEY_RUP:
00531 if(SYS_HF_linkit())
00532 {
00533 if(sysParam.myfiChannel < MAX_CHANNEL)
00534 {
00535 sysParam.myfiChannel+=sysParam.x_granularity;
00536 _updateLinkitDisplay(sysParam.myfiChannel, menu);
00537 XMIT_SetFreq(XMIT_SET, (MAX_CHANNEL-sysParam.myfiChannel)/2);
00538 }
00539 return P_PLAY;
00540 }
00541 case KEY_HDOWN:
00542 case KEY_DOWN:
00543 case KEY_RDOWN:
00544 if(SYS_HF_linkit())
00545 {
00546 if(sysParam.myfiChannel > MIN_CHANNEL)
00547 {
00548 sysParam.myfiChannel-=sysParam.x_granularity;
00549 _updateLinkitDisplay(sysParam.myfiChannel, menu);
00550 XMIT_SetFreq(XMIT_SET, (MAX_CHANNEL-sysParam.myfiChannel)/2);
00551 }
00552 return P_PLAY;
00553 }
00554 mMSG_send(uiChildMsgQ, SYS_MSG_ID, (AM_MYFI == Audio.mode)?
00555 SMYFICHANNELWIN_CREATE:SVOLWIN_CREATE, DONTCARE, SYS_FOREVER);
00556 return P_PLAY;
00557
00558 case KEY_SELECT:
00559 {
00560 int ximPtr;
00561
00562 if(SYS_HF_linkit()) return P_PLAY;
00563 SYS_autoResumePlayEnable();
00564
00565 if(PLAY_FROM_PLAYQ == UI_getPlaySource())
00566 {
00567 ximPtr = (AM_MYFI == Audio.mode)? XIMWIN_PLAYER_MYFIQ:XIMWIN_PLAYERQ;
00568 }
00569 else
00570 {
00571 ximPtr = (AM_MYFI == Audio.mode)? XIMWIN_PLAYER_MYFI:XIMWIN_PLAYER;
00572
00573 if(PLAY_FROM_AUDIODB == UI_getPlaySource())
00574 {
00575 if(FALSE == _playFromMymix())
00576 {
00577 ximPtr = (AM_MYFI == Audio.mode)?
00578 XIMWIN_PLAYER_MYFI_ADD2MYMIX:XIMWIN_PLAYER_ADD2MYMIX;
00579 }
00580 }
00581 }
00582
00583 mMSG_send(uiChildMsgQ, SYS_MSG_ID, SXIM_CREATE, ximPtr, SYS_FOREVER);
00584 return P_PLAY;
00585 }
00586 }
00587 break;
00588 }
00589
00590 return P_PLAY;
00591 }
|
Here is the call graph for this function:

1.3.9.1