if ( ! exists $stored->{$n} ) {
warn "# $uid missing $n\n";
push @refresh, $n;
- } elsif ( $vendor->{$n} ne $stored->{$n} ) {
- $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } )
- unless $tried->{$uid}->{$n}->{set}++;
+ } elsif ( $vendor->{$n} ne $stored->{$n}
+ && ( ! $tried->{$uid}->{$n}->{set} || $tried->{$uid}->{$n}->{set} ne $vendor->{$n} )
+ ) {
+ $queue->enqueue( 'SetParameterValues', { $n => $vendor->{$n} } );
+ $queue->enqueue( 'GetParameterValues', [ $n ] ); # refresh after change
+ push @refresh, $n;
+ $tried->{$uid}->{$n}->{set} = $vendor->{$n};
warn "# set $uid $n $stored->{$n} -> $vendor->{$n}\n";
+ } elsif ( $tried->{$uid}->{$n}->{set} eq $vendor->{$n} && $vendor->{$n} ne $stored->{$n} ) {
+ warn "ERROR $uid $n $stored->{$n} != $vendor->{$n}\n";
} else {
- warn "# ok $uid $n\n";
+ warn "# ok $uid $n = $stored->{$n}\n";
}
}
- if ( @refresh ) {
- $queue->enqueue( 'GetParameterValues', [ @refresh ] );
- warn "vendor_hook $uid SetParameterValues ", dump( @refresh );
- return ( 'GetParameterValues', [ @refresh ] );
- }
+ return ( 'GetParameterValues', [ @refresh ] ) if @refresh;
warn "# tried ",dump $tried;