mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-06 12:51:28 -08:00
* Adding new library, changing way of displaying texts (#118) * Adding custom icon for language button * Adding new library, changing way of displaying texts Added new library to make incoming translation possible to exists at the same time. * Prepare for flipper integration * More flipper wifi dev board work * Add command parse * Add set channel * Create bins for release v0.9.6 Co-authored-by: mlodawy <105587112+mlodawy@users.noreply.github.com>
136 lines
2.9 KiB
C++
136 lines
2.9 KiB
C++
#include "esp_interface.h"
|
|
|
|
HardwareSerial MySerial(1);
|
|
|
|
void EspInterface::begin() {
|
|
pinMode(ESP_RST, OUTPUT);
|
|
pinMode(ESP_ZERO, OUTPUT);
|
|
|
|
delay(100);
|
|
|
|
digitalWrite(ESP_ZERO, HIGH);
|
|
|
|
Serial.println("Checking for ESP8266...");
|
|
|
|
MySerial.begin(BAUD, SERIAL_8N1, 27, 26);
|
|
|
|
delay(100);
|
|
|
|
#ifdef HAS_SCREEN
|
|
display_obj.tft.println("Checking for ESP8266...");
|
|
#endif
|
|
|
|
this->bootRunMode();
|
|
|
|
delay(500);
|
|
|
|
while (MySerial.available())
|
|
MySerial.read();
|
|
|
|
MySerial.write("PING");
|
|
|
|
delay(2000);
|
|
|
|
String display_string = "";
|
|
|
|
while (MySerial.available()) {
|
|
display_string.concat((char)MySerial.read());
|
|
}
|
|
|
|
display_string.trim();
|
|
|
|
Serial.println("\nDisplay string: " + (String)display_string);
|
|
|
|
if (display_string == "ESP8266 Pong") {
|
|
#ifdef HAS_SCREEN
|
|
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
|
display_obj.tft.println("ESP8266 Found!");
|
|
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
|
|
#endif
|
|
Serial.println("ESP8266 Found!");
|
|
this->supported = true;
|
|
}
|
|
else {
|
|
#ifdef HAS_SCREEN
|
|
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
|
|
display_obj.tft.println("ESP8266 Not Found");
|
|
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
|
|
#endif
|
|
}
|
|
|
|
this->initTime = millis();
|
|
}
|
|
|
|
void EspInterface::RunUpdate() {
|
|
this->bootProgramMode();
|
|
#ifdef HAS_SCREEN
|
|
display_obj.tft.setTextWrap(true);
|
|
display_obj.tft.setFreeFont(NULL);
|
|
display_obj.tft.setCursor(0, 100);
|
|
display_obj.tft.setTextSize(1);
|
|
display_obj.tft.setTextColor(TFT_GREEN);
|
|
|
|
display_obj.tft.println("Waiting for serial data...");
|
|
|
|
display_obj.tft.setTextColor(TFT_WHITE);
|
|
#endif
|
|
}
|
|
|
|
void EspInterface::bootProgramMode() {
|
|
Serial.println("[!] Setting ESP12 in program mode...");
|
|
digitalWrite(ESP_ZERO, LOW);
|
|
delay(100);
|
|
digitalWrite(ESP_RST, LOW);
|
|
delay(100);
|
|
digitalWrite(ESP_RST, HIGH);
|
|
delay(100);
|
|
digitalWrite(ESP_ZERO, HIGH);
|
|
Serial.println("[!] Complete");
|
|
Serial.end();
|
|
Serial.begin(57600);
|
|
}
|
|
|
|
void EspInterface::bootRunMode() {
|
|
Serial.end();
|
|
Serial.begin(115200);
|
|
Serial.println("[!] Setting ESP12 in run mode...");
|
|
digitalWrite(ESP_ZERO, HIGH);
|
|
delay(100);
|
|
digitalWrite(ESP_RST, LOW);
|
|
delay(100);
|
|
digitalWrite(ESP_RST, HIGH);
|
|
delay(100);
|
|
digitalWrite(ESP_ZERO, HIGH);
|
|
Serial.println("[!] Complete");
|
|
}
|
|
|
|
void EspInterface::program() {
|
|
if (MySerial.available()) {
|
|
Serial.write((uint8_t)MySerial.read());
|
|
}
|
|
|
|
if (Serial.available()) {
|
|
#ifdef HAS_SCREEN
|
|
display_obj.tft.print(".");
|
|
#endif
|
|
while (Serial.available()) {
|
|
MySerial.write((uint8_t)Serial.read());
|
|
}
|
|
}
|
|
}
|
|
|
|
void EspInterface::main(uint32_t current_time) {
|
|
if (current_time - this->initTime >= 1000) {
|
|
this->initTime = millis();
|
|
//MySerial.write("PING");
|
|
}
|
|
|
|
while (MySerial.available()) {
|
|
Serial.print((char)MySerial.read());
|
|
}
|
|
|
|
if (Serial.available()) {
|
|
MySerial.write((uint8_t)Serial.read());
|
|
}
|
|
}
|