Subversion Repositories svn.mios32

Rev

Rev 626 | Rev 678 | 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 634 2009-07-02 22:06: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 {
326 tk 41
    unsigned ALL:32;
167 tk 42
  };
43
  struct {
44
    unsigned MENU_PRESSED:1;
306 tk 45
    unsigned MENU_FIRST_PAGE_SELECTED:1;
178 tk 46
    unsigned CHANGE_ALL_STEPS:1;
47
    unsigned CHANGE_ALL_STEPS_SAME_VALUE:1;
591 tk 48
    unsigned SELECT_PRESSED:1;
49
    unsigned EXIT_PRESSED:1;
50
    unsigned EDIT_PRESSED:1;
51
    unsigned MUTE_PRESSED:1;
52
    unsigned PATTERN_PRESSED:1;
53
    unsigned SONG_PRESSED:1;
178 tk 54
    unsigned FAST_ENCODERS:1;
55
    unsigned SOLO:1;
56
    unsigned SCRUB:1;
513 tk 57
    unsigned STEP_VIEW:1;
326 tk 58
    unsigned PAR_LAYER_SEL:1;
59
    unsigned TRG_LAYER_SEL:1;
513 tk 60
    unsigned TRACK_SEL:1;
240 tk 61
    unsigned REW:1;
62
    unsigned FWD:1;
63
    unsigned COPY:1;
64
    unsigned PASTE:1;
65
    unsigned CLEAR:1;
513 tk 66
    unsigned TAP_TEMPO:1;
67
    unsigned TEMPO_PRESET:1;
240 tk 68
    unsigned UP:1;
69
    unsigned DOWN:1;
167 tk 70
  };
71
} seq_ui_button_state_t;
134 tk 72
 
167 tk 73
 
168 tk 74
typedef enum {
75
  SEQ_UI_BUTTON_GP1,
76
  SEQ_UI_BUTTON_GP2,
77
  SEQ_UI_BUTTON_GP3,
78
  SEQ_UI_BUTTON_GP4,
79
  SEQ_UI_BUTTON_GP5,
80
  SEQ_UI_BUTTON_GP6,
81
  SEQ_UI_BUTTON_GP7,
82
  SEQ_UI_BUTTON_GP8,
83
  SEQ_UI_BUTTON_GP9,
84
  SEQ_UI_BUTTON_GP10,
85
  SEQ_UI_BUTTON_GP11,
86
  SEQ_UI_BUTTON_GP12,
87
  SEQ_UI_BUTTON_GP13,
88
  SEQ_UI_BUTTON_GP14,
89
  SEQ_UI_BUTTON_GP15,
90
  SEQ_UI_BUTTON_GP16,
91
  SEQ_UI_BUTTON_Exit,
92
  SEQ_UI_BUTTON_Select,
93
  SEQ_UI_BUTTON_Left,
94
  SEQ_UI_BUTTON_Right,
95
  SEQ_UI_BUTTON_Up,
96
  SEQ_UI_BUTTON_Down
97
} seq_ui_button_t;
167 tk 98
 
168 tk 99
 
100
typedef enum {
101
  SEQ_UI_ENCODER_GP1,
102
  SEQ_UI_ENCODER_GP2,
103
  SEQ_UI_ENCODER_GP3,
104
  SEQ_UI_ENCODER_GP4,
105
  SEQ_UI_ENCODER_GP5,
106
  SEQ_UI_ENCODER_GP6,
107
  SEQ_UI_ENCODER_GP7,
108
  SEQ_UI_ENCODER_GP8,
109
  SEQ_UI_ENCODER_GP9,
110
  SEQ_UI_ENCODER_GP10,
111
  SEQ_UI_ENCODER_GP11,
112
  SEQ_UI_ENCODER_GP12,
113
  SEQ_UI_ENCODER_GP13,
114
  SEQ_UI_ENCODER_GP14,
115
  SEQ_UI_ENCODER_GP15,
116
  SEQ_UI_ENCODER_GP16,
117
  SEQ_UI_ENCODER_Datawheel
118
} seq_ui_encoder_t;
119
 
120
 
240 tk 121
typedef enum {
122
  SEQ_UI_EDIT_MODE_NORMAL,
123
  SEQ_UI_EDIT_MODE_COPY,
124
  SEQ_UI_EDIT_MODE_PASTE,
125
  SEQ_UI_EDIT_MODE_CLEAR,
126
  SEQ_UI_EDIT_MODE_MOVE,
127
  SEQ_UI_EDIT_MODE_SCROLL,
128
  SEQ_UI_EDIT_MODE_RANDOM,
600 tk 129
  SEQ_UI_EDIT_MODE_RECORD,
130
  SEQ_UI_EDIT_MODE_MANUAL
240 tk 131
} seq_ui_edit_mode_t;
168 tk 132
 
240 tk 133
 
596 tk 134
typedef enum {
135
  SEQ_UI_MSG_USER,
136
  SEQ_UI_MSG_SDCARD
137
} seq_ui_msg_type_t;
138
 
139
 
625 tk 140
typedef enum {
626 tk 141
  SEQ_UI_REMOTE_MODE_AUTO=0,
625 tk 142
  SEQ_UI_REMOTE_MODE_SERVER,
143
  SEQ_UI_REMOTE_MODE_CLIENT
144
} seq_ui_remote_mode_t;
145
 
146
 
134 tk 147
/////////////////////////////////////////////////////////////////////////////
148
// Prototypes
149
/////////////////////////////////////////////////////////////////////////////
150
 
151
extern s32 SEQ_UI_Init(u32 mode);
152
 
178 tk 153
extern s32 SEQ_UI_InitEncSpeed(u32 auto_config);
154
 
134 tk 155
extern s32 SEQ_UI_Button_Handler(u32 pin, u32 pin_value);
524 tk 156
extern s32 SEQ_UI_BLM_Button_Handler(u32 row, u32 pin, u32 pin_value);
134 tk 157
extern s32 SEQ_UI_Encoder_Handler(u32 encoder, s32 incrementer);
626 tk 158
extern s32 SEQ_UI_REMOTE_MIDI_Receive(mios32_midi_port_t port, mios32_midi_package_t midi_package);
134 tk 159
extern s32 SEQ_UI_LED_Handler(void);
160
extern s32 SEQ_UI_LED_Handler_Periodic();
184 tk 161
extern s32 SEQ_UI_LCD_Handler(void);
168 tk 162
extern s32 SEQ_UI_MENU_Handler_Periodic();
134 tk 163
 
167 tk 164
extern s32 SEQ_UI_PageSet(seq_ui_page_t page);
272 tk 165
extern char *SEQ_UI_PageNameGet(seq_ui_page_t page);
167 tk 166
 
167
extern s32 SEQ_UI_InstallInitCallback(void *callback);
168 tk 168
extern s32 SEQ_UI_InstallButtonCallback(void *callback);
169
extern s32 SEQ_UI_InstallEncoderCallback(void *callback);
170
extern s32 SEQ_UI_InstallLEDCallback(void *callback);
171
extern s32 SEQ_UI_InstallLCDCallback(void *callback);
167 tk 172
 
353 tk 173
extern s32 SEQ_UI_LCD_Update(void);
174
 
328 tk 175
extern s32 SEQ_UI_CheckSelections(void);
176
 
168 tk 177
extern u8  SEQ_UI_VisibleTrackGet(void);
178 tk 178
extern s32 SEQ_UI_IsSelectedTrack(u8 track);
179
 
240 tk 180
extern s32 SEQ_UI_SelectedStepSet(u8 step);
181
 
168 tk 182
extern s32 SEQ_UI_GxTyInc(s32 incrementer);
240 tk 183
extern s32 SEQ_UI_Var16_Inc(u16 *value, u16 min, u16 max, s32 incrementer);
184
extern s32 SEQ_UI_Var8_Inc(u8 *value, u16 min, u16 max, s32 incrementer);
248 tk 185
extern s32 SEQ_UI_CC_Inc(u8 cc, u8 min, u8 max, s32 incrementer);
186
extern s32 SEQ_UI_CC_Set(u8 cc, u8 value);
187
extern s32 SEQ_UI_CC_SetFlags(u8 cc, u8 flag_mask, u8 value);
134 tk 188
 
189
 
190
/////////////////////////////////////////////////////////////////////////////
240 tk 191
// Prototypes for functions implemented in seq_ui_*.c
192
/////////////////////////////////////////////////////////////////////////////
193
 
194
extern s32 SEQ_UI_EDIT_LCD_Handler(u8 high_prio, seq_ui_edit_mode_t edit_mode);
195
extern s32 SEQ_UI_EDIT_LED_Handler(u16 *gp_leds);
196
 
286 tk 197
extern s32 SEQ_UI_MENU_StopwatchInit(void);
198
extern s32 SEQ_UI_MENU_StopwatchReset(void);
199
extern s32 SEQ_UI_MENU_StopwatchCapture(void);
200
 
240 tk 201
extern s32 SEQ_UI_UTIL_CopyButton(s32 depressed);
202
extern s32 SEQ_UI_UTIL_PasteButton(s32 depressed);
203
extern s32 SEQ_UI_UTIL_ClearButton(s32 depressed);
204
extern s32 SEQ_UI_UTIL_UndoButton(s32 depressed);
205
 
280 tk 206
extern s32 SEQ_UI_MIXER_Copy(void);
207
extern s32 SEQ_UI_MIXER_Paste(void);
208
extern s32 SEQ_UI_MIXER_Clear(void);
209
extern s32 SEQ_UI_MIXER_Undo(u8 mixer_map);
210
extern s32 SEQ_UI_MIXER_UndoUpdate(void);
211
 
240 tk 212
extern s32 SEQ_UI_UTIL_UndoUpdate(u8 track);
213
 
214
extern u8 SEQ_UI_UTIL_CopyPasteBeginGet(void);
215
extern u8 SEQ_UI_UTIL_CopyPasteEndGet(void);
216
 
596 tk 217
extern s32 SEQ_UI_Msg(seq_ui_msg_type_t msg_type, u16 delay, char *line1, char *line2);
218
extern s32 SEQ_UI_MsgStop(void);
299 tk 219
extern s32 SEQ_UI_SDCardErrMsg(u16 delay, s32 status);
240 tk 220
 
299 tk 221
 
240 tk 222
/////////////////////////////////////////////////////////////////////////////
134 tk 223
// Export global variables
224
/////////////////////////////////////////////////////////////////////////////
225
 
159 tk 226
extern u8 seq_ui_display_update_req;
227
extern u8 seq_ui_display_init_req;
134 tk 228
 
167 tk 229
extern seq_ui_button_state_t seq_ui_button_state;
230
 
134 tk 231
extern u8 ui_selected_group;
484 tk 232
extern u16 ui_selected_tracks;
134 tk 233
extern u8 ui_selected_par_layer;
234
extern u8 ui_selected_trg_layer;
328 tk 235
extern u8 ui_selected_instrument;
134 tk 236
extern u8 ui_selected_step_view;
237
extern u8 ui_selected_step;
168 tk 238
extern u8 ui_selected_item;
134 tk 239
 
240 tk 240
extern u16 ui_hold_msg_ctr;
241
 
206 tk 242
extern seq_ui_page_t ui_page;
272 tk 243
extern seq_ui_page_t ui_selected_page;
303 tk 244
extern seq_ui_page_t ui_stepview_prev_page;
326 tk 245
extern seq_ui_page_t ui_trglayer_prev_page;
246
extern seq_ui_page_t ui_parlayer_prev_page;
206 tk 247
 
173 tk 248
extern volatile u8 ui_cursor_flash;
168 tk 249
 
316 tk 250
extern u8 ui_edit_name_cursor;
251
extern u8 ui_edit_preset_num_category;
252
extern u8 ui_edit_preset_num_label;
253
 
193 tk 254
extern u8 ui_seq_pause;
255
 
625 tk 256
extern seq_ui_remote_mode_t seq_ui_remote_mode;
626 tk 257
extern seq_ui_remote_mode_t seq_ui_remote_active_mode;
625 tk 258
extern mios32_midi_port_t seq_ui_remote_port;
626 tk 259
extern mios32_midi_port_t seq_ui_remote_active_port;
625 tk 260
extern u8 seq_ui_remote_id;
626 tk 261
extern u16 seq_ui_remote_client_timeout_ctr;
262
extern u8 seq_ui_remote_force_lcd_update;
263
extern u8 seq_ui_remote_force_led_update;
625 tk 264
 
634 tk 265
extern u8 seq_ui_backup_req;
266
 
134 tk 267
#endif /* _SEQ_UI_H */