Compare commits

..

No commits in common. "6b8cf164e9a5af84c40d403c5102102c0c73db42" and "25a5f178e197dd0dede16063a7002c7768ad9318" have entirely different histories.

9 changed files with 178 additions and 125 deletions

View File

@ -73,7 +73,7 @@ shift "$((OPTIND - 1))"
if [ -f "${FILENAME}" ] && [ -n "${FILENAME##*"update"*}" ]; then if [ -f "${FILENAME}" ] && [ -n "${FILENAME##*"update"*}" ]; then
echo "Trying to flash ${FILENAME}, but first erasing and writing system information" echo "Trying to flash ${FILENAME}, but first erasing and writing system information"
$ESPTOOL_CMD erase_flash $ESPTOOL_CMD erase_flash
$ESPTOOL_CMD write_flash 0x00 "${FILENAME}" $ESPTOOL_CMD write_flash 0x00 ${FILENAME}
# Account for S3 board's different OTA partition # Account for S3 board's different OTA partition
if [ -n "${FILENAME##*"s3"*}" ] && [ -n "${FILENAME##*"-v3"*}" ] && [ -n "${FILENAME##*"t-deck"*}" ] && [ -n "${FILENAME##*"wireless-paper"*}" ] && [ -n "${FILENAME##*"wireless-tracker"*}" ] && [ -n "${FILENAME##*"station-g2"*}" ] && [ -n "${FILENAME##*"unphone"*}" ]; then if [ -n "${FILENAME##*"s3"*}" ] && [ -n "${FILENAME##*"-v3"*}" ] && [ -n "${FILENAME##*"t-deck"*}" ] && [ -n "${FILENAME##*"wireless-paper"*}" ] && [ -n "${FILENAME##*"wireless-tracker"*}" ] && [ -n "${FILENAME##*"station-g2"*}" ] && [ -n "${FILENAME##*"unphone"*}" ]; then
if [ -n "${FILENAME##*"esp32c3"*}" ]; then if [ -n "${FILENAME##*"esp32c3"*}" ]; then

View File

@ -92,7 +92,6 @@ NRF52Bluetooth *nrf52Bluetooth = nullptr;
#include "mesh/raspihttp/PiWebServer.h" #include "mesh/raspihttp/PiWebServer.h"
#include "platform/portduino/PortduinoGlue.h" #include "platform/portduino/PortduinoGlue.h"
#include "platform/portduino/USBHal.h" #include "platform/portduino/USBHal.h"
#include <cstdlib>
#include <fstream> #include <fstream>
#include <iostream> #include <iostream>
#include <string> #include <string>
@ -1160,7 +1159,6 @@ void setup()
#if __has_include(<ulfius.h>) #if __has_include(<ulfius.h>)
if (settingsMap[webserverport] != -1) { if (settingsMap[webserverport] != -1) {
piwebServerThread = new PiWebServerThread(); piwebServerThread = new PiWebServerThread();
std::atexit([] { delete piwebServerThread; });
} }
#endif #endif
initApiServer(TCPPort); initApiServer(TCPPort);

View File

@ -297,7 +297,7 @@ uint32_t RadioInterface::getTxDelayMsecWeighted(float snr)
void printPacket(const char *prefix, const meshtastic_MeshPacket *p) void printPacket(const char *prefix, const meshtastic_MeshPacket *p)
{ {
#if defined(DEBUG_PORT) && !defined(DEBUG_MUTE) #ifdef DEBUG_PORT
std::string out = DEBUG_PORT.mt_sprintf("%s (id=0x%08x fr=0x%08x to=0x%08x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id, std::string out = DEBUG_PORT.mt_sprintf("%s (id=0x%08x fr=0x%08x to=0x%08x, WantAck=%d, HopLim=%d Ch=0x%x", prefix, p->id,
p->from, p->to, p->want_ack, p->hop_limit, p->channel); p->from, p->to, p->want_ack, p->hop_limit, p->channel);
if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) { if (p->which_payload_variant == meshtastic_MeshPacket_decoded_tag) {

View File

@ -501,13 +501,14 @@ bool RadioLibInterface::startSend(meshtastic_MeshPacket *txp)
powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now powerMon->clearState(meshtastic_PowerMon_State_Lora_TXOn); // Transmitter off now
startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode) startReceive(); // Restart receive mode (because startTransmit failed to put us in xmit mode)
} else { } else {
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
// bits
enableInterrupt(isrTxLevel0);
lastTxStart = millis(); lastTxStart = millis();
printPacket("Started Tx", txp); printPacket("Started Tx", txp);
} }
// Must be done AFTER, starting transmit, because startTransmit clears (possibly stale) interrupt pending register
// bits
enableInterrupt(isrTxLevel0);
return res == RADIOLIB_ERR_NONE; return res == RADIOLIB_ERR_NONE;
} }
} }

View File

@ -82,6 +82,8 @@ char contentTypes[][2][32] = {{".txt", "text/plain"}, {".html", "text/html"
volatile bool isWebServerReady; volatile bool isWebServerReady;
volatile bool isCertReady; volatile bool isCertReady;
HttpAPI webAPI;
PiWebServerThread *piwebServerThread; PiWebServerThread *piwebServerThread;
/** /**
@ -245,7 +247,7 @@ int handleAPIv1ToRadio(const struct _u_request *req, struct _u_response *res, vo
portduinoVFS->mountpoint(configWeb.rootPath); portduinoVFS->mountpoint(configWeb.rootPath);
LOG_DEBUG("Received %d bytes from PUT request", s); LOG_DEBUG("Received %d bytes from PUT request", s);
static_cast<HttpAPI *>(user_data)->handleToRadio(buffer, s); webAPI.handleToRadio(buffer, s);
LOG_DEBUG("end web->radio "); LOG_DEBUG("end web->radio ");
return U_CALLBACK_COMPLETE; return U_CALLBACK_COMPLETE;
} }
@ -277,7 +279,7 @@ int handleAPIv1FromRadio(const struct _u_request *req, struct _u_response *res,
if (valueAll == "true") { if (valueAll == "true") {
while (len) { while (len) {
len = static_cast<HttpAPI *>(user_data)->getFromRadio(txBuf); len = webAPI.getFromRadio(txBuf);
ulfius_set_response_properties(res, U_OPT_STATUS, 200, U_OPT_BINARY_BODY, txBuf, len); ulfius_set_response_properties(res, U_OPT_STATUS, 200, U_OPT_BINARY_BODY, txBuf, len);
const char *tmpa = (const char *)txBuf; const char *tmpa = (const char *)txBuf;
ulfius_set_string_body_response(res, 200, tmpa); ulfius_set_string_body_response(res, 200, tmpa);
@ -287,7 +289,7 @@ int handleAPIv1FromRadio(const struct _u_request *req, struct _u_response *res,
} }
// Otherwise, just return one protobuf // Otherwise, just return one protobuf
} else { } else {
len = static_cast<HttpAPI *>(user_data)->getFromRadio(txBuf); len = webAPI.getFromRadio(txBuf);
const char *tmpa = (const char *)txBuf; const char *tmpa = (const char *)txBuf;
ulfius_set_binary_body_response(res, 200, tmpa, len); ulfius_set_binary_body_response(res, 200, tmpa, len);
// LOG_DEBUG("\n----webAPI response:"); // LOG_DEBUG("\n----webAPI response:");
@ -495,10 +497,10 @@ PiWebServerThread::PiWebServerThread()
u_map_put(instanceWeb.default_headers, "Access-Control-Allow-Origin", "*"); u_map_put(instanceWeb.default_headers, "Access-Control-Allow-Origin", "*");
// Maximum body size sent by the client is 1 Kb // Maximum body size sent by the client is 1 Kb
instanceWeb.max_post_body_size = 1024; instanceWeb.max_post_body_size = 1024;
ulfius_add_endpoint_by_val(&instanceWeb, "GET", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, &webAPI); ulfius_add_endpoint_by_val(&instanceWeb, "GET", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, NULL);
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, &webAPI); ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/fromradio/*", 1, &handleAPIv1FromRadio, NULL);
ulfius_add_endpoint_by_val(&instanceWeb, "PUT", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, &webAPI); ulfius_add_endpoint_by_val(&instanceWeb, "PUT", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, configWeb.rootPath);
ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, &webAPI); ulfius_add_endpoint_by_val(&instanceWeb, "OPTIONS", PREFIX, "/api/v1/toradio/*", 1, &handleAPIv1ToRadio, NULL);
// Add callback function to all endpoints for the Web Server // Add callback function to all endpoints for the Web Server
ulfius_add_endpoint_by_val(&instanceWeb, "GET", NULL, "/*", 2, &callback_static_file, &configWeb); ulfius_add_endpoint_by_val(&instanceWeb, "GET", NULL, "/*", 2, &callback_static_file, &configWeb);
@ -523,9 +525,10 @@ PiWebServerThread::~PiWebServerThread()
u_map_clean(&configWeb.mime_types); u_map_clean(&configWeb.mime_types);
ulfius_stop_framework(&instanceWeb); ulfius_stop_framework(&instanceWeb);
ulfius_clean_instance(&instanceWeb); ulfius_stop_framework(&instanceWeb);
free(configWeb.rootPath); free(configWeb.rootPath);
free(key_pem); ulfius_clean_instance(&instanceService);
ulfius_clean_instance(&instanceService);
free(cert_pem); free(cert_pem);
LOG_INFO("End framework"); LOG_INFO("End framework");
} }

View File

@ -23,6 +23,24 @@ struct _file_config {
char *rootPath; char *rootPath;
}; };
class PiWebServerThread
{
private:
char *key_pem = NULL;
char *cert_pem = NULL;
// struct _u_map mime_types;
std::string webrootpath;
public:
PiWebServerThread();
~PiWebServerThread();
int CreateSSLCertificate();
int CheckSSLandLoad();
uint32_t requestRestart = 0;
struct _u_instance instanceWeb;
struct _u_instance instanceService;
};
class HttpAPI : public PhoneAPI class HttpAPI : public PhoneAPI
{ {
@ -37,24 +55,6 @@ class HttpAPI : public PhoneAPI
virtual bool checkIsConnected() override { return true; } // FIXME, be smarter about this virtual bool checkIsConnected() override { return true; } // FIXME, be smarter about this
}; };
class PiWebServerThread
{
private:
char *key_pem = NULL;
char *cert_pem = NULL;
// struct _u_map mime_types;
std::string webrootpath;
HttpAPI webAPI;
public:
PiWebServerThread();
~PiWebServerThread();
int CreateSSLCertificate();
int CheckSSLandLoad();
uint32_t requestRestart = 0;
struct _u_instance instanceWeb;
};
extern PiWebServerThread *piwebServerThread; extern PiWebServerThread *piwebServerThread;
#endif #endif

View File

@ -56,9 +56,93 @@ build_src_filter = ${esp32_base.build_src_filter}
lib_deps = ${esp32_base.lib_deps} lib_deps = ${esp32_base.lib_deps}
lovyan03/LovyanGFX@^1.1.16 lovyan03/LovyanGFX@^1.1.16
[mesh_tab_xpt2046] ; 3.2" TN TFT ST7789 / XPT2046: https://vi.aliexpress.com/item/1005005933490544.html
[env:mesh-tab-3-2-TN-resistive]
extends = mesh_tab_base extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags} build_flags = ${mesh_tab_base.build_flags}
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
-D LGFX_PANEL=ST7789
-D LGFX_INVERT_COLOR=false
-D LGFX_RGB_ORDER=false
-D LGFX_ROTATION=3
-D LGFX_TOUCH=XPT2046
-D SPI_FREQUENCY=60000000
-D LGFX_TOUCH_SPI_FREQ=2500000
-D LGFX_TOUCH_SPI_HOST=2
-D LGFX_TOUCH_CS=7
-D LGFX_TOUCH_CLK=12
-D LGFX_TOUCH_DO=11
-D LGFX_TOUCH_DIN=13
-D LGFX_TOUCH_X_MIN=300
-D LGFX_TOUCH_X_MAX=3900
-D LGFX_TOUCH_Y_MIN=400
-D LGFX_TOUCH_Y_MAX=3900
-D LGFX_TOUCH_ROTATION=4
; 3.2" IPS TFT ILI9341 / XPT2046: https://www.aliexpress.com/item/1005006258575617.html
[env:mesh-tab-3-2-IPS-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags}
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
-D LGFX_PANEL=ILI9341
-D LGFX_INVERT_COLOR=true
-D LGFX_RGB_ORDER=false
-D LGFX_ROTATION=1
-D LGFX_TOUCH=XPT2046
-D SPI_FREQUENCY=60000000 ; if image is distorted then lower to 40 MHz
-D LGFX_TOUCH_SPI_FREQ=2500000
-D LGFX_TOUCH_SPI_HOST=2
-D LGFX_TOUCH_CS=7
-D LGFX_TOUCH_CLK=12
-D LGFX_TOUCH_DO=11
-D LGFX_TOUCH_DIN=13
-D LGFX_TOUCH_X_MIN=300
-D LGFX_TOUCH_X_MAX=3900
-D LGFX_TOUCH_Y_MIN=400
-D LGFX_TOUCH_Y_MAX=3900
-D LGFX_TOUCH_ROTATION=4
; 3.5" IPS TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/1005006333922639.html
[env:mesh-tab-3-5-IPS-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=ILI9488
-D LGFX_INVERT_COLOR=true
-D LGFX_RGB_ORDER=false
-D LGFX_DLEN_16BITS=false
-D LGFX_ROTATION=0
-D LGFX_TOUCH=XPT2046
-D SPI_FREQUENCY=40000000 ; may go higher upto 40/60/80 MHz
-D LGFX_TOUCH_SPI_FREQ=2500000
-D LGFX_TOUCH_SPI_HOST=2
-D LGFX_TOUCH_CS=7
-D LGFX_TOUCH_CLK=12
-D LGFX_TOUCH_DO=11
-D LGFX_TOUCH_DIN=13
-D LGFX_TOUCH_X_MIN=300
-D LGFX_TOUCH_X_MAX=3900
-D LGFX_TOUCH_Y_MIN=400
-D LGFX_TOUCH_Y_MAX=3900
-D LGFX_TOUCH_ROTATION=0
; 3.5" TN TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/32985467436.html
[env:mesh-tab-3-5-TN-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=HX8357B
-D SPI_FREQUENCY=60000000
-D LGFX_INVERT_COLOR=false
-D LGFX_RGB_ORDER=false
-D LGFX_DLEN_16BITS=false
-D LGFX_ROTATION=4
-D LGFX_TOUCH=XPT2046 -D LGFX_TOUCH=XPT2046
-D LGFX_TOUCH_SPI_FREQ=2500000 -D LGFX_TOUCH_SPI_FREQ=2500000
-D LGFX_TOUCH_SPI_HOST=2 -D LGFX_TOUCH_SPI_HOST=2
@ -70,109 +154,80 @@ build_flags = ${mesh_tab_base.build_flags}
-D LGFX_TOUCH_X_MAX=3900 -D LGFX_TOUCH_X_MAX=3900
-D LGFX_TOUCH_Y_MIN=400 -D LGFX_TOUCH_Y_MIN=400
-D LGFX_TOUCH_Y_MAX=3900 -D LGFX_TOUCH_Y_MAX=3900
[mesh_tab_ft5x06]
extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags}
-D LGFX_TOUCH=FT5x06
-D LGFX_TOUCH_I2C_FREQ=400000
-D LGFX_TOUCH_I2C_PORT=0
-D LGFX_TOUCH_I2C_ADDR=0x38
-D LGFX_TOUCH_I2C_SDA=8
-D LGFX_TOUCH_I2C_SCL=9
-D LGFX_TOUCH_RST=7
; 3.2" TN TFT ST7789 / XPT2046: https://vi.aliexpress.com/item/1005005933490544.html
[env:mesh-tab-3-2-TN-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
-D LGFX_PANEL=ST7789
-D LGFX_INVERT_COLOR=false
-D LGFX_ROTATION=3
-D LGFX_TOUCH_ROTATION=4
; 3.2" IPS TFT ILI9341 / XPT2046: https://www.aliexpress.com/item/1005006258575617.html
[env:mesh-tab-3-2-IPS-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000 ; if image is distorted then lower to 40 MHz
-D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320
-D LGFX_PANEL=ILI9341
-D LGFX_ROTATION=1
-D LGFX_TOUCH_ROTATION=4
; 3.5" IPS TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/1005006333922639.html
[env:mesh-tab-3-5-IPS-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000 ; may go higher upto 40/60/80 MHz
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=0
-D LGFX_TOUCH_ROTATION=0
; 3.5" TN TFT ILI9488 / XPT2046: https://vi.aliexpress.com/item/32985467436.html
[env:mesh-tab-3-5-TN-resistive]
extends = mesh_tab_base
build_flags = ${mesh_tab_xpt2046.build_flags}
-D SPI_FREQUENCY=60000000
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=HX8357B
-D LGFX_INVERT_COLOR=false
-D LGFX_ROTATION=4
-D LGFX_TOUCH_ROTATION=2 -D LGFX_TOUCH_ROTATION=2
; 3.2" IPS TFT ILI9341 / FT6236: https://vi.aliexpress.com/item/1005006624072350.html ; 3.2" IPS TFT ILI9341 / FT6236: https://vi.aliexpress.com/item/1005006624072350.html
[env:mesh-tab-3-2-IPS-capacitive] [env:mesh-tab-3-2-IPS-capacitive]
extends = mesh_tab_base extends = mesh_tab_base
build_flags = ${mesh_tab_ft5x06.build_flags} build_flags = ${mesh_tab_base.build_flags}
-D SPI_FREQUENCY=75000000 ; may go higher upto 60/80 MHz
-D LGFX_SCREEN_WIDTH=240 -D LGFX_SCREEN_WIDTH=240
-D LGFX_SCREEN_HEIGHT=320 -D LGFX_SCREEN_HEIGHT=320
-D LGFX_PANEL=ILI9341 -D LGFX_PANEL=ILI9341
-D LGFX_INVERT_COLOR=true
-D LGFX_RGB_ORDER=false
-D LGFX_ROTATION=1 -D LGFX_ROTATION=1
-D LGFX_TOUCH_X_MIN=0 -D LGFX_TOUCH=FT5x06
-D LGFX_TOUCH_X_MAX=239 -D SPI_FREQUENCY=40000000 ; may go higher upto 60/80 MHz
-D LGFX_TOUCH_Y_MIN=0 -D LGFX_TOUCH_I2C_PORT=0
-D LGFX_TOUCH_Y_MAX=319 -D LGFX_TOUCH_I2C_ADDR=0x38
-D LGFX_TOUCH_ROTATION=2 -D LGFX_TOUCH_I2C_SDA=8
-D LGFX_TOUCH_I2C_SCL=9
; 3.5" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005006893699919.html -D LGFX_TOUCH_RST=7
[env:mesh-tab-3-5-IPS-capacitive]
extends = mesh_tab_base
build_flags = ${mesh_tab_ft5x06.build_flags}
-D SPI_FREQUENCY=75000000 ; may go higher upto 40/60/80 MHz
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=2
-D LGFX_TOUCH_X_MIN=0 -D LGFX_TOUCH_X_MIN=0
-D LGFX_TOUCH_X_MAX=319 -D LGFX_TOUCH_X_MAX=319
-D LGFX_TOUCH_Y_MIN=0 -D LGFX_TOUCH_Y_MIN=0
-D LGFX_TOUCH_Y_MAX=479 -D LGFX_TOUCH_Y_MAX=479
-D LGFX_TOUCH_ROTATION=0 -D LGFX_TOUCH_ROTATION=0
-D LGFX_TOUCH_I2C_FREQ=400000
; 4.0" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005007082906950.html ; 3.5" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005006893699919.html
[env:mesh-tab-4-0-IPS-capacitive] [env:mesh-tab-3-5-IPS-capacitive]
extends = mesh_tab_base extends = mesh_tab_base
build_flags = ${mesh_tab_ft5x06.build_flags} build_flags = ${mesh_tab_base.build_flags}
-D SPI_FREQUENCY=75000000
-D DISPLAY_SET_RESOLUTION -D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320 -D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480 -D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=HX8357B -D LGFX_PANEL=ILI9488
-D LGFX_ROTATION=4 -D LGFX_INVERT_COLOR=true
-D LGFX_RGB_ORDER=false
-D LGFX_DLEN_16BITS=false
-D LGFX_ROTATION=1
-D LGFX_TOUCH=FT5x06
-D SPI_FREQUENCY=30000000 ; may go higher upto 40/60/80 MHz
-D LGFX_TOUCH_I2C_PORT=0
-D LGFX_TOUCH_I2C_ADDR=0x38
-D LGFX_TOUCH_I2C_SDA=8
-D LGFX_TOUCH_I2C_SCL=9
-D LGFX_TOUCH_RST=7
-D LGFX_TOUCH_X_MIN=0 -D LGFX_TOUCH_X_MIN=0
-D LGFX_TOUCH_X_MAX=319 -D LGFX_TOUCH_X_MAX=319
-D LGFX_TOUCH_Y_MIN=0 -D LGFX_TOUCH_Y_MIN=0
-D LGFX_TOUCH_Y_MAX=479 -D LGFX_TOUCH_Y_MAX=479
-D LGFX_TOUCH_ROTATION=6 -D LGFX_TOUCH_ROTATION=1
-D LGFX_TOUCH_I2C_FREQ=400000
; 4.0" IPS TFT ILI9488 / FT6236: https://vi.aliexpress.com/item/1005007082906950.html
[env:mesh-tab-4-0-IPS-capacitive]
extends = mesh_tab_base
build_flags = ${mesh_tab_base.build_flags}
-D DISPLAY_SET_RESOLUTION
-D LGFX_SCREEN_WIDTH=320
-D LGFX_SCREEN_HEIGHT=480
-D LGFX_PANEL=HX8357B
-D LGFX_INVERT_COLOR=true
-D LGFX_RGB_ORDER=false
-D LGFX_DLEN_16BITS=false
-D LGFX_ROTATION=4
-D LGFX_TOUCH=FT5x06
-D SPI_FREQUENCY=30000000 ; may go higher upto 40/60/80 MHz
-D LGFX_TOUCH_I2C_PORT=0
-D LGFX_TOUCH_I2C_ADDR=0x38
-D LGFX_TOUCH_I2C_SDA=8
-D LGFX_TOUCH_I2C_SCL=9
-D LGFX_TOUCH_RST=7
-D LGFX_TOUCH_X_MIN=0
-D LGFX_TOUCH_X_MAX=319
-D LGFX_TOUCH_Y_MIN=0
-D LGFX_TOUCH_Y_MAX=479
-D LGFX_TOUCH_ROTATION=1
-D LGFX_TOUCH_I2C_FREQ=400000

View File

@ -28,8 +28,6 @@ build_flags =
-DHAL_TIM_MODULE_DISABLED -DHAL_TIM_MODULE_DISABLED
-DHAL_WWDG_MODULE_DISABLED -DHAL_WWDG_MODULE_DISABLED
-DHAL_EXTI_MODULE_DISABLED -DHAL_EXTI_MODULE_DISABLED
-DHAL_SAI_MODULE_DISABLED
-DHAL_ICACHE_MODULE_DISABLED
-DRADIOLIB_EXCLUDE_SX128X=1 -DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1 -DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1 -DRADIOLIB_EXCLUDE_LR11X0=1

View File

@ -28,8 +28,6 @@ build_flags =
-DHAL_TIM_MODULE_DISABLED -DHAL_TIM_MODULE_DISABLED
-DHAL_WWDG_MODULE_DISABLED -DHAL_WWDG_MODULE_DISABLED
-DHAL_EXTI_MODULE_DISABLED -DHAL_EXTI_MODULE_DISABLED
-DHAL_SAI_MODULE_DISABLED
-DHAL_ICACHE_MODULE_DISABLED
-DRADIOLIB_EXCLUDE_SX128X=1 -DRADIOLIB_EXCLUDE_SX128X=1
-DRADIOLIB_EXCLUDE_SX127X=1 -DRADIOLIB_EXCLUDE_SX127X=1
-DRADIOLIB_EXCLUDE_LR11X0=1 -DRADIOLIB_EXCLUDE_LR11X0=1