Subversion Repositories svn.mios32

Rev

Rev 249 | Rev 280 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
134 tk 1
// $Id: seq_ui.h 272 2009-01-10 14:10:29Z tk $
2
/*
3
 * Header file for user interface routines
4
 *
5
 * ==========================================================================
6
 *
7
 *  Copyright (C) 2008 Thorsten Klose (tk@midibox.org)
8
 *  Licensed for personal non-commercial use only.
9
 *  All other rights reserved.
10
 *
11
 * ==========================================================================
12
 */
13
 
14
#ifndef _SEQ_UI_H
15
#define _SEQ_UI_H
16
 
167 tk 17
/////////////////////////////////////////////////////////////////////////////
18
// Menu Page definitions
19
/////////////////////////////////////////////////////////////////////////////
134 tk 20
 
272 tk 21
#include "seq_ui_pages.inc"
167 tk 22
 
23
 
134 tk 24
/////////////////////////////////////////////////////////////////////////////
25
// Global definitions
26
/////////////////////////////////////////////////////////////////////////////
27
 
168 tk 28
// cursor flash with following waveform:
29
// 0..399 mS: cursor on
30
// 400..499 mS: cursor off
31
#define SEQ_UI_CURSOR_FLASH_CTR_MAX     500  // mS
32
#define SEQ_UI_CURSOR_FLASH_CTR_LED_OFF 400  // mS
134 tk 33
 
168 tk 34
 
134 tk 35
/////////////////////////////////////////////////////////////////////////////
36
// Global Types
37
/////////////////////////////////////////////////////////////////////////////
38
 
167 tk 39
typedef union {
40
  struct {
240 tk 41
    unsigned ALL:16;
167 tk 42
  };
43
  struct {
44
    unsigned MENU_PRESSED:1;
178 tk 45
    unsigned CHANGE_ALL_STEPS:1;
46
    unsigned CHANGE_ALL_STEPS_SAME_VALUE:1;
47
    unsigned FAST_ENCODERS:1;
48
    unsigned SOLO:1;
49
    unsigned METRONOME:1;
50
    unsigned SCRUB:1;
240 tk 51
    unsigned REW:1;
52
    unsigned FWD:1;
53
    unsigned COPY:1;
54
    unsigned PASTE:1;
55
    unsigned CLEAR:1;
56
    unsigned F1:1;
57
    unsigned F2:1;
58
    unsigned F3:1;
59
    unsigned F4:1;
60
    unsigned UP:1;
61
    unsigned DOWN:1;
167 tk 62
  };
63
} seq_ui_button_state_t;
134 tk 64
 
167 tk 65
 
168 tk 66
typedef enum {
67
  SEQ_UI_BUTTON_GP1,
68
  SEQ_UI_BUTTON_GP2,
69
  SEQ_UI_BUTTON_GP3,
70
  SEQ_UI_BUTTON_GP4,
71
  SEQ_UI_BUTTON_GP5,
72
  SEQ_UI_BUTTON_GP6,
73
  SEQ_UI_BUTTON_GP7,
74
  SEQ_UI_BUTTON_GP8,
75
  SEQ_UI_BUTTON_GP9,
76
  SEQ_UI_BUTTON_GP10,
77
  SEQ_UI_BUTTON_GP11,
78
  SEQ_UI_BUTTON_GP12,
79
  SEQ_UI_BUTTON_GP13,
80
  SEQ_UI_BUTTON_GP14,
81
  SEQ_UI_BUTTON_GP15,
82
  SEQ_UI_BUTTON_GP16,
83
  SEQ_UI_BUTTON_Exit,
84
  SEQ_UI_BUTTON_Select,
85
  SEQ_UI_BUTTON_Left,
86
  SEQ_UI_BUTTON_Right,
87
  SEQ_UI_BUTTON_Up,
88
  SEQ_UI_BUTTON_Down
89
} seq_ui_button_t;
167 tk 90
 
168 tk 91
 
92
typedef enum {
93
  SEQ_UI_ENCODER_GP1,
94
  SEQ_UI_ENCODER_GP2,
95
  SEQ_UI_ENCODER_GP3,
96
  SEQ_UI_ENCODER_GP4,
97
  SEQ_UI_ENCODER_GP5,
98
  SEQ_UI_ENCODER_GP6,
99
  SEQ_UI_ENCODER_GP7,
100
  SEQ_UI_ENCODER_GP8,
101
  SEQ_UI_ENCODER_GP9,
102
  SEQ_UI_ENCODER_GP10,
103
  SEQ_UI_ENCODER_GP11,
104
  SEQ_UI_ENCODER_GP12,
105
  SEQ_UI_ENCODER_GP13,
106
  SEQ_UI_ENCODER_GP14,
107
  SEQ_UI_ENCODER_GP15,
108
  SEQ_UI_ENCODER_GP16,
109
  SEQ_UI_ENCODER_Datawheel
110
} seq_ui_encoder_t;
111
 
112
 
240 tk 113
typedef enum {
114
  SEQ_UI_EDIT_MODE_NORMAL,
115
  SEQ_UI_EDIT_MODE_COPY,
116
  SEQ_UI_EDIT_MODE_PASTE,
117
  SEQ_UI_EDIT_MODE_CLEAR,
118
  SEQ_UI_EDIT_MODE_MOVE,
119
  SEQ_UI_EDIT_MODE_SCROLL,
120
  SEQ_UI_EDIT_MODE_RANDOM,
121
  SEQ_UI_EDIT_MODE_RECORD
122
} seq_ui_edit_mode_t;
168 tk 123
 
240 tk 124
 
134 tk 125
/////////////////////////////////////////////////////////////////////////////
126
// Prototypes
127
/////////////////////////////////////////////////////////////////////////////
128
 
129
extern s32 SEQ_UI_Init(u32 mode);
130
 
178 tk 131
extern s32 SEQ_UI_InitEncSpeed(u32 auto_config);
132
 
134 tk 133
extern s32 SEQ_UI_Button_Handler(u32 pin, u32 pin_value);
134
extern s32 SEQ_UI_Encoder_Handler(u32 encoder, s32 incrementer);
135
extern s32 SEQ_UI_LED_Handler(void);
136
extern s32 SEQ_UI_LED_Handler_Periodic();
184 tk 137
extern s32 SEQ_UI_LCD_Handler(void);
168 tk 138
extern s32 SEQ_UI_MENU_Handler_Periodic();
134 tk 139
 
167 tk 140
extern s32 SEQ_UI_PageSet(seq_ui_page_t page);
272 tk 141
extern char *SEQ_UI_PageNameGet(seq_ui_page_t page);
167 tk 142
 
143
extern s32 SEQ_UI_InstallInitCallback(void *callback);
168 tk 144
extern s32 SEQ_UI_InstallButtonCallback(void *callback);
145
extern s32 SEQ_UI_InstallEncoderCallback(void *callback);
146
extern s32 SEQ_UI_InstallLEDCallback(void *callback);
147
extern s32 SEQ_UI_InstallLCDCallback(void *callback);
167 tk 148
 
168 tk 149
extern u8  SEQ_UI_VisibleTrackGet(void);
178 tk 150
extern s32 SEQ_UI_IsSelectedTrack(u8 track);
151
 
240 tk 152
extern s32 SEQ_UI_SelectedStepSet(u8 step);
153
 
168 tk 154
extern s32 SEQ_UI_GxTyInc(s32 incrementer);
240 tk 155
extern s32 SEQ_UI_Var16_Inc(u16 *value, u16 min, u16 max, s32 incrementer);
156
extern s32 SEQ_UI_Var8_Inc(u8 *value, u16 min, u16 max, s32 incrementer);
248 tk 157
extern s32 SEQ_UI_CC_Inc(u8 cc, u8 min, u8 max, s32 incrementer);
158
extern s32 SEQ_UI_CC_Set(u8 cc, u8 value);
159
extern s32 SEQ_UI_CC_SetFlags(u8 cc, u8 flag_mask, u8 value);
134 tk 160
 
161
 
162
/////////////////////////////////////////////////////////////////////////////
240 tk 163
// Prototypes for functions implemented in seq_ui_*.c
164
/////////////////////////////////////////////////////////////////////////////
165
 
166
extern s32 SEQ_UI_EDIT_LCD_Handler(u8 high_prio, seq_ui_edit_mode_t edit_mode);
167
extern s32 SEQ_UI_EDIT_LED_Handler(u16 *gp_leds);
168
 
169
extern s32 SEQ_UI_UTIL_CopyButton(s32 depressed);
170
extern s32 SEQ_UI_UTIL_PasteButton(s32 depressed);
171
extern s32 SEQ_UI_UTIL_ClearButton(s32 depressed);
172
extern s32 SEQ_UI_UTIL_UndoButton(s32 depressed);
173
 
174
extern s32 SEQ_UI_UTIL_UndoUpdate(u8 track);
175
 
176
extern u8 SEQ_UI_UTIL_CopyPasteBeginGet(void);
177
extern u8 SEQ_UI_UTIL_CopyPasteEndGet(void);
178
 
179
 
180
/////////////////////////////////////////////////////////////////////////////
134 tk 181
// Export global variables
182
/////////////////////////////////////////////////////////////////////////////
183
 
159 tk 184
extern u8 seq_ui_display_update_req;
185
extern u8 seq_ui_display_init_req;
134 tk 186
 
167 tk 187
extern seq_ui_button_state_t seq_ui_button_state;
188
 
134 tk 189
extern u8 ui_selected_group;
190
extern u8 ui_selected_tracks;
191
extern u8 ui_selected_par_layer;
192
extern u8 ui_selected_trg_layer;
193
extern u8 ui_selected_step_view;
194
extern u8 ui_selected_step;
168 tk 195
extern u8 ui_selected_item;
134 tk 196
 
240 tk 197
extern u16 ui_hold_msg_ctr;
198
 
206 tk 199
extern seq_ui_page_t ui_page;
272 tk 200
extern seq_ui_page_t ui_selected_page;
206 tk 201
extern seq_ui_page_t ui_shortcut_prev_page;
202
 
173 tk 203
extern volatile u8 ui_cursor_flash;
168 tk 204
 
193 tk 205
extern u8 ui_seq_pause;
206
 
134 tk 207
#endif /* _SEQ_UI_H */