root/sound/core/seq/oss/seq_oss_event.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * OSS compatible sequencer driver
   4  *
   5  * seq_oss_event.h - OSS event queue record
   6  *
   7  * Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de>
   8  */
   9 
  10 #ifndef __SEQ_OSS_EVENT_H
  11 #define __SEQ_OSS_EVENT_H
  12 
  13 #include "seq_oss_device.h"
  14 
  15 #define SHORT_EVENT_SIZE        4
  16 #define LONG_EVENT_SIZE         8
  17 
  18 /* short event (4bytes) */
  19 struct evrec_short {
  20         unsigned char code;
  21         unsigned char parm1;
  22         unsigned char dev;
  23         unsigned char parm2;
  24 };
  25         
  26 /* short note events (4bytes) */
  27 struct evrec_note {
  28         unsigned char code;
  29         unsigned char chn;
  30         unsigned char note;
  31         unsigned char vel;
  32 };
  33         
  34 /* long timer events (8bytes) */
  35 struct evrec_timer {
  36         unsigned char code;
  37         unsigned char cmd;
  38         unsigned char dummy1, dummy2;
  39         unsigned int time;
  40 };
  41 
  42 /* long extended events (8bytes) */
  43 struct evrec_extended {
  44         unsigned char code;
  45         unsigned char cmd;
  46         unsigned char dev;
  47         unsigned char chn;
  48         unsigned char p1, p2, p3, p4;
  49 };
  50 
  51 /* long channel events (8bytes) */
  52 struct evrec_long {
  53         unsigned char code;
  54         unsigned char dev;
  55         unsigned char cmd;
  56         unsigned char chn;
  57         unsigned char p1, p2;
  58         unsigned short val;
  59 };
  60         
  61 /* channel voice events (8bytes) */
  62 struct evrec_voice {
  63         unsigned char code;
  64         unsigned char dev;
  65         unsigned char cmd;
  66         unsigned char chn;
  67         unsigned char note, parm;
  68         unsigned short dummy;
  69 };
  70 
  71 /* sysex events (8bytes) */
  72 struct evrec_sysex {
  73         unsigned char code;
  74         unsigned char dev;
  75         unsigned char buf[6];
  76 };
  77 
  78 /* event record */
  79 union evrec {
  80         struct evrec_short s;
  81         struct evrec_note n;
  82         struct evrec_long l;
  83         struct evrec_voice v;
  84         struct evrec_timer t;
  85         struct evrec_extended e;
  86         struct evrec_sysex x;
  87         unsigned int echo;
  88         unsigned char c[LONG_EVENT_SIZE];
  89 };
  90 
  91 #define ev_is_long(ev) ((ev)->s.code >= 128)
  92 #define ev_length(ev) ((ev)->s.code >= 128 ? LONG_EVENT_SIZE : SHORT_EVENT_SIZE)
  93 
  94 int snd_seq_oss_process_event(struct seq_oss_devinfo *dp, union evrec *q, struct snd_seq_event *ev);
  95 int snd_seq_oss_process_timer_event(struct seq_oss_timer *rec, union evrec *q);
  96 int snd_seq_oss_event_input(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop);
  97 
  98 
  99 #endif /* __SEQ_OSS_EVENT_H */

/* [<][>][^][v][top][bottom][index][help] */