From a8fad5b26503a763e41e3ba2cfdaadb21675f65e Mon Sep 17 00:00:00 2001
From: Karai Csaba
Date: Sat, 7 May 2016 10:29:44 +0200
Subject: [PATCH] Refresh form data
---
examples/dummy-web-server.pl | 37 ++++++++++++++++++++++++++++++------
examples/web-server/LED.html | 3 +++
html/userpage.js | 32 +++++++++++++++++++++++++++++++
3 files changed, 66 insertions(+), 6 deletions(-)
diff --git a/examples/dummy-web-server.pl b/examples/dummy-web-server.pl
index 5b2a6a0..530c199 100755
--- a/examples/dummy-web-server.pl
+++ b/examples/dummy-web-server.pl
@@ -8,8 +8,10 @@ use IO::Socket::INET;
use Data::Dumper;
use File::Basename;
-my $ledLabel : shared = "LED is turned off";
-my $ledFreq : shared = 10;
+my $ledLabel : shared = "LED is turned off";
+my $ledFreq : shared = 10;
+my @ledHistory : shared;
+my $startTime : shared = time;
# auto-flush on socket
@@ -20,7 +22,7 @@ my $server = new IO::Socket::INET (
LocalHost => '0.0.0.0',
LocalPort => '7777',
Proto => 'tcp',
- Listen => 5,
+ Listen => 25,
Reuse => 1
);
die "cannot create socket $!\n" unless $server;
@@ -67,7 +69,7 @@ while ($client = $server->accept())
if( $httpResp->{done} )
{
# notify client that response has been sent
- #shutdown($client, 1);
+ shutdown($client, 1);
}
} );
close $client; # Only meaningful in the client
@@ -351,6 +353,24 @@ sub readUserPages
return $add;
}
+sub led_add_history
+{
+ my ($msg) = @_;
+ pop @ledHistory if @ledHistory >= 10;
+
+ my $elapsed = time - $startTime;
+ my $secs = $elapsed % 60;
+ my $mins = int($elapsed / 60) % 60;
+ my $hours = int($elapsed / 3600) % 24;
+
+ $secs = "0$secs" if length($secs) == 1;
+ $mins = "0$mins" if length($mins) == 1;
+ $hours = "0$hours" if length($hours) == 1;
+
+ $msg = "$hours:$mins:$secs $msg";
+ unshift @ledHistory, $msg;
+}
+
sub process_user_comm_led
{
my ($http) = @_;
@@ -363,14 +383,17 @@ sub process_user_comm_led
if($btn eq "btn_on" )
{
$ledLabel = "LED is turned on";
+ led_add_history("Set LED on");
}
elsif($btn eq "btn_blink" )
{
$ledLabel = "LED is blinking";
+ led_add_history("Set LED blinking");
}
elsif($btn eq "btn_off" )
{
$ledLabel = "LED is turned off";
+ led_add_history("Set LED off");
}
}
elsif( $http->{urlArgs}{reason} eq "submit" )
@@ -378,6 +401,7 @@ sub process_user_comm_led
if( exists $http->{postArgs}{frequency} )
{
$ledFreq = $http->{postArgs}{frequency};
+ led_add_history("Set LED frequency to $ledFreq Hz");
}
return simple_response(204, "OK");
}
@@ -385,8 +409,9 @@ sub process_user_comm_led
{
$loadData = ', "frequency": ' . $ledFreq;
}
-
- my $r = '{"text": "' . $ledLabel . '"' . $loadData . '}';
+
+ my $list = ", \"led_history\": [" . join(", ", map { "\"$_\"" } @ledHistory ) . "]";
+ my $r = '{"text": "' . $ledLabel . '"' . $list . $loadData . '}';
return content_response($r, $http->{url});
}
diff --git a/examples/web-server/LED.html b/examples/web-server/LED.html
index 7a98b1b..0ff8f44 100644
--- a/examples/web-server/LED.html
+++ b/examples/web-server/LED.html
@@ -16,5 +16,8 @@
+
+
+