summaryrefslogtreecommitdiff
path: root/firmware/export/button.h
blob: 7f4998f48de01295f713b09b2efba6da716044f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 * $Id$
 *
 * Copyright (C) 2002 by Daniel Stenberg
 *
 * All files in this archive are subject to the GNU General Public License.
 * See the file COPYING in the source tree root for full license agreement.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ****************************************************************************/
#ifndef _BUTTON_H_
#define _BUTTON_H_

#include <stdbool.h>
#include "config.h"

extern struct event_queue button_queue;

void button_init (void);
int button_get (bool block);
int button_get_w_tmo(int ticks);
int button_status(void);
void button_clear_queue(void);
#if defined(HAVE_RECORDER_KEYPAD) || defined(HAVE_ONDIO_KEYPAD)
void button_set_flip(bool flip); /* turn 180 degrees */
#endif

#define	BUTTON_NONE		0x0000

#ifdef HAVE_NEO_KEYPAD

#define BUTTON_UP               0x0080
#define	BUTTON_DOWN		0x0010
#define	BUTTON_LEFT		0x0001
#define	BUTTON_RIGHT		0x0002

#define BUTTON_SELECT           0x0040

#define BUTTON_ON BUTTON_SELECT

#define BUTTON_PROGRAM          0x0020
#define	BUTTON_MENU		0x0004
#define	BUTTON_PLAY		0x0008
#define	BUTTON_STOP		0x0100

#define BUTTON_IR               0x2000
#define BUTTON_REPEAT           0x4000
#define BUTTON_REL              0x8000

#define BUTTON_FLAG_MASK	0xF000
#define BUTTON_MASK		0x0FFF
#define BUTTON_ALL		BUTTON_MASK
#define BUTTON_ALL_FLAGS	BUTTON_FLAG_MASK

#define NEO_IR_BUTTON_POWER     0x0001
#define NEO_IR_BUTTON_SETTING   0x0002
#define NEO_IR_BUTTON_REWIND    0x0004
#define NEO_IR_BUTTON_FFORWARD  0x0008
#define NEO_IR_BUTTON_PLAY      0x0010
#define NEO_IR_BUTTON_VOLUP     0x0020
#define NEO_IR_BUTTON_VOLDN     0x0040
#define NEO_IR_BUTTON_BROWSE    0x0080
#define NEO_IR_BUTTON_EQ        0x0100
#define NEO_IR_BUTTON_MUTE      0x0200
#define NEO_IR_BUTTON_PROGRAM   0x0400
#define NEO_IR_BUTTON_STOP      0x0800
#define NEO_IR_BUTTON_NONE      0x0000

#define NEO_IR_BUTTON_REPEAT    0x1000

#else

/* Shared button codes */
#define	BUTTON_ON		0x0001
#define	BUTTON_UP		0x0010
#define	BUTTON_DOWN		0x0020
#define	BUTTON_LEFT		0x0040
#define	BUTTON_RIGHT		0x0080

/* Button modifiers */
#define	BUTTON_REMOTE		0x2000
#define	BUTTON_REPEAT		0x4000
#define	BUTTON_REL		0x8000

/* remote control buttons */
#define BUTTON_RC_VOL_UP        (0x0008 | BUTTON_REMOTE)
#define BUTTON_RC_VOL_DOWN      (0x0800 | BUTTON_REMOTE)
#define BUTTON_RC_PLAY          (BUTTON_UP | BUTTON_REMOTE)
#define BUTTON_RC_STOP          (BUTTON_DOWN | BUTTON_REMOTE)
#define BUTTON_RC_LEFT          (BUTTON_LEFT | BUTTON_REMOTE)
#define BUTTON_RC_RIGHT         (BUTTON_RIGHT| BUTTON_REMOTE)

#ifdef HAVE_RECORDER_KEYPAD

/* Recorder specific button codes */
#define	BUTTON_OFF		0x0002
#define	BUTTON_PLAY		0x0004
#define	BUTTON_F1		0x0100
#define	BUTTON_F2		0x0200
#define	BUTTON_F3		0x0400

#elif defined(HAVE_PLAYER_KEYPAD)

/* Jukebox 6000 and Studio specific button codes */
#define	BUTTON_MENU		0x0002
#define	BUTTON_PLAY		BUTTON_UP
#define	BUTTON_STOP		BUTTON_DOWN

#elif defined HAVE_ONDIO_KEYPAD

/* Ondio specific button codes */
#define	BUTTON_MENU		0x0002
#define	BUTTON_PLAY		BUTTON_UP
#define	BUTTON_STOP		BUTTON_DOWN
/* ON is also interpreted as OFF, let's see if that helps a bit */
#define BUTTON_OFF      BUTTON_ON
#define	BUTTON_F1		0x0100 /* unreacheable */
#define	BUTTON_F2		0x0200 /* unreacheable */
#define	BUTTON_F3		0x0400 /* unreacheable */

#endif /* HAVE_RECORDER/PLAYER/ONDIO_KEYPAD */

#endif /* HAVE_NEO_KEYPAD */

#endif /* _BUTTON_H_ */