9 use Data::Dump qw/dump/;
13 CWMP::Vendor - implement vendor specific logic into ACS server
20 my ( $self, $store, $uid, $queue ) = @_;
22 my $stored = $store->get_state( $uid );
24 return ( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] )
25 if ! defined $stored->{ParameterInfo};
29 keys %{ $stored->{ParameterInfo} }
33 warn "# GetParameterNames ", dump( @params );
34 my $first = shift @params;
35 delete $stored->{ParameterInfo}->{$first};
38 $queue->enqueue( 'GetParameterNames', [ $_, 1 ] );
39 delete $stored->{ParameterInfo}->{ $_ };
41 $store->set_state( $uid, $stored );
43 return ( 'GetParameterNames', [ $first, 1 ] );
48 grep { ! exists $stored->{Parameter}->{$_} }
49 grep { ! m/\.$/ && ! m/NumberOfEntries/ }
50 keys %{ $stored->{ParameterInfo} }
53 warn "# GetParameterValues ", dump( @params );
54 my $first = shift @params;
56 my @chunk = splice @params, 0, 16; # FIXME 16 seems to be max
57 $queue->enqueue( 'GetParameterValues', [ @chunk ] );
60 return ( 'GetParameterValues', [ $first ] );
70 my ( $self, $store, $uid, $queue ) = @_;
72 my $stored = $store->get_state( $uid );
76 my $vendor = YAML::LoadFile 'vendor.yaml';
77 $vendor = $vendor->{Parameter} || die "no Parameter in vendor.yaml";
78 $stored = $stored->{Parameter} || warn "no Parameter in stored ", dump($stored);
80 warn "# vendor.yaml ",dump $vendor;
82 foreach my $n ( keys %$vendor ) {
83 if ( ! exists $stored->{$n} ) {
84 warn "# $uid missing $n\n";
86 } elsif ( $vendor->{$n} ne $stored->{$n} ) {
87 $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } )
88 unless $tried->{$uid}->{$n}->{set}++;
89 warn "# set $uid $n $stored->{$n} -> $vendor->{$n}\n";
91 warn "# ok $uid $n\n";
96 $queue->enqueue( 'GetParameterValues', [ @refresh ] );
97 warn "vendor_hook $uid SetParameterValues ", dump( @refresh );
98 return ( 'GetParameterValues', [ @refresh ] );
101 warn "# tried ",dump $tried;