Prevent file descriptor leakage or overuse
[Rockbox.git] / apps / status.c
blob468ca19c13f9a4f05b0f2c552f2aba3ec0ce9a32
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2002 by Linus Nielsen Feltzing
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
18 ****************************************************************************/
19 #include "string.h"
20 #include "lcd.h"
21 #include "debug.h"
22 #include "kernel.h"
23 #include "power.h"
24 #include "thread.h"
25 #include "settings.h"
26 #include "status.h"
27 #include "mp3_playback.h"
28 #include "audio.h"
29 #include "gwps.h"
30 #include "abrepeat.h"
31 #include "statusbar.h"
32 #if CONFIG_RTC
33 #include "timefuncs.h"
34 #endif
35 #ifdef HAVE_LCD_BITMAP
36 #include "icons.h"
37 #include "font.h"
38 #endif
39 #include "powermgmt.h"
40 #include "led.h"
41 #include "sound.h"
42 #if CONFIG_KEYPAD == IRIVER_H100_PAD
43 #include "button.h"
44 #endif
45 #include "usb.h"
46 #if CONFIG_TUNER
47 #include "radio.h"
48 #endif
49 #if defined(HAVE_RECORDING) && CONFIG_CODEC == SWCODEC
50 #include "pcm_record.h"
51 #endif
53 enum playmode ff_mode;
55 void status_init(void)
57 ff_mode = 0;
60 void status_set_ffmode(enum playmode mode)
62 ff_mode = mode; /* Either STATUS_FASTFORWARD or STATUS_FASTBACKWARD */
65 enum playmode status_get_ffmode(void)
67 /* only use this function for STATUS_FASTFORWARD or STATUS_FASTBACKWARD */
68 /* use audio_status() for other modes */
69 return ff_mode;
72 int current_playmode(void)
74 int audio_stat = audio_status();
76 /* ff_mode can be either STATUS_FASTFORWARD or STATUS_FASTBACKWARD
77 and that supercedes the other modes */
78 if(ff_mode)
79 return ff_mode;
81 if(audio_stat & AUDIO_STATUS_PLAY)
83 if(audio_stat & AUDIO_STATUS_PAUSE)
84 return STATUS_PAUSE;
85 else
86 return STATUS_PLAY;
89 #ifdef HAVE_RECORDING
90 if(audio_stat & AUDIO_STATUS_RECORD)
92 if(audio_stat & AUDIO_STATUS_PAUSE)
93 return STATUS_RECORD_PAUSE;
94 else
95 return STATUS_RECORD;
97 #endif
99 #if CONFIG_TUNER
100 audio_stat = get_radio_status();
101 if(audio_stat & FMRADIO_PLAYING)
102 return STATUS_RADIO;
104 if(audio_stat & FMRADIO_PAUSED)
105 return STATUS_RADIO_PAUSE;
106 #endif
108 return STATUS_STOP;
111 #if defined(HAVE_LCD_CHARCELLS)
112 bool record = false;
113 bool audio = false;
114 bool param = false;
115 bool usb = false;
117 void status_set_record(bool b)
119 record = b;
122 void status_set_audio(bool b)
124 audio = b;
127 void status_set_param(bool b)
129 param = b;
132 void status_set_usb(bool b)
134 usb = b;
137 #endif /* HAVE_LCD_CHARCELLS */