A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alan Korr
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#include "config.h"
22#include <stdbool.h>
23#include "cpu.h"
24#include "led.h"
25#include "system.h"
26#include "kernel.h"
27
28#if (CONFIG_LED == LED_REAL)
29
30#if defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
31
32#define LED_ON GPIO_CLEAR_BITWISE(GPIOF_OUTPUT_VAL, 0x20)
33#define LED_OFF GPIO_SET_BITWISE(GPIOF_OUTPUT_VAL, 0x20)
34
35#else
36
37#define LED_ON or_b(0x40, &PBDRL)
38#define LED_OFF and_b(~0x40, &PBDRL)
39
40#endif /* SAMSUNG_YH920 || SAMSUNG_YH925 */
41
42void led(bool on)
43{
44 if ( on )
45 {
46 LED_ON;
47 }
48 else
49 {
50 LED_OFF;
51 }
52}
53
54#elif (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD)
55
56static bool current;
57static long last_on; /* timestamp of switching off */
58
59void led(bool on)
60{
61 if (current && !on) /* switching off */
62 {
63 last_on = current_tick; /* remember for off delay */
64 }
65 current = on;
66}
67
68bool led_read(int delayticks) /* read by status bar update */
69{
70 /* reading "off" is delayed by user-supplied monoflop value */
71 return (current || TIME_BEFORE(current_tick, last_on+delayticks));
72}
73
74#else
75
76void led(bool on)
77{
78 (void)on;
79}
80#endif /* CONFIG_LED, HAVE_REMOTE_LCD */