Skip to content

Commit 282be70

Browse files
committed
Not writing the MediaInput cluster through RPC
1 parent a2e9ade commit 282be70

File tree

2 files changed

+0
-88
lines changed

2 files changed

+0
-88
lines changed

examples/common/pigweed/rpc_services/Attributes.h

-63
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222
#include "pigweed/rpc_services/internal/StatusUtils.h"
2323

2424
#include <app-common/zap-generated/attribute-type.h>
25-
#include <app/AttributeAccessInterfaceRegistry.h>
2625
#include <app/InteractionModelEngine.h>
2726
#include <app/MessageDef/AttributeReportIBs.h>
28-
#include <app/reporting/reporting.h>
2927
#include <app/util/attribute-storage.h>
3028
#include <app/util/attribute-table.h>
3129
#include <app/util/ember-compatibility-functions.h>
@@ -44,99 +42,38 @@ class Attributes : public pw_rpc::nanopb::Attributes::Service<Attributes>
4442
::pw::Status Write(const chip_rpc_AttributeWrite & request, pw_protobuf_Empty & response)
4543
{
4644
const void * data;
47-
size_t data_len = 0;
4845
DeviceLayer::StackLock lock;
4946

5047
switch (request.data.which_data)
5148
{
5249
case chip_rpc_AttributeData_data_bool_tag:
5350
data = &request.data.data.data_bool;
54-
data_len = sizeof(request.data.data.data_bool);
5551
break;
5652
case chip_rpc_AttributeData_data_uint8_tag:
5753
data = &request.data.data.data_uint8;
58-
data_len = sizeof(request.data.data.data_uint8);
5954
break;
6055
case chip_rpc_AttributeData_data_uint16_tag:
6156
data = &request.data.data.data_uint16;
62-
data_len = sizeof(request.data.data.data_uint16);
6357
break;
6458
case chip_rpc_AttributeData_data_uint32_tag:
6559
data = &request.data.data.data_uint32;
66-
data_len = sizeof(request.data.data.data_uint32);
6760
break;
6861
case chip_rpc_AttributeData_data_int8_tag:
6962
data = &request.data.data.data_int8;
70-
data_len = sizeof(request.data.data.data_int8);
7163
break;
7264
case chip_rpc_AttributeData_data_int16_tag:
7365
data = &request.data.data.data_int16;
74-
data_len = sizeof(request.data.data.data_int16);
7566
break;
7667
case chip_rpc_AttributeData_data_int32_tag:
7768
data = &request.data.data.data_int32;
78-
data_len = sizeof(request.data.data.data_int32);
7969
break;
8070
case chip_rpc_AttributeData_data_bytes_tag:
8171
data = &request.data.data.data_bytes;
82-
data_len = sizeof(request.data.data.data_bytes);
8372
break;
8473
default:
8574
return pw::Status::InvalidArgument();
8675
}
8776

88-
#if 1 // Refering Duplicate WriteSingleClusterData to calling AttributeInterface when available
89-
if (data_len == 0) {
90-
ChipLogError(Zcl, "Invalid writing to PW RPC with data length: 0");
91-
return pw::Status::InvalidArgument();
92-
}
93-
if (auto * attrOverride = chip::app::GetAttributeAccessOverride(request.metadata.endpoint, request.metadata.cluster))
94-
{
95-
Access::SubjectDescriptor aSubjectDescriptor{ .authMode = chip::Access::AuthMode::kPase };
96-
app::ConcreteDataAttributePath aPath(request.metadata.endpoint, request.metadata.cluster, request.metadata.attribute_id);
97-
98-
uint8_t tlvBuffer[128] = { 0 };
99-
uint8_t value = *(static_cast<const uint8_t *>(data));
100-
101-
TLV::TLVReader aReader;
102-
103-
TLV::TLVType outerContainerType;
104-
TLV::TLVWriter writer;
105-
writer.Init(tlvBuffer);
106-
writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, outerContainerType);
107-
writer.Put(TLV::AnonymousTag(), value);
108-
writer.EndContainer(outerContainerType);
109-
writer.Finalize();
110-
111-
aReader.Init(tlvBuffer);
112-
app::AttributeValueDecoder valueDecoder(aReader, aSubjectDescriptor);
113-
114-
#if 1 // Test Decode
115-
app::DataModel::Nullable<uint8_t> nullableValue;
116-
117-
CHIP_ERROR err = valueDecoder.Decode(nullableValue);
118-
if (CHIP_NO_ERROR != err) {
119-
ChipLogError(Zcl, "Invalid writing to PW RPC due to data decoding failed");
120-
return pw::Status::InvalidArgument();
121-
}
122-
123-
if (nullableValue.IsNull()) {
124-
ChipLogError(Zcl, "Invalid writing to PW RPC with null data");
125-
return pw::Status::InvalidArgument();
126-
}
127-
128-
ChipLogError(Zcl, "Writing to PW RPC with data: %u", nullableValue.Value());
129-
#endif
130-
131-
PW_TRY(ChipErrorToPwStatus(attrOverride->Write(aPath, valueDecoder)));
132-
133-
if (valueDecoder.TriedDecode()) // TBD
134-
{
135-
MatterReportingAttributeChangeCallback(aPath);
136-
return pw::OkStatus();
137-
}
138-
}
139-
#endif
14077
RETURN_STATUS_IF_NOT_OK(
14178
emberAfWriteAttribute(request.metadata.endpoint, request.metadata.cluster, request.metadata.attribute_id,
14279
const_cast<uint8_t *>(static_cast<const uint8_t *>(data)), request.metadata.type));

src/app/clusters/media-input-server/media-input-server.cpp

-25
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ class MediaInputAttrAccess : public app::AttributeAccessInterface
126126
MediaInputAttrAccess() : app::AttributeAccessInterface(Optional<EndpointId>::Missing(), chip::app::Clusters::MediaInput::Id) {}
127127

128128
CHIP_ERROR Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) override;
129-
CHIP_ERROR Write(const app::ConcreteDataAttributePath & aPath, app::AttributeValueDecoder & aDecoder) override;
130129

131130
private:
132131
CHIP_ERROR ReadInputListAttribute(app::AttributeValueEncoder & aEncoder, Delegate * delegate);
@@ -166,30 +165,6 @@ CHIP_ERROR MediaInputAttrAccess::Read(const app::ConcreteReadAttributePath & aPa
166165
return CHIP_NO_ERROR;
167166
}
168167

169-
CHIP_ERROR WriteCurrentInput(EndpointId endpoint, uint8_t newInput)
170-
{
171-
Delegate * delegate = GetDelegate(endpoint);
172-
VerifyOrReturnError(!isDelegateNull(delegate, endpoint), CHIP_ERROR_INTERNAL);
173-
174-
return delegate->HandleSetCurrentInput(newInput) ? CHIP_NO_ERROR : CHIP_ERROR_INTERNAL;
175-
}
176-
177-
CHIP_ERROR MediaInputAttrAccess::Write(const app::ConcreteDataAttributePath & aPath, app::AttributeValueDecoder & aDecoder)
178-
{
179-
app::DataModel::Nullable<uint8_t> nullableValue;
180-
ReturnErrorOnFailure(aDecoder.Decode(nullableValue));
181-
VerifyOrReturnError(!nullableValue.IsNull(), CHIP_ERROR_INVALID_ARGUMENT);
182-
183-
switch (aPath.mAttributeId)
184-
{
185-
case app::Clusters::MediaInput::Attributes::CurrentInput::Id:
186-
return WriteCurrentInput(aPath.mEndpointId, nullableValue.Value());
187-
}
188-
189-
ChipLogError(Zcl, "Unsupport MediaInput cluster attribute write %u", aPath.mAttributeId);
190-
return CHIP_ERROR_INTERNAL;
191-
}
192-
193168
CHIP_ERROR MediaInputAttrAccess::ReadInputListAttribute(app::AttributeValueEncoder & aEncoder, Delegate * delegate)
194169
{
195170
return delegate->HandleGetInputList(aEncoder);

0 commit comments

Comments
 (0)