mirror of
https://github.com/esphome/esphome.git
synced 2026-06-01 17:57:37 +08:00
[nextion] Use persistent http connection for TFT upload (Arduino) (#6582)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
@@ -976,6 +976,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* @return Whether the send was successful.
|
* @return Whether the send was successful.
|
||||||
*/
|
*/
|
||||||
bool send_command(const char *command);
|
bool send_command(const char *command);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manually send a raw formatted command to the display.
|
* Manually send a raw formatted command to the display.
|
||||||
* @param format The printf-style command format, like "vis %s,0"
|
* @param format The printf-style command format, like "vis %s,0"
|
||||||
@@ -989,7 +990,6 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* Set the tft file URL. https seems problematic with arduino..
|
* Set the tft file URL. https seems problematic with arduino..
|
||||||
*/
|
*/
|
||||||
void set_tft_url(const std::string &tft_url) { this->tft_url_ = tft_url; }
|
void set_tft_url(const std::string &tft_url) { this->tft_url_ = tft_url; }
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Uploads the TFT file to the Nextion display.
|
* @brief Uploads the TFT file to the Nextion display.
|
||||||
@@ -1013,6 +1013,8 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
*/
|
*/
|
||||||
bool upload_tft(uint32_t baud_rate = 0, bool exit_reparse = true);
|
bool upload_tft(uint32_t baud_rate = 0, bool exit_reparse = true);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1134,6 +1136,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
void all_components_send_state_(bool force_update = false);
|
void all_components_send_state_(bool force_update = false);
|
||||||
uint64_t comok_sent_ = 0;
|
uint64_t comok_sent_ = 0;
|
||||||
bool remove_from_q_(bool report_empty = true);
|
bool remove_from_q_(bool report_empty = true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
* Sends commands ignoring of the Nextion has been setup.
|
* Sends commands ignoring of the Nextion has been setup.
|
||||||
@@ -1175,20 +1178,16 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
void check_pending_waveform_();
|
void check_pending_waveform_();
|
||||||
|
|
||||||
#ifdef USE_NEXTION_TFT_UPLOAD
|
#ifdef USE_NEXTION_TFT_UPLOAD
|
||||||
uint32_t content_length_ = 0;
|
|
||||||
int tft_size_ = 0;
|
|
||||||
uint32_t original_baud_rate_ = 0;
|
|
||||||
bool upload_first_chunk_sent_ = false;
|
|
||||||
|
|
||||||
std::string tft_url_;
|
|
||||||
uint8_t *transfer_buffer_{nullptr};
|
|
||||||
size_t transfer_buffer_size_;
|
|
||||||
|
|
||||||
#ifdef USE_ESP8266
|
#ifdef USE_ESP8266
|
||||||
WiFiClient *wifi_client_{nullptr};
|
WiFiClient *wifi_client_{nullptr};
|
||||||
BearSSL::WiFiClientSecure *wifi_client_secure_{nullptr};
|
BearSSL::WiFiClientSecure *wifi_client_secure_{nullptr};
|
||||||
WiFiClient *get_wifi_client_();
|
WiFiClient *get_wifi_client_();
|
||||||
#endif
|
#endif
|
||||||
|
std::string tft_url_;
|
||||||
|
uint32_t content_length_ = 0;
|
||||||
|
int tft_size_ = 0;
|
||||||
|
uint32_t original_baud_rate_ = 0;
|
||||||
|
bool upload_first_chunk_sent_ = false;
|
||||||
|
|
||||||
#ifdef ARDUINO
|
#ifdef ARDUINO
|
||||||
/**
|
/**
|
||||||
@@ -1198,18 +1197,8 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* @param int range_start Position of next byte to transfer.
|
* @param int range_start Position of next byte to transfer.
|
||||||
* @return position of last byte transferred, -1 for failure.
|
* @return position of last byte transferred, -1 for failure.
|
||||||
*/
|
*/
|
||||||
int upload_by_chunks_(HTTPClient *http, int range_start);
|
int upload_by_chunks_(HTTPClient &http_client, uint32_t &range_start);
|
||||||
|
|
||||||
bool upload_with_range_(uint32_t range_start, uint32_t range_end);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* start update tft file to nextion.
|
|
||||||
*
|
|
||||||
* @param const uint8_t *file_buf
|
|
||||||
* @param size_t buf_size
|
|
||||||
* @return true if success, false for failure.
|
|
||||||
*/
|
|
||||||
bool upload_from_buffer_(const uint8_t *file_buf, size_t buf_size);
|
|
||||||
/**
|
/**
|
||||||
* Ends the upload process, restart Nextion and, if successful,
|
* Ends the upload process, restart Nextion and, if successful,
|
||||||
* restarts ESP
|
* restarts ESP
|
||||||
@@ -1217,6 +1206,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* @return bool True: Transfer completed successfuly, False: Transfer failed.
|
* @return bool True: Transfer completed successfuly, False: Transfer failed.
|
||||||
*/
|
*/
|
||||||
bool upload_end_(bool successful);
|
bool upload_end_(bool successful);
|
||||||
|
|
||||||
#elif defined(USE_ESP_IDF)
|
#elif defined(USE_ESP_IDF)
|
||||||
/**
|
/**
|
||||||
* will request 4096 bytes chunks from the web server
|
* will request 4096 bytes chunks from the web server
|
||||||
@@ -1226,6 +1216,7 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* @return position of last byte transferred, -1 for failure.
|
* @return position of last byte transferred, -1 for failure.
|
||||||
*/
|
*/
|
||||||
int upload_range(const std::string &url, int range_start);
|
int upload_range(const std::string &url, int range_start);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends the upload process, restart Nextion and, if successful,
|
* Ends the upload process, restart Nextion and, if successful,
|
||||||
* restarts ESP
|
* restarts ESP
|
||||||
@@ -1233,7 +1224,12 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe
|
|||||||
* @return bool True: Transfer completed successfuly, False: Transfer failed.
|
* @return bool True: Transfer completed successfuly, False: Transfer failed.
|
||||||
*/
|
*/
|
||||||
bool upload_end(bool successful);
|
bool upload_end(bool successful);
|
||||||
#endif // ARDUINO vs ESP-IDF
|
#endif // ARDUINO vs USE_ESP_IDF
|
||||||
|
/**
|
||||||
|
* Returns the ESP Free Heap memory. This is framework independent.
|
||||||
|
* @return Free Heap in bytes.
|
||||||
|
*/
|
||||||
|
uint32_t get_free_heap_();
|
||||||
|
|
||||||
#endif // USE_NEXTION_TFT_UPLOAD
|
#endif // USE_NEXTION_TFT_UPLOAD
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user