#!/usr/local/bin/perl
# file: udp_client.pl

use IO::Socket;
#use strict;
use constant MAXLEN => 1024;

use CGI qw(:all);

my $host = shift || 'localhost';
my $port = shift || 'echo';

my $S = IO::Socket::INET->new(Proto    => 'udp',
			      Type     => SOCK_DGRAM
			      ) || die "can't make socket: $!";

my $dest = sockaddr_in(5555,inet_aton("enterprise.sdsc.edu"));

my ($ra, $tilt, $pan, $zoom, $speed);

$query = new CGI;

if ( defined param('pos') ) {
    $ra = param('pos');
    $ra = "R" unless $ra =~ /\w/;
} else {
    $ra = "R";
}

if ( defined param('tilt') ) {
    $tilt = param('tilt');
    $tilt = "0.0" unless $tilt =~ /\d+/;
} else {
    $tilt = "0.0";
}

if ( defined param('pan') ) {
    $pan = param('pan');
    $pan = "0.0" unless $pan =~ /\d+/;
} else {
    $pan =  "0.0";
}

if ( defined param('zoom') ) {
    $zoom = param('zoom');
    $zoom = "0.0" unless $zoom =~ /\d+/;
} else {
    $zoom = "0.0";
}

if ( defined param('speed') ) {
    $speed = param('speed');
    $speed = "0.0" unless $speed =~ /\d+/;
} else {
    $speed ="0.0";
}

my $F;

my $c = "70 929507166666 enterprise.sdsc.edu#cam 1 tilt $ra $tilt $speed\@pan $ra $pan $speed\@zoom $ra $zoom $speed";

send_data($S,$dest);
close $S;
open (F,"<control.html");
print "Content-type: text/html", "\n\n";

if ( defined param('debug') ) {
    print "$c<p>\n";
}

while (<F>) {print;}
exit(0);

sub send_data {
    my ($sock,$dest) = @_;
    $sock->send($c,0,$dest) || die "send(): $!";
}

__END__
