diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 493c83a..43a588c 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -2618,3 +2618,56 @@
 	return &singleValResp
 
 }
+
+func (dh *DeviceHandler) getRxPower(ctx context.Context, rxPowerRequest *extension.GetRxPowerRequest) *extension.SingleGetValueResponse {
+
+	Onu := oop.Onu{IntfId: rxPowerRequest.IntfId, OnuId: rxPowerRequest.OnuId}
+	rxPower, err := dh.Client.GetPonRxPower(ctx, &Onu)
+	if err != nil {
+		logger.Errorw(ctx, "error-while-getting-rx-power", log.Fields{"Onu": Onu, "err": err})
+		return generateSingleGetValueErrorResponse(err)
+	}
+	return &extension.SingleGetValueResponse{
+		Response: &extension.GetValueResponse{
+			Status: extension.GetValueResponse_OK,
+			Response: &extension.GetValueResponse_RxPower{
+				RxPower: &extension.GetRxPowerResponse{
+					IntfId:     rxPowerRequest.IntfId,
+					OnuId:      rxPowerRequest.OnuId,
+					Status:     rxPower.Status,
+					FailReason: rxPower.FailReason.String(),
+					RxPower:    rxPower.RxPowerMeanDbm,
+				},
+			},
+		},
+	}
+}
+
+func generateSingleGetValueErrorResponse(err error) *extension.SingleGetValueResponse {
+	errResp := func(status extension.GetValueResponse_Status,
+		reason extension.GetValueResponse_ErrorReason) *extension.SingleGetValueResponse {
+		return &extension.SingleGetValueResponse{
+			Response: &extension.GetValueResponse{
+				Status:    status,
+				ErrReason: reason,
+			},
+		}
+	}
+
+	if err != nil {
+		if e, ok := status.FromError(err); ok {
+			switch e.Code() {
+			case codes.Internal:
+				return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INTERNAL_ERROR)
+			case codes.DeadlineExceeded:
+				return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_TIMEOUT)
+			case codes.Unimplemented:
+				return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_UNSUPPORTED)
+			case codes.NotFound:
+				return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_INVALID_DEVICE)
+			}
+		}
+	}
+
+	return errResp(extension.GetValueResponse_ERROR, extension.GetValueResponse_REASON_UNDEFINED)
+}
