diff options
Diffstat (limited to 'alsa-lib/test/seq.c')
-rw-r--r-- | alsa-lib/test/seq.c | 233 |
1 files changed, 0 insertions, 233 deletions
diff --git a/alsa-lib/test/seq.c b/alsa-lib/test/seq.c deleted file mode 100644 index 34b000f..0000000 --- a/alsa-lib/test/seq.c +++ /dev/null @@ -1,233 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <ctype.h> -#include <getopt.h> -#include "../include/asoundlib.h" - -#include "seq-decoder.c" -#include "seq-sender.c" - -#define SEQ_VERSION "0.0.1" - -#define HELPID_HELP 1000 -#define HELPID_DEBUG 1001 -#define HELPID_VERBOSE 1002 -#define HELPID_VERSION 1003 - -int max_clients; -int max_ports; -int max_queues; -int debug = 0; -int verbose = 0; - -void set_name(snd_seq_t *handle) -{ - int err; - char name[64]; - - sprintf(name, "SeqUtil - %i", getpid()); - if ((err = snd_seq_set_client_name(handle, name)) < 0) { - fprintf(stderr, "Set client info error: %s\n", snd_strerror(err)); - exit(0); - } -} - -void system_info(snd_seq_t *handle) -{ - int err; - snd_seq_system_info_t *sysinfo; - - snd_seq_system_info_alloca(&sysinfo); - if ((err = snd_seq_system_info(handle, sysinfo))<0) { - fprintf(stderr, "System info error: %s\n", snd_strerror(err)); - exit(0); - } - max_clients = snd_seq_system_info_get_clients(sysinfo); - max_ports = snd_seq_system_info_get_ports(sysinfo); - max_queues = snd_seq_system_info_get_ports(sysinfo); -} - -void show_system_info(snd_seq_t *handle ATTRIBUTE_UNUSED) -{ - printf("System info\n"); - printf(" Max queues : %i\n", max_queues); - printf(" Max clients : %i\n", max_clients); - printf(" Max ports : %i\n", max_ports); -} - -void show_queue_status(snd_seq_t *handle, int queue) -{ - int err, idx, min, max; - snd_seq_queue_status_t *status; - - snd_seq_queue_status_alloca(&status); - min = queue < 0 ? 0 : queue; - max = queue < 0 ? max_queues : queue + 1; - for (idx = min; idx < max; idx++) { - if ((err = snd_seq_get_queue_status(handle, idx, status))<0) { - if (err == -ENOENT) - continue; - fprintf(stderr, "Client %i info error: %s\n", idx, snd_strerror(err)); - exit(0); - } - printf("Queue %i info\n", snd_seq_queue_status_get_queue(status)); - printf(" Tick : %u\n", snd_seq_queue_status_get_tick_time(status)); - printf(" Realtime : %i.%i\n", - snd_seq_queue_status_get_real_time(status)->tv_sec, - snd_seq_queue_status_get_real_time(status)->tv_nsec); - printf(" Flags : 0x%x\n", snd_seq_queue_status_get_status(status)); - } -} - -void show_port_info(snd_seq_t *handle, int client, int port) -{ - int err, idx, min, max; - snd_seq_port_info_t *info; - - snd_seq_port_info_alloca(&info); - min = port < 0 ? 0 : port; - max = port < 0 ? max_ports : port + 1; - for (idx = min; idx < max; idx++) { - if ((err = snd_seq_get_any_port_info(handle, client, idx, info))<0) { - if (err == -ENOENT) - continue; - fprintf(stderr, "Port %i/%i info error: %s\n", client, idx, snd_strerror(err)); - exit(0); - } - printf(" Port %i info\n", idx); - printf(" Client : %i\n", snd_seq_port_info_get_client(info)); - printf(" Port : %i\n", snd_seq_port_info_get_port(info)); - printf(" Name : %s\n", snd_seq_port_info_get_name(info)); - printf(" Capability : 0x%x\n", snd_seq_port_info_get_capability(info)); - printf(" Type : 0x%x\n", snd_seq_port_info_get_type(info)); - //printf(" Midi channels : %i\n", info.midi_channels); - //printf(" Synth voices : %i\n", info.synth_voices); - printf(" Output subs : %i\n", snd_seq_port_info_get_write_use(info)); - printf(" Input subs : %i\n", snd_seq_port_info_get_read_use(info)); - } -} - -void show_client_info(snd_seq_t *handle, int client) -{ - int err, idx, min, max; - snd_seq_client_info_t *info; - - snd_seq_client_info_alloca(&info); - min = client < 0 ? 0 : client; - max = client < 0 ? max_clients : client + 1; - for (idx = min; idx < max; idx++) { - if ((err = snd_seq_get_any_client_info(handle, idx, info))<0) { - if (err == -ENOENT) - continue; - fprintf(stderr, "Client %i info error: %s\n", idx, snd_strerror(err)); - exit(0); - } - printf("Client %i info\n", idx); - if (verbose) - printf(" Client : %i\n", snd_seq_client_info_get_client(info)); - printf(" Type : %s\n", snd_seq_client_info_get_type(info) == SND_SEQ_KERNEL_CLIENT ? "kernel" : "user"); - printf(" Name : %s\n", snd_seq_client_info_get_name(info)); - } -} - -static void help(void) -{ - printf("Usage: seq <options> command\n"); - printf("\nAvailable options:\n"); - printf(" -h,--help this help\n"); - printf(" -d,--debug debug mode\n"); - printf(" -v,--verbose verbose mode\n"); - printf(" -V,--version print version of this program\n"); - printf("\nAvailable commands:\n"); - printf(" system show basic sequencer info\n"); - printf(" queue [#] show all queues or specified queue\n"); - printf(" client [#] show all clients or specified client\n"); - printf(" port <client> [#] show all ports or specified port for specified client\n"); - printf(" decoder event decoder\n"); - printf(" sender <client.port> [<client.port>] ... event sender\n"); -} - -int main(int argc, char *argv[]) -{ - int morehelp, err, arg, arg1; - snd_seq_t *handle; - static struct option long_option[] = - { - {"help", 0, NULL, HELPID_HELP}, - {"debug", 0, NULL, HELPID_DEBUG}, - {"verbose", 0, NULL, HELPID_VERBOSE}, - {"version", 0, NULL, HELPID_VERSION}, - {NULL, 0, NULL, 0}, - }; - - morehelp = 0; - - while (1) { - int c; - - if ((c = getopt_long(argc, argv, "hdvV", long_option, NULL)) < 0) - break; - switch (c) { - case 'h': - case HELPID_HELP: - morehelp++; - break; - case 'd': - case HELPID_DEBUG: - debug = 1; - break; - case 'v': - case HELPID_VERBOSE: - verbose = 1; - break; - case 'V': - case HELPID_VERSION: - printf("alsactl version " SEQ_VERSION "\n"); - return 1; - default: - fprintf(stderr, "\07Invalid switch or option needs an argument.\n"); - morehelp++; - } - } - if (morehelp) { - help(); - return 1; - } - if (argc - optind <= 0) { - fprintf(stderr, "seq: Specify command...\n"); - return 0; - } - if ((err = snd_seq_open(&handle, "hw", SND_SEQ_OPEN_DUPLEX, 0))<0) { - fprintf(stderr, "Open error: %s\n", snd_strerror(err)); - exit(0); - } - set_name(handle); - system_info(handle); - - if (!strcmp(argv[optind], "system")) { - show_system_info(handle); - } else if (!strcmp(argv[optind], "queue")) { - arg = argc - optind > 1 ? atoi(argv[optind + 1]) : -1; - show_queue_status(handle, arg); - } else if (!strcmp(argv[optind], "client")) { - arg = argc - optind > 1 ? atoi(argv[optind + 1]) : -1; - show_client_info(handle, arg); - } else if (!strcmp(argv[optind], "port")) { - arg = argc - optind > 1 ? atoi(argv[optind + 1]) : -1; - if (arg < 0) { - fprintf(stderr, "Specify port...\n"); - exit(0); - } - arg1 = argc - optind > 2 ? atoi(argv[optind + 2]) : -1; - show_port_info(handle, arg, arg1); - } else if (!strcmp(argv[optind], "decoder")) { - event_decoder(handle, argc - optind - 1, argv + optind + 1); - } else if (!strcmp(argv[optind], "sender")) { - event_sender(handle, argc - optind - 1, argv + optind + 1); - } else { - help(); - } - exit(1); -} |