* Force coverage tests to run in simulation mode
* Revert "Force coverage tests to run in simulation mode"
This reverts commit e4ec719e6f.
* fix: Move `#include "variant.h"` to top of file (fixes#8276)
The original line being further down the file causes any #ifdef/defined() checks for definitions in variant.h to silently skip.
This was noticed when `USE_GC1109_PA` in Heltec v4 and Heltec Wireless Tracker failed to correct program TX_GAIN_LORA, but will also affect any variant.h-dependent configurations in this file, if they would have been defined above where the `#include` previously was.
---------
Co-authored-by: Austin Lane <vidplace7@gmail.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* Force coverage tests to run in simulation mode
* Revert "Force coverage tests to run in simulation mode"
This reverts commit e4ec719e6f.
* fix: Move `#include "variant.h"` to top of file (fixes#8276)
The original line being further down the file causes any #ifdef/defined() checks for definitions in variant.h to silently skip.
This was noticed when `USE_GC1109_PA` in Heltec v4 and Heltec Wireless Tracker failed to correct program TX_GAIN_LORA, but will also affect any variant.h-dependent configurations in this file, if they would have been defined above where the `#include` previously was.
---------
Co-authored-by: Austin Lane <vidplace7@gmail.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
* docs(xiao_ble): Simplify building and flashing instructions
- **Update Bootloader** - deleted this section, as Meshtastic now builds-in a compatible SoftDevice
- **PlatformIO Environment Preparation** - deleted this section, as Meshtastic now builds-in a compatible SoftDevice
- **Build Meshtastic** - simplified it greatly by referring to Meshtastic documentation
- **Flash the firmware to the Xiao BLE** - simplified it greatly as Meshtastic now builds firmware.uf2; added some observations for a succesful flash
Light cleanup of Markdown and renumbering of sections.
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Replace some HTML with Markdown, cleanup Markdown
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Update SX126X_TXEN definition location
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Fresher information about E22 modules
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Instructions for E22...M33S modules
Also re-order the Build section to come after the Wiring section since the build instructions require special attention if the wiring/modules differ from the variant's expected pins/module.
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Rename all XIAO BLE to XIAO nRF52840
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): Remove note about Linux since shell script is gone
Signed-off-by: Andrew Yong <me@ndoo.sg>
* docs(xiao_ble): trunk fmt and fix links
Signed-off-by: Andrew Yong <me@ndoo.sg>
---------
Signed-off-by: Andrew Yong <me@ndoo.sg>
These DIY builds are functionally similar to the legacy xiao_ble variant, but use a pinout harmonized with the officially-supported XIAO nRF52840 & Wio-SX1262 Kit for Meshtastic (SKU 102010710).
An additional E22-900M33S variant is provided to ensure SX1262 transmit power is set below the maximum PA input for that module, to avoid damaging it.
- seeed_xiao_nrf52840_e22_900m30s:
- XIAO nRF52840 + EBYTE E22-900M30S
- EBYTE E22 pinout matching Wio-SX1262 (SKU 113010003)
- I2C
- SDA: D6
- SCL: D7
- User button: D0
- Gain is programmed in firmware - user Tx power setting is the desired final output power
- seeed_xiao_nrf52840_e22_900m33s:
- XIAO nRF52840 + EBYTE E22-900M33S
- EBYTE E22 pinout matching Wio-SX1262 (SKU 113010003)
- I2C
- SDA: D6
- SCL: D7
- User button: D0
- Gain is programmed in firmware - user Tx power setting is the desired final output power
Signed-off-by: Andrew Yong <me@ndoo.sg>
* chore(seeed_xiao_nrf52840_kit): Use build flag for L76K GNSS, rename variant.h ifdef
Signed-off-by: Andrew Yong <me@ndoo.sg>
* feat(seeed_xiao_nrf52840_kit): Support multiple SX126x pinouts via build flags
Signed-off-by: Andrew Yong <me@ndoo.sg>
* feat(seeed_xiao_nrf52840_kit): Pin D0 as user button if pin is unused
Signed-off-by: Andrew Yong <me@ndoo.sg>
* feat: EBYTE E22 and NiceRF gain and SX1262 max power defines
Signed-off-by: Andrew Yong <me@ndoo.sg>
* chore(xiao_ble): Move variant to DIY and extend from seeed_xiao_nrf52840_kit
Signed-off-by: Andrew Yong <me@ndoo.sg>
* feat(seeed_xiao_nrf52840_kit): Pin D6, D7 as I2C SDA, SCL if pins are unused
Signed-off-by: Andrew Yong <me@ndoo.sg>
---------
Signed-off-by: Andrew Yong <me@ndoo.sg>
* feat: seeed_xiao_nrf52840_kit improvements
- LEDs:
- Change RGB LED to be active low as it is common anode
- Remove re-definition of LED_PIN
- Use red LED to indicate flash writes
- Use blue LED as user LED (External Notification module)
- GPIO: Re-word unused BUTTON_PIN comment
- Wire: Set I2C pins to match XIAO nRF52840 Sense's LSM6DS3TR IMU
- Battery:
- Use charge LED to detect charging state
- Move voltage divider boilerplate out of src/main.cpp and into initVariant()
- Fix dependencies for above in related XIAO BLE DIY variants
Build tested variants:
- seeed_xiao_nrf52840_kit
- xiao_ble
- seeed-xiao-nrf52840-wio-sx1262
Flashed to and tested on hardware:
- seeed_xiao_nrf52840_kit
Signed-off-by: Andrew Yong <me@ndoo.sg>
* chore(seeed_xiao_nrf52840_kit): Re-order generic GPIO definitions
Signed-off-by: Andrew Yong <me@ndoo.sg>
* chore: Use ADC_CTRL for XIAO nRF52840
Signed-off-by: Andrew Yong <me@ndoo.sg>
---------
Signed-off-by: Andrew Yong <me@ndoo.sg>
- Rename REGULATORY_GAIN_LORA to TX_GAIN_LORA
- Move gain-based Tx power clamping from RadioInterface::applyModemConfig() to RadioInterface::limitPower()
- User-configured Tx power now matches the Tx power out of the device connector
- Re-order [LoRa Chip]Interface.cpp limitPower() to take place before the final Tx power clamping so we clamp based on the pre-PA Tx power rather than user-configured Tx power
Tested on XIAO BLE variant.
Signed-off-by: Andrew Yong <me@ndoo.sg>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
Unset BUTTON_PIN and BUTTON_NEED_PULLUP as the board ships without a user button.
Devices and users expecting a button on GPIO12 have to set [GPIO for user button](https://meshtastic.org/docs/configuration/radio/device/#gpio-for-user-button) to 12 (or any GPIO pin the momentary switch was connected to) to restore functionality.
Signed-off-by: Andrew Yong <me@ndoo.sg>
Specify REGULATORY_GAIN and SX126X_MAX_POWER to prevent exceeding regulatory and hardware limits (i.e. overloading the PA input) respectively.
Also update the build flag to define EBYTE_E22_900M30S instead of just EBYTE_E22, since all the builds on the Discourse topic [New 1W DIY variant: Xiao nRF52840 + Ebyte E22-900M30S](https://meshtastic.discourse.group/t/new-1w-diy-variant-xiao-nrf52840-ebyte-e22-900m30s/7904) are using this module.
That should make it clearer as well that the variant header file should be tweaked if DIY builds are using stronger (E22-900M33S, not commonly available at this time) or weaker (E22-900M22S, not popular for DIY builds due to lack of differentiation from ordinary SX1262 modules).
Retain EBYTE_E22 flag alongside EBYTE_E22_900M30S build flag to prevent possible regressions in code paths generally intended for EBYTE E22 modules.
Signed-off-by: Andrew Yong <me@ndoo.sg>
REGULATORY_GAIN is the total system gain in dBm to subtract from the configured Tx power, to remain within regulatory ERP limit for non-licensed operators.
This value should be set in variant.h and is PA gain + antenna gain (if system ships with an antenna).
This is similar to antenna_gain/NL80211_ATTR_WIPHY_ANTENNA_GAIN/NL80211_ATTR_REG_RULE_POWER_MAX_ANT_GAIN setting in Linux Regulatory/OpenWrt/mac80211/nl80211/iw.
Signed-off-by: Andrew Yong <me@ndoo.sg>
Add REGULATORY_ prefix to LORA_REGIONCODE to prepare for more regulatory configuration options, and update comment block accordingly too.
Signed-off-by: Andrew Yong <me@ndoo.sg>
* AdminModule: Publish fixed position updates
Enabled GPS thread when fixed position is updated, to let the GPS thread run once and publish the new fixed position.
Signed-off-by: Andrew Yong <me@ndoo.sg>
* GPS: Consider changes in only altitude as an updated point
Signed-off-by: Andrew Yong <me@ndoo.sg>
---------
Signed-off-by: Andrew Yong <me@ndoo.sg>
* I2C is not defined in the reference schematic nor HT-DEV-ESP board, remove definition accordingly
* There is no screen in the the reference schematic nor HT-DEV-ESP board, change definition accordingly
* BUTTON_PIN has a 10 kOhm pullup resistor on HT-DEV-ESP, turning off redundant internal pullup should save some power
* LED is connected to GPIO2 on HT-DEV-ESP and is not inverted, update definition accordingly
* Remove redundant undef lines for LoRa pins
Above changes were built and flashed to my [HT-DEV-ESP_V2 board purchased from Heltec's Taobao store](https://item.taobao.com/item.htm?id=521590063077).
Signed-off-by: Andrew Yong <me@ndoo.sg>
Define BATTERY_SENSE_RESOLUTION_BITS based on [amoroz's snippet on the Meshtastic forum](https://meshtastic.discourse.group/t/new-1w-diy-variant-xiao-nrf52840-ebyte-e22-900m30s/7904/10).
Fixes following build error:
```
src/Power.cpp: In member function 'virtual uint16_t AnalogBatteryLevel::getBattVoltage()':
src/Power.cpp:224:79: error: 'BATTERY_SENSE_RESOLUTION_BITS' was not declared in this scope
scaled = operativeAdcMultiplier * ((1000 * AREF_VOLTAGE) / pow(2, BATTERY_SENSE_RESOLUTION_BITS)) * raw;
```
Signed-off-by: Andrew Yong <me@ndoo.sg>
The main use case for this will be to create a custom Heltec WiFi LoRa 32 V3 SG_923 variant, which will be pre-flashed and sent for regulatory approval for retail sale.
Signed-off-by: Andrew Yong <me@ndoo.sg>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>