blob: 8eff6cb079be42bd166fecc1ef7348b53427c8a8 [file] [log] [blame]
syntax = "proto3";
import 'pw_protobuf_protos/common.proto';
package chip.rpc;
enum AttributeType {
ZCL_NO_DATA_ATTRIBUTE_TYPE = 0x00; // No data
ZCL_BOOLEAN_ATTRIBUTE_TYPE = 0x10; // Boolean
ZCL_BITMAP8_ATTRIBUTE_TYPE = 0x18; // 8-bit bitmap
ZCL_BITMAP16_ATTRIBUTE_TYPE = 0x19; // 16-bit bitmap
ZCL_BITMAP32_ATTRIBUTE_TYPE = 0x1B; // 32-bit bitmap
ZCL_BITMAP64_ATTRIBUTE_TYPE = 0x1F; // 64-bit bitmap
ZCL_INT8U_ATTRIBUTE_TYPE = 0x20; // Unsigned 8-bit integer
ZCL_INT16U_ATTRIBUTE_TYPE = 0x21; // Unsigned 16-bit integer
ZCL_INT24U_ATTRIBUTE_TYPE = 0x22; // Unsigned 24-bit integer
ZCL_INT32U_ATTRIBUTE_TYPE = 0x23; // Unsigned 32-bit integer
ZCL_INT40U_ATTRIBUTE_TYPE = 0x24; // Unsigned 40-bit integer
ZCL_INT48U_ATTRIBUTE_TYPE = 0x25; // Unsigned 48-bit integer
ZCL_INT56U_ATTRIBUTE_TYPE = 0x26; // Unsigned 56-bit integer
ZCL_INT64U_ATTRIBUTE_TYPE = 0x27; // Unsigned 64-bit integer
ZCL_INT8S_ATTRIBUTE_TYPE = 0x28; // Signed 8-bit integer
ZCL_INT16S_ATTRIBUTE_TYPE = 0x29; // Signed 16-bit integer
ZCL_INT24S_ATTRIBUTE_TYPE = 0x2A; // Signed 24-bit integer
ZCL_INT32S_ATTRIBUTE_TYPE = 0x2B; // Signed 32-bit integer
ZCL_INT40S_ATTRIBUTE_TYPE = 0x2C; // Signed 40-bit integer
ZCL_INT48S_ATTRIBUTE_TYPE = 0x2D; // Signed 48-bit integer
ZCL_INT56S_ATTRIBUTE_TYPE = 0x2E; // Signed 56-bit integer
ZCL_INT64S_ATTRIBUTE_TYPE = 0x2F; // Signed 64-bit integer
ZCL_ENUM8_ATTRIBUTE_TYPE = 0x30; // 8-bit enumeration
ZCL_ENUM16_ATTRIBUTE_TYPE = 0x31; // 16-bit enumeration
ZCL_SINGLE_ATTRIBUTE_TYPE = 0x39; // Single precision
ZCL_DOUBLE_ATTRIBUTE_TYPE = 0x3A; // Double precision
ZCL_OCTET_STRING_ATTRIBUTE_TYPE = 0x41; // Octet String
ZCL_CHAR_STRING_ATTRIBUTE_TYPE = 0x42; // Character String
ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 0x43; // Long Octet String
ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE = 0x44; // Long Character String
ZCL_ARRAY_ATTRIBUTE_TYPE = 0x48; // List
ZCL_STRUCT_ATTRIBUTE_TYPE = 0x4C; // Structure
ZCL_TOD_ATTRIBUTE_TYPE = 0xE0; // Time of day
ZCL_DATE_ATTRIBUTE_TYPE = 0xE1; // Date
ZCL_UTC_ATTRIBUTE_TYPE = 0xE2; // UTC Time
ZCL_EPOCH_US_ATTRIBUTE_TYPE = 0xE3; // Epoch Microseconds
ZCL_EPOCH_S_ATTRIBUTE_TYPE = 0xE4; // Epoch Seconds
ZCL_SYSTIME_US_ATTRIBUTE_TYPE = 0xE5; // System Time Microseconds
ZCL_PERCENT_ATTRIBUTE_TYPE = 0xE6; // Percentage units 1%
ZCL_PERCENT100THS_ATTRIBUTE_TYPE = 0xE7; // Percentage units 0.01%
ZCL_CLUSTER_ID_ATTRIBUTE_TYPE = 0xE8; // Cluster ID
ZCL_ATTRIB_ID_ATTRIBUTE_TYPE = 0xE9; // Attribute ID
ZCL_FIELD_ID_ATTRIBUTE_TYPE = 0xEA; // Field ID
ZCL_EVENT_ID_ATTRIBUTE_TYPE = 0xEB; // Event ID
ZCL_COMMAND_ID_ATTRIBUTE_TYPE = 0xEC; // Command ID
ZCL_ACTION_ID_ATTRIBUTE_TYPE = 0xED; // Action ID
ZCL_TRANS_ID_ATTRIBUTE_TYPE = 0xEF; // Transaction ID
ZCL_NODE_ID_ATTRIBUTE_TYPE = 0xF0; // Node ID
ZCL_VENDOR_ID_ATTRIBUTE_TYPE = 0xF1; // Vendor ID
ZCL_DEVTYPE_ID_ATTRIBUTE_TYPE = 0xF2; // Device Type ID
ZCL_FABRIC_ID_ATTRIBUTE_TYPE = 0xF3; // Fabric ID
ZCL_GROUP_ID_ATTRIBUTE_TYPE = 0xF4; // Group ID
ZCL_STATUS_ATTRIBUTE_TYPE = 0xF5; // Status Code
ZCL_DATA_VER_ATTRIBUTE_TYPE = 0xF6; // Data Version
ZCL_EVENT_NO_ATTRIBUTE_TYPE = 0xF7; // Event Number
ZCL_ENDPOINT_NO_ATTRIBUTE_TYPE = 0xF8; // Endpoint Number
ZCL_FABRIC_IDX_ATTRIBUTE_TYPE = 0xF9; // Fabric Index
ZCL_IPADR_ATTRIBUTE_TYPE = 0xFA; // IP Address
ZCL_IPV4ADR_ATTRIBUTE_TYPE = 0xFB; // IPv4 Address
ZCL_IPV6ADR_ATTRIBUTE_TYPE = 0xFC; // IPv6 Address
ZCL_IPV6PRE_ATTRIBUTE_TYPE = 0xFD; // IPv6 Prefix
ZCL_HWADR_ATTRIBUTE_TYPE = 0xFE; // Hardware Address
ZCL_UNKNOWN_ATTRIBUTE_TYPE = 0xFF; // Unknown
}
enum ClusterType {
ZCL_INVALID_CLUSTER_ID = 0x0000;
ZCL_POWER_CONFIG_CLUSTER_ID = 0x0001;
ZCL_DEVICE_TEMP_CLUSTER_ID = 0x0002;
ZCL_IDENTIFY_CLUSTER_ID = 0x0003;
ZCL_GROUPS_CLUSTER_ID = 0x0004;
ZCL_SCENES_CLUSTER_ID = 0x0005;
ZCL_ON_OFF_CLUSTER_ID = 0x0006;
ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID = 0x0007;
ZCL_LEVEL_CONTROL_CLUSTER_ID = 0x0008;
ZCL_ALARM_CLUSTER_ID = 0x0009;
ZCL_TIME_CLUSTER_ID = 0x000A;
ZCL_BINARY_INPUT_BASIC_CLUSTER_ID = 0x000F;
ZCL_POWER_PROFILE_CLUSTER_ID = 0x001A;
ZCL_APPLIANCE_CONTROL_CLUSTER_ID = 0x001B;
ZCL_DESCRIPTOR_CLUSTER_ID = 0x001D;
ZCL_POLL_CONTROL_CLUSTER_ID = 0x0020;
ZCL_ACTIONS_CLUSTER_ID = 0x0025;
ZCL_BASIC_CLUSTER_ID = 0x0028;
ZCL_OTA_PROVIDER_CLUSTER_ID = 0x0029;
ZCL_OTA_REQUESTOR_CLUSTER_ID = 0x002A;
ZCL_UNIT_LOCALIZATION_CLUSTER_ID = 0x002D;
ZCL_POWER_SOURCE_CLUSTER_ID = 0x002F;
ZCL_GENERAL_COMMISSIONING_CLUSTER_ID = 0x0030;
ZCL_NETWORK_COMMISSIONING_CLUSTER_ID = 0x0031;
ZCL_DIAGNOSTIC_LOGS_CLUSTER_ID = 0x0032;
ZCL_GENERAL_DIAGNOSTICS_CLUSTER_ID = 0x0033;
ZCL_SOFTWARE_DIAGNOSTICS_CLUSTER_ID = 0x0034;
ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID = 0x0035;
ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID = 0x0036;
ZCL_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER_ID = 0x0037;
ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID = 0x0039;
ZCL_SWITCH_CLUSTER_ID = 0x003B;
ZCL_ADMINISTRATOR_COMMISSIONING_CLUSTER_ID = 0x003C;
ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID = 0x003E;
ZCL_FIXED_LABEL_CLUSTER_ID = 0x0040;
ZCL_BOOLEAN_STATE_CLUSTER_ID = 0x0045;
ZCL_MODE_SELECT_CLUSTER_ID = 0x0050;
ZCL_SHADE_CONFIG_CLUSTER_ID = 0x0100;
ZCL_DOOR_LOCK_CLUSTER_ID = 0x0101;
ZCL_WINDOW_COVERING_CLUSTER_ID = 0x0102;
ZCL_BARRIER_CONTROL_CLUSTER_ID = 0x0103;
ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID = 0x0200;
ZCL_THERMOSTAT_CLUSTER_ID = 0x0201;
ZCL_FAN_CONTROL_CLUSTER_ID = 0x0202;
ZCL_DEHUMID_CONTROL_CLUSTER_ID = 0x0203;
ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID = 0x0204;
ZCL_COLOR_CONTROL_CLUSTER_ID = 0x0300;
ZCL_BALLAST_CONFIGURATION_CLUSTER_ID = 0x0301;
ZCL_ILLUMINANCE_MEASUREMENT_CLUSTER_ID = 0x0400;
ZCL_TEMP_MEASUREMENT_CLUSTER_ID = 0x0402;
ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID = 0x0403;
ZCL_FLOW_MEASUREMENT_CLUSTER_ID = 0x0404;
ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID = 0x0405;
ZCL_OCCUPANCY_SENSING_CLUSTER_ID = 0x0406;
ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x040C;
ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x040D;
ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x040E;
ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x040F;
ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0410;
ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0411;
ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0412;
ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0413;
ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0414;
ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0415;
ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0416;
ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0417;
ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0418;
ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0419;
ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041A;
ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041B;
ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041C;
ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041D;
ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041E;
ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x041F;
ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0420;
ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0421;
ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0422;
ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0423;
ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0424;
ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0425;
ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0426;
ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0427;
ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0428;
ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 0x0429;
ZCL_IAS_ACE_CLUSTER_ID = 0x0501;
ZCL_IAS_WD_CLUSTER_ID = 0x0502;
ZCL_WAKE_ON_LAN_CLUSTER_ID = 0x0503;
ZCL_CHANNEL_CLUSTER_ID = 0x0504;
ZCL_TARGET_NAVIGATOR_CLUSTER_ID = 0x0505;
ZCL_MEDIA_PLAYBACK_CLUSTER_ID = 0x0506;
ZCL_MEDIA_INPUT_CLUSTER_ID = 0x0507;
ZCL_LOW_POWER_CLUSTER_ID = 0x0508;
ZCL_KEYPAD_INPUT_CLUSTER_ID = 0x0509;
ZCL_CONTENT_LAUNCH_CLUSTER_ID = 0x050A;
ZCL_AUDIO_OUTPUT_CLUSTER_ID = 0x050B;
ZCL_APPLICATION_LAUNCHER_CLUSTER_ID = 0x050C;
ZCL_APPLICATION_BASIC_CLUSTER_ID = 0x050D;
ZCL_ACCOUNT_LOGIN_CLUSTER_ID = 0x050E;
ZCL_MESSAGING_CLUSTER_ID = 0x0703;
ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID = 0x0B00;
ZCL_METER_IDENTIFICATION_CLUSTER_ID = 0x0B01;
ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID = 0x0B02;
ZCL_APPLIANCE_STATISTICS_CLUSTER_ID = 0x0B03;
ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID = 0x0B04;
ZCL_BINDING_CLUSTER_ID = 0xF000;
ZCL_GROUP_KEY_MANAGEMENT_CLUSTER_ID = 0xF004;
ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID = 0xFC00;
// NOTE: This is a large number that becomes negative as a 32-bit integer.
//
// Protobuf documentation states:
// Enumerator constants must be in the range of a 32-bit integer. Since enum values
// use varint encoding on the wire, negative values are inefficient and thus not recommended.
ZCL_TEST_CLUSTER_ID = -918523; // 0xFFF1FC05;
}
message AttributeMetadata {
uint32 endpoint = 1;
ClusterType cluster = 2;
uint32 attribute_id = 3;
AttributeType type = 4;
}
message AttributeData {
oneof data {
bool data_bool = 1;
uint32 data_uint8 = 2;
uint32 data_uint16 = 3;
uint32 data_uint32 = 4;
bytes data_bytes = 5;
int32 data_int8 = 6;
int32 data_int16 = 7;
int32 data_int32 = 8;
};
optional bytes tlv_data = 9;
}
message AttributeWrite {
AttributeMetadata metadata = 1;
AttributeData data = 2;
}
service Attributes {
rpc Write(AttributeWrite) returns (pw.protobuf.Empty){}
rpc Read(AttributeMetadata) returns (AttributeData){}
}