@@ -22,6 +22,7 @@ import (
2222
2323 "github.com/plgd-dev/client-application/pb"
2424 "github.com/plgd-dev/client-application/pkg/rawcodec"
25+ pkgCoap "github.com/plgd-dev/device/v2/pkg/net/coap"
2526 "github.com/plgd-dev/device/v2/schema"
2627 plgdDevice "github.com/plgd-dev/device/v2/schema/device"
2728 "github.com/plgd-dev/go-coap/v3/message"
@@ -32,15 +33,19 @@ import (
3233 "google.golang.org/grpc/codes"
3334)
3435
35- func getResourceAndRefreshCache (ctx context.Context , dev * device , link schema.ResourceLink ) (* commands.Content , error ) {
36+ func getResourceAndRefreshCache (ctx context.Context , dev * device , link schema.ResourceLink , resourceInterface string ) (* commands.Content , error ) {
3637 var response []byte
37- err := dev .GetResourceWithCodec (ctx , link , rawcodec .GetRawCodec (message .AppOcfCbor ), & response )
38+ var options []func (message.Options ) message.Options
39+ if resourceInterface != "" {
40+ options = append (options , pkgCoap .WithInterface (resourceInterface ))
41+ }
42+ err := dev .GetResourceWithCodec (ctx , link , rawcodec .GetRawCodec (message .AppOcfCbor ), & response , options ... )
3843 if err != nil {
3944 return nil , convErrToGrpcStatus (codes .Unavailable , fmt .Errorf ("cannot get resource %v for device %v: %w" , link .Href , dev .ID , err )).Err ()
4045 }
4146 content := responseToData (response )
4247 // we update device resource body only for device resource
43- if strings .Contains (link .ResourceTypes , plgdDevice .ResourceType ) {
48+ if strings .Contains (link .ResourceTypes , plgdDevice .ResourceType ) && resourceInterface == "" {
4449 dev .updateDeviceResourceBody (content )
4550 }
4651 return content , nil
@@ -70,7 +75,7 @@ func (s *ClientApplicationServer) GetResource(ctx context.Context, req *pb.GetRe
7075 if err != nil {
7176 return nil , err
7277 }
73- content , err := getResourceAndRefreshCache (ctx , dev , link )
78+ content , err := getResourceAndRefreshCache (ctx , dev , link , req . GetResourceInterface () )
7479 if err != nil {
7580 return nil , err
7681 }
0 commit comments