blob: c3e594930d9eac1aacd17bdc6398376e9368f992 [file] [log] [blame]
{{> header excludeZapComment=true}}
#import "MTRDeviceTypeMetadata.h"
using namespace chip;
namespace {
enum class DeviceTypeClass {
Utility,
Simple,
Node, // Might not be a real class, but we have it for Root Node for now.
// If new classes get added, plase audit MTRIsKnownUtilityDeviceType below.
};
struct DeviceTypeData {
DeviceTypeId id;
DeviceTypeClass deviceClass;
const char * name;
};
constexpr DeviceTypeData knownDeviceTypes[] = {
{{#zcl_device_types}}
{{#if class}}
{{! For now work around the "Dynamic Utility" thing on Aggregator by just
taking the last word. }}
{ {{asHex code 8}}, DeviceTypeClass::{{asLastWord class}}, "{{caption}}" },
{{/if}}
{{/zcl_device_types}}
};
{{#zcl_device_types}}
{{#unless class}}
static_assert(ExtractVendorFromMEI({{asHex code 8}}) != 0, "Must have class defined for \"{{caption}}\" if it's a standard device type");
{{/unless}}
{{/zcl_device_types}}
} // anonymous namespace
BOOL MTRIsKnownUtilityDeviceType(DeviceTypeId aDeviceTypeId)
{
for (auto & deviceType : knownDeviceTypes) {
if (deviceType.id == aDeviceTypeId) {
return deviceType.deviceClass != DeviceTypeClass::Simple;
}
}
return NO;
}