return $self;
}
+my $vendor_data = {
+ 'InternetGatewayDevice.ManagementServer.PeriodicInformEnable' => 1,
+ 'InternetGatewayDevice.ManagementServer.PeriodicInformInterval' => 17,
+ 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision',
+};
+
+our $set_tried;
+
+sub vendor_hook {
+ my ( $self, $uid, $stored, $queue ) = @_;
+ warn "# vendor_hook $uid ",dump($stored) if $self->debug > 2;
+
+ my @refresh;
+
+ foreach my $n ( keys %$vendor_data ) {
+ if ( defined $stored->{$n} && $vendor_data->{$n} ne $stored->{$n} ) {
+ next if $set_tried->{$uid}->{$n}++;
+ push @refresh, $n;
+ $queue->enqueue( 'SetParameterValues', { $n => $vendor_data->{$n} } );
+ }
+ }
+
+ if ( @refresh ) {
+ $queue->enqueue( 'GetParameterValues', [ @refresh ] );
+ warn "vendor_hook $uid SetParameterValues ", dump( @refresh );
+ return $self->dispatch( 'GetParameterValues', [ @refresh ] );
+ }
+
+ return;
+}
+
=head2 process_request
One request from client/response from server cycle. Call multiple times to
if ( ! defined $stored->{ParameterInfo} ) {
$xml = $self->dispatch( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] );
} else {
- my @params = grep { m/\.$/ } keys %{ $stored->{ParameterInfo} };
+ my @params =
+ grep { m/\.$/ && ! m/\.\d+\.$/ }
+ keys %{ $stored->{ParameterInfo} }
+ ;
if ( @params ) {
warn "# GetParameterNames ", dump( @params );
my $first = shift @params;
$queue->enqueue( 'GetParameterValues', [ @chunk ] );
}
+ } elsif ( $xml = $self->vendor_hook( $uid, $stored, $queue ) ) {
+
+ warn "vendor_hook triggered\n";
+
} else {
warn ">>> empty response $to_uid";