- warn __PACKAGE__, "->add_triggers\n";
-
-CWMP::Request->add_trigger( name => 'Fault', callback => sub {
- my ( $self, $state ) = @_;
- warn "## Fault trigger state = ",dump( $self, $state );
- die "can't map fault to serial!" unless $last_serial;
- warn "ERROR: got Fault and ingoring $last_ip $last_serial\n";
- $cpe_faulty->{$last_serial}++;
-});
-
-CWMP::Request->add_trigger( name => 'Inform', callback => sub {
- my ( $self, $state ) = @_;
-
- my ( $serial, $ip ) = state2serial( $state );
-
- if ( $cpe_faulty->{$serial} ) {
- warn "## Inform trigger from $ip $serial -- IGNORED\n"; # if $debug;
- return;
+ foreach ( @params ) {
+ $queue->enqueue( 'GetParameterNames', [ $_, 1 ] );
+ delete $stored->{ParameterInfo}->{ $_ };
+ }
+ $store->set_state( $uid, $stored );
+
+ return ( 'GetParameterNames', [ $first, 1 ] );
+
+ } else {
+
+ my @params = sort
+ grep { ! exists $stored->{Parameter}->{$_} }
+ grep { ! m/\.$/ && ! m/NumberOfEntries/ }
+ keys %{ $stored->{ParameterInfo} }
+ ;
+ if ( @params ) {
+ warn "# GetParameterValues ", dump( @params );
+ my $first = shift @params;
+ while ( @params ) {
+ my @chunk = splice @params, 0, 16; # FIXME 16 seems to be max
+ $queue->enqueue( 'GetParameterValues', [ @chunk ] );
+ }
+
+ return ( 'GetParameterValues', [ $first ] );
+ }