diff --git a/src/device-types/HAButton.h b/src/device-types/HAButton.h index 58c88fd..bea1b12 100644 --- a/src/device-types/HAButton.h +++ b/src/device-types/HAButton.h @@ -5,7 +5,12 @@ #ifndef EX_ARDUINOHA_BUTTON +#if defined(ESP32) || defined(ESP8266) +#define HABUTTON_CALLBACK(name) std::function name +#else #define HABUTTON_CALLBACK(name) void (*name)(HAButton* sender) +#endif + /** * HAButton represents a button that's displayed in the Home Assistant panel and diff --git a/src/device-types/HACover.h b/src/device-types/HACover.h index 92a1ce5..0e09236 100644 --- a/src/device-types/HACover.h +++ b/src/device-types/HACover.h @@ -5,7 +5,11 @@ #ifndef EX_ARDUINOHA_COVER +#if defined(ESP32) || defined(ESP8266) +#define HACOVER_CALLBACK(name) std::function name +#else #define HACOVER_CALLBACK(name) void (*name)(CoverCommand cmd, HACover* sender) +#endif /** * HACover allows to control a cover (such as blinds, a roller shutter or a garage door). diff --git a/src/device-types/HAFan.h b/src/device-types/HAFan.h index 8ed750e..89a6100 100644 --- a/src/device-types/HAFan.h +++ b/src/device-types/HAFan.h @@ -6,8 +6,17 @@ #ifndef EX_ARDUINOHA_FAN +#if defined(ESP32) || defined(ESP8266) +#define HAFAN_STATE_CALLBACK(name) std::function name +#else #define HAFAN_STATE_CALLBACK(name) void (*name)(bool state, HAFan* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HAFAN_SPEED_CALLBACK(name) std::function name +#else #define HAFAN_SPEED_CALLBACK(name) void (*name)(uint16_t speed, HAFan* sender) +#endif /** * HAFan allows adding a controllable fan in the Home Assistant panel. diff --git a/src/device-types/HAHVAC.h b/src/device-types/HAHVAC.h index 1957ac6..031d733 100644 --- a/src/device-types/HAHVAC.h +++ b/src/device-types/HAHVAC.h @@ -26,11 +26,35 @@ inline void setCurrentTargetTemperature(const type temperature) \ { setCurrentTargetTemperature(HANumeric(temperature, _precision)); } +#if defined(ESP32) || defined(ESP8266) +#define HAHVAC_CALLBACK_BOOL(name) std::function name +#else #define HAHVAC_CALLBACK_BOOL(name) void (*name)(bool state, HAHVAC* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HAHVAC_CALLBACK_TARGET_TEMP(name) std::function name +#else #define HAHVAC_CALLBACK_TARGET_TEMP(name) void (*name)(HANumeric temperature, HAHVAC* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HAHVAC_CALLBACK_FAN_MODE(name) std::function name +#else #define HAHVAC_CALLBACK_FAN_MODE(name) void (*name)(FanMode mode, HAHVAC* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HAHVAC_CALLBACK_SWING_MODE(name) std::function name +#else #define HAHVAC_CALLBACK_SWING_MODE(name) void (*name)(SwingMode mode, HAHVAC* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HAHVAC_CALLBACK_MODE(name) std::function name +#else #define HAHVAC_CALLBACK_MODE(name) void (*name)(Mode mode, HAHVAC* sender) +#endif class HASerializerArray; diff --git a/src/device-types/HALight.h b/src/device-types/HALight.h index 021d32f..3390ab9 100644 --- a/src/device-types/HALight.h +++ b/src/device-types/HALight.h @@ -6,10 +6,29 @@ #ifndef EX_ARDUINOHA_LIGHT +#if defined(ESP32) || defined(ESP8266) +#define HALIGHT_STATE_CALLBACK(name) std::function name +#else #define HALIGHT_STATE_CALLBACK(name) void (*name)(bool state, HALight* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HALIGHT_BRIGHTNESS_CALLBACK(name) std::function name +#else #define HALIGHT_BRIGHTNESS_CALLBACK(name) void (*name)(uint8_t brightness, HALight* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HALIGHT_COLOR_TEMP_CALLBACK(name) std::function name +#else #define HALIGHT_COLOR_TEMP_CALLBACK(name) void (*name)(uint16_t temperature, HALight* sender) +#endif + +#if defined(ESP32) || defined(ESP8266) +#define HALIGHT_RGB_COLOR_CALLBACK(name) std::function name +#else #define HALIGHT_RGB_COLOR_CALLBACK(name) void (*name)(HALight::RGBColor color, HALight* sender) +#endif /** * HALight allows adding a controllable light in the Home Assistant panel. diff --git a/src/device-types/HALock.h b/src/device-types/HALock.h index d8d036f..2a4acaa 100644 --- a/src/device-types/HALock.h +++ b/src/device-types/HALock.h @@ -5,7 +5,11 @@ #ifndef EX_ARDUINOHA_LOCK +#if defined(ESP32) || defined(ESP8266) +#define HALOCK_CALLBACK(name) std::function name +#else #define HALOCK_CALLBACK(name) void (*name)(LockCommand command, HALock* sender) +#endif /** * HALock allows to implement a custom lock (for example: door lock) diff --git a/src/device-types/HANumber.h b/src/device-types/HANumber.h index e20d6fe..0f36de5 100644 --- a/src/device-types/HANumber.h +++ b/src/device-types/HANumber.h @@ -16,7 +16,11 @@ inline void setCurrentState(const type state) \ { setCurrentState(HANumeric(state, _precision)); } +#if defined(ESP32) || defined(ESP8266) +#define HANUMBER_CALLBACK(name) std::function name +#else #define HANUMBER_CALLBACK(name) void (*name)(HANumeric number, HANumber* sender) +#endif /** * HANumber adds a slider or a box in the Home Assistant panel diff --git a/src/device-types/HAScene.h b/src/device-types/HAScene.h index b5105a1..7d5d6c2 100644 --- a/src/device-types/HAScene.h +++ b/src/device-types/HAScene.h @@ -5,7 +5,11 @@ #ifndef EX_ARDUINOHA_SCENE +#if defined(ESP32) || defined(ESP8266) +#define HASCENE_CALLBACK(name) std::function name +#else #define HASCENE_CALLBACK(name) void (*name)(HAScene* sender) +#endif /** * HAScene adds a new scene to the Home Assistant that triggers your callback once activated. diff --git a/src/device-types/HASelect.h b/src/device-types/HASelect.h index a6c0f99..40af37d 100644 --- a/src/device-types/HASelect.h +++ b/src/device-types/HASelect.h @@ -7,7 +7,11 @@ class HASerializerArray; +#if defined(ESP32) || defined(ESP8266) +#define HASELECT_CALLBACK(name) std::function name +#else #define HASELECT_CALLBACK(name) void (*name)(int8_t index, HASelect* sender) +#endif /** * HASelect adds a dropdown with options in the Home Assistant panel. diff --git a/src/device-types/HASwitch.h b/src/device-types/HASwitch.h index 7179b28..42dc87d 100644 --- a/src/device-types/HASwitch.h +++ b/src/device-types/HASwitch.h @@ -5,7 +5,13 @@ #ifndef EX_ARDUINOHA_SWITCH + +#if defined(ESP32) || defined(ESP8266) +#define HASWITCH_CALLBACK(name) std::function name +#else #define HASWITCH_CALLBACK(name) void (*name)(bool state, HASwitch* sender) +#endif + /** * HASwitch allows to display on/off switch in the HA panel and receive commands on your device.