Skip to content

Commit 339fa18

Browse files
committed
Add write support for ImageRotation, ImageFlipHorizontal and ImageFlipVertical attributes.
1 parent 31c6f24 commit 339fa18

File tree

2 files changed

+40
-18
lines changed

2 files changed

+40
-18
lines changed

src/app/clusters/camera-av-stream-management-server/camera-av-stream-management-server.cpp

+35-15
Original file line numberDiff line numberDiff line change
@@ -509,17 +509,20 @@ CHIP_ERROR CameraAVStreamMgmtServer::Read(const ConcreteReadAttributePath & aPat
509509
ReturnErrorOnFailure(aEncoder.Encode(mMicrophoneAGCEnabled));
510510
break;
511511
case ImageRotation::Id:
512-
VerifyOrReturnError(HasFeature(Feature::kImageControl), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
512+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageRotation),
513+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
513514
ChipLogError(Zcl, "CameraAVStreamMgmt: can not get ImageRotation, feature is not supported"));
514515
ReturnErrorOnFailure(aEncoder.Encode(mImageRotation));
515516
break;
516517
case ImageFlipHorizontal::Id:
517-
VerifyOrReturnError(HasFeature(Feature::kImageControl), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
518+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageFlipHorizontal),
519+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
518520
ChipLogError(Zcl, "CameraAVStreamMgmt: can not get ImageFlipHorizontal, feature is not supported"));
519521
ReturnErrorOnFailure(aEncoder.Encode(mImageFlipHorizontal));
520522
break;
521523
case ImageFlipVertical::Id:
522-
VerifyOrReturnError(HasFeature(Feature::kImageControl), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
524+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageFlipVertical),
525+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
523526
ChipLogError(Zcl, "CameraAVStreamMgmt: can not get ImageFlipHorizontal, feature is not supported"));
524527
ReturnErrorOnFailure(aEncoder.Encode(mImageFlipVertical));
525528
break;
@@ -569,15 +572,6 @@ CHIP_ERROR CameraAVStreamMgmtServer::Write(const ConcreteDataAttributePath & aPa
569572
ReturnErrorOnFailure(SetHDRModeEnabled(hdrModeEnabled));
570573
return CHIP_NO_ERROR;
571574
}
572-
case RankedVideoStreamPrioritiesList::Id: { // TODO
573-
VerifyOrReturnError(
574-
HasFeature(Feature::kVideo), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
575-
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set RankedVideoStreamPrioritiesList, feature is not supported"));
576-
uint8_t newValue;
577-
ReturnErrorOnFailure(aDecoder.Decode(newValue));
578-
ReturnErrorOnFailure(mDelegate.SetRankedVideoStreamPrioritiesList(newValue));
579-
return CHIP_NO_ERROR;
580-
}
581575
case SoftRecordingPrivacyModeEnabled::Id: {
582576
VerifyOrReturnError(
583577
HasFeature(Feature::kPrivacy), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
@@ -621,9 +615,8 @@ CHIP_ERROR CameraAVStreamMgmtServer::Write(const ConcreteDataAttributePath & aPa
621615
return CHIP_NO_ERROR;
622616
}
623617
case Viewport::Id: {
624-
VerifyOrReturnError(
625-
HasFeature(Feature::kVideo), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
626-
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set RankedVideoStreamPrioritiesList, feature is not supported"));
618+
VerifyOrReturnError(HasFeature(Feature::kVideo), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
619+
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set Viewport, feature is not supported"));
627620
ViewportStruct viewPort;
628621
ReturnErrorOnFailure(aDecoder.Decode(viewPort));
629622
ReturnErrorOnFailure(SetViewport(viewPort));
@@ -670,6 +663,33 @@ CHIP_ERROR CameraAVStreamMgmtServer::Write(const ConcreteDataAttributePath & aPa
670663
ReturnErrorOnFailure(SetMicrophoneAGCEnabled(micAGCEnabled));
671664
return CHIP_NO_ERROR;
672665
}
666+
case ImageRotation::Id: {
667+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageRotation),
668+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
669+
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set ImageRotation, feature is not supported"));
670+
uint16_t imageRotation;
671+
ReturnErrorOnFailure(aDecoder.Decode(imageRotation));
672+
ReturnErrorOnFailure(SetImageRotation(imageRotation));
673+
return CHIP_NO_ERROR;
674+
}
675+
case ImageFlipHorizontal::Id: {
676+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageFlipHorizontal),
677+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
678+
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set ImageFlipHorizontal, feature is not supported"));
679+
bool imageFlipHorizontal;
680+
ReturnErrorOnFailure(aDecoder.Decode(imageFlipHorizontal));
681+
ReturnErrorOnFailure(SetImageFlipHorizontal(imageFlipHorizontal));
682+
return CHIP_NO_ERROR;
683+
}
684+
case ImageFlipVertical::Id: {
685+
VerifyOrReturnError(HasFeature(Feature::kImageControl) && SupportsOptAttr(OptionalAttributes::kSupportsImageFlipVertical),
686+
CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,
687+
ChipLogError(Zcl, "CameraAVStreamMgmt: can not set ImageFlipVertical, feature is not supported"));
688+
bool imageFlipVertical;
689+
ReturnErrorOnFailure(aDecoder.Decode(imageFlipVertical));
690+
ReturnErrorOnFailure(SetImageFlipVertical(imageFlipVertical));
691+
return CHIP_NO_ERROR;
692+
}
673693
case LocalVideoRecordingEnabled::Id: {
674694
VerifyOrReturnError(
675695
HasFeature(Feature::kVideo) && HasFeature(Feature::kStorage), CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE,

src/app/clusters/camera-av-stream-management-server/camera-av-stream-management-server.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,11 @@ enum class OptionalAttributes : uint32_t
161161
kSupportsNightVision = 0x0004,
162162
kSupportsNightVisionIllum = 0x0008,
163163
kSupportsMicrophoneAGCEnabled = 0x0010,
164-
kSupportsStatusLightEnabled = 0x0020,
165-
kSupportsStatusLightBrightness = 0x0040,
166-
kSupportsDepthSensorStatus = 0x0080,
164+
kSupportsImageRotation = 0x0020,
165+
kSupportsImageFlipHorizontal = 0x0040,
166+
kSupportsImageFlipVertical = 0x0080,
167+
kSupportsStatusLightEnabled = 0x0100,
168+
kSupportsStatusLightBrightness = 0x0200,
167169
};
168170

169171
class CameraAVStreamMgmtServer : public CommandHandlerInterface, public AttributeAccessInterface

0 commit comments

Comments
 (0)