18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (c) 2003 by Karsten Wiese <annabellesgarden@yahoo.de> 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cienum E_IN84 { 88c2ecf20Sopenharmony_ci E_FADER_0 = 0, 98c2ecf20Sopenharmony_ci E_FADER_1, 108c2ecf20Sopenharmony_ci E_FADER_2, 118c2ecf20Sopenharmony_ci E_FADER_3, 128c2ecf20Sopenharmony_ci E_FADER_4, 138c2ecf20Sopenharmony_ci E_FADER_5, 148c2ecf20Sopenharmony_ci E_FADER_6, 158c2ecf20Sopenharmony_ci E_FADER_7, 168c2ecf20Sopenharmony_ci E_FADER_M, 178c2ecf20Sopenharmony_ci E_TRANSPORT, 188c2ecf20Sopenharmony_ci E_MODIFIER = 10, 198c2ecf20Sopenharmony_ci E_FILTER_SELECT, 208c2ecf20Sopenharmony_ci E_SELECT, 218c2ecf20Sopenharmony_ci E_MUTE, 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci E_SWITCH = 15, 248c2ecf20Sopenharmony_ci E_WHEEL_GAIN, 258c2ecf20Sopenharmony_ci E_WHEEL_FREQ, 268c2ecf20Sopenharmony_ci E_WHEEL_Q, 278c2ecf20Sopenharmony_ci E_WHEEL_PAN, 288c2ecf20Sopenharmony_ci E_WHEEL = 20 298c2ecf20Sopenharmony_ci}; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci#define T_RECORD 1 328c2ecf20Sopenharmony_ci#define T_PLAY 2 338c2ecf20Sopenharmony_ci#define T_STOP 4 348c2ecf20Sopenharmony_ci#define T_F_FWD 8 358c2ecf20Sopenharmony_ci#define T_REW 0x10 368c2ecf20Sopenharmony_ci#define T_SOLO 0x20 378c2ecf20Sopenharmony_ci#define T_REC 0x40 388c2ecf20Sopenharmony_ci#define T_NULL 0x80 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_cistruct us428_ctls { 428c2ecf20Sopenharmony_ci unsigned char fader[9]; 438c2ecf20Sopenharmony_ci unsigned char transport; 448c2ecf20Sopenharmony_ci unsigned char modifier; 458c2ecf20Sopenharmony_ci unsigned char filters_elect; 468c2ecf20Sopenharmony_ci unsigned char select; 478c2ecf20Sopenharmony_ci unsigned char mute; 488c2ecf20Sopenharmony_ci unsigned char unknown; 498c2ecf20Sopenharmony_ci unsigned char wswitch; 508c2ecf20Sopenharmony_ci unsigned char wheel[5]; 518c2ecf20Sopenharmony_ci}; 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_cistruct us428_set_byte { 548c2ecf20Sopenharmony_ci unsigned char offset, 558c2ecf20Sopenharmony_ci value; 568c2ecf20Sopenharmony_ci}; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_cienum { 598c2ecf20Sopenharmony_ci ELT_VOLUME = 0, 608c2ecf20Sopenharmony_ci ELT_LIGHT 618c2ecf20Sopenharmony_ci}; 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_cistruct usx2y_volume { 648c2ecf20Sopenharmony_ci unsigned char channel, 658c2ecf20Sopenharmony_ci lh, 668c2ecf20Sopenharmony_ci ll, 678c2ecf20Sopenharmony_ci rh, 688c2ecf20Sopenharmony_ci rl; 698c2ecf20Sopenharmony_ci}; 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_cistruct us428_lights { 728c2ecf20Sopenharmony_ci struct us428_set_byte light[7]; 738c2ecf20Sopenharmony_ci}; 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_cistruct us428_p4out { 768c2ecf20Sopenharmony_ci char type; 778c2ecf20Sopenharmony_ci union { 788c2ecf20Sopenharmony_ci struct usx2y_volume vol; 798c2ecf20Sopenharmony_ci struct us428_lights lights; 808c2ecf20Sopenharmony_ci } val; 818c2ecf20Sopenharmony_ci}; 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci#define N_US428_CTL_BUFS 16 848c2ecf20Sopenharmony_ci#define N_US428_P4OUT_BUFS 16 858c2ecf20Sopenharmony_cistruct us428ctls_sharedmem { 868c2ecf20Sopenharmony_ci struct us428_ctls ctl_snapshot[N_US428_CTL_BUFS]; 878c2ecf20Sopenharmony_ci int ctl_snapshot_differs_at[N_US428_CTL_BUFS]; 888c2ecf20Sopenharmony_ci int ctl_snapshot_last, ctl_snapshot_red; 898c2ecf20Sopenharmony_ci struct us428_p4out p4out[N_US428_P4OUT_BUFS]; 908c2ecf20Sopenharmony_ci int p4out_last, p4out_sent; 918c2ecf20Sopenharmony_ci}; 92