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