Skip to content

Commit e6e0d24

Browse files
committed
Fixed network upload for avr packages
1 parent 6c3c864 commit e6e0d24

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

arduino/cores/packagemanager/loader.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"fmt"
2020
"os"
2121
"path/filepath"
22+
"regexp"
2223
"strconv"
2324
"strings"
2425

@@ -432,6 +433,12 @@ func convertLegacyNetworkPatternToPluggableDiscovery(props *properties.Map, newT
432433
props.Set("upload.field.password.secret", "true")
433434
pattern = strings.ReplaceAll(pattern, "{network.password}", "{upload.field.password}")
434435
}
436+
// Search for "{upload.network.PROPERTY}"" and convert it to "{upload.port.property.PROPERTY}"
437+
netPropRegexp := regexp.MustCompile(`\{upload\.network\.([^}]+)\}`)
438+
for netPropRegexp.MatchString(pattern) {
439+
netProp := netPropRegexp.FindStringSubmatch(pattern)[1]
440+
pattern = strings.ReplaceAll(pattern, "{upload.network."+netProp+"}", "{upload.port.properties."+netProp+"}")
441+
}
435442
props.Set("upload.pattern", pattern)
436443

437444
prefix := "tools." + newToolName + "."

arduino/cores/packagemanager/package_manager_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,4 +491,17 @@ func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) {
491491
require.Equal(t, "true", platformProps.Get("tools.esptool__pluggable_network.upload.field.password.secret"))
492492
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"))
493493
}
494+
{
495+
fqbn, err := cores.ParseFQBN("arduino:avr:uno")
496+
require.NoError(t, err)
497+
require.NotNil(t, fqbn)
498+
_, platformRelease, board, _, _, err := pm.ResolveFQBN(fqbn)
499+
require.NoError(t, err)
500+
require.Equal(t, "avrdude__pluggable_network", board.Properties.Get("upload.tool.network"))
501+
require.Equal(t, "uno", board.Properties.Get("upload_port.4.board"))
502+
platformProps := platformRelease.Properties
503+
require.Equal(t, "builtin:serial-discovery", platformProps.Get("pluggable_discovery.required.0"))
504+
require.Equal(t, "builtin:mdns-discovery", platformProps.Get("pluggable_discovery.required.1"))
505+
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"))
506+
}
494507
}

0 commit comments

Comments
 (0)