feat: retain INA monitors in reduced RAK repeaters

This commit is contained in:
mikecarper committed 2026-08-25 20:24:17 -07:00
1 parent ba2170d21b
commit c512f4036e
8 files changed
+164 -45

No files matched your search

+50 -5
View File
@@ -1728,6 +1728,19 @@ is_lora_ota_no_external_sensors_target() {
[[ "$target_lc" == *lora_ota_no_external_sensors ]]
}
is_rak_i2c_voltage_monitor_ota_target() {
local target_lc=${1,,}
case "$target_lc" in
rak_3401_*lora_ota_no_external_sensors|rak_4631_*lora_ota_no_external_sensors)
return 0
;;
*)
return 1
;;
esac
}
filter_out_lora_ota_only_targets() {
local target
@@ -2408,6 +2421,13 @@ declare_build_capability_contract() {
record_build_expectation "ota.cli" "OTA: status"
fi
if is_rak_i2c_voltage_monitor_ota_target "$env_name"; then
record_build_expectation "sensor.ina219" "INA219"
record_build_expectation "sensor.ina226" "INA226"
record_build_expectation "sensor.ina260" "INA260"
record_build_expectation "sensor.ina3221" "INA3221"
fi
if [ "$env_platform" = "ESP32_PLATFORM" ] \
&& [ "$BUILD_PROFILE_FOR_TARGET" = "full" ] \
&& ! is_esp32_companion_build "$env_name"; then
@@ -2600,6 +2620,12 @@ apply_nrf52_size_profile() {
apply_lora_ota_no_external_sensors_profile() {
local env_name=$1
local omitted_sensor_flags="ENV_INCLUDE_AHTX0 ENV_INCLUDE_BME280 ENV_INCLUDE_BMP280 ENV_INCLUDE_SHTC3 ENV_INCLUDE_SHT4X ENV_INCLUDE_LPS22HB ENV_INCLUDE_MLX90614 ENV_INCLUDE_VL53L0X ENV_INCLUDE_BME680 ENV_INCLUDE_BMP085 ENV_INCLUDE_RAK12035 ENV_INCLUDE_BME680_BSEC"
local voltage_monitor_flags="ENV_INCLUDE_INA3221 ENV_INCLUDE_INA219 ENV_INCLUDE_INA226 ENV_INCLUDE_INA260"
local flag
local omit_unflags=""
local omit_overrides=""
local retain_overrides=""
if [ "$SKIP_DECLARED_REDUCTIONS" = "1" ]; then
return 0
@@ -2610,13 +2636,32 @@ apply_lora_ota_no_external_sensors_profile() {
fi
# The explicit LoRa-OTA sibling additionally drops optional external sensors.
# Its ordinary sibling remains sensor-enabled.
# RAK3401/RAK4631 keep the compact INA voltage/current monitor set because it
# costs less than 5 KiB and covers their most common external telemetry use.
# The ordinary sibling remains fully sensor-enabled.
# Keep board-integrated GPS support. Several target implementations require
# their location provider even when optional external I2C sensors are absent.
append_platformio_build_unflags "-DENV_INCLUDE_AHTX0=1 -DENV_INCLUDE_BME280=1 -DENV_INCLUDE_BMP280=1 -DENV_INCLUDE_SHTC3=1 -DENV_INCLUDE_SHT4X=1 -DENV_INCLUDE_LPS22HB=1 -DENV_INCLUDE_INA3221=1 -DENV_INCLUDE_INA219=1 -DENV_INCLUDE_INA226=1 -DENV_INCLUDE_INA260=1 -DENV_INCLUDE_MLX90614=1 -DENV_INCLUDE_VL53L0X=1 -DENV_INCLUDE_BME680=1 -DENV_INCLUDE_BMP085=1 -DENV_INCLUDE_RAK12035=1 -DENV_INCLUDE_BME680_BSEC=1"
export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS} -UENV_INCLUDE_AHTX0 -UENV_INCLUDE_BME280 -UENV_INCLUDE_BMP280 -UENV_INCLUDE_SHTC3 -UENV_INCLUDE_SHT4X -UENV_INCLUDE_LPS22HB -UENV_INCLUDE_INA3221 -UENV_INCLUDE_INA219 -UENV_INCLUDE_INA226 -UENV_INCLUDE_INA260 -UENV_INCLUDE_MLX90614 -UENV_INCLUDE_VL53L0X -UENV_INCLUDE_BME680 -UENV_INCLUDE_BMP085 -UENV_INCLUDE_RAK12035 -UENV_INCLUDE_BME680_BSEC"
record_build_reduction \
"sensors.external omitted by the explicitly named no_external_sensors target"
if ! is_rak_i2c_voltage_monitor_ota_target "$env_name"; then
omitted_sensor_flags+=" ${voltage_monitor_flags}"
fi
for flag in $omitted_sensor_flags; do
omit_unflags+=" -D${flag}=1"
omit_overrides+=" -U${flag}"
done
append_platformio_build_unflags "$omit_unflags"
if is_rak_i2c_voltage_monitor_ota_target "$env_name"; then
for flag in $voltage_monitor_flags; do
retain_overrides+=" -D${flag}=1"
done
export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS}${omit_overrides}${retain_overrides}"
record_build_reduction \
"sensors.external omitted except INA219/INA226/INA260/INA3221 I2C voltage monitors"
else
export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS}${omit_overrides}"
record_build_reduction \
"sensors.external omitted by the explicitly named no_external_sensors target"
fi
}
append_platformio_build_unflags() {
+2 -2
View File
@@ -68,12 +68,12 @@ retain 50 because their MQTT discovery tables are constrained by internal DRAM.
| Standard non-MQTT repeater or room server | Keeps the normal role CLI. The explicitly selected portable policy can omit WebConfig and browser WiFi OTA, so those commands are unavailable and the omission is recorded in the capability manifest. |
| Standard logging | Logging does not remove commands by itself. It has the same CLI as the selected role/profile and adds compiled logging behavior. CommonCLI roles persist `get/set usb.logging`. ESP32 roles covered by unified FULL and nRF52 Companions covered by dual-CDC Full Companion are not duplicated here. |
| LoRa-OTA (`-ota-`) | LoRa OTA adds the `ota ...` commands; it does not otherwise reduce the role CLI. ESP32 `no_external_sensors` artifacts retain the compact browser WiFi uploader, the complete CLI, and a 254-entry neighbor table. |
| Internal-flash nRF52 repeater auto pair | `full-ota` retains the board's external-sensor drivers; `reduced-ota` omits only the declared external sensors to leave additional internal-flash staging room. Both carry the same stable OTA target identity and both are checked for `ota ...` and `retry.preset`. |
| Internal-flash nRF52 repeater auto pair | `full-ota` retains the board's external-sensor drivers; `reduced-ota` omits the declared optional sensors to leave additional internal-flash staging room. RAK3401 and RAK4631 reduced builds retain INA219, INA226, INA260, and INA3221 I2C voltage/current monitors at a measured 4,808-byte flash cost. Both artifacts carry the same stable OTA target identity and are checked for `ota ...` and `retry.preset`; RAK artifacts also verify the retained monitor drivers. |
| ESP32 MQTT observer or ESP-NOW bridge | Always uses the expanded FULL partition profile. The build never substitutes a reduced CLI to fit the legacy application slot. |
| FULL ESP32 USB + WiFi | Uses the matching MQTT target with packet logging on, verbose debug off, and the complete command surface supported by that role and hardware. `get/set logging.output off\|usb\|wifi\|both` selects and persists the active output paths. |
| FULL ESP32 logging fallback | Uses the matching non-MQTT target only when no WiFi MQTT sibling exists, with debug and packet logging enabled and the complete command surface supported by that role and hardware. Its persistent USB gate also covers output-off operation, avoiding a second FULL ESP-NOW image. |
| Dual-CDC Full Companion | nRF52 and qualified native-USB ESP32-S3 Full images use one physical USB connection. Fresh installs expose only interface `00` for framed Companion/terminal/mOTA traffic. Enabling logging and rebooting adds interface `02` for plaintext logs. They also provide BLE and source-only LoRa OTA; ESP32 additionally provides WiFi. `get/set usb.logging` persistently controls whether the logging interface is present. |
| `no_external_sensors` | Removes optional external-sensor drivers and their settings; it does not remove core repeater discovery or routing commands. GPS-preserving RAK nRF52 OTA profiles retain their GPS commands and provider. The RAK4631 Serial1 RS232 bridge remains GPS-off because both features require Serial1. |
| `no_external_sensors` | Removes optional external-sensor drivers and their settings; it does not remove core repeater discovery or routing commands. RAK3401 and RAK4631 profiles retain the four common INA I2C voltage/current monitors. GPS-preserving RAK nRF52 OTA profiles also retain their GPS commands and provider. The RAK4631 Serial1 RS232 bridge remains GPS-off because both features require Serial1. The legacy target suffix is retained for OTA identity compatibility. |
`logging`, `OTA`, and `FULL` describe independent build features. Do not infer
that a command is missing merely because `logging` appears in the filename.
+8 -6
View File
@@ -87,10 +87,11 @@ overlapping window.
`build.sh` provides a `*_repeater_lora_ota_no_external_sensors` build for standalone ESP32 and nRF52 repeater
targets that need a smaller internal update workspace. Those siblings omit optional external I2C
environmental sensors while retaining board-native features such as displays, buttons, battery monitoring,
and GPS where the target uses the GPS-preserving lean profile. The RAK3401 OTA
repeater retains RAK12501 support in sensor slot A; slot D conflicts with the
RAK13302 radio's BUSY/DIO1 lines. The RAK4631 OTA repeater retains GPS except
for its Serial1 RS232 bridge, which uses the same UART. Selected nRF52 boards with matched external
and GPS where the target uses the GPS-preserving lean profile. RAK3401 and RAK4631 reduced builds also
retain INA219, INA226, INA260, and INA3221 I2C voltage/current monitors; together these drivers add 4,808
bytes over the otherwise reduced image. The RAK3401 OTA repeater retains RAK12501 support in sensor slot A;
slot D conflicts with the RAK13302 radio's BUSY/DIO1 lines. The RAK4631 OTA repeater retains GPS except for
its Serial1 RS232 bridge, which uses the same UART. Selected nRF52 boards with matched external
QSPI application and bootloader support can instead make the normal full-sensor
repeater install-capable; those targets do not need to reserve internal flash
for the downloaded container. SolarXiao 30S and 33S use this matched external-QSPI
@@ -106,7 +107,7 @@ For one explicitly selected internal-flash nRF52 repeater, the default
`--build-profile auto` run emits two install-capable choices. The
`*-full-ota-*` artifact retains external sensors, while the
`*_lora_ota_no_external_sensors-reduced-ota-*` artifact trades only those
optional drivers for more delta-staging space. They retain the same OTA target
optional drivers not explicitly retained by the board profile for more delta-staging space. They retain the same OTA target
identity so update tooling does not confuse the optimization choice with a
different board. QSPI- and SD-backed repeaters emit only the complete choice
unless a measured size failure requires a fallback.
@@ -273,7 +274,8 @@ running application. The hash check in the next step proves that it is the right
On RAK4631 repeaters, use the
`RAK_4631_repeater_lora_ota_no_external_sensors` environment. It retains built-in battery monitoring but
omits optional external environmental sensor packages so the delta fits the safe in-place workspace.
omits optional external environmental sensor packages so the delta fits the safe in-place workspace. INA219,
INA226, INA260, and INA3221 I2C voltage/current monitors remain supported despite the legacy target name.
If the device has a RAK15001 installed in sensor slot C and the matching
RAK15001 OTAFIX bootloader, use
`RAK_4631_repeater_rak15001_slot_c_lora_ota` instead. That target retains the
+45 -16
View File
@@ -241,6 +241,18 @@ lib_deps = ${arduino_base.lib_deps}
file://arch/stm32/Adafruit_LittleFS_stm32
SubGhz
[i2c_voltage_monitor_base]
build_flags =
-D ENV_INCLUDE_INA3221=1
-D ENV_INCLUDE_INA219=1
-D ENV_INCLUDE_INA226=1
-D ENV_INCLUDE_INA260=1
lib_deps =
adafruit/Adafruit INA3221 Library @ ^1.0.1
adafruit/Adafruit INA219 @ ^1.2.3
robtillaart/INA226 @ ^0.6.4
adafruit/Adafruit INA260 Library @ ^1.5.3
[sensor_base]
build_flags =
-D ENV_INCLUDE_GPS=1
@@ -250,19 +262,13 @@ build_flags =
-D ENV_INCLUDE_SHTC3=1
-D ENV_INCLUDE_SHT4X=1
-D ENV_INCLUDE_LPS22HB=1
-D ENV_INCLUDE_INA3221=1
-D ENV_INCLUDE_INA219=1
-D ENV_INCLUDE_INA226=1
-D ENV_INCLUDE_INA260=1
${i2c_voltage_monitor_base.build_flags}
-D ENV_INCLUDE_MLX90614=1
-D ENV_INCLUDE_VL53L0X=1
-D ENV_INCLUDE_BME680=1
-D ENV_INCLUDE_BMP085=1
lib_deps =
adafruit/Adafruit INA3221 Library @ ^1.0.1
adafruit/Adafruit INA219 @ ^1.2.3
robtillaart/INA226 @ ^0.6.4
adafruit/Adafruit INA260 Library @ ^1.5.3
${i2c_voltage_monitor_base.lib_deps}
adafruit/Adafruit AHTX0 @ ^2.0.5
adafruit/Adafruit BME280 Library @ ^2.3.0
adafruit/Adafruit BMP280 Library @ ^2.6.8
@@ -275,10 +281,9 @@ lib_deps =
adafruit/Adafruit BME680 Library @ ^2.0.4
adafruit/Adafruit BMP085 Library @ ^1.2.4
; Lean nRF52 LoRa OTA roles with onboard GPS use this external-sensor trim.
; Board-native GPS, radio, display, buttons, battery monitoring, and other board
; telemetry remain.
[nrf52_no_external_sensors_keep_gps]
; Shared trim for optional environmental/ranging sensors. Board-native radio,
; display, buttons, battery monitoring, and other board telemetry remain.
[nrf52_external_environmental_sensor_trim]
build_flags =
-UENV_INCLUDE_AHTX0
-UENV_INCLUDE_BME280
@@ -286,16 +291,22 @@ build_flags =
-UENV_INCLUDE_SHTC3
-UENV_INCLUDE_SHT4X
-UENV_INCLUDE_LPS22HB
-UENV_INCLUDE_INA3221
-UENV_INCLUDE_INA219
-UENV_INCLUDE_INA226
-UENV_INCLUDE_INA260
-UENV_INCLUDE_MLX90614
-UENV_INCLUDE_VL53L0X
-UENV_INCLUDE_BME680
-UENV_INCLUDE_BMP085
-UENV_INCLUDE_RAK12035
-UENV_INCLUDE_BME680_BSEC
; Lean nRF52 LoRa OTA roles with onboard GPS use this full external-sensor
; trim. Board-native GPS remains.
[nrf52_no_external_sensors_keep_gps]
build_flags =
${nrf52_external_environmental_sensor_trim.build_flags}
-UENV_INCLUDE_INA3221
-UENV_INCLUDE_INA219
-UENV_INCLUDE_INA226
-UENV_INCLUDE_INA260
lib_deps =
stevemarple/MicroNMEA @ ^2.0.6
@@ -305,6 +316,24 @@ build_flags =
${nrf52_no_external_sensors_keep_gps.build_flags}
-UENV_INCLUDE_GPS
; RAK reduced OTA roles retain the common I2C voltage/current monitor set at a
; measured 4,808-byte linked-flash cost while omitting the larger optional
; environmental/ranging sensor set.
[nrf52_reduced_sensors_keep_ina_gps]
build_flags =
${nrf52_external_environmental_sensor_trim.build_flags}
${i2c_voltage_monitor_base.build_flags}
lib_deps =
stevemarple/MicroNMEA @ ^2.0.6
${i2c_voltage_monitor_base.lib_deps}
[nrf52_reduced_sensors_keep_ina]
build_flags =
${nrf52_reduced_sensors_keep_ina_gps.build_flags}
-UENV_INCLUDE_GPS
lib_deps =
${i2c_voltage_monitor_base.lib_deps}
; ----------------- TESTING ---------------------
; Host GoogleTest suites for the fork's pure logic. See test/README.md.
; Run: `pio test -e native` (all) or `pio test -e native -f <suite>` (one).
+38
View File
@@ -111,4 +111,42 @@ run_auto_two_pass_build nrf_repeater_lora_ota_no_external_sensors >/dev/null
[[ "${calls[1]}" == *:standard:0: ]] \
|| fail "reduced nRF52 artifact did not use the reduced target name"
is_rak_i2c_voltage_monitor_ota_target \
RAK_3401_repeater_lora_ota_no_external_sensors \
|| fail "RAK3401 reduced OTA target did not retain voltage monitors"
is_rak_i2c_voltage_monitor_ota_target \
RAK_4631_repeater_bridge_rs232_serial2_lora_ota_no_external_sensors \
|| fail "RAK4631 reduced OTA target did not retain voltage monitors"
if is_rak_i2c_voltage_monitor_ota_target \
Heltec_t114_repeater_lora_ota_no_external_sensors; then
fail "non-RAK reduced OTA target incorrectly retained voltage monitors"
fi
verify_reduced_sensor_flags() {
local env_name=$1
local expect_ina=$2
local PLATFORMIO_BUILD_FLAGS=""
local PLATFORMIO_BUILD_UNFLAGS=""
local -a BUILD_REDUCTIONS=()
PIO_ENV_OTA_BY_NAME[$env_name]=1
apply_lora_ota_no_external_sensors_profile "$env_name"
[[ "$PLATFORMIO_BUILD_FLAGS" == *-UENV_INCLUDE_BME280* ]] \
|| fail "$env_name did not omit environmental sensors"
if [ "$expect_ina" = 1 ]; then
[[ "$PLATFORMIO_BUILD_FLAGS" == *-DENV_INCLUDE_INA219=1* ]] \
|| fail "$env_name did not retain INA monitor support"
[[ "$PLATFORMIO_BUILD_FLAGS" != *-UENV_INCLUDE_INA219* ]] \
|| fail "$env_name both retained and omitted INA monitor support"
else
[[ "$PLATFORMIO_BUILD_FLAGS" == *-UENV_INCLUDE_INA219* ]] \
|| fail "$env_name incorrectly retained INA monitor support"
fi
}
verify_reduced_sensor_flags \
RAK_3401_repeater_lora_ota_no_external_sensors 1
verify_reduced_sensor_flags \
Heltec_t114_repeater_lora_ota_no_external_sensors 0
echo "test_build_profiles: OK"
+6 -4
View File
@@ -443,7 +443,7 @@ def test_ota_target_generation_honors_explicit_disable():
assert "RAK_3401_repeater_lora_ota_no_external_sensors" in release_aliases()
def test_rak_nrf52_ota_profiles_keep_gps_where_uart_is_available():
def test_rak_nrf52_ota_profiles_keep_ina_and_gps_where_uart_is_available():
root = Path(__file__).resolve().parents[2]
def env_section(path, name):
@@ -463,15 +463,17 @@ def test_rak_nrf52_ota_profiles_keep_gps_where_uart_is_available():
),
)
for profile in gps_profiles:
assert "${nrf52_no_external_sensors_keep_gps.build_flags}" in profile
assert "${nrf52_no_external_sensors_keep_gps.lib_deps}" in profile
assert "${nrf52_reduced_sensors_keep_ina_gps.build_flags}" in profile
assert "${nrf52_reduced_sensors_keep_ina_gps.lib_deps}" in profile
assert "SparkFun u-blox GNSS Arduino Library" in profile
serial1_bridge = env_section(
rak4631_path,
"RAK_4631_repeater_bridge_rs232_serial1_lora_ota_no_external_sensors",
)
assert "${nrf52_no_external_sensors.build_flags}" in serial1_bridge
assert "${nrf52_reduced_sensors_keep_ina.build_flags}" in serial1_bridge
assert "${nrf52_reduced_sensors_keep_ina.lib_deps}" in serial1_bridge
assert "SparkFun u-blox GNSS Arduino Library" not in serial1_bridge
assert "WITH_RS232_BRIDGE=Serial1" in serial1_bridge
+5 -4
View File
@@ -54,14 +54,15 @@ build_src_filter = ${rak3401.build_src_filter}
+<../examples/simple_repeater>
; Explicit lean alternative to the full-sensor, non-OTA repeater above. It removes optional
; environmental sensors while retaining RAK12501 GPS support. Use sensor slot A: slot D conflicts
; with the RAK13302 radio's BUSY/DIO1 wiring. The legacy target name remains stable for OTA compatibility.
; environmental sensors while retaining the common INA I2C voltage/current monitors and RAK12501
; GPS support. Use sensor slot A: slot D conflicts with the RAK13302 radio's BUSY/DIO1 wiring.
; The legacy target name remains stable for OTA compatibility.
[env:RAK_3401_repeater_lora_ota_no_external_sensors]
extends = rak3401
extra_scripts = ${nrf52_lora_ota.extra_scripts}
build_flags =
${rak3401.build_flags}
${nrf52_no_external_sensors_keep_gps.build_flags}
${nrf52_reduced_sensors_keep_ina_gps.build_flags}
-D DISPLAY_CLASS=SSD1306Display
-D ADVERT_NAME='"RAK3401 1W Repeater"'
-D ADVERT_LAT=0.0
@@ -81,7 +82,7 @@ build_src_filter = ${rak3401.build_src_filter}
+<../examples/simple_repeater>
lib_deps =
${nrf52_lora_ota.lib_deps}
${nrf52_no_external_sensors_keep_gps.lib_deps}
${nrf52_reduced_sensors_keep_ina_gps.lib_deps}
adafruit/Adafruit SSD1306 @ ^2.5.13
sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27
+10 -8
View File
@@ -88,15 +88,16 @@ build_src_filter = ${rak4631.build_src_filter}
+<../examples/simple_repeater>
; Lean OTA target for space-constrained RAK4631 repeaters. This removes optional external
; environmental sensor packages while retaining RAK12500/RAK12501 GPS support. The legacy
; no_external_sensors target name remains stable for OTA compatibility. RAK4631Board::getBattMilliVolts(),
; repeater telemetry, and battery.alert remain part of the board/repeater sources below.
; environmental sensor packages while retaining the common INA I2C voltage/current monitors and
; RAK12500/RAK12501 GPS support. The legacy no_external_sensors target name remains stable for OTA
; compatibility. RAK4631Board::getBattMilliVolts(), repeater telemetry, and battery.alert remain part
; of the board/repeater sources below.
[env:RAK_4631_repeater_lora_ota_no_external_sensors]
extends = rak4631
extra_scripts = ${nrf52_lora_ota.extra_scripts}
build_flags =
${rak4631.build_flags}
${nrf52_no_external_sensors_keep_gps.build_flags}
${nrf52_reduced_sensors_keep_ina_gps.build_flags}
-D DISPLAY_CLASS=SSD1306Display
-D ADVERT_NAME='"RAK4631 LoRa OTA No Ext Sensors"'
-D ADVERT_LAT=0.0
@@ -111,7 +112,7 @@ build_src_filter = ${nrf52_lora_ota.build_src_filter}
+<../examples/simple_repeater>
lib_deps =
${nrf52_lora_ota.lib_deps}
${nrf52_no_external_sensors_keep_gps.lib_deps}
${nrf52_reduced_sensors_keep_ina_gps.lib_deps}
adafruit/Adafruit SSD1306 @ ^2.5.13
sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27
@@ -167,7 +168,7 @@ build_src_filter = ${rak4631.build_src_filter}
extends = rak4631
build_flags =
${rak4631.build_flags}
${nrf52_no_external_sensors.build_flags}
${nrf52_reduced_sensors_keep_ina.build_flags}
-D DISPLAY_CLASS=SSD1306Display
-D ADVERT_NAME='"RS232 Bridge"'
-D ADVERT_LAT=0.0
@@ -183,6 +184,7 @@ build_src_filter = ${rak4631.build_src_filter}
+<../examples/simple_repeater>
lib_deps =
${nrf52_lora_ota.lib_deps}
${nrf52_reduced_sensors_keep_ina.lib_deps}
adafruit/Adafruit SSD1306 @ ^2.5.13
[env:RAK_4631_repeater_bridge_rs232_serial2]
@@ -216,7 +218,7 @@ build_src_filter = ${rak4631.build_src_filter}
extends = rak4631
build_flags =
${rak4631.build_flags}
${nrf52_no_external_sensors_keep_gps.build_flags}
${nrf52_reduced_sensors_keep_ina_gps.build_flags}
-D DISPLAY_CLASS=SSD1306Display
-D ADVERT_NAME='"RS232 Bridge"'
-D ADVERT_LAT=0.0
@@ -232,7 +234,7 @@ build_src_filter = ${rak4631.build_src_filter}
+<../examples/simple_repeater>
lib_deps =
${nrf52_lora_ota.lib_deps}
${nrf52_no_external_sensors_keep_gps.lib_deps}
${nrf52_reduced_sensors_keep_ina_gps.lib_deps}
adafruit/Adafruit SSD1306 @ ^2.5.13
sparkfun/SparkFun u-blox GNSS Arduino Library@^2.2.27