Skip to content

Commit

Permalink
Insteon: Add Is Deaf Routine for Battery Devices
Browse files Browse the repository at this point in the history
Closed hollie#279
  • Loading branch information
krkeegan committed Oct 12, 2013
1 parent a976ef4 commit 8e1602c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
8 changes: 4 additions & 4 deletions lib/Insteon/AllLinkDatabase.pm
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,7 @@ sub delete_orphan_links
# first, make sure that the health of ALDB is ok
if ($self->health ne 'good')
{
if ($$self{device}->isa('Insteon::RemoteLinc') or $$self{device}->isa('Insteon::MotionSensor'))
if (!$self->is_deaf)
{
&::print_log("[Insteon::AllLinkDatabase] Delete orphan links: ignoring link from deaf device: $selfname");

Expand Down Expand Up @@ -588,7 +588,7 @@ sub delete_orphan_links
}
else # is a non-PLM device
{
if ($linked_device->isa('Insteon::RemoteLinc') or $linked_device->isa('Insteon::MotionSensor'))
if (!$self->is_deaf)
{
&::print_log("[Insteon::AllLinkDatabase] Delete orphan links: ignoring link from $selfname to 'deaf' device: " . $linked_device->get_object_name);
}
Expand Down Expand Up @@ -754,7 +754,7 @@ sub delete_orphan_links
{
$member = $member->get_root;
}
if ($member->isa('Insteon::RemoteLinc') or $member->isa('Insteon::MotionSensor'))
if (!$self->is_deaf)
{
&::print_log("[Insteon::AllLinkDatabase] ignoring link from " . $link->get_object_name . " to " .
$member->get_object_name);
Expand Down Expand Up @@ -2830,7 +2830,7 @@ sub delete_orphan_links
}
if ($member->isa('Insteon::BaseDevice'))
{
if ($member->isa('Insteon::RemoteLinc') or $member->isa('Insteon::MotionSensor'))
if (!$self->is_deaf)
{
&::print_log("[Insteon::ALDB_PLM] ignoring link from PLM to " .
$member->get_object_name);
Expand Down
18 changes: 18 additions & 0 deletions lib/Insteon/BaseInsteon.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1260,6 +1260,7 @@ sub new
$$self{hops_left_count} = 0;
$$self{max_hops_count} = 0;
$$self{outgoing_hop_count} = 0;
$$self{is_deaf} = 0;

return $self;
}
Expand Down Expand Up @@ -1308,6 +1309,23 @@ sub set_receive
$self->SUPER::set_receive($p_state, $p_setby, $p_response);
}

=item C<is_deaf()>
Returns true if the device must be awake in order to respond to messages. Most
devices are not deaf, currently devices that are deaf are battery operated
devices such as the Motion Sensor, RemoteLinc and TriggerLinc.
At the BaseObject level all devices are defined as deaf. Objects which inherit
BaseObject should redefine is_deaf as necessary.
=cut

sub is_deaf
{
my ($self) = @_;
return $$self{is_deaf};
}

=item C<is_controller()>
Returns true if the device is a controller.
Expand Down
1 change: 1 addition & 0 deletions lib/Insteon/Controller.pm
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ sub new
$$self{queue_timer} = new Timer;
}
bless $self,$class;
$$self{is_deaf} = 1;
return $self;
}

Expand Down
2 changes: 2 additions & 0 deletions lib/Insteon/Security.pm
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ sub new
$$self{queue_timer} = new Timer;
}
bless $self,$class;
$$self{is_deaf} = 1;
return $self;
}

Expand Down Expand Up @@ -775,6 +776,7 @@ sub new
my $self = new Insteon::BaseDevice($p_deviceid,$p_interface);
$$self{message_types} = \%message_types;
bless $self,$class;
$$self{is_deaf} = 1;
return $self;
}

Expand Down

0 comments on commit 8e1602c

Please sign in to comment.