; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [platformio] default_envs = tbeam ;default_envs = tbeam0.7 ;default_envs = heltec-v2.0 ;default_envs = tlora-v1 ;default_envs = tlora_v1_3 ;default_envs = tlora-v2 ;default_envs = lora-relay-v1 # nrf board ;default_envs = t-echo ;default_envs = nrf52840dk-geeksville ;default_envs = native # lora-relay-v1 # nrf52840dk-geeksville # linux # or if you'd like to change the default to something like lora-relay-v1 put that here ;default_envs = rak4631 ;default_envs = rak4630 [common] ; common is not currently used ; REQUIRED environment variables - if not set the specified default will be sued ; The following environment variables must be set in the shell if you'd like to override them. ; They are used in this ini file as systenv.VARNAME, so in your shell do export "VARNAME=fish" ; COUNTRY (default US), i.e. "export COUNTRY=EU865" ; HW_VERSION (default emptystring) [env] ; note: APP_VERSION now comes from bin/version.json extra_scripts = bin/platformio-custom.py ; note: we add src to our include search path so that lmic_project_config can override ; note: TINYGPS_OPTION_NO_CUSTOM_FIELDS is VERY important. We don't use custom fields and somewhere in that pile ; of code is a heap corruption bug! ; FIXME: fix lib/BluetoothOTA dependency back on src/ so we can remove -Isrc build_flags = -Wno-missing-field-initializers -Wno-format -Isrc -Isrc/mesh -Isrc/gps -Isrc/buzz -Wl,-Map,.pio/build/output.map -DHW_VERSION_${sysenv.COUNTRY} -DHW_VERSION=${sysenv.HW_VERSION} -DUSE_THREAD_NAMES -DTINYGPS_OPTION_NO_CUSTOM_FIELDS ; the default is esptool ; upload_protocol = esp-prog ; monitor_speed = 115200 monitor_speed = 921600 # debug_tool = esp-prog # debug_port = /dev/ttyACM0 debug_tool = jlink ;upload_protocol = jlink ; debug_tool = olimex-arm-usb-ocd-h ; upload_protocol = olimex-arm-usb-ocd-h ;debug_init_cmds = ; monitor adapter_khz 10000 lib_deps = https://github.com/meshtastic/esp8266-oled-ssd1306.git#35d796226b853b0c0ff818b2f1aa3d35e7296a96 ; ESP8266_SSD1306 https://github.com/geeksville/OneButton.git ; OneButton library for non-blocking button debounce 1202 ; CRC32, explicitly needed because dependency is missing in the ble ota update lib https://github.com/meshtastic/arduino-fsm.git#829e967b8a95c094f73c60ef8dacfe66eae38940 https://github.com/meshtastic/SparkFun_Ublox_Arduino_Library.git#31015a55e630a2df77d9d714669c621a5bf355ad https://github.com/meshtastic/RadioLib.git#80ed10d689a0568782c5bd152906b0f97d2bce93 https://github.com/meshtastic/TinyGPSPlus.git#f0f47067ef2f67c856475933188251c1ef615e79 https://github.com/meshtastic/AXP202X_Library.git#8404abb6d4b486748636bc6ad72d2a47baaf5460 Wire ; explicitly needed here because the AXP202 library forgets to add it SPI https://github.com/geeksville/ArduinoThread.git#72921ac222eed6f526ba1682023cee290d9aa1b3 PubSubClient ; Common settings for conventional (non Portduino) Ardino targets [arduino_base] framework = arduino lib_deps = ${env.lib_deps} build_flags = ${env.build_flags} -Os # -DRADIOLIB_GODMODE src_filter = ${env.src_filter} - ; Common settings for ESP targes, mixin with extends = esp32_base [esp32_base] extends = arduino_base platform = espressif32 src_filter = ${arduino_base.src_filter} - upload_speed = 921600 debug_init_break = tbreak setup build_flags = ${arduino_base.build_flags} -Wall -Wextra -Isrc/esp32 -Isrc/esp32-mfix-esp32-psram-cache-issue -lnimble -std=c++11 -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG -DAXP_DEBUG_PORT=Serial lib_deps = ${arduino_base.lib_deps} https://github.com/meshtastic/esp32_https_server.git adafruit/DHT sensor library@^1.4.1 adafruit/Adafruit Unified Sensor@^1.1.4 # Hmm - this doesn't work yet # board_build.ldscript = linker/esp32.extram.bss.ld lib_ignore = segger_rtt platform_packages = framework-arduinoespressif32@https://github.com/meshtastic/arduino-esp32.git#4cde0f5d412d2695184f32e8a47e9bea57b45276 ; leave this commented out to avoid breaking Windows upload_port = /dev/ttyUSB0 ;monitor_port = /dev/ttyUSB0 ;upload_port = /dev/cu.SLAB_USBtoUART ;monitor_port = /dev/cu.SLAB_USBtoUART ; customize the partition table ; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables board_build.partitions = partition-table.csv ; not needed included in ttgo-t-beam board file ; also to use PSRAM https://docs.platformio.org/en/latest/platforms/espressif32.html#external-ram-psram ; -DBOARD_HAS_PSRAM ; -mfix-esp32-psram-cache-issue ; -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG ; The 1.0 release of the TBEAM board [env:tbeam] extends = esp32_base board = ttgo-t-beam lib_deps = ${esp32_base.lib_deps} build_flags = ${esp32_base.build_flags} -D TBEAM_V10 ; The original TBEAM board without the AXP power chip and a few other changes ; Note: I've heard reports this didn't work. Disabled until someone with a 0.7 can test and debug. [env:tbeam0.7] extends = esp32_base board = ttgo-t-beam build_flags = ${esp32_base.build_flags} -D TBEAM_V07 [env:heltec-v2.0] ;build_type = debug ; to make it possible to step through our jtag debugger extends = esp32_base board = heltec_wifi_lora_32_V2 build_flags = ${esp32_base.build_flags} -D HELTEC_V2_0 [env:heltec-v2.1] ;build_type = debug ; to make it possible to step through our jtag debugger extends = esp32_base board = heltec_wifi_lora_32_V2 build_flags = ${esp32_base.build_flags} -D HELTEC_V2_1 [env:tlora-v1] extends = esp32_base board = ttgo-lora32-v1 build_flags = ${esp32_base.build_flags} -D TLORA_V1 ; note: the platformio definition for lora32-v2 seems stale, it is missing a pins_arduino.h file, therefore I don't think it works [env:tlora_v1_3] extends = esp32_base board = ttgo-lora32-v1 build_flags = ${esp32_base.build_flags} -D TLORA_V1_3 [env:tlora-v2] extends = esp32_base board = ttgo-lora32-v1 build_flags = ${esp32_base.build_flags} -D TLORA_V2 [env:tlora-v2-1-1.6] extends = esp32_base board = ttgo-lora32-v1 build_flags = ${esp32_base.build_flags} -D TLORA_V2_1_16 ; The Heltec Cubecell plus ; IMPORTANT NOTE: This target doesn't yet work and probably won't ever work. I'm keeping it around for now. ; For more details see my post in the forum. ;[env:cubecellplus] ;platform = https://github.com/HelTecAutomation/platform-asrmicro650x.git ; we use top-of-tree because stable version has too many bugs - asrmicro650x ;board = cubecell_board_plus ; FIXME, bug in cubecell arduino - they are supposed to set ARDUINO ;build_flags = ${arduino_base.build_flags} -DARDUINO=100 -Isrc/cubecell ;src_filter = ; ${arduino_base.src_filter} - - ; Common settings for NRF52 based targets [nrf52_base] ; Instead of the standard nordicnrf52 platform, we use our fork which has our added variant files ; platform = nordicnrf52 platform = https://github.com/meshtastic/platform-nordicnrf52.git#merge extends = arduino_base build_type = debug ; I'm debugging with ICE a lot now ; note: liboberon provides the AES256 implementation for NRF52 (though not using the hardware acceleration of the NRF52840 - FIXME) build_flags = ${arduino_base.build_flags} -Wno-unused-variable -Isrc/nrf52 -Isdk-nrfxlib/crypto/nrf_oberon/include -Lsdk-nrfxlib/crypto/nrf_oberon/lib/cortex-m4/hard-float/ -lliboberon_3.0.7 ;-DCFG_DEBUG=3 src_filter = ${arduino_base.src_filter} - - - - - - lib_ignore = BluetoothOTA monitor_port = /dev/ttyACM1 # we pass in options to jlink so it can understand freertos (note: we don't use "jlink" as the tool) ;debug_tool = jlink debug_port = :2331 # Note: the ARGUMENTS MUST BE on multiple lines. Otherwise platformio/commands/debug/helpers.py misparses everything into the "executable" # attribute and leaves "arguments" empty # /home/kevinh/.platformio/packages/tool-jlink/JLinkGDBServerCLExe # This doesn't work yet, so not using for now disabled_debug_server = /usr/bin/JLinkGDBServerCLExe -singlerun -if SWD -select USB -device nRF52840_xxAA -port 2331 -rtos GDBServer/RTOSPlugin_FreeRTOS debug_extra_cmds = source gdbinit ; after programming the flash, reset the initial PC ; debug_load_cmds = load ; Set initial breakpoint (defaults to main) debug_init_break = ;debug_init_break = tbreak loop ;debug_init_break = tbreak Reset_Handler [nrf52840_base] ; Common base class for all nrf52840 based targets extends = nrf52_base lib_deps = ${arduino_base.lib_deps} Adafruit nRFCrypto # add Adafruit nRFCrypto platform IO automated scan is broken [env:lora_isp4520] extends = nrf52_base board = lora_isp4520 # add our variants files to the include and src paths build_flags = ${nrf52_base.build_flags} -Ivariants/lora_isp4520 # No screen and GPS on the board. We still need RTC.cpp for the RTC clock. src_filter = ${nrf52_base.src_filter} +<../variants/lora_isp4520> - - + + lib_ignore = ${nrf52_base.lib_ignore} ESP8266_SSD1306 SparkFun Ublox Arduino Library AXP202X_Library TinyGPSPlus upload_protocol = jlink monitor_port = /dev/ttyUSB0 ; The NRF52840-dk development board ; Note: By default no lora device is created for this build - it uses a simulated interface [env:nrf52840dk] extends = nrf52840_base board = nrf52840_dk ; The NRF52840-dk development board, but @geeksville's board - which has a busted oscilliator [env:nrf52840dk-geeksville] extends = nrf52840_base board = nrf52840_dk_modified # add our variants files to the include and src paths build_flags = ${nrf52_base.build_flags} -Ivariants/pca10056-rc-clock src_filter = ${nrf52_base.src_filter} +<../variants/pca10056-rc-clock> ; Note: By default no lora device is created for this build - it uses a simulated interface [env:feather_nrf52832] extends = nrf52_base board = adafruit_feather_nrf52832 [env:rak815] extends = nrf52_base board = rak815 debug_tool = jlink upload_protocol = jlink monitor_port = /dev/ttyUSB0 ; this board's serial chip can only run at 115200, not faster monitor_speed = 115200 # For experimenting with RAM sizes # board_build.ldscript = linker/nrf52840_s140_sim832.ld ; The very slick RAK wireless RAK 4631 / 4630 board [env:rak4631] extends = nrf52840_base board = wiscore_rak4631 # add our variants files to the include and src paths # define build flags for the TFT_eSPI library build_flags = ${nrf52_base.build_flags} -Ivariants/WisCore_RAK4631_Board src_filter = ${nrf52_base.src_filter} +<../variants/WisCore_RAK4631_Board> debug_tool = jlink ; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm) ;upload_protocol = jlink ; Note, this board is not yet supported! It will not work without futher development. ; THIS IS UNTESTED (I don't have this board), but other developers can use it as a starting point [env:rak4600] extends = nrf52_base board = wiscore_rak4600 # add our variants files to the include and src paths # define build flags for the TFT_eSPI library build_flags = ${nrf52_base.build_flags} -Ivariants/WisCore_RAK4600_Board src_filter = ${nrf52_base.src_filter} +<../variants/WisCore_RAK4600_Board> lib_deps = ${arduino_base.lib_deps} ; The PPR board [env:ppr] extends = nrf52_base board = ppr lib_deps = ${arduino_base.lib_deps} UC1701 ; The PPR board [env:ppr1] extends = nrf52_base board = ppr1 build_flags = ${nrf52_base.build_flags} -Ivariants/ppr1 src_filter = ${nrf52_base.src_filter} +<../variants/ppr1> lib_deps = ${arduino_base.lib_deps} ; First prototype eink/nrf52840/sx1262 device [env:t-echo] extends = nrf52840_base board = t-echo # add our variants files to the include and src paths # define build flags for the TFT_eSPI library - NOTE: WE NOT LONGER USE TFT_eSPI, it was for an earlier version of the TTGO eink screens # -DBUSY_PIN=3 -DRST_PIN=2 -DDC_PIN=28 -DCS_PIN=30 build_flags = ${nrf52_base.build_flags} -Ivariants/t-echo src_filter = ${nrf52_base.src_filter} +<../variants/t-echo> lib_deps = ${nrf52840_base.lib_deps} https://github.com/geeksville/GxEPD2.git adafruit/Adafruit BusIO ;upload_protocol = fs ; First prototype eink/nrf52840/sx1262 device (removed from build because didn't ship in quantity) ;[env:eink0.1] ;extends = nrf52840_base ;board = eink0.1 ;# add our variants files to the include and src paths ;# define build flags for the TFT_eSPI library ;build_flags = ${nrf52_base.build_flags} -Ivariants/eink0.1 ; -DBUSY_PIN=3 -DRST_PIN=2 -DDC_PIN=28 -DCS_PIN=30 ;src_filter = ${nrf52_base.src_filter} +<../variants/eink0.1> ;lib_deps = ; ${nrf52840_base.lib_deps} ; https://github.com/geeksville/EPD_Libraries.git ; TFT_eSPI ; The https://github.com/BigCorvus/SX1262-LoRa-BLE-Relay board by @BigCorvus [env:lora-relay-v1] extends = nrf52840_base board = lora-relay-v1 # add our variants files to the include and src paths # define build flags for the TFT_eSPI library build_flags = ${nrf52_base.build_flags} -Ivariants/lora_relay_v1 -DUSER_SETUP_LOADED -DTFT_WIDTH=80 -DTFT_HEIGHT=160 -DST7735_GREENTAB160x80 -DST7735_DRIVER -DTFT_CS=ST7735_CS -DTFT_DC=ST7735_RS -DTFT_RST=ST7735_RESET -DSPI_FREQUENCY=27000000 src_filter = ${nrf52_base.src_filter} +<../variants/lora_relay_v1> lib_deps = ${nrf52840_base.lib_deps} SparkFun BQ27441 LiPo Fuel Gauge Arduino Library TFT_eSPI ; The https://github.com/BigCorvus/LoRa-BLE-Relay-v2 board by @BigCorvus [env:lora-relay-v2] extends = nrf52840_base board = lora-relay-v2 # add our variants files to the include and src paths # define build flags for the TFT_eSPI library build_flags = ${nrf52_base.build_flags} -Ivariants/lora_relay_v2 -DUSER_SETUP_LOADED -DTFT_WIDTH=80 -DTFT_HEIGHT=160 -DST7735_GREENTAB160x80 -DST7735_DRIVER -DTFT_CS=ST7735_CS -DTFT_DC=ST7735_RS -DTFT_RST=ST7735_RESET -DSPI_FREQUENCY=27000000 -DTFT_WR=ST7735_SDA -DTFT_SCLK=ST7735_SCK src_filter = ${nrf52_base.src_filter} +<../variants/lora_relay_v2> lib_deps = ${nrf52840_base.lib_deps} SparkFun BQ27441 LiPo Fuel Gauge Arduino Library TFT_eSPI ; The Portduino based sim environment on top of any host OS, all hardware will be simulated [env:native] platform = https://github.com/geeksville/platform-native.git src_filter = ${env.src_filter} - - - - - build_flags = ${arduino_base.build_flags} -O0 framework = arduino board = cross_platform lib_deps = ${arduino_base.lib_deps} rweather/Crypto ; The Portduino based sim environment on top of a linux OS and touching linux hardware devices [env:linux] platform = https://github.com/geeksville/platform-native.git src_filter = ${env.src_filter} - - - - - build_flags = ${arduino_base.build_flags} -O0 -lgpiod framework = arduino board = linux_hardware lib_deps = ${arduino_base.lib_deps} rweather/Crypto ; The GenieBlocks LORA prototype board ; note: @geeksville disabled because genieblocks_lora is not checked into the boards directory, please send in a PR to add it ;-) ;[env:genieblocks_lora] ;extends = esp32_base ;board = genieblocks_lora ;build_flags = ; ${esp32_base.build_flags} -D GENIEBLOCKS