Mercurial > hg > easaier-soundaccess
annotate sv/osc/sv-osc-send.c @ 282:d9319859a4cf tip
(none)
author | benoitrigolleau |
---|---|
date | Fri, 31 Oct 2008 11:00:24 +0000 |
parents | fc9323a41f5a |
children |
rev | line source |
---|---|
lbajardsilogic@0 | 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ |
lbajardsilogic@0 | 2 |
lbajardsilogic@0 | 3 #include <stdlib.h> |
lbajardsilogic@0 | 4 #include <stdio.h> |
lbajardsilogic@0 | 5 #include <string.h> |
lbajardsilogic@0 | 6 #include <ctype.h> |
lbajardsilogic@0 | 7 #include <lo/lo.h> |
lbajardsilogic@0 | 8 |
lbajardsilogic@0 | 9 void |
lbajardsilogic@0 | 10 usage(char *program_name) |
lbajardsilogic@0 | 11 { |
lbajardsilogic@0 | 12 char *base_name = strrchr(program_name, '/'); |
lbajardsilogic@0 | 13 |
lbajardsilogic@0 | 14 if (base_name && *(base_name + 1) != 0) { |
lbajardsilogic@0 | 15 base_name += 1; |
lbajardsilogic@0 | 16 } else { |
lbajardsilogic@0 | 17 base_name = program_name; |
lbajardsilogic@0 | 18 } |
lbajardsilogic@0 | 19 |
lbajardsilogic@0 | 20 fprintf(stderr, "\nusage: %s <OSC URL> [<values>]\n\n", program_name); |
lbajardsilogic@0 | 21 fprintf(stderr, "example OSC URLs:\n\n" |
lbajardsilogic@0 | 22 " osc.udp://localhost:19383/path/test 1.0 4.2\n" |
lbajardsilogic@0 | 23 " osc.udp://my.host.org:10886/3/13/load file\n\n"); |
lbajardsilogic@0 | 24 fprintf(stderr, "numeric arguments will be treated as OSC 'f' floating point types.\n\n"); |
lbajardsilogic@0 | 25 exit(1); |
lbajardsilogic@0 | 26 } |
lbajardsilogic@0 | 27 |
lbajardsilogic@0 | 28 int main(int argc, char *argv[]) |
lbajardsilogic@0 | 29 { |
lbajardsilogic@0 | 30 lo_address a; |
lbajardsilogic@0 | 31 char *url, *host, *port, *path; |
lbajardsilogic@0 | 32 lo_message message; |
lbajardsilogic@0 | 33 unsigned int i; |
lbajardsilogic@0 | 34 |
lbajardsilogic@0 | 35 if (argc < 2) { |
lbajardsilogic@0 | 36 usage(argv[0]); |
lbajardsilogic@0 | 37 /* does not return */ |
lbajardsilogic@0 | 38 } |
lbajardsilogic@0 | 39 url = argv[1]; |
lbajardsilogic@0 | 40 |
lbajardsilogic@0 | 41 host = lo_url_get_hostname(url); |
lbajardsilogic@0 | 42 port = lo_url_get_port(url); |
lbajardsilogic@0 | 43 path = lo_url_get_path(url); |
lbajardsilogic@0 | 44 a = lo_address_new(host, port); |
lbajardsilogic@0 | 45 |
lbajardsilogic@0 | 46 message = lo_message_new(); |
lbajardsilogic@0 | 47 |
lbajardsilogic@0 | 48 for (i = 0; i + 2 < argc; ++i) { |
lbajardsilogic@0 | 49 |
lbajardsilogic@0 | 50 int index = i + 2; |
lbajardsilogic@0 | 51 char *param; |
lbajardsilogic@0 | 52 |
lbajardsilogic@0 | 53 param = argv[index]; |
lbajardsilogic@0 | 54 if (!isdigit(param[0])) { |
lbajardsilogic@0 | 55 lo_message_add_string(message, argv[index]); |
lbajardsilogic@0 | 56 } else { |
lbajardsilogic@0 | 57 lo_message_add_float(message, atof(argv[index])); |
lbajardsilogic@0 | 58 } |
lbajardsilogic@0 | 59 } |
lbajardsilogic@0 | 60 |
lbajardsilogic@0 | 61 lo_send_message(a, path, message); |
lbajardsilogic@0 | 62 |
lbajardsilogic@0 | 63 if (lo_address_errno(a)) { |
lbajardsilogic@0 | 64 printf("liblo error: %s\n", lo_address_errstr(a)); |
lbajardsilogic@0 | 65 } |
lbajardsilogic@0 | 66 |
lbajardsilogic@0 | 67 free(host); |
lbajardsilogic@0 | 68 free(port); |
lbajardsilogic@0 | 69 free(path); |
lbajardsilogic@0 | 70 |
lbajardsilogic@0 | 71 return 0; |
lbajardsilogic@0 | 72 } |
lbajardsilogic@0 | 73 |