Tasmota/lib/libesp32_div/ESP32-HomeKit/src/hap_apple_servs.h
2021-03-17 13:33:55 +01:00

565 lines
20 KiB
C
Executable File

/*
* ESPRESSIF MIT License
*
* Copyright (c) 2020 <ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD>
*
* Permission is hereby granted for use on ESPRESSIF SYSTEMS products only, in which case,
* it is free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished
* to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or
* substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
/** HAP Apple Services
*
* This offers helper APIs for all the standard HomeKit Services defined by Apple
*/
#ifndef _HAP_APPLE_SERVS_H_
#define _HAP_APPLE_SERVS_H_
#include <stdint.h>
#include <stdbool.h>
#include <hap.h>
#ifdef __cplusplus
extern "C" {
#endif
#define HAP_SERV_UUID_ACCESSORY_INFORMATION "3E"
#define HAP_SERV_UUID_PROTOCOL_INFORMATION "A2"
#define HAP_SERV_UUID_FAN "40"
#define HAP_SERV_UUID_GARAGE_DOOR_OPENER "41"
#define HAP_SERV_UUID_LIGHTBULB "43"
#define HAP_SERV_UUID_LOCK_MANAGEMENT "44"
#define HAP_SERV_UUID_LOCK_MECHANISM "45"
#define HAP_SERV_UUID_SWITCH "49"
#define HAP_SERV_UUID_OUTLET "47"
#define HAP_SERV_UUID_THERMOSTAT "4A"
#define HAP_SERV_UUID_AIR_QUALITY_SENSOR "8D"
#define HAP_SERV_UUID_SECURITY_SYSTEM "7E"
#define HAP_SERV_UUID_CARBON_MONOXIDE_SENSOR "7F"
#define HAP_SERV_UUID_CONTACT_SENSOR "80"
#define HAP_SERV_UUID_DOOR "81"
#define HAP_SERV_UUID_HUMIDITY_SENSOR "82"
#define HAP_SERV_UUID_LEAK_SENSOR "83"
#define HAP_SERV_UUID_LIGHT_SENSOR "84"
#define HAP_SERV_UUID_MOTION_SENSOR "85"
#define HAP_SERV_UUID_OCCUPANCY_SENSOR "86"
#define HAP_SERV_UUID_SMOKE_SENSOR "87"
#define HAP_SERV_UUID_STATLESS_PROGRAMMABLE_SWITCH "89"
#define HAP_SERV_UUID_TEMPERATURE_SENSOR "8A"
#define HAP_SERV_UUID_WINDOW "8B"
#define HAP_SERV_UUID_WINDOW_COVERING "8C"
#define HAP_SERV_UUID_BATTERY_SERVICE "96"
#define HAP_SERV_UUID_CARBON_DIOXIDE_SENSOR "97"
#define HAP_SERV_UUID_FAN_V2 "B7"
#define HAP_SERV_UUID_SLAT "B9"
#define HAP_SERV_UUID_FILTER_MAINTENANCE "BA"
#define HAP_SERV_UUID_AIR_PURIFIER "BB"
#define HAP_SERV_UUID_HEATER_COOLER "BC"
#define HAP_SERV_UUID_HUMIDIFIER_DEHUMIDIFIER "BD"
#define HAP_SERV_UUID_SERVICE_LABEL "CC"
#define HAP_SERV_UUID_IRRIGATION_SYSTEM "CF"
#define HAP_SERV_UUID_VALVE "D0"
#define HAP_SERV_UUID_FAUCET "D7"
/** Create Accessory Information Service
*
* This API will create the Accessory Information Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] cfg The accessory configuration to be used to create the service
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_accessory_information_create(hap_acc_cfg_t *cfg);
/** Create Protocol Information Service
*
* This API will create the Protocol Information Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] version The Protocol Version string
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_protocol_information_create(char *version);
/** Create Fan Service
*
* This API will create the Fan Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] on Initial "On" state of the service
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_fan_create(bool on);
/** Create Garage Door Opener Service
*
* This API will create the Garage Door Opener Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_door_state Initial value of the current door state characteristic
* @param[in] targ_door_state Value of the target door state characteristic
* @param[in] obstr_detect Value of the obstruction detected characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_garage_door_opener_create(uint8_t curr_door_state, uint8_t targ_door_state, bool obstr_detect)
;
/** Create Light Bulb Service
*
* This API will create the Light Bulb Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] on Initial "On" state of the service
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_lightbulb_create(bool on);
/** Create Lock Management Service
*
* This API will create the Lock Management Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] lock_control_point Accepts data from TLV8 commands
* @param[in] version The Protocol Version string
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_lock_management_create(hap_tlv8_val_t *lock_control_point, char * version);
/** Create Lock Mechanism Service
*
* This API will create the Lock Mechanism Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] lock_curr_state Current lock state of the service
* @param[in] lock_targ_state Target lock state of the service
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_lock_mechanism_create(uint8_t lock_curr_state, uint8_t lock_targ_state);
/** Create Outlet Service
*
* This API will create the Outlet Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] on Initial "On" state of the service
* @param[in] outlet_in_use Initial value of the outlet in use characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_outlet_create(bool on, bool outlet_in_use);
/** Create Switch Service
*
* This API will create the Switch Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] on Initial "On" state of the service
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_switch_create(bool on);
/** Create Thermostat Service
*
* This API will create the Thermostat Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_heating_cooling_state Initial value of Current Heating Cooling State characteristic
* @param[in] targ_heating_cooling_state Initial value of Target Heating Cooling State characteristic
* @param[in] curr_temp Initial value of Current Temperature characteristic
* @param[in] targ_temp Initial value of Target Temperature characteristic
* @param[in] temp_disp_units Initial value of Temperature Display Units characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_thermostat_create(uint8_t curr_heating_cooling_state, uint8_t targ_heating_cooling_state, float curr_temp, float targ_temp, uint8_t temp_disp_units);
/** Create Air Quality Sensor Service
*
* This API will create the Air Quality Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] air_quality Initial value of Air Quality characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_air_quality_sensor_create(uint8_t air_quality);
/** Create Security System Current State Service
*
* This API will create the Security System Current State Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] security_sys_curr_state Initial value of Security System Current State characteristic
* @param[in] security_sys_targ_state Initial value of Security System Target State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_security_system_create(uint8_t security_sys_curr_state, uint8_t security_sys_targ_state);
/** Create Carbon Monoxide Sensor Service
*
* This API will create the Carbon Monoxide Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] carbon_monoxide_detected Initial value of Carbon Monoxide Sensor characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_carbon_monoxide_sensor_create(uint8_t carbon_monoxide_detected);
/** Create Contact Sensor Service
*
* This API will create the Contact Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] contact_sensor_state Initial value of Contact Sensor State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_contact_sensor_create(uint8_t contact_sensor_state);
/** Create Door Service
*
* This API will create the Door Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_pos Initial value of Current Position characteristic
* @param[in] targ_pos Initial value of Target Position characteristic
* @param[in] pos_state Initial value of Position State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_door_create(uint8_t curr_pos, uint8_t targ_pos, uint8_t pos_state);
/** Create Humidity Sensor Service
*
* This API will create the Humidity Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_relative_humidity Initial value of Humidity Sensor State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_humidity_sensor_create(float curr_relative_humidity);
/** Leak Sensor Service
*
* This API will create the Leak Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] leak_detected Initial value of Leak Detected State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_leak_sensor_create(uint8_t leak_detected);
/** Light Sensor Service
*
* This API will create the Light Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_ambient_light_level Initial value of Current Ambient Light Level characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_light_sensor_create(float curr_ambient_light_level);
/** Motion Sensor Service
*
* This API will create the Motion Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] motion_detected Initial value of Motion Detected characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_motion_sensor_create(bool motion_detected);
/** Occupancy Sensor Service
*
* This API will create the Occupancy Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] occupancy_detected Initial value of Occupancy Detected characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_occupancy_sensor_create(uint8_t occupancy_detected);
/** Smoke Sensor Service
*
* This API will create the Smoke Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] smoke_detected Initial value of Smoke Detected characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_smoke_sensor_create(uint8_t smoke_detected);
/** Stateless Programmable Switch Service
*
* This API will create the Stateless Programmable Switch Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] programmable_switch_event Initial value of Programmable Switch Event characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_stateless_programmable_switch_create(uint8_t programmable_switch_event);
/** Temperature Sensor Service
*
* This API will create the Temperature Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_temp Initial value of Current Temprature characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_temperature_sensor_create(float curr_temp);
/** Window Service
*
* This API will create the Window Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_pos Initial value of Current Position characteristic
* @param[in] targ_pos Initial value of Target Position characteristic
* @param[in] pos_state Initial value of Position State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_window_create(uint8_t curr_pos, uint8_t targ_pos, uint8_t pos_state);
/** Window Covering Service
*
* This API will create the Window Covering Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] targ_pos Initial value of Target Position characteristic
* @param[in] curr_pos Initial value of Current Position characteristic
* @param[in] pos_state Initial value of Position State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_window_covering_create(uint8_t targ_pos, uint8_t curr_pos, uint8_t pos_state);
/** Battery Service
*
* This API will create the Battery Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] battery_level Initial value of Battery Level characteristic
* @param[in] charging_state Initial value of Charging State characteristic
* @param[in] status_low_battery Initial value of Status Low Battery characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_battery_service_create(uint8_t battery_level, uint8_t charging_state, uint8_t status_low_battery);
/** Create Carbon Dioxide Sensor Service
*
* This API will create the Carbon Dioxide Sensor Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] carbon_dioxide_detected Initial value of Carbon Dioxide Sensor characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_carbon_dioxide_sensor_create(uint8_t carbon_dioxide_detected);
/** Fan v2 Service
*
* This API will create the Fan v2 Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Value of Active characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_fan_v2_create(uint8_t active);
/** Slat Service
*
* This API will create the Slat Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] curr_slat_state Value of Current Slat State characteristic
* @param[in] slat_type Value of Slat Type characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_slat_create(uint8_t curr_slat_state, uint8_t slat_type);
/** Filter Maintenance Service
*
* This API will create the Filter Maintenance Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] filter_change_indication Value of Filter Change Indication characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_filter_maintenance_create(uint8_t filter_change_indication);
/** Air Purifier Service
*
* This API will create the Air Purifier Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Value of Active characteristic
* @param[in] curr_air_purifier_state Value of Current Air Purifier State characteristic
* @param[in] targ_air_purifier_state Value of Target Air Purifier State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_air_purifier_create(uint8_t active, uint8_t curr_air_purifier_state, uint8_t
targ_air_purifier_state);
/** Heater Cooler Service
*
* This API will create the Heater Cooler Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Value of Active characteristic
* @param[in] curr_temp Value of Current Temperature characteristic
* @param[in] curr_heater_cooler_state Value of Current Heater Cooler State characteristic
* @param[in] targ_heater_cooler_state Value of Target Heater Cooler State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_heater_cooler_create(uint8_t active, float curr_temp, uint8_t curr_heater_cooler_state, uint8_t targ_heater_cooler_state);
/** Create Humidifer Dehumidfier Service
*
* This API will create the Humidifer Dehumidfier Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Initial value of Active characteristic
* @param[in] curr_rel_humid Initial value of Current Relative Humidity characteristic
* @param[in] curr_humid_dehumid_state Initial value of Current Humidifier Dehumidifier State characteristic
* @param[in] targ_humid_dehumid_state Initial value of Target Humidifier Dehumidifier State characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_humidifier_dehumidifier_create(uint8_t active, float curr_rel_humid, uint8_t
curr_humid_dehumid_state, uint8_t targ_humid_dehumid_state);
/** Create Service Label Service
*
* This API will create the Service Label Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] service_label_namespace Initial value of Service Label Service characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_service_label_create(uint8_t service_label_namespace);
/** Create Irrigation System Service
*
* This API will create the Irrigation System Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Initial value of active characteristic
* @param[in] prog_mode Initial value of Program Mode characteristic
* @param[in] in_use Initial value of In Use characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_irrigation_system_create(uint8_t active, uint8_t prog_mode, uint8_t in_use);
/** Create Valve Service
*
* This API will create the Valve Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Initial value of active characteristic
* @param[in] in_use Initial value of In Use characteristic
* @param[in] valve_type Initial value of Valve Type characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_valve_create(uint8_t active, uint8_t in_use, uint8_t valve_type);
/** Create Faucet Service
*
* This API will create the Faucet Service with the mandatory
* characteristics as per the HAP Specs.
*
* @param[in] active Initial value of active characteristic
*
* @return Pointer to the service object on success
* @return NULL on failure
*/
hap_serv_t *hap_serv_faucet_create(uint8_t active);
hap_serv_t *hap_serv_wattage_create(float curr_watts);
#ifdef __cplusplus
}
#endif
#endif /* _HAP_APPLE_SERVS_H_ */