brmd::Door: Introduce event status_override

This commit is contained in:
Petr Baudis 2011-05-07 02:07:52 +02:00
parent 6aaf5051bb
commit 59cc7c1489

View file

@ -8,7 +8,6 @@ our $channel = "#brmlab";
our $streamurl = "http://nat.brmlab.cz:8090/brmstream.asf"; our $streamurl = "http://nat.brmlab.cz:8090/brmstream.asf";
our $device = $ARGV[0]; $device ||= "/dev/ttyUSB0"; our $device = $ARGV[0]; $device ||= "/dev/ttyUSB0";
our ($status, $record, $topic) = (0, 0, 'BRMLAB OPEN'); our ($status, $record, $topic) = (0, 0, 'BRMLAB OPEN');
our $serial;
my $irc = brmd::IRC->new(); my $irc = brmd::IRC->new();
my $web = brmd::WWW->new(); my $web = brmd::WWW->new();
@ -61,9 +60,7 @@ sub status_update {
my $st = status_str(); my $st = status_str();
if ($manual) { if ($manual) {
$serial->put('s'.$newstatus); $poe_kernel->post($door, 'status_override', $status);
$serial->flush();
$poe_kernel->post($irc, 'notify_manual_update', 'brmstatus', $nick ); $poe_kernel->post($irc, 'notify_manual_update', 'brmstatus', $nick );
} }
@ -100,7 +97,8 @@ sub new {
POE::Session->create( POE::Session->create(
object_states => [ object_states => [
$self => [ qw(_start _default register $self => [ qw(_start _default register
serial_input serial_error) ], serial_input serial_error
status_override) ],
], ],
); );
@ -110,7 +108,7 @@ sub new {
sub _start { sub _start {
$_[KERNEL]->alias_set("$_[OBJECT]"); $_[KERNEL]->alias_set("$_[OBJECT]");
$serial = $_[HEAP]->{serial} = POE::Wheel::ReadWrite->new( $_[HEAP]->{serial} = POE::Wheel::ReadWrite->new(
Handle => serial_open($device), Handle => serial_open($device),
Filter => POE::Filter::Line->new( Filter => POE::Filter::Line->new(
InputLiteral => "\x0A", # Received line endings. InputLiteral => "\x0A", # Received line endings.
@ -190,6 +188,14 @@ sub serial_error {
print "bye!\n"; print "bye!\n";
} }
sub status_override {
my ($heap, $status) = @_[HEAP, ARG0];
my $serial = $heap->{serial};
$serial->put('s'.$status);
$serial->flush();
}
## Web interface ## Web interface