diff --git a/src/espmega_iot_core.hpp b/src/espmega_iot_core.hpp index 42582ed..959a19c 100644 --- a/src/espmega_iot_core.hpp +++ b/src/espmega_iot_core.hpp @@ -24,7 +24,7 @@ #include #include #endif -#include "lcd.hpp" +#include "espmega_iot_lcd.hpp" #ifdef ENABLE_CLIMATE_MODULE #include "ir_codes.hpp" diff --git a/src/espmega_iot_lcd.cpp b/src/espmega_iot_lcd.cpp new file mode 100644 index 0000000..d4c89b9 --- /dev/null +++ b/src/espmega_iot_lcd.cpp @@ -0,0 +1,73 @@ +#include +#include + +void lcd_send_stop_bit() +{ +#ifdef ENABLE_INTERNAL_LCD + Serial.write(0xFF); + Serial.write(0xFF); + Serial.write(0xFF); +#endif +} + +void lcd_send_command(String command) +{ +#ifdef ENABLE_INTERNAL_LCD + lcd_send_stop_bit(); + Serial.print(command); + lcd_send_stop_bit(); +#endif +} + +void lcd_reset() +{ +#ifdef ENABLE_INTERNAL_LCD + lcd_send_stop_bit(); + lcd_send_command("rest"); + lcd_send_stop_bit(); +#endif +} + +void lcd_init() +{ +#ifdef ENABLE_INTERNAL_LCD + lcd_reset(); + delay(750); +#endif +} + +bool lcd_upload_start(size_t size) +{ + Serial.begin(115200); + lcd_send_stop_bit(); + Serial.print("rest"); + lcd_send_stop_bit(); + Serial.print("connect"); + lcd_send_stop_bit(); + delay(1000); + Serial.print("whmi-wri 1024,115200,res0"); + lcd_send_stop_bit(); + lcd_wait_ack(); +} +bool lcd_upload_write(uint8_t *data, size_t size) +{ + for (int i = 0; i < size; i++) + { + Serial.write(data[i]); + } +} + +bool lcd_wait_ack() +{ + bool data_ok = false; + for (int i; i < 50; i++) + { + if (Serial.read() == 0x05) + { + data_ok = true; + break; + } + delay(100); + } + return data_ok; +} \ No newline at end of file diff --git a/src/espmega_iot_lcd.hpp b/src/espmega_iot_lcd.hpp new file mode 100644 index 0000000..0e70e3c --- /dev/null +++ b/src/espmega_iot_lcd.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include + + +void lcd_send_stop_bit(); +void lcd_send_command(String command); +String lcd_wait_response(); +void lcd_reset(); +void lcd_init(); + +bool lcd_upload_start(size_t size); +bool lcd_upload_write(uint8_t* data, size_t size); +bool lcd_wait_ack(); \ No newline at end of file diff --git a/src/lcd.cpp b/src/lcd.cpp deleted file mode 100644 index bf089c5..0000000 --- a/src/lcd.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include - -void lcd_send_stop_bit() -{ -#ifdef ENABLE_INTERNAL_LCD - Serial.write(0xFF); - Serial.write(0xFF); - Serial.write(0xFF); -#endif -} - -void lcd_send_command(String command) -{ -#ifdef ENABLE_INTERNAL_LCD - lcd_send_stop_bit(); - Serial.print(command); - lcd_send_stop_bit(); -#endif -} - -void lcd_reset() -{ -#ifdef ENABLE_INTERNAL_LCD - lcd_send_stop_bit(); - lcd_send_command("rest"); - lcd_send_stop_bit(); -#endif -} - -void lcd_init() -{ -#ifdef ENABLE_INTERNAL_LCD - lcd_reset(); - delay(750); -#endif -} \ No newline at end of file diff --git a/src/lcd.hpp b/src/lcd.hpp deleted file mode 100644 index 321410c..0000000 --- a/src/lcd.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef EMG_LCD_ENABLED -#include - -#define EMG_LCD_ENABLED - -void lcd_send_stop_bit(); -void lcd_send_command(String command); -String lcd_wait_response(); -void lcd_reset(); -void lcd_init(); -#endif \ No newline at end of file