Merge branch 'master' into tft-gui-work

This commit is contained in:
Manuel 2024-12-31 17:56:36 +01:00 committed by GitHub
commit 1d168a17af
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 90 additions and 58 deletions

View File

@ -30,6 +30,7 @@ default_envs = tbeam
;default_envs = rak4631 ;default_envs = rak4631
;default_envs = rak4631_eth_gw ;default_envs = rak4631_eth_gw
;default_envs = rak2560 ;default_envs = rak2560
;default_envs = rak11310
;default_envs = rak_wismeshtap ;default_envs = rak_wismeshtap
;default_envs = wio-e5 ;default_envs = wio-e5
;default_envs = radiomaster_900_bandit_nano ;default_envs = radiomaster_900_bandit_nano
@ -165,4 +166,4 @@ lib_deps =
robtillaart/INA226@0.6.0 robtillaart/INA226@0.6.0
; Health Sensor Libraries ; Health Sensor Libraries
sparkfun/SparkFun MAX3010x Pulse and Proximity Sensor Library@1.1.2 sparkfun/SparkFun MAX3010x Pulse and Proximity Sensor Library@1.1.2

View File

@ -1506,7 +1506,7 @@ Screen::Screen(ScanI2C::DeviceAddress address, meshtastic_Config_DisplayConfig_O
#elif defined(USE_ST7567) #elif defined(USE_ST7567)
dispdev = new ST7567Wire(address.address, -1, -1, geometry, dispdev = new ST7567Wire(address.address, -1, -1, geometry,
(address.port == ScanI2C::I2CPort::WIRE1) ? HW_I2C::I2C_TWO : HW_I2C::I2C_ONE); (address.port == ScanI2C::I2CPort::WIRE1) ? HW_I2C::I2C_TWO : HW_I2C::I2C_ONE);
#elif ARCH_PORTDUINO #elif ARCH_PORTDUINO && !HAS_TFT
if (settingsMap[displayPanel] != no_screen) { if (settingsMap[displayPanel] != no_screen) {
LOG_DEBUG("Make TFTDisplay!"); LOG_DEBUG("Make TFTDisplay!");
dispdev = new TFTDisplay(address.address, -1, -1, geometry, dispdev = new TFTDisplay(address.address, -1, -1, geometry,
@ -2756,4 +2756,4 @@ int Screen::handleAdminMessage(const meshtastic_AdminMessage *arg)
} // namespace graphics } // namespace graphics
#else #else
graphics::Screen::Screen(ScanI2C::DeviceAddress, meshtastic_Config_DisplayConfig_OledType, OLEDDISPLAY_GEOMETRY) {} graphics::Screen::Screen(ScanI2C::DeviceAddress, meshtastic_Config_DisplayConfig_OledType, OLEDDISPLAY_GEOMETRY) {}
#endif // HAS_SCREEN #endif // HAS_SCREEN

View File

@ -999,8 +999,11 @@ void NodeDB::loadFromDisk()
// Make sure we load hard coded admin keys even when the configuration file has none. // Make sure we load hard coded admin keys even when the configuration file has none.
// Initialize admin_key_count to zero // Initialize admin_key_count to zero
byte numAdminKeys = 0; byte numAdminKeys = 0;
#if defined(USERPREFS_USE_ADMIN_KEY_0) || defined(USERPREFS_USE_ADMIN_KEY_1) || defined(USERPREFS_USE_ADMIN_KEY_2)
uint16_t sum = 0; uint16_t sum = 0;
#endif
#ifdef USERPREFS_USE_ADMIN_KEY_0 #ifdef USERPREFS_USE_ADMIN_KEY_0
for (uint8_t b = 0; b < 32; b++) { for (uint8_t b = 0; b < 32; b++) {
sum += config.security.admin_key[0].bytes[b]; sum += config.security.admin_key[0].bytes[b];
} }
@ -1009,8 +1012,6 @@ void NodeDB::loadFromDisk()
LOG_INFO("Admin 0 key zero. Loading hard coded key from user preferences."); LOG_INFO("Admin 0 key zero. Loading hard coded key from user preferences.");
memcpy(config.security.admin_key[0].bytes, userprefs_admin_key_0, 32); memcpy(config.security.admin_key[0].bytes, userprefs_admin_key_0, 32);
config.security.admin_key[0].size = 32; config.security.admin_key[0].size = 32;
config.security.admin_key_count = numAdminKeys;
saveToDisk(SEGMENT_CONFIG);
} }
#endif #endif
@ -1024,8 +1025,6 @@ void NodeDB::loadFromDisk()
LOG_INFO("Admin 1 key zero. Loading hard coded key from user preferences."); LOG_INFO("Admin 1 key zero. Loading hard coded key from user preferences.");
memcpy(config.security.admin_key[1].bytes, userprefs_admin_key_1, 32); memcpy(config.security.admin_key[1].bytes, userprefs_admin_key_1, 32);
config.security.admin_key[1].size = 32; config.security.admin_key[1].size = 32;
config.security.admin_key_count = numAdminKeys;
saveToDisk(SEGMENT_CONFIG);
} }
#endif #endif
@ -1039,10 +1038,14 @@ void NodeDB::loadFromDisk()
LOG_INFO("Admin 2 key zero. Loading hard coded key from user preferences."); LOG_INFO("Admin 2 key zero. Loading hard coded key from user preferences.");
memcpy(config.security.admin_key[2].bytes, userprefs_admin_key_2, 32); memcpy(config.security.admin_key[2].bytes, userprefs_admin_key_2, 32);
config.security.admin_key[2].size = 32; config.security.admin_key[2].size = 32;
}
#endif
if (numAdminKeys > 0) {
LOG_INFO("Saving %d hard coded admin keys.", numAdminKeys);
config.security.admin_key_count = numAdminKeys; config.security.admin_key_count = numAdminKeys;
saveToDisk(SEGMENT_CONFIG); saveToDisk(SEGMENT_CONFIG);
} }
#endif
state = loadProto(moduleConfigFileName, meshtastic_LocalModuleConfig_size, sizeof(meshtastic_LocalModuleConfig), state = loadProto(moduleConfigFileName, meshtastic_LocalModuleConfig_size, sizeof(meshtastic_LocalModuleConfig),
&meshtastic_LocalModuleConfig_msg, &moduleConfig); &meshtastic_LocalModuleConfig_msg, &moduleConfig);

View File

@ -108,6 +108,11 @@ static int32_t reconnectETH()
bool initEthernet() bool initEthernet()
{ {
if (config.network.eth_enabled) { if (config.network.eth_enabled) {
#ifdef PIN_ETH_POWER_EN
pinMode(PIN_ETH_POWER_EN, OUTPUT);
digitalWrite(PIN_ETH_POWER_EN, HIGH); // Power up.
delay(100);
#endif
#ifdef PIN_ETHERNET_RESET #ifdef PIN_ETHERNET_RESET
pinMode(PIN_ETHERNET_RESET, OUTPUT); pinMode(PIN_ETHERNET_RESET, OUTPUT);
@ -116,6 +121,12 @@ bool initEthernet()
digitalWrite(PIN_ETHERNET_RESET, HIGH); // Reset Time. digitalWrite(PIN_ETHERNET_RESET, HIGH); // Reset Time.
#endif #endif
#ifdef RAK11310 // Initialize the SPI port
ETH_SPI_PORT.setSCK(PIN_SPI0_SCK);
ETH_SPI_PORT.setTX(PIN_SPI0_MOSI);
ETH_SPI_PORT.setRX(PIN_SPI0_MISO);
ETH_SPI_PORT.begin();
#endif
Ethernet.init(ETH_SPI_PORT, PIN_ETHERNET_SS); Ethernet.init(ETH_SPI_PORT, PIN_ETHERNET_SS);
uint8_t mac[6]; uint8_t mac[6];

View File

@ -1142,7 +1142,7 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
} }
} }
} }
#endif #endif //! HAS_TFT
ProcessMessage CannedMessageModule::handleReceived(const meshtastic_MeshPacket &mp) ProcessMessage CannedMessageModule::handleReceived(const meshtastic_MeshPacket &mp)
{ {

View File

@ -41,13 +41,12 @@ void CGRadSensSensor::begin(TwoWire *wire, uint8_t addr)
float CGRadSensSensor::getStaticRadiation() float CGRadSensSensor::getStaticRadiation()
{ {
// Read a register, following the same pattern as the RCWL9620Sensor // Read a register, following the same pattern as the RCWL9620Sensor
uint32_t data;
_wire->beginTransmission(_addr); // Transfer data to addr. _wire->beginTransmission(_addr); // Transfer data to addr.
_wire->write(0x06); // Radiation intensity (static period T = 500 sec) _wire->write(0x06); // Radiation intensity (static period T = 500 sec)
if (_wire->endTransmission() == 0) { if (_wire->endTransmission() == 0) {
if (_wire->requestFrom(_addr, (uint8_t)3)) { if (_wire->requestFrom(_addr, (uint8_t)3)) {
; // Request 3 bytes ; // Request 3 bytes
data = _wire->read(); uint32_t data = _wire->read();
data <<= 8; data <<= 8;
data |= _wire->read(); data |= _wire->read();
data <<= 8; data <<= 8;

View File

@ -35,8 +35,8 @@ enum sensor_pkt_type {
static int cmd_send(uint8_t cmd, const char *p_data, uint8_t len) static int cmd_send(uint8_t cmd, const char *p_data, uint8_t len)
{ {
uint8_t buf[32] = {0}; uint8_t send_buf[32] = {0};
uint8_t data[32] = {0}; uint8_t send_data[32] = {0};
if (len > 31) { if (len > 31) {
return -1; return -1;
@ -44,18 +44,18 @@ static int cmd_send(uint8_t cmd, const char *p_data, uint8_t len)
uint8_t index = 1; uint8_t index = 1;
data[0] = cmd; send_data[0] = cmd;
if (len > 0 && p_data != NULL) { if (len > 0 && p_data != NULL) {
memcpy(&data[1], p_data, len); memcpy(&send_data[1], p_data, len);
index += len; index += len;
} }
cobs_encode_result ret = cobs_encode(buf, sizeof(buf), data, index); cobs_encode_result ret = cobs_encode(send_buf, sizeof(send_buf), send_data, index);
// LOG_DEBUG("cobs TX status:%d, len:%d, type 0x%x", ret.status, ret.out_len, cmd); // LOG_DEBUG("cobs TX status:%d, len:%d, type 0x%x", ret.status, ret.out_len, cmd);
if (ret.status == COBS_ENCODE_OK) { if (ret.status == COBS_ENCODE_OK) {
return uart_write_bytes(SENSOR_PORT_NUM, buf, ret.out_len + 1); return uart_write_bytes(SENSOR_PORT_NUM, send_buf, ret.out_len + 1);
} }
return -1; return -1;
@ -96,7 +96,6 @@ bool IndicatorSensor::getMetrics(meshtastic_Telemetry *measurement)
int len = uart_read_bytes(SENSOR_PORT_NUM, buf, (SENSOR_BUF_SIZE - 1), 100 / portTICK_PERIOD_MS); int len = uart_read_bytes(SENSOR_PORT_NUM, buf, (SENSOR_BUF_SIZE - 1), 100 / portTICK_PERIOD_MS);
float value = 0.0; float value = 0.0;
uint8_t pkt_type = 0;
uint8_t *p_buf_start = buf; uint8_t *p_buf_start = buf;
uint8_t *p_buf_end = buf; uint8_t *p_buf_end = buf;
if (len > 0) { if (len > 0) {
@ -117,7 +116,7 @@ bool IndicatorSensor::getMetrics(meshtastic_Telemetry *measurement)
if (ret.out_len > 1 && ret.status == COBS_DECODE_OK) { if (ret.out_len > 1 && ret.status == COBS_DECODE_OK) {
value = 0.0; value = 0.0;
pkt_type = data[0]; uint8_t pkt_type = data[0];
switch (pkt_type) { switch (pkt_type) {
case PKT_TYPE_SENSOR_SCD41_CO2: { case PKT_TYPE_SENSOR_SCD41_CO2: {
memcpy(&value, &data[1], sizeof(value)); memcpy(&value, &data[1], sizeof(value));

View File

@ -26,7 +26,7 @@ class Ch341Hal : public RadioLibHal
{ {
public: public:
// default constructor - initializes the base HAL and any needed private members // default constructor - initializes the base HAL and any needed private members
Ch341Hal(uint8_t spiChannel, uint32_t spiSpeed = 2000000, uint8_t spiDevice = 0, uint8_t gpioDevice = 0) explicit Ch341Hal(uint8_t spiChannel, uint32_t spiSpeed = 2000000, uint8_t spiDevice = 0, uint8_t gpioDevice = 0)
: RadioLibHal(PI_INPUT, PI_OUTPUT, PI_LOW, PI_HIGH, PI_RISING, PI_FALLING) : RadioLibHal(PI_INPUT, PI_OUTPUT, PI_LOW, PI_HIGH, PI_RISING, PI_FALLING)
{ {
} }

View File

@ -13,6 +13,8 @@
#include "mesh/generated/meshtastic/remote_hardware.pb.h" #include "mesh/generated/meshtastic/remote_hardware.pb.h"
#include <sys/types.h> #include <sys/types.h>
static const char *errStr = "Error decoding proto for %s message!";
std::string MeshPacketSerializer::JsonSerialize(const meshtastic_MeshPacket *mp, bool shouldLog) std::string MeshPacketSerializer::JsonSerialize(const meshtastic_MeshPacket *mp, bool shouldLog)
{ {
// the created jsonObj is immutable after creation, so // the created jsonObj is immutable after creation, so

View File

@ -2,7 +2,6 @@
#include <string> #include <string>
static const char hexChars[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; static const char hexChars[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
static const char *errStr = "Error decoding proto for %s message!";
class MeshPacketSerializer class MeshPacketSerializer
{ {

View File

@ -5,21 +5,22 @@
cobs_encode_result cobs_encode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const uint8_t *src_ptr, size_t src_len) cobs_encode_result cobs_encode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const uint8_t *src_ptr, size_t src_len)
{ {
cobs_encode_result result = {0, COBS_ENCODE_OK}; cobs_encode_result result = {0, COBS_ENCODE_OK};
if (!dst_buf_ptr || !src_ptr) {
result.status = COBS_ENCODE_NULL_POINTER;
return result;
}
const uint8_t *src_read_ptr = src_ptr; const uint8_t *src_read_ptr = src_ptr;
const uint8_t *src_end_ptr = src_read_ptr + src_len; const uint8_t *src_end_ptr = src_read_ptr + src_len;
uint8_t *dst_buf_start_ptr = dst_buf_ptr; uint8_t *dst_buf_start_ptr = dst_buf_ptr;
uint8_t *dst_buf_end_ptr = dst_buf_start_ptr + dst_buf_len; uint8_t *dst_buf_end_ptr = dst_buf_start_ptr + dst_buf_len;
uint8_t *dst_code_write_ptr = dst_buf_ptr; uint8_t *dst_code_write_ptr = dst_buf_ptr;
uint8_t *dst_write_ptr = dst_code_write_ptr + 1; uint8_t *dst_write_ptr = dst_code_write_ptr + 1;
uint8_t src_byte = 0;
uint8_t search_len = 1; uint8_t search_len = 1;
if ((dst_buf_ptr == NULL) || (src_ptr == NULL)) {
result.status = COBS_ENCODE_NULL_POINTER;
return result;
}
if (src_len != 0) { if (src_len != 0) {
for (;;) { for (;;) {
if (dst_write_ptr >= dst_buf_end_ptr) { if (dst_write_ptr >= dst_buf_end_ptr) {
@ -27,7 +28,7 @@ cobs_encode_result cobs_encode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const u
break; break;
} }
src_byte = *src_read_ptr++; uint8_t src_byte = *src_read_ptr++;
if (src_byte == 0) { if (src_byte == 0) {
*dst_code_write_ptr = search_len; *dst_code_write_ptr = search_len;
dst_code_write_ptr = dst_write_ptr++; dst_code_write_ptr = dst_write_ptr++;
@ -65,31 +66,28 @@ cobs_encode_result cobs_encode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const u
cobs_decode_result cobs_decode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const uint8_t *src_ptr, size_t src_len) cobs_decode_result cobs_decode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const uint8_t *src_ptr, size_t src_len)
{ {
cobs_decode_result result = {0, COBS_DECODE_OK}; cobs_decode_result result = {0, COBS_DECODE_OK};
const uint8_t *src_read_ptr = src_ptr;
const uint8_t *src_end_ptr = src_read_ptr + src_len;
uint8_t *dst_buf_start_ptr = dst_buf_ptr;
uint8_t *dst_buf_end_ptr = dst_buf_start_ptr + dst_buf_len;
uint8_t *dst_write_ptr = dst_buf_ptr;
size_t remaining_bytes;
uint8_t src_byte;
uint8_t i;
uint8_t len_code;
if ((dst_buf_ptr == NULL) || (src_ptr == NULL)) { if (!dst_buf_ptr || !src_ptr) {
result.status = COBS_DECODE_NULL_POINTER; result.status = COBS_DECODE_NULL_POINTER;
return result; return result;
} }
const uint8_t *src_read_ptr = src_ptr;
const uint8_t *src_end_ptr = src_read_ptr + src_len;
uint8_t *dst_buf_start_ptr = dst_buf_ptr;
const uint8_t *dst_buf_end_ptr = dst_buf_start_ptr + dst_buf_len;
uint8_t *dst_write_ptr = dst_buf_ptr;
if (src_len != 0) { if (src_len != 0) {
for (;;) { for (;;) {
len_code = *src_read_ptr++; uint8_t len_code = *src_read_ptr++;
if (len_code == 0) { if (len_code == 0) {
result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_ZERO_BYTE_IN_INPUT); result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_ZERO_BYTE_IN_INPUT);
break; break;
} }
len_code--; len_code--;
remaining_bytes = src_end_ptr - src_read_ptr; size_t remaining_bytes = src_end_ptr - src_read_ptr;
if (len_code > remaining_bytes) { if (len_code > remaining_bytes) {
result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_INPUT_TOO_SHORT); result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_INPUT_TOO_SHORT);
len_code = remaining_bytes; len_code = remaining_bytes;
@ -101,8 +99,8 @@ cobs_decode_result cobs_decode(uint8_t *dst_buf_ptr, size_t dst_buf_len, const u
len_code = remaining_bytes; len_code = remaining_bytes;
} }
for (i = len_code; i != 0; i--) { for (uint8_t i = len_code; i != 0; i--) {
src_byte = *src_read_ptr++; uint8_t src_byte = *src_read_ptr++;
if (src_byte == 0) { if (src_byte == 0) {
result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_ZERO_BYTE_IN_INPUT); result.status = (cobs_decode_status)(result.status | (cobs_decode_status)COBS_DECODE_ZERO_BYTE_IN_INPUT);
} }

View File

@ -271,6 +271,12 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false, bool skipSaveN
gpio_hold_en((gpio_num_t)BUTTON_PIN); gpio_hold_en((gpio_num_t)BUTTON_PIN);
} }
#endif #endif
#ifdef SENSECAP_INDICATOR
// Portexpander definition does not pass GPIO_IS_VALID_OUTPUT_GPIO
pinMode(LORA_CS, OUTPUT);
digitalWrite(LORA_CS, HIGH);
gpio_hold_en((gpio_num_t)LORA_CS);
#else
if (GPIO_IS_VALID_OUTPUT_GPIO(LORA_CS)) { if (GPIO_IS_VALID_OUTPUT_GPIO(LORA_CS)) {
// LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep // LoRa CS (RADIO_NSS) needs to stay HIGH, even during deep sleep
pinMode(LORA_CS, OUTPUT); pinMode(LORA_CS, OUTPUT);
@ -278,6 +284,7 @@ void doDeepSleep(uint32_t msecToWake, bool skipPreflight = false, bool skipSaveN
gpio_hold_en((gpio_num_t)LORA_CS); gpio_hold_en((gpio_num_t)LORA_CS);
} }
#endif #endif
#endif
#ifdef HAS_PMU #ifdef HAS_PMU
if (pmu_found && PMU) { if (pmu_found && PMU) {

View File

@ -38,15 +38,15 @@ static const uint8_t A3 = PIN_A3;
#define PIN_SERIAL2_RX (5ul) #define PIN_SERIAL2_RX (5ul)
// SPI // SPI
#define PIN_SPI0_MISO (12u) #define PIN_SPI1_MISO (12u)
#define PIN_SPI0_MOSI (11u) #define PIN_SPI1_MOSI (11u)
#define PIN_SPI0_SCK (10u) #define PIN_SPI1_SCK (10u)
#define PIN_SPI0_SS (13u) #define PIN_SPI1_SS (13u)
#define PIN_SPI1_MISO (16u) #define PIN_SPI0_MISO (16u)
#define PIN_SPI1_MOSI (19u) #define PIN_SPI0_MOSI (19u)
#define PIN_SPI1_SCK (18u) #define PIN_SPI0_SCK (18u)
#define PIN_SPI1_SS (17u) #define PIN_SPI0_SS (17u)
// Wire // Wire
#define PIN_WIRE0_SDA (2u) #define PIN_WIRE0_SDA (2u)
@ -65,4 +65,4 @@ static const uint8_t MISO = PIN_SPI0_MISO;
static const uint8_t SCK = PIN_SPI0_SCK; static const uint8_t SCK = PIN_SPI0_SCK;
static const uint8_t SDA = PIN_WIRE0_SDA; static const uint8_t SDA = PIN_WIRE0_SDA;
static const uint8_t SCL = PIN_WIRE0_SCL; static const uint8_t SCL = PIN_WIRE0_SCL;

View File

@ -12,7 +12,10 @@ build_flags = ${rp2040_base.build_flags}
-Ivariants/rak11310 -Ivariants/rak11310
-DDEBUG_RP2040_PORT=Serial -DDEBUG_RP2040_PORT=Serial
-L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m0plus" -L "${platformio.libdeps_dir}/${this.__env__}/bsec2/src/cortex-m0plus"
build_src_filter = ${rp2040_base.build_src_filter} +<../variants/rak11310> +<mesh/eth/> +<mesh/api/> +<mqtt/>
lib_deps = lib_deps =
${rp2040_base.lib_deps} ${rp2040_base.lib_deps}
${networking_base.lib_deps}
https://github.com/RAKWireless/RAK13800-W5100S.git#1.0.2
debug_build_flags = ${rp2040_base.build_flags}, -g debug_build_flags = ${rp2040_base.build_flags}, -g
debug_tool = cmsis-dap ; for e.g. Picotool debug_tool = cmsis-dap ; for e.g. Picotool

View File

@ -28,10 +28,10 @@
// RAK BSP somehow uses SPI1 instead of SPI0 // RAK BSP somehow uses SPI1 instead of SPI0
#define HW_SPI1_DEVICE #define HW_SPI1_DEVICE
#define LORA_SCK PIN_SPI0_SCK #define LORA_SCK (10u)
#define LORA_MOSI PIN_SPI0_MOSI #define LORA_MOSI (11u)
#define LORA_MISO PIN_SPI0_MISO #define LORA_MISO (12u)
#define LORA_CS PIN_SPI0_SS #define LORA_CS (13u)
#define LORA_DIO0 RADIOLIB_NC #define LORA_DIO0 RADIOLIB_NC
#define LORA_RESET 14 #define LORA_RESET 14
@ -49,3 +49,10 @@
#define SX126X_DIO2_AS_RF_SWITCH #define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 #define SX126X_DIO3_TCXO_VOLTAGE 1.8
#endif #endif
#define HAS_ETHERNET 1
#define PIN_ETHERNET_RESET 7 // IO3
#define PIN_ETHERNET_SS 17
#define ETH_SPI_PORT SPI
#define PIN_ETH_POWER_EN 22

View File

@ -81,3 +81,4 @@ build_src_filter =
lib_deps = lib_deps =
${env:seeed-sensecap-indicator.lib_deps} ${env:seeed-sensecap-indicator.lib_deps}
https://github.com/bitbank2/bb_captouch.git#8f2f06462ff597847921739376a299db93612417 ; alternative touch library supporting FT6x36 https://github.com/bitbank2/bb_captouch.git#8f2f06462ff597847921739376a299db93612417 ; alternative touch library supporting FT6x36

View File

@ -79,4 +79,4 @@ build_src_filter =
lib_deps = lib_deps =
${env:t-deck.lib_deps} ${env:t-deck.lib_deps}
bitbank2/bb_captouch@1.2.2 ; alternative touch library supporting GT911 bitbank2/bb_captouch@1.2.2 ; alternative touch library supporting GT911

View File

@ -31,8 +31,10 @@
#define SLEEP_TIME 120 #define SLEEP_TIME 120
#ifndef HAS_TFT
#define BUTTON_PIN 0 #define BUTTON_PIN 0
// #define BUTTON_NEED_PULLUP // #define BUTTON_NEED_PULLUP
#endif
#define GPS_DEFAULT_NOT_PRESENT 1 #define GPS_DEFAULT_NOT_PRESENT 1
#define GPS_RX_PIN 44 #define GPS_RX_PIN 44
#define GPS_TX_PIN 43 #define GPS_TX_PIN 43
@ -102,4 +104,4 @@
#define SX126X_DIO2_AS_RF_SWITCH #define SX126X_DIO2_AS_RF_SWITCH
#define SX126X_DIO3_TCXO_VOLTAGE 1.8 #define SX126X_DIO3_TCXO_VOLTAGE 1.8
// Internally the TTGO module hooks the SX1262-DIO2 in to control the TX/RX switch (which is the default for the sx1262interface // Internally the TTGO module hooks the SX1262-DIO2 in to control the TX/RX switch (which is the default for the sx1262interface
// code) // code)