int ascending (void) { static int i; scrBegin; for (i=0; i<10; i++) { scrReturn(i); } scrFinish(-1); }
static State StateInitPlayer(StateAction action) { scrDeclare; if (action == Enter) { PowerToPeripherals(1); NumTracks = 0; scrReset; return Continue; } if (action == Update) { if (BtnPlay->stateChanged && BtnPlay->state == Pressed) { GoToPlayTrack = 1; } if (BtnSelect->stateChanged && BtnSelect->state == Pressed) { RotateTrack(); Set7SegmentDisplay(TrackNumber); } if (Time < StateWaitUntil) { return Continue; } scrBegin; scrSleep(1300); static u32 numFilesTimeout; numFilesTimeout = Time + 1000; mp3_set_volume(15); scrSleep(20); mp3_get_num_files_async(); while (1) { scrReturn(Continue); if (Time > numFilesTimeout) { scrReturn(Sleep); } if (!mp3_check_for_result()) { continue; } NumTracks = mp3_get_result(); if (TrackNumber > NumTracks) { TrackNumber = NumTracks; Set7SegmentDisplay(TrackNumber); } if (NumTracks == 0) { scrReturn(Sleep); } if (GoToPlayTrack) { scrReturn(PlayTrack); } scrReturn(StandBy); } // Shouldn't come here scrFinish(None); } return Continue; }
static State StatePlayTrack(StateAction action) { scrDeclare; static u8 trackNumber; if (action == Enter) { if (TrackNumber == 0) { // Random track trackNumber = GetRandomTrackNumber(NumTracks); // trackNumber = 0; } else { // Predefined track trackNumber = TrackNumber - 1; } scrReset; return Continue; } if (action == Update) { if (BtnSelect->stateChanged && BtnSelect->state == Pressed) { RotateTrack(); Set7SegmentDisplay(TrackNumber); } if (Time < StateWaitUntil) { return Continue; } scrBegin; mp3_play_num(trackNumber); // Wait for player to start static u32 enterStandbyTime; enterStandbyTime = Time + 1000; while (1) { if (PlayerPlaying()) { break; } if (Time > enterStandbyTime) { scrReturn(StandBy); } scrReturn(Continue); } // Wait for the player to stop while (1) { if (BtnPlay->stateChanged && BtnPlay->state == Pressed) { scrReturn(Restart); } if (!PlayerPlaying()) { scrReturn(StandBy); } scrReturn(Continue); } // Shouldn't come here scrFinish(None); } return Continue; }
void scrWrite( unsigned char c ) { unsigned char d,e; switch ( c ) { case 8: scrBackSpace(); break; case 127: scrBackSpace(); break; case 10: scrReturn(); scrRepaint(); break; case 13: break; case 27: #ifdef _KEYBOARD #ifndef THREAD_KEYBOARD kbPutCh(); #endif switch ( kbGetCh() ) { #else d = getch(); switch ( d ) { #endif case 91: #ifdef _KEYBOARD #ifndef THREAD_KEYBOARD kbPutCh(); #endif switch ( kbGetCh() ) { #else e = getch(); switch ( e ) { #endif case 65: // KEY_UP scrDecY(); break; case 66: // KEY_DOWN scrIncY(); break; case 67: // KEY_RIGHT scrIncX(); break; case 68: // KEY_LEFT scrDecX(); break; default: break; } break; default: break; } break; default: if ( p_screen->x_pos < SCR_XMAX_SIZE ) { p_screen->Buffer[ p_screen->y_pos*SCR_XMAX_SIZE + p_screen->x_pos ] = c; scrIncX(); } } SETBIT(p_screen->status,f_srcContentChanged); } unsigned char scrRead() { return ( p_screen->Buffer[ p_screen->y_pos*SCR_XMAX_SIZE + p_screen->x_pos ] ); } //---------------------------------------------------- void scrRepaint() { curscoord x, y, xs, xe, ys, ye; if ( TSTBIT(p_screen->status,f_srcRepainting) ) return; SETBIT(p_screen->status,f_srcRepainting); if ( TSTBIT(p_screen->status,f_srcContentChanged) ) { x = ( p_screen->x_pos<SCR_POSX_MAX ? p_screen->x_pos : SCR_POSX_MAX ); y = ( p_screen->y_pos<SCR_POSY_MAX ? p_screen->y_pos : SCR_POSY_MAX ); xs = ( x < dspXmax( p_display ) ? 0 : x - dspXmax( p_display ) + 1 ); xe = xs + dspXmax( p_display ) - 1; ys = ( y < dspYmax( p_display ) ? 0 : y - dspYmax( p_display ) + 1 ); ye = ys + dspYmax( p_display ) - 1; dspCursorHome( p_display ); for ( y = ys; y <= ye; y++ ) { for ( x = xs; x <= xe; x++ ) { if ( x-xs < SCR_XMAX_SIZE && y-ys < SCR_YMAX_SIZE ) { dspWrite( p_display, p_screen->Buffer[ y*SCR_XMAX_SIZE + x ] ); } else { dspWrite( p_display, '~' ); } } } #ifndef THREAD_DISPLAY_REPAINT dspRefresh( p_display ); #endif CLRBIT(p_screen->status,f_srcContentChanged); } CLRBIT(p_screen->status,f_srcRepainting); }