+ Changed protocol to 0.3 because we now accept both -foo and foo
as argument introducers. in 0.4-pre10, these were changed
from foo to -foo and this broke many clients. This change
should fix that and be backward/forward compatible.
+ Added a noop function to the protocol. This is useful for writing
shell script clients of LCDproc.
+ Changed the shared sock_send_string function to NOT send the
ending NUL ('\0') byte with the string. This was confusing
in Perl clients which saw NUL's as the first character of
each reply. WARNING: The LCDPROC client depended on this
behavior, your client may too. Use the newline instead.
See the code in clients/lcdproc/main.c (look for "switch(buf[i])")
to see one way to handle this. This should allow new clients
to connect to old servers and vice-versa.
+ Messed with include structure in .c files. It should no longer
be necessary to specify ../.. to get to shared code headers.
Also, since we are using automake, the global config.h can be
found with just #include "config.h" as it's location is included
in a -I to the compilers. As a result "make distcheck" now works.
This commit is contained in:
@@ -75,29 +75,11 @@ print $remote "widget_add metar cloud string\n";
|
||||
print $remote "widget_add metar wind string\n";
|
||||
|
||||
# set metar source
|
||||
|
||||
my $ua = new LWP::UserAgent;
|
||||
|
||||
my $req = new HTTP::Request GET =>
|
||||
"http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=$site_code";
|
||||
|
||||
# fork data collector from socket handling
|
||||
|
||||
$kidpid = fork();
|
||||
|
||||
# Parent
|
||||
if ($kidpid) {
|
||||
|
||||
while (1==1) {
|
||||
# read socket
|
||||
my $lcdconnect = <$remote>;
|
||||
}
|
||||
|
||||
# child
|
||||
|
||||
} else
|
||||
{
|
||||
|
||||
# fetch weather information
|
||||
while (1==1) {
|
||||
|
||||
@@ -136,13 +118,13 @@ while (1==1) {
|
||||
my $metartime = $m->TIME;
|
||||
my $c_dew = $m->C_DEW;
|
||||
my $f_temp = $m->F_TEMP;
|
||||
my $wind_dir_eng = $m->WIND_DIR_DEG;
|
||||
my $wind_mph = $m->WIND_MPH;
|
||||
my $wind_dir_eng = $m->WIND_DIR_ENG;
|
||||
my $wind_mph = int($m->WIND_MPH);
|
||||
my $sky = $m->SKY;
|
||||
my $time = localtime(time);
|
||||
print $remote "widget_set metar title {Weather LOWG " . $metartime . "}\n";
|
||||
print $remote "widget_set metar temp 1 2 {Temp " .$c_temp. "C (" .$c_dew. "C Dew)}\n";
|
||||
print $remote "widget_set metar wind 1 3 {Wind " .$wind_dir_eng. "G, " .$wind_mph. "mph}\n";
|
||||
print $remote "widget_set metar title {Weather $site_code $metartime}\n";
|
||||
print $remote "widget_set metar temp 1 2 {Temp ${c_temp}C (${c_dew}C Dew)}\n";
|
||||
print $remote "widget_set metar wind 1 3 {Wind ${wind_dir_eng}, ${wind_mph}mph}\n";
|
||||
print $remote "widget_set metar cloud 1 4 {Sky " . join(',', @{$m->{sky}}) . "}\n";
|
||||
# print "The temperature at $site_code is $c_temp C as of $time.\n";
|
||||
# print "The wind blows to $wind_dir_eng, speed $wind_mph mph\n";
|
||||
@@ -150,13 +132,12 @@ while (1==1) {
|
||||
} # end else
|
||||
# eat all input from LCDd
|
||||
while(defined($input = <$remote>)) {
|
||||
if ( $input =~ /^success$/ ) next;
|
||||
next if ( $input =~ /^success$/ );
|
||||
#print $input;
|
||||
}
|
||||
print "Sleeping 15 minutes.\n";
|
||||
sleep 900;
|
||||
}
|
||||
}
|
||||
|
||||
close($remote);
|
||||
exit;
|
||||
|
||||
Reference in New Issue
Block a user