X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FCWMP%2FMethods.pm;h=ab77c99929a0426bcc2cd10b64dd9a5be9f60867;hb=e693a253b860bfaba1373b19d470cbf84210c8c9;hp=e50b9232881d8c0769ed7fe7a7f9a2b0ec7e12f2;hpb=172db50375bdd0143d5b4de649606d90057317ca;p=perl-cwmp.git diff --git a/lib/CWMP/Methods.pm b/lib/CWMP/Methods.pm index e50b923..ab77c99 100644 --- a/lib/CWMP/Methods.pm +++ b/lib/CWMP/Methods.pm @@ -84,7 +84,56 @@ sub GetRPCMethods { =head2 SetParameterValues -B + $method->SetParameterValues( $state, + param1 => 'value1', + param2 => 'value2', + ... + ); + +It doesn't support base64 encoding of values yet. + +To preserve data, it does support repeatable parametar names. +Behaviour on this is not defined in protocol. + +=cut + +sub SetParameterValues { + my $self = shift; + my $state = shift; + + confess "SetParameterValues needs parameters" unless @_; + + my @params = @_; + + my ( @names, @values ); + + while ( @_ ) { + push @names, shift @_; + push @values, shift @_; + } + + confess "can't convert params ", dump( @params ), " to name/value pairs" unless $#names == $#values; + + warn "# SetParameterValues", dump( @params ), "\n" if $self->debug; + + $self->xml( $state, sub { + my ( $X, $state ) = @_; + + $X->SetParameterValues( $cwmp, + $X->ParameterList( $cwmp, + $X->ParameterNames( $cwmp, + map { + $X->ParameterValueStruct( $cwmp, + $X->Name( $cwmp, $_ ), + $X->Value( $cwmp, shift @values ) + ) + } @names + ) + ) + ); + }); +} + =head2 GetParameterValues @@ -96,7 +145,7 @@ sub GetParameterValues { my $self = shift; my $state = shift; my @ParameterNames = @_; - confess "need ParameterNames" unless @ParameterNames; + confess "GetParameterValues need ParameterNames" unless @ParameterNames; warn "# GetParameterValues", dump( @ParameterNames ), "\n" if $self->debug; $self->xml( $state, sub {