61 lines
2.0 KiB
C
61 lines
2.0 KiB
C
/* Device Registry - Abstração de diferentes tipos de dispositivos Zigbee */
|
|
|
|
#pragma once
|
|
|
|
#include "esp_zigbee_core.h"
|
|
#include "device_config.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* ========================= ESTRUTURA DE DISPOSITIVO ========================= */
|
|
|
|
typedef struct {
|
|
const char *name; /* Nome do dispositivo */
|
|
uint16_t device_id; /* Zigbee Device ID */
|
|
uint8_t endpoint; /* Endpoint do dispositivo */
|
|
|
|
/* Função para criar clusters específicos do dispositivo */
|
|
esp_zb_cluster_list_t* (*create_clusters)(void);
|
|
|
|
/* Handler para atributos específicos do dispositivo */
|
|
esp_err_t (*attribute_handler)(const esp_zb_zcl_set_attr_value_message_t *message);
|
|
|
|
/* Função de inicialização específica do hardware */
|
|
void (*hardware_init)(void);
|
|
|
|
/* Função para atualizar estado do dispositivo */
|
|
void (*update_state)(void);
|
|
|
|
} device_type_t;
|
|
|
|
/* ========================= REGISTRO DE DISPOSITIVOS ========================= */
|
|
|
|
/* Retorna a configuração do dispositivo ativo */
|
|
const device_type_t* device_get_config(void);
|
|
|
|
/* ========================= FUNÇÕES AUXILIARES PARA CLUSTERS ========================= */
|
|
|
|
/* Cria cluster básico (obrigatório para todos os dispositivos) */
|
|
esp_zb_attribute_list_t* device_create_basic_cluster(void);
|
|
|
|
/* Cria cluster identify (obrigatório para todos os dispositivos) */
|
|
esp_zb_attribute_list_t* device_create_identify_cluster(void);
|
|
|
|
/* Cria cluster on/off (para dispositivos controláveis) */
|
|
esp_zb_attribute_list_t* device_create_onoff_cluster(void);
|
|
|
|
/* Cria cluster de temperatura (para sensores) */
|
|
esp_zb_attribute_list_t* device_create_temperature_cluster(void);
|
|
|
|
/* Cria cluster de ocupação (para sensores de movimento/porta) */
|
|
esp_zb_attribute_list_t* device_create_occupancy_cluster(void);
|
|
|
|
/* Cria cluster IAS Zone (para sensores de segurança) */
|
|
esp_zb_attribute_list_t* device_create_ias_zone_cluster(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|