diff --git a/src/espmega_iot_core.cpp b/src/espmega_iot_core.cpp index 9146fb1..0472888 100644 --- a/src/espmega_iot_core.cpp +++ b/src/espmega_iot_core.cpp @@ -704,7 +704,7 @@ void mqtt_subscribe() * @param payload The payload of the received message. * @param length The length of the payload. */ -void mqtt_callback(char *topic, byte *payload, unsigned int length) +IRAM_ATTR void mqtt_callback(char *topic, byte *payload, unsigned int length) { uint8_t topic_length = strlen(topic); char topic_trim[50]; @@ -796,7 +796,7 @@ void thread_initialization() * @param payload The message payload. * @param payload_length The length of the message payload. */ -void pwm_state_callback(char *topic, uint8_t topic_length, char *payload, unsigned int payload_length) +IRAM_ATTR void pwm_state_callback(char *topic, uint8_t topic_length, char *payload, unsigned int payload_length) { int a = topic[5] - '0'; int b = topic[6] - '0'; @@ -822,7 +822,7 @@ void pwm_state_callback(char *topic, uint8_t topic_length, char *payload, unsign * @param payload The message payload. * @param payload_length The length of the message payload. */ -void pwm_value_callback(char *topic, uint8_t topic_length, char *payload, unsigned int payload_length) +IRAM_ATTR void pwm_value_callback(char *topic, uint8_t topic_length, char *payload, unsigned int payload_length) { int a = topic[5] - '0'; int b = topic[6] - '0'; @@ -925,7 +925,7 @@ void publish_pwm_value(int id) * @param id The ID of the PWM pin. * @param state The new state of the PWM pin. */ -void pwm_set_state(int id, int state) +IRAM_ATTR void pwm_set_state(int id, int state) { if (state != pwm_states[id]) { @@ -949,7 +949,7 @@ void pwm_set_state(int id, int state) * @param id The id of the PWM pin. * @param value The value to set the PWM pin to. */ -void pwm_set_value(int id, int value) +IRAM_ATTR void pwm_set_value(int id, int value) { pwm_values[id] = value; int pwm_state = pwm_states[id]; @@ -1268,6 +1268,8 @@ void ac_set_state(int mode, int temperature, int fan_speed) */ void publish_env_state() { + if(!pwm_report_enable) + return; int errorCode = env_sensor.read(); yield(); switch (errorCode) diff --git a/src/espmega_iot_core.hpp b/src/espmega_iot_core.hpp index 51777c3..fb6afc7 100644 --- a/src/espmega_iot_core.hpp +++ b/src/espmega_iot_core.hpp @@ -43,7 +43,7 @@ #endif #include "espmega_iot_timer.hpp" -void mqtt_callback(char* topic, byte* payload, unsigned int length); +IRAM_ATTR void mqtt_callback(char* topic, byte* payload, unsigned int length); void virtual_interrupt_loop(); void virtual_interrupt_callback(int pin, int state); void virtual_interrupt_preload(); @@ -51,8 +51,8 @@ void network_begin(); void mqtt_connect(); void mqtt_subscribe(); void thread_initialization(); -void pwm_state_callback(char* topic, uint8_t topic_length, char* payload, unsigned int payload_length); -void pwm_value_callback(char* topic, uint8_t topic_length, char* payload, unsigned int payload_length); +IRAM_ATTR void pwm_state_callback(char* topic, uint8_t topic_length, char* payload, unsigned int payload_length); +IRAM_ATTR void pwm_value_callback(char* topic, uint8_t topic_length, char* payload, unsigned int payload_length); void state_request_callback(); void io_begin(); void ir_loop(); @@ -62,8 +62,8 @@ void ota_begin(); void publish_pwm_states(); void publish_pwm_state(int id); void publish_pwm_value(int id); -void pwm_set_state(int id, int state); -void pwm_set_value(int id, int value); +IRAM_ATTR void pwm_set_state(int id, int state); +IRAM_ATTR void pwm_set_value(int id, int value); void pwm_toggle(int id); void pwm_toggle(int id1, int id2); void pwm_cycle_value(int id);