#pragma once

namespace esp_matter {

enum device_type_enum {
    ESP_MATTER_ON_OFF_LIGHT = 1,
    ESP_MATTER_DIMMABLE_LIGHT,
    ESP_MATTER_COLOR_TEMP_LIGHT,
    ESP_MATTER_EXTENDED_COLOR_LIGHT,
    ESP_MATTER_ON_OFF_LIGHT_SWITCH,
    ESP_MATTER_DIMMER_SWITCH,
    ESP_MATTER_COLOR_DIMMER_SWITCH,
    ESP_MATTER_GENERIC_SWITCH,
    ESP_MATTER_ON_OFF_PLUG_IN_UNIT,
    ESP_MATTER_DIMMABLE_PLUG_IN_UNIT,
    ESP_MATTER_FAN,
    ESP_MATTER_THERMOSTAT,
    ESP_MATTER_AGGREGATOR,
    ESP_MATTER_BRIDGED_NODE,
    ESP_MATTER_CONTROL_BRIDGE,
    ESP_MATTER_DOOR_LOCK,
    ESP_MATTER_WINDOW_COVERING_DEVICE,
    ESP_MATTER_TEMP_SENSOR,
    ESP_MATTER_HUMIDITY_SENSOR,
    ESP_MATTER_OCCUPANCY_SENSOR,
    ESP_MATTER_CONTACT_SENSOR,
    ESP_MATTER_LIGHT_SENSOR,
    ESP_MATTER_PRESSURE_SENSOR,
    ESP_MATTER_FLOW_SENSOR,
    ESP_MATTER_PUMP,
    ESP_MATTER_MODE_SELECT_DEVICE,
    ESP_MATTER_RAC,
    ESP_MATTER_TEMP_CTRL_CABINET,
    ESP_MATTER_REFRIGERATOR,
    ESP_MATTER_AIR_PURIFIER,
    ESP_MATTER_AIR_QUALITY_SENSOR,
    ESP_MATTER_ROBOTIC_VACUUM_CLEANER,
    ESP_MATTER_LAUNDRY_WASHER,
    ESP_MATTER_DISH_WASHER,
    ESP_MATTER_SMOKE_CO_ALARM,
    ESP_MATTER_WATER_LEAK_DETECTOR,
    ESP_MATTER_WATER_FREEZE_DETECTOR,
    ESP_MATTER_POWER_SOURCE,
    ESP_MATTER_RAIN_SENSOR,
    ESP_MATTER_ELECTRICAL_SENSOR,
    ESP_MATTER_OVEN,
    ESP_MATTER_COOKTOP,
    ESP_MATTER_ENERGY_EVSE,
    ESP_MATTER_MICROWAVE_OVEN,
    ESP_MATTER_EXTRACTOR_HOOD,
    ESP_MATTER_LAUNDRY_DRYER,
    ESP_MATTER_WATER_VALVE,
    ESP_MATTER_DEVICE_ENERGY_MANAGEMENT,
    ESP_MATTER_PUMP_CONTROLLER,
    ESP_MATTER_THREAD_BORDER_ROUTER,
    ESP_MATTER_MOUNTED_ON_OFF_CONTROL,
    ESP_MATTER_MOUNTED_DIMMABLE_LOAD_CONTROL,
    ESP_MATTER_WATER_HEATER,
    ESP_MATTER_SOLAR_POWER,
    ESP_MATTER_BATTERY_STORAGE,
    ESP_MATTER_HEAT_PUMP,
    ESP_MATTER_CHIME,
    ESP_MATTER_THERMOSTAT_CONTROLLER,
    ESP_MATTER_CLOSURE_CONTROLLER,
    ESP_MATTER_CLOSURE,
    ESP_MATTER_CLOSURE_PANEL,
    ESP_MATTER_ELECTRICAL_ENERGY_TARIFF,
    ESP_MATTER_ELECTRICAL_METER,
    ESP_MATTER_ELECTRICAL_UTILITY_METER,
    ESP_MATTER_SOIL_SENSOR,
    ESP_MATTER_IRRIGATION_SYSTEM,
    ESP_MATTER_DEVICE_TYPE_MAX
};

struct device_type_name {
    const char *device_name;
    device_type_enum device_id;
};

const device_type_name device_type_list[ESP_MATTER_DEVICE_TYPE_MAX] = {
    {"on_off_light", ESP_MATTER_ON_OFF_LIGHT},
    {"dimmable_light", ESP_MATTER_DIMMABLE_LIGHT},
    {"color_temperature_light", ESP_MATTER_COLOR_TEMP_LIGHT},
    {"extended_color_light", ESP_MATTER_EXTENDED_COLOR_LIGHT},
    {"on_off_light_switch", ESP_MATTER_ON_OFF_LIGHT_SWITCH},
    {"dimmer_switch", ESP_MATTER_DIMMER_SWITCH},
    {"color_dimmer_switch", ESP_MATTER_COLOR_DIMMER_SWITCH},
    {"generic_switch", ESP_MATTER_GENERIC_SWITCH},
    {"on_off_plug_in_unit", ESP_MATTER_ON_OFF_PLUG_IN_UNIT},
    {"dimmable_plug_in_unit", ESP_MATTER_DIMMABLE_PLUG_IN_UNIT},
    {"fan", ESP_MATTER_FAN},
    {"thermostat", ESP_MATTER_THERMOSTAT},
    {"aggregator", ESP_MATTER_AGGREGATOR},
    {"bridged_node", ESP_MATTER_BRIDGED_NODE},
    {"control_bridge", ESP_MATTER_CONTROL_BRIDGE},
    {"door_lock", ESP_MATTER_DOOR_LOCK},
    {"window_covering", ESP_MATTER_WINDOW_COVERING_DEVICE},
    {"temperature_sensor", ESP_MATTER_TEMP_SENSOR},
    {"humidity_sensor", ESP_MATTER_HUMIDITY_SENSOR},
    {"occupancy_sensor", ESP_MATTER_OCCUPANCY_SENSOR},
    {"contact_sensor", ESP_MATTER_CONTACT_SENSOR},
    {"light_sensor", ESP_MATTER_LIGHT_SENSOR},
    {"pressure_sensor", ESP_MATTER_PRESSURE_SENSOR},
    {"flow_sensor", ESP_MATTER_FLOW_SENSOR},
    {"pump", ESP_MATTER_PUMP},
    {"mode_select_device", ESP_MATTER_MODE_SELECT_DEVICE},
    {"room_ac", ESP_MATTER_RAC},
    {"temp_ctrl_cabinet", ESP_MATTER_TEMP_CTRL_CABINET},
    {"refrigerator", ESP_MATTER_REFRIGERATOR},
    {"air_purifier", ESP_MATTER_AIR_PURIFIER},
    {"air_quality_sensor", ESP_MATTER_AIR_QUALITY_SENSOR},
    {"robotic_vacuum_cleaner", ESP_MATTER_ROBOTIC_VACUUM_CLEANER},
    {"laundry_washer", ESP_MATTER_LAUNDRY_WASHER},
    {"dish_washer", ESP_MATTER_DISH_WASHER},
    {"smoke_co_alarm", ESP_MATTER_SMOKE_CO_ALARM},
    {"water_leak_detector", ESP_MATTER_WATER_LEAK_DETECTOR},
    {"water_freeze_detector", ESP_MATTER_WATER_FREEZE_DETECTOR},
    {"power_source", ESP_MATTER_POWER_SOURCE},
    {"rain_sensor", ESP_MATTER_RAIN_SENSOR},
    {"electrical_sensor", ESP_MATTER_ELECTRICAL_SENSOR},
    {"oven", ESP_MATTER_OVEN},
    {"cooktop", ESP_MATTER_COOKTOP},
    {"energy_evse", ESP_MATTER_ENERGY_EVSE},
    {"microwave_oven", ESP_MATTER_MICROWAVE_OVEN},
    {"extractor_hood", ESP_MATTER_EXTRACTOR_HOOD},
    {"laundry_dryer", ESP_MATTER_LAUNDRY_DRYER},
    {"water_valve", ESP_MATTER_WATER_VALVE},
    {"device_energy_management", ESP_MATTER_DEVICE_ENERGY_MANAGEMENT},
    {"pump_controller", ESP_MATTER_PUMP_CONTROLLER},
    {"thread_border_router", ESP_MATTER_THREAD_BORDER_ROUTER},
    {"mounted_on_off_control", ESP_MATTER_MOUNTED_ON_OFF_CONTROL},
    {"mounted_dimmable_load_control", ESP_MATTER_MOUNTED_DIMMABLE_LOAD_CONTROL},
    {"water_heater", ESP_MATTER_WATER_HEATER},
    {"solar_power", ESP_MATTER_SOLAR_POWER},
    {"battery_storage", ESP_MATTER_BATTERY_STORAGE},
    {"heat_pump", ESP_MATTER_HEAT_PUMP},
    {"chime", ESP_MATTER_CHIME},
    {"thermostat_controller", ESP_MATTER_THERMOSTAT_CONTROLLER},
    {"closure_controller", ESP_MATTER_CLOSURE_CONTROLLER},
    {"closure", ESP_MATTER_CLOSURE},
    {"closure_panel", ESP_MATTER_CLOSURE_PANEL},
    {"electrical_energy_tariff", ESP_MATTER_ELECTRICAL_ENERGY_TARIFF},
    {"electrical_meter", ESP_MATTER_ELECTRICAL_METER},
    {"electrical_utility_meter", ESP_MATTER_ELECTRICAL_UTILITY_METER},
    {"soil_sensor", ESP_MATTER_SOIL_SENSOR},
    {"irrigation_system", ESP_MATTER_IRRIGATION_SYSTEM},
};
} /* namespace esp_matter */
