platformio.ini 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ; meCoffee firmware (PlatformIO, Arduino core + plain C++ logic library)
  2. ; See README.md and docs/AGENT_HANDOFF.md.
  3. [platformio]
  4. default_envs = 328p8m
  5. [common]
  6. build_flags =
  7. -DCOMPAT_V10=1
  8. -Wall
  9. -Wextra
  10. extra_scripts = pre:tools/apply_cplusplus_flags.py
  11. [env:328p8m]
  12. platform = atmelavr@5.3.0
  13. board = 328p8m
  14. ; The device-matched original bootloader occupies 0x7c00..0x7fff (1 KiB).
  15. board_upload.maximum_size = 31744
  16. framework = arduino
  17. ; The registry toolchain (x86_64 avr-gcc 7.3) does not run on Apple Silicon without
  18. ; Rosetta. tools/toolchain-native wraps the Homebrew avr-gcc 9.5 (arm64).
  19. ; On Intel/Rosetta hosts use: toolchain-atmelavr@1.70300.191015
  20. platform_packages =
  21. framework-arduino-avr@5.4.0
  22. toolchain-atmelavr@symlink://tools/toolchain-native
  23. build_flags = ${common.build_flags}
  24. extra_scripts = ${common.extra_scripts}
  25. lib_deps =
  26. meCoffee_controller_logic
  27. meCoffee_hardware_access
  28. lib_ignore = meCoffee_simulated_hardware
  29. lib_ldf_mode = chain
  30. upload_protocol = arduino
  31. upload_speed = 57600
  32. [env:uno]
  33. extends = env:328p8m
  34. board = uno
  35. board_upload.maximum_size = 32256
  36. board_build.f_cpu = 16000000L
  37. build_flags =
  38. ${common.build_flags}
  39. -DMECOFFEE_ARDUINO_16MHZ=1
  40. upload_speed = 115200
  41. [env:pro_mini]
  42. extends = env:uno
  43. board = pro16MHzatmega328
  44. board_upload.maximum_size = 30720
  45. upload_speed = 57600
  46. [env:nano]
  47. extends = env:uno
  48. board = nanoatmega328new
  49. board_upload.maximum_size = 30720
  50. upload_speed = 115200
  51. ; Bench-only BLE upload experiment, pinned to the verified stock Uno Optiboot 4.4.
  52. ; See docs/UNO_BLE_FLASH_TEST.md. USB installer checks the bootloader before writing.
  53. [env:uno_ble_test]
  54. extends = env:uno
  55. build_flags =
  56. ${env:uno.build_flags}
  57. -DMECOFFEE_UNO_BLE_TEST=1
  58. upload_protocol = custom
  59. upload_command = "$PYTHONEXE" "$PROJECT_DIR/tools/ble_test/upload_usb.py" --port "$UPLOAD_PORT" "$SOURCE"
  60. ; Same firmware with start-up padded to the original's start-up time (differential runs only).
  61. [env:328p8m_aligned]
  62. extends = env:328p8m
  63. build_flags =
  64. ${common.build_flags}
  65. -DMECOFFEE_CONSTRUCTION_ALIGNMENT_MICROSECONDS=5900
  66. -DMECOFFEE_SETUP_ALIGNMENT_MICROSECONDS=1100
  67. [env:float_check]
  68. extends = env:328p8m
  69. build_src_filter = -<*> +<../tools/avr_checks/float_check.cpp>
  70. [env:native]
  71. platform = native
  72. build_flags =
  73. ${common.build_flags}
  74. -DNATIVE_TEST=1
  75. extra_scripts = ${common.extra_scripts}
  76. lib_ignore = meCoffee_hardware_access
  77. lib_deps =
  78. meCoffee_controller_logic
  79. meCoffee_simulated_hardware
  80. test_framework = unity
  81. [env:native_arduino16m]
  82. extends = env:native
  83. build_flags =
  84. ${env:native.build_flags}
  85. -DMECOFFEE_ARDUINO_16MHZ=1