Skip to content

Commit a95af94

Browse files
[Interaction Model]Sync AmberAfStatus to InteractionModel::Status (project-chip#32016)
* Sync AmberAfStatus to InteractionModel::Status * fix comments * fix darwin build * add TODO for enum class * fix Darwin
1 parent dbf3dad commit a95af94

File tree

7 files changed

+9648
-8592
lines changed

7 files changed

+9648
-8592
lines changed

src/app/util/af-enums.h

+48-48
Original file line numberDiff line numberDiff line change
@@ -20,53 +20,53 @@
2020
*/
2121
#pragma once
2222

23+
#include <protocols/interaction_model/StatusCode.h>
2324
#include <stdint.h>
2425

25-
enum EmberAfStatus : uint8_t
26-
{
27-
EMBER_ZCL_STATUS_SUCCESS = 0x00,
28-
EMBER_ZCL_STATUS_FAILURE = 0x01,
29-
EMBER_ZCL_STATUS_INVALID_SUBSCRIPTION = 0x7D,
30-
EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS = 0x7E,
31-
EMBER_ZCL_STATUS_UNSUPPORTED_ENDPOINT = 0x7F,
32-
EMBER_ZCL_STATUS_MALFORMED_COMMAND = 0x80,
33-
EMBER_ZCL_STATUS_UNSUPPORTED_COMMAND = 0x81,
34-
EMBER_ZCL_STATUS_DEPRECATED82 = 0x82,
35-
EMBER_ZCL_STATUS_DEPRECATED83 = 0x83,
36-
EMBER_ZCL_STATUS_DEPRECATED84 = 0x84,
37-
EMBER_ZCL_STATUS_INVALID_COMMAND = 0x85,
38-
EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE = 0x86,
39-
EMBER_ZCL_STATUS_CONSTRAINT_ERROR = 0x87,
40-
EMBER_ZCL_STATUS_UNSUPPORTED_WRITE = 0x88,
41-
EMBER_ZCL_STATUS_RESOURCE_EXHAUSTED = 0x89,
42-
EMBER_ZCL_STATUS_NOT_FOUND = 0x8B,
43-
EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE = 0x8C,
44-
EMBER_ZCL_STATUS_INVALID_DATA_TYPE = 0x8D,
45-
EMBER_ZCL_STATUS_DEPRECATED8E = 0x8E,
46-
EMBER_ZCL_STATUS_UNSUPPORTED_READ = 0x8F,
47-
EMBER_ZCL_STATUS_DEPRECATED90 = 0x90,
48-
EMBER_ZCL_STATUS_DEPRECATED91 = 0x91,
49-
EMBER_ZCL_STATUS_DATA_VERSION_MISMATCH = 0x92,
50-
EMBER_ZCL_STATUS_DEPRECATED93 = 0x93,
51-
EMBER_ZCL_STATUS_TIMEOUT = 0x94,
52-
EMBER_ZCL_STATUS_RESERVED95 = 0x95,
53-
EMBER_ZCL_STATUS_RESERVED96 = 0x96,
54-
EMBER_ZCL_STATUS_RESERVED97 = 0x97,
55-
EMBER_ZCL_STATUS_RESERVED98 = 0x98,
56-
EMBER_ZCL_STATUS_RESERVED99 = 0x99,
57-
EMBER_ZCL_STATUS_RESERVED9A = 0x9A,
58-
EMBER_ZCL_STATUS_BUSY = 0x9C,
59-
EMBER_ZCL_STATUS_DEPRECATEDC0 = 0xC0,
60-
EMBER_ZCL_STATUS_DEPRECATEDC1 = 0xC1,
61-
EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER = 0xC3,
62-
EMBER_ZCL_STATUS_DEPRECATEDC4 = 0xC4,
63-
EMBER_ZCL_STATUS_NO_UPSTREAM_SUBSCRIPTION = 0xC5,
64-
EMBER_ZCL_STATUS_NEEDS_TIMED_INTERACTION = 0xC6,
65-
EMBER_ZCL_STATUS_UNSUPPORTED_EVENT = 0xC7,
66-
EMBER_ZCL_STATUS_PATHS_EXHAUSTED = 0xC8,
67-
EMBER_ZCL_STATUS_TIMED_REQUEST_MISMATCH = 0xC9,
68-
EMBER_ZCL_STATUS_FAILSAFE_REQUIRED = 0xCA,
69-
EMBER_ZCL_STATUS_INVALID_IN_STATE = 0xCB,
70-
EMBER_ZCL_STATUS_NO_COMMAND_RESPONSE = 0xCC,
71-
EMBER_ZCL_STATUS_WRITE_IGNORED = 0xF0, // NOT SPEC COMPLIANT FOR TEST ONLY
72-
};
26+
typedef chip::Protocols::InteractionModel::Status EmberAfStatus;
27+
28+
#define EMBER_ZCL_STATUS_SUCCESS chip::Protocols::InteractionModel::Status::Success
29+
#define EMBER_ZCL_STATUS_FAILURE chip::Protocols::InteractionModel::Status::Failure
30+
#define EMBER_ZCL_STATUS_INVALID_SUBSCRIPTION chip::Protocols::InteractionModel::Status::InvalidSubscription
31+
#define EMBER_ZCL_STATUS_UNSUPPORTED_ACCESS chip::Protocols::InteractionModel::Status::UnsupportedAccess
32+
#define EMBER_ZCL_STATUS_UNSUPPORTED_ENDPOINT chip::Protocols::InteractionModel::Status::UnsupportedEndpoint
33+
#define EMBER_ZCL_STATUS_MALFORMED_COMMAND chip::Protocols::InteractionModel::Status::InvalidAction
34+
#define EMBER_ZCL_STATUS_UNSUPPORTED_COMMAND chip::Protocols::InteractionModel::Status::UnsupportedCommand
35+
#define EMBER_ZCL_STATUS_DEPRECATED82 chip::Protocols::InteractionModel::Status::Deprecated82
36+
#define EMBER_ZCL_STATUS_DEPRECATED83 chip::Protocols::InteractionModel::Status::Deprecated83
37+
#define EMBER_ZCL_STATUS_DEPRECATED84 chip::Protocols::InteractionModel::Status::Deprecated84
38+
#define EMBER_ZCL_STATUS_INVALID_COMMAND chip::Protocols::InteractionModel::Status::InvalidCommand
39+
#define EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE chip::Protocols::InteractionModel::Status::UnsupportedAttribute
40+
#define EMBER_ZCL_STATUS_CONSTRAINT_ERROR chip::Protocols::InteractionModel::Status::ConstraintError
41+
#define EMBER_ZCL_STATUS_UNSUPPORTED_WRITE chip::Protocols::InteractionModel::Status::UnsupportedWrite
42+
#define EMBER_ZCL_STATUS_RESOURCE_EXHAUSTED chip::Protocols::InteractionModel::Status::ResourceExhausted
43+
#define EMBER_ZCL_STATUS_NOT_FOUND chip::Protocols::InteractionModel::Status::NotFound
44+
#define EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE chip::Protocols::InteractionModel::Status::UnreportableAttribute
45+
#define EMBER_ZCL_STATUS_INVALID_DATA_TYPE chip::Protocols::InteractionModel::Status::InvalidDataType
46+
#define EMBER_ZCL_STATUS_DEPRECATED8E chip::Protocols::InteractionModel::Status::Deprecated8e
47+
#define EMBER_ZCL_STATUS_UNSUPPORTED_READ chip::Protocols::InteractionModel::Status::UnsupportedRead
48+
#define EMBER_ZCL_STATUS_DEPRECATED90 chip::Protocols::InteractionModel::Status::Deprecated90
49+
#define EMBER_ZCL_STATUS_DEPRECATED91 chip::Protocols::InteractionModel::Status::Deprecated91
50+
#define EMBER_ZCL_STATUS_DATA_VERSION_MISMATCH chip::Protocols::InteractionModel::Status::DataVersionMismatch
51+
#define EMBER_ZCL_STATUS_DEPRECATED93 chip::Protocols::InteractionModel::Status::Deprecated93
52+
#define EMBER_ZCL_STATUS_TIMEOUT chip::Protocols::InteractionModel::Status::Timeout
53+
#define EMBER_ZCL_STATUS_RESERVED95 chip::Protocols::InteractionModel::Status::Reserved95
54+
#define EMBER_ZCL_STATUS_RESERVED96 chip::Protocols::InteractionModel::Status::Reserved96
55+
#define EMBER_ZCL_STATUS_RESERVED97 chip::Protocols::InteractionModel::Status::Reserved97
56+
#define EMBER_ZCL_STATUS_RESERVED98 chip::Protocols::InteractionModel::Status::Reserved98
57+
#define EMBER_ZCL_STATUS_RESERVED99 chip::Protocols::InteractionModel::Status::Reserved99
58+
#define EMBER_ZCL_STATUS_RESERVED9A chip::Protocols::InteractionModel::Status::Reserved9a
59+
#define EMBER_ZCL_STATUS_BUSY chip::Protocols::InteractionModel::Status::Busy
60+
#define EMBER_ZCL_STATUS_DEPRECATEDC0 chip::Protocols::InteractionModel::Status::Deprecatedc0
61+
#define EMBER_ZCL_STATUS_DEPRECATEDC1 chip::Protocols::InteractionModel::Status::Deprecatedc1
62+
#define EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER chip::Protocols::InteractionModel::Status::UnsupportedCluster
63+
#define EMBER_ZCL_STATUS_DEPRECATEDC4 chip::Protocols::InteractionModel::Status::Deprecatedc4
64+
#define EMBER_ZCL_STATUS_NO_UPSTREAM_SUBSCRIPTION chip::Protocols::InteractionModel::Status::NoUpstreamSubscription
65+
#define EMBER_ZCL_STATUS_NEEDS_TIMED_INTERACTION chip::Protocols::InteractionModel::Status::NeedsTimedInteraction
66+
#define EMBER_ZCL_STATUS_UNSUPPORTED_EVENT chip::Protocols::InteractionModel::Status::UnsupportedEvent
67+
#define EMBER_ZCL_STATUS_PATHS_EXHAUSTED chip::Protocols::InteractionModel::Status::PathsExhausted
68+
#define EMBER_ZCL_STATUS_TIMED_REQUEST_MISMATCH chip::Protocols::InteractionModel::Status::TimedRequestMismatch
69+
#define EMBER_ZCL_STATUS_FAILSAFE_REQUIRED chip::Protocols::InteractionModel::Status::FailsafeRequired
70+
#define EMBER_ZCL_STATUS_INVALID_IN_STATE chip::Protocols::InteractionModel::Status::InvalidInState
71+
#define EMBER_ZCL_STATUS_NO_COMMAND_RESPONSE chip::Protocols::InteractionModel::Status::NoCommandResponse
72+
#define EMBER_ZCL_STATUS_WRITE_IGNORED chip::Protocols::InteractionModel::Status::WriteIgnored // NOT SPEC COMPLIANT FOR TEST ONLY

src/app/zap-templates/templates/app/attributes/Accessors-src.zapt

+14-14
Original file line numberDiff line numberDiff line change
@@ -35,37 +35,37 @@ namespace {{asUpperCamelCase label}} {
3535
{{#*inline "clusterId"}}Clusters::{{asUpperCamelCase parent.label}}::Id{{/inline}}
3636
{{#*inline "sizingBytes"}}{{#if (isShortString type)}}1{{else}}2{{/if}}{{/inline}}
3737

38-
EmberAfStatus Get(chip::EndpointId endpoint, {{accessorGetterType this}} value)
38+
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGetterType this}} value)
3939
{
4040
{{~#if (isString type)}}
4141
{{~#*inline "lengthType"}}uint{{#if (isShortString type)}}8{{else}}16{{/if}}_t{{/inline}}
4242
uint8_t zclString[{{maxLength}} + {{>sizingBytes}}];
43-
EmberAfStatus status = emberAfReadAttribute(endpoint, {{>clusterId}}, Id, zclString, sizeof(zclString));
44-
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
43+
Protocols::InteractionModel::Status status = emberAfReadAttribute(endpoint, {{>clusterId}}, Id, zclString, sizeof(zclString));
44+
VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status);
4545
size_t length = emberAf{{#if (isLongString type)}}Long{{/if}}StringLength(zclString);
4646
if (length == NumericAttributeTraits<{{>lengthType}}>::kNullValue)
4747
{
4848
{{#if isNullable}}
4949
value.SetNull();
50-
return EMBER_ZCL_STATUS_SUCCESS;
50+
return Protocols::InteractionModel::Status::Success;
5151
{{else}}
52-
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
52+
return Protocols::InteractionModel::Status::ConstraintError;
5353
{{/if}}
5454
}
5555
{{#if isNullable}}
5656
auto & span = value.SetNonNull();
5757
{{/if}}
5858
{{~#*inline "value"}}{{#if isNullable}}span{{else}}value{{/if}}{{/inline}}
59-
VerifyOrReturnError({{>value}}.size() == {{maxLength}}, EMBER_ZCL_STATUS_INVALID_DATA_TYPE);
59+
VerifyOrReturnError({{>value}}.size() == {{maxLength}}, Protocols::InteractionModel::Status::InvalidDataType);
6060
memcpy({{>value}}.data(), &zclString[{{>sizingBytes}}], {{maxLength}});
6161
{{>value}}.reduce_size(length);
6262
return status;
6363
{{else}}
6464
using Traits = NumericAttributeTraits<{{accessorTraitType type}}>;
6565
Traits::StorageType temp;
6666
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
67-
EmberAfStatus status = emberAfReadAttribute(endpoint, {{>clusterId}}, Id, readable, sizeof(temp));
68-
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
67+
Protocols::InteractionModel::Status status = emberAfReadAttribute(endpoint, {{>clusterId}}, Id, readable, sizeof(temp));
68+
VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status);
6969
{{#if isNullable}}
7070
if (Traits::IsNullValue(temp))
7171
{
@@ -78,20 +78,20 @@ EmberAfStatus Get(chip::EndpointId endpoint, {{accessorGetterType this}} value)
7878
{{else}}
7979
if (!Traits::CanRepresentValue(/* isNullable = */ {{isNullable}}, temp))
8080
{
81-
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
81+
return Protocols::InteractionModel::Status::ConstraintError;
8282
}
8383
*value = Traits::StorageToWorking(temp);
8484
{{/if}}
8585
return status;
8686
{{/if}}
8787
}
88-
EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value)
88+
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value)
8989
{
9090
{{~#if (isString type)}}
9191
{{~#*inline "lengthType"}}uint{{#if (isShortString type)}}8{{else}}16{{/if}}_t{{/inline}}
9292
static_assert({{maxLength}} < NumericAttributeTraits<{{>lengthType}}>::kNullValue,
9393
"value.size() might be too big");
94-
VerifyOrReturnError(value.size() <= {{maxLength}}, EMBER_ZCL_STATUS_CONSTRAINT_ERROR);
94+
VerifyOrReturnError(value.size() <= {{maxLength}}, Protocols::InteractionModel::Status::ConstraintError);
9595
uint8_t zclString[{{maxLength}} + {{>sizingBytes}}];
9696
auto length = static_cast<{{>lengthType}}>(value.size());
9797
{{#if (isShortString type)}}
@@ -105,7 +105,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectTy
105105
using Traits = NumericAttributeTraits<{{accessorTraitType type}}>;
106106
if (!Traits::CanRepresentValue(/* isNullable = */ {{isNullable}}, value))
107107
{
108-
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
108+
return Protocols::InteractionModel::Status::ConstraintError;
109109
}
110110
Traits::StorageType storageValue;
111111
Traits::WorkingToStorage(value, storageValue);
@@ -115,7 +115,7 @@ EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectTy
115115
}
116116

117117
{{#if isNullable}}
118-
EmberAfStatus SetNull(chip::EndpointId endpoint)
118+
Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint)
119119
{
120120
{{#if (isString type)}}
121121
uint8_t zclString[{{>sizingBytes}}] = { {{#if (isShortString type)}}0xFF{{else}}0xFF, 0xFF{{/if}} };
@@ -129,7 +129,7 @@ EmberAfStatus SetNull(chip::EndpointId endpoint)
129129
{{/if}}
130130
}
131131

132-
EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value)
132+
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value)
133133
{
134134
if (value.IsNull()) {
135135
return SetNull(endpoint);

src/app/zap-templates/templates/app/attributes/Accessors.zapt

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <app/util/af-types.h>
1212
#include <app-common/zap-generated/cluster-objects.h>
1313
#include <lib/support/Span.h>
14+
#include <protocols/interaction_model/StatusCode.h>
1415

1516
namespace chip {
1617
namespace app {
@@ -25,11 +26,11 @@ namespace Attributes {
2526
{{/first}}
2627
{{#unless (isStrEqual storagePolicy "attributeAccessInterface")}}
2728
namespace {{asUpperCamelCase label}} {
28-
EmberAfStatus Get(chip::EndpointId endpoint, {{accessorGetterType this}} value); // {{type}}
29-
EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value);
29+
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, {{accessorGetterType this}} value); // {{type}}
30+
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name forceNotNullable=true forceNotOptional=true}} value);
3031
{{#if isNullable}}
31-
EmberAfStatus SetNull(chip::EndpointId endpoint);
32-
EmberAfStatus Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value);
32+
Protocols::InteractionModel::Status SetNull(chip::EndpointId endpoint);
33+
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, {{zapTypeToEncodableClusterObjectType type ns=parent.name isArgument=true forceNotOptional=true}} value);
3334
{{/if}}
3435
} // namespace {{asUpperCamelCase label}}
3536

src/darwin/Framework/CHIPTests/MTRXPCListenerSampleTests.m

-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
#import "MTRTestResetCommissioneeHelper.h"
2828
#import "MTRTestStorage.h"
2929

30-
#import <app/util/af-enums.h>
31-
3230
#import <math.h> // For INFINITY
3331

3432
// system dependencies

src/protocols/interaction_model/StatusCode.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ namespace Protocols {
3838
namespace InteractionModel {
3939

4040
// This table comes from the IM's "Status Code Table" section from the Interaction Model spec.
41-
enum class Status : uint8_t
41+
// TODO: This needs to go back to being an enum class.
42+
// https://github.com/project-chip/connectedhomeip/issues/32025
43+
enum Status : uint8_t
4244
{
4345
#define CHIP_IM_STATUS_CODE(name, spec_name, value) name = value,
4446
#include <protocols/interaction_model/StatusCodeList.h>

0 commit comments

Comments
 (0)