diff --git a/arduino/cores/packagemanager/loader.go b/arduino/cores/packagemanager/loader.go index d5efc1465fa..18ac28d8dd0 100644 --- a/arduino/cores/packagemanager/loader.go +++ b/arduino/cores/packagemanager/loader.go @@ -19,6 +19,7 @@ import ( "fmt" "os" "path/filepath" + "regexp" "strconv" "strings" @@ -419,6 +420,8 @@ func convertLegacyPlatformToPluggableDiscovery(platform *cores.PlatformRelease) } } +var netPropRegexp = regexp.MustCompile(`\{upload\.network\.([^}]+)\}`) + func convertLegacyNetworkPatternToPluggableDiscovery(props *properties.Map, newToolName string) *properties.Map { pattern, ok := props.GetOk("upload.network_pattern") if !ok { @@ -432,6 +435,11 @@ func convertLegacyNetworkPatternToPluggableDiscovery(props *properties.Map, newT props.Set("upload.field.password.secret", "true") pattern = strings.ReplaceAll(pattern, "{network.password}", "{upload.field.password}") } + // Search for "{upload.network.PROPERTY}"" and convert it to "{upload.port.property.PROPERTY}" + for netPropRegexp.MatchString(pattern) { + netProp := netPropRegexp.FindStringSubmatch(pattern)[1] + pattern = strings.ReplaceAll(pattern, "{upload.network."+netProp+"}", "{upload.port.properties."+netProp+"}") + } props.Set("upload.pattern", pattern) prefix := "tools." + newToolName + "." diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 0aba2293d12..76feb7b5779 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -71,7 +71,7 @@ func TestResolveFQBN(t *testing.T) { require.NotNil(t, platformRelease.Platform) require.Equal(t, platformRelease.Platform.String(), "arduino:avr") require.NotNil(t, board) - require.Equal(t, board.Name(), "Arduino/Genuino Uno") + require.Equal(t, board.Name(), "Arduino Uno") require.NotNil(t, props) require.Equal(t, platformRelease, buildPlatformRelease) @@ -85,7 +85,7 @@ func TestResolveFQBN(t *testing.T) { require.NotNil(t, platformRelease.Platform) require.Equal(t, platformRelease.Platform.String(), "arduino:avr") require.NotNil(t, board) - require.Equal(t, board.Name(), "Arduino/Genuino Mega or Mega 2560") + require.Equal(t, board.Name(), "Arduino Mega or Mega 2560") require.NotNil(t, props) require.Equal(t, platformRelease, buildPlatformRelease) @@ -460,6 +460,7 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) { platformProps := platformRelease.Properties require.Equal(t, "builtin:serial-discovery", platformProps.Get("pluggable_discovery.required.0")) require.Equal(t, "builtin:mdns-discovery", platformProps.Get("pluggable_discovery.required.1")) + require.Equal(t, "builtin:serial-monitor", platformProps.Get("pluggable_monitor.required.serial")) require.Equal(t, "{runtime.tools.esptool.path}", platformProps.Get("tools.esptool__pluggable_network.path")) require.Contains(t, platformProps.Get("tools.esptool__pluggable_network.cmd"), "esptool") require.Contains(t, platformProps.Get("tools.esptool__pluggable_network.network_cmd"), "{runtime.platform.path}/tools/espota") @@ -481,6 +482,7 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) { platformProps := platformRelease.Properties require.Equal(t, "builtin:serial-discovery", platformProps.Get("pluggable_discovery.required.0")) require.Equal(t, "builtin:mdns-discovery", platformProps.Get("pluggable_discovery.required.1")) + require.Equal(t, "builtin:serial-monitor", platformProps.Get("pluggable_monitor.required.serial")) require.Equal(t, "", platformProps.Get("tools.esptool__pluggable_network.path")) require.Equal(t, "{runtime.tools.python3.path}/python3", platformProps.Get("tools.esptool__pluggable_network.cmd")) require.Equal(t, "{runtime.tools.python3.path}/python3", platformProps.Get("tools.esptool__pluggable_network.network_cmd")) @@ -491,4 +493,18 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) { require.Equal(t, "true", platformProps.Get("tools.esptool__pluggable_network.upload.field.password.secret")) require.Equal(t, "\"{network_cmd}\" -I \"{runtime.platform.path}/tools/espota.py\" -i \"{upload.port.address}\" -p \"{upload.port.properties.port}\" \"--auth={upload.field.password}\" -f \"{build.path}/{build.project_name}.bin\"", platformProps.Get("tools.esptool__pluggable_network.upload.pattern")) } + { + fqbn, err := cores.ParseFQBN("arduino:avr:uno") + require.NoError(t, err) + require.NotNil(t, fqbn) + _, platformRelease, board, _, _, err := pm.ResolveFQBN(fqbn) + require.NoError(t, err) + require.Equal(t, "avrdude__pluggable_network", board.Properties.Get("upload.tool.network")) + require.Equal(t, "uno", board.Properties.Get("upload_port.4.board")) + platformProps := platformRelease.Properties + require.Equal(t, "builtin:serial-discovery", platformProps.Get("pluggable_discovery.required.0")) + require.Equal(t, "builtin:mdns-discovery", platformProps.Get("pluggable_discovery.required.1")) + require.Equal(t, "builtin:serial-monitor", platformProps.Get("pluggable_monitor.required.serial")) + require.Equal(t, `"{network_cmd}" -address {upload.port.address} -port {upload.port.properties.port} -sketch "{build.path}/{build.project_name}.hex" -upload {upload.port.properties.endpoint_upload} -sync {upload.port.properties.endpoint_sync} -reset {upload.port.properties.endpoint_reset} -sync_exp {upload.port.properties.sync_return}`, platformProps.Get("tools.avrdude__pluggable_network.upload.pattern")) + } } diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/boards.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/boards.txt new file mode 100644 index 00000000000..1344fbb5c04 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/boards.txt @@ -0,0 +1,1054 @@ +# See: http://code.google.com/p/arduino/wiki/Platforms + +menu.cpu=Processor + +############################################################## + +yun.name=Arduino Yún +yun.upload.via_ssh=true + +yun.vid.0=0x2341 +yun.pid.0=0x0041 +yun.vid.1=0x2341 +yun.pid.1=0x8041 +yun.vid.2=0x2A03 +yun.pid.2=0x0041 +yun.vid.3=0x2A03 +yun.pid.3=0x8041 + +yun.upload.tool=avrdude +yun.upload.protocol=avr109 +yun.upload.maximum_size=28672 +yun.upload.maximum_data_size=2560 +yun.upload.speed=57600 +yun.upload.disable_flushing=true +yun.upload.use_1200bps_touch=true +yun.upload.wait_for_upload_port=true + +yun.bootloader.tool=avrdude +yun.bootloader.low_fuses=0xff +yun.bootloader.high_fuses=0xd8 +yun.bootloader.extended_fuses=0xfb +yun.bootloader.file=caterina/Caterina-Yun.hex +yun.bootloader.noblink=caterina/Caterina-Yun-noblink.hex +yun.bootloader.unlock_bits=0x3F +yun.bootloader.lock_bits=0x2F + +yun.build.mcu=atmega32u4 +yun.build.f_cpu=16000000L +yun.build.vid=0x2341 +yun.build.pid=0x8041 +yun.build.usb_product="Arduino Yun" +yun.build.board=AVR_YUN +yun.build.core=arduino +yun.build.variant=yun +yun.build.extra_flags={build.usb_flags} + +############################################################## + +uno.name=Arduino Uno + +uno.vid.0=0x2341 +uno.pid.0=0x0043 +uno.vid.1=0x2341 +uno.pid.1=0x0001 +uno.vid.2=0x2A03 +uno.pid.2=0x0043 +uno.vid.3=0x2341 +uno.pid.3=0x0243 + +uno.upload.tool=avrdude +uno.upload.protocol=arduino +uno.upload.maximum_size=32256 +uno.upload.maximum_data_size=2048 +uno.upload.speed=115200 + +uno.bootloader.tool=avrdude +uno.bootloader.low_fuses=0xFF +uno.bootloader.high_fuses=0xDE +uno.bootloader.extended_fuses=0xFD +uno.bootloader.unlock_bits=0x3F +uno.bootloader.lock_bits=0x0F +uno.bootloader.file=optiboot/optiboot_atmega328.hex + +uno.build.mcu=atmega328p +uno.build.f_cpu=16000000L +uno.build.board=AVR_UNO +uno.build.core=arduino +uno.build.variant=standard + +############################################################## + +diecimila.name=Arduino Duemilanove or Diecimila + +diecimila.upload.tool=avrdude +diecimila.upload.protocol=arduino + +diecimila.bootloader.tool=avrdude +diecimila.bootloader.low_fuses=0xFF +diecimila.bootloader.unlock_bits=0x3F +diecimila.bootloader.lock_bits=0x0F + +diecimila.build.f_cpu=16000000L +diecimila.build.board=AVR_DUEMILANOVE +diecimila.build.core=arduino +diecimila.build.variant=standard + +## Arduino Duemilanove or Diecimila w/ ATmega328P +## ---------------------------------------------- +diecimila.menu.cpu.atmega328=ATmega328P + +diecimila.menu.cpu.atmega328.upload.maximum_size=30720 +diecimila.menu.cpu.atmega328.upload.maximum_data_size=2048 +diecimila.menu.cpu.atmega328.upload.speed=57600 + +diecimila.menu.cpu.atmega328.bootloader.high_fuses=0xDA +diecimila.menu.cpu.atmega328.bootloader.extended_fuses=0xFD +diecimila.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex + +diecimila.menu.cpu.atmega328.build.mcu=atmega328p + +## Arduino Duemilanove or Diecimila w/ ATmega168 +## --------------------------------------------- +diecimila.menu.cpu.atmega168=ATmega168 + +diecimila.menu.cpu.atmega168.upload.maximum_size=14336 +diecimila.menu.cpu.atmega168.upload.maximum_data_size=1024 +diecimila.menu.cpu.atmega168.upload.speed=19200 + +diecimila.menu.cpu.atmega168.bootloader.high_fuses=0xdd +diecimila.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +diecimila.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex + +diecimila.menu.cpu.atmega168.build.mcu=atmega168 + +############################################################## + +nano.name=Arduino Nano + +nano.upload.tool=avrdude +nano.upload.protocol=arduino + +nano.bootloader.tool=avrdude +nano.bootloader.unlock_bits=0x3F +nano.bootloader.lock_bits=0x0F + +nano.build.f_cpu=16000000L +nano.build.board=AVR_NANO +nano.build.core=arduino +nano.build.variant=eightanaloginputs + +## Arduino Nano w/ ATmega328P +## -------------------------- +nano.menu.cpu.atmega328=ATmega328P + +nano.menu.cpu.atmega328.upload.maximum_size=30720 +nano.menu.cpu.atmega328.upload.maximum_data_size=2048 +nano.menu.cpu.atmega328.upload.speed=115200 + +nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF +nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA +nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD +nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex + +nano.menu.cpu.atmega328.build.mcu=atmega328p + +## Arduino Nano w/ ATmega328P (old bootloader) +## -------------------------- +nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader) + +nano.menu.cpu.atmega328old.upload.maximum_size=30720 +nano.menu.cpu.atmega328old.upload.maximum_data_size=2048 +nano.menu.cpu.atmega328old.upload.speed=57600 + +nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF +nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA +nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD +nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex + +nano.menu.cpu.atmega328old.build.mcu=atmega328p + +## Arduino Nano w/ ATmega168 +## ------------------------- +nano.menu.cpu.atmega168=ATmega168 + +nano.menu.cpu.atmega168.upload.maximum_size=14336 +nano.menu.cpu.atmega168.upload.maximum_data_size=1024 +nano.menu.cpu.atmega168.upload.speed=19200 + +nano.menu.cpu.atmega168.bootloader.low_fuses=0xff +nano.menu.cpu.atmega168.bootloader.high_fuses=0xdd +nano.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +nano.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex + +nano.menu.cpu.atmega168.build.mcu=atmega168 + +############################################################## + +mega.name=Arduino Mega or Mega 2560 + +mega.vid.0=0x2341 +mega.pid.0=0x0010 +mega.vid.1=0x2341 +mega.pid.1=0x0042 +mega.vid.2=0x2A03 +mega.pid.2=0x0010 +mega.vid.3=0x2A03 +mega.pid.3=0x0042 +mega.vid.4=0x2341 +mega.pid.4=0x0210 +mega.vid.5=0x2341 +mega.pid.5=0x0242 + +mega.upload.tool=avrdude +mega.upload.maximum_data_size=8192 + +mega.bootloader.tool=avrdude +mega.bootloader.low_fuses=0xFF +mega.bootloader.unlock_bits=0x3F +mega.bootloader.lock_bits=0x0F + +mega.build.f_cpu=16000000L +mega.build.core=arduino +mega.build.variant=mega +# default board may be overridden by the cpu menu +mega.build.board=AVR_MEGA2560 + +## Arduino Mega w/ ATmega2560 +## ------------------------- +mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560) + +mega.menu.cpu.atmega2560.upload.protocol=wiring +mega.menu.cpu.atmega2560.upload.maximum_size=253952 +mega.menu.cpu.atmega2560.upload.speed=115200 + +mega.menu.cpu.atmega2560.bootloader.high_fuses=0xD8 +mega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD +mega.menu.cpu.atmega2560.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex + +mega.menu.cpu.atmega2560.build.mcu=atmega2560 +mega.menu.cpu.atmega2560.build.board=AVR_MEGA2560 + +## Arduino Mega w/ ATmega1280 +## ------------------------- +mega.menu.cpu.atmega1280=ATmega1280 + +mega.menu.cpu.atmega1280.upload.protocol=arduino +mega.menu.cpu.atmega1280.upload.maximum_size=126976 +mega.menu.cpu.atmega1280.upload.speed=57600 + +mega.menu.cpu.atmega1280.bootloader.high_fuses=0xDA +mega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5 +mega.menu.cpu.atmega1280.bootloader.file=atmega/ATmegaBOOT_168_atmega1280.hex + +mega.menu.cpu.atmega1280.build.mcu=atmega1280 +mega.menu.cpu.atmega1280.build.board=AVR_MEGA + +############################################################## + +megaADK.name=Arduino Mega ADK + +megaADK.vid.0=0x2341 +megaADK.pid.0=0x003f +megaADK.vid.1=0x2341 +megaADK.pid.1=0x0044 +megaADK.vid.2=0x2A03 +megaADK.pid.2=0x003f +megaADK.vid.3=0x2A03 +megaADK.pid.3=0x0044 + +megaADK.upload.tool=avrdude +megaADK.upload.protocol=wiring +megaADK.upload.maximum_size=253952 +megaADK.upload.maximum_data_size=8192 +megaADK.upload.speed=115200 + +megaADK.bootloader.tool=avrdude +megaADK.bootloader.low_fuses=0xFF +megaADK.bootloader.high_fuses=0xD8 +megaADK.bootloader.extended_fuses=0xFD +megaADK.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex +megaADK.bootloader.unlock_bits=0x3F +megaADK.bootloader.lock_bits=0x0F + +megaADK.build.mcu=atmega2560 +megaADK.build.f_cpu=16000000L +megaADK.build.board=AVR_ADK +megaADK.build.core=arduino +megaADK.build.variant=mega + +############################################################## + +leonardo.name=Arduino Leonardo +leonardo.vid.0=0x2341 +leonardo.pid.0=0x0036 +leonardo.vid.1=0x2341 +leonardo.pid.1=0x8036 +leonardo.vid.2=0x2A03 +leonardo.pid.2=0x0036 +leonardo.vid.3=0x2A03 +leonardo.pid.3=0x8036 + +leonardo.upload.tool=avrdude +leonardo.upload.protocol=avr109 +leonardo.upload.maximum_size=28672 +leonardo.upload.maximum_data_size=2560 +leonardo.upload.speed=57600 +leonardo.upload.disable_flushing=true +leonardo.upload.use_1200bps_touch=true +leonardo.upload.wait_for_upload_port=true + +leonardo.bootloader.tool=avrdude +leonardo.bootloader.low_fuses=0xff +leonardo.bootloader.high_fuses=0xd8 +leonardo.bootloader.extended_fuses=0xcb +leonardo.bootloader.file=caterina/Caterina-Leonardo.hex +leonardo.bootloader.unlock_bits=0x3F +leonardo.bootloader.lock_bits=0x2F + +leonardo.build.mcu=atmega32u4 +leonardo.build.f_cpu=16000000L +leonardo.build.vid=0x2341 +leonardo.build.pid=0x8036 +leonardo.build.usb_product="Arduino Leonardo" +leonardo.build.board=AVR_LEONARDO +leonardo.build.core=arduino +leonardo.build.variant=leonardo +leonardo.build.extra_flags={build.usb_flags} + +############################################################## + +leonardoeth.name=Arduino Leonardo ETH +leonardoeth.vid.0=0x2a03 +leonardoeth.pid.0=0x0040 +leonardoeth.vid.1=0x2a03 +leonardoeth.pid.1=0x8040 + +leonardoeth.upload.tool=avrdude +leonardoeth.upload.protocol=avr109 +leonardoeth.upload.maximum_size=28672 +leonardoeth.upload.maximum_data_size=2560 +leonardoeth.upload.speed=57600 +leonardoeth.upload.disable_flushing=true +leonardoeth.upload.use_1200bps_touch=true +leonardoeth.upload.wait_for_upload_port=true + +leonardoeth.bootloader.tool=avrdude +leonardoeth.bootloader.low_fuses=0xff +leonardoeth.bootloader.high_fuses=0xd8 +leonardoeth.bootloader.extended_fuses=0xcb +leonardoeth.bootloader.file=caterina/Caterina-LeonardoEthernet.hex +leonardoeth.bootloader.unlock_bits=0x3F +leonardoeth.bootloader.lock_bits=0x2F + +leonardoeth.build.mcu=atmega32u4 +leonardoeth.build.f_cpu=16000000L +leonardoeth.build.vid=0x2a03 +leonardoeth.build.pid=0x8040 +leonardoeth.build.usb_product="Arduino Leonardo ETH" +leonardoeth.build.board=AVR_LEONARDO_ETH +leonardoeth.build.core=arduino +leonardoeth.build.variant=leonardo +leonardoeth.build.extra_flags={build.usb_flags} + +############################################################## + +micro.name=Arduino Micro + +micro.vid.0=0x2341 +micro.pid.0=0x0037 +micro.vid.1=0x2341 +micro.pid.1=0x8037 +micro.vid.2=0x2A03 +micro.pid.2=0x0037 +micro.vid.3=0x2A03 +micro.pid.3=0x8037 +micro.vid.4=0x2341 +micro.pid.4=0x0237 +micro.vid.5=0x2341 +micro.pid.5=0x8237 + +micro.upload.tool=avrdude +micro.upload.protocol=avr109 +micro.upload.maximum_size=28672 +micro.upload.maximum_data_size=2560 +micro.upload.speed=57600 +micro.upload.disable_flushing=true +micro.upload.use_1200bps_touch=true +micro.upload.wait_for_upload_port=true + +micro.bootloader.tool=avrdude +micro.bootloader.low_fuses=0xff +micro.bootloader.high_fuses=0xd8 +micro.bootloader.extended_fuses=0xcb +micro.bootloader.file=caterina/Caterina-Micro.hex +micro.bootloader.unlock_bits=0x3F +micro.bootloader.lock_bits=0x2F + +micro.build.mcu=atmega32u4 +micro.build.f_cpu=16000000L +micro.build.vid=0x2341 +micro.build.pid=0x8037 +micro.build.usb_product="Arduino Micro" +micro.build.board=AVR_MICRO +micro.build.core=arduino +micro.build.variant=micro +micro.build.extra_flags={build.usb_flags} + +############################################################## + +esplora.name=Arduino Esplora +esplora.vid.0=0x2341 +esplora.pid.0=0x003C +esplora.vid.1=0x2341 +esplora.pid.1=0x803C +esplora.vid.2=0x2A03 +esplora.pid.2=0x003C +esplora.vid.3=0x2A03 +esplora.pid.3=0x803C + +esplora.upload.tool=avrdude +esplora.upload.protocol=avr109 +esplora.upload.maximum_size=28672 +esplora.upload.maximum_data_size=2560 +esplora.upload.speed=57600 +esplora.upload.disable_flushing=true +esplora.upload.use_1200bps_touch=true +esplora.upload.wait_for_upload_port=true + +esplora.bootloader.tool=avrdude +esplora.bootloader.low_fuses=0xff +esplora.bootloader.high_fuses=0xd8 +esplora.bootloader.extended_fuses=0xcb +esplora.bootloader.file=caterina/Caterina-Esplora.hex +esplora.bootloader.unlock_bits=0x3F +esplora.bootloader.lock_bits=0x2F + +esplora.build.mcu=atmega32u4 +esplora.build.f_cpu=16000000L +esplora.build.vid=0x2341 +esplora.build.pid=0x803c +esplora.build.usb_product="Arduino Esplora" +esplora.build.board=AVR_ESPLORA +esplora.build.core=arduino +esplora.build.variant=leonardo +esplora.build.extra_flags={build.usb_flags} + +############################################################## + +mini.name=Arduino Mini + +mini.upload.tool=avrdude +mini.upload.protocol=arduino + +mini.bootloader.tool=avrdude +mini.bootloader.low_fuses=0xff +mini.bootloader.unlock_bits=0x3F +mini.bootloader.lock_bits=0x0F + +mini.build.f_cpu=16000000L +mini.build.board=AVR_MINI +mini.build.core=arduino +mini.build.variant=eightanaloginputs + +## Arduino Mini w/ ATmega328P +## -------------------------- +mini.menu.cpu.atmega328=ATmega328P + +mini.menu.cpu.atmega328.upload.maximum_size=28672 +mini.menu.cpu.atmega328.upload.maximum_data_size=2048 +mini.menu.cpu.atmega328.upload.speed=115200 + +mini.menu.cpu.atmega328.bootloader.high_fuses=0xd8 +mini.menu.cpu.atmega328.bootloader.extended_fuses=0xFD +mini.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328-Mini.hex + +mini.menu.cpu.atmega328.build.mcu=atmega328p + +## Arduino Mini w/ ATmega168 +## ------------------------- +mini.menu.cpu.atmega168=ATmega168 + +mini.menu.cpu.atmega168.upload.maximum_size=14336 +mini.menu.cpu.atmega168.upload.maximum_data_size=1024 +mini.menu.cpu.atmega168.upload.speed=19200 + +mini.menu.cpu.atmega168.bootloader.high_fuses=0xdd +mini.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +mini.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex + +mini.menu.cpu.atmega168.build.mcu=atmega168 + +############################################################## + +ethernet.name=Arduino Ethernet + +ethernet.upload.tool=avrdude +ethernet.upload.protocol=arduino +ethernet.upload.maximum_size=32256 +ethernet.upload.maximum_data_size=2048 +ethernet.upload.speed=115200 + +ethernet.bootloader.tool=avrdude +ethernet.bootloader.low_fuses=0xff +ethernet.bootloader.high_fuses=0xde +ethernet.bootloader.extended_fuses=0xFD +ethernet.bootloader.file=optiboot/optiboot_atmega328.hex +ethernet.bootloader.unlock_bits=0x3F +ethernet.bootloader.lock_bits=0x0F + +ethernet.build.variant=ethernet +ethernet.build.mcu=atmega328p +ethernet.build.f_cpu=16000000L +ethernet.build.board=AVR_ETHERNET +ethernet.build.core=arduino + +############################################################## + +fio.name=Arduino Fio + +fio.upload.tool=avrdude +fio.upload.protocol=arduino +fio.upload.maximum_size=30720 +fio.upload.maximum_data_size=2048 +fio.upload.speed=57600 + +fio.bootloader.tool=avrdude +fio.bootloader.low_fuses=0xFF +fio.bootloader.high_fuses=0xDA +fio.bootloader.extended_fuses=0xFD +fio.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex +fio.bootloader.unlock_bits=0x3F +fio.bootloader.lock_bits=0x0F + +fio.build.mcu=atmega328p +fio.build.f_cpu=8000000L +fio.build.board=AVR_FIO +fio.build.core=arduino +fio.build.variant=eightanaloginputs + +############################################################## + +bt.name=Arduino BT + +bt.upload.tool=avrdude +bt.upload.protocol=arduino +bt.upload.speed=19200 +bt.upload.disable_flushing=true + +bt.bootloader.tool=avrdude +bt.bootloader.low_fuses=0xff +bt.bootloader.unlock_bits=0x3F +bt.bootloader.lock_bits=0x0F + +bt.build.f_cpu=16000000L +bt.build.board=AVR_BT +bt.build.core=arduino +bt.build.variant=eightanaloginputs + +## Arduino BT w/ ATmega328P +## ------------------------ +bt.menu.cpu.atmega328=ATmega328P +bt.menu.cpu.atmega328.upload.maximum_size=28672 +bt.menu.cpu.atmega328.upload.maximum_data_size=2048 + +bt.menu.cpu.atmega328.bootloader.high_fuses=0xd8 +bt.menu.cpu.atmega328.bootloader.extended_fuses=0xFD +bt.menu.cpu.atmega328.bootloader.file=bt/ATmegaBOOT_168_atmega328_bt.hex + +bt.menu.cpu.atmega328.build.mcu=atmega328p + +## Arduino BT w/ ATmega168 +## ----------------------- +bt.menu.cpu.atmega168=ATmega168 +bt.menu.cpu.atmega168.upload.maximum_size=14336 +bt.menu.cpu.atmega168.upload.maximum_data_size=1024 + +bt.menu.cpu.atmega168.bootloader.high_fuses=0xdd +bt.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +bt.menu.cpu.atmega168.bootloader.file=bt/ATmegaBOOT_168.hex + +bt.menu.cpu.atmega168.build.mcu=atmega168 + +############################################################## + +LilyPadUSB.name=LilyPad Arduino USB +LilyPadUSB.vid.0=0x1B4F +LilyPadUSB.pid.0=0x9207 +LilyPadUSB.vid.1=0x1B4F +LilyPadUSB.pid.1=0x9208 + +LilyPadUSB.upload.tool=avrdude +LilyPadUSB.upload.protocol=avr109 +LilyPadUSB.upload.maximum_size=28672 +LilyPadUSB.upload.maximum_data_size=2560 +LilyPadUSB.upload.speed=57600 +LilyPadUSB.upload.disable_flushing=true +LilyPadUSB.upload.use_1200bps_touch=true +LilyPadUSB.upload.wait_for_upload_port=true + +LilyPadUSB.bootloader.tool=avrdude +LilyPadUSB.bootloader.low_fuses=0xff +LilyPadUSB.bootloader.high_fuses=0xd8 +LilyPadUSB.bootloader.extended_fuses=0xce +LilyPadUSB.bootloader.file=caterina-LilyPadUSB/Caterina-LilyPadUSB.hex +LilyPadUSB.bootloader.unlock_bits=0x3F +LilyPadUSB.bootloader.lock_bits=0x2F + +LilyPadUSB.build.mcu=atmega32u4 +LilyPadUSB.build.f_cpu=8000000L +LilyPadUSB.build.vid=0x1B4F +LilyPadUSB.build.pid=0x9208 +LilyPadUSB.build.usb_product="LilyPad USB" +LilyPadUSB.build.board=AVR_LILYPAD_USB +LilyPadUSB.build.core=arduino +LilyPadUSB.build.variant=leonardo +LilyPadUSB.build.extra_flags={build.usb_flags} + +############################################################## + +lilypad.name=LilyPad Arduino + +lilypad.upload.tool=avrdude +lilypad.upload.protocol=arduino + +lilypad.bootloader.tool=avrdude +lilypad.bootloader.unlock_bits=0x3F +lilypad.bootloader.lock_bits=0x0F + +lilypad.build.f_cpu=8000000L +lilypad.build.board=AVR_LILYPAD +lilypad.build.core=arduino +lilypad.build.variant=standard + +## LilyPad Arduino w/ ATmega328P +## ----------------------------- +lilypad.menu.cpu.atmega328=ATmega328P + +lilypad.menu.cpu.atmega328.upload.maximum_size=30720 +lilypad.menu.cpu.atmega328.upload.maximum_data_size=2048 +lilypad.menu.cpu.atmega328.upload.speed=57600 + +lilypad.menu.cpu.atmega328.bootloader.low_fuses=0xFF +lilypad.menu.cpu.atmega328.bootloader.high_fuses=0xDA +lilypad.menu.cpu.atmega328.bootloader.extended_fuses=0xFD +lilypad.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex + +lilypad.menu.cpu.atmega328.build.mcu=atmega328p + +## LilyPad Arduino w/ ATmega168 +## ---------------------------- +lilypad.menu.cpu.atmega168=ATmega168 + +lilypad.menu.cpu.atmega168.upload.maximum_size=14336 +lilypad.menu.cpu.atmega168.upload.maximum_data_size=1024 +lilypad.menu.cpu.atmega168.upload.speed=19200 + +lilypad.menu.cpu.atmega168.bootloader.low_fuses=0xe2 +lilypad.menu.cpu.atmega168.bootloader.high_fuses=0xdd +lilypad.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +lilypad.menu.cpu.atmega168.bootloader.file=lilypad/LilyPadBOOT_168.hex + +lilypad.menu.cpu.atmega168.build.mcu=atmega168 + +############################################################## + +pro.name=Arduino Pro or Pro Mini + +pro.upload.tool=avrdude +pro.upload.protocol=arduino + +pro.bootloader.tool=avrdude +pro.bootloader.unlock_bits=0x3F +pro.bootloader.lock_bits=0x0F + +pro.build.board=AVR_PRO +pro.build.core=arduino +pro.build.variant=eightanaloginputs + +## Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328P +## -------------------------------------------------- +pro.menu.cpu.16MHzatmega328=ATmega328P (5V, 16 MHz) + +pro.menu.cpu.16MHzatmega328.upload.maximum_size=30720 +pro.menu.cpu.16MHzatmega328.upload.maximum_data_size=2048 +pro.menu.cpu.16MHzatmega328.upload.speed=57600 + +pro.menu.cpu.16MHzatmega328.bootloader.low_fuses=0xFF +pro.menu.cpu.16MHzatmega328.bootloader.high_fuses=0xDA +pro.menu.cpu.16MHzatmega328.bootloader.extended_fuses=0xFD +pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex + +pro.menu.cpu.16MHzatmega328.build.mcu=atmega328p +pro.menu.cpu.16MHzatmega328.build.f_cpu=16000000L + +## Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328P +## --------------------------------------------------- +pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz) + +pro.menu.cpu.8MHzatmega328.upload.maximum_size=30720 +pro.menu.cpu.8MHzatmega328.upload.maximum_data_size=2048 +pro.menu.cpu.8MHzatmega328.upload.speed=57600 + +pro.menu.cpu.8MHzatmega328.bootloader.low_fuses=0xFF +pro.menu.cpu.8MHzatmega328.bootloader.high_fuses=0xDA +pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFD +pro.menu.cpu.8MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex + +pro.menu.cpu.8MHzatmega328.build.mcu=atmega328p +pro.menu.cpu.8MHzatmega328.build.f_cpu=8000000L + +## Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168 +## ------------------------------------------------- +pro.menu.cpu.16MHzatmega168=ATmega168 (5V, 16 MHz) + +pro.menu.cpu.16MHzatmega168.upload.maximum_size=14336 +pro.menu.cpu.16MHzatmega168.upload.maximum_data_size=1024 +pro.menu.cpu.16MHzatmega168.upload.speed=19200 + +pro.menu.cpu.16MHzatmega168.bootloader.low_fuses=0xff +pro.menu.cpu.16MHzatmega168.bootloader.high_fuses=0xdd +pro.menu.cpu.16MHzatmega168.bootloader.extended_fuses=0xF8 +pro.menu.cpu.16MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex + +pro.menu.cpu.16MHzatmega168.build.mcu=atmega168 +pro.menu.cpu.16MHzatmega168.build.f_cpu=16000000L + +## Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168 +## -------------------------------------------------- +pro.menu.cpu.8MHzatmega168=ATmega168 (3.3V, 8 MHz) + +pro.menu.cpu.8MHzatmega168.upload.maximum_size=14336 +pro.menu.cpu.8MHzatmega168.upload.maximum_data_size=1024 +pro.menu.cpu.8MHzatmega168.upload.speed=19200 + +pro.menu.cpu.8MHzatmega168.bootloader.low_fuses=0xc6 +pro.menu.cpu.8MHzatmega168.bootloader.high_fuses=0xdd +pro.menu.cpu.8MHzatmega168.bootloader.extended_fuses=0xF8 +pro.menu.cpu.8MHzatmega168.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex + +pro.menu.cpu.8MHzatmega168.build.mcu=atmega168 +pro.menu.cpu.8MHzatmega168.build.f_cpu=8000000L + +############################################################## + +atmegang.name=Arduino NG or older + +atmegang.upload.tool=avrdude +atmegang.upload.protocol=arduino +atmegang.upload.speed=19200 + +atmegang.bootloader.tool=avrdude +atmegang.bootloader.unlock_bits=0x3F +atmegang.bootloader.lock_bits=0x0F + +atmegang.build.mcu=atmegang +atmegang.build.f_cpu=16000000L +atmegang.build.board=AVR_NG +atmegang.build.core=arduino +atmegang.build.variant=standard + +## Arduino NG or older w/ ATmega168 +## -------------------------------- +atmegang.menu.cpu.atmega168=ATmega168 + +atmegang.menu.cpu.atmega168.upload.maximum_size=14336 +atmegang.menu.cpu.atmega168.upload.maximum_data_size=1024 + +atmegang.menu.cpu.atmega168.bootloader.low_fuses=0xff +atmegang.menu.cpu.atmega168.bootloader.high_fuses=0xdd +atmegang.menu.cpu.atmega168.bootloader.extended_fuses=0xF8 +atmegang.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex + +atmegang.menu.cpu.atmega168.build.mcu=atmega168 + +## Arduino NG or older w/ ATmega8 +## ------------------------------ +atmegang.menu.cpu.atmega8=ATmega8 + +atmegang.menu.cpu.atmega8.upload.maximum_size=7168 +atmegang.menu.cpu.atmega8.upload.maximum_data_size=1024 + +atmegang.menu.cpu.atmega8.bootloader.low_fuses=0xdf +atmegang.menu.cpu.atmega8.bootloader.high_fuses=0xca +atmegang.menu.cpu.atmega8.bootloader.extended_fuses= +atmegang.menu.cpu.atmega8.bootloader.file=atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex + +atmegang.menu.cpu.atmega8.build.mcu=atmega8 + +############################################################## + +robotControl.name=Arduino Robot Control +robotControl.vid.0=0x2341 +robotControl.pid.0=0x0038 +robotControl.vid.1=0x2341 +robotControl.pid.1=0x8038 +robotControl.vid.2=0x2A03 +robotControl.pid.2=0x0038 +robotControl.vid.3=0x2A03 +robotControl.pid.3=0x8038 + +robotControl.upload.tool=avrdude +robotControl.upload.protocol=avr109 +robotControl.upload.maximum_size=28672 +robotControl.upload.maximum_data_size=2560 +robotControl.upload.speed=57600 +robotControl.upload.disable_flushing=true +robotControl.upload.use_1200bps_touch=true +robotControl.upload.wait_for_upload_port=true + +robotControl.bootloader.tool=avrdude +robotControl.bootloader.low_fuses=0xff +robotControl.bootloader.high_fuses=0xd8 +robotControl.bootloader.extended_fuses=0xcb +robotControl.bootloader.file=caterina-Arduino_Robot/Caterina-Robot-Control.hex +robotControl.bootloader.unlock_bits=0x3F +robotControl.bootloader.lock_bits=0x2F + +robotControl.build.mcu=atmega32u4 +robotControl.build.f_cpu=16000000L +robotControl.build.vid=0x2341 +robotControl.build.pid=0x8038 +robotControl.build.usb_product="Robot Control" +robotControl.build.board=AVR_ROBOT_CONTROL +robotControl.build.core=arduino +robotControl.build.variant=robot_control +robotControl.build.extra_flags={build.usb_flags} + +############################################################## + +robotMotor.name=Arduino Robot Motor +robotMotor.vid.0=0x2341 +robotMotor.pid.0=0x0039 +robotMotor.vid.1=0x2341 +robotMotor.pid.1=0x8039 +robotMotor.vid.2=0x2A03 +robotMotor.pid.2=0x0039 +robotMotor.vid.3=0x2A03 +robotMotor.pid.3=0x8039 + +robotMotor.upload.tool=avrdude +robotMotor.upload.protocol=avr109 +robotMotor.upload.maximum_size=28672 +robotMotor.upload.maximum_data_size=2560 +robotMotor.upload.speed=57600 +robotMotor.upload.disable_flushing=true +robotMotor.upload.use_1200bps_touch=true +robotMotor.upload.wait_for_upload_port=true + +robotMotor.bootloader.tool=avrdude +robotMotor.bootloader.low_fuses=0xff +robotMotor.bootloader.high_fuses=0xd8 +robotMotor.bootloader.extended_fuses=0xcb +robotMotor.bootloader.file=caterina-Arduino_Robot/Caterina-Robot-Motor.hex +robotMotor.bootloader.unlock_bits=0x3F +robotMotor.bootloader.lock_bits=0x2F + +robotMotor.build.mcu=atmega32u4 +robotMotor.build.f_cpu=16000000L +robotMotor.build.vid=0x2341 +robotMotor.build.pid=0x8039 +robotMotor.build.usb_product="Robot Motor" +robotMotor.build.board=AVR_ROBOT_MOTOR +robotMotor.build.core=arduino +robotMotor.build.variant=robot_motor +robotMotor.build.extra_flags={build.usb_flags} + +############################################################## + +gemma.vid.0=0x2341 +gemma.pid.0=0x0c9f + +gemma.name=Arduino Gemma + +gemma.bootloader.low_fuses=0xF1 +gemma.bootloader.high_fuses=0xD5 +gemma.bootloader.extended_fuses=0xFE +gemma.bootloader.tool=avrdude +gemma.bootloader.lock_bits= +gemma.bootloader.unlock_bits= +gemma.bootloader.file=gemma/gemma_v1.hex + +gemma.build.mcu=attiny85 +gemma.build.f_cpu=8000000L +gemma.build.core=arduino +gemma.build.variant=gemma +gemma.build.board=AVR_GEMMA + +gemma.upload.tool=avrdude +gemma.upload.maximum_size=5310 + +############################################################## + +# Adafruit Circuit Playground 32u4 w/Caterina Configuration +circuitplay32u4cat.name=Adafruit Circuit Playground +circuitplay32u4cat.bootloader.low_fuses=0xff +circuitplay32u4cat.bootloader.high_fuses=0xd8 +circuitplay32u4cat.bootloader.extended_fuses=0xcb +circuitplay32u4cat.bootloader.file=caterina/Caterina-Circuitplay32u4.hex +circuitplay32u4cat.bootloader.unlock_bits=0x3F +circuitplay32u4cat.bootloader.lock_bits=0x2F +circuitplay32u4cat.bootloader.tool=avrdude +circuitplay32u4cat.build.mcu=atmega32u4 +circuitplay32u4cat.build.f_cpu=8000000L +circuitplay32u4cat.build.vid=0x239A +circuitplay32u4cat.build.pid=0x8011 +circuitplay32u4cat.build.core=arduino +circuitplay32u4cat.build.variant=circuitplay32u4 +circuitplay32u4cat.build.board=AVR_CIRCUITPLAY +circuitplay32u4cat.build.usb_product="Circuit Playground" +circuitplay32u4cat.build.usb_manufacturer="Adafruit" +circuitplay32u4cat.build.extra_flags={build.usb_flags} +circuitplay32u4cat.upload.protocol=avr109 +circuitplay32u4cat.upload.maximum_size=28672 +circuitplay32u4cat.upload.speed=57600 +circuitplay32u4cat.upload.disable_flushing=true +circuitplay32u4cat.upload.use_1200bps_touch=true +circuitplay32u4cat.upload.wait_for_upload_port=true +circuitplay32u4cat.upload.tool=avrdude +circuitplay32u4cat.vid.0=0x239A +circuitplay32u4cat.pid.0=0x8011 + +############################################################## + +yunmini.name=Arduino Yún Mini +yunmini.upload.via_ssh=true + +yunmini.vid.0=0x2a03 +yunmini.pid.0=0x0050 +yunmini.vid.1=0x2a03 +yunmini.pid.1=0x8050 + +yunmini.upload.tool=avrdude +yunmini.upload.protocol=avr109 +yunmini.upload.maximum_size=28672 +yunmini.upload.maximum_data_size=2560 +yunmini.upload.speed=57600 +yunmini.upload.disable_flushing=true +yunmini.upload.use_1200bps_touch=true +yunmini.upload.wait_for_upload_port=true + +yunmini.bootloader.tool=avrdude +yunmini.bootloader.low_fuses=0xff +yunmini.bootloader.high_fuses=0xd8 +yunmini.bootloader.extended_fuses=0xfb +yunmini.bootloader.file=caterina/Caterina-YunMini.hex +yunmini.bootloader.unlock_bits=0x3F +yunmini.bootloader.lock_bits=0x2F + +yunmini.build.mcu=atmega32u4 +yunmini.build.f_cpu=16000000L +yunmini.build.vid=0x2a03 +yunmini.build.pid=0x8050 +yunmini.build.usb_product="Arduino Yún Mini" +yunmini.build.board=AVR_YUNMINI +yunmini.build.core=arduino +yunmini.build.variant=yun +yunmini.build.extra_flags={build.usb_flags} + +############################################################## + +chiwawa.name=Arduino Industrial 101 +chiwawa.upload.via_ssh=true + +chiwawa.vid.0=0x2a03 +chiwawa.pid.0=0x0056 +chiwawa.vid.1=0x2a03 +chiwawa.pid.1=0x8056 + +chiwawa.upload.tool=avrdude +chiwawa.upload.protocol=avr109 +chiwawa.upload.maximum_size=28672 +chiwawa.upload.maximum_data_size=2560 +chiwawa.upload.speed=57600 +chiwawa.upload.disable_flushing=true +chiwawa.upload.use_1200bps_touch=true +chiwawa.upload.wait_for_upload_port=true + +chiwawa.bootloader.tool=avrdude +chiwawa.bootloader.low_fuses=0xff +chiwawa.bootloader.high_fuses=0xd8 +chiwawa.bootloader.extended_fuses=0xfb +chiwawa.bootloader.file=caterina/Caterina-Industrial101.hex +chiwawa.bootloader.unlock_bits=0x3F +chiwawa.bootloader.lock_bits=0x2F + +chiwawa.build.mcu=atmega32u4 +chiwawa.build.f_cpu=16000000L +chiwawa.build.vid=0x2a03 +chiwawa.build.pid=0x8056 +chiwawa.build.usb_product="Arduino Industrial 101" +chiwawa.build.board=AVR_INDUSTRIAL101 +chiwawa.build.core=arduino +chiwawa.build.variant=yun +chiwawa.build.extra_flags={build.usb_flags} + +############################################################## + +one.name=Linino One +one.upload.via_ssh=true + +one.vid.0=0x2a03 +one.pid.0=0x0001 +one.vid.1=0x2a03 +one.pid.1=0x8001 + +one.upload.tool=avrdude +one.upload.protocol=avr109 +one.upload.maximum_size=28672 +one.upload.maximum_data_size=2560 +one.upload.speed=57600 +one.upload.disable_flushing=true +one.upload.use_1200bps_touch=true +one.upload.wait_for_upload_port=true + +one.bootloader.tool=avrdude +one.bootloader.low_fuses=0xff +one.bootloader.high_fuses=0xd8 +one.bootloader.extended_fuses=0xfb +one.bootloader.file=caterina/Caterina-LininoOne.hex +one.bootloader.unlock_bits=0x3F +one.bootloader.lock_bits=0x2F + +one.build.mcu=atmega32u4 +one.build.f_cpu=16000000L +one.build.vid=0x2a03 +one.build.pid=0x8001 +one.build.usb_product="Linino One" +one.build.board=AVR_LININO_ONE +one.build.core=arduino +one.build.variant=yun +one.build.extra_flags={build.usb_flags} + +############################################################## + +unowifi.name=Arduino Uno WiFi +unowifi.vid.0=0x2A03 +unowifi.pid.0=0x0057 + +unowifi.upload.tool=avrdude +unowifi.upload.protocol=arduino +unowifi.upload.maximum_size=32256 +unowifi.upload.maximum_data_size=2048 +unowifi.upload.speed=115200 +unowifi.upload.network.endpoint_upload=/pgm/upload +unowifi.upload.network.endpoint_sync=/pgm/sync +unowifi.upload.network.sync_return=204:SYNC +unowifi.upload.network.endpoint_reset=/log/reset +unowifi.upload.network.port=80 + +unowifi.bootloader.tool=avrdude +unowifi.bootloader.low_fuses=0xFF +unowifi.bootloader.high_fuses=0xDE +unowifi.bootloader.extended_fuses=0x05 +unowifi.bootloader.unlock_bits=0x3F +unowifi.bootloader.lock_bits=0x0F +unowifi.bootloader.file=optiboot/optiboot_atmega328.hex + +unowifi.build.mcu=atmega328p +unowifi.build.f_cpu=16000000L +unowifi.build.board=AVR_UNO_WIFI_DEV_ED +unowifi.build.core=arduino +unowifi.build.variant=standard +unowifi.build.esp_ch_uart_br=19200 +unowifi.build.extra_flags=-DESP_CH_UART -DESP_CH_UART_BR={build.esp_ch_uart_br} diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/platform.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/platform.txt new file mode 100644 index 00000000000..8f46fbcffc5 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/platform.txt @@ -0,0 +1,131 @@ + +# Arduino AVR Core and platform. +# ------------------------------ +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification + +name=Arduino AVR Boards +version=1.8.3 + +# AVR compile variables +# --------------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall +compiler.warning_flags.all=-Wall -Wextra + +# Default "compiler.path" is correct, change only if you want to override the initial value +compiler.path={runtime.tools.avr-gcc.path}/bin/ +compiler.c.cmd=avr-gcc +compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects +compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections +compiler.c.elf.cmd=avr-gcc +compiler.S.flags=-c -g -x assembler-with-cpp -flto -MMD +compiler.cpp.cmd=avr-g++ +compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto +compiler.ar.cmd=avr-gcc-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=avr-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=avr-objcopy +compiler.ldflags= +compiler.libraries.ldflags= +compiler.size.cmd=avr-size + +# This can be overridden in boards.txt +build.extra_flags= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.S.extra_flags= +compiler.cpp.extra_flags= +compiler.ar.extra_flags= +compiler.objcopy.eep.extra_flags= +compiler.elf2hex.extra_flags= + +# AVR compile patterns +# -------------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +# archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value +archive_file_path={build.path}/{archive_file} +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} {compiler.c.elf.extra_flags} {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} "{build.path}/{archive_file}" "-L{build.path}" -lm + +## Create output files (.eep and .hex) +recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.objcopy.eep.flags} {compiler.objcopy.eep.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep" +recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Save hex +recipe.output.tmp_file={build.project_name}.hex +recipe.output.save_file={build.project_name}.{build.variant}.hex + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* +recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + +## Preprocessor +preproc.includes.flags=-w -x c++ -M -MG -MP +recipe.preproc.includes="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {preproc.includes.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" + +preproc.macros.flags=-w -x c++ -E -CC +recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {preproc.macros.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{preprocessed_file_path}" + +# AVR Uploader/Programmers tools +# ------------------------------ + +tools.avrdude.path={runtime.tools.avrdude.path} +tools.avrdude.cmd.path={path}/bin/avrdude +tools.avrdude.config.path={path}/etc/avrdude.conf + +tools.avrdude.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA + +tools.avrdude.upload.params.verbose=-v +tools.avrdude.upload.params.quiet=-q -q +# tools.avrdude.upload.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value +tools.avrdude.upload.verify= +tools.avrdude.upload.params.noverify=-V +tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} {upload.verify} -p{build.mcu} -c{upload.protocol} "-P{serial.port}" -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.program.params.verbose=-v +tools.avrdude.program.params.quiet=-q -q +# tools.avrdude.program.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value +tools.avrdude.program.verify= +tools.avrdude.program.params.noverify=-V +tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} {program.verify} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.erase.params.verbose=-v +tools.avrdude.erase.params.quiet=-q -q +tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m + +tools.avrdude.bootloader.params.verbose=-v +tools.avrdude.bootloader.params.quiet=-q -q +tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m + +tools.avrdude_remote.upload.pattern=/usr/bin/run-avrdude /tmp/sketch.hex {upload.verbose} -p{build.mcu} + +tools.avrdude.upload.network_pattern="{network_cmd}" -address {serial.port} -port {upload.network.port} -sketch "{build.path}/{build.project_name}.hex" -upload {upload.network.endpoint_upload} -sync {upload.network.endpoint_sync} -reset {upload.network.endpoint_reset} -sync_exp {upload.network.sync_return} + +# USB Default Flags +# Default blank usb manufacturer will be filled in at compile time +# - from numeric vendor ID, set to Unknown otherwise +build.usb_manufacturer="Unknown" +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' diff --git a/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/programmers.txt b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/programmers.txt new file mode 100644 index 00000000000..69ddf692c96 --- /dev/null +++ b/arduino/cores/packagemanager/testdata/data_dir_1/packages/arduino/hardware/avr/1.8.3/programmers.txt @@ -0,0 +1,115 @@ +avrisp.name=AVR ISP +avrisp.communication=serial +avrisp.protocol=stk500v1 +avrisp.program.protocol=stk500v1 +avrisp.program.tool=avrdude +avrisp.program.extra_params=-P{serial.port} + +avrispmkii.name=AVRISP mkII +avrispmkii.communication=usb +avrispmkii.protocol=stk500v2 +avrispmkii.program.protocol=stk500v2 +avrispmkii.program.tool=avrdude +avrispmkii.program.extra_params=-Pusb + +usbtinyisp.name=USBtinyISP +usbtinyisp.protocol=usbtiny +usbtinyisp.program.tool=avrdude +usbtinyisp.program.extra_params= + +arduinoisp.name=ArduinoISP +arduinoisp.protocol=arduinoisp +arduinoisp.program.tool=avrdude +arduinoisp.program.extra_params= + +arduinoisporg.name=ArduinoISP.org +arduinoisporg.protocol=arduinoisporg +arduinoisporg.program.tool=avrdude +arduinoisporg.program.extra_params= + +usbasp.name=USBasp +usbasp.communication=usb +usbasp.protocol=usbasp +usbasp.program.protocol=usbasp +usbasp.program.tool=avrdude +usbasp.program.extra_params=-Pusb + +parallel.name=Parallel Programmer +parallel.protocol=dapa +parallel.force=true +# parallel.delay=200 +parallel.program.tool=avrdude +parallel.program.extra_params=-F + +arduinoasisp.name=Arduino as ISP +arduinoasisp.communication=serial +arduinoasisp.protocol=stk500v1 +arduinoasisp.speed=19200 +arduinoasisp.program.protocol=stk500v1 +arduinoasisp.program.speed=19200 +arduinoasisp.program.tool=avrdude +arduinoasisp.program.extra_params=-P{serial.port} -b{program.speed} + +arduinoasispatmega32u4.name=Arduino as ISP (ATmega32U4) +arduinoasispatmega32u4.communication=serial +arduinoasispatmega32u4.protocol=arduino +arduinoasispatmega32u4.speed=19200 +arduinoasispatmega32u4.program.protocol=arduino +arduinoasispatmega32u4.program.speed=19200 +arduinoasispatmega32u4.program.tool=avrdude +arduinoasispatmega32u4.program.extra_params=-P{serial.port} -b{program.speed} + +usbGemma.name=Arduino Gemma +usbGemma.protocol=arduinogemma +usbGemma.program.tool=avrdude +usbGemma.program.extra_params= +usbGemma.config.path={runtime.platform.path}/bootloaders/gemma/avrdude.conf + +## Notes about Dangerous Prototypes Bus Pirate as ISP +## Bus Pirate V3 need Firmware v5.10 or later +## Bus Pirate V4 need Firmware v6.3-r2151 or later +## Could happen that BP does not have enough current to power an Arduino board +## through the ICSP connector. In this case disconnect the +Vcc from ICSP connector +## and power Arduino board in the normal way. +buspirate.name=BusPirate as ISP +buspirate.communication=serial +buspirate.protocol=buspirate +buspirate.program.protocol=buspirate +buspirate.program.tool=avrdude +buspirate.program.extra_params=-P{serial.port} + +# STK500 firmware version v1 and v2 use different serial protocols. +# Using the 'stk500' protocol tells avrdude to try and autodetect the +# firmware version. If this leads to problems, we might need to add +# stk500v1 and stk500v2 entries to allow explicitely selecting the +# firmware version. +stk500.name=Atmel STK500 development board +stk500.communication=serial +stk500.protocol=stk500 +stk500.program.protocol=stk500 +stk500.program.tool=avrdude +stk500.program.extra_params=-P{serial.port} + +jtag3isp.name=Atmel JTAGICE3 (ISP mode) +jtag3isp.communication=usb +jtag3isp.protocol=jtag3isp +jtag3isp.program.protocol=jtag3isp +jtag3isp.program.tool=avrdude +jtag3isp.program.extra_params= + +jtag3.name=Atmel JTAGICE3 (JTAG mode) +jtag3.communication=usb +jtag3.protocol=jtag3 +jtag3.program.protocol=jtag3 +jtag3.program.tool=avrdude +# Set a bitclock of 0.1us (the fastest supported value). This should +# work regardless of the crystal used, since JTAG doesn't use the MCU +# clock but dictates its own clock. +jtag3.program.extra_params=-B0.1 + +atmel_ice.name=Atmel-ICE (AVR) +atmel_ice.communication=usb +atmel_ice.protocol=atmelice_isp +atmel_ice.program.protocol=atmelice_isp +atmel_ice.program.tool=avrdude +atmel_ice.program.extra_params=-Pusb diff --git a/i18n/data/en.po b/i18n/data/en.po index c2c77175b40..9c4c9142213 100644 --- a/i18n/data/en.po +++ b/i18n/data/en.po @@ -49,7 +49,7 @@ msgstr "%s installed" msgid "%s is already installed." msgstr "%s is already installed." -#: arduino/cores/packagemanager/loader.go:71 +#: arduino/cores/packagemanager/loader.go:72 msgid "%s is not a directory" msgstr "%s is not a directory" @@ -2474,7 +2474,7 @@ msgstr "can't find latest release of %s" msgid "can't find main Sketch file in %s" msgstr "can't find main Sketch file in %s" -#: arduino/cores/packagemanager/loader.go:791 +#: arduino/cores/packagemanager/loader.go:799 msgid "can't find pattern for discovery with id %s" msgstr "can't find pattern for discovery with id %s" @@ -2557,7 +2557,7 @@ msgstr "computing hash: %s" msgid "could not find a valid build artifact" msgstr "could not find a valid build artifact" -#: arduino/cores/packagemanager/loader.go:728 +#: arduino/cores/packagemanager/loader.go:736 msgid "creating discovery: %s" msgstr "creating discovery: %s" @@ -2598,11 +2598,11 @@ msgstr "directory doesn't exist: %s" msgid "discovery %[1]s process not started: %[2]w" msgstr "discovery %[1]s process not started: %[2]w" -#: arduino/cores/packagemanager/loader.go:719 +#: arduino/cores/packagemanager/loader.go:727 msgid "discovery not found: %s" msgstr "discovery not found: %s" -#: arduino/cores/packagemanager/loader.go:723 +#: arduino/cores/packagemanager/loader.go:731 msgid "discovery not installed: %s" msgstr "discovery not installed: %s" @@ -2676,7 +2676,7 @@ msgstr "fetched archive size differs from size specified in index" msgid "files in archive must be placed in a subdirectory" msgstr "files in archive must be placed in a subdirectory" -#: arduino/cores/packagemanager/loader.go:66 +#: arduino/cores/packagemanager/loader.go:67 msgid "find abs path: %s" msgstr "find abs path: %s" @@ -2688,7 +2688,7 @@ msgstr "first message must contain monitor configuration, not data" msgid "flags" msgstr "flags" -#: arduino/cores/packagemanager/loader.go:108 +#: arduino/cores/packagemanager/loader.go:109 msgid "following possible symlink %[1]s: %[2]s" msgstr "following possible symlink %[1]s: %[2]s" @@ -2739,7 +2739,7 @@ msgstr "getting build properties for board %[1]s: %[2]s" msgid "getting discovery dependencies for platform %[1]s: %[2]s" msgstr "getting discovery dependencies for platform %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:672 +#: arduino/cores/packagemanager/loader.go:680 msgid "getting parent dir of %[1]s: %[2]s" msgstr "getting parent dir of %[1]s: %[2]s" @@ -2856,7 +2856,7 @@ msgstr "invalid path writing inventory file: %[1]s error: %[2]w" msgid "invalid platform archive size: %s" msgstr "invalid platform archive size: %s" -#: arduino/cores/packagemanager/loader.go:369 +#: arduino/cores/packagemanager/loader.go:370 msgid "invalid pluggable monitor reference: %s" msgstr "invalid pluggable monitor reference: %s" @@ -2876,7 +2876,7 @@ msgstr "invalid recipe '%[1]s': %[2]s" msgid "invalid value '%[1]s' for option '%[2]s'" msgstr "invalid value '%[1]s' for option '%[2]s'" -#: arduino/cores/packagemanager/loader.go:280 +#: arduino/cores/packagemanager/loader.go:281 msgid "invalid version dir %[1]s: %[2]s" msgstr "invalid version dir %[1]s: %[2]s" @@ -2913,17 +2913,17 @@ msgstr "listing ports from discovery %[1]s: %[2]w" msgid "listing serial ports" msgstr "listing serial ports" -#: arduino/cores/packagemanager/loader.go:307 -#: arduino/cores/packagemanager/loader.go:316 -#: arduino/cores/packagemanager/loader.go:321 +#: arduino/cores/packagemanager/loader.go:308 +#: arduino/cores/packagemanager/loader.go:317 +#: arduino/cores/packagemanager/loader.go:322 msgid "loading %[1]s: %[2]s" msgstr "loading %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:357 +#: arduino/cores/packagemanager/loader.go:358 msgid "loading boards: %s" msgstr "loading boards: %s" -#: arduino/cores/packagemanager/loader.go:627 +#: arduino/cores/packagemanager/loader.go:635 msgid "loading bundled tools from %[1]s: %[2]s" msgstr "loading bundled tools from %[1]s: %[2]s" @@ -2941,20 +2941,20 @@ msgstr "loading library from %[1]s: %[2]s" msgid "loading library.properties: %s" msgstr "loading library.properties: %s" -#: arduino/cores/packagemanager/loader.go:256 -#: arduino/cores/packagemanager/loader.go:284 +#: arduino/cores/packagemanager/loader.go:257 +#: arduino/cores/packagemanager/loader.go:285 msgid "loading platform release %[1]s: %[2]s" msgstr "loading platform release %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:207 +#: arduino/cores/packagemanager/loader.go:208 msgid "loading platform.txt: %v" msgstr "loading platform.txt: %v" -#: arduino/cores/packagemanager/loader.go:594 +#: arduino/cores/packagemanager/loader.go:602 msgid "loading tool release in %[1]s: %[2]s" msgstr "loading tool release in %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:200 +#: arduino/cores/packagemanager/loader.go:201 msgid "looking for boards.txt in %[1]s: %[2]s" msgstr "looking for boards.txt in %[1]s: %[2]s" @@ -3032,7 +3032,7 @@ msgstr "no versions available for the current OS" msgid "opening archive file: %s" msgstr "opening archive file: %s" -#: arduino/cores/packagemanager/loader.go:273 +#: arduino/cores/packagemanager/loader.go:274 msgid "opening boards.txt: %s" msgstr "opening boards.txt: %s" @@ -3063,7 +3063,7 @@ msgstr "package '%s' not found" msgid "package not found" msgstr "package not found" -#: arduino/cores/packagemanager/loader.go:227 +#: arduino/cores/packagemanager/loader.go:228 msgid "parsing IDE bundled index: %s" msgstr "parsing IDE bundled index: %s" @@ -3076,7 +3076,7 @@ msgstr "parsing fqbn: %s" msgid "parsing library_index.json: %s" msgstr "parsing library_index.json: %s" -#: arduino/cores/packagemanager/loader.go:189 +#: arduino/cores/packagemanager/loader.go:190 msgid "path is not a platform directory: %s" msgstr "path is not a platform directory: %s" @@ -3094,7 +3094,7 @@ msgstr "platform %s is not installed" #: arduino/cores/packagemanager/install_uninstall.go:65 #: arduino/cores/packagemanager/install_uninstall.go:108 -#: arduino/cores/packagemanager/loader.go:456 +#: arduino/cores/packagemanager/loader.go:464 #: commands/compile/compile.go:127 msgid "platform not installed" msgstr "platform not installed" @@ -3127,21 +3127,21 @@ msgstr "protocol version not supported: requested 1, got %d" msgid "quitting discovery %[1]s: %[2]w" msgstr "quitting discovery %[1]s: %[2]w" -#: arduino/cores/packagemanager/loader.go:78 +#: arduino/cores/packagemanager/loader.go:79 msgid "reading %[1]s directory: %[2]s" msgstr "reading %[1]s directory: %[2]s" -#: arduino/cores/packagemanager/loader.go:677 +#: arduino/cores/packagemanager/loader.go:685 msgid "reading %[1]s: %[2]s" msgstr "reading %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:267 +#: arduino/cores/packagemanager/loader.go:268 #: arduino/libraries/librariesmanager/librariesmanager.go:196 msgid "reading dir %[1]s: %[2]s" msgstr "reading dir %[1]s: %[2]s" -#: arduino/cores/packagemanager/loader.go:162 -#: arduino/cores/packagemanager/loader.go:585 +#: arduino/cores/packagemanager/loader.go:163 +#: arduino/cores/packagemanager/loader.go:593 msgid "reading directory %[1]s: %[2]s" msgstr "reading directory %[1]s: %[2]s" @@ -3232,7 +3232,7 @@ msgstr "retrieving Arduino public keys: %s" msgid "scanning examples: %s" msgstr "scanning examples: %s" -#: arduino/cores/packagemanager/loader.go:663 +#: arduino/cores/packagemanager/loader.go:671 msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s" msgstr "searching for builtin_tools_versions.txt in %[1]s: %[2]s" @@ -3253,7 +3253,7 @@ msgstr "sketch path is not valid" msgid "sketchPath" msgstr "sketchPath" -#: arduino/cores/packagemanager/loader.go:519 +#: arduino/cores/packagemanager/loader.go:527 msgid "skipping loading of boards %s: malformed custom board options" msgstr "skipping loading of boards %s: malformed custom board options"