mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 23:21:54 +00:00 
			
		
		
		
	[nextion] Optimize settings memory usage with compile-time defines (#9350)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -172,9 +172,11 @@ async def to_code(config): | |||||||
|  |  | ||||||
|     cg.add(var.set_auto_wake_on_touch(config[CONF_AUTO_WAKE_ON_TOUCH])) |     cg.add(var.set_auto_wake_on_touch(config[CONF_AUTO_WAKE_ON_TOUCH])) | ||||||
|  |  | ||||||
|     cg.add(var.set_exit_reparse_on_start(config[CONF_EXIT_REPARSE_ON_START])) |     if config[CONF_EXIT_REPARSE_ON_START]: | ||||||
|  |         cg.add_define("USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START") | ||||||
|  |  | ||||||
|     cg.add(var.set_skip_connection_handshake(config[CONF_SKIP_CONNECTION_HANDSHAKE])) |     if config[CONF_SKIP_CONNECTION_HANDSHAKE]: | ||||||
|  |         cg.add_define("USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE") | ||||||
|  |  | ||||||
|     if max_commands_per_loop := config.get(CONF_MAX_COMMANDS_PER_LOOP): |     if max_commands_per_loop := config.get(CONF_MAX_COMMANDS_PER_LOOP): | ||||||
|         cg.add_define("USE_NEXTION_MAX_COMMANDS_PER_LOOP") |         cg.add_define("USE_NEXTION_MAX_COMMANDS_PER_LOOP") | ||||||
|   | |||||||
| @@ -51,24 +51,19 @@ bool Nextion::check_connect_() { | |||||||
|   if (this->connection_state_.is_connected_) |   if (this->connection_state_.is_connected_) | ||||||
|     return true; |     return true; | ||||||
|  |  | ||||||
|   // Check if the handshake should be skipped for the Nextion connection | #ifdef USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
|   if (this->skip_connection_handshake_) { |   ESP_LOGW(TAG, "Connected (no handshake)");  // Log the connection status without handshake | ||||||
|     // Log the connection status without handshake |   this->is_connected_ = true;                 // Set the connection status to true | ||||||
|     ESP_LOGW(TAG, "Connected (no handshake)"); |   return true;                                // Return true indicating the connection is set | ||||||
|     // Set the connection status to true | #else                                         // USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
|     this->connection_state_.is_connected_ = true; |  | ||||||
|     // Return true indicating the connection is set |  | ||||||
|     return true; |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   if (this->comok_sent_ == 0) { |   if (this->comok_sent_ == 0) { | ||||||
|     this->reset_(false); |     this->reset_(false); | ||||||
|  |  | ||||||
|     this->connection_state_.ignore_is_setup_ = true; |     this->connection_state_.ignore_is_setup_ = true; | ||||||
|     this->send_command_("boguscommand=0");  // bogus command. needed sometimes after updating |     this->send_command_("boguscommand=0");  // bogus command. needed sometimes after updating | ||||||
|     if (this->exit_reparse_on_start_) { | #ifdef USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START | ||||||
|       this->send_command_("DRAKJHSUYDGBNCJHGJKSHBDN"); |     this->send_command_("DRAKJHSUYDGBNCJHGJKSHBDN"); | ||||||
|     } | #endif  // USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START | ||||||
|     this->send_command_("connect"); |     this->send_command_("connect"); | ||||||
|  |  | ||||||
|     this->comok_sent_ = App.get_loop_component_start_time(); |     this->comok_sent_ = App.get_loop_component_start_time(); | ||||||
| @@ -94,7 +89,7 @@ bool Nextion::check_connect_() { | |||||||
|     for (size_t i = 0; i < response.length(); i++) { |     for (size_t i = 0; i < response.length(); i++) { | ||||||
|       ESP_LOGN(TAG, "resp: %s %d %d %c", response.c_str(), i, response[i], response[i]); |       ESP_LOGN(TAG, "resp: %s %d %d %c", response.c_str(), i, response[i], response[i]); | ||||||
|     } |     } | ||||||
| #endif | #endif  // NEXTION_PROTOCOL_LOG | ||||||
|  |  | ||||||
|     ESP_LOGW(TAG, "Not connected"); |     ESP_LOGW(TAG, "Not connected"); | ||||||
|     comok_sent_ = 0; |     comok_sent_ = 0; | ||||||
| @@ -130,6 +125,7 @@ bool Nextion::check_connect_() { | |||||||
|   this->connection_state_.ignore_is_setup_ = false; |   this->connection_state_.ignore_is_setup_ = false; | ||||||
|   this->dump_config(); |   this->dump_config(); | ||||||
|   return true; |   return true; | ||||||
|  | #endif  // USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
| } | } | ||||||
|  |  | ||||||
| void Nextion::reset_(bool reset_nextion) { | void Nextion::reset_(bool reset_nextion) { | ||||||
| @@ -144,21 +140,22 @@ void Nextion::reset_(bool reset_nextion) { | |||||||
|  |  | ||||||
| void Nextion::dump_config() { | void Nextion::dump_config() { | ||||||
|   ESP_LOGCONFIG(TAG, "Nextion:"); |   ESP_LOGCONFIG(TAG, "Nextion:"); | ||||||
|   if (this->skip_connection_handshake_) { | #ifdef USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
|     ESP_LOGCONFIG(TAG, "  Skip handshake: %s", YESNO(this->skip_connection_handshake_)); |   ESP_LOGCONFIG(TAG, "  Skip handshake: YES"); | ||||||
|   } else { | #else  // USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
|     ESP_LOGCONFIG(TAG, |  | ||||||
|                   "  Device Model:   %s\n" |  | ||||||
|                   "  FW Version:     %s\n" |  | ||||||
|                   "  Serial Number:  %s\n" |  | ||||||
|                   "  Flash Size:     %s", |  | ||||||
|                   this->device_model_.c_str(), this->firmware_version_.c_str(), this->serial_number_.c_str(), |  | ||||||
|                   this->flash_size_.c_str()); |  | ||||||
|   } |  | ||||||
|   ESP_LOGCONFIG(TAG, |   ESP_LOGCONFIG(TAG, | ||||||
|                 "  Wake On Touch:  %s\n" |                 "  Device Model:   %s\n" | ||||||
|                 "  Exit reparse:   %s", |                 "  FW Version:     %s\n" | ||||||
|                 YESNO(this->connection_state_.auto_wake_on_touch_), YESNO(this->exit_reparse_on_start_)); |                 "  Serial Number:  %s\n" | ||||||
|  |                 "  Flash Size:     %s\n" | ||||||
|  | #ifdef USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START | ||||||
|  |                 "  Exit reparse:   YES\n" | ||||||
|  | #endif  // USE_NEXTION_CONFIG_EXIT_REPARSE_ON_START | ||||||
|  |                 "  Wake On Touch:  %s", | ||||||
|  |                 this->device_model_.c_str(), this->firmware_version_.c_str(), this->serial_number_.c_str(), | ||||||
|  |                 this->flash_size_.c_str(), YESNO(this->auto_wake_on_touch_)); | ||||||
|  | #endif  // USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE | ||||||
|  |  | ||||||
| #ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP | #ifdef USE_NEXTION_MAX_COMMANDS_PER_LOOP | ||||||
|   ESP_LOGCONFIG(TAG, "  Max commands per loop: %u", this->max_commands_per_loop_); |   ESP_LOGCONFIG(TAG, "  Max commands per loop: %u", this->max_commands_per_loop_); | ||||||
| #endif  // USE_NEXTION_MAX_COMMANDS_PER_LOOP | #endif  // USE_NEXTION_MAX_COMMANDS_PER_LOOP | ||||||
|   | |||||||
| @@ -932,21 +932,6 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
|    */ |    */ | ||||||
|   void set_backlight_brightness(float brightness); |   void set_backlight_brightness(float brightness); | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Sets whether the Nextion display should skip the connection handshake process. |  | ||||||
|    * @param skip_handshake True or false. When skip_connection_handshake is true, |  | ||||||
|    * the connection will be established without performing the handshake. |  | ||||||
|    * This can be useful when using Nextion Simulator. |  | ||||||
|    * |  | ||||||
|    * Example: |  | ||||||
|    * ```cpp |  | ||||||
|    * it.set_skip_connection_handshake(true); |  | ||||||
|    * ``` |  | ||||||
|    * |  | ||||||
|    * When set to true, the display will be marked as connected without performing a handshake. |  | ||||||
|    */ |  | ||||||
|   void set_skip_connection_handshake(bool skip_handshake) { this->skip_connection_handshake_ = skip_handshake; } |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * Sets Nextion mode between sleep and awake |    * Sets Nextion mode between sleep and awake | ||||||
|    * @param True or false. Sleep=true to enter sleep mode or sleep=false to exit sleep mode. |    * @param True or false. Sleep=true to enter sleep mode or sleep=false to exit sleep mode. | ||||||
| @@ -1236,20 +1221,6 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
|    */ |    */ | ||||||
|   void set_auto_wake_on_touch(bool auto_wake_on_touch); |   void set_auto_wake_on_touch(bool auto_wake_on_touch); | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * Sets if Nextion should exit the active reparse mode before the "connect" command is sent |  | ||||||
|    * @param exit_reparse_on_start True or false. When exit_reparse_on_start is true, the exit reparse command |  | ||||||
|    * will be sent before requesting the connection from Nextion. |  | ||||||
|    * |  | ||||||
|    * Example: |  | ||||||
|    * ```cpp |  | ||||||
|    * it.set_exit_reparse_on_start(true); |  | ||||||
|    * ``` |  | ||||||
|    * |  | ||||||
|    * The display will be requested to leave active reparse mode before setup. |  | ||||||
|    */ |  | ||||||
|   void set_exit_reparse_on_start(bool exit_reparse_on_start) { this->exit_reparse_on_start_ = exit_reparse_on_start; } |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * @brief Retrieves the number of commands pending in the Nextion command queue. |    * @brief Retrieves the number of commands pending in the Nextion command queue. | ||||||
|    * |    * | ||||||
| @@ -1292,7 +1263,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
|    * the Nextion display. A connection is considered established when: |    * the Nextion display. A connection is considered established when: | ||||||
|    * |    * | ||||||
|    * - The initial handshake with the display is completed successfully, or |    * - The initial handshake with the display is completed successfully, or | ||||||
|    * - The handshake is skipped via skip_connection_handshake_ flag |    * - The handshake is skipped via USE_NEXTION_CONFIG_SKIP_CONNECTION_HANDSHAKE flag | ||||||
|    * |    * | ||||||
|    * The connection status is particularly useful when: |    * The connection status is particularly useful when: | ||||||
|    * - Troubleshooting communication issues |    * - Troubleshooting communication issues | ||||||
| @@ -1358,8 +1329,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | |||||||
| #ifdef USE_NEXTION_CONF_START_UP_PAGE | #ifdef USE_NEXTION_CONF_START_UP_PAGE | ||||||
|   uint8_t start_up_page_ = 255; |   uint8_t start_up_page_ = 255; | ||||||
| #endif  // USE_NEXTION_CONF_START_UP_PAGE | #endif  // USE_NEXTION_CONF_START_UP_PAGE | ||||||
|   bool exit_reparse_on_start_ = false; |   bool auto_wake_on_touch_ = true; | ||||||
|   bool skip_connection_handshake_ = false; |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * Manually send a raw command to the display and don't wait for an acknowledgement packet. |    * Manually send a raw command to the display and don't wait for an acknowledgement packet. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user