diff --git a/.github/workflows/check-easyjson.yml b/.github/workflows/check-easyjson.yml index 6468c8b0f5a..89051e5b6da 100644 --- a/.github/workflows/check-easyjson.yml +++ b/.github/workflows/check-easyjson.yml @@ -2,7 +2,7 @@ name: Check easyjson generated files env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: diff --git a/.github/workflows/check-go-dependencies-task.yml b/.github/workflows/check-go-dependencies-task.yml index 35aa3e9b6dd..f2013d855e2 100644 --- a/.github/workflows/check-go-dependencies-task.yml +++ b/.github/workflows/check-go-dependencies-task.yml @@ -3,7 +3,7 @@ name: Check Go Dependencies env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows on: diff --git a/.github/workflows/check-go-task.yml b/.github/workflows/check-go-task.yml index 75beba97f85..2521a6af2d2 100644 --- a/.github/workflows/check-go-task.yml +++ b/.github/workflows/check-go-task.yml @@ -3,7 +3,7 @@ name: Check Go env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: diff --git a/.github/workflows/check-i18n-task.yml b/.github/workflows/check-i18n-task.yml index 1fc67b05620..659f6e4a92c 100644 --- a/.github/workflows/check-i18n-task.yml +++ b/.github/workflows/check-i18n-task.yml @@ -2,7 +2,7 @@ name: Check Internationalization env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: diff --git a/.github/workflows/check-markdown-task.yml b/.github/workflows/check-markdown-task.yml index 0839c02fd44..12dd65d6c2c 100644 --- a/.github/workflows/check-markdown-task.yml +++ b/.github/workflows/check-markdown-task.yml @@ -5,7 +5,7 @@ env: # See: https://github.com/actions/setup-node/#readme NODE_VERSION: 16.x # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows on: diff --git a/.github/workflows/check-mkdocs-task.yml b/.github/workflows/check-mkdocs-task.yml index 0b01cf0c37a..6914212a928 100644 --- a/.github/workflows/check-mkdocs-task.yml +++ b/.github/workflows/check-mkdocs-task.yml @@ -3,7 +3,7 @@ name: Check Website env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://github.com/actions/setup-python/tree/main#available-versions-of-python PYTHON_VERSION: "3.9" diff --git a/.github/workflows/check-protobuf-task.yml b/.github/workflows/check-protobuf-task.yml index 19196c0113e..6dabcc443ff 100644 --- a/.github/workflows/check-protobuf-task.yml +++ b/.github/workflows/check-protobuf-task.yml @@ -2,7 +2,7 @@ name: Check Protocol Buffers env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: diff --git a/.github/workflows/deploy-cobra-mkdocs-versioned-poetry.yml b/.github/workflows/deploy-cobra-mkdocs-versioned-poetry.yml index 08a523e624f..1f8902be25b 100644 --- a/.github/workflows/deploy-cobra-mkdocs-versioned-poetry.yml +++ b/.github/workflows/deploy-cobra-mkdocs-versioned-poetry.yml @@ -3,7 +3,7 @@ name: Deploy Website env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" # See: https://github.com/actions/setup-python/tree/main#available-versions-of-python PYTHON_VERSION: "3.9" diff --git a/.github/workflows/i18n-weekly-pull.yaml b/.github/workflows/i18n-weekly-pull.yaml index 1d6c0f7deca..1aac744870a 100644 --- a/.github/workflows/i18n-weekly-pull.yaml +++ b/.github/workflows/i18n-weekly-pull.yaml @@ -2,7 +2,7 @@ name: i18n-weekly-pull env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" COVERAGE_ARTIFACT: coverage-data on: diff --git a/.github/workflows/test-go-task.yml b/.github/workflows/test-go-task.yml index f0bac8cb077..4b4c2865a4c 100644 --- a/.github/workflows/test-go-task.yml +++ b/.github/workflows/test-go-task.yml @@ -3,7 +3,7 @@ name: Test Go env: # See: https://github.com/actions/setup-go/tree/main#supported-version-syntax - GO_VERSION: "1.20" + GO_VERSION: "1.21" COVERAGE_ARTIFACT: coverage-data # See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows @@ -154,11 +154,6 @@ jobs: - name: Run tests run: task go:test - - name: Run unit tests on the legacy package - # Run legacy tests on one platform only - if: runner.os == 'Linux' - run: task test-legacy - - name: Upload coverage data to workflow artifact if: runner.os == 'Linux' uses: actions/upload-artifact@v3 @@ -167,7 +162,6 @@ jobs: name: ${{ env.COVERAGE_ARTIFACT }} path: | ./coverage_unit.txt - ./coverage_legacy.txt coverage-upload: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index e3e93deba51..15f5060d5da 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ venv /dist /.pytest-tmp-dir /node_modules/ +__debug_bin* # gRPC client example folder /client_example/client_example diff --git a/.licenses/go/github.com/gofrs/uuid.dep.yml b/.licenses/go/github.com/gofrs/uuid/v5.dep.yml similarity index 89% rename from .licenses/go/github.com/gofrs/uuid.dep.yml rename to .licenses/go/github.com/gofrs/uuid/v5.dep.yml index 2e15a71f717..06b74d71a62 100644 --- a/.licenses/go/github.com/gofrs/uuid.dep.yml +++ b/.licenses/go/github.com/gofrs/uuid/v5.dep.yml @@ -1,10 +1,10 @@ --- -name: github.com/gofrs/uuid -version: v3.2.0+incompatible +name: github.com/gofrs/uuid/v5 +version: v5.0.0 type: go summary: Package uuid provides implementations of the Universally Unique Identifier - (UUID), as specified in RFC-4122 and DCE 1.1. -homepage: https://pkg.go.dev/github.com/gofrs/uuid + (UUID), as specified in RFC-4122 and the Peabody RFC Draft (revision 03). +homepage: https://pkg.go.dev/github.com/gofrs/uuid/v5 license: mit licenses: - sources: LICENSE diff --git a/.licenses/go/golang.org/x/exp/constraints.dep.yml b/.licenses/go/golang.org/x/exp/constraints.dep.yml deleted file mode 100644 index 14cd0ef4868..00000000000 --- a/.licenses/go/golang.org/x/exp/constraints.dep.yml +++ /dev/null @@ -1,63 +0,0 @@ ---- -name: golang.org/x/exp/constraints -version: v0.0.0-20230321023759-10a507213a29 -type: go -summary: Package constraints defines a set of useful constraints to be used with type - parameters. -homepage: https://pkg.go.dev/golang.org/x/exp/constraints -license: bsd-3-clause -licenses: -- sources: exp@v0.0.0-20230321023759-10a507213a29/LICENSE - text: | - Copyright (c) 2009 The Go Authors. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: exp@v0.0.0-20230321023759-10a507213a29/PATENTS - text: | - Additional IP Rights Grant (Patents) - - "This implementation" means the copyrightable works distributed by - Google as part of the Go project. - - Google hereby grants to You a perpetual, worldwide, non-exclusive, - no-charge, royalty-free, irrevocable (except as stated in this section) - patent license to make, have made, use, offer to sell, sell, import, - transfer and otherwise run, modify and propagate the contents of this - implementation of Go, where such license applies only to those patent - claims, both currently owned or controlled by Google and acquired in - the future, licensable by Google that are necessarily infringed by this - implementation of Go. This grant does not include claims that would be - infringed only as a consequence of further modification of this - implementation. If you or your agent or exclusive licensee institute or - order or agree to the institution of patent litigation against any - entity (including a cross-claim or counterclaim in a lawsuit) alleging - that this implementation of Go or any code incorporated within this - implementation of Go constitutes direct or contributory patent - infringement, or inducement of patent infringement, then any patent - rights granted to you under this License for this implementation of Go - shall terminate as of the date such litigation is filed. -notices: [] diff --git a/.licenses/go/golang.org/x/exp/slices.dep.yml b/.licenses/go/golang.org/x/exp/slices.dep.yml deleted file mode 100644 index 8fca8863335..00000000000 --- a/.licenses/go/golang.org/x/exp/slices.dep.yml +++ /dev/null @@ -1,62 +0,0 @@ ---- -name: golang.org/x/exp/slices -version: v0.0.0-20230321023759-10a507213a29 -type: go -summary: Package slices defines various functions useful with slices of any type. -homepage: https://pkg.go.dev/golang.org/x/exp/slices -license: bsd-3-clause -licenses: -- sources: exp@v0.0.0-20230321023759-10a507213a29/LICENSE - text: | - Copyright (c) 2009 The Go Authors. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- sources: exp@v0.0.0-20230321023759-10a507213a29/PATENTS - text: | - Additional IP Rights Grant (Patents) - - "This implementation" means the copyrightable works distributed by - Google as part of the Go project. - - Google hereby grants to You a perpetual, worldwide, non-exclusive, - no-charge, royalty-free, irrevocable (except as stated in this section) - patent license to make, have made, use, offer to sell, sell, import, - transfer and otherwise run, modify and propagate the contents of this - implementation of Go, where such license applies only to those patent - claims, both currently owned or controlled by Google and acquired in - the future, licensable by Google that are necessarily infringed by this - implementation of Go. This grant does not include claims that would be - infringed only as a consequence of further modification of this - implementation. If you or your agent or exclusive licensee institute or - order or agree to the institution of patent litigation against any - entity (including a cross-claim or counterclaim in a lawsuit) alleging - that this implementation of Go or any code incorporated within this - implementation of Go constitutes direct or contributory patent - infringement, or inducement of patent infringement, then any patent - rights granted to you under this License for this implementation of Go - shall terminate as of the date such litigation is filed. -notices: [] diff --git a/DistTasks.yml b/DistTasks.yml index af5536e9e8a..2231c439dc7 100644 --- a/DistTasks.yml +++ b/DistTasks.yml @@ -19,7 +19,7 @@ version: "3" vars: CONTAINER: "docker.elastic.co/beats-dev/golang-crossbuild" - GO_VERSION: "1.20.1" + GO_VERSION: "1.21.1" tasks: Windows_32bit: diff --git a/Taskfile.yml b/Taskfile.yml index 1373e1adde8..b7a4522d033 100755 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -284,21 +284,11 @@ tasks: - task: go:build test: - desc: Run the full testsuite, `legacy` will be skipped + desc: Run the full testsuite cmds: - task: go:test - task: go:integration-test - test-legacy: - desc: Run tests for the `legacy` package - cmds: - - | - go test \ - {{ default "-v -failfast" .GOFLAGS }} \ - -coverprofile=coverage_legacy.txt \ - ./legacy/... \ - {{.TEST_LDFLAGS}} - test-unit-race: desc: Run unit tests only with race condition detection cmds: @@ -311,18 +301,12 @@ tasks: {{.TEST_LDFLAGS}} check: - desc: Check fmt and lint, `legacy` will be skipped + desc: Check fmt and lint cmds: - task: go:vet - task: go:lint - task: protoc:check - check-legacy: - desc: Check fmt and lint for the `legacy` package - cmds: - - test -z $(go fmt ./legacy/...) - - go vet ./legacy/... - rpc-client: desc: Run the rpc client test routine (server must be already started) cmds: @@ -376,10 +360,10 @@ tasks: vars: PROJECT_NAME: "arduino-cli" DIST_DIR: "dist" - # all modules of this project except for "legacy/..." module and integration test + # all modules of this project except for integration test DEFAULT_GO_PACKAGES: sh: | - echo $(cd {{default "./" .GO_MODULE_PATH}} && go list ./... | grep -v internal/integrationtest | grep -v legacy | tr '\n' ' ' || echo '"ERROR: Unable to discover Go packages"') + echo $(cd {{default "./" .GO_MODULE_PATH}} && go list ./... | grep -v internal/integrationtest | tr '\n' ' ' || echo '"ERROR: Unable to discover Go packages"') DEFAULT_INTEGRATIONTEST_GO_PACKAGES: sh: | echo $(cd {{default "./" .GO_MODULE_PATH}} && go list ./... | grep internal/integrationtest | tr '\n' ' ' || echo '"ERROR: Unable to discover Go packages"') diff --git a/arduino/builder/build_options_manager.go b/arduino/builder/build_options_manager.go new file mode 100644 index 00000000000..0d097bdb1e7 --- /dev/null +++ b/arduino/builder/build_options_manager.go @@ -0,0 +1,184 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package builder + +import ( + "encoding/json" + "path/filepath" + "strings" + + "github.com/arduino/arduino-cli/arduino/builder/logger" + "github.com/arduino/arduino-cli/arduino/builder/utils" + "github.com/arduino/arduino-cli/arduino/cores" + "github.com/arduino/arduino-cli/arduino/sketch" + "github.com/arduino/go-paths-helper" + properties "github.com/arduino/go-properties-orderedmap" + "github.com/pkg/errors" +) + +// BuildOptionsManager fixdoc +type BuildOptionsManager struct { + currentOptions *properties.Map + currentBuildOptionsJSON []byte + + hardwareDirs paths.PathList + builtInToolsDirs paths.PathList + otherLibrariesDirs paths.PathList + builtInLibrariesDirs *paths.Path + buildPath *paths.Path + runtimePlatformPath *paths.Path + buildCorePath *paths.Path + sketch *sketch.Sketch + customBuildProperties []string + compilerOptimizationFlags string + clean bool + builderLogger *logger.BuilderLogger +} + +// NewBuildOptionsManager fixdoc +func NewBuildOptionsManager( + hardwareDirs, builtInToolsDirs, otherLibrariesDirs paths.PathList, + builtInLibrariesDirs, buildPath *paths.Path, + sketch *sketch.Sketch, + customBuildProperties []string, + fqbn *cores.FQBN, + clean bool, + compilerOptimizationFlags string, + runtimePlatformPath, buildCorePath *paths.Path, + buildLogger *logger.BuilderLogger, +) *BuildOptionsManager { + opts := properties.NewMap() + + opts.Set("hardwareFolders", strings.Join(hardwareDirs.AsStrings(), ",")) + opts.Set("builtInToolsFolders", strings.Join(builtInToolsDirs.AsStrings(), ",")) + opts.Set("otherLibrariesFolders", strings.Join(otherLibrariesDirs.AsStrings(), ",")) + opts.SetPath("sketchLocation", sketch.FullPath) + opts.Set("fqbn", fqbn.String()) + opts.Set("customBuildProperties", strings.Join(customBuildProperties, ",")) + opts.Set("compiler.optimization_flags", compilerOptimizationFlags) + + if builtInLibrariesDirs != nil { + opts.Set("builtInLibrariesFolders", builtInLibrariesDirs.String()) + } + + absPath := sketch.FullPath.Parent() + var additionalFilesRelative []string + for _, f := range sketch.AdditionalFiles { + relPath, err := f.RelTo(absPath) + if err != nil { + continue // ignore + } + additionalFilesRelative = append(additionalFilesRelative, relPath.String()) + } + opts.Set("additionalFiles", strings.Join(additionalFilesRelative, ",")) + + return &BuildOptionsManager{ + currentOptions: opts, + hardwareDirs: hardwareDirs, + builtInToolsDirs: builtInToolsDirs, + otherLibrariesDirs: otherLibrariesDirs, + builtInLibrariesDirs: builtInLibrariesDirs, + buildPath: buildPath, + runtimePlatformPath: runtimePlatformPath, + buildCorePath: buildCorePath, + sketch: sketch, + customBuildProperties: customBuildProperties, + compilerOptimizationFlags: compilerOptimizationFlags, + clean: clean, + builderLogger: buildLogger, + } +} + +// WipeBuildPath fixdoc +func (m *BuildOptionsManager) WipeBuildPath() error { + buildOptionsJSON, err := json.MarshalIndent(m.currentOptions, "", " ") + if err != nil { + return errors.WithStack(err) + } + m.currentBuildOptionsJSON = buildOptionsJSON + + if err := m.wipeBuildPath(); err != nil { + return errors.WithStack(err) + } + return m.buildPath.Join("build.options.json").WriteFile(buildOptionsJSON) +} + +func (m *BuildOptionsManager) wipeBuildPath() error { + wipe := func() error { + // FIXME: this should go outside legacy and behind a `logrus` call so users can + // control when this should be printed. + // logger.Println(constants.LOG_LEVEL_INFO, constants.MSG_BUILD_OPTIONS_CHANGED + constants.MSG_REBUILD_ALL) + if err := m.buildPath.RemoveAll(); err != nil { + return errors.WithMessage(err, tr("cleaning build path")) + } + if err := m.buildPath.MkdirAll(); err != nil { + return errors.WithMessage(err, tr("cleaning build path")) + } + return nil + } + + if m.clean { + return wipe() + } + + // Load previous build options map + var buildOptionsJSONPrevious []byte + var _err error + if buildOptionsFile := m.buildPath.Join("build.options.json"); buildOptionsFile.Exist() { + buildOptionsJSONPrevious, _err = buildOptionsFile.ReadFile() + if _err != nil { + return errors.WithStack(_err) + } + } + + if len(buildOptionsJSONPrevious) == 0 { + return nil + } + + var prevOpts *properties.Map + if err := json.Unmarshal(buildOptionsJSONPrevious, &prevOpts); err != nil || prevOpts == nil { + m.builderLogger.Info(tr("%[1]s invalid, rebuilding all", "build.options.json")) + return wipe() + } + + // Since we might apply a side effect we clone it + currentOptions := m.currentOptions.Clone() + // If SketchLocation path is different but filename is the same, consider it equal + if filepath.Base(currentOptions.Get("sketchLocation")) == filepath.Base(prevOpts.Get("sketchLocation")) { + currentOptions.Remove("sketchLocation") + prevOpts.Remove("sketchLocation") + } + + // If options are not changed check if core has + if currentOptions.Equals(prevOpts) { + // check if any of the files contained in the core folders has changed + // since the json was generated - like platform.txt or similar + // if so, trigger a "safety" wipe + targetCoreFolder := m.runtimePlatformPath + coreFolder := m.buildCorePath + realCoreFolder := coreFolder.Parent().Parent() + jsonPath := m.buildPath.Join("build.options.json") + coreUnchanged, _ := utils.DirContentIsOlderThan(realCoreFolder, jsonPath, ".txt") + if coreUnchanged && targetCoreFolder != nil && !realCoreFolder.EqualsTo(targetCoreFolder) { + coreUnchanged, _ = utils.DirContentIsOlderThan(targetCoreFolder, jsonPath, ".txt") + } + if coreUnchanged { + return nil + } + } + + return wipe() +} diff --git a/arduino/builder/builder.go b/arduino/builder/builder.go index 32bd35d7e68..64e06f82eb3 100644 --- a/arduino/builder/builder.go +++ b/arduino/builder/builder.go @@ -16,21 +16,84 @@ package builder import ( + "errors" + "fmt" + + "github.com/arduino/arduino-cli/arduino/builder/compilation" + "github.com/arduino/arduino-cli/arduino/builder/detector" + "github.com/arduino/arduino-cli/arduino/builder/logger" + "github.com/arduino/arduino-cli/arduino/builder/progress" + "github.com/arduino/arduino-cli/arduino/cores" + "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/arduino/sketch" "github.com/arduino/go-paths-helper" "github.com/arduino/go-properties-orderedmap" ) +// ErrSketchCannotBeLocatedInBuildPath fixdoc +var ErrSketchCannotBeLocatedInBuildPath = errors.New("sketch cannot be located in build path") + // Builder is a Sketch builder. type Builder struct { sketch *sketch.Sketch buildProperties *properties.Map + buildPath *paths.Path + sketchBuildPath *paths.Path + coreBuildPath *paths.Path + librariesBuildPath *paths.Path + // Parallel processes jobs int + // Custom build properties defined by user (line by line as "key=value" pairs) + customBuildProperties []string + // core related coreBuildCachePath *paths.Path + + logger *logger.BuilderLogger + clean bool + + // Source code overrides (filename -> content map). + // The provided source data is used instead of reading it from disk. + // The keys of the map are paths relative to sketch folder. + sourceOverrides map[string]string + + // Set to true to skip build and produce only Compilation Database + onlyUpdateCompilationDatabase bool + // Compilation Database to build/update + compilationDatabase *compilation.Database + + // Progress of all various steps + Progress *progress.Struct + + // Sizer results + executableSectionsSize ExecutablesFileSections + + // C++ Parsing + lineOffset int + + targetPlatform *cores.PlatformRelease + actualPlatform *cores.PlatformRelease + + buildArtifacts *BuildArtifacts + + *detector.SketchLibrariesDetector + *BuildOptionsManager +} + +// BuildArtifacts contains the result of various build +type BuildArtifacts struct { + // populated by BuildCore + coreArchiveFilePath *paths.Path + coreObjectsFiles paths.PathList + + // populated by BuildLibraries + librariesObjectFiles paths.PathList + + // populated by BuildSketch + sketchObjectFiles paths.PathList } // NewBuilder creates a sketch Builder. @@ -41,7 +104,20 @@ func NewBuilder( optimizeForDebug bool, coreBuildCachePath *paths.Path, jobs int, -) *Builder { + requestBuildProperties []string, + hardwareDirs, builtInToolsDirs, otherLibrariesDirs paths.PathList, + builtInLibrariesDirs *paths.Path, + fqbn *cores.FQBN, + clean bool, + sourceOverrides map[string]string, + onlyUpdateCompilationDatabase bool, + targetPlatform, actualPlatform *cores.PlatformRelease, + useCachedLibrariesResolution bool, + librariesManager *librariesmanager.LibrariesManager, + libraryDirs paths.PathList, + logger *logger.BuilderLogger, + progressStats *progress.Struct, +) (*Builder, error) { buildProperties := properties.NewMap() if boardBuildProperties != nil { buildProperties.Merge(boardBuildProperties) @@ -64,12 +140,86 @@ func NewBuilder( } } - return &Builder{ - sketch: sk, - buildProperties: buildProperties, - coreBuildCachePath: coreBuildCachePath, - jobs: jobs, + // Add user provided custom build properties + customBuildProperties, err := properties.LoadFromSlice(requestBuildProperties) + if err != nil { + return nil, fmt.Errorf("invalid build properties: %w", err) + } + buildProperties.Merge(customBuildProperties) + customBuildPropertiesArgs := append(requestBuildProperties, "build.warn_data_percentage=75") + + sketchBuildPath, err := buildPath.Join("sketch").Abs() + if err != nil { + return nil, err + } + librariesBuildPath, err := buildPath.Join("libraries").Abs() + if err != nil { + return nil, err + } + coreBuildPath, err := buildPath.Join("core").Abs() + if err != nil { + return nil, err + } + + if buildPath.Canonical().EqualsTo(sk.FullPath.Canonical()) { + return nil, ErrSketchCannotBeLocatedInBuildPath + } + + if progressStats == nil { + progressStats = progress.New(nil) + } + + libsManager, libsResolver, verboseOut, err := detector.LibrariesLoader( + useCachedLibrariesResolution, librariesManager, + builtInLibrariesDirs, libraryDirs, otherLibrariesDirs, + actualPlatform, targetPlatform, + ) + if err != nil { + return nil, err + } + if logger.Verbose() { + logger.Warn(string(verboseOut)) } + + return &Builder{ + sketch: sk, + buildProperties: buildProperties, + buildPath: buildPath, + sketchBuildPath: sketchBuildPath, + coreBuildPath: coreBuildPath, + librariesBuildPath: librariesBuildPath, + jobs: jobs, + customBuildProperties: customBuildPropertiesArgs, + coreBuildCachePath: coreBuildCachePath, + logger: logger, + clean: clean, + sourceOverrides: sourceOverrides, + onlyUpdateCompilationDatabase: onlyUpdateCompilationDatabase, + compilationDatabase: compilation.NewDatabase(buildPath.Join("compile_commands.json")), + Progress: progressStats, + executableSectionsSize: []ExecutableSectionSize{}, + buildArtifacts: &BuildArtifacts{}, + targetPlatform: targetPlatform, + actualPlatform: actualPlatform, + SketchLibrariesDetector: detector.NewSketchLibrariesDetector( + libsManager, libsResolver, + useCachedLibrariesResolution, + onlyUpdateCompilationDatabase, + logger, + ), + BuildOptionsManager: NewBuildOptionsManager( + hardwareDirs, builtInToolsDirs, otherLibrariesDirs, + builtInLibrariesDirs, buildPath, + sk, + customBuildPropertiesArgs, + fqbn, + clean, + buildProperties.Get("compiler.optimization_flags"), + buildProperties.GetPath("runtime.platform.path"), + buildProperties.GetPath("build.core.path"), // TODO can we buildCorePath ? + logger, + ), + }, nil } // GetBuildProperties returns the build properties for running this build @@ -77,7 +227,248 @@ func (b *Builder) GetBuildProperties() *properties.Map { return b.buildProperties } -// Jobs number of parallel processes -func (b *Builder) Jobs() int { - return b.jobs +// GetBuildPath returns the build path +func (b *Builder) GetBuildPath() *paths.Path { + return b.buildPath +} + +// ExecutableSectionsSize fixdoc +func (b *Builder) ExecutableSectionsSize() ExecutablesFileSections { + return b.executableSectionsSize +} + +// Preprocess fixdoc +func (b *Builder) Preprocess() error { + b.Progress.AddSubSteps(6) + defer b.Progress.RemoveSubSteps() + return b.preprocess() +} + +func (b *Builder) preprocess() error { + if err := b.buildPath.MkdirAll(); err != nil { + return err + } + + if err := b.BuildOptionsManager.WipeBuildPath(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.prebuild", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.prepareSketchBuildPath(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.logIfVerbose(false, tr("Detecting libraries used...")) + err := b.SketchLibrariesDetector.FindIncludes( + b.buildPath, + b.buildProperties.GetPath("build.core.path"), + b.buildProperties.GetPath("build.variant.path"), + b.sketchBuildPath, + b.sketch, + b.librariesBuildPath, + b.buildProperties, + b.targetPlatform.Platform.Architecture, + ) + if err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.warnAboutArchIncompatibleLibraries(b.SketchLibrariesDetector.ImportedLibraries()) + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.logIfVerbose(false, tr("Generating function prototypes...")) + if err := b.preprocessSketch(b.SketchLibrariesDetector.IncludeFolders()); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + // Output arduino-preprocessed source + preprocessedSketch, err := b.sketchBuildPath.Join(b.sketch.MainFile.Base() + ".cpp").ReadFile() + if err != nil { + return err + } + b.logger.WriteStdout(preprocessedSketch) + + return nil +} + +func (b *Builder) logIfVerbose(warn bool, msg string) { + if !b.logger.Verbose() { + return + } + if warn { + b.logger.Warn(msg) + return + } + b.logger.Info(msg) +} + +// Build fixdoc +func (b *Builder) Build() error { + b.Progress.AddSubSteps(6 /** preprocess **/ + 21 /** build **/) + defer b.Progress.RemoveSubSteps() + + if err := b.preprocess(); err != nil { + return err + } + + buildErr := b.build() + + b.SketchLibrariesDetector.PrintUsedAndNotUsedLibraries(buildErr != nil) + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.printUsedLibraries(b.SketchLibrariesDetector.ImportedLibraries()) + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if buildErr != nil { + return buildErr + } + if err := b.exportProjectCMake(b.SketchLibrariesDetector.ImportedLibraries(), b.SketchLibrariesDetector.IncludeFolders()); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.size(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + return nil +} + +// Build fixdoc +func (b *Builder) build() error { + b.logIfVerbose(false, tr("Compiling sketch...")) + if err := b.RunRecipe("recipe.hooks.sketch.prebuild", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.BuildSketch(b.SketchLibrariesDetector.IncludeFolders()); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.sketch.postbuild", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.logIfVerbose(false, tr("Compiling libraries...")) + if err := b.RunRecipe("recipe.hooks.libraries.prebuild", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.removeUnusedCompiledLibraries(b.SketchLibrariesDetector.ImportedLibraries()); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.buildLibraries(b.SketchLibrariesDetector.IncludeFolders(), b.SketchLibrariesDetector.ImportedLibraries()); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.libraries.postbuild", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.logIfVerbose(false, tr("Compiling core...")) + if err := b.RunRecipe("recipe.hooks.core.prebuild", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.buildCore(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.core.postbuild", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + b.logIfVerbose(false, tr("Linking everything together...")) + if err := b.RunRecipe("recipe.hooks.linking.prelink", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.link(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.linking.postlink", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.objcopy.preobjcopy", ".pattern", false); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.objcopy.", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.objcopy.postobjcopy", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.MergeSketchWithBootloader(); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if err := b.RunRecipe("recipe.hooks.postbuild", ".pattern", true); err != nil { + return err + } + b.Progress.CompleteStep() + b.Progress.PushProgress() + + if b.compilationDatabase != nil { + b.compilationDatabase.SaveToFile() + } + return nil } diff --git a/arduino/builder/core.go b/arduino/builder/core.go index 9bec697cb96..9617d22cc11 100644 --- a/arduino/builder/core.go +++ b/arduino/builder/core.go @@ -22,80 +22,45 @@ import ( "os" "strings" - "github.com/arduino/arduino-cli/arduino/builder/compilation" "github.com/arduino/arduino-cli/arduino/builder/cpp" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/builder/progress" "github.com/arduino/arduino-cli/arduino/builder/utils" - "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/buildcache" f "github.com/arduino/arduino-cli/internal/algorithms" - rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" ) -// CoreBuildCachePath fixdoc -func (b *Builder) CoreBuildCachePath() *paths.Path { - return b.coreBuildCachePath -} - -// CoreBuilder fixdoc -func CoreBuilder( - buildPath, coreBuildPath, coreBuildCachePath *paths.Path, - buildProperties *properties.Map, - actualPlatform *cores.PlatformRelease, - onlyUpdateCompilationDatabase, clean bool, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (paths.PathList, *paths.Path, error) { - if err := coreBuildPath.MkdirAll(); err != nil { - return nil, nil, errors.WithStack(err) +// buildCore fixdoc +func (b *Builder) buildCore() error { + if err := b.coreBuildPath.MkdirAll(); err != nil { + return errors.WithStack(err) } - if coreBuildCachePath != nil { - if _, err := coreBuildCachePath.RelTo(buildPath); err != nil { - builderLogger.Info(tr("Couldn't deeply cache core build: %[1]s", err)) - builderLogger.Info(tr("Running normal build of the core...")) - coreBuildCachePath = nil - } else if err := coreBuildCachePath.MkdirAll(); err != nil { - return nil, nil, errors.WithStack(err) + if b.coreBuildCachePath != nil { + if _, err := b.coreBuildCachePath.RelTo(b.buildPath); err != nil { + b.logger.Info(tr("Couldn't deeply cache core build: %[1]s", err)) + b.logger.Info(tr("Running normal build of the core...")) + // TODO decide if we want to override this or not. (It's only used by the + // compileCore function). + b.coreBuildCachePath = nil + } else if err := b.coreBuildCachePath.MkdirAll(); err != nil { + return errors.WithStack(err) } } - archiveFile, objectFiles, err := compileCore( - onlyUpdateCompilationDatabase, clean, - actualPlatform, - coreBuildPath, coreBuildCachePath, - buildProperties, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, - ) + archiveFile, objectFiles, err := b.compileCore() if err != nil { - return nil, nil, errors.WithStack(err) + return errors.WithStack(err) } - - return objectFiles, archiveFile, nil + b.buildArtifacts.coreObjectsFiles = objectFiles + b.buildArtifacts.coreArchiveFilePath = archiveFile + return nil } -func compileCore( - onlyUpdateCompilationDatabase, clean bool, - actualPlatform *cores.PlatformRelease, - buildPath, buildCachePath *paths.Path, - buildProperties *properties.Map, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (*paths.Path, paths.PathList, error) { - coreFolder := buildProperties.GetPath("build.core.path") - variantFolder := buildProperties.GetPath("build.variant.path") - targetCoreFolder := buildProperties.GetPath("runtime.platform.path") +func (b *Builder) compileCore() (*paths.Path, paths.PathList, error) { + coreFolder := b.buildProperties.GetPath("build.core.path") + variantFolder := b.buildProperties.GetPath("build.variant.path") + targetCoreFolder := b.buildProperties.GetPath("runtime.platform.path") includes := []string{coreFolder.String()} if variantFolder != nil && variantFolder.IsDir() { @@ -107,12 +72,12 @@ func compileCore( variantObjectFiles := paths.NewPathList() if variantFolder != nil && variantFolder.IsDir() { variantObjectFiles, err = utils.CompileFilesRecursive( - variantFolder, buildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + variantFolder, b.coreBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.logger, + b.Progress, ) if err != nil { return nil, nil, errors.WithStack(err) @@ -120,21 +85,21 @@ func compileCore( } var targetArchivedCore *paths.Path - if buildCachePath != nil { + if b.coreBuildCachePath != nil { realCoreFolder := coreFolder.Parent().Parent() - archivedCoreName := GetCachedCoreArchiveDirName( - buildProperties.Get("build.fqbn"), - buildProperties.Get("compiler.optimization_flags"), + archivedCoreName := getCachedCoreArchiveDirName( + b.buildProperties.Get("build.fqbn"), + b.buildProperties.Get("compiler.optimization_flags"), realCoreFolder, ) - targetArchivedCore = buildCachePath.Join(archivedCoreName, "core.a") + targetArchivedCore = b.coreBuildCachePath.Join(archivedCoreName, "core.a") - if _, err := buildcache.New(buildCachePath).GetOrCreate(archivedCoreName); errors.Is(err, buildcache.CreateDirErr) { + if _, err := buildcache.New(b.coreBuildCachePath).GetOrCreate(archivedCoreName); errors.Is(err, buildcache.CreateDirErr) { return nil, nil, fmt.Errorf(tr("creating core cache folder: %s", err)) } var canUseArchivedCore bool - if onlyUpdateCompilationDatabase || clean { + if b.onlyUpdateCompilationDatabase || b.clean { canUseArchivedCore = false } else if isOlder, err := utils.DirContentIsOlderThan(realCoreFolder, targetArchivedCore); err != nil || !isOlder { // Recreate the archive if ANY of the core files (including platform.txt) has changed @@ -150,48 +115,48 @@ func compileCore( if canUseArchivedCore { // use archived core - if builderLogger.Verbose() { - builderLogger.Info(tr("Using precompiled core: %[1]s", targetArchivedCore)) + if b.logger.Verbose() { + b.logger.Info(tr("Using precompiled core: %[1]s", targetArchivedCore)) } return targetArchivedCore, variantObjectFiles, nil } } coreObjectFiles, err := utils.CompileFilesRecursive( - coreFolder, buildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + coreFolder, b.coreBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.logger, + b.Progress, ) if err != nil { return nil, nil, errors.WithStack(err) } archiveFile, verboseInfo, err := utils.ArchiveCompiledFiles( - buildPath, paths.New("core.a"), coreObjectFiles, buildProperties, - onlyUpdateCompilationDatabase, builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), + b.coreBuildPath, paths.New("core.a"), coreObjectFiles, b.buildProperties, + b.onlyUpdateCompilationDatabase, b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), ) - if builderLogger.Verbose() { - builderLogger.Info(string(verboseInfo)) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } if err != nil { return nil, nil, errors.WithStack(err) } // archive core.a - if targetArchivedCore != nil && !onlyUpdateCompilationDatabase { + if targetArchivedCore != nil && !b.onlyUpdateCompilationDatabase { err := archiveFile.CopyTo(targetArchivedCore) - if builderLogger.Verbose() { + if b.logger.Verbose() { if err == nil { - builderLogger.Info(tr("Archiving built core (caching) in: %[1]s", targetArchivedCore)) + b.logger.Info(tr("Archiving built core (caching) in: %[1]s", targetArchivedCore)) } else if os.IsNotExist(err) { - builderLogger.Info(tr("Unable to cache built core, please tell %[1]s maintainers to follow %[2]s", - actualPlatform, + b.logger.Info(tr("Unable to cache built core, please tell %[1]s maintainers to follow %[2]s", + b.actualPlatform, "https://arduino.github.io/arduino-cli/latest/platform-specification/#recipes-to-build-the-corea-archive-file")) } else { - builderLogger.Info(tr("Error archiving built core (caching) in %[1]s: %[2]s", targetArchivedCore, err)) + b.logger.Info(tr("Error archiving built core (caching) in %[1]s: %[2]s", targetArchivedCore, err)) } } } @@ -199,9 +164,9 @@ func compileCore( return archiveFile, variantObjectFiles, nil } -// GetCachedCoreArchiveDirName returns the directory name to be used to store +// getCachedCoreArchiveDirName returns the directory name to be used to store // the global cached core.a. -func GetCachedCoreArchiveDirName(fqbn string, optimizationFlags string, coreFolder *paths.Path) string { +func getCachedCoreArchiveDirName(fqbn string, optimizationFlags string, coreFolder *paths.Path) string { fqbnToUnderscore := strings.ReplaceAll(fqbn, ":", "_") fqbnToUnderscore = strings.ReplaceAll(fqbnToUnderscore, "=", "_") if absCoreFolder, err := coreFolder.Abs(); err == nil { diff --git a/arduino/builder/cpp/cpp.go b/arduino/builder/cpp/cpp.go index 53123434fe1..bed3ce542e1 100644 --- a/arduino/builder/cpp/cpp.go +++ b/arduino/builder/cpp/cpp.go @@ -27,8 +27,8 @@ import ( // preprocessor. This adds double quotes around it and escapes any // double quotes and backslashes in the string. func QuoteString(str string) string { - str = strings.Replace(str, "\\", "\\\\", -1) - str = strings.Replace(str, "\"", "\\\"", -1) + str = strings.ReplaceAll(str, "\\", "\\\\") + str = strings.ReplaceAll(str, "\"", "\\\"") return "\"" + str + "\"" } diff --git a/arduino/builder/detector/detector.go b/arduino/builder/detector/detector.go index 1de2017d773..50a35a016e8 100644 --- a/arduino/builder/detector/detector.go +++ b/arduino/builder/detector/detector.go @@ -21,11 +21,10 @@ import ( "fmt" "os/exec" "regexp" + "slices" "strings" "time" - "golang.org/x/exp/slices" - "github.com/arduino/arduino-cli/arduino/builder/logger" "github.com/arduino/arduino-cli/arduino/builder/preprocessor" "github.com/arduino/arduino-cli/arduino/builder/utils" diff --git a/legacy/builder/create_cmake_rule.go b/arduino/builder/export_cmake.go similarity index 87% rename from legacy/builder/create_cmake_rule.go rename to arduino/builder/export_cmake.go index d24b31df8ad..456cd298424 100644 --- a/legacy/builder/create_cmake_rule.go +++ b/arduino/builder/export_cmake.go @@ -21,31 +21,21 @@ import ( "os" "path/filepath" "regexp" + "slices" "strings" "github.com/arduino/go-paths-helper" properties "github.com/arduino/go-properties-orderedmap" - "golang.org/x/exp/slices" "github.com/arduino/arduino-cli/arduino/builder/utils" "github.com/arduino/arduino-cli/arduino/globals" "github.com/arduino/arduino-cli/arduino/libraries" - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/legacy/builder/constants" ) var lineMatcher = regexp.MustCompile(`^#line\s\d+\s"`) -func ExportProjectCMake( - sketchError bool, // Was there an error while compiling the sketch? - buildPath, sketchBuildPath *paths.Path, - importedLibraries libraries.List, - buildProperties *properties.Map, - sketch *sketch.Sketch, - includeFolders paths.PathList, - lineOffset int, - onlyUpdateCompilationDatabase bool, -) ([]byte, []byte, error) { +// exportProjectCMake fixdoc +func (b *Builder) exportProjectCMake(importedLibraries libraries.List, includeFolders paths.PathList) error { // copies the contents of the file named src to the file named // by dst. The file will be created if it does not already exist. If the // destination file exists, all it's contents will be replaced by the contents @@ -181,13 +171,13 @@ func ExportProjectCMake( } var validStaticLibExtensions = []string{".a"} - // If sketch error or cannot export Cmake project - if sketchError || buildProperties.Get("compiler.export_cmake") == "" { - return nil, nil, nil + // If cannot export Cmake project + if b.buildProperties.Get("compiler.export_cmake") == "" { + return nil } // Create new cmake subFolder - clean if the folder is already there - cmakeFolder := buildPath.Join("_cmake") + cmakeFolder := b.buildPath.Join("_cmake") if _, err := cmakeFolder.Stat(); err == nil { cmakeFolder.RemoveAll() } @@ -207,7 +197,7 @@ func ExportProjectCMake( for _, library := range importedLibraries { // Copy used libraries in the correct folder libDir := libBaseFolder.Join(library.DirName) - mcu := buildProperties.Get("build.mcu") + mcu := b.buildProperties.Get("build.mcu") copyDir(library.InstallDir.String(), libDir.String(), validExportExtensions) // Read cmake options if available @@ -238,28 +228,20 @@ func ExportProjectCMake( } // Copy core + variant in use + preprocessed sketch in the correct folders - err := copyDir(buildProperties.Get("build.core.path"), coreFolder.String(), validExportExtensions) + err := copyDir(b.buildProperties.Get("build.core.path"), coreFolder.String(), validExportExtensions) if err != nil { fmt.Println(err) } - err = copyDir(buildProperties.Get("build.variant.path"), coreFolder.Join("variant").String(), validExportExtensions) + err = copyDir(b.buildProperties.Get("build.variant.path"), coreFolder.Join("variant").String(), validExportExtensions) if err != nil { fmt.Println(err) } - normalOutput, verboseOutput, err := PreprocessSketch( - sketch, - buildPath, - includeFolders, - lineOffset, - buildProperties, - onlyUpdateCompilationDatabase, - ) - if err != nil { - return normalOutput, verboseOutput, err + if err := b.preprocessSketch(includeFolders); err != nil { + return err } - err = copyDir(sketchBuildPath.String(), cmakeFolder.Join("sketch").String(), validExportExtensions) + err = copyDir(b.sketchBuildPath.String(), cmakeFolder.Join("sketch").String(), validExportExtensions) if err != nil { fmt.Println(err) } @@ -294,9 +276,9 @@ func ExportProjectCMake( var dynamicLibsFromGccMinusL []string var linkDirectories []string - extractCompileFlags(buildProperties, constants.RECIPE_C_COMBINE_PATTERN, &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) - extractCompileFlags(buildProperties, "recipe.c.o.pattern", &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) - extractCompileFlags(buildProperties, "recipe.cpp.o.pattern", &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) + extractCompileFlags(b.buildProperties, "recipe.c.combine.pattern", &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) + extractCompileFlags(b.buildProperties, "recipe.c.o.pattern", &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) + extractCompileFlags(b.buildProperties, "recipe.cpp.o.pattern", &defines, &dynamicLibsFromGccMinusL, &linkerflags, &linkDirectories) // Extract folders with .h in them for adding in include list headerFiles, _ := utils.FindFilesInFolder(cmakeFolder, true, validHeaderExtensions...) @@ -307,7 +289,7 @@ func ExportProjectCMake( // Generate the CMakeLists global file - projectName := sketch.Name + projectName := b.sketch.Name cmakelist := "cmake_minimum_required(VERSION 3.5.0)\n" cmakelist += "INCLUDE(FindPkgConfig)\n" @@ -364,7 +346,7 @@ func ExportProjectCMake( cmakeFile.WriteFile([]byte(cmakelist)) - return normalOutput, verboseOutput, nil + return nil } func extractCompileFlags(buildProperties *properties.Map, recipe string, defines, dynamicLibs, linkerflags, linkDirectories *[]string) { diff --git a/arduino/builder/libraries.go b/arduino/builder/libraries.go index af2e899840d..cb580766e0c 100644 --- a/arduino/builder/libraries.go +++ b/arduino/builder/libraries.go @@ -16,16 +16,14 @@ package builder import ( + "slices" "strings" + "time" - "github.com/arduino/arduino-cli/arduino/builder/compilation" "github.com/arduino/arduino-cli/arduino/builder/cpp" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/builder/progress" "github.com/arduino/arduino-cli/arduino/builder/utils" "github.com/arduino/arduino-cli/arduino/libraries" f "github.com/arduino/arduino-cli/internal/algorithms" - rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" @@ -37,38 +35,21 @@ var ( FpuCflag = "fpu" ) -// LibrariesBuilder fixdoc -func LibrariesBuilder( - librariesBuildPath *paths.Path, - buildProperties *properties.Map, - includesFolders paths.PathList, - importedLibraries libraries.List, - onlyUpdateCompilationDatabase bool, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (paths.PathList, error) { +// buildLibraries fixdoc +func (b *Builder) buildLibraries(includesFolders paths.PathList, importedLibraries libraries.List) error { includes := f.Map(includesFolders.AsStrings(), cpp.WrapWithHyphenI) libs := importedLibraries - if err := librariesBuildPath.MkdirAll(); err != nil { - return nil, errors.WithStack(err) + if err := b.librariesBuildPath.MkdirAll(); err != nil { + return errors.WithStack(err) } - librariesObjectFiles, err := compileLibraries( - libs, librariesBuildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, - ) + librariesObjectFiles, err := b.compileLibraries(libs, includes) if err != nil { - return nil, errors.WithStack(err) + return errors.WithStack(err) } - - return librariesObjectFiles, nil + b.buildArtifacts.librariesObjectFiles = librariesObjectFiles + return nil } func directoryContainsFile(folder *paths.Path) bool { @@ -79,10 +60,9 @@ func directoryContainsFile(folder *paths.Path) bool { return false } -func findExpectedPrecompiledLibFolder( +func (b *Builder) findExpectedPrecompiledLibFolder( library *libraries.Library, buildProperties *properties.Map, - builderLogger *logger.BuilderLogger, ) *paths.Path { mcu := buildProperties.Get("build.mcu") // Add fpu specifications if they exist @@ -109,79 +89,52 @@ func findExpectedPrecompiledLibFolder( } } - builderLogger.Info(tr("Library %[1]s has been declared precompiled:", library.Name)) + b.logger.Info(tr("Library %[1]s has been declared precompiled:", library.Name)) // Try directory with full fpuSpecs first, if available if len(fpuSpecs) > 0 { fpuSpecs = strings.TrimRight(fpuSpecs, "-") fullPrecompDir := library.SourceDir.Join(mcu).Join(fpuSpecs) if fullPrecompDir.Exist() && directoryContainsFile(fullPrecompDir) { - builderLogger.Info(tr("Using precompiled library in %[1]s", fullPrecompDir)) + b.logger.Info(tr("Using precompiled library in %[1]s", fullPrecompDir)) return fullPrecompDir } - builderLogger.Info(tr(`Precompiled library in "%[1]s" not found`, fullPrecompDir)) + b.logger.Info(tr(`Precompiled library in "%[1]s" not found`, fullPrecompDir)) } precompDir := library.SourceDir.Join(mcu) if precompDir.Exist() && directoryContainsFile(precompDir) { - builderLogger.Info(tr("Using precompiled library in %[1]s", precompDir)) + b.logger.Info(tr("Using precompiled library in %[1]s", precompDir)) return precompDir } - builderLogger.Info(tr(`Precompiled library in "%[1]s" not found`, precompDir)) + b.logger.Info(tr(`Precompiled library in "%[1]s" not found`, precompDir)) return nil } -func compileLibraries( - libraries libraries.List, buildPath *paths.Path, buildProperties *properties.Map, includes []string, - onlyUpdateCompilationDatabase bool, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (paths.PathList, error) { - progress.AddSubSteps(len(libraries)) - defer progress.RemoveSubSteps() +func (b *Builder) compileLibraries(libraries libraries.List, includes []string) (paths.PathList, error) { + b.Progress.AddSubSteps(len(libraries)) + defer b.Progress.RemoveSubSteps() objectFiles := paths.NewPathList() for _, library := range libraries { - libraryObjectFiles, err := compileLibrary( - library, buildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, - ) + libraryObjectFiles, err := b.compileLibrary(library, includes) if err != nil { return nil, errors.WithStack(err) } objectFiles.AddAll(libraryObjectFiles) - progress.CompleteStep() - // PushProgress - if progressCB != nil { - progressCB(&rpc.TaskProgress{ - Percent: progress.Progress, - Completed: progress.Progress >= 100.0, - }) - } + b.Progress.CompleteStep() + b.Progress.PushProgress() } return objectFiles, nil } -func compileLibrary( - library *libraries.Library, buildPath *paths.Path, buildProperties *properties.Map, includes []string, - onlyUpdateCompilationDatabase bool, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (paths.PathList, error) { - if builderLogger.Verbose() { - builderLogger.Info(tr(`Compiling library "%[1]s"`, library.Name)) +func (b *Builder) compileLibrary(library *libraries.Library, includes []string) (paths.PathList, error) { + if b.logger.Verbose() { + b.logger.Info(tr(`Compiling library "%[1]s"`, library.Name)) } - libraryBuildPath := buildPath.Join(library.DirName) + libraryBuildPath := b.librariesBuildPath.Join(library.DirName) if err := libraryBuildPath.MkdirAll(); err != nil { return nil, errors.WithStack(err) @@ -190,15 +143,14 @@ func compileLibrary( objectFiles := paths.NewPathList() if library.Precompiled { - coreSupportPrecompiled := buildProperties.ContainsKey("compiler.libraries.ldflags") - precompiledPath := findExpectedPrecompiledLibFolder( + coreSupportPrecompiled := b.buildProperties.ContainsKey("compiler.libraries.ldflags") + precompiledPath := b.findExpectedPrecompiledLibFolder( library, - buildProperties, - builderLogger, + b.buildProperties, ) if !coreSupportPrecompiled { - builderLogger.Info(tr("The platform does not support '%[1]s' for precompiled libraries.", "compiler.libraries.ldflags")) + b.logger.Info(tr("The platform does not support '%[1]s' for precompiled libraries.", "compiler.libraries.ldflags")) } else if precompiledPath != nil { // Find all libraries in precompiledPath libs, err := precompiledPath.ReadDir() @@ -217,8 +169,8 @@ func compileLibrary( } } - currLDFlags := buildProperties.Get("compiler.libraries.ldflags") - buildProperties.Set("compiler.libraries.ldflags", currLDFlags+" \"-L"+precompiledPath.String()+"\" "+libsCmd+" ") + currLDFlags := b.buildProperties.Get("compiler.libraries.ldflags") + b.buildProperties.Set("compiler.libraries.ldflags", currLDFlags+" \"-L"+precompiledPath.String()+"\" "+libsCmd+" ") // TODO: This codepath is just taken for .a with unusual names that would // be ignored by -L / -l methods. @@ -239,24 +191,24 @@ func compileLibrary( if library.Layout == libraries.RecursiveLayout { libObjectFiles, err := utils.CompileFilesRecursive( - library.SourceDir, libraryBuildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + library.SourceDir, libraryBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.logger, + b.Progress, ) if err != nil { return nil, errors.WithStack(err) } if library.DotALinkage { archiveFile, verboseInfo, err := utils.ArchiveCompiledFiles( - libraryBuildPath, paths.New(library.DirName+".a"), libObjectFiles, buildProperties, - onlyUpdateCompilationDatabase, builderLogger.Verbose(), - builderLogger.Stdout(), builderLogger.Stderr(), + libraryBuildPath, paths.New(library.DirName+".a"), libObjectFiles, b.buildProperties, + b.onlyUpdateCompilationDatabase, b.logger.Verbose(), + b.logger.Stdout(), b.logger.Stderr(), ) - if builderLogger.Verbose() { - builderLogger.Info(string(verboseInfo)) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } if err != nil { return nil, errors.WithStack(err) @@ -270,12 +222,12 @@ func compileLibrary( includes = append(includes, cpp.WrapWithHyphenI(library.UtilityDir.String())) } libObjectFiles, err := utils.CompileFiles( - library.SourceDir, libraryBuildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + library.SourceDir, libraryBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.logger, + b.Progress, ) if err != nil { return nil, errors.WithStack(err) @@ -285,12 +237,12 @@ func compileLibrary( if library.UtilityDir != nil { utilityBuildPath := libraryBuildPath.Join("utility") utilityObjectFiles, err := utils.CompileFiles( - library.UtilityDir, utilityBuildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + library.UtilityDir, utilityBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.logger, + b.Progress, ) if err != nil { return nil, errors.WithStack(err) @@ -301,3 +253,88 @@ func compileLibrary( return objectFiles, nil } + +// removeUnusedCompiledLibraries fixdoc +func (b *Builder) removeUnusedCompiledLibraries(importedLibraries libraries.List) error { + if b.librariesBuildPath.NotExist() { + return nil + } + + toLibraryNames := func(libraries []*libraries.Library) []string { + libraryNames := []string{} + for _, library := range libraries { + libraryNames = append(libraryNames, library.Name) + } + return libraryNames + } + + files, err := b.librariesBuildPath.ReadDir() + if err != nil { + return errors.WithStack(err) + } + + libraryNames := toLibraryNames(importedLibraries) + for _, file := range files { + if file.IsDir() { + if !slices.Contains(libraryNames, file.Base()) { + if err := file.RemoveAll(); err != nil { + return errors.WithStack(err) + } + } + } + } + + return nil +} + +// warnAboutArchIncompatibleLibraries fixdoc +func (b *Builder) warnAboutArchIncompatibleLibraries(importedLibraries libraries.List) { + archs := []string{b.targetPlatform.Platform.Architecture} + overrides, _ := b.buildProperties.GetOk("architecture.override_check") + if overrides != "" { + archs = append(archs, strings.Split(overrides, ",")...) + } + + for _, importedLibrary := range importedLibraries { + if !importedLibrary.SupportsAnyArchitectureIn(archs...) { + b.logger.Info( + tr("WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be incompatible with your current board which runs on %[3]s architecture(s).", + importedLibrary.Name, + strings.Join(importedLibrary.Architectures, ", "), + strings.Join(archs, ", "))) + } + } +} + +// printUsedLibraries fixdoc +// TODO here we can completly remove this part as it's duplicated in what we can +// read in the gRPC response +func (b *Builder) printUsedLibraries(importedLibraries libraries.List) { + if !b.logger.Verbose() || len(importedLibraries) == 0 { + return + } + + for _, library := range importedLibraries { + legacy := "" + if library.IsLegacy { + legacy = tr("(legacy)") + } + if library.Version.String() == "" { + b.logger.Info( + tr("Using library %[1]s in folder: %[2]s %[3]s", + library.Name, + library.InstallDir, + legacy)) + } else { + b.logger.Info( + tr("Using library %[1]s at version %[2]s in folder: %[3]s %[4]s", + library.Name, + library.Version, + library.InstallDir, + legacy)) + } + } + + // TODO Why is this here? + time.Sleep(100 * time.Millisecond) +} diff --git a/arduino/builder/linker.go b/arduino/builder/linker.go index 528e159d0aa..60c09bcf6dd 100644 --- a/arduino/builder/linker.go +++ b/arduino/builder/linker.go @@ -16,61 +16,33 @@ package builder import ( - "bytes" "strings" - "github.com/arduino/arduino-cli/arduino/builder/logger" "github.com/arduino/arduino-cli/arduino/builder/utils" f "github.com/arduino/arduino-cli/internal/algorithms" "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" ) -// Linker fixdoc -func Linker( - onlyUpdateCompilationDatabase bool, - sketchObjectFiles, librariesObjectFiles, coreObjectsFiles paths.PathList, - coreArchiveFilePath, buildPath *paths.Path, - buildProperties *properties.Map, - builderLogger *logger.BuilderLogger, -) ([]byte, error) { - verboseInfo := &bytes.Buffer{} - if onlyUpdateCompilationDatabase { - if builderLogger.Verbose() { - verboseInfo.WriteString(tr("Skip linking of final executable.")) +// link fixdoc +func (b *Builder) link() error { + if b.onlyUpdateCompilationDatabase { + if b.logger.Verbose() { + b.logger.Info(tr("Skip linking of final executable.")) } - return verboseInfo.Bytes(), nil + return nil } - objectFilesSketch := sketchObjectFiles - objectFilesLibraries := librariesObjectFiles - objectFilesCore := coreObjectsFiles - objectFiles := paths.NewPathList() - objectFiles.AddAll(objectFilesSketch) - objectFiles.AddAll(objectFilesLibraries) - objectFiles.AddAll(objectFilesCore) - - coreDotARelPath, err := buildPath.RelTo(coreArchiveFilePath) - if err != nil { - return nil, errors.WithStack(err) - } + objectFiles.AddAll(b.buildArtifacts.sketchObjectFiles) + objectFiles.AddAll(b.buildArtifacts.librariesObjectFiles) + objectFiles.AddAll(b.buildArtifacts.coreObjectsFiles) - verboseInfoOut, err := link(objectFiles, coreDotARelPath, coreArchiveFilePath, buildProperties, builderLogger) - verboseInfo.Write(verboseInfoOut) + coreDotARelPath, err := b.buildPath.RelTo(b.buildArtifacts.coreArchiveFilePath) if err != nil { - return verboseInfo.Bytes(), errors.WithStack(err) + return errors.WithStack(err) } - return verboseInfo.Bytes(), nil -} - -func link( - objectFiles paths.PathList, coreDotARelPath *paths.Path, coreArchiveFilePath *paths.Path, buildProperties *properties.Map, - builderLogger *logger.BuilderLogger, -) ([]byte, error) { - verboseBuffer := &bytes.Buffer{} wrapWithDoubleQuotes := func(value string) string { return "\"" + value + "\"" } objectFileList := strings.Join(f.Map(objectFiles.AsStrings(), wrapWithDoubleQuotes), " ") @@ -83,7 +55,7 @@ func link( // it may happen that a subdir/spi.o inside the archive may be overwritten by a anotherdir/spi.o // because thery are both named spi.o. - properties := buildProperties.Clone() + properties := b.buildProperties.Clone() archives := paths.NewPathList() for _, object := range objectFiles { if object.HasSuffix(".a") { @@ -102,14 +74,14 @@ func link( command, err := utils.PrepareCommandForRecipe(properties, "recipe.ar.pattern", false) if err != nil { - return nil, errors.WithStack(err) + return errors.WithStack(err) } - if verboseInfo, _, _, err := utils.ExecCommand(builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */); err != nil { - if builderLogger.Verbose() { - verboseBuffer.WriteString(string(verboseInfo)) + if verboseInfo, _, _, err := utils.ExecCommand(b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */); err != nil { + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } - return verboseBuffer.Bytes(), errors.WithStack(err) + return errors.WithStack(err) } } @@ -117,21 +89,24 @@ func link( objectFileList = "-Wl,--whole-archive " + objectFileList + " -Wl,--no-whole-archive" } - properties := buildProperties.Clone() + properties := b.buildProperties.Clone() properties.Set("compiler.c.elf.flags", properties.Get("compiler.c.elf.flags")) - properties.Set("compiler.warning_flags", properties.Get("compiler.warning_flags."+builderLogger.WarningsLevel())) + properties.Set("compiler.warning_flags", properties.Get("compiler.warning_flags."+b.logger.WarningsLevel())) properties.Set("archive_file", coreDotARelPath.String()) - properties.Set("archive_file_path", coreArchiveFilePath.String()) + properties.Set("archive_file_path", b.buildArtifacts.coreArchiveFilePath.String()) properties.Set("object_files", objectFileList) command, err := utils.PrepareCommandForRecipe(properties, "recipe.c.combine.pattern", false) if err != nil { - return verboseBuffer.Bytes(), err + return err } - verboseInfo, _, _, err := utils.ExecCommand(builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */) - if builderLogger.Verbose() { - verboseBuffer.WriteString(string(verboseInfo)) + verboseInfo, _, _, err := utils.ExecCommand(b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) + } + if err != nil { + return err } - return verboseBuffer.Bytes(), err + return nil } diff --git a/legacy/builder/load_previous_build_options.go b/arduino/builder/preprocess_sketch.go similarity index 56% rename from legacy/builder/load_previous_build_options.go rename to arduino/builder/preprocess_sketch.go index 63dd83804e4..c871495c335 100644 --- a/legacy/builder/load_previous_build_options.go +++ b/arduino/builder/preprocess_sketch.go @@ -1,6 +1,6 @@ // This file is part of arduino-cli. // -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// Copyright 2023 ARDUINO SA (http://www.arduino.cc/) // // This software is released under the GNU General Public License version 3, // which covers the main part of arduino-cli. @@ -16,21 +16,22 @@ package builder import ( - "github.com/arduino/arduino-cli/legacy/builder/constants" + "github.com/arduino/arduino-cli/arduino/builder/preprocessor" "github.com/arduino/go-paths-helper" - "github.com/pkg/errors" ) -func LoadPreviousBuildOptionsMap(buildPath *paths.Path) (string, error) { - buildOptionsFile := buildPath.Join(constants.BUILD_OPTIONS_FILE) - - if buildOptionsFile.NotExist() { - return "", nil +// preprocessSketch fixdoc +func (b *Builder) preprocessSketch(includes paths.PathList) error { + // In the future we might change the preprocessor + normalOutput, verboseOutput, err := preprocessor.PreprocessSketchWithCtags( + b.sketch, b.buildPath, includes, b.lineOffset, + b.buildProperties, b.onlyUpdateCompilationDatabase, + ) + if b.logger.Verbose() { + b.logger.WriteStdout(verboseOutput) + } else { + b.logger.WriteStdout(normalOutput) } - buildOptionsJsonPrevious, err := buildOptionsFile.ReadFile() - if err != nil { - return "", errors.WithStack(err) - } - return string(buildOptionsJsonPrevious), nil + return err } diff --git a/arduino/builder/preprocessor/ctags.go b/arduino/builder/preprocessor/ctags.go index bf5f25b4ca2..8d9fb7c9480 100644 --- a/arduino/builder/preprocessor/ctags.go +++ b/arduino/builder/preprocessor/ctags.go @@ -103,8 +103,8 @@ func PreprocessSketchWithCtags(sketch *sketch.Sketch, buildPath *paths.Path, inc } else { return normalOutput.Bytes(), verboseOutput.Bytes(), err } - source = strings.Replace(source, "\r\n", "\n", -1) - source = strings.Replace(source, "\r", "\n", -1) + source = strings.ReplaceAll(source, "\r\n", "\n") + source = strings.ReplaceAll(source, "\r", "\n") sourceRows := strings.Split(source, "\n") if isFirstFunctionOutsideOfSource(firstFunctionLine, sourceRows) { return normalOutput.Bytes(), verboseOutput.Bytes(), nil diff --git a/arduino/builder/preprocessor/internal/ctags/ctags_has_issues.go b/arduino/builder/preprocessor/internal/ctags/ctags_has_issues.go index 4d4d7d48f65..0b72abed8d5 100644 --- a/arduino/builder/preprocessor/internal/ctags/ctags_has_issues.go +++ b/arduino/builder/preprocessor/internal/ctags/ctags_has_issues.go @@ -18,9 +18,8 @@ package ctags import ( "bufio" "os" + "slices" "strings" - - "golang.org/x/exp/slices" ) func (p *Parser) fixCLinkageTagsDeclarations() { diff --git a/arduino/builder/preprocessor/internal/ctags/ctags_parser.go b/arduino/builder/preprocessor/internal/ctags/ctags_parser.go index c2e6e99585f..0403852143f 100644 --- a/arduino/builder/preprocessor/internal/ctags/ctags_parser.go +++ b/arduino/builder/preprocessor/internal/ctags/ctags_parser.go @@ -25,7 +25,7 @@ import ( const kindPrototype = "prototype" const kindFunction = "function" -//const KIND_PROTOTYPE_MODIFIERS = "prototype_modifiers" +// const KIND_PROTOTYPE_MODIFIERS = "prototype_modifiers" const keywordTemplate = "template" const keywordStatic = "static" @@ -101,7 +101,7 @@ func addPrototype(tag *Tag) { } tag.Prototype = code + ";" } else { - //tag.Code is 99% multiline, recreate it + // tag.Code is 99% multiline, recreate it code := findTemplateMultiline(tag) tag.Prototype = code + ";" } @@ -128,7 +128,7 @@ func (p *Parser) removeDefinedProtypes() { for _, tag := range p.tags { if definedPrototypes[tag.Prototype] { - //if ctx.DebugLevel >= 10 { + // if ctx.DebugLevel >= 10 { // ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_ALREADY_DEFINED, tag.FunctionName) //} tag.SkipMe = true @@ -154,7 +154,7 @@ func (p *Parser) skipTagsWhere(skipFunc skipFuncType) { for _, tag := range p.tags { if !tag.SkipMe { skip := skipFunc(tag) - //if skip && p.debugLevel >= 10 { + // if skip && p.debugLevel >= 10 { // ctx.GetLogger().Fprintln(os.Stdout, constants.LOG_LEVEL_DEBUG, constants.MSG_SKIPPING_TAG_WITH_REASON, tag.FunctionName, runtime.FuncForPC(reflect.ValueOf(skipFunc).Pointer()).Name()) //} tag.SkipMe = skip @@ -167,8 +167,8 @@ func removeTralingSemicolon(s string) string { } func removeSpacesAndTabs(s string) string { - s = strings.Replace(s, " ", "", -1) - s = strings.Replace(s, "\t", "", -1) + s = strings.ReplaceAll(s, " ", "") + s = strings.ReplaceAll(s, "\t", "") return s } @@ -205,7 +205,7 @@ func parseTag(row string) *Tag { // and just cuts off the filename at the first double quote it // sees. This means any backslashes are still escaped, and need // to be unescape, and any quotes will just break the build. - tag.Filename = strings.Replace(parts[1], "\\\\", "\\", -1) + tag.Filename = strings.ReplaceAll(parts[1], "\\\\", "\\") parts = parts[2:] diff --git a/arduino/builder/progress/progress.go b/arduino/builder/progress/progress.go index 2bdfaeb7539..a3fa9b09d9b 100644 --- a/arduino/builder/progress/progress.go +++ b/arduino/builder/progress/progress.go @@ -15,11 +15,19 @@ package progress +import rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" + // Struct fixdoc type Struct struct { Progress float32 StepAmount float32 Parent *Struct + callback rpc.TaskProgressCB +} + +// New fixdoc +func New(callback rpc.TaskProgressCB) *Struct { + return &Struct{callback: callback} } // AddSubSteps fixdoc @@ -46,3 +54,13 @@ func (p *Struct) RemoveSubSteps() { func (p *Struct) CompleteStep() { p.Progress += p.StepAmount } + +// PushProgress fixdoc +func (p *Struct) PushProgress() { + if p.callback != nil { + p.callback(&rpc.TaskProgress{ + Percent: p.Progress, + Completed: p.Progress >= 100.0, + }) + } +} diff --git a/legacy/builder/recipe_runner.go b/arduino/builder/recipe.go similarity index 71% rename from legacy/builder/recipe_runner.go rename to arduino/builder/recipe.go index 8af310bd4d3..385e6a03a87 100644 --- a/legacy/builder/recipe_runner.go +++ b/arduino/builder/recipe.go @@ -20,23 +20,18 @@ import ( "sort" "strings" - "github.com/arduino/arduino-cli/arduino/builder/logger" "github.com/arduino/arduino-cli/arduino/builder/utils" properties "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) -func RecipeByPrefixSuffixRunner( - prefix, suffix string, - skipIfOnlyUpdatingCompilationDatabase, onlyUpdateCompilationDatabase bool, - buildProps *properties.Map, - builderLogger *logger.BuilderLogger, -) error { +// RunRecipe fixdoc +func (b *Builder) RunRecipe(prefix, suffix string, skipIfOnlyUpdatingCompilationDatabase bool) error { logrus.Debugf(fmt.Sprintf("Looking for recipes like %s", prefix+"*"+suffix)) // TODO is it necessary to use Clone? - buildProperties := buildProps.Clone() + buildProperties := b.buildProperties.Clone() recipes := findRecipes(buildProperties, prefix, suffix) // TODO is it necessary to use Clone? @@ -49,16 +44,16 @@ func RecipeByPrefixSuffixRunner( return errors.WithStack(err) } - if onlyUpdateCompilationDatabase && skipIfOnlyUpdatingCompilationDatabase { - if builderLogger.Verbose() { - builderLogger.Info(tr("Skipping: %[1]s", strings.Join(command.GetArgs(), " "))) + if b.onlyUpdateCompilationDatabase && skipIfOnlyUpdatingCompilationDatabase { + if b.logger.Verbose() { + b.logger.Info(tr("Skipping: %[1]s", strings.Join(command.GetArgs(), " "))) } return nil } - verboseInfo, _, _, err := utils.ExecCommand(builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */) - if builderLogger.Verbose() { - builderLogger.Info(string(verboseInfo)) + verboseInfo, _, _, err := utils.ExecCommand(b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), command, utils.ShowIfVerbose /* stdout */, utils.Show /* stderr */) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } if err != nil { return errors.WithStack(err) diff --git a/arduino/builder/sizer/sizer.go b/arduino/builder/sizer.go similarity index 70% rename from arduino/builder/sizer/sizer.go rename to arduino/builder/sizer.go index 7533a8d740e..0924f9a62e4 100644 --- a/arduino/builder/sizer/sizer.go +++ b/arduino/builder/sizer.go @@ -13,7 +13,7 @@ // Arduino software without disclosing the source code of your own applications. // To purchase a commercial license, send an email to license@arduino.cc. -package sizer +package builder import ( "encoding/json" @@ -21,16 +21,12 @@ import ( "regexp" "strconv" - "github.com/arduino/arduino-cli/arduino/builder/logger" "github.com/arduino/arduino-cli/arduino/builder/utils" - "github.com/arduino/arduino-cli/i18n" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" ) -var tr = i18n.Tr - // ExecutableSectionSize represents a section of the executable output file type ExecutableSectionSize struct { Name string `json:"name"` @@ -54,32 +50,36 @@ func (s ExecutablesFileSections) ToRPCExecutableSectionSizeArray() []*rpc.Execut return res } -// Size fixdoc -func Size( - onlyUpdateCompilationDatabase, sketchError bool, - buildProperties *properties.Map, - builderLogger *logger.BuilderLogger, -) (ExecutablesFileSections, error) { - if onlyUpdateCompilationDatabase || sketchError { - return nil, nil +// size fixdoc +func (b *Builder) size() error { + if b.onlyUpdateCompilationDatabase { + return nil + } + + check := b.checkSize + if b.buildProperties.ContainsKey("recipe.advanced_size.pattern") { + check = b.checkSizeAdvanced } - if buildProperties.ContainsKey("recipe.advanced_size.pattern") { - return checkSizeAdvanced(buildProperties, builderLogger) + result, err := check() + if err != nil { + return err } - return checkSize(buildProperties, builderLogger) + b.executableSectionsSize = result + + return nil } -func checkSizeAdvanced(buildProperties *properties.Map, builderLogger *logger.BuilderLogger) (ExecutablesFileSections, error) { - command, err := utils.PrepareCommandForRecipe(buildProperties, "recipe.advanced_size.pattern", false) +func (b *Builder) checkSizeAdvanced() (ExecutablesFileSections, error) { + command, err := utils.PrepareCommandForRecipe(b.buildProperties, "recipe.advanced_size.pattern", false) if err != nil { return nil, errors.New(tr("Error while determining sketch size: %s", err)) } - verboseInfo, out, _, err := utils.ExecCommand(builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), command, utils.Capture /* stdout */, utils.Show /* stderr */) - if builderLogger.Verbose() { - builderLogger.Info(string(verboseInfo)) + verboseInfo, out, _, err := utils.ExecCommand(b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), command, utils.Capture /* stdout */, utils.Show /* stderr */) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } if err != nil { return nil, errors.New(tr("Error while determining sketch size: %s", err)) @@ -107,21 +107,21 @@ func checkSizeAdvanced(buildProperties *properties.Map, builderLogger *logger.Bu executableSectionsSize := resp.Sections switch resp.Severity { case "error": - builderLogger.Warn(resp.Output) + b.logger.Warn(resp.Output) return executableSectionsSize, errors.New(resp.ErrorMessage) case "warning": - builderLogger.Warn(resp.Output) + b.logger.Warn(resp.Output) case "info": - builderLogger.Info(resp.Output) + b.logger.Info(resp.Output) default: return executableSectionsSize, fmt.Errorf("invalid '%s' severity from sketch sizer: it must be 'error', 'warning' or 'info'", resp.Severity) } return executableSectionsSize, nil } -func checkSize(buildProperties *properties.Map, builderLogger *logger.BuilderLogger) (ExecutablesFileSections, error) { - properties := buildProperties.Clone() - properties.Set("compiler.warning_flags", properties.Get("compiler.warning_flags."+builderLogger.WarningsLevel())) +func (b *Builder) checkSize() (ExecutablesFileSections, error) { + properties := b.buildProperties.Clone() + properties.Set("compiler.warning_flags", properties.Get("compiler.warning_flags."+b.logger.WarningsLevel())) maxTextSizeString := properties.Get("upload.maximum_size") maxDataSizeString := properties.Get("upload.maximum_data_size") @@ -143,25 +143,25 @@ func checkSize(buildProperties *properties.Map, builderLogger *logger.BuilderLog } } - textSize, dataSize, _, err := execSizeRecipe(properties, builderLogger) + textSize, dataSize, _, err := b.execSizeRecipe(properties) if err != nil { - builderLogger.Warn(tr("Couldn't determine program size")) + b.logger.Warn(tr("Couldn't determine program size")) return nil, nil } - builderLogger.Info(tr("Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s bytes.", + b.logger.Info(tr("Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s bytes.", strconv.Itoa(textSize), strconv.Itoa(maxTextSize), strconv.Itoa(textSize*100/maxTextSize))) if dataSize >= 0 { if maxDataSize > 0 { - builderLogger.Info(tr("Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s bytes for local variables. Maximum is %[2]s bytes.", + b.logger.Info(tr("Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s bytes for local variables. Maximum is %[2]s bytes.", strconv.Itoa(dataSize), strconv.Itoa(maxDataSize), strconv.Itoa(dataSize*100/maxDataSize), strconv.Itoa(maxDataSize-dataSize))) } else { - builderLogger.Info(tr("Global variables use %[1]s bytes of dynamic memory.", strconv.Itoa(dataSize))) + b.logger.Info(tr("Global variables use %[1]s bytes of dynamic memory.", strconv.Itoa(dataSize))) } } @@ -181,12 +181,12 @@ func checkSize(buildProperties *properties.Map, builderLogger *logger.BuilderLog } if textSize > maxTextSize { - builderLogger.Warn(tr("Sketch too big; see %[1]s for tips on reducing it.", "https://support.arduino.cc/hc/en-us/articles/360013825179")) + b.logger.Warn(tr("Sketch too big; see %[1]s for tips on reducing it.", "https://support.arduino.cc/hc/en-us/articles/360013825179")) return executableSectionsSize, errors.New(tr("text section exceeds available space in board")) } if maxDataSize > 0 && dataSize > maxDataSize { - builderLogger.Warn(tr("Not enough memory; see %[1]s for tips on reducing your footprint.", "https://support.arduino.cc/hc/en-us/articles/360013825179")) + b.logger.Warn(tr("Not enough memory; see %[1]s for tips on reducing your footprint.", "https://support.arduino.cc/hc/en-us/articles/360013825179")) return executableSectionsSize, errors.New(tr("data section exceeds available space in board")) } @@ -196,23 +196,23 @@ func checkSize(buildProperties *properties.Map, builderLogger *logger.BuilderLog return executableSectionsSize, err } if maxDataSize > 0 && dataSize > maxDataSize*warnDataPercentage/100 { - builderLogger.Warn(tr("Low memory available, stability problems may occur.")) + b.logger.Warn(tr("Low memory available, stability problems may occur.")) } } return executableSectionsSize, nil } -func execSizeRecipe(properties *properties.Map, builderLogger *logger.BuilderLogger) (textSize int, dataSize int, eepromSize int, resErr error) { +func (b *Builder) execSizeRecipe(properties *properties.Map) (textSize int, dataSize int, eepromSize int, resErr error) { command, err := utils.PrepareCommandForRecipe(properties, "recipe.size.pattern", false) if err != nil { resErr = fmt.Errorf(tr("Error while determining sketch size: %s"), err) return } - verboseInfo, out, _, err := utils.ExecCommand(builderLogger.Verbose(), builderLogger.Stdout(), builderLogger.Stderr(), command, utils.Capture /* stdout */, utils.Show /* stderr */) - if builderLogger.Verbose() { - builderLogger.Info(string(verboseInfo)) + verboseInfo, out, _, err := utils.ExecCommand(b.logger.Verbose(), b.logger.Stdout(), b.logger.Stderr(), command, utils.Capture /* stdout */, utils.Show /* stderr */) + if b.logger.Verbose() { + b.logger.Info(string(verboseInfo)) } if err != nil { resErr = fmt.Errorf(tr("Error while determining sketch size: %s"), err) diff --git a/arduino/builder/sizer/sizer_test.go b/arduino/builder/sizer_test.go similarity index 99% rename from arduino/builder/sizer/sizer_test.go rename to arduino/builder/sizer_test.go index 42c3b323d42..79514ae6862 100644 --- a/arduino/builder/sizer/sizer_test.go +++ b/arduino/builder/sizer_test.go @@ -13,7 +13,7 @@ // Arduino software without disclosing the source code of your own applications. // To purchase a commercial license, send an email to license@arduino.cc. -package sizer +package builder import ( "testing" diff --git a/arduino/builder/sketch.go b/arduino/builder/sketch.go index 79779d5b4cc..f54461fb74a 100644 --- a/arduino/builder/sketch.go +++ b/arduino/builder/sketch.go @@ -18,19 +18,17 @@ package builder import ( "bytes" "fmt" + "math" "regexp" + "strconv" + "strings" - "github.com/arduino/arduino-cli/arduino/builder/compilation" "github.com/arduino/arduino-cli/arduino/builder/cpp" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/builder/progress" "github.com/arduino/arduino-cli/arduino/builder/utils" - "github.com/arduino/arduino-cli/arduino/sketch" "github.com/arduino/arduino-cli/i18n" f "github.com/arduino/arduino-cli/internal/algorithms" - rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" + "github.com/marcinbor85/gohex" "github.com/pkg/errors" ) @@ -40,34 +38,31 @@ var ( tr = i18n.Tr ) -// Sketch fixdoc -func (b *Builder) Sketch() *sketch.Sketch { - return b.sketch -} - -// PrepareSketchBuildPath copies the sketch source files in the build path. +// prepareSketchBuildPath copies the sketch source files in the build path. // The .ino files are merged together to create a .cpp file (by the way, the // .cpp file still needs to be Arduino-preprocessed to compile). -func (b *Builder) PrepareSketchBuildPath(sourceOverrides map[string]string, buildPath *paths.Path) (int, error) { - if err := buildPath.MkdirAll(); err != nil { - return 0, errors.Wrap(err, tr("unable to create a folder to save the sketch")) +func (b *Builder) prepareSketchBuildPath() error { + if err := b.sketchBuildPath.MkdirAll(); err != nil { + return errors.Wrap(err, tr("unable to create a folder to save the sketch")) } - offset, mergedSource, err := b.sketchMergeSources(sourceOverrides) + offset, mergedSource, err := b.sketchMergeSources(b.sourceOverrides) if err != nil { - return 0, err + return err } - destFile := buildPath.Join(b.sketch.MainFile.Base() + ".cpp") + destFile := b.sketchBuildPath.Join(b.sketch.MainFile.Base() + ".cpp") if err := destFile.WriteFile([]byte(mergedSource)); err != nil { - return 0, err + return err } - if err := b.sketchCopyAdditionalFiles(buildPath, sourceOverrides); err != nil { - return 0, err + if err := b.sketchCopyAdditionalFiles(b.sketchBuildPath, b.sourceOverrides); err != nil { + return err } - return offset, nil + b.lineOffset = offset + + return nil } // sketchMergeSources merges all the .ino source files included in a sketch to produce @@ -179,51 +174,168 @@ func writeIfDifferent(source []byte, destPath *paths.Path) error { return nil } -// SketchBuilder fixdoc -func SketchBuilder( - sketchBuildPath *paths.Path, - buildProperties *properties.Map, - includesFolders paths.PathList, - onlyUpdateCompilationDatabase bool, - compilationDatabase *compilation.Database, - jobs int, - builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, -) (paths.PathList, error) { +// BuildSketch fixdoc +func (b *Builder) BuildSketch(includesFolders paths.PathList) error { includes := f.Map(includesFolders.AsStrings(), cpp.WrapWithHyphenI) - if err := sketchBuildPath.MkdirAll(); err != nil { - return nil, errors.WithStack(err) + if err := b.sketchBuildPath.MkdirAll(); err != nil { + return errors.WithStack(err) } sketchObjectFiles, err := utils.CompileFiles( - sketchBuildPath, sketchBuildPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + b.sketchBuildPath, b.sketchBuildPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.builderLogger, + b.Progress, ) if err != nil { - return nil, errors.WithStack(err) + return errors.WithStack(err) } // The "src/" subdirectory of a sketch is compiled recursively - sketchSrcPath := sketchBuildPath.Join("src") + sketchSrcPath := b.sketchBuildPath.Join("src") if sketchSrcPath.IsDir() { srcObjectFiles, err := utils.CompileFilesRecursive( - sketchSrcPath, sketchSrcPath, buildProperties, includes, - onlyUpdateCompilationDatabase, - compilationDatabase, - jobs, - builderLogger, - progress, progressCB, + sketchSrcPath, sketchSrcPath, b.buildProperties, includes, + b.onlyUpdateCompilationDatabase, + b.compilationDatabase, + b.jobs, + b.builderLogger, + b.Progress, ) if err != nil { - return nil, errors.WithStack(err) + return errors.WithStack(err) } sketchObjectFiles.AddAll(srcObjectFiles) } - return sketchObjectFiles, nil + b.buildArtifacts.sketchObjectFiles = sketchObjectFiles + return nil +} + +// MergeSketchWithBootloader fixdoc +func (b *Builder) MergeSketchWithBootloader() error { + if b.onlyUpdateCompilationDatabase { + return nil + } + + if !b.buildProperties.ContainsKey("bootloader.noblink") && !b.buildProperties.ContainsKey("bootloader.file") { + return nil + } + + sketchFileName := b.sketch.MainFile.Base() + sketchInBuildPath := b.buildPath.Join(sketchFileName + ".hex") + sketchInSubfolder := b.buildPath.Join("sketch", sketchFileName+".hex") + + var builtSketchPath *paths.Path + if sketchInBuildPath.Exist() { + builtSketchPath = sketchInBuildPath + } else if sketchInSubfolder.Exist() { + builtSketchPath = sketchInSubfolder + } else { + return nil + } + + bootloader := "" + if bootloaderNoBlink, ok := b.buildProperties.GetOk("bootloader.noblink"); ok { + bootloader = bootloaderNoBlink + } else { + bootloader = b.buildProperties.Get("bootloader.file") + } + bootloader = b.buildProperties.ExpandPropsInString(bootloader) + + bootloaderPath := b.buildProperties.GetPath("runtime.platform.path").Join("bootloaders", bootloader) + if bootloaderPath.NotExist() { + if b.logger.Verbose() { + b.logger.Warn(tr("Bootloader file specified but missing: %[1]s", bootloaderPath)) + } + return nil + } + + mergedSketchPath := builtSketchPath.Parent().Join(sketchFileName + ".with_bootloader.hex") + + // Ignore merger errors for the first iteration + maximumBinSize := 16000000 + if uploadMaxSize, ok := b.buildProperties.GetOk("upload.maximum_size"); ok { + maximumBinSize, _ = strconv.Atoi(uploadMaxSize) + maximumBinSize *= 2 + } + err := merge(builtSketchPath, bootloaderPath, mergedSketchPath, maximumBinSize) + if err != nil && b.logger.Verbose() { + b.logger.Info(err.Error()) + } + + return nil +} + +func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximumBinSize int) error { + if bootloaderPath.Ext() == ".bin" { + bootloaderPath = paths.New(strings.TrimSuffix(bootloaderPath.String(), ".bin") + ".hex") + } + + memBoot := gohex.NewMemory() + if bootFile, err := bootloaderPath.Open(); err == nil { + defer bootFile.Close() + if err := memBoot.ParseIntelHex(bootFile); err != nil { + return errors.New(bootFile.Name() + " " + err.Error()) + } + } else { + return err + } + + memSketch := gohex.NewMemory() + if buildFile, err := builtSketchPath.Open(); err == nil { + defer buildFile.Close() + if err := memSketch.ParseIntelHex(buildFile); err != nil { + return errors.New(buildFile.Name() + " " + err.Error()) + } + } else { + return err + } + + memMerged := gohex.NewMemory() + initialAddress := uint32(math.MaxUint32) + lastAddress := uint32(0) + + for _, segment := range memBoot.GetDataSegments() { + if err := memMerged.AddBinary(segment.Address, segment.Data); err != nil { + continue + } + if segment.Address < initialAddress { + initialAddress = segment.Address + } + if segment.Address+uint32(len(segment.Data)) > lastAddress { + lastAddress = segment.Address + uint32(len(segment.Data)) + } + } + for _, segment := range memSketch.GetDataSegments() { + if err := memMerged.AddBinary(segment.Address, segment.Data); err != nil { + continue + } + if segment.Address < initialAddress { + initialAddress = segment.Address + } + if segment.Address+uint32(len(segment.Data)) > lastAddress { + lastAddress = segment.Address + uint32(len(segment.Data)) + } + } + + if mergeFile, err := mergedSketchPath.Create(); err == nil { + defer mergeFile.Close() + memMerged.DumpIntelHex(mergeFile, 16) + } else { + return err + } + + // Write out a .bin if the addresses doesn't go too far away from origin + // (and consequently produce a very large bin) + size := lastAddress - initialAddress + if size > uint32(maximumBinSize) { + return nil + } + mergedSketchPathBin := paths.New(strings.TrimSuffix(mergedSketchPath.String(), ".hex") + ".bin") + data := memMerged.ToBinary(initialAddress, size, 0xFF) + return mergedSketchPathBin.WriteFile(data) } diff --git a/arduino/builder/sketch_test.go b/arduino/builder/sketch_test.go index 6aaedaaa0fc..1ae684e12ed 100644 --- a/arduino/builder/sketch_test.go +++ b/arduino/builder/sketch_test.go @@ -48,7 +48,8 @@ func TestMergeSketchSources(t *testing.T) { } mergedSources := strings.ReplaceAll(string(mergedBytes), "%s", pathToGoldenSource) - b := NewBuilder(sk, nil, nil, false, nil, 0) + b := Builder{sketch: sk} + offset, source, err := b.sketchMergeSources(nil) require.Nil(t, err) require.Equal(t, 2, offset) @@ -61,7 +62,8 @@ func TestMergeSketchSourcesArduinoIncluded(t *testing.T) { require.NotNil(t, sk) // ensure not to include Arduino.h when it's already there - b := NewBuilder(sk, nil, nil, false, nil, 0) + b := Builder{sketch: sk} + _, source, err := b.sketchMergeSources(nil) require.Nil(t, err) require.Equal(t, 1, strings.Count(source, "")) @@ -76,11 +78,12 @@ func TestCopyAdditionalFiles(t *testing.T) { sk1, err := sketch.New(paths.New("testdata", t.Name())) require.Nil(t, err) require.Equal(t, sk1.AdditionalFiles.Len(), 1) - b1 := NewBuilder(sk1, nil, nil, false, nil, 0) + + b := Builder{sketch: sk1} // copy the sketch over, create a fake main file we don't care about it // but we need it for `SketchLoad` to succeed later - err = b1.sketchCopyAdditionalFiles(tmp, nil) + err = b.sketchCopyAdditionalFiles(tmp, nil) require.Nil(t, err) fakeIno := tmp.Join(fmt.Sprintf("%s.ino", tmp.Base())) require.Nil(t, fakeIno.WriteFile([]byte{})) @@ -95,7 +98,7 @@ func TestCopyAdditionalFiles(t *testing.T) { require.Nil(t, err) // copy again - err = b1.sketchCopyAdditionalFiles(tmp, nil) + err = b.sketchCopyAdditionalFiles(tmp, nil) require.Nil(t, err) // verify file hasn't changed diff --git a/arduino/builder/utils/utils.go b/arduino/builder/utils/utils.go index ea3f80c5326..f0ae458512a 100644 --- a/arduino/builder/utils/utils.go +++ b/arduino/builder/utils/utils.go @@ -33,7 +33,6 @@ import ( "github.com/arduino/arduino-cli/executils" "github.com/arduino/arduino-cli/i18n" f "github.com/arduino/arduino-cli/internal/algorithms" - rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" "github.com/arduino/go-paths-helper" "github.com/arduino/go-properties-orderedmap" "github.com/pkg/errors" @@ -358,7 +357,7 @@ func CompileFiles( compilationDatabase *compilation.Database, jobs int, builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, + progress *progress.Struct, ) (paths.PathList, error) { return compileFiles( onlyUpdateCompilationDatabase, @@ -368,7 +367,7 @@ func CompileFiles( false, buildPath, buildProperties, includes, builderLogger, - progress, progressCB, + progress, ) } @@ -381,7 +380,7 @@ func CompileFilesRecursive( compilationDatabase *compilation.Database, jobs int, builderLogger *logger.BuilderLogger, - progress *progress.Struct, progressCB rpc.TaskProgressCB, + progress *progress.Struct, ) (paths.PathList, error) { return compileFiles( onlyUpdateCompilationDatabase, @@ -391,7 +390,7 @@ func CompileFilesRecursive( true, buildPath, buildProperties, includes, builderLogger, - progress, progressCB, + progress, ) } @@ -406,7 +405,6 @@ func compileFiles( includes []string, builderLogger *logger.BuilderLogger, progress *progress.Struct, - progressCB rpc.TaskProgressCB, ) (paths.PathList, error) { validExtensions := []string{} for ext := range globals.SourceFilesValidExtensions { @@ -483,13 +481,7 @@ func compileFiles( queue <- source progress.CompleteStep() - // PushProgress - if progressCB != nil { - progressCB(&rpc.TaskProgress{ - Percent: progress.Progress, - Completed: progress.Progress >= 100.0, - }) - } + progress.PushProgress() } close(queue) wg.Wait() diff --git a/arduino/builder/utils/utils_test.go b/arduino/builder/utils/utils_test.go index 3dd4c1a2142..1c31160f5d0 100644 --- a/arduino/builder/utils/utils_test.go +++ b/arduino/builder/utils/utils_test.go @@ -16,8 +16,11 @@ package utils import ( + "os" "testing" + "time" + "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" ) @@ -39,3 +42,133 @@ func TestPrintableCommand(t *testing.T) { result := printableCommand(parts) require.Equal(t, correct, result) } + +func tempFile(t *testing.T, prefix string) *paths.Path { + file, err := os.CreateTemp("", prefix) + file.Close() + require.NoError(t, err) + return paths.New(file.Name()) +} + +func TestObjFileIsUpToDateObjMissing(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + upToDate, err := ObjFileIsUpToDate(sourceFile, nil, nil) + require.NoError(t, err) + require.False(t, upToDate) +} + +func TestObjFileIsUpToDateDepMissing(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, nil) + require.NoError(t, err) + require.False(t, upToDate) +} + +func TestObjFileIsUpToDateObjOlder(t *testing.T) { + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + depFile := tempFile(t, "dep") + defer depFile.RemoveAll() + + time.Sleep(time.Second) + + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile) + require.NoError(t, err) + require.False(t, upToDate) +} + +func TestObjFileIsUpToDateObjNewer(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + time.Sleep(time.Second) + + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + depFile := tempFile(t, "dep") + defer depFile.RemoveAll() + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile) + require.NoError(t, err) + require.True(t, upToDate) +} + +func TestObjFileIsUpToDateDepIsNewer(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + time.Sleep(time.Second) + + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + depFile := tempFile(t, "dep") + defer depFile.RemoveAll() + + time.Sleep(time.Second) + + headerFile := tempFile(t, "header") + defer headerFile.RemoveAll() + + data := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() + depFile.WriteFile([]byte(data)) + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile) + require.NoError(t, err) + require.False(t, upToDate) +} + +func TestObjFileIsUpToDateDepIsOlder(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + headerFile := tempFile(t, "header") + defer headerFile.RemoveAll() + + time.Sleep(time.Second) + + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + depFile := tempFile(t, "dep") + defer depFile.RemoveAll() + + res := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() + depFile.WriteFile([]byte(res)) + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile) + require.NoError(t, err) + require.True(t, upToDate) +} + +func TestObjFileIsUpToDateDepIsWrong(t *testing.T) { + sourceFile := tempFile(t, "source") + defer sourceFile.RemoveAll() + + time.Sleep(time.Second) + + objFile := tempFile(t, "obj") + defer objFile.RemoveAll() + depFile := tempFile(t, "dep") + defer depFile.RemoveAll() + + time.Sleep(time.Second) + + headerFile := tempFile(t, "header") + defer headerFile.RemoveAll() + + res := sourceFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() + depFile.WriteFile([]byte(res)) + + upToDate, err := ObjFileIsUpToDate(sourceFile, objFile, depFile) + require.NoError(t, err) + require.False(t, upToDate) +} diff --git a/arduino/cores/packagemanager/install_uninstall.go b/arduino/cores/packagemanager/install_uninstall.go index 73a75c7b00d..fb34d3971c9 100644 --- a/arduino/cores/packagemanager/install_uninstall.go +++ b/arduino/cores/packagemanager/install_uninstall.go @@ -38,6 +38,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades( downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB, skipPostInstall bool, + skipPreUninstall bool, ) (*cores.PlatformRelease, error) { if platformRef.PlatformVersion != nil { return nil, &arduino.InvalidArgumentError{Message: tr("Upgrade doesn't accept parameters with version")} @@ -62,7 +63,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades( if err != nil { return nil, &arduino.PlatformNotFoundError{Platform: platformRef.String()} } - if err := pme.DownloadAndInstallPlatformAndTools(platformRelease, tools, downloadCB, taskCB, skipPostInstall); err != nil { + if err := pme.DownloadAndInstallPlatformAndTools(platformRelease, tools, downloadCB, taskCB, skipPostInstall, skipPreUninstall); err != nil { return nil, err } @@ -75,7 +76,7 @@ func (pme *Explorer) DownloadAndInstallPlatformUpgrades( func (pme *Explorer) DownloadAndInstallPlatformAndTools( platformRelease *cores.PlatformRelease, requiredTools []*cores.ToolRelease, downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB, - skipPostInstall bool) error { + skipPostInstall bool, skipPreUninstall bool) error { log := pme.log.WithField("platform", platformRelease) // Prerequisite checks before install @@ -142,7 +143,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools( // If upgrading remove previous release if installed != nil { - uninstallErr := pme.UninstallPlatform(installed, taskCB) + uninstallErr := pme.UninstallPlatform(installed, taskCB, skipPreUninstall) // In case of error try to rollback if uninstallErr != nil { @@ -150,7 +151,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools( taskCB(&rpc.TaskProgress{Message: tr("Error upgrading platform: %s", uninstallErr)}) // Rollback - if err := pme.UninstallPlatform(platformRelease, taskCB); err != nil { + if err := pme.UninstallPlatform(platformRelease, taskCB, skipPreUninstall); err != nil { log.WithError(err).Error("Error rolling-back changes.") taskCB(&rpc.TaskProgress{Message: tr("Error rolling-back changes: %s", err)}) } @@ -162,7 +163,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools( for _, tool := range installedTools { taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s, tool is no more required", tool)}) if !pme.IsToolRequired(tool) { - pme.UninstallTool(tool, taskCB) + pme.UninstallTool(tool, taskCB, skipPreUninstall) } } @@ -175,7 +176,7 @@ func (pme *Explorer) DownloadAndInstallPlatformAndTools( if !platformRelease.IsInstalled() { return errors.New(tr("platform not installed")) } - stdout, stderr, err := pme.RunPostInstallScript(platformRelease.InstallDir) + stdout, stderr, err := pme.RunPreOrPostScript(platformRelease.InstallDir, "post_install") skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stdout), Completed: true}) skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stderr), Completed: true}) if err != nil { @@ -229,16 +230,16 @@ func (pme *Explorer) cacheInstalledJSON(platformRelease *cores.PlatformRelease) return nil } -// RunPostInstallScript runs the post_install.sh (or post_install.bat) script for the -// specified platformRelease or toolRelease. -func (pme *Explorer) RunPostInstallScript(installDir *paths.Path) ([]byte, []byte, error) { - postInstallFilename := "post_install.sh" +// RunPreOrPostScript runs either the post_install.sh (or post_install.bat) or the pre_uninstall.sh (or pre_uninstall.bat) +// script for the specified platformRelease or toolRelease. +func (pme *Explorer) RunPreOrPostScript(installDir *paths.Path, prefix string) ([]byte, []byte, error) { + scriptFilename := prefix + ".sh" if runtime.GOOS == "windows" { - postInstallFilename = "post_install.bat" + scriptFilename = prefix + ".bat" } - postInstall := installDir.Join(postInstallFilename) - if postInstall.Exist() && postInstall.IsNotDir() { - cmd, err := executils.NewProcessFromPath(pme.GetEnvVarsForSpawnedProcess(), postInstall) + script := installDir.Join(scriptFilename) + if script.Exist() && script.IsNotDir() { + cmd, err := executils.NewProcessFromPath(pme.GetEnvVarsForSpawnedProcess(), script) if err != nil { return []byte{}, []byte{}, err } @@ -270,7 +271,7 @@ func (pme *Explorer) IsManagedPlatformRelease(platformRelease *cores.PlatformRel } // UninstallPlatform remove a PlatformRelease. -func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, taskCB rpc.TaskProgressCB) error { +func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, taskCB rpc.TaskProgressCB, skipPreUninstall bool) error { log := pme.log.WithField("platform", platformRelease) log.Info("Uninstalling platform") @@ -289,6 +290,20 @@ func (pme *Explorer) UninstallPlatform(platformRelease *cores.PlatformRelease, t return &arduino.FailedUninstallError{Message: err.Error()} } + if !skipPreUninstall { + log.Info("Running pre_uninstall script") + taskCB(&rpc.TaskProgress{Message: tr("Running pre_uninstall script.")}) + stdout, stderr, err := pme.RunPreOrPostScript(platformRelease.InstallDir, "pre_uninstall") + skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stdout), Completed: true}) + skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stderr), Completed: true}) + if err != nil { + taskCB(&rpc.TaskProgress{Message: tr("WARNING cannot run pre_uninstall script: %s", err), Completed: true}) + } + } else { + log.Info("Skipping pre_uninstall script.") + taskCB(&rpc.TaskProgress{Message: tr("Skipping pre_uninstall script.")}) + } + if err := platformRelease.InstallDir.RemoveAll(); err != nil { err = fmt.Errorf(tr("removing platform files: %s"), err) log.WithError(err).Error("Error uninstalling") @@ -339,7 +354,7 @@ func (pme *Explorer) InstallTool(toolRelease *cores.ToolRelease, taskCB rpc.Task if !skipPostInstall { log.Info("Running tool post_install script") taskCB(&rpc.TaskProgress{Message: tr("Configuring tool.")}) - stdout, stderr, err := pme.RunPostInstallScript(toolRelease.InstallDir) + stdout, stderr, err := pme.RunPreOrPostScript(toolRelease.InstallDir, "post_install") skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stdout)}) skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stderr)}) if err != nil { @@ -373,7 +388,7 @@ func (pme *Explorer) IsManagedToolRelease(toolRelease *cores.ToolRelease) bool { } // UninstallTool remove a ToolRelease. -func (pme *Explorer) UninstallTool(toolRelease *cores.ToolRelease, taskCB rpc.TaskProgressCB) error { +func (pme *Explorer) UninstallTool(toolRelease *cores.ToolRelease, taskCB rpc.TaskProgressCB, skipPreUninstall bool) error { log := pme.log.WithField("Tool", toolRelease) log.Info("Uninstalling tool") @@ -388,6 +403,20 @@ func (pme *Explorer) UninstallTool(toolRelease *cores.ToolRelease, taskCB rpc.Ta return err } + if !skipPreUninstall { + log.Info("Running pre_uninstall script") + taskCB(&rpc.TaskProgress{Message: tr("Running pre_uninstall script.")}) + stdout, stderr, err := pme.RunPreOrPostScript(toolRelease.InstallDir, "pre_uninstall") + skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stdout), Completed: true}) + skipEmptyMessageTaskProgressCB(taskCB)(&rpc.TaskProgress{Message: string(stderr), Completed: true}) + if err != nil { + taskCB(&rpc.TaskProgress{Message: tr("WARNING cannot run pre_uninstall script: %s", err), Completed: true}) + } + } else { + log.Info("Skipping pre_uninstall script.") + taskCB(&rpc.TaskProgress{Message: tr("Skipping pre_uninstall script.")}) + } + if err := toolRelease.InstallDir.RemoveAll(); err != nil { err = &arduino.FailedUninstallError{Message: err.Error()} log.WithError(err).Error("Error uninstalling") diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 12a25c4c50f..fc5aa738b3c 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -681,7 +681,7 @@ func (pme *Explorer) FindToolsRequiredFromPlatformRelease(platform *cores.Platfo requiredTools := []*cores.ToolRelease{} platform.ToolDependencies.Sort() for _, toolDep := range platform.ToolDependencies { - pme.log.WithField("tool", toolDep).Infof("Required tool") + pme.log.WithField("tool", toolDep).Debugf("Required tool") tool := pme.FindToolDependency(toolDep) if tool == nil { return nil, fmt.Errorf(tr("tool release not found: %s"), toolDep) @@ -787,7 +787,7 @@ func (pme *Explorer) FindToolsRequiredForBuild(platform, buildPlatform *cores.Pl // that the returned array is sorted by version. platform.ToolDependencies.Sort() for _, toolDep := range platform.ToolDependencies { - pme.log.WithField("tool", toolDep).Infof("Required tool") + pme.log.WithField("tool", toolDep).Debugf("Required tool") tool := pme.FindToolDependency(toolDep) if tool == nil { return nil, fmt.Errorf(tr("tool release not found: %s"), toolDep) diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 7a6d8994004..c02fa34eaa6 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -431,7 +431,7 @@ func TestBoardOrdering(t *testing.T) { } func TestFindToolsRequiredForBoard(t *testing.T) { - os.Setenv("ARDUINO_DATA_DIR", dataDir1.String()) + t.Setenv("ARDUINO_DATA_DIR", dataDir1.String()) configuration.Settings = configuration.Init("") pmb := NewBuilder( dataDir1, @@ -921,7 +921,7 @@ func TestVariantAndCoreSelection(t *testing.T) { }) } -func TestRunPostInstall(t *testing.T) { +func TestRunScript(t *testing.T) { pmb := NewBuilder(nil, nil, nil, nil, "test") pm := pmb.Build() pme, release := pm.NewExplorer() @@ -930,29 +930,49 @@ func TestRunPostInstall(t *testing.T) { // prepare dummy post install script dir := paths.New(t.TempDir()) - var scriptPath *paths.Path - var err error - if runtime.GOOS == "windows" { - scriptPath = dir.Join("post_install.bat") - - err = scriptPath.WriteFile([]byte( - `@echo off - echo sent in stdout - echo sent in stderr 1>&2`)) - } else { - scriptPath = dir.Join("post_install.sh") - err = scriptPath.WriteFile([]byte( - `#!/bin/sh - echo "sent in stdout" - echo "sent in stderr" 1>&2`)) + type Test struct { + testName string + scriptName string + } + + tests := []Test{ + { + testName: "PostInstallScript", + scriptName: "post_install", + }, + { + testName: "PreUninstallScript", + scriptName: "pre_uninstall", + }, } - require.NoError(t, err) - err = os.Chmod(scriptPath.String(), 0777) - require.NoError(t, err) - stdout, stderr, err := pme.RunPostInstallScript(dir) - require.NoError(t, err) - // `HasPrefix` because windows seem to add a trailing space at the end - require.Equal(t, "sent in stdout", strings.Trim(string(stdout), "\n\r ")) - require.Equal(t, "sent in stderr", strings.Trim(string(stderr), "\n\r ")) + for _, test := range tests { + t.Run(test.testName, func(t *testing.T) { + var scriptPath *paths.Path + var err error + if runtime.GOOS == "windows" { + scriptPath = dir.Join(test.scriptName + ".bat") + + err = scriptPath.WriteFile([]byte( + `@echo off + echo sent in stdout + echo sent in stderr 1>&2`)) + } else { + scriptPath = dir.Join(test.scriptName + ".sh") + err = scriptPath.WriteFile([]byte( + `#!/bin/sh + echo "sent in stdout" + echo "sent in stderr" 1>&2`)) + } + require.NoError(t, err) + err = os.Chmod(scriptPath.String(), 0777) + require.NoError(t, err) + stdout, stderr, err := pme.RunPreOrPostScript(dir, test.scriptName) + require.NoError(t, err) + + // `HasPrefix` because windows seem to add a trailing space at the end + require.Equal(t, "sent in stdout", strings.Trim(string(stdout), "\n\r ")) + require.Equal(t, "sent in stderr", strings.Trim(string(stderr), "\n\r ")) + }) + } } diff --git a/arduino/libraries/loader.go b/arduino/libraries/loader.go index 2a106a37ae2..f278c85d40f 100644 --- a/arduino/libraries/loader.go +++ b/arduino/libraries/loader.go @@ -103,7 +103,7 @@ func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library, version := strings.TrimSpace(libProperties.Get("version")) if v, err := semver.Parse(version); err != nil { // FIXME: do it in linter? - //fmt.Printf("invalid version %s for library in %s: %s", version, libraryDir, err) + // fmt.Printf("invalid version %s for library in %s: %s", version, libraryDir, err) } else { library.Version = v } diff --git a/commands/board/list_test.go b/commands/board/list_test.go index f99d942cf29..0f92e4c3896 100644 --- a/commands/board/list_test.go +++ b/commands/board/list_test.go @@ -19,7 +19,6 @@ import ( "fmt" "net/http" "net/http/httptest" - "os" "testing" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" @@ -110,7 +109,7 @@ func TestBoardDetectionViaAPIWithNonUSBPort(t *testing.T) { func TestBoardIdentifySorting(t *testing.T) { dataDir := paths.TempDir().Join("test", "data_dir") - os.Setenv("ARDUINO_DATA_DIR", dataDir.String()) + t.Setenv("ARDUINO_DATA_DIR", dataDir.String()) dataDir.MkdirAll() defer paths.TempDir().Join("test").RemoveAll() diff --git a/commands/compile/compile.go b/commands/compile/compile.go index 36bba118f92..5a21f50518c 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -17,16 +17,16 @@ package compile import ( "context" + "errors" "fmt" "io" "sort" "strings" "github.com/arduino/arduino-cli/arduino" - bldr "github.com/arduino/arduino-cli/arduino/builder" - "github.com/arduino/arduino-cli/arduino/builder/compilation" - "github.com/arduino/arduino-cli/arduino/builder/detector" + "github.com/arduino/arduino-cli/arduino/builder" "github.com/arduino/arduino-cli/arduino/builder/logger" + "github.com/arduino/arduino-cli/arduino/builder/progress" "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/libraries/librariesmanager" "github.com/arduino/arduino-cli/arduino/sketch" @@ -36,12 +36,8 @@ import ( "github.com/arduino/arduino-cli/configuration" "github.com/arduino/arduino-cli/i18n" "github.com/arduino/arduino-cli/internal/inventory" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" paths "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" "github.com/sirupsen/logrus" ) @@ -100,7 +96,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream if err != nil { return nil, &arduino.InvalidFQBNError{Cause: err} } - targetPackage, targetPlatform, targetBoard, boardBuildProperties, buildPlatform, err := pme.ResolveFQBN(fqbn) + _, targetPlatform, targetBoard, boardBuildProperties, buildPlatform, err := pme.ResolveFQBN(fqbn) if err != nil { if targetPlatform == nil { return nil, &arduino.PlatformNotFoundError{ @@ -171,119 +167,61 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream coreBuildCachePath = buildCachePath.Join("core") } - sketchBuilder := bldr.NewBuilder( - sk, - boardBuildProperties, - buildPath, - req.GetOptimizeForDebug(), - coreBuildCachePath, - int(req.GetJobs()), - ) - - buildProperties := sketchBuilder.GetBuildProperties() - - // Add user provided custom build properties - customBuildPropertiesArgs := append(req.GetBuildProperties(), "build.warn_data_percentage=75") - if customBuildProperties, err := properties.LoadFromSlice(req.GetBuildProperties()); err == nil { - buildProperties.Merge(customBuildProperties) - } else { - return nil, &arduino.InvalidArgumentError{Message: tr("Invalid build properties"), Cause: err} - } - - requiredTools, err := pme.FindToolsRequiredForBuild(targetPlatform, buildPlatform) - if err != nil { + if _, err := pme.FindToolsRequiredForBuild(targetPlatform, buildPlatform); err != nil { return nil, err } - builderCtx := &types.Context{} - builderCtx.Builder = sketchBuilder - builderCtx.PackageManager = pme - builderCtx.TargetBoard = targetBoard - builderCtx.TargetPlatform = targetPlatform - builderCtx.TargetPackage = targetPackage - builderCtx.ActualPlatform = buildPlatform - builderCtx.RequiredTools = requiredTools - builderCtx.BuildProperties = buildProperties - builderCtx.CustomBuildProperties = customBuildPropertiesArgs - builderCtx.FQBN = fqbn - builderCtx.BuildPath = buildPath - builderCtx.ProgressCB = progressCB - - // FIXME: This will be redundant when arduino-builder will be part of the cli - builderCtx.HardwareDirs = configuration.HardwareDirectories(configuration.Settings) - builderCtx.BuiltInToolsDirs = configuration.BuiltinToolsDirectories(configuration.Settings) - builderCtx.OtherLibrariesDirs = paths.NewPathList(req.GetLibraries()...) - builderCtx.OtherLibrariesDirs.Add(configuration.LibrariesDir(configuration.Settings)) - - builderCtx.CompilationDatabase = compilation.NewDatabase( - builderCtx.BuildPath.Join("compile_commands.json"), - ) - - builderCtx.BuiltInLibrariesDirs = configuration.IDEBuiltinLibrariesDir(configuration.Settings) - - builderCtx.Clean = req.GetClean() - builderCtx.OnlyUpdateCompilationDatabase = req.GetCreateCompilationDatabaseOnly() - builderCtx.SourceOverride = req.GetSourceOverride() - - builderLogger := logger.New(outStream, errStream, req.GetVerbose(), req.GetWarnings()) - builderCtx.BuilderLogger = builderLogger - - sketchBuildPath, err := buildPath.Join(constants.FOLDER_SKETCH).Abs() - if err != nil { - return r, &arduino.CompileFailedError{Message: err.Error()} - } - librariesBuildPath, err := buildPath.Join(constants.FOLDER_LIBRARIES).Abs() - if err != nil { - return r, &arduino.CompileFailedError{Message: err.Error()} - } - coreBuildPath, err := buildPath.Join(constants.FOLDER_CORE).Abs() - if err != nil { - return r, &arduino.CompileFailedError{Message: err.Error()} - } - builderCtx.SketchBuildPath = sketchBuildPath - builderCtx.LibrariesBuildPath = librariesBuildPath - builderCtx.CoreBuildPath = coreBuildPath - - if builderCtx.BuildPath.Canonical().EqualsTo(sk.FullPath.Canonical()) { - return r, &arduino.CompileFailedError{ - Message: tr("Sketch cannot be located in build path. Please specify a different build path"), - } - } + actualPlatform := buildPlatform + otherLibrariesDirs := paths.NewPathList(req.GetLibraries()...) + otherLibrariesDirs.Add(configuration.LibrariesDir(configuration.Settings)) var libsManager *librariesmanager.LibrariesManager if pme.GetProfile() != nil { libsManager = lm } - useCachedLibrariesResolution := req.GetSkipLibrariesDiscovery() - libraryDir := paths.NewPathList(req.Library...) - libsManager, libsResolver, verboseOut, err := detector.LibrariesLoader( - useCachedLibrariesResolution, libsManager, - builderCtx.BuiltInLibrariesDirs, libraryDir, builderCtx.OtherLibrariesDirs, - builderCtx.ActualPlatform, builderCtx.TargetPlatform, + sketchBuilder, err := builder.NewBuilder( + sk, + boardBuildProperties, + buildPath, + req.GetOptimizeForDebug(), + coreBuildCachePath, + int(req.GetJobs()), + req.GetBuildProperties(), + configuration.HardwareDirectories(configuration.Settings), + configuration.BuiltinToolsDirectories(configuration.Settings), + otherLibrariesDirs, + configuration.IDEBuiltinLibrariesDir(configuration.Settings), + fqbn, + req.GetClean(), + req.GetSourceOverride(), + req.GetCreateCompilationDatabaseOnly(), + targetPlatform, actualPlatform, + req.GetSkipLibrariesDiscovery(), + libsManager, + paths.NewPathList(req.Library...), + logger.New(outStream, errStream, req.GetVerbose(), req.GetWarnings()), + progress.New(progressCB), ) if err != nil { + if strings.Contains(err.Error(), "invalid build properties") { + return nil, &arduino.InvalidArgumentError{Message: tr("Invalid build properties"), Cause: err} + } + if errors.Is(err, builder.ErrSketchCannotBeLocatedInBuildPath) { + return r, &arduino.CompileFailedError{ + Message: tr("Sketch cannot be located in build path. Please specify a different build path"), + } + } return r, &arduino.CompileFailedError{Message: err.Error()} } - if builderLogger.Verbose() { - builderLogger.Warn(string(verboseOut)) - } - - builderCtx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector( - libsManager, libsResolver, - useCachedLibrariesResolution, - req.GetCreateCompilationDatabaseOnly(), - builderLogger, - ) - defer func() { - if p := builderCtx.BuildPath; p != nil { + if p := sketchBuilder.GetBuildPath(); p != nil { r.BuildPath = p.String() } }() defer func() { - buildProperties := builderCtx.BuildProperties + buildProperties := sketchBuilder.GetBuildProperties() if buildProperties == nil { return } @@ -304,7 +242,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream if req.GetPreprocess() { // Just output preprocessed source code and exit - compileErr := builder.RunPreprocess(builderCtx) + compileErr := sketchBuilder.Preprocess() if compileErr != nil { compileErr = &arduino.CompileFailedError{Message: compileErr.Error()} } @@ -313,7 +251,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream defer func() { importedLibs := []*rpc.Library{} - for _, lib := range builderCtx.SketchLibrariesDetector.ImportedLibraries() { + for _, lib := range sketchBuilder.SketchLibrariesDetector.ImportedLibraries() { rpcLib, err := lib.ToRPCLibrary() if err != nil { msg := tr("Error getting information for library %s", lib.Name) + ": " + err.Error() + "\n" @@ -327,7 +265,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream // if it's a regular build, go on... if req.GetVerbose() { - core := buildProperties.Get("build.core") + core := sketchBuilder.GetBuildProperties().Get("build.core") if core == "" { core = "arduino" } @@ -346,10 +284,10 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream if !targetBoard.Properties.ContainsKey("build.board") { outStream.Write([]byte( tr("Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s", - targetBoard.String(), "'build.board'", buildProperties.Get("build.board")) + "\n")) + targetBoard.String(), "'build.board'", sketchBuilder.GetBuildProperties().Get("build.board")) + "\n")) } - if err := builder.RunBuilder(builderCtx); err != nil { + if err := sketchBuilder.Build(); err != nil { return r, &arduino.CompileFailedError{Message: err.Error()} } @@ -362,12 +300,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream exportBinaries = false } if exportBinaries { - err := builder.RecipeByPrefixSuffixRunner( - "recipe.hooks.savehex.presavehex", ".pattern", false, - builderCtx.OnlyUpdateCompilationDatabase, - builderCtx.BuildProperties, - builderLogger, - ) + err := sketchBuilder.RunRecipe("recipe.hooks.savehex.presavehex", ".pattern", false) if err != nil { return r, err } @@ -377,7 +310,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream exportPath = paths.New(exportDir) } else { // Add FQBN (without configs part) to export path - fqbnSuffix := strings.Replace(fqbn.StringWithoutConfig(), ":", ".", -1) + fqbnSuffix := strings.ReplaceAll(fqbn.StringWithoutConfig(), ":", ".") exportPath = sk.FullPath.Join("build", fqbnSuffix) } logrus.WithField("path", exportPath).Trace("Saving sketch to export path.") @@ -386,11 +319,11 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream } // Copy all "sketch.ino.*" artifacts to the export directory - baseName, ok := builderCtx.BuildProperties.GetOk("build.project_name") // == "sketch.ino" + baseName, ok := sketchBuilder.GetBuildProperties().GetOk("build.project_name") // == "sketch.ino" if !ok { return r, &arduino.MissingPlatformPropertyError{Property: "build.project_name"} } - buildFiles, err := builderCtx.BuildPath.ReadDir() + buildFiles, err := sketchBuilder.GetBuildPath().ReadDir() if err != nil { return r, &arduino.PermissionDeniedError{Message: tr("Error reading build directory"), Cause: err} } @@ -406,17 +339,13 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream } } - err = builder.RecipeByPrefixSuffixRunner( - "recipe.hooks.savehex.postsavehex", ".pattern", false, - builderCtx.OnlyUpdateCompilationDatabase, - builderCtx.BuildProperties, builderLogger, - ) + err = sketchBuilder.RunRecipe("recipe.hooks.savehex.postsavehex", ".pattern", false) if err != nil { return r, err } } - r.ExecutableSectionsSize = builderCtx.ExecutableSectionsSize.ToRPCExecutableSectionSizeArray() + r.ExecutableSectionsSize = sketchBuilder.ExecutableSectionsSize().ToRPCExecutableSectionSizeArray() logrus.Tracef("Compile %s for %s successful", sk.Name, fqbnIn) diff --git a/commands/core/install.go b/commands/core/install.go index 7eb0383aa09..20525ec58ae 100644 --- a/commands/core/install.go +++ b/commands/core/install.go @@ -63,7 +63,7 @@ func PlatformInstall(ctx context.Context, req *rpc.PlatformInstallRequest, downl } } - if err := pme.DownloadAndInstallPlatformAndTools(platformRelease, tools, downloadCB, taskCB, req.GetSkipPostInstall()); err != nil { + if err := pme.DownloadAndInstallPlatformAndTools(platformRelease, tools, downloadCB, taskCB, req.GetSkipPostInstall(), req.GetSkipPreUninstall()); err != nil { return err } diff --git a/commands/core/search_test.go b/commands/core/search_test.go index 2bbb027abf5..b96c19912af 100644 --- a/commands/core/search_test.go +++ b/commands/core/search_test.go @@ -16,7 +16,6 @@ package core import ( - "os" "testing" "github.com/arduino/arduino-cli/configuration" @@ -30,8 +29,8 @@ func TestPlatformSearch(t *testing.T) { dataDir := paths.TempDir().Join("test", "data_dir") downloadDir := paths.TempDir().Join("test", "staging") - os.Setenv("ARDUINO_DATA_DIR", dataDir.String()) - os.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String()) + t.Setenv("ARDUINO_DATA_DIR", dataDir.String()) + t.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String()) dataDir.MkdirAll() downloadDir.MkdirAll() defer paths.TempDir().Join("test").RemoveAll() @@ -323,8 +322,8 @@ func TestPlatformSearch(t *testing.T) { func TestPlatformSearchSorting(t *testing.T) { dataDir := paths.TempDir().Join("test", "data_dir") downloadDir := paths.TempDir().Join("test", "staging") - os.Setenv("ARDUINO_DATA_DIR", dataDir.String()) - os.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String()) + t.Setenv("ARDUINO_DATA_DIR", dataDir.String()) + t.Setenv("ARDUINO_DOWNLOADS_DIR", downloadDir.String()) dataDir.MkdirAll() downloadDir.MkdirAll() defer paths.TempDir().Join("test").RemoveAll() diff --git a/commands/core/uninstall.go b/commands/core/uninstall.go index 165b1fc16ea..3bdbf85fbcc 100644 --- a/commands/core/uninstall.go +++ b/commands/core/uninstall.go @@ -64,14 +64,14 @@ func platformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, t return &arduino.NotFoundError{Message: tr("Can't find dependencies for platform %s", ref), Cause: err} } - if err := pme.UninstallPlatform(platform, taskCB); err != nil { + if err := pme.UninstallPlatform(platform, taskCB, req.GetSkipPreUninstall()); err != nil { return err } for _, tool := range tools { if !pme.IsToolRequired(tool) { taskCB(&rpc.TaskProgress{Name: tr("Uninstalling %s, tool is no more required", tool)}) - pme.UninstallTool(tool, taskCB) + pme.UninstallTool(tool, taskCB, req.GetSkipPreUninstall()) } } diff --git a/commands/core/upgrade.go b/commands/core/upgrade.go index ee8f4b0a3f7..49b81e68488 100644 --- a/commands/core/upgrade.go +++ b/commands/core/upgrade.go @@ -17,6 +17,7 @@ package core import ( "context" + "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino" @@ -39,7 +40,7 @@ func PlatformUpgrade(ctx context.Context, req *rpc.PlatformUpgradeRequest, downl Package: req.PlatformPackage, PlatformArchitecture: req.Architecture, } - platform, err := pme.DownloadAndInstallPlatformUpgrades(ref, downloadCB, taskCB, req.GetSkipPostInstall()) + platform, err := pme.DownloadAndInstallPlatformUpgrades(ref, downloadCB, taskCB, req.GetSkipPostInstall(), req.GetSkipPreUninstall()) if err != nil { return platform, err } diff --git a/commands/debug/debug_test.go b/commands/debug/debug_test.go index 5d9f91c8756..3304acded0b 100644 --- a/commands/debug/debug_test.go +++ b/commands/debug/debug_test.go @@ -66,7 +66,7 @@ func TestGetCommandLine(t *testing.T) { defer release() command, err := getCommandLine(req, pme) require.Nil(t, err) - commandToTest := strings.Join(command[:], " ") + commandToTest := strings.Join(command, " ") require.Equal(t, filepath.FromSlash(goldCommand), filepath.FromSlash(commandToTest)) // Other samd boards such as mkr1000 can be debugged using an external tool such as Atmel ICE connected to @@ -88,6 +88,6 @@ func TestGetCommandLine(t *testing.T) { command2, err := getCommandLine(req2, pme) assert.Nil(t, err) - commandToTest2 := strings.Join(command2[:], " ") + commandToTest2 := strings.Join(command2, " ") assert.Equal(t, filepath.FromSlash(goldCommand2), filepath.FromSlash(commandToTest2)) } diff --git a/configuration/configuration_schema_test.go b/configuration/configuration_schema_test.go index 5b153c9e09b..730189aa912 100644 --- a/configuration/configuration_schema_test.go +++ b/configuration/configuration_schema_test.go @@ -16,7 +16,7 @@ package configuration import ( - "io/ioutil" + "os" "testing" "github.com/stretchr/testify/require" @@ -24,7 +24,7 @@ import ( ) func TestConfigurationSchemaValidity(t *testing.T) { - schemaBytes, err := ioutil.ReadFile("configuration.schema.json") + schemaBytes, err := os.ReadFile("configuration.schema.json") require.NoError(t, err) jl := gojsonschema.NewBytesLoader(schemaBytes) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 84cd56b7585..50f55be7d00 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -70,7 +70,7 @@ submitting a PR: To build the Arduino CLI from sources you need the following tools to be available in your local environment: -- [Go][1] version 1.20 or later +- [Go][1] version 1.21 or later - [Taskfile][2] to help you run the most common tasks from the command line If you want to run integration tests you will also need: diff --git a/docs/platform-specification.md b/docs/platform-specification.md index 59031916c84..98921400f66 100644 --- a/docs/platform-specification.md +++ b/docs/platform-specification.md @@ -1559,3 +1559,21 @@ software is in use: - **Arduino CLI**: (since 0.12.0) runs the script for any installed platform when Arduino CLI is in "interactive" mode. This behavior [can be configured](https://arduino.github.io/arduino-cli/latest/commands/arduino-cli_core_install/#options) + +## Pre-uninstall script + +Before Boards Manager starts uninstalling a platform, it checks for the presence of a script named: + +- `pre_uninstall.bat` - when running on Windows +- `pre_uninstall.sh` - when running on any non-Windows operating system + +If present, the script is executed. + +This script may be used to configure the user's system for the removal of drivers, stopping background programs and +execute any action that should be performed before the platform files are removed. + +The circumstances under which the pre-uninstall script will run are different depending on which Arduino development +software is in use: + +- **Arduino CLI**: runs the script for any installed platform when Arduino CLI is in "interactive" mode. This behavior + [can be configured](https://arduino.github.io/arduino-cli/latest/commands/arduino-cli_core_install/#options) diff --git a/go.mod b/go.mod index 84073db5622..8f32def16e9 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/arduino/arduino-cli -go 1.20 +go 1.21 // We must use this fork until https://github.com/mailru/easyjson/pull/372 is merged replace github.com/mailru/easyjson => github.com/cmaglie/easyjson v0.8.1 @@ -15,9 +15,7 @@ require ( github.com/djherbis/buffer v1.1.0 github.com/djherbis/nio/v3 v3.0.1 github.com/fatih/color v1.7.0 - github.com/gofrs/uuid v3.2.0+incompatible - github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect - github.com/kr/text v0.2.0 // indirect + github.com/gofrs/uuid/v5 v5.0.0 github.com/leonelquinteros/gotext v1.4.0 github.com/mailru/easyjson v0.7.7 github.com/marcinbor85/gohex v0.0.0-20210308104911-55fb1c624d84 @@ -26,33 +24,27 @@ require ( github.com/pkg/errors v0.9.1 github.com/pmylund/sortutil v0.0.0-20120526081524-abeda66eb583 github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 + github.com/rogpeppe/go-internal v1.3.0 github.com/schollz/closestmatch v2.1.0+incompatible - github.com/sergi/go-diff v1.1.0 // indirect github.com/sirupsen/logrus v1.4.2 github.com/spf13/cobra v1.2.1 github.com/spf13/jwalterweatherman v1.1.0 github.com/spf13/viper v1.8.1 github.com/stretchr/testify v1.8.0 + github.com/xeipuuv/gojsonschema v1.2.0 go.bug.st/cleanup v1.0.0 go.bug.st/downloader/v2 v2.1.1 go.bug.st/relaxed-semver v0.10.2 go.bug.st/serial v1.3.2 + go.bug.st/testifyjson v1.1.1 golang.org/x/crypto v0.7.0 + golang.org/x/term v0.6.0 golang.org/x/text v0.8.0 + google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e google.golang.org/grpc v1.55.0 google.golang.org/protobuf v1.30.0 - gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect gopkg.in/src-d/go-git.v4 v4.13.1 gopkg.in/yaml.v2 v2.4.0 -) - -require ( - github.com/rogpeppe/go-internal v1.3.0 - github.com/xeipuuv/gojsonschema v1.2.0 - go.bug.st/testifyjson v1.1.1 - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 - golang.org/x/term v0.6.0 - google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e gopkg.in/yaml.v3 v3.0.1 ) @@ -71,6 +63,7 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 // indirect + github.com/juju/loggo v1.0.0 // indirect github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd // indirect github.com/klauspost/compress v1.15.13 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect @@ -82,6 +75,7 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.0.1 // indirect + github.com/sergi/go-diff v1.1.0 // indirect github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect github.com/spf13/afero v1.6.0 // indirect github.com/spf13/cast v1.3.1 // indirect @@ -95,6 +89,7 @@ require ( golang.org/x/net v0.8.0 // indirect golang.org/x/sys v0.6.0 // indirect gopkg.in/ini.v1 v1.62.0 // indirect + gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce // indirect gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index f33a5295fbb..b1616787e00 100644 --- a/go.sum +++ b/go.sum @@ -81,7 +81,6 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/creack/goselect v0.1.2 h1:2DNy14+JPjRBgPzAd1thbQp4BSIihxcBf0IXhQXDRa0= github.com/creack/goselect v0.1.2/go.mod h1:a/NhLweNvqIYMuxcMOuWY516Cimucms3DglDzQP3hKY= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -110,8 +109,8 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.2.0+incompatible h1:y12jRkkFxsd7GpqdSZ+/KCs/fJbqpEXSGd4+jfEaewE= -github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= +github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -158,6 +157,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -221,11 +221,13 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU= github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5 h1:rhqTjzJlm7EbkELJDKMTU7udov+Se0xZkWmugr6zGok= github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI= -github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/loggo v1.0.0 h1:Y6ZMQOGR9Aj3BGkiWx7HBbIx6zNwNkxhVNOHU2i1bl0= +github.com/juju/loggo v1.0.0/go.mod h1:NIXFioti1SmKAlKNuUwbMenNdef59IF52+ZzuOmHYkg= github.com/juju/testing v0.0.0-20200510222523-6c8c298c77a0 h1:+WWUkhnTjV6RNOxkcwk79qrjeyHEHvBzlneueBsatX4= +github.com/juju/testing v0.0.0-20200510222523-6c8c298c77a0/go.mod h1:hpGvhGHPVbNBraRLZEhoQwFLMrjK8PSlO4D3nDjKYXo= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -238,18 +240,20 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leonelquinteros/gotext v1.4.0 h1:2NHPCto5IoMXbrT0bldPrxj0qM5asOCwtb1aUQZ1tys= github.com/leonelquinteros/gotext v1.4.0/go.mod h1:yZGXREmoGTtBvZHNcc+Yfug49G/2spuF/i/Qlsvz1Us= +github.com/lunixbochs/vtclean v0.0.0-20160125035106-4fbf7632a2c6/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/marcinbor85/gohex v0.0.0-20210308104911-55fb1c624d84 h1:hyAgCuG5nqTMDeUD8KZs7HSPs6KprPgPP8QmGV8nyvk= github.com/marcinbor85/gohex v0.0.0-20210308104911-55fb1c624d84/go.mod h1:Pb6XcsXyropB9LNHhnqaknG/vEwYztLkQzVCHv8sQ3M= +github.com/mattn/go-colorable v0.0.6/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.0-20160806122752-66b8e73f3f5c/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= @@ -272,6 +276,7 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= @@ -398,8 +403,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -715,9 +718,11 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20160105164936-4f90aeace3a2/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= diff --git a/i18n/convert.go b/i18n/convert.go index 287b43f308a..7b6d2e8dbdf 100644 --- a/i18n/convert.go +++ b/i18n/convert.go @@ -34,11 +34,11 @@ func FromJavaToGoSyntax(s string) string { if err != nil { panic(err) } - s = strings.Replace(s, submatch[0], "%["+strconv.Itoa(idx+1)+"]v", -1) + s = strings.ReplaceAll(s, submatch[0], "%["+strconv.Itoa(idx+1)+"]v") } // Replace "''" => "'" - s = strings.Replace(s, "''", "'", -1) + s = strings.ReplaceAll(s, "''", "'") return s } diff --git a/i18n/data/ar.po b/i18n/data/ar.po index f3c85b4cf1e..84c2feda122 100644 --- a/i18n/data/ar.po +++ b/i18n/data/ar.po @@ -3,10 +3,11 @@ # CLI team , 2022 # Mark Asaad, 2022 # Osama Breman, 2023 +# طارق عبد الفتاح, 2023 # msgid "" msgstr "" -"Last-Translator: Osama Breman, 2023\n" +"Last-Translator: طارق عبد الفتاح, 2023\n" "Language-Team: Arabic (https://app.transifex.com/arduino-1/teams/108174/ar/)\n" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" @@ -15,7 +16,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s %[2]s النسخة : %[3]s commit : %[4]s التاريخ : %[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "الملف %[1]s اصبح غير مدعوما! راجع %[2]s للمزيد من المعلومات" @@ -27,7 +28,7 @@ msgstr "%[1]s غير صالح . جار اعادة بناء كل شيء" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s مطلوب و لكن %[2]s مثبت حاليا" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s التنسيق مفقود" @@ -51,7 +52,7 @@ msgstr "%[1]s, نسخة البوتوكول : %[2]d" msgid "%s already downloaded" msgstr "تم تنزيل %s مسبقا" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s و %s لا يمكن استخدامهما معا" @@ -160,7 +161,7 @@ msgstr "كل الانوية محدثة باخر اصدار مسبقا" msgid "Already installed %s" msgstr "%s مثبت مسبقا" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "البدائل ل %[1]s : %[2]s" @@ -168,7 +169,7 @@ msgstr "البدائل ل %[1]s : %[2]s" msgid "An error occurred adding prototypes" msgstr "حدث خطأ اثناء اضافة النماذج الاولية" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "حدث خطأ اثناء الكشف عن المكتبات" @@ -186,7 +187,7 @@ msgstr "المعمارية : %s" msgid "Archive already exists" msgstr "الارشيف موجود مسبقا" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "جار ارشفة built core (caching) في : %[1]s" @@ -275,7 +276,7 @@ msgstr "اسم اللوحة" msgid "Board version:" msgstr "نسخة اللوحة :" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "ملف محمل الإقلاع (Bootloader) تم تحدديده لكنه مفقود: %[1]s" @@ -326,11 +327,11 @@ msgstr "تعذر كتابة ملف التهيئة : %v" msgid "Can't write debug log: %s" msgstr "تعذر كتابة سجل مصحح الاخطاء : %s" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "تعذر انشاء مجلد لل \"build cache\"" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "تعذر انشاء مسار البناء" @@ -370,7 +371,7 @@ msgstr "تعذر تثبيت المنصة" msgid "Cannot install tool %s" msgstr "تعذر تثبيت الاداة %s" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "تعذر اجراء اعادة تشغيل المنفذ : %s" @@ -415,7 +416,7 @@ msgid "" "a change." msgstr "الامر يبقى قيد التشغيل و يطبع قائمة للوحات المتصلة عندما يوجد تغيير" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "المشروع المترجم لم يتم ايجاده في %s" @@ -423,19 +424,19 @@ msgstr "المشروع المترجم لم يتم ايجاده في %s" msgid "Compiles Arduino sketches." msgstr "يترجم مشاريع الاردوينو" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "يتم ترجمة النواة" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "يتم ترجمة المكتبات" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "يتم ترجمة المكتبة \"%[1]s\"" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "ترجمة الشيفرة البرمجية..." @@ -453,11 +454,11 @@ msgstr "تمت كتابة ملف التهيئة في : %s" msgid "Configuration options for %s" msgstr "اعدادات الضبط ل %s" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." -msgstr "" +msgstr "تكوين إعدادات منفذ الاتصال. التنسيق هو =[,=]" #: arduino/cores/packagemanager/install_uninstall.go:174 msgid "Configuring platform." @@ -471,7 +472,7 @@ msgstr "جار تهيئة الاداة" msgid "Connected" msgstr "متصل" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "متصل الى %s ! اضغط CTRL-C للخروج" @@ -487,11 +488,11 @@ msgstr "تعذر الاتصال بواسطة HTTP" msgid "Could not create index directory" msgstr "تعذر انشاء فهرس داخل المسار" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "تعذر القيام بـ deeply cache لــ core build : %[1]s" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "تعذر معرفة حجم البرنامج" @@ -519,7 +520,7 @@ msgstr "" "انشاء او تحديث ملف الضبط في مسار البيانات او في مسار مخصص مع اعدادات التهيئة" " الحالية" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -557,7 +558,7 @@ msgstr "تصحيح الاخطاء (Debugging) غير مدعوم للوحة %s" msgid "Debugging supported:" msgstr "تصحيح الاخطاء (Debugging) مدعوم :" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "إفتراضي" @@ -593,7 +594,7 @@ msgstr "تبعيات : %s" msgid "Description" msgstr "الوصف" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "الكشف عن المكتبات المستخدمة ..." @@ -712,7 +713,7 @@ msgid "Error adding file to sketch archive" msgstr "" "خطأ اثناء اضافة الملف لارشيف المشروع (Error adding file to sketch archive)" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "خطا اثناء ارشفة built core (caching) في %[1]s : %[2]s" @@ -729,11 +730,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "خطأ اثناء تنظيف الكاش : %v" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "تعذر تحويل المسار الى مطلق : %v" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "خطا اثناء نسخ ملف الخرج %s" @@ -741,7 +742,7 @@ msgstr "خطا اثناء نسخ ملف الخرج %s" msgid "Error creating instance: %v" msgstr "خطا اثناء انشاء النسخة %v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "خطا اثناء انشاء مسار الخرج" @@ -794,7 +795,7 @@ msgstr "خطا اثناء تنزيل الاداة %s" msgid "Error during Debug: %v" msgstr "خطا اثناء التصحيح : %v" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "خطا اثناء اكتشاف FBQN : %v" @@ -804,8 +805,8 @@ msgstr "خطا اثناء ترميز JSON الخاص بالخرج : %v" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "خطا اثناء الرفع : %v" @@ -813,7 +814,7 @@ msgstr "خطا اثناء الرفع : %v" msgid "Error during YAML encoding of the output: %v" msgstr "خطأ اثناء القيام بYAML econding للخرج : %v" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "خطأ اثناء بناء : %v" @@ -833,7 +834,7 @@ msgstr "خطا اثناء تطوير : %v" msgid "Error extracting %s" msgstr "خطأ اثناء استخراج %s" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "خطا اثناء البحث عن build artifacts" @@ -849,11 +850,11 @@ msgstr "خطا اثناء جلب المسار المطلق لارشيف المش msgid "Error getting board details: %v" msgstr "خطأ اثناء الحصول على معلومات اللوحة %v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "خطأ اثناء الحصول على المسار الحالي من اجل قاعدة بيانات الترجمة %s" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "خطأ اثناء الحصول على المعلومات للمكتبة %s" @@ -865,12 +866,12 @@ msgstr "خطا اثناء جلب بيانات المكتبة : %v" msgid "Error getting port metadata: %v" msgstr "خطأ اثناء جلب البيانات الوصفية (metadata) للمنفذ : %v" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" "خطأ اثناء الحصول على بيانات اعدادات المنفذ (port settings details) : %s" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "تعذر الحصول على مدخلات المستخدم" @@ -934,15 +935,15 @@ msgstr "خطأ اثناء فتح %s" msgid "Error opening debug logging file: %s" msgstr "تعذر فتح الملف الذي يحوي سجلات التصحيح (debug logging file) : %s" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "خطا اثناء فتح الكود المصدر الذي يتجاوز ملف البيانات : %v" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "تعذر تقطيع علامة show-properties-- : %v" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "خطا اثناء قراءة مسار البناء" @@ -987,7 +988,7 @@ msgstr "خطا اثناء البحث عن مكتبات : %v" msgid "Error searching for platforms: %v" msgstr "خطأ اثناء البحث عن المنصة : %v" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" "تعذر القيام بسلسلة قاعدة بيانات الترجمة (Error serializing compilation " @@ -1017,17 +1018,17 @@ msgstr "خطا اثناء تطوير المنصة : %s" msgid "Error verifying signature" msgstr "تعذر التحقق من التوقيع" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "تعذر العثور على المكتبات التي ضُمِّنَت (included) من قبل : %[1]s" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "خطأ اثناء تحديد حجم المشروع : %s" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "خطأ اثناء كتابة قاعدة بيانات الترجمة (compilation database) : %s" @@ -1035,7 +1036,7 @@ msgstr "خطأ اثناء كتابة قاعدة بيانات الترجمة (com msgid "Error: command description is not supported by %v" msgstr "خطأ : وصف الامر غير مدعوم من قبل %v" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "خطأ : كود مصدري خاطئ سيقوم بالكتابة فوق ملف البيانات : %v" @@ -1055,7 +1056,7 @@ msgstr "الامثلة : " msgid "Executable to debug" msgstr "الملف التنفيذي الذي سيتم تصحيحه (Executable to debug)" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "توقعت وجود المشروع المترجم في المسار %s . لكنني وجدت ملفا بدلا عن ذلك" @@ -1069,15 +1070,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "فشل محي الشريحة" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "فشل المبرمجة" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "فشل حرق محمل الاقلاع" @@ -1105,7 +1106,7 @@ msgstr "تعذر الاستماع على منفذ TCP : %[1]s . خطأ غير م msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "تعذر الاستماع على منفذ TCP : %s . العناوين قيد الاستخدام مسبقا" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "تعذر الرفع" @@ -1113,7 +1114,7 @@ msgstr "تعذر الرفع" msgid "File:" msgstr "الملف : " -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1144,12 +1145,8 @@ msgid "" msgstr "تخطي سكربت POST-install اجباريا (تستخدم اذا كان CLI يعمل بشكل متفاعل)" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" -"تم ايجاد منصة من اجل المرجع (refrence) \"%s\" :\n" -"%s " #: internal/cli/arguments/fqbn.go:37 msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" @@ -1180,7 +1177,7 @@ msgstr "يولد سكربت الاكمال" msgid "Generates completion scripts for various shells" msgstr "يولد سكربتات اكمال من اجل مختلف ال shells" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "يتم توليد النماذج الاولية للتوابع :" @@ -1188,7 +1185,7 @@ msgstr "يتم توليد النماذج الاولية للتوابع :" msgid "Global Flags:" msgstr "علامات عامة :" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1196,12 +1193,12 @@ msgstr "" "المتغيرات العامة تستخدم %[1]s بايت (%[3]s%%) من الرام ، تبقى %[4]s بايت " "للمتغيرات المحلية. الحجم الاقصى %[2]s بايت." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "المتغيرات العامة تستخدم %[1]s بايت من الذاكرة المتغيرة." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1277,7 +1274,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "يقوم بتثبيت مكتبة او اكثر تم تحديدها مسبقا على النظام" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "خطأ داخلي في الكاش (Internal error in cache)" @@ -1316,15 +1313,15 @@ msgstr "ارشيف غير صالح : الملف %{1}s غير موجود في ا msgid "Invalid argument passed: %v" msgstr "تم اعطاء وسيط غير صالح %v" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "خصائص البناء غير صالحة" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "data size regexp غير صالح : %s" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "eeprom size regexp غير صالح %s" @@ -1372,7 +1369,7 @@ msgstr "ملف تعريف غير صالح" msgid "Invalid recipe in platform.txt" msgstr "وصفة غير صالحة ضمن platform.txt" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "size regexp غير صالح : %s" @@ -1413,7 +1410,7 @@ msgstr "اسم المكتبة" msgid "Latest" msgstr "الأخير" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "المكتبة %[1]s تم تحديدها بانها precompiled" @@ -1439,7 +1436,7 @@ msgstr "تعذر ايجاد المكتبة %s" msgid "Library '%s' not found" msgstr "المكتبة '%s' غير موجودة" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1458,7 +1455,7 @@ msgstr "المكتبة مثبتة" msgid "License: %s" msgstr "رخصة" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "جار ربط كل شيء مع بعضه" @@ -1519,7 +1516,7 @@ msgstr "جار تحميل ملف الفهرس : %v" msgid "Location" msgstr "الموقع" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "ذاكرة منخفضة متبقية، مشاكل عدم إستقرار قد تحدث." @@ -1537,7 +1534,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "الرسائل بهذه المرحلة و ما فوق سيتم تسجيلها . المراحل الصالحة هي : %s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "'%[1]s' مفقود من المكتبة في %[2]s" @@ -1561,7 +1558,7 @@ msgstr "يوجد بروتوكول منفذ مفقود" msgid "Missing programmer" msgstr "المبرمج مفقود" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr " size regexp مفقود" @@ -1577,7 +1574,7 @@ msgstr "المراقب '%s' غير موجود" msgid "Monitor port settings:" msgstr "اعدادات منفذ المراقبة " -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "العثور على عدة مكتبات لـ\"%[1]s\"" @@ -1591,9 +1588,9 @@ msgstr "الاسم" msgid "Name: \"%s\"" msgstr "الاسم\"%s\"" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" -msgstr "" +msgstr "منفذ التحميل الجديد: %[1]s(%[2]s)" #: internal/cli/board/list.go:122 msgid "No boards found." @@ -1637,13 +1634,13 @@ msgstr "لا يوجد مكتبات او منصات قديمة" #: internal/cli/core/list.go:86 msgid "No platforms installed." -msgstr "" +msgstr "لا توجد منصات مثبتة" #: internal/cli/core/search.go:110 msgid "No platforms matching your search." msgstr "ﻻ يوجد منصات تطابق بحثك" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "تعذر ايجاد منفذ رفع , باستخدام %s كرجوع احتياطي fallback" @@ -1651,11 +1648,11 @@ msgstr "تعذر ايجاد منفذ رفع , باستخدام %s كرجوع ا msgid "No valid dependencies solution found" msgstr "تعذر ايجاد حل تبعيات صالح" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "الذاكرة غير كافية؛ راجع %[1]s لنصائح حول استخدامها بكفائة" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "غير مستخدم : %[1]s" @@ -1675,7 +1672,7 @@ msgstr "" "ازالة تفاصيل المكتبة في كل النسخ عدا اخر نسخة (يعطي اخراج json مضغوط بشكل " "اكبر)" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "فتح منفذ تواصل مع اللوحة" @@ -1763,7 +1760,7 @@ msgstr "موقع الحزمة على الويب" msgid "Paragraph: %s" msgstr "المقطع : %s" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "المسار" @@ -1795,7 +1792,7 @@ msgstr "" "المسار الذي يتم فيه حفظ الملفات التي تمت ترجمتها , اذا تم ازالته , سيتم " "انشاء مجلد داخل المسار المؤقت الافتراضي في نظام التشغيل" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "جار تفعيل 1200-bps touch reset على المنفذ التسلسلي %s" @@ -1807,7 +1804,7 @@ msgstr "المنصة %s مثبتة سابقا" msgid "Platform %s installed" msgstr "تم تثبيت المنصة: %s" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1831,7 +1828,7 @@ msgstr "المنصة '%s' غير موجودة" msgid "Platform ID" msgstr "Platform ID" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "id المنصة غير صحيح" @@ -1883,7 +1880,7 @@ msgstr "" msgid "Port" msgstr "منفذ" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "المنفذ %v مغلق" @@ -1891,8 +1888,7 @@ msgstr "المنفذ %v مغلق" msgid "Port monitor error" msgstr "خطا في مراقب المنفذ" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "تعذر ايجاد المكتبة التي تمت ترجمتها مسبقا في \"%[1]s\"" @@ -1968,7 +1964,7 @@ msgstr "الادوات المطلوبة :" msgid "Run as a daemon on port: %s" msgstr "التشغيل كناطر على المنفذ : %s" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "التشغيل ضمن الوضع الصامت , يظهر فقط شاشة الادخال و الاخراج " @@ -1978,7 +1974,7 @@ msgid "" "once." msgstr "يعمل كناطر من اجل تهيئة النوى و المكتبات و يتم مرة واحدة" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "جار تشغيل البناء العادي من النواة" @@ -2018,6 +2014,10 @@ msgstr "الجملة : %s" msgid "Server responded with: %s" msgstr "استجابة السيرفر : %s" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "تحديد قيمة للاعداد" @@ -2034,7 +2034,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "تحديد مكان حفظ ملف الضبط" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "اعداد" @@ -2046,7 +2046,7 @@ msgstr "مفتاح الاعداد غير موجود" msgid "Show all available core versions." msgstr "اظهار كل النوى المتوفرة" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "اظهار كل اعدادات منفذ التواصل" @@ -2136,7 +2136,7 @@ msgstr "عرض رقم نسخة Arduino CLI" msgid "Size (bytes):" msgstr "الحجم (بالبايت) :" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2150,13 +2150,13 @@ msgstr "تم انشاء المشروع في : %s" msgid "Sketch profile to use" msgstr "ملف التعريف للمشروع الذي سيتم استخدامه" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "" "الشيفرة البرمجية كبير جدا; راجع %[1]s\n" "لنصائح لاختصارها." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2171,23 +2171,23 @@ msgid "" msgstr "" "المشاريع ذوي اللاحقة pde. في حالة تقاعد , الرجاء تغيير لاحقة الملف الى ino." -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "تخطي ربط البرنامج النهائي القابل للتنفيذ" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "جار تخطي 1200bps touch reset لانه لم يتم تحديد منفذ تسلسلي" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "جار تخطي انشاء الارشيف لـ : %[1]s" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "جار تخطي ترجمة : %[1]s" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "جار تخطي الكشف عن توابع المكتبة %[1]s التي تمت ترجمتها مسبقا" @@ -2244,7 +2244,7 @@ msgstr "" "المفتاح '%[1]v' ليس قائمة من الاشياء , لا يمكن ازالته \n" "ربما يمكنك استخدام %[2]s" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "يوجد عدة نسخ مثبتة من المكتبة %s" @@ -2276,7 +2276,7 @@ msgstr "" "المسار الى المجلد للبحث عن مفتاح خاص لتوقيع و تشفير الملف الثنائي , يتم " "استخدامه من قبل المنصات التي تدعم ذلك فقط" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "المنصة لا تدعم '%[1]s' من اجل المكتبات الغير مترجمة" @@ -2328,7 +2328,7 @@ msgstr "بادئة مجموعة الادوات " msgid "Toolchain type" msgstr "نوع مجموعة الادوات" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "جرب تشغيل %s" @@ -2348,7 +2348,7 @@ msgstr "الأنواع: %s" msgid "URL:" msgstr "URL:" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2455,15 +2455,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "يرفع مشاريع الاردوينو , و لا يقوم بترجمة المشروع قبل الرفع مطلقا !" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "عنوان منفذ الرفع : مثال , COM3 او /dev/ttyACM2" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "تم ايجاد منفذ الرفع في %s" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "بروتوكول منفذ الرفع , مثال : serial \"تسلسلي\"" @@ -2479,7 +2479,7 @@ msgstr "يرفع محمل الاقلاع على اللوحة باستخدام م msgid "Upload the bootloader." msgstr "يرفع محمل الاقلاع" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2501,27 +2501,27 @@ msgstr "الاستخدام" msgid "Use %s for more information about a command." msgstr "استخدم %s من اجل المزيد من المعلومات حول امر معين" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "المكتبة المستخدمة" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "المنصة المستخدمة" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "مستخدم : %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "يتم استخدام اللوحة '%[1]s' من منصة داخل المجلد %[2]s" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "يتم استخدام توابع المكتبة التي تم تخزينها مؤقتا من اجل الملف : %[1]s" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "يتم استخدام النواة '%[1]s' من منصة داخل الملف %[2]s " @@ -2533,17 +2533,15 @@ msgstr "استخدام المكتبة %[1]s الإصدار %[2]s في المجل msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "استخدام المكتبة %[1]s في المجلد: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "يتم استخدام النواة التي تم ترجمتها مسبقا %[1]s" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "يتم استخدام المكتبة التي تم ترجمتها مسبقا %[1]s" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "استخدام الملف المترجم سابقا: %[1]s" @@ -2555,7 +2553,7 @@ msgstr "النسخة" msgid "VERSION_NUMBER" msgstr "رقم النسخة" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "القيم" @@ -2564,7 +2562,7 @@ msgstr "القيم" msgid "Verify uploaded binary after the upload." msgstr "التاكد من الملف الثنائي الذي سيتم رفعه قبل الرفع" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "النسخة" @@ -2581,7 +2579,7 @@ msgstr "تحذير , تعذرت تهيئة المنصة %s" msgid "WARNING cannot configure tool: %s" msgstr "تحذير , تعذر تهيئة الاداة %s" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "تحذير : المشروع سيترجم باستخدام مكتبة خاصة او اكثر . " @@ -2593,11 +2591,11 @@ msgstr "" "تحذير: المكتبة %[1]s تعمل على معمارية %[2]s وقد لا تتوافق مع لوحتك الحالية " "التي تعمل على معمارية %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "يتم انتظار منفذ الرفع (upload port) ... " -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2643,11 +2641,11 @@ msgstr "الارشيف غير صالح : لا يوجد اي ملفات داخل msgid "archivePath" msgstr "مسار الارشيف" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "نمط arduino-preprocessor مفقود" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "الكشف التلقائي عن بقايا البناء : %s" @@ -2655,7 +2653,7 @@ msgstr "الكشف التلقائي عن بقايا البناء : %s" msgid "available only in text format" msgstr "متوفر في الوضع النصي حصرا" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "تعذر ايجاد الملف الثنائي (Binary file) داخل %s" @@ -2701,11 +2699,11 @@ msgstr "تعذر استعادة standard error stream %s" msgid "can't retrieve standard output stream: %s" msgstr "تعذر استعادة standard error stream %s" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "المرشحون" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "تعذر تشغيل اداة الرفع : %s" @@ -2751,7 +2749,7 @@ msgstr "جار حوسبة التلبيد \"hash\" : %s" msgid "copying library to destination directory:" msgstr "جار نسخ المكتبة الى مجلد الوجهة" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "تعذر ايجاد ادوات صالحة للبناء (valid build artifact)" @@ -2768,7 +2766,7 @@ msgstr "تعذر ازالة المكتبة القديمة" msgid "could not update sketch project file" msgstr "تعذر تحديث ملف المشروع" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "جار انشاء ملف تخزن مؤقت للنواة : %s" @@ -2780,7 +2778,7 @@ msgstr "جار انشاء installed.json داخل %[1]s : %[2]s" msgid "creating temp dir for extraction: %s" msgstr "جار انشاء مسار مؤقت للاستخراج : %s" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" "قسم البيانات تخطى الحجم المتوفر في اللوحة (data section exceeds available " @@ -2790,7 +2788,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "التبعية (dependency) '%s' غير متوفرة" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "الوجهة موجودة مسبقا" @@ -3095,7 +3093,7 @@ msgstr "قيمة الضبط الخاصة بالمنفذ غير صالحة : %s:% msgid "invalid port configuration: %s" msgstr "اعدادات الضبط للمنفذ غير صالحة" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "وصفة غير صالحة %[1]s : %[2]s" @@ -3240,7 +3238,7 @@ msgstr "تعذر ايجاد اصدار المراقب : %s" msgid "moving extracted archive to destination dir: %s" msgstr "جار نقل الارشيف الذي تم استخراجه الى مجلد الوجهة : %s" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "تم ايجاد اكثر من build artifacts : '%[1]s' و '%[2]s'" @@ -3264,7 +3262,7 @@ msgstr "لم يتم تحديد اي برنامج قابل للتنفيذ (execut msgid "no instance specified" msgstr "لا يوجد نسخ محددة" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "لم يتم تحديد مجلد/ملف المشروع او البناء " @@ -3276,7 +3274,7 @@ msgstr "لا يوجد ملف او مجلد مشابه" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "لا يوجد مجلد اصلي في الارشيف , تم ايجاد %[1]s و %[2]s" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "لم يتم تحديد اي منفذ للرفع" @@ -3352,7 +3350,7 @@ msgstr "المنصة %s غير مثبتة" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "المنصة غير مثبتة" @@ -3368,7 +3366,7 @@ msgstr "تم اضافة الكشف عن الاشياء القابلة للوصل msgid "port" msgstr "المنفذ" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "تعذر ايجاد المنفذ : %[1]s %[2]s" @@ -3403,7 +3401,7 @@ msgstr "جار قراءة المجلد %s" msgid "reading directory %s content: %w" msgstr "جار قراءة المجلد %w الذي يحوي %s" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "جار قراءة الملف %[1]s : %[2]s" @@ -3431,7 +3429,7 @@ msgstr "جار قراءة library_index.json : %s" msgid "reading package root dir: %s" msgstr "جار قراءة المجلد الاصلي للحزمة : %s" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "تعذر ايجاد الوصفة '%s'" @@ -3501,7 +3499,7 @@ msgstr "مسار المشروع غير صالح" msgid "sketchPath" msgstr "مسار المشروع" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "المصدر \"source \" ليس مجلدا" @@ -3525,12 +3523,12 @@ msgstr "جار فحص ما اذا كان الارشيف تم تخزينه مؤق msgid "testing local archive integrity: %s" msgstr "جار فحص تكامل ملف الارشيف المحلي : %s" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "القسم النصي تخطى المساحة المتوفرة في اللوحة" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "ربما قاعدة بيانات الترجمة ناقصة او غير دقيقة" @@ -3582,19 +3580,15 @@ msgid "" msgstr "" "يجب ان يكون هناك اصدارين من نفس المكتبة %[1]s , هذا %[2]s و هذا %[3]s" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "تعذر حوسبة المسار النسبي للمشروع من اجل العنصر" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "تعذر انشاء مجلد لحفظ المشروع" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "تعذر انشاء مجلد لحفظ ملفات المشروع" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "تعذر انشاء مجلد يحوي العنصر" @@ -3602,19 +3596,15 @@ msgstr "تعذر انشاء مجلد يحوي العنصر" msgid "unable to marshal config to YAML: %v" msgstr " %v : unable to marshal config to YAML" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "تعذر قراءة محتويات العنصر الهدف" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "تعذر قراءة محتويات العنصر الاصل" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "تعذر حفظ المشروع على القرص" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "تعذر الكتابة الى المجلد الوجهة" @@ -3642,7 +3632,7 @@ msgstr "جار تحديث arduino:samd لاخر اصدار" msgid "upgrade everything to the latest version" msgstr "تحديث كل شيء الى اخر اصدار" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "خطا اثناء الرفع %s" @@ -3650,11 +3640,11 @@ msgstr "خطا اثناء الرفع %s" msgid "user directory not set" msgstr "مجلد المستخدم غير محدد" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "ادخال المستخدم لا يدعم تنسيق الخرج '%s'" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "ادخال المستخدم غير مدعوم في الوضع الغير تفاعلي" diff --git a/i18n/data/de.po b/i18n/data/de.po index fcce0a4667d..95af913300d 100644 --- a/i18n/data/de.po +++ b/i18n/data/de.po @@ -20,7 +20,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s %[2]s Version: %[3]s Commit: %[4]s Datum: %[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" "Der Ordner %[1]s wird nicht länger unterstützt! Siehe %[2]s für weitere " @@ -34,7 +34,7 @@ msgstr "%[1]s ungültig, alles wird neu gebaut" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s wird benötigt, aber %[2]s ist aktuell installiert." -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "Muster %[1]s fehlt" @@ -58,7 +58,7 @@ msgstr "%[1]s, Protokollversion: %[2]d" msgid "%s already downloaded" msgstr "%s bereits heruntergeladen" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s und %s können nicht gemeinsam verwendet werden" @@ -171,7 +171,7 @@ msgstr "Alle Kerne sind bereits auf der neuesten Version" msgid "Already installed %s" msgstr "Bereits installiert %s" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "Alternativen für %[1]s: %[2]s" @@ -179,7 +179,7 @@ msgstr "Alternativen für %[1]s: %[2]s" msgid "An error occurred adding prototypes" msgstr "Beim Hinzufügen von Prototypen ist ein Fehler aufgetreten" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "Ein Fehler trat beim erkennen der Bibliotheken auf" @@ -195,7 +195,7 @@ msgstr "Architektur: %s" msgid "Archive already exists" msgstr "Archiv existiert bereits" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Gebauter Kern wird archiviert (zwischengespeichert) in: %[1]s" @@ -284,7 +284,7 @@ msgstr "Platinenname:" msgid "Board version:" msgstr "Platinenversion:" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Bootloader-Datei angegeben, aber nicht vorhanden: %[1]s" @@ -333,11 +333,11 @@ msgstr "Konfigurationsdatei kann nicht geschrieben werden: %v" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -377,7 +377,7 @@ msgstr "Plattform kann nicht installiert werden" msgid "Cannot install tool %s" msgstr "Werkzeug %s kann nicht installiert werden" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -421,7 +421,7 @@ msgstr "" "Befehl läuft weiter und gibt die Liste der verbundenen Platinen aus, sobald " "sich eine Änderung ergibt." -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -429,19 +429,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "Kompiliert Arduino-Sketche." -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "Kern wird kompiliert ..." -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "Bibliotheken werden kompiliert ..." -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "Bibliothek \"%[1]s\" wird kompiliert" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Sketch wird kompiliert ..." @@ -458,7 +458,7 @@ msgstr "Konfigurationsdatei geschrieben nach: %s" msgid "Configuration options for %s" msgstr "Konfigurationsoptionen für %s" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -476,7 +476,7 @@ msgstr "" msgid "Connected" msgstr "Verbunden" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "Verbunden mit %s! Zum Beenden STRG-C drücken." @@ -492,11 +492,11 @@ msgstr "Konnte nicht über HTTP verbinden" msgid "Could not create index directory" msgstr "Indexverzeichnis konnte nicht erstellt werden" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "Programmgröße konnte nicht ermittelt werden" @@ -522,7 +522,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -558,7 +558,7 @@ msgstr "Debugging für Board %s nicht unterstützt" msgid "Debugging supported:" msgstr "Debugging unterstützt:" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Standard" @@ -593,7 +593,7 @@ msgstr "Abhängigkeiten: %s" msgid "Description" msgstr "Beschreibung" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "Verwendete Bibliotheken erkennen ..." @@ -713,7 +713,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "Fehler beim Hinzufügen einer Datei zum Sketch-Archiv" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -729,11 +729,11 @@ msgstr "Fehler beim Berechnen des relativen Dateipfads" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "Fehler beim Kopieren der Ausgabedatei %s" @@ -741,7 +741,7 @@ msgstr "Fehler beim Kopieren der Ausgabedatei %s" msgid "Error creating instance: %v" msgstr "Fehler beim Erstellen der Instanz: %v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "Fehler beim Erstellen des Ausgabeverzeichnisses" @@ -794,7 +794,7 @@ msgstr "Fehler beim Herunterladen des Werkzeugs %s" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "Fehler während FQBN-Bestimmung: %v" @@ -804,8 +804,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "Fehler während dem Hochladen: %v" @@ -813,7 +813,7 @@ msgstr "Fehler während dem Hochladen: %v" msgid "Error during YAML encoding of the output: %v" msgstr "Fehler während der YAML-Kodierung der Ausgabe: %v" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -833,7 +833,7 @@ msgstr "" msgid "Error extracting %s" msgstr "Fehler beim Extrahieren von %s" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -849,11 +849,11 @@ msgstr "Fehler beim Abrufen des absoluten Pfads des Sketch-Archivs" msgid "Error getting board details: %v" msgstr "Fehler beim Abrufen von Platinendetails: %v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "Fehler beim Abrufen von Informationen für die Bibliothek %s" @@ -865,11 +865,11 @@ msgstr "Fehler beim Abrufen von Bibliotheksinformationen: %v" msgid "Error getting port metadata: %v" msgstr "Fehler beim Abrufen von Port-Metadaten: %v" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "Fehler beim Abrufen von Details zu Port-Einstellungen: %s" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -933,15 +933,15 @@ msgstr "Fehler beim Öffnen von %s" msgid "Error opening debug logging file: %s" msgstr "Fehler beim Öffnen der Debug-Protokollierungsdatei: %s" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -985,7 +985,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "Fehler bei der Suche nach Plattformen: %v" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "Fehler bei der Serialisierung der Kompilierungsdatenbank: %s" @@ -1013,17 +1013,17 @@ msgstr "" msgid "Error verifying signature" msgstr "Fehler beim Verifizieren der Signatur" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "Fehler während der Bestimmung der Sketch-Größe: %s" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "Fehler beim Schreiben der Kompilierungsdatenbank: %s" @@ -1031,7 +1031,7 @@ msgstr "Fehler beim Schreiben der Kompilierungsdatenbank: %s" msgid "Error: command description is not supported by %v" msgstr "Fehler: Befehlsbeschreibung wird nicht unterstützt von %v" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1051,7 +1051,7 @@ msgstr "Beispiele:" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1065,15 +1065,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "Fehlgeschlagene Programmierung" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1105,7 +1105,7 @@ msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" "Fehler beim Überwachen von TCP-Port: %s. Adresse wird bereits benutzt." -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "Fehlgeschlagenes Hochladen" @@ -1113,7 +1113,7 @@ msgstr "Fehlgeschlagenes Hochladen" msgid "File:" msgstr "Datei:" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1142,9 +1142,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1176,7 +1174,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "Funktionsprototypen werden generiert ..." @@ -1184,7 +1182,7 @@ msgstr "Funktionsprototypen werden generiert ..." msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1192,12 +1190,12 @@ msgstr "" "Globale Variablen verwenden %[1]s Bytes (%[3]s%%) des dynamischen Speichers," " %[4]s Bytes für lokale Variablen verbleiben. Das Maximum sind %[2]s Bytes." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Globale Variablen verwenden %[1]s Bytes des dynamischen Speichers." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1271,7 +1269,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "Installiert eine oder mehrere angegebene Bibliotheken in das System." -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1310,15 +1308,15 @@ msgstr "Ungültiges Archiv: Datei %{1}s nicht in Archiv %{2}s gefunden" msgid "Invalid argument passed: %v" msgstr "Ungültiges Argument übergeben: %v" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1366,7 +1364,7 @@ msgstr "Ungültiges Profil" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1405,7 +1403,7 @@ msgstr "BIBLIOTHEKSNAME" msgid "Latest" msgstr "Neueste" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "Bibliothek %[1]s wurde als vorkompiliert angegeben:" @@ -1433,7 +1431,7 @@ msgstr "Bibliothek %s nicht gefunden" msgid "Library '%s' not found" msgstr "Bibliothek '%s' nicht gefunden" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1450,7 +1448,7 @@ msgstr "Bibliothek installiert" msgid "License: %s" msgstr "Lizenz: %s" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1505,7 +1503,7 @@ msgstr "Indexdatei wird geladen: %v" msgid "Location" msgstr "Ort" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" "Wenig Arbeitsspeicher verfügbar, es können Stabilitätsprobleme auftreten." @@ -1523,7 +1521,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "'%[1]s' aus der Bibliothek in %[2]s fehlt" @@ -1547,7 +1545,7 @@ msgstr "Fehlendes Port-Protokoll" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1563,7 +1561,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Mehrere Bibliotheken wurden für \"%[1]s\" gefunden" @@ -1577,7 +1575,7 @@ msgstr "Name" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1629,7 +1627,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1637,13 +1635,13 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "Nicht genug Arbeitsspeicher; unter %[1]s finden sich Hinweise, um die Größe " "zu verringern." -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Nicht benutzt: %[1]s" @@ -1661,7 +1659,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "Einen Kommunikations-Port mit einer Platine öffnen." @@ -1744,7 +1742,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "Pfad" @@ -1770,7 +1768,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1782,7 +1780,7 @@ msgstr "Plattform %s bereits installiert" msgid "Platform %s installed" msgstr "Plattform %s installiert" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1804,7 +1802,7 @@ msgstr "Plattform '%s' nicht gefunden" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1856,7 +1854,7 @@ msgstr "" msgid "Port" msgstr "Port" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "Port geschlossen: %v" @@ -1864,8 +1862,7 @@ msgstr "Port geschlossen: %v" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "Vorkompilierte Bibliothek in \"%[1]s\" nicht gefunden" @@ -1941,7 +1938,7 @@ msgstr "Erforderliches Werkzeug:" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1951,7 +1948,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1991,6 +1988,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -2007,7 +2008,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "Einstellung" @@ -2019,7 +2020,7 @@ msgstr "" msgid "Show all available core versions." msgstr "Zeige alle verfügbare Core-Versionen." -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2102,7 +2103,7 @@ msgstr "" msgid "Size (bytes):" msgstr "Größe (Bytes):" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2116,13 +2117,13 @@ msgstr "Sketch erstellt in: %s" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "" "Der Sketch ist zu groß; unter %[1]s finden sich Hinweise, um die Größe zu " "verringern." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2136,23 +2137,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2204,7 +2205,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2230,7 +2231,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2277,7 +2278,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2297,7 +2298,7 @@ msgstr "Typen: %s" msgid "URL:" msgstr "URL:" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2403,15 +2404,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2427,7 +2428,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2446,27 +2447,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "Benutze %s für mehr Informationen über einen Befehl." -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "Benutzte Bibliothek" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Benutzt: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2479,17 +2480,15 @@ msgstr "" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "Bibliothek %[1]s im Ordner: %[2]s %[3]s wird verwendet" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "Benutze vorkompilierte Bibliothek in %[1]s" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Zuvor kompilierte Datei wird verwendet: %[1]s" @@ -2501,7 +2500,7 @@ msgstr "VERSION" msgid "VERSION_NUMBER" msgstr "VERSION_NUMMER" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "Werte" @@ -2510,7 +2509,7 @@ msgstr "Werte" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "Version" @@ -2527,7 +2526,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2540,11 +2539,11 @@ msgstr "" "werden zu können und ist möglicherweise inkompatibel mit Ihrer derzeitigen " "Platine, welche auf %[3]s Architektur(en) ausgeführt wird." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "Warten auf Upload-Port ..." -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2589,11 +2588,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2601,7 +2600,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2647,11 +2646,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "Kandidaten" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2695,7 +2694,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "kopiere Bibliothek in Zielordner:" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2712,7 +2711,7 @@ msgstr "konnte alte Bibliothek nicht entfernen" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2724,7 +2723,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "Datenbereich überschreitet den verfügbaren Platz auf der Platine" @@ -2732,7 +2731,7 @@ msgstr "Datenbereich überschreitet den verfügbaren Platz auf der Platine" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "Zielordner existiert bereits" @@ -3036,7 +3035,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "ungültige Port-Konfiguration: %s" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3174,7 +3173,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3196,7 +3195,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3208,7 +3207,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3284,7 +3283,7 @@ msgstr "Plattform %s ist nicht installiert" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "Plattform nicht installiert" @@ -3300,7 +3299,7 @@ msgstr "" msgid "port" msgstr "Port" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "Port nicht gefunden: %[1]s %[2]s" @@ -3335,7 +3334,7 @@ msgstr "Verzeichnis %s wird gelesen" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "Datei %[1]s wird gelesen: %[2]s" @@ -3363,7 +3362,7 @@ msgstr "lese library_index.json: %s" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3433,7 +3432,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "Quelle ist kein Verzeichnis" @@ -3457,12 +3456,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "Textbereich überschreitet den verfügbaren Platz auf der Platine" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3515,19 +3514,15 @@ msgstr "" "zwei verschiedene Versionen der Bibliothek %[1]s sind erforderlich: %[2]s " "und %[3]s" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3535,19 +3530,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "Schreiben in Zieldatei unmöglich" @@ -3575,7 +3566,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "Hochladefehler: %s" @@ -3583,11 +3574,11 @@ msgstr "Hochladefehler: %s" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/es.po b/i18n/data/es.po index 8c07805255b..136cb0b45bf 100644 --- a/i18n/data/es.po +++ b/i18n/data/es.po @@ -20,7 +20,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "¡%[1]s ya no es compatible con la carpeta! %[2]s Para más información" @@ -32,7 +32,7 @@ msgstr "%[1]s inválido, reconstruyendo todo" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s es requerido pero %[2]s está actualmente instalado." -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "No se encuentra patrón %[1]s" @@ -56,7 +56,7 @@ msgstr "%[1]s, versión del protocolo: %[2]d" msgid "%s already downloaded" msgstr "%s ya está descargado" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s y %s no se pueden usar juntos" @@ -165,7 +165,7 @@ msgstr "Todos los núcleos están en su última versión" msgid "Already installed %s" msgstr "Ya está instalado %s" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "Alternativas para %[1]s: %[2]s" @@ -173,7 +173,7 @@ msgstr "Alternativas para %[1]s: %[2]s" msgid "An error occurred adding prototypes" msgstr "Ocurrió un error añadiendo prototipos" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "Ocurrió un error detectando librerías" @@ -189,7 +189,7 @@ msgstr "Arquitectura: %s" msgid "Archive already exists" msgstr "El archivo ya existe" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Archivando el núcleo construido (cacheado) en: %[1]s" @@ -274,7 +274,7 @@ msgstr "Nombre de la placa:" msgid "Board version:" msgstr "Versión de la placa:" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Fichero Bootloader especificado pero ausente: %[1]s" @@ -325,11 +325,11 @@ msgstr "No se puede escribir el archivo de configuración: %v" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "No se puede crear el directorio de caché de compilación" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "No se puede crear el directorio de caché de compilación" @@ -369,7 +369,7 @@ msgstr "No se puede instalar la plataforma" msgid "Cannot install tool %s" msgstr "No se puede instalar la herramienta %s" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "No se puede realizar el reinicio del puerto: %s" @@ -414,7 +414,7 @@ msgstr "" "El comando sigue ejecutándose e imprime la lista de placas conectadas cada " "vez que hay un cambio." -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "Proyecto compilado no encontrado en %s" @@ -422,19 +422,19 @@ msgstr "Proyecto compilado no encontrado en %s" msgid "Compiles Arduino sketches." msgstr "Compila los sketch de Arduino" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "Compilando el núcleo..." -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "Compilando librerías..." -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "Compilando librería \"%[1]s\"" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Compilando el sketch..." @@ -453,7 +453,7 @@ msgstr "Archivo de configuración escrito en: %s" msgid "Configuration options for %s" msgstr "Opciones de configuración para %s" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -471,7 +471,7 @@ msgstr "" msgid "Connected" msgstr "Conectado" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "¡Conectado a %s! Pulse CTRL-C para salir." @@ -487,11 +487,11 @@ msgstr "No se pudo conectar vía HTTP" msgid "Could not create index directory" msgstr "No se ha podido crear el directorio índice." -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "No se pudo determinar el tamaño del programa" @@ -519,7 +519,7 @@ msgstr "" "Crea o actualiza el archivo de configuración en el directorio de datos o " "directorio personalizado con los ajustes actuales." -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -555,7 +555,7 @@ msgstr "Depuración no soportada para la tarjeta: %s" msgid "Debugging supported:" msgstr "Debugging soportado:" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Por defecto" @@ -589,7 +589,7 @@ msgstr "Dependencias: %s" msgid "Description" msgstr "Descripción" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "Detectando las librerías usadas..." @@ -707,7 +707,7 @@ msgstr "Introducir la url de git para librerías alojadas en repositorios" msgid "Error adding file to sketch archive" msgstr "Error añadiendo sketch al archivo de sketch" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -723,11 +723,11 @@ msgstr "Error calculando la ruta de archivo relativa" msgid "Error cleaning caches: %v" msgstr "Error limpiando caches: %v" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "Error copiando el archivo de salida %s" @@ -735,7 +735,7 @@ msgstr "Error copiando el archivo de salida %s" msgid "Error creating instance: %v" msgstr "Error creando la instancia: %v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "Error al crear el directorio de salida" @@ -788,7 +788,7 @@ msgstr "Error descargando la herramienta %s" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -798,8 +798,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "Error durante la carga: %v" @@ -807,7 +807,7 @@ msgstr "Error durante la carga: %v" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -827,7 +827,7 @@ msgstr "Error durante la actualización: %v" msgid "Error extracting %s" msgstr "Error extrayendo %s" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -843,12 +843,12 @@ msgstr "Error obteniendo la ruta absoluta del archivo de sketch" msgid "Error getting board details: %v" msgstr "Error obteniendo los detalles de la placa: %v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" "Error obteniendo el directorio actual para la base de datos de compilación%s" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "Error obteniendo información para la librería %s" @@ -860,11 +860,11 @@ msgstr "Error obteniendo información de las librerías: %v" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -928,15 +928,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -980,7 +980,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -1008,17 +1008,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1026,7 +1026,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1046,7 +1046,7 @@ msgstr "Ejemplos:" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1060,15 +1060,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "Borrado del chip fallida" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1096,7 +1096,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1104,7 +1104,7 @@ msgstr "" msgid "File:" msgstr "Archivo:" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1133,9 +1133,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1167,7 +1165,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1175,7 +1173,7 @@ msgstr "" msgid "Global Flags:" msgstr "Banderas globales:" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1183,12 +1181,12 @@ msgstr "" "Las variables Globales usan %[1]s bytes (%[3]s%%) de la memoria dinámica, " "dejando %[4]s bytes para las variables locales. El máximo es %[2]s bytes." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Variables globales usan %[1]s bytes de memoria dinamica." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1258,7 +1256,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "Error interno en la cache" @@ -1297,15 +1295,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1353,7 +1351,7 @@ msgstr "Perfil inválido" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1392,7 +1390,7 @@ msgstr "" msgid "Latest" msgstr "Última" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1419,7 +1417,7 @@ msgstr "Librería %s no encontrada" msgid "Library '%s' not found" msgstr "La librería '%s' no fue encontrada" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1436,7 +1434,7 @@ msgstr "Librería instalada" msgid "License: %s" msgstr "Licencia: %s" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1491,7 +1489,7 @@ msgstr "" msgid "Location" msgstr "Ubicación" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" "Hay poca memoria disponible; pueden producirse problemas de estabilidad." @@ -1509,7 +1507,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "Falta '%[1]s' de la biblioteca en %[2]s" @@ -1533,7 +1531,7 @@ msgstr "Falta el protocolo del puerto" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1549,7 +1547,7 @@ msgstr "Monitor '%s' no encontrado" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Se encontraron varias bibliotecas para \"%[1]s\"" @@ -1563,7 +1561,7 @@ msgstr "Nombre" msgid "Name: \"%s\"" msgstr "Nombre: \"%s\"" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1615,7 +1613,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "No hay plataformas que coincidan con su búsqueda." -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1623,13 +1621,13 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "No hay suficiente memoria, ver %[1]s para obtener consejos sobre cómo " "optimizar su código." -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "No utilizado: %[1]s" @@ -1647,7 +1645,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "Abre un puerto de comunicación con una placa." @@ -1730,7 +1728,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1756,7 +1754,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1768,7 +1766,7 @@ msgstr "La plataforma %s ya está instalada" msgid "Platform %s installed" msgstr "Plataforma %s instalada" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1790,7 +1788,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1838,7 +1836,7 @@ msgstr "" msgid "Port" msgstr "Puerto" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "Puerto cerrado: %v" @@ -1846,8 +1844,7 @@ msgstr "Puerto cerrado: %v" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1923,7 +1920,7 @@ msgstr "Herramienta requerida:" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1933,7 +1930,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1975,6 +1972,10 @@ msgstr "Sentencia: %s" msgid "Server responded with: %s" msgstr "El servidor respondió con: %s" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1989,7 +1990,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -2001,7 +2002,7 @@ msgstr "" msgid "Show all available core versions." msgstr "Muestra todos los núcleos disponibles." -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2084,7 +2085,7 @@ msgstr "" msgid "Size (bytes):" msgstr "Tamaño (bytes):" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2098,11 +2099,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "Programa muy grando: visite %[1]s para ver cómo reducirlo." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2116,23 +2117,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2184,7 +2185,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2210,7 +2211,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2259,7 +2260,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2279,7 +2280,7 @@ msgstr "Tipos: %s" msgid "URL:" msgstr "URL:" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2387,15 +2388,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2411,7 +2412,7 @@ msgstr "Cargar el bootloader en la placa usando un programador externo." msgid "Upload the bootloader." msgstr "Cargar el bootloader." -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2430,27 +2431,27 @@ msgstr "Uso:" msgid "Use %s for more information about a command." msgstr "Use %spara más información acerca de un comando." -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Usado: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2462,17 +2463,15 @@ msgstr "Usando librería %[1]s con versión %[2]s en la carpeta: %[3]s %[4]s" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "Utilizando biblioteca %[1]s en carpeta: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Utilizando archivo previamente compilado: %[1]s" @@ -2484,7 +2483,7 @@ msgstr "VERSIÓN" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2493,7 +2492,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2510,7 +2509,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2523,11 +2522,11 @@ msgstr "" "y puede ser incompatible con tu actual tarjeta la cual corre sobre " "arquitectura(s) %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2570,11 +2569,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2582,7 +2581,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2628,11 +2627,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "Candidatos" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2676,7 +2675,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2693,7 +2692,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2705,7 +2704,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2713,7 +2712,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -3017,7 +3016,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3155,7 +3154,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3177,7 +3176,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3189,7 +3188,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3265,7 +3264,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3281,7 +3280,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3316,7 +3315,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3344,7 +3343,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3414,7 +3413,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3438,12 +3437,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3494,19 +3493,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3514,19 +3509,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3554,7 +3545,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3562,11 +3553,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/fr.po b/i18n/data/fr.po index ca000469a3c..ce591d8b4bd 100644 --- a/i18n/data/fr.po +++ b/i18n/data/fr.po @@ -15,7 +15,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" "le dossier %[1]sn'est plus supporté ! Consulter%[2]s pour plus " @@ -29,7 +29,7 @@ msgstr "" msgid "%[1]s is required but %[2]s is currently installed." msgstr "" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s est un schéma manquant" @@ -53,7 +53,7 @@ msgstr "" msgid "%s already downloaded" msgstr "%s déjà téléchargé" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%set%sne peuvent pas être téléchargé." @@ -158,7 +158,7 @@ msgstr "Tous les cœurs sont à jours vers la dernière version." msgid "Already installed %s" msgstr "Déjà installé %s" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "Alternative pour %[1]s: %[2]s" @@ -166,7 +166,7 @@ msgstr "Alternative pour %[1]s: %[2]s" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -182,7 +182,7 @@ msgstr "Architecture : %s" msgid "Archive already exists" msgstr "L'archive existe déjà" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Archivage du noyau construit (mise en cache) dans: %[1]s" @@ -267,7 +267,7 @@ msgstr "" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Fichier du bootloader spécifié mais absent: %[1]s" @@ -316,11 +316,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -360,7 +360,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -402,7 +402,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "Croquis compilé introuvable %s" @@ -410,19 +410,19 @@ msgstr "Croquis compilé introuvable %s" msgid "Compiles Arduino sketches." msgstr "Compilation des croquis Arduino." -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Compilation du croquis..." @@ -439,7 +439,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -457,7 +457,7 @@ msgstr "" msgid "Connected" msgstr "Connecté" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -473,11 +473,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -503,7 +503,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -539,7 +539,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Défaut" @@ -573,7 +573,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -686,7 +686,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -702,11 +702,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -714,7 +714,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -767,7 +767,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -777,8 +777,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -786,7 +786,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -806,7 +806,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -822,11 +822,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -838,11 +838,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -906,15 +906,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -958,7 +958,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -986,17 +986,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1004,7 +1004,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1024,7 +1024,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1038,15 +1038,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1074,7 +1074,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1082,7 +1082,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1111,9 +1111,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1145,7 +1143,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1153,7 +1151,7 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1162,12 +1160,12 @@ msgstr "" "dynamique, ce qui laisse %[4]s octets pour les variables locales. Le maximum" " est de %[2]s octets." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Les variables globales utilisent %[1]s octets de mémoire dynamique." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1237,7 +1235,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1276,15 +1274,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1332,7 +1330,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1371,7 +1369,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1397,7 +1395,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1414,7 +1412,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1469,7 +1467,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" "La mémoire disponible faible, des problèmes de stabilité pourraient " @@ -1488,7 +1486,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "Fichier manquant '%[1]s' de la bibliothèque dans %[2]s" @@ -1512,7 +1510,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1528,7 +1526,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Plusieurs bibliothèque trouvées pour \"%[1]s\"" @@ -1542,7 +1540,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1592,7 +1590,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1600,13 +1598,13 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "Mémore insuffisante; consulter la page %[1]s pour obtenir des astuces sur " "comment le réduire." -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Non utilisé: %[1]s" @@ -1624,7 +1622,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1707,7 +1705,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1733,7 +1731,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1745,7 +1743,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1767,7 +1765,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1815,7 +1813,7 @@ msgstr "" msgid "Port" msgstr "Port" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1823,8 +1821,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1900,7 +1897,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1910,7 +1907,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1950,6 +1947,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1964,7 +1965,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1976,7 +1977,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2057,7 +2058,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2071,11 +2072,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "Croquis trop gros; vois %[1]s pour des conseils de réduction." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2089,23 +2090,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2157,7 +2158,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2183,7 +2184,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2230,7 +2231,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2250,7 +2251,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2356,15 +2357,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2380,7 +2381,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2399,27 +2400,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Utilisé: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2434,17 +2435,15 @@ msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "" "Utilisation de la bibliothèque %[1]s prise dans le dossier: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Utilisation du fichier déjà compilé: %[1]s" @@ -2456,7 +2455,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2465,7 +2464,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2482,7 +2481,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2495,11 +2494,11 @@ msgstr "" "architecture(s) %[2]s et peut être incompatible avec votre carte actuelle " "qui s'exécute sur %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2542,11 +2541,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2554,7 +2553,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2600,11 +2599,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2648,7 +2647,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2665,7 +2664,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2677,7 +2676,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2685,7 +2684,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2989,7 +2988,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3127,7 +3126,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3149,7 +3148,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3161,7 +3160,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3237,7 +3236,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3253,7 +3252,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3288,7 +3287,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3316,7 +3315,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3386,7 +3385,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3410,12 +3409,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3466,19 +3465,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3486,19 +3481,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "impossible d’écrire dans le fichier de destination." @@ -3526,7 +3517,7 @@ msgstr "mise à jour de arduino:samd vers la dernière version" msgid "upgrade everything to the latest version" msgstr "tout mettre à jour tout vers la dernière version" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3534,11 +3525,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/he.po b/i18n/data/he.po index 6761ef1dec7..7e8653941b6 100644 --- a/i18n/data/he.po +++ b/i18n/data/he.po @@ -13,7 +13,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s%[2]s גרסה: %[3]s קומיט: %[4]sתאריך: %[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" @@ -25,7 +25,7 @@ msgstr "" msgid "%[1]s is required but %[2]s is currently installed." msgstr "" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s תבנית חסרה" @@ -49,7 +49,7 @@ msgstr "%[1]s, גרסאת פרוטוקול: %[2]d" msgid "%s already downloaded" msgstr "" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "Already installed %s" msgstr "" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "" @@ -162,7 +162,7 @@ msgstr "" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -178,7 +178,7 @@ msgstr "ארכיטקטורה: %s" msgid "Archive already exists" msgstr "" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "" @@ -263,7 +263,7 @@ msgstr "" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "" @@ -312,11 +312,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -356,7 +356,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -398,7 +398,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -406,19 +406,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "" @@ -435,7 +435,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -453,7 +453,7 @@ msgstr "" msgid "Connected" msgstr "" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -469,11 +469,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -499,7 +499,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -535,7 +535,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "" @@ -569,7 +569,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -682,7 +682,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -698,11 +698,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -710,7 +710,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -763,7 +763,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -773,8 +773,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -782,7 +782,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -802,7 +802,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -818,11 +818,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -834,11 +834,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -902,15 +902,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -954,7 +954,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -982,17 +982,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1000,7 +1000,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1020,7 +1020,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1034,15 +1034,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1070,7 +1070,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1078,7 +1078,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1107,9 +1107,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1141,7 +1139,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1149,18 +1147,18 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." msgstr "" -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "" #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1230,7 +1228,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1269,15 +1267,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1325,7 +1323,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1364,7 +1362,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1390,7 +1388,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1407,7 +1405,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1462,7 +1460,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" @@ -1479,7 +1477,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "" @@ -1503,7 +1501,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1519,7 +1517,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "" @@ -1533,7 +1531,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1583,7 +1581,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1591,11 +1589,11 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "" @@ -1613,7 +1611,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1696,7 +1694,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1722,7 +1720,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1734,7 +1732,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1756,7 +1754,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1804,7 +1802,7 @@ msgstr "" msgid "Port" msgstr "" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1812,8 +1810,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1889,7 +1886,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1899,7 +1896,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1939,6 +1936,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1953,7 +1954,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1965,7 +1966,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2046,7 +2047,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2060,11 +2061,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2076,23 +2077,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2144,7 +2145,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2170,7 +2171,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2217,7 +2218,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2237,7 +2238,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2343,15 +2344,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2367,7 +2368,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2386,27 +2387,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2418,17 +2419,15 @@ msgstr "" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "" @@ -2440,7 +2439,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2449,7 +2448,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2466,7 +2465,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2476,11 +2475,11 @@ msgid "" "incompatible with your current board which runs on %[3]s architecture(s)." msgstr "" -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2523,11 +2522,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2535,7 +2534,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2581,11 +2580,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2629,7 +2628,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2646,7 +2645,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2658,7 +2657,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2666,7 +2665,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2970,7 +2969,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3108,7 +3107,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3130,7 +3129,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3142,7 +3141,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3218,7 +3217,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3234,7 +3233,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3269,7 +3268,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3297,7 +3296,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3367,7 +3366,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3391,12 +3390,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3447,19 +3446,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3467,19 +3462,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3507,7 +3498,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3515,11 +3506,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/it_IT.po b/i18n/data/it_IT.po index 66dfb747779..595592e9ddd 100644 --- a/i18n/data/it_IT.po +++ b/i18n/data/it_IT.po @@ -20,7 +20,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s %[2]s Versione: %[3]s Commit: %[4]s Data: %[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" "La cartella %[1]s non è più supportata! Vedere %[2]s per maggiori " @@ -34,7 +34,7 @@ msgstr "%[1]s non è valido, ricompilo tutto" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s è richiesto ma %[2]s risulta attualmente installato." -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "Manca il pattern %[1]s" @@ -58,7 +58,7 @@ msgstr "%[1]s, versione protocollo: %[2]d" msgid "%s already downloaded" msgstr " %s già scaricato" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s e %s non possono essere usati insieme" @@ -131,7 +131,7 @@ msgstr "" #: commands/sketch/new.go:66 msgid ".ino file already exists" -msgstr ".ino file già esiste" +msgstr "il file .ino è già presente" #: internal/cli/updater/updater.go:71 msgid "A new release of Arduino CLI is available:" @@ -148,7 +148,7 @@ msgstr "ARCH" #: internal/cli/generatedocs/generatedocs.go:80 msgid "ARDUINO COMMAND LINE MANUAL" -msgstr "MANUALE DELLA LINEA DI COMANDO ARDUINO" +msgstr "MANUALE DELLA LINEA DI COMANDO DI ARDUINO" #: internal/cli/usage.go:32 msgid "Additional help topics:" @@ -170,7 +170,7 @@ msgstr "Tutti i core sono già all'ultima versione" msgid "Already installed %s" msgstr "Già installato %s" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "Alternative per %[1]s: %[2]s" @@ -178,7 +178,7 @@ msgstr "Alternative per %[1]s: %[2]s" msgid "An error occurred adding prototypes" msgstr "Si è verificato un errore durante l'aggiunta di un prototipo" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "Si è verificato un errore durante il rilevamento delle librerie" @@ -192,9 +192,9 @@ msgstr "Architettura: %s" #: commands/sketch/archive.go:71 msgid "Archive already exists" -msgstr "L'archivio è esistente" +msgstr "L'archivio è già presente" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Archivio il core compilato (caching) in: %[1]s" @@ -283,7 +283,7 @@ msgstr "Nome scheda:" msgid "Board version:" msgstr "Versione scheda:" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Il file del bootloader specificato è inesistente: %[1]s" @@ -308,7 +308,7 @@ msgstr "Non è possibile scaricare la libreria" #: arduino/cores/packagemanager/install_uninstall.go:133 #: commands/core/uninstall.go:64 msgid "Can't find dependencies for platform %s" -msgstr "Dipendenze per la piattaforma %s non trovate" +msgstr "Impossibile trovare le dipendenze per la piattaforma %s" #: arduino/errors.go:538 msgid "Can't open sketch" @@ -334,11 +334,11 @@ msgstr "Non è possibile salvare il file di configurazione: %v" msgid "Can't write debug log: %s" msgstr "Non è possibile scrivere il log di debug: %s" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "Non è possibile creare la directory di build della cache." -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "Non è possibile creare la directory per la build" @@ -379,7 +379,7 @@ msgstr "Non è possibile installare la piattaforma" msgid "Cannot install tool %s" msgstr "Non è possibile installare il tool %s" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "Non è possibile effettuare il reset della porta: %s" @@ -401,7 +401,7 @@ msgstr "Controllare lo stato delle dipendenze per la libreria specificata." #: arduino/resources/checksums.go:167 msgid "Checksum differs from checksum in package.json" -msgstr "Il checksum è diverso dal checksum in package.json" +msgstr "Il checksum è diverso da quello presente in package.json" #: internal/cli/board/details.go:188 msgid "Checksum:" @@ -424,29 +424,29 @@ msgstr "" "Il comando continua a funzionare e stampa l'elenco delle schede collegate " "ogni volta che viene apportata una modifica." -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "Sketch compilato non trovato in %s" #: internal/cli/compile/compile.go:84 internal/cli/compile/compile.go:85 msgid "Compiles Arduino sketches." -msgstr "Compilazione sketch Arduino" +msgstr "Compila gli sketch di Arduino." -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." -msgstr "Compilazione core..." +msgstr "Compilazione del core in corso..." -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." -msgstr "Compilazione librerie..." +msgstr "Compilazione delle librerie in corso..." -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" -msgstr "Compilazione libreria \"%[1]s\"" +msgstr "Compilazione della libreria \"%[1]s\"" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." -msgstr "Compilazione sketch..." +msgstr "Compilazione dello sketch in corso..." #: internal/cli/config/init.go:88 msgid "" @@ -457,13 +457,13 @@ msgstr "" #: internal/cli/config/init.go:112 msgid "Config file written to: %s" -msgstr "File di configurazione scritto su: %s" +msgstr "File di configurazione scritto in: %s" #: internal/cli/debug/debug.go:151 msgid "Configuration options for %s" msgstr "Opzioni di configurazione per %s" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -483,7 +483,7 @@ msgstr "Strumento di configurazione." msgid "Connected" msgstr "Connesso" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "Connesso a %s! Premere CTRL-C per uscire." @@ -499,12 +499,12 @@ msgstr "Non è possibile connettersi via HTTP" msgid "Could not create index directory" msgstr "Impossibile creare la directory dell'indice" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" "Non è stato possibile creare una cache profonda della build core: %[1]s" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "Non è possibile determinare la dimensione del programma" @@ -532,7 +532,7 @@ msgstr "" "Crea o aggiorna il file di configurazione nella directory dei dati o nella " "directory personalizzata con le impostazioni di configurazione correnti." -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -572,7 +572,7 @@ msgstr "Debugging non supportato per la scheda %s" msgid "Debugging supported:" msgstr "Debugging supportato:" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Predefinito" @@ -610,7 +610,7 @@ msgstr "Dipendenze: %s" msgid "Description" msgstr "Descrizione" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "Rilevamento delle librerie utilizzate in corso..." @@ -729,7 +729,7 @@ msgstr "" "Si è verificato un errore durante l'aggiunta del file all'archivio dello " "sketch" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" "Si è verificato un errore durante l'archiviazione del core compilato " @@ -748,13 +748,13 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "Si è verificato un errore durante la pulizia della cache: %v" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" "Si è verificato un errore durante la conversione del percorso in assoluto:: " "%v" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "Si è verificato un errore durante la copia del file di output %s" @@ -762,7 +762,7 @@ msgstr "Si è verificato un errore durante la copia del file di output %s" msgid "Error creating instance: %v" msgstr "Si è verificato un errore durante la creazione dell'istanza: %v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" "Si è verificato un errore durante la creazione della cartella di output" @@ -819,7 +819,7 @@ msgstr "Errore durante il download del tool %s" msgid "Error during Debug: %v" msgstr "Errore durante il debug: %v" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "Si è verificato un errore durante il rilevamento FQBN: %v" @@ -829,8 +829,8 @@ msgstr "Si è verificato un errore durante la codifica JSON dell'output: %v" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "Errore durante il caricamento di: %v" @@ -838,7 +838,7 @@ msgstr "Errore durante il caricamento di: %v" msgid "Error during YAML encoding of the output: %v" msgstr "Si è verificato un errore durante la codifica YAML dell'output: %v" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "Si è verificato un errore durante la compilazione: %v" @@ -858,7 +858,7 @@ msgstr "Si è verificato un errore durante l'aggiornamento: %v" msgid "Error extracting %s" msgstr "Si è verificato un errore durante l'estrazione di %s" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" "Si è verificato un errore durante la ricerca degli artefatti di compilazione" @@ -879,13 +879,13 @@ msgstr "" msgid "Error getting board details: %v" msgstr "Impossibile ottenere i dettagli della scheda: %v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" "Si è verificato un errore durante l'acquisizione della directory corrente " "per il database di compilazione: %s" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" "Si è verificato un errore durante l'acquisizione delle informazioni della " @@ -901,13 +901,13 @@ msgstr "" "Si è verificato un errore durante l'acquisizione dei metadati della porta: " "%v" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" "Si è verificato un errore durante l'acquisizione dei dettagli delle " "impostazioni della porta: %s" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" "Si è verificato un errore durante la ricezione dell'input da parte " @@ -981,18 +981,18 @@ msgid "Error opening debug logging file: %s" msgstr "" "Si è verificato un errore durante l'apertura del file di log di debug: %s" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" "Si è verificato un errore durante l'apertura del codice sorgente che " "sovrascrive i file: %v" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" "Si è verificato un errore durante il parsing del flag --show-properties: %v" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" "Si è verificato un errore durante la lettura della directory di compilazione" @@ -1043,7 +1043,7 @@ msgstr "Si è verificato un errore durante la ricerca delle librerie: %v" msgid "Error searching for platforms: %v" msgstr "Si è verificato un errore durante la ricerca delle piattaforme: %v" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" "Si è verificato un errore durante la serializzazione del database di " @@ -1076,21 +1076,21 @@ msgstr "" msgid "Error verifying signature" msgstr "Si è verificato un errore durante la verifica della firma" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" "Si è verificato un errore durante il rilevamento delle librerie incluse da " "%[1]s" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" "Si è verificato un errore durante la determinazione delle dimensioni dello " "sketch: %s" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" "Si è verificato un errore durante la scrittura del database di compilazione:" @@ -1100,7 +1100,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "Errore: la descrizione del comando non è supportata da %v" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "Errore: il codice sorgente non è valido e sovrascrive i dati: %v" @@ -1120,7 +1120,7 @@ msgstr "Esempi:" msgid "Executable to debug" msgstr "Eseguibile per il debug" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" "Ci si aspettava che lo sketch compilato fosse nella directory %s, invece è " @@ -1136,15 +1136,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "Impossibile cancellare il chip" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "Programmazione non riuscita" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "Impossibile masterizzare il bootloader" @@ -1175,7 +1175,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "Impossibile ascoltare sulla porta TCP: %s. L'indirizzo è già in uso." -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "Caricamento non riuscito" @@ -1183,7 +1183,7 @@ msgstr "Caricamento non riuscito" msgid "File:" msgstr "File:" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1218,12 +1218,8 @@ msgstr "" "interattiva)." #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" -msgstr "" -"Trovata %d piattaforma di riferimento \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" +msgstr "Sono state trovate %d piattaforme corrispondenti \"%s\": %s" #: internal/cli/arguments/fqbn.go:37 msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" @@ -1254,7 +1250,7 @@ msgstr "Genera gli script di completamento" msgid "Generates completion scripts for various shells" msgstr "Genera gli script di completamento per varie shell" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "Sto generando i prototipi di funzione..." @@ -1262,7 +1258,7 @@ msgstr "Sto generando i prototipi di funzione..." msgid "Global Flags:" msgstr "Flag globali:" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1271,12 +1267,12 @@ msgstr "" "lasciando altri %[4]s byte liberi per le variabili locali. Il massimo è " "%[2]s byte." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Le variabili globali usano %[1]s byte di memoria dinamica." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1349,7 +1345,7 @@ msgstr "Installa uno o più core e le corrispondenti dipendenze dei tool." msgid "Installs one or more specified libraries into the system." msgstr "Installa nel sistema una o più librerie specificate." -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "Errore interno alla cache" @@ -1391,15 +1387,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "L' argomento passato non è valido: %v" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "Proprietà di compilazione non valide" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "La dimensione dei dati della regexp non è valida: %s" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "La dimensione della eeprom della regexp non è valida: %s" @@ -1447,7 +1443,7 @@ msgstr "Il profilo non è valido" msgid "Invalid recipe in platform.txt" msgstr "Scrittura non valida in platform.txt" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "La dimensione della regexp non è valida: %s" @@ -1488,7 +1484,7 @@ msgstr "LIBRARY_NAME" msgid "Latest" msgstr "Ultimo" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "La libreria %[1]s è stata dichiarata precompilata:" @@ -1515,7 +1511,7 @@ msgstr "Impossibile trovare la libreria %s" msgid "Library '%s' not found" msgstr "Impossibile trovare la libreria '%s'" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1534,7 +1530,7 @@ msgstr "La libreria è stata installata" msgid "License: %s" msgstr "Licenza: %s" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "Collegare tutto insieme..." @@ -1595,7 +1591,7 @@ msgstr "Sto caricando il file dell'indice: %v" msgid "Location" msgstr "Posizione" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" "Poca memoria disponibile, potrebbero presentarsi problemi di stabilità" @@ -1616,7 +1612,7 @@ msgstr "" "I messaggi con questo livello o superiore saranno registrati. I livelli " "validi sono: %s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "Manca '%[1]s' nella libreria %[2]s" @@ -1640,7 +1636,7 @@ msgstr "Manca il protocollo della porta" msgid "Missing programmer" msgstr "Manca il programmatore" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "Manca la dimensione della regexp" @@ -1656,7 +1652,7 @@ msgstr "Impossibile trovare il monitor '%s'" msgid "Monitor port settings:" msgstr "Impostazioni sulla porta del monitor:" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Più di una libreria trovata per \"%[1]s\"" @@ -1670,7 +1666,7 @@ msgstr "Nome" msgid "Name: \"%s\"" msgstr "Nome: \"%s\"" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "Nuova porta di caricamento: %[1]s (%[2]s)" @@ -1722,7 +1718,7 @@ msgstr "Nessuna piattaforma installata." msgid "No platforms matching your search." msgstr "Non ci sono piattaforme corrispondenti alla tua ricerca." -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" "Non è stata trovata alcuna porta di upload, come alternativa verrà " @@ -1732,12 +1728,12 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "Non è stata trovata una soluzione valida per le dipendenze" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "Memoria esaurita; guarda %[1]s per consigli su come ridurne l'utilizzo." -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Non usata: %[1]s" @@ -1757,7 +1753,7 @@ msgstr "" "Omette i dettagli della libreria per tutte le versioni tranne la più recente" " (produce un output JSON più compatto)." -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "Apre una porta di comunicazione con una scheda." @@ -1850,7 +1846,7 @@ msgstr "Website pacchetto:" msgid "Paragraph: %s" msgstr "Paragrafo: %s" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "Percorso" @@ -1882,7 +1878,7 @@ msgstr "" "Percorso in cui salvare i file compilati. Se omesso, verrà creata una " "directory nel percorso temporaneo predefinito del tuo sistema operativo." -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "Esecuzione di un touch reset a 1200-bps sulla porta seriale %s" @@ -1894,7 +1890,7 @@ msgstr "La piattaforma %s è già installata" msgid "Platform %s installed" msgstr "La piattaforma %s è installata" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1918,7 +1914,7 @@ msgstr "Impossibile trovare la piattaforma '%s'" msgid "Platform ID" msgstr "ID piattaforma" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "L' ID della piattaforma non è esatto" @@ -1970,7 +1966,7 @@ msgstr "" msgid "Port" msgstr "Porta" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "Porta chiusa: %v" @@ -1978,8 +1974,7 @@ msgstr "Porta chiusa: %v" msgid "Port monitor error" msgstr "Errore di monitoraggio della porta" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "Impossibile trovare la libreria precompilata in \"%[1]s\"" @@ -2055,7 +2050,7 @@ msgstr "Tool richiesto:" msgid "Run as a daemon on port: %s" msgstr "Avvio come demone sulla porta: %s" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" "Avvio in modalità silenziosa, mostra solo l'ingresso e l'uscita del monitor." @@ -2068,7 +2063,7 @@ msgstr "" "Avviato come demone, l'inizializzazione dei core e delle librerie viene " "eseguita una sola volta." -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "Esecuzione della normale compilazione del core..." @@ -2113,6 +2108,10 @@ msgstr "Frase: %s" msgid "Server responded with: %s" msgstr "Il server ha risposto con: %s" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "Imposta il terminale in modalità raw (non bufferizzata)." + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "Imposta un valore di regolazione." @@ -2130,7 +2129,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "Imposta dove salvare il file di configurazione." -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "Impostazioni" @@ -2142,7 +2141,7 @@ msgstr "La chiave delle impostazioni non esiste" msgid "Show all available core versions." msgstr "Mostra tutte le versioni del core disponibili." -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "Mostra tutte le impostazioni della porta di comunicazione." @@ -2239,7 +2238,7 @@ msgstr "Mostra il numero di versione di Arduino CLI." msgid "Size (bytes):" msgstr "Dimensione (bytes):" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2255,13 +2254,13 @@ msgstr "Sketch è stato creato in: %s" msgid "Sketch profile to use" msgstr "Profilo dello sketch da utilizzare" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "" "Sketch troppo grande; guarda %[1]s per consigli su come ridurne la " "dimensione" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2277,24 +2276,24 @@ msgstr "" "Gli sketch con estensione .pde sono deprecati, rinominare i seguenti file in" " .ino:" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "Salta il linking dell'eseguibile finale." -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" "Salto il touch reset a 1200-bps: nessuna porta seriale è stata selezionata!" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "Salta la creazione dell'archivio di: %[1]s" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "Salta la compilazione di: %[1]s" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" "Salta il rilevamento delle dipendenze della libreria precompilata %[1]s" @@ -2355,7 +2354,7 @@ msgstr "" "La chiave '%[1]v' non è un elenco di elementi, non può essere rimossa.\n" "Forse si può usare '%[2]s'?" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "La libreria %s richiede altre installazioni:" @@ -2390,7 +2389,7 @@ msgstr "" "firmare e crittografare un binario. Utilizzato solo dalle piattaforme che lo" " supportano." -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "La piattaforma non supporta '%[1]s' per le librerie precompilate." @@ -2443,7 +2442,7 @@ msgstr "Il prefisso della toolchain" msgid "Toolchain type" msgstr "Il tipo della toolchain" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "Prova ad eseguire %s" @@ -2463,7 +2462,7 @@ msgstr "Tipi: %s" msgid "URL:" msgstr "URL:" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2576,15 +2575,15 @@ msgstr "" "Carica gli sketch di Arduino. Questo NON compila lo sketch prima del " "caricamento." -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "Indirizzo della porta di caricamento, ad esempio: COM3 o /dev/ttyACM2" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "Porta di caricamento trovata su %s" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "Protocollo della porta di caricamento, ad esempio: seriale" @@ -2601,7 +2600,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "Carica il bootloader." -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2624,28 +2623,28 @@ msgstr "Uso: " msgid "Use %s for more information about a command." msgstr "Usa %s per ulteriori informazioni su un comando." -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "Libreria utilizzata" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "Piattaforma utilizzata" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Usata: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "Utilizzo della scheda '%[1]s' dalla piattaforma nella cartella: %[2]s" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" "Utilizzo delle dipendenze delle librerie nella cache per i file: %[1]s" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "Utilizzo del core '%[1]s' dalla piattaforma nella cartella: %[2]s" @@ -2657,17 +2656,15 @@ msgstr "Uso la libreria %[1]s alla versione %[2]s nella cartella: %[3]s %[4]s" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "Uso la libreria %[1]s nella cartella: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "Utilizzo del core precompilato: %[1]s" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "Utilizzo della libreria precompilata in %[1]s" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Uso il file precedentemente compilato: %[1]s" @@ -2679,7 +2676,7 @@ msgstr "VERSIONE" msgid "VERSION_NUMBER" msgstr "VERSION_NUMBER" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "Valori" @@ -2688,7 +2685,7 @@ msgstr "Valori" msgid "Verify uploaded binary after the upload." msgstr "Verifica dei binari dopo il caricamento." -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "Versione" @@ -2705,7 +2702,7 @@ msgstr "ATTENZIONE: non è possibile configurare la piattaforma: %s" msgid "WARNING cannot configure tool: %s" msgstr "ATTENZIONE non è possibile configurare lo strumento: %s" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" "ATTENZIONE: lo sketch è compilato utilizzando una o più librerie " @@ -2720,11 +2717,11 @@ msgstr "" "%[2]s e potrebbe non essere compatibile con la tua scheda che utilizza " "l'architettura %[3]s" -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "In attesa della porta di caricamento..." -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2776,11 +2773,11 @@ msgstr "" msgid "archivePath" msgstr "percorso dell'archivio" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "Manca il pattern arduino-preprocessor" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "rileva automaticamente l'artefatto di compilazione: %s" @@ -2788,7 +2785,7 @@ msgstr "rileva automaticamente l'artefatto di compilazione: %s" msgid "available only in text format" msgstr "disponibile solo in formato testo" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "file binario non trovato in %s" @@ -2834,11 +2831,11 @@ msgstr "Impossibile recuperare il flusso di errori standard: %s" msgid "can't retrieve standard output stream: %s" msgstr "Impossibile recuperare il flusso di output standard: %s" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "candidati" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "Impossibile eseguire il tool di caricamento: %s" @@ -2882,7 +2879,7 @@ msgstr "calcolo dell'hash: %s" msgid "copying library to destination directory:" msgstr "copia della libreria nella directory di destinazione:" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "impossibile trovare un artefatto di compilazione valido" @@ -2899,7 +2896,7 @@ msgstr "Impossibile rimuovere la vecchia libreria" msgid "could not update sketch project file" msgstr "non è stato possibile aggiornare il file del progetto" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "creazione in corso della cartella cache del core: %s" @@ -2911,7 +2908,7 @@ msgstr "creazione di installed.json in %[1]s: %[2]s" msgid "creating temp dir for extraction: %s" msgstr "creazione di una directory temporanea per l'estrazione: %s" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "la sezione dati supera lo spazio disponibile nella scheda" @@ -2919,7 +2916,7 @@ msgstr "la sezione dati supera lo spazio disponibile nella scheda" msgid "dependency '%s' is not available" msgstr "la dipendenza '%s' non è disponibile" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "la destinazione esiste già" @@ -3239,7 +3236,7 @@ msgstr "il valore di configurazione della porta non è valido per %s: %s" msgid "invalid port configuration: %s" msgstr "la configurazione della porta non è valida: %s" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "scrittura non valida '%[1]s': %[2]s" @@ -3384,7 +3381,7 @@ msgstr "release del monitor non è stata trovata: %s" msgid "moving extracted archive to destination dir: %s" msgstr "sto spostando l'archivio estratto nella directory di destinazione: %s" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "sono stati trovati più artefatti di compilazione: '%[1]s' e '%[2]s'" @@ -3408,7 +3405,7 @@ msgstr "non è stato specificato alcun eseguibile" msgid "no instance specified" msgstr "non è stata specificata alcuna istanza" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "non è stata specificata alcuna directory/file di sketch o di build" @@ -3422,7 +3419,7 @@ msgstr "" "non c'è una directory radice unica nell'archivio, ma sono state trovate " "'%[1]s' e '%[2]s'." -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "Non è stata fornita alcuna porta di upload" @@ -3500,7 +3497,7 @@ msgstr "la piattaforma %s non è installata" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "piattaforma non installata" @@ -3516,7 +3513,7 @@ msgstr "rilevamento collegabile già aggiunto: %s" msgid "port" msgstr "porta" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "la porta non è stata trovata: %[1]s %[2]s" @@ -3552,7 +3549,7 @@ msgstr "lettura cartella %s" msgid "reading directory %s content: %w" msgstr "lettura del contenuto della directory %s: %w" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "lettura del file %[1]s: %[2]s" @@ -3580,7 +3577,7 @@ msgstr "lettura di library_index.json: %s" msgid "reading package root dir: %s" msgstr "lettura della directory principale del pacchetto: %s" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "scrittura non trovata '%s'" @@ -3653,7 +3650,7 @@ msgstr "il percorso dello sketch non è valido" msgid "sketchPath" msgstr "percorso dello sketch" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "la sorgente non è una directory" @@ -3677,12 +3674,12 @@ msgstr "verifica se l'archivio è memorizzato nella cache: %s" msgid "testing local archive integrity: %s" msgstr "verifica l'integrità dell'archivio locale: %s" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "la sezione del testo supera lo spazio disponibile nella scheda" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "il database di compilazione potrebbe essere incompleto o impreciso" @@ -3734,20 +3731,16 @@ msgid "" msgstr "" "sono necessarie due versioni diverse della libreria %[1]s: %[2]s e %[3]s" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" "non è possibile calcolare il percorso relativo allo sketch per l'elemento" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "non è possibile creare una cartella per salvare lo sketch" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "non è possibile creare una cartella per salvare gli sketch" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "non è possibile creare la cartella contenente l'elemento" @@ -3756,19 +3749,15 @@ msgid "unable to marshal config to YAML: %v" msgstr "" "non è possibile eseguire il marshalling della configurazione in YAML: %v" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "non è possibile leggere il contenuto dell'elemento di destinazione" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "non è stato possibile leggere i contenuti della risorsa" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "non è stato possibile salvare lo sketch sul disco" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "non è possibile scrivere sul file di destinazione" @@ -3796,7 +3785,7 @@ msgstr "aggiorna arduino:samd all'ultima versione" msgid "upgrade everything to the latest version" msgstr "aggiornare tutto con l'ultima versione disponibile" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "errore durante il caricamento: %s" @@ -3804,11 +3793,11 @@ msgstr "errore durante il caricamento: %s" msgid "user directory not set" msgstr "la directory dell'utente non è configurata" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "l'input dell'utente non è supportato per il formato dell'output '%s'" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "l'input dell'utente non è supportato nella modalità non interattiva" diff --git a/i18n/data/ja.po b/i18n/data/ja.po index 91a0139762c..07d9440dd3a 100644 --- a/i18n/data/ja.po +++ b/i18n/data/ja.po @@ -15,7 +15,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" @@ -27,7 +27,7 @@ msgstr "" msgid "%[1]s is required but %[2]s is currently installed." msgstr "" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s パターンが見つかりません" @@ -51,7 +51,7 @@ msgstr "%[1]s, プロトコルバージョン: %[2]d" msgid "%s already downloaded" msgstr "%sはすでにダウンロードされています" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%sと%sは同時に利用できません" @@ -156,7 +156,7 @@ msgstr "" msgid "Already installed %s" msgstr "" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "" @@ -164,7 +164,7 @@ msgstr "" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -180,7 +180,7 @@ msgstr "" msgid "Archive already exists" msgstr "" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "%[1]sにビルドされたコア(キャッシュ)をアーカイブ中です" @@ -265,7 +265,7 @@ msgstr "" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "ブートローダのファイルが指定されましたが次が不足しています:%[1]s" @@ -314,11 +314,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -358,7 +358,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -400,7 +400,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -408,19 +408,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "スケッチをコンパイルしています..." @@ -437,7 +437,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -455,7 +455,7 @@ msgstr "" msgid "Connected" msgstr "" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -471,11 +471,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -501,7 +501,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -537,7 +537,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "初期値" @@ -571,7 +571,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -684,7 +684,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -700,11 +700,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -712,7 +712,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -765,7 +765,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -775,8 +775,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -784,7 +784,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -804,7 +804,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -820,11 +820,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -836,11 +836,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -904,15 +904,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -956,7 +956,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -984,17 +984,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1022,7 +1022,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1036,15 +1036,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1072,7 +1072,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1080,7 +1080,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1109,9 +1109,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1143,7 +1141,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1151,19 +1149,19 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." msgstr "" "最大%[2]sバイトのRAMのうち、グローバル変数が%[1]sバイト(%[3]s%%)を使っていて、ローカル変数で%[4]sバイト使うことができます。" -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "グローバル変数は%[1]sバイトのRAMを使用しています。" #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1233,7 +1231,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1272,15 +1270,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1328,7 +1326,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1367,7 +1365,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1393,7 +1391,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1410,7 +1408,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1465,7 +1463,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "スケッチが使用できるメモリが少なくなっています。動作が不安定になる可能性があります。" @@ -1482,7 +1480,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "%[2]sのライブラリに「%[1]s」がありません" @@ -1506,7 +1504,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1522,7 +1520,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "「%[1]s」に対して複数のライブラリが見つかりました" @@ -1536,7 +1534,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1586,7 +1584,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1594,11 +1592,11 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "スケッチが使用するメモリが足りません。メモリを節約する方法については、以下のURLのページを参照してください。%[1]s" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "未使用:%[1]s" @@ -1616,7 +1614,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1699,7 +1697,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1725,7 +1723,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1737,7 +1735,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1759,7 +1757,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1807,7 +1805,7 @@ msgstr "" msgid "Port" msgstr "シリアルポート" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1815,8 +1813,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1892,7 +1889,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1902,7 +1899,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1942,6 +1939,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1956,7 +1957,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1968,7 +1969,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2049,7 +2050,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2063,11 +2064,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "スケッチが大きすぎます。%[1]s には、小さくするコツが書いてあります。" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2079,23 +2080,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2147,7 +2148,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2173,7 +2174,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2220,7 +2221,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2240,7 +2241,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2346,15 +2347,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2370,7 +2371,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2389,27 +2390,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "使用済:%[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2421,17 +2422,15 @@ msgstr "次のフォルダのライブラリ%[1]sバージョン%[2]sを使用 msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "次のフォルダのライブラリ%[1]sを使用中:%[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "以前コンパイルされたファイルを使用中:%[1]s" @@ -2443,7 +2442,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2452,7 +2451,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2469,7 +2468,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2480,11 +2479,11 @@ msgid "" msgstr "" "警告:ライブラリ%[1]sはアーキテクチャ%[2]sに対応したものであり、アーキテクチャ%[3]sで動作するこのボードとは互換性がないかもしれません。" -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2527,11 +2526,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2539,7 +2538,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2585,11 +2584,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2633,7 +2632,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2650,7 +2649,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2662,7 +2661,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2670,7 +2669,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2974,7 +2973,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3112,7 +3111,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3134,7 +3133,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3146,7 +3145,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3222,7 +3221,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3238,7 +3237,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3273,7 +3272,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3301,7 +3300,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3371,7 +3370,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3395,12 +3394,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3451,19 +3450,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3471,19 +3466,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3511,7 +3502,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3519,11 +3510,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/kk.po b/i18n/data/kk.po new file mode 100644 index 00000000000..996bdbc294d --- /dev/null +++ b/i18n/data/kk.po @@ -0,0 +1,3523 @@ +# +msgid "" +msgstr "" +"Language-Team: Kazakh (https://app.transifex.com/arduino-1/teams/108174/kk/)\n" +"Language: kk\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" + +#: version/version.go:59 +msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" +msgstr "" + +#: arduino/builder/detector/detector.go:456 +msgid "%[1]s folder is no longer supported! See %[2]s for more information" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:49 +msgid "%[1]s invalid, rebuilding all" +msgstr "" + +#: internal/cli/lib/check_deps.go:111 +msgid "%[1]s is required but %[2]s is currently installed." +msgstr "" + +#: arduino/builder/utils/utils.go:311 +msgid "%[1]s pattern is missing" +msgstr "" + +#: arduino/discovery/discovery.go:74 +msgid "%[1]s, message: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:83 +msgid "%[1]s, port: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:80 +msgid "%[1]s, ports: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:77 +msgid "%[1]s, protocol version: %[2]d" +msgstr "" + +#: arduino/resources/download.go:49 +msgid "%s already downloaded" +msgstr "" + +#: commands/upload/upload.go:689 +msgid "%s and %s cannot be used together" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:353 +msgid "%s installed" +msgstr "" + +#: internal/cli/lib/check_deps.go:108 +msgid "%s is already installed." +msgstr "" + +#: arduino/cores/packagemanager/loader.go:65 +#: arduino/cores/packagemanager/loader.go:652 +msgid "%s is not a directory" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:287 +msgid "%s is not managed by package manager" +msgstr "" + +#: internal/cli/lib/check_deps.go:105 +msgid "%s must be installed." +msgstr "" + +#: arduino/builder/preprocessor/ctags.go:190 +#: arduino/builder/preprocessor/gcc.go:58 +msgid "%s pattern is missing" +msgstr "" + +#: arduino/errors.go:819 +msgid "'%s' has an invalid signature" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:400 +msgid "" +"'build.core' and 'build.variant' refer to different platforms: %[1]s and " +"%[2]s" +msgstr "" + +#: internal/cli/board/listall.go:89 internal/cli/board/search.go:86 +msgid "(hidden)" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:34 +msgid "(legacy)" +msgstr "" + +#: internal/cli/lib/install.go:81 +msgid "" +"--git-url and --zip-path are disabled by default, for more information see: " +"%v" +msgstr "" + +#: internal/cli/lib/install.go:83 +msgid "" +"--git-url and --zip-path flags allow installing untrusted files, use it at " +"your own risk." +msgstr "" + +#: internal/cli/lib/install.go:86 +msgid "--git-url or --zip-path can't be used with --install-in-builtin-dir" +msgstr "" + +#: commands/sketch/new.go:66 +msgid ".ino file already exists" +msgstr "" + +#: internal/cli/updater/updater.go:71 +msgid "A new release of Arduino CLI is available:" +msgstr "" + +#: arduino/errors.go:300 +msgid "A programmer is required to upload" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "ARCH" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:80 +msgid "ARDUINO COMMAND LINE MANUAL" +msgstr "" + +#: internal/cli/usage.go:32 +msgid "Additional help topics:" +msgstr "" + +#: internal/cli/config/add.go:73 internal/cli/config/add.go:74 +msgid "Adds one or more values to a setting." +msgstr "" + +#: internal/cli/usage.go:27 +msgid "Aliases:" +msgstr "" + +#: internal/cli/core/upgrade.go:72 +msgid "All the cores are already at the latest version" +msgstr "" + +#: commands/lib/install.go:86 +msgid "Already installed %s" +msgstr "" + +#: arduino/builder/detector/detector.go:89 +msgid "Alternatives for %[1]s: %[2]s" +msgstr "" + +#: arduino/builder/preprocessor/ctags.go:69 +msgid "An error occurred adding prototypes" +msgstr "" + +#: arduino/builder/detector/detector.go:210 +msgid "An error occurred detecting libraries" +msgstr "" + +#: internal/cli/daemon/daemon.go:63 +msgid "Append debug logging to the specified file" +msgstr "" + +#: internal/cli/lib/search.go:164 +msgid "Architecture: %s" +msgstr "" + +#: commands/sketch/archive.go:71 +msgid "Archive already exists" +msgstr "" + +#: arduino/builder/core.go:188 +msgid "Archiving built core (caching) in: %[1]s" +msgstr "" + +#: internal/cli/sketch/sketch.go:31 internal/cli/sketch/sketch.go:32 +msgid "Arduino CLI sketch commands." +msgstr "" + +#: internal/cli/cli.go:70 +msgid "Arduino CLI." +msgstr "" + +#: internal/cli/cli.go:71 +msgid "Arduino Command Line Interface (arduino-cli)." +msgstr "" + +#: internal/cli/board/board.go:31 internal/cli/board/board.go:32 +msgid "Arduino board commands." +msgstr "" + +#: internal/cli/cache/cache.go:31 internal/cli/cache/cache.go:32 +msgid "Arduino cache commands." +msgstr "" + +#: internal/cli/lib/lib.go:31 internal/cli/lib/lib.go:32 +msgid "Arduino commands about libraries." +msgstr "" + +#: internal/cli/config/config.go:33 +msgid "Arduino configuration commands." +msgstr "" + +#: internal/cli/core/core.go:31 internal/cli/core/core.go:32 +msgid "Arduino core operations." +msgstr "" + +#: internal/cli/lib/check_deps.go:56 internal/cli/lib/install.go:127 +msgid "Arguments error: %v" +msgstr "" + +#: internal/cli/board/attach.go:35 +msgid "Attaches a sketch to a board." +msgstr "" + +#: internal/cli/lib/search.go:155 +msgid "Author: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:78 +msgid "" +"Automatic library install can't be performed in this case, please manually " +"remove all duplicates and retry." +msgstr "" + +#: commands/lib/uninstall.go:57 +msgid "" +"Automatic library uninstall can't be performed in this case, please manually" +" remove them." +msgstr "" + +#: internal/cli/lib/list.go:136 +msgid "Available" +msgstr "" + +#: internal/cli/usage.go:29 +msgid "Available Commands:" +msgstr "" + +#: internal/cli/upload/upload.go:71 +msgid "Binary file to upload." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "Board Name" +msgstr "" + +#: internal/cli/board/details.go:138 +msgid "Board name:" +msgstr "" + +#: internal/cli/board/details.go:140 +msgid "Board version:" +msgstr "" + +#: legacy/builder/merge_sketch_with_bootloader.go:71 +msgid "Bootloader file specified but missing: %[1]s" +msgstr "" + +#: internal/cli/compile/compile.go:100 +msgid "Builds of 'core.a' are saved into this path to be cached and reused." +msgstr "" + +#: arduino/resources/index.go:57 +msgid "Can't create data directory %s" +msgstr "" + +#: arduino/errors.go:512 +msgid "Can't create sketch" +msgstr "" + +#: commands/lib/download.go:63 commands/lib/download.go:66 +msgid "Can't download library" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:133 +#: commands/core/uninstall.go:64 +msgid "Can't find dependencies for platform %s" +msgstr "" + +#: arduino/errors.go:538 +msgid "Can't open sketch" +msgstr "" + +#: internal/cli/config/set.go:54 +msgid "Can't set multiple values in key %v" +msgstr "" + +#: arduino/errors.go:525 +msgid "Can't update sketch" +msgstr "" + +#: internal/cli/arguments/arguments.go:36 +msgid "Can't use the following flags together: %s" +msgstr "" + +#: internal/cli/config/add.go:103 internal/cli/config/remove.go:69 +msgid "Can't write config file: %v" +msgstr "" + +#: internal/cli/daemon/daemon.go:92 +msgid "Can't write debug log: %s" +msgstr "" + +#: commands/compile/compile.go:166 commands/compile/compile.go:169 +msgid "Cannot create build cache directory" +msgstr "" + +#: commands/compile/compile.go:154 +msgid "Cannot create build directory" +msgstr "" + +#: internal/cli/config/init.go:94 +msgid "Cannot create config file directory: %v" +msgstr "" + +#: internal/cli/config/init.go:109 +msgid "Cannot create config file: %v" +msgstr "" + +#: arduino/errors.go:782 +msgid "Cannot create temp dir" +msgstr "" + +#: arduino/errors.go:800 +msgid "Cannot create temp file" +msgstr "" + +#: internal/cli/config/delete.go:53 +msgid "Cannot delete the key %[1]s: %[2]v" +msgstr "" + +#: commands/debug/debug.go:72 +msgid "Cannot execute debug tool" +msgstr "" + +#: internal/cli/config/init.go:72 internal/cli/config/init.go:82 +msgid "Cannot find absolute path: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:140 +msgid "Cannot install platform" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:331 +msgid "Cannot install tool %s" +msgstr "" + +#: commands/upload/upload.go:468 +msgid "Cannot perform port reset: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:158 +msgid "Cannot upgrade platform" +msgstr "" + +#: internal/cli/config/delete.go:57 +msgid "Cannot write the file %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:163 +msgid "Category: %s" +msgstr "" + +#: internal/cli/lib/check_deps.go:37 internal/cli/lib/check_deps.go:38 +msgid "Check dependencies status for the specified library." +msgstr "" + +#: arduino/resources/checksums.go:167 +msgid "Checksum differs from checksum in package.json" +msgstr "" + +#: internal/cli/board/details.go:188 +msgid "Checksum:" +msgstr "" + +#: internal/cli/cache/cache.go:33 +msgid "Clean caches." +msgstr "" + +#: internal/cli/cli.go:126 +msgid "Comma-separated list of additional URLs for the Boards Manager." +msgstr "" + +#: internal/cli/board/list.go:53 +msgid "" +"Command keeps running and prints list of connected boards whenever there is " +"a change." +msgstr "" + +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 +msgid "Compiled sketch not found in %s" +msgstr "" + +#: internal/cli/compile/compile.go:84 internal/cli/compile/compile.go:85 +msgid "Compiles Arduino sketches." +msgstr "" + +#: legacy/builder/builder.go:129 +msgid "Compiling core..." +msgstr "" + +#: legacy/builder/builder.go:94 +msgid "Compiling libraries..." +msgstr "" + +#: arduino/builder/libraries.go:182 +msgid "Compiling library \"%[1]s\"" +msgstr "" + +#: legacy/builder/builder.go:66 +msgid "Compiling sketch..." +msgstr "" + +#: internal/cli/config/init.go:88 +msgid "" +"Config file already exists, use --overwrite to discard the existing one." +msgstr "" + +#: internal/cli/config/init.go:112 +msgid "Config file written to: %s" +msgstr "" + +#: internal/cli/debug/debug.go:151 +msgid "Configuration options for %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:68 +msgid "" +"Configure communication port settings. The format is " +"=[,=]..." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:174 +msgid "Configuring platform." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:341 +msgid "Configuring tool." +msgstr "" + +#: internal/cli/board/list.go:188 +msgid "Connected" +msgstr "" + +#: internal/cli/monitor/monitor.go:155 +msgid "Connected to %s! Press CTRL-C to exit." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Core" +msgstr "" + +#: arduino/httpclient/httpclient.go:112 +msgid "Could not connect via HTTP" +msgstr "" + +#: commands/instances.go:503 +msgid "Could not create index directory" +msgstr "" + +#: arduino/builder/core.go:61 +msgid "Couldn't deeply cache core build: %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:148 +msgid "Couldn't determine program size" +msgstr "" + +#: internal/cli/arguments/sketch.go:36 internal/cli/lib/install.go:109 +msgid "Couldn't get current working directory: %v" +msgstr "" + +#: internal/cli/sketch/new.go:37 internal/cli/sketch/new.go:38 +msgid "Create a new Sketch" +msgstr "" + +#: internal/cli/compile/compile.go:97 +msgid "Create and print a profile configuration from the build." +msgstr "" + +#: internal/cli/sketch/archive.go:38 internal/cli/sketch/archive.go:39 +msgid "Creates a zip file containing all sketch files." +msgstr "" + +#: internal/cli/config/init.go:43 +msgid "" +"Creates or updates the configuration file in the data directory or custom " +"directory with the current configuration settings." +msgstr "" + +#: internal/cli/compile/compile.go:309 +msgid "" +"Currently, Build Profiles only support libraries available through Arduino " +"Library Manager." +msgstr "" + +#: internal/cli/core/list.go:93 internal/cli/core/search.go:104 +#: internal/cli/outdated/outdated.go:98 +msgid "DEPRECATED" +msgstr "" + +#: internal/cli/daemon/daemon.go:178 +msgid "Daemon is now listening on %s:%s" +msgstr "" + +#: internal/cli/debug/debug.go:53 +msgid "Debug Arduino sketches." +msgstr "" + +#: internal/cli/debug/debug.go:54 +msgid "" +"Debug Arduino sketches. (this command opens an interactive gdb session)" +msgstr "" + +#: internal/cli/debug/debug.go:63 +msgid "Debug interpreter e.g.: %s" +msgstr "" + +#: commands/debug/debug_info.go:148 +msgid "Debugging not supported for board %s" +msgstr "" + +#: internal/cli/board/details.go:142 +msgid "Debugging supported:" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Default" +msgstr "" + +#: internal/cli/board/attach.go:108 +msgid "Default FQBN set to" +msgstr "" + +#: internal/cli/board/attach.go:107 +msgid "Default port set to" +msgstr "" + +#: internal/cli/cache/clean.go:30 +msgid "Delete Boards/Library Manager download cache." +msgstr "" + +#: internal/cli/cache/clean.go:31 +msgid "" +"Delete contents of the `directories.downloads` folder, where archive files " +"are staged during installation of libraries and boards platforms." +msgstr "" + +#: internal/cli/config/delete.go:32 internal/cli/config/delete.go:33 +msgid "Deletes a settings key and all its sub keys." +msgstr "" + +#: internal/cli/lib/search.go:171 +msgid "Dependencies: %s" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:88 +msgid "Description" +msgstr "" + +#: legacy/builder/builder.go:58 +msgid "Detecting libraries used..." +msgstr "" + +#: internal/cli/board/list.go:43 +msgid "" +"Detects and displays a list of boards connected to the current computer." +msgstr "" + +#: internal/cli/debug/debug.go:64 +msgid "Directory containing binaries for debug." +msgstr "" + +#: internal/cli/upload/upload.go:70 +msgid "Directory containing binaries to upload." +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:45 +msgid "" +"Directory where to save generated files. Default is './docs', the directory " +"must exist." +msgstr "" + +#: internal/cli/completion/completion.go:44 +msgid "Disable completion description for shells that support it" +msgstr "" + +#: internal/cli/board/list.go:189 +msgid "Disconnected" +msgstr "" + +#: internal/cli/daemon/daemon.go:64 +msgid "Display only the provided gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:61 +msgid "Do not install dependencies." +msgstr "" + +#: internal/cli/lib/install.go:62 +msgid "Do not overwrite already installed libraries." +msgstr "" + +#: internal/cli/core/install.go:55 +msgid "Do not overwrite already installed platforms." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:58 +#: internal/cli/upload/upload.go:75 +msgid "Do not perform the actual upload, just log out actions" +msgstr "" + +#: internal/cli/daemon/daemon.go:61 +msgid "Do not terminate daemon process if the parent process dies" +msgstr "" + +#: commands/lib/download.go:60 +msgid "Downloading %s" +msgstr "" + +#: arduino/resources/index.go:129 +msgid "Downloading index signature: %s" +msgstr "" + +#: arduino/resources/index.go:74 commands/instances.go:542 +#: commands/instances.go:551 +msgid "Downloading index: %s" +msgstr "" + +#: commands/instances.go:439 +msgid "Downloading library %s" +msgstr "" + +#: commands/instances.go:136 +msgid "Downloading missing tool %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:93 +msgid "Downloading packages" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:98 +msgid "Downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:178 +msgid "Downloading tool %s" +msgstr "" + +#: internal/cli/core/download.go:35 internal/cli/core/download.go:36 +msgid "Downloads one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/download.go:35 internal/cli/lib/download.go:36 +msgid "Downloads one or more libraries without installing them." +msgstr "" + +#: internal/cli/daemon/daemon.go:62 +msgid "Enable debug logging of gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:64 +msgid "Enter a path to zip file" +msgstr "" + +#: internal/cli/lib/install.go:63 +msgid "Enter git url for libraries hosted on repositories" +msgstr "" + +#: commands/sketch/archive.go:107 +msgid "Error adding file to sketch archive" +msgstr "" + +#: arduino/builder/core.go:194 +msgid "Error archiving built core (caching) in %[1]s: %[2]s" +msgstr "" + +#: internal/cli/sketch/archive.go:80 +msgid "Error archiving: %v" +msgstr "" + +#: commands/sketch/archive.go:95 +msgid "Error calculating relative file path" +msgstr "" + +#: internal/cli/cache/clean.go:45 +msgid "Error cleaning caches: %v" +msgstr "" + +#: internal/cli/compile/compile.go:218 +msgid "Error converting path to absolute: %v" +msgstr "" + +#: commands/compile/compile.go:405 +msgid "Error copying output file %s" +msgstr "" + +#: internal/cli/instance/instance.go:43 +msgid "Error creating instance: %v" +msgstr "" + +#: commands/compile/compile.go:385 +msgid "Error creating output dir" +msgstr "" + +#: commands/sketch/archive.go:83 +msgid "Error creating sketch archive" +msgstr "" + +#: internal/cli/sketch/new.go:69 internal/cli/sketch/new.go:81 +msgid "Error creating sketch: %v" +msgstr "" + +#: internal/cli/board/list.go:78 internal/cli/board/list.go:89 +msgid "Error detecting boards: %v" +msgstr "" + +#: internal/cli/core/download.go:68 internal/cli/lib/download.go:65 +msgid "Error downloading %[1]s: %[2]v" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:106 +#: arduino/cores/packagemanager/profiles.go:107 +#: arduino/cores/packagemanager/profiles.go:111 +#: arduino/cores/packagemanager/profiles.go:112 +msgid "Error downloading %s" +msgstr "" + +#: arduino/resources/index.go:75 commands/instances.go:602 +msgid "Error downloading index '%s'" +msgstr "" + +#: arduino/resources/index.go:130 +msgid "Error downloading index signature '%s'" +msgstr "" + +#: commands/instances.go:451 +msgid "Error downloading library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:129 +#: arduino/cores/packagemanager/profiles.go:130 +msgid "Error downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:127 +#: arduino/cores/packagemanager/profiles.go:180 +msgid "Error downloading tool %s" +msgstr "" + +#: internal/cli/debug/debug.go:114 +msgid "Error during Debug: %v" +msgstr "" + +#: internal/cli/arguments/port.go:144 +msgid "Error during FQBN detection: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:244 internal/cli/feedback/feedback.go:250 +msgid "Error during JSON encoding of the output: %v" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:72 +#: internal/cli/burnbootloader/burnbootloader.go:85 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 +msgid "Error during Upload: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:256 +msgid "Error during YAML encoding of the output: %v" +msgstr "" + +#: internal/cli/compile/compile.go:355 +msgid "Error during build: %v" +msgstr "" + +#: internal/cli/core/install.go:79 +msgid "Error during install: %v" +msgstr "" + +#: internal/cli/core/uninstall.go:68 +msgid "Error during uninstall: %v" +msgstr "" + +#: internal/cli/core/upgrade.go:119 +msgid "Error during upgrade: %v" +msgstr "" + +#: arduino/resources/index.go:97 arduino/resources/index.go:116 +msgid "Error extracting %s" +msgstr "" + +#: commands/upload/upload.go:373 +msgid "Error finding build artifacts" +msgstr "" + +#: internal/cli/debug/debug.go:98 +msgid "Error getting Debug info: %v" +msgstr "" + +#: commands/sketch/archive.go:59 +msgid "Error getting absolute path of sketch archive" +msgstr "" + +#: internal/cli/board/details.go:73 +msgid "Error getting board details: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:81 +msgid "Error getting current directory for compilation database: %s" +msgstr "" + +#: commands/compile/compile.go:319 commands/lib/list.go:108 +msgid "Error getting information for library %s" +msgstr "" + +#: internal/cli/lib/examples.go:72 +msgid "Error getting libraries info: %v" +msgstr "" + +#: internal/cli/arguments/fqbn.go:90 +msgid "Error getting port metadata: %v" +msgstr "" + +#: internal/cli/monitor/monitor.go:95 +msgid "Error getting port settings details: %s" +msgstr "" + +#: internal/cli/upload/upload.go:155 +msgid "Error getting user input" +msgstr "" + +#: internal/cli/instance/instance.go:82 internal/cli/instance/instance.go:99 +msgid "Error initializing instance: %v" +msgstr "" + +#: internal/cli/lib/install.go:145 +msgid "Error installing %s: %v" +msgstr "" + +#: internal/cli/lib/install.go:119 +msgid "Error installing Git Library: %v" +msgstr "" + +#: internal/cli/lib/install.go:98 +msgid "Error installing Zip Library: %v" +msgstr "" + +#: commands/instances.go:461 +msgid "Error installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:137 +#: arduino/cores/packagemanager/profiles.go:138 +msgid "Error installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:181 +#: arduino/cores/packagemanager/profiles.go:188 +#: arduino/cores/packagemanager/profiles.go:189 +msgid "Error installing tool %s" +msgstr "" + +#: internal/cli/board/listall.go:63 +msgid "Error listing boards: %v" +msgstr "" + +#: internal/cli/lib/list.go:89 +msgid "Error listing libraries: %v" +msgstr "" + +#: internal/cli/core/list.go:69 +msgid "Error listing platforms: %v" +msgstr "" + +#: arduino/errors.go:425 +msgid "Error loading hardware platform" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:115 +#: arduino/cores/packagemanager/profiles.go:116 +msgid "Error loading index %s" +msgstr "" + +#: arduino/resources/index.go:91 +msgid "Error opening %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:86 +msgid "Error opening debug logging file: %s" +msgstr "" + +#: internal/cli/compile/compile.go:191 +msgid "Error opening source code overrides data file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:204 +msgid "Error parsing --show-properties flag: %v" +msgstr "" + +#: commands/compile/compile.go:395 +msgid "Error reading build directory" +msgstr "" + +#: configuration/configuration.go:68 +msgid "Error reading config file: %v" +msgstr "" + +#: commands/sketch/archive.go:77 +msgid "Error reading sketch files" +msgstr "" + +#: internal/cli/lib/check_deps.go:65 +msgid "Error resolving dependencies for %[1]s: %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:68 +msgid "Error retrieving core list: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:155 +msgid "Error rolling-back changes: %s" +msgstr "" + +#: arduino/resources/index.go:153 arduino/resources/index.go:165 +msgid "Error saving downloaded index" +msgstr "" + +#: arduino/resources/index.go:160 arduino/resources/index.go:169 +msgid "Error saving downloaded index signature" +msgstr "" + +#: internal/cli/board/search.go:60 +msgid "Error searching boards: %v" +msgstr "" + +#: internal/cli/lib/search.go:79 +msgid "Error searching for Libraries: %v" +msgstr "" + +#: internal/cli/core/search.go:80 +msgid "Error searching for platforms: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:66 +msgid "Error serializing compilation database: %s" +msgstr "" + +#: internal/cli/board/list.go:81 +msgid "Error starting discovery: %v" +msgstr "" + +#: internal/cli/lib/uninstall.go:63 +msgid "Error uninstalling %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:68 internal/cli/lib/update_index.go:54 +msgid "Error updating library index: %v" +msgstr "" + +#: internal/cli/lib/upgrade.go:71 +msgid "Error upgrading libraries" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:150 +msgid "Error upgrading platform: %s" +msgstr "" + +#: arduino/resources/index.go:139 +msgid "Error verifying signature" +msgstr "" + +#: arduino/builder/detector/detector.go:366 +msgid "Error while detecting libraries included by %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 +msgid "Error while determining sketch size: %s" +msgstr "" + +#: arduino/builder/compilation/database.go:69 +msgid "Error writing compilation database: %s" +msgstr "" + +#: internal/cli/completion/completion.go:56 +msgid "Error: command description is not supported by %v" +msgstr "" + +#: internal/cli/compile/compile.go:197 +msgid "Error: invalid source code overrides data file: %v" +msgstr "" + +#: internal/cli/board/list.go:96 +msgid "Event" +msgstr "" + +#: internal/cli/lib/examples.go:120 +msgid "Examples for library %s" +msgstr "" + +#: internal/cli/usage.go:28 +msgid "Examples:" +msgstr "" + +#: internal/cli/debug/debug.go:132 +msgid "Executable to debug" +msgstr "" + +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 +msgid "Expected compiled sketch in directory %s, but is a file instead" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/board/details.go:40 +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "FQBN" +msgstr "" + +#: internal/cli/board/details.go:139 +msgid "FQBN:" +msgstr "" + +#: commands/upload/upload.go:502 +msgid "Failed chip erase" +msgstr "" + +#: commands/upload/upload.go:509 +msgid "Failed programming" +msgstr "" + +#: commands/upload/upload.go:505 +msgid "Failed to burn bootloader" +msgstr "" + +#: commands/instances.go:166 +msgid "Failed to create data directory" +msgstr "" + +#: commands/instances.go:156 +msgid "Failed to create downloads directory" +msgstr "" + +#: internal/cli/daemon/daemon.go:133 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is an invalid port." +msgstr "" + +#: internal/cli/daemon/daemon.go:128 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is unknown name." +msgstr "" + +#: internal/cli/daemon/daemon.go:140 +msgid "Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v" +msgstr "" + +#: internal/cli/daemon/daemon.go:138 +msgid "Failed to listen on TCP port: %s. Address already in use." +msgstr "" + +#: commands/upload/upload.go:513 +msgid "Failed uploading" +msgstr "" + +#: internal/cli/board/details.go:186 +msgid "File:" +msgstr "" + +#: commands/compile/compile.go:137 +msgid "" +"Firmware encryption/signing requires all the following properties to be " +"defined: %s" +msgstr "" + +#: commands/daemon/debug.go:46 +msgid "First message must contain debug request, not data" +msgstr "" + +#: internal/cli/arguments/arguments.go:47 +msgid "Flag %[1]s is mandatory when used in conjunction with: %[2]s" +msgstr "" + +#: internal/cli/usage.go:30 +msgid "Flags:" +msgstr "" + +#: internal/cli/arguments/post_install.go:35 +msgid "" +"Force run of post-install scripts (if the CLI is not running interactively)." +msgstr "" + +#: internal/cli/arguments/post_install.go:36 +msgid "" +"Force skip of post-install scripts (if the CLI is running interactively)." +msgstr "" + +#: arduino/errors.go:840 +msgid "Found %d platforms matching \"%s\": %s" +msgstr "" + +#: internal/cli/arguments/fqbn.go:37 +msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" +msgstr "" + +#: internal/cli/debug/debug.go:146 +msgid "GDB Server path" +msgstr "" + +#: internal/cli/debug/debug.go:145 +msgid "GDB Server type" +msgstr "" + +#: commands/debug/debug.go:178 +msgid "GDB server '%s' is not supported" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:38 +#: internal/cli/generatedocs/generatedocs.go:39 +msgid "Generates bash completion and command manpages." +msgstr "" + +#: internal/cli/completion/completion.go:38 +msgid "Generates completion scripts" +msgstr "" + +#: internal/cli/completion/completion.go:39 +msgid "Generates completion scripts for various shells" +msgstr "" + +#: legacy/builder/builder.go:63 +msgid "Generating function prototypes..." +msgstr "" + +#: internal/cli/usage.go:31 +msgid "Global Flags:" +msgstr "" + +#: arduino/builder/sizer/sizer.go:158 +msgid "" +"Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " +"bytes for local variables. Maximum is %[2]s bytes." +msgstr "" + +#: arduino/builder/sizer/sizer.go:164 +msgid "Global variables use %[1]s bytes of dynamic memory." +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 +#: internal/cli/outdated/outdated.go:83 +msgid "ID" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Id" +msgstr "" + +#: internal/cli/board/details.go:153 +msgid "Identification properties:" +msgstr "" + +#: internal/cli/compile/compile.go:132 +msgid "If set built binaries will be exported to the sketch folder." +msgstr "" + +#: internal/cli/core/list.go:45 +msgid "" +"If set return all installable and installed cores, including manually " +"installed." +msgstr "" + +#: internal/cli/lib/list.go:53 +msgid "Include built-in libraries (from platforms and IDE) in listing." +msgstr "" + +#: internal/cli/sketch/archive.go:50 +msgid "Includes %s directory in the archive." +msgstr "" + +#: internal/cli/lib/install.go:65 +msgid "Install libraries in the IDE-Builtin directory" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:85 +msgid "Installed" +msgstr "" + +#: commands/lib/install.go:140 +msgid "Installed %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:316 +#: commands/lib/install.go:126 +msgid "Installing %s" +msgstr "" + +#: commands/instances.go:459 +msgid "Installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:116 +#: arduino/cores/packagemanager/profiles.go:135 +msgid "Installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:186 +msgid "Installing tool %s" +msgstr "" + +#: internal/cli/core/install.go:37 internal/cli/core/install.go:38 +msgid "Installs one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/install.go:45 internal/cli/lib/install.go:46 +msgid "Installs one or more specified libraries into the system." +msgstr "" + +#: arduino/builder/detector/detector.go:392 +msgid "Internal error in cache" +msgstr "" + +#: arduino/errors.go:378 +msgid "Invalid '%[1]s' property: %[2]s" +msgstr "" + +#: internal/cli/cli.go:250 +msgid "" +"Invalid Call : should show Help, but it is available only in TEXT mode." +msgstr "" + +#: arduino/errors.go:62 +msgid "Invalid FQBN" +msgstr "" + +#: internal/cli/daemon/daemon.go:151 +msgid "Invalid TCP address: port is missing" +msgstr "" + +#: arduino/errors.go:80 +msgid "Invalid URL" +msgstr "" + +#: commands/instances.go:274 +msgid "Invalid additional URL: %v" +msgstr "" + +#: arduino/resources/index.go:103 +msgid "Invalid archive: file %{1}s not found in archive %{2}s" +msgstr "" + +#: internal/cli/core/download.go:56 internal/cli/core/install.go:65 +#: internal/cli/core/uninstall.go:53 internal/cli/core/upgrade.go:93 +#: internal/cli/lib/download.go:54 internal/cli/lib/uninstall.go:53 +msgid "Invalid argument passed: %v" +msgstr "" + +#: commands/compile/compile.go:190 +msgid "Invalid build properties" +msgstr "" + +#: arduino/builder/sizer/sizer.go:237 +msgid "Invalid data size regexp: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:243 +msgid "Invalid eeprom size regexp: %s" +msgstr "" + +#: arduino/errors.go:48 +msgid "Invalid instance" +msgstr "" + +#: internal/cli/core/upgrade.go:99 +msgid "Invalid item %s" +msgstr "" + +#: arduino/errors.go:98 +msgid "Invalid library" +msgstr "" + +#: configuration/network.go:63 +msgid "Invalid network.proxy '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/cli.go:217 +msgid "Invalid option for --log-level: %s" +msgstr "" + +#: internal/cli/cli.go:229 +msgid "Invalid output format: %s" +msgstr "" + +#: commands/instances.go:554 +msgid "Invalid package index in %s" +msgstr "" + +#: internal/cli/core/uninstall.go:58 +msgid "Invalid parameter %s: version not allowed" +msgstr "" + +#: commands/board/list.go:79 +msgid "Invalid pid value: '%s'" +msgstr "" + +#: arduino/errors.go:222 +msgid "Invalid profile" +msgstr "" + +#: commands/monitor/monitor.go:145 +msgid "Invalid recipe in platform.txt" +msgstr "" + +#: arduino/builder/sizer/sizer.go:227 +msgid "Invalid size regexp: %s" +msgstr "" + +#: internal/cli/core/search.go:124 +msgid "Invalid timeout: %s" +msgstr "" + +#: arduino/errors.go:116 +msgid "Invalid version" +msgstr "" + +#: commands/board/list.go:76 +msgid "Invalid vid value: '%s'" +msgstr "" + +#: internal/cli/compile/compile.go:127 +msgid "" +"Just produce the compilation database, without actually compiling. All build" +" commands are skipped except pre* hooks." +msgstr "" + +#: internal/cli/lib/list.go:38 +msgid "LIBNAME" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "LIBRARY" +msgstr "" + +#: internal/cli/lib/download.go:34 internal/cli/lib/examples.go:42 +#: internal/cli/lib/search.go:40 internal/cli/lib/uninstall.go:34 +msgid "LIBRARY_NAME" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/outdated/outdated.go:86 +msgid "Latest" +msgstr "" + +#: arduino/builder/libraries.go:112 +msgid "Library %[1]s has been declared precompiled:" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:135 +#: commands/lib/install.go:92 +msgid "" +"Library %[1]s is already installed, but with a different version: %[2]s" +msgstr "" + +#: commands/lib/upgrade.go:59 +msgid "Library %s is already at the latest version" +msgstr "" + +#: commands/lib/uninstall.go:39 +msgid "Library %s is not installed" +msgstr "" + +#: commands/instances.go:445 +msgid "Library %s not found" +msgstr "" + +#: arduino/errors.go:446 +msgid "Library '%s' not found" +msgstr "" + +#: arduino/builder/detector/detector.go:465 +msgid "" +"Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." +msgstr "" + +#: arduino/errors.go:575 +msgid "Library install failed" +msgstr "" + +#: commands/lib/install.go:150 commands/lib/install.go:160 +msgid "Library installed" +msgstr "" + +#: internal/cli/lib/search.go:161 +msgid "License: %s" +msgstr "" + +#: legacy/builder/builder.go:156 +msgid "Linking everything together..." +msgstr "" + +#: internal/cli/board/listall.go:39 +msgid "" +"List all boards that have the support platform installed. You can search\n" +"for a specific board if you specify the board name" +msgstr "" + +#: internal/cli/board/listall.go:38 +msgid "List all known boards and their corresponding FQBN." +msgstr "" + +#: internal/cli/board/list.go:42 +msgid "List connected boards." +msgstr "" + +#: internal/cli/arguments/fqbn.go:42 +msgid "" +"List of board options separated by commas. Or can be used multiple times for" +" multiple options." +msgstr "" + +#: internal/cli/compile/compile.go:105 +msgid "" +"List of custom build properties separated by commas. Or can be used multiple" +" times for multiple properties." +msgstr "" + +#: internal/cli/lib/list.go:55 +msgid "List updatable libraries." +msgstr "" + +#: internal/cli/core/list.go:44 +msgid "List updatable platforms." +msgstr "" + +#: internal/cli/board/board.go:33 +msgid "Lists all connected boards." +msgstr "" + +#: internal/cli/outdated/outdated.go:41 +msgid "Lists cores and libraries that can be upgraded" +msgstr "" + +#: commands/instances.go:307 commands/instances.go:318 +#: commands/instances.go:418 +msgid "Loading index file: %v" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:87 +msgid "Location" +msgstr "" + +#: arduino/builder/sizer/sizer.go:199 +msgid "Low memory available, stability problems may occur." +msgstr "" + +#: internal/cli/lib/search.go:156 +msgid "Maintainer: %s" +msgstr "" + +#: internal/cli/arguments/discovery_timeout.go:31 +msgid "Max time to wait for port discovery, e.g.: 30s, 1m" +msgstr "" + +#: internal/cli/cli.go:110 +msgid "" +"Messages with this level and above will be logged. Valid levels are: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:460 +msgid "Missing '%[1]s' from library in %[2]s" +msgstr "" + +#: arduino/errors.go:171 +msgid "Missing FQBN (Fully Qualified Board Name)" +msgstr "" + +#: arduino/errors.go:262 +msgid "Missing port" +msgstr "" + +#: arduino/errors.go:238 +msgid "Missing port address" +msgstr "" + +#: arduino/errors.go:250 +msgid "Missing port protocol" +msgstr "" + +#: arduino/errors.go:288 +msgid "Missing programmer" +msgstr "" + +#: arduino/builder/sizer/sizer.go:231 +msgid "Missing size regexp" +msgstr "" + +#: arduino/errors.go:498 +msgid "Missing sketch path" +msgstr "" + +#: arduino/errors.go:359 +msgid "Monitor '%s' not found" +msgstr "" + +#: internal/cli/monitor/monitor.go:138 +msgid "Monitor port settings:" +msgstr "" + +#: arduino/builder/detector/detector.go:154 +msgid "Multiple libraries were found for \"%[1]s\"" +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:84 +msgid "Name" +msgstr "" + +#: internal/cli/lib/search.go:135 +msgid "Name: \"%s\"" +msgstr "" + +#: internal/cli/upload/upload.go:206 +msgid "New upload port: %[1]s (%[2]s)" +msgstr "" + +#: internal/cli/board/list.go:122 +msgid "No boards found." +msgstr "" + +#: internal/cli/board/attach.go:105 +msgid "No default port or FQBN set" +msgstr "" + +#: internal/cli/lib/examples.go:105 +msgid "No libraries found." +msgstr "" + +#: internal/cli/lib/list.go:128 +msgid "No libraries installed." +msgstr "" + +#: internal/cli/lib/search.go:124 +msgid "No libraries matching your search." +msgstr "" + +#: internal/cli/lib/search.go:130 +msgid "" +"No libraries matching your search.\n" +"Did you mean...\n" +msgstr "" + +#: internal/cli/lib/list.go:126 +msgid "No libraries update is available." +msgstr "" + +#: arduino/errors.go:276 +msgid "No monitor available for the port protocol %s" +msgstr "" + +#: internal/cli/outdated/outdated.go:77 +msgid "No outdated platforms or libraries found." +msgstr "" + +#: internal/cli/core/list.go:86 +msgid "No platforms installed." +msgstr "" + +#: internal/cli/core/search.go:110 +msgid "No platforms matching your search." +msgstr "" + +#: commands/upload/upload.go:458 +msgid "No upload port found, using %s as fallback" +msgstr "" + +#: arduino/errors.go:465 +msgid "No valid dependencies solution found" +msgstr "" + +#: arduino/builder/sizer/sizer.go:189 +msgid "Not enough memory; see %[1]s for tips on reducing your footprint." +msgstr "" + +#: arduino/builder/detector/detector.go:157 +msgid "Not used: %[1]s" +msgstr "" + +#: internal/cli/board/details.go:185 +msgid "OS:" +msgstr "" + +#: internal/cli/board/details.go:147 +msgid "Official Arduino board:" +msgstr "" + +#: internal/cli/lib/search.go:50 +msgid "" +"Omit library details far all versions except the latest (produce a more " +"compact JSON output)." +msgstr "" + +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 +msgid "Open a communication port with a board." +msgstr "" + +#: internal/cli/board/details.go:197 +msgid "Option:" +msgstr "" + +#: internal/cli/compile/compile.go:115 +msgid "" +"Optional, can be: %s. Used to tell gcc which warning level to use (-W flag)." +msgstr "" + +#: internal/cli/compile/compile.go:128 +msgid "Optional, cleanup the build folder and do not use any cached build." +msgstr "" + +#: internal/cli/compile/compile.go:125 +msgid "" +"Optional, optimize compile output for debugging, rather than for release." +msgstr "" + +#: internal/cli/compile/compile.go:117 +msgid "Optional, suppresses almost every output." +msgstr "" + +#: internal/cli/compile/compile.go:116 internal/cli/upload/upload.go:73 +msgid "Optional, turns on verbose mode." +msgstr "" + +#: internal/cli/compile/compile.go:133 +msgid "" +"Optional. Path to a .json file that contains a set of replacements of the " +"sketch source code." +msgstr "" + +#: internal/cli/compile/compile.go:107 +msgid "" +"Override a build property with a custom value. Can be used multiple times " +"for multiple properties." +msgstr "" + +#: internal/cli/config/init.go:57 +msgid "Overwrite existing config file." +msgstr "" + +#: internal/cli/sketch/archive.go:51 +msgid "Overwrites an already existing archive" +msgstr "" + +#: internal/cli/sketch/new.go:44 +msgid "Overwrites an existing .ino sketch." +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "PACKAGER" +msgstr "" + +#: internal/cli/board/details.go:163 +msgid "Package URL:" +msgstr "" + +#: internal/cli/board/details.go:162 +msgid "Package maintainer:" +msgstr "" + +#: internal/cli/board/details.go:161 +msgid "Package name:" +msgstr "" + +#: internal/cli/board/details.go:165 +msgid "Package online help:" +msgstr "" + +#: internal/cli/board/details.go:164 +msgid "Package website:" +msgstr "" + +#: internal/cli/lib/search.go:158 +msgid "Paragraph: %s" +msgstr "" + +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 +msgid "Path" +msgstr "" + +#: internal/cli/compile/compile.go:124 +msgid "" +"Path to a collection of libraries. Can be used multiple times or entries can" +" be comma separated." +msgstr "" + +#: internal/cli/compile/compile.go:122 +msgid "" +"Path to a single library’s root folder. Can be used multiple times or " +"entries can be comma separated." +msgstr "" + +#: internal/cli/cli.go:114 +msgid "Path to the file where logs will be written." +msgstr "" + +#: internal/cli/compile/compile.go:103 +msgid "" +"Path where to save compiled files. If omitted, a directory will be created " +"in the default temporary path of your OS." +msgstr "" + +#: commands/upload/upload.go:439 +msgid "Performing 1200-bps touch reset on serial port %s" +msgstr "" + +#: commands/core/install.go:54 commands/core/install.go:61 +msgid "Platform %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:191 +msgid "Platform %s installed" +msgstr "" + +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 +msgid "" +"Platform %s is not found in any known index\n" +"Maybe you need to add a 3rd party URL?" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:301 +msgid "Platform %s uninstalled" +msgstr "" + +#: arduino/errors.go:483 +msgid "Platform '%s' is already at the latest version" +msgstr "" + +#: arduino/errors.go:407 +msgid "Platform '%s' not found" +msgstr "" + +#: internal/cli/board/search.go:82 +msgid "Platform ID" +msgstr "" + +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 +msgid "Platform ID is not correct" +msgstr "" + +#: internal/cli/board/details.go:171 +msgid "Platform URL:" +msgstr "" + +#: internal/cli/board/details.go:170 +msgid "Platform architecture:" +msgstr "" + +#: internal/cli/board/details.go:169 +msgid "Platform category:" +msgstr "" + +#: internal/cli/board/details.go:176 +msgid "Platform checksum:" +msgstr "" + +#: internal/cli/board/details.go:172 +msgid "Platform file name:" +msgstr "" + +#: internal/cli/board/details.go:168 +msgid "Platform name:" +msgstr "" + +#: internal/cli/board/details.go:174 +msgid "Platform size (bytes):" +msgstr "" + +#: arduino/errors.go:155 +msgid "" +"Please specify an FQBN. Multiple possible boards detected on port %[1]s with" +" protocol %[2]s" +msgstr "" + +#: arduino/errors.go:135 +msgid "" +"Please specify an FQBN. The board on port %[1]s with protocol %[2]s can't be" +" identified" +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Port" +msgstr "" + +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 +msgid "Port closed: %v" +msgstr "" + +#: arduino/errors.go:669 +msgid "Port monitor error" +msgstr "" + +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 +msgid "Precompiled library in \"%[1]s\" not found" +msgstr "" + +#: internal/cli/board/details.go:41 +msgid "Print details about a board." +msgstr "" + +#: internal/cli/compile/compile.go:99 +msgid "Print preprocessed code to stdout instead of compiling." +msgstr "" + +#: internal/cli/cli.go:106 internal/cli/cli.go:108 +msgid "Print the logs on the standard output." +msgstr "" + +#: internal/cli/config/dump.go:31 +msgid "Prints the current configuration" +msgstr "" + +#: internal/cli/config/dump.go:32 +msgid "Prints the current configuration." +msgstr "" + +#: arduino/errors.go:204 +msgid "Profile '%s' not found" +msgstr "" + +#: arduino/errors.go:340 +msgid "Programmer '%s' not found" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Programmer name" +msgstr "" + +#: internal/cli/arguments/programmer.go:29 +msgid "Programmer to use, e.g: atmel_ice" +msgstr "" + +#: internal/cli/board/details.go:214 +msgid "Programmers:" +msgstr "" + +#: arduino/errors.go:392 +msgid "Property '%s' is undefined" +msgstr "" + +#: internal/cli/board/list.go:132 +msgid "Protocol" +msgstr "" + +#: internal/cli/lib/search.go:168 +msgid "Provides includes: %s" +msgstr "" + +#: internal/cli/config/remove.go:31 internal/cli/config/remove.go:32 +msgid "Removes one or more values from a setting." +msgstr "" + +#: commands/lib/install.go:130 +msgid "Replacing %[1]s with %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:120 +msgid "Replacing platform %[1]s with %[2]s" +msgstr "" + +#: internal/cli/board/details.go:182 +msgid "Required tool:" +msgstr "" + +#: internal/cli/daemon/daemon.go:53 +msgid "Run as a daemon on port: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:69 +msgid "Run in silent mode, show only monitor input and output." +msgstr "" + +#: internal/cli/daemon/daemon.go:54 +msgid "" +"Running as a daemon the initialization of cores and libraries is done only " +"once." +msgstr "" + +#: arduino/builder/core.go:62 +msgid "Running normal build of the core..." +msgstr "" + +#: internal/cli/compile/compile.go:101 +msgid "Save build artifacts in this directory." +msgstr "" + +#: internal/cli/board/search.go:38 +msgid "Search for a board in the Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/board/search.go:37 +msgid "Search for a board in the Boards Manager." +msgstr "" + +#: internal/cli/core/search.go:47 +msgid "Search for a core in Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/core/search.go:46 +msgid "Search for a core in Boards Manager." +msgstr "" + +#: internal/cli/lib/search.go:42 +msgid "Search for one or more libraries data (case insensitive search)." +msgstr "" + +#: internal/cli/lib/search.go:41 +msgid "Searches for one or more libraries data." +msgstr "" + +#: internal/cli/lib/search.go:157 +msgid "Sentence: %s" +msgstr "" + +#: arduino/httpclient/httpclient.go:73 +msgid "Server responded with: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + +#: internal/cli/config/set.go:32 internal/cli/config/set.go:33 +msgid "Sets a setting value." +msgstr "" + +#: internal/cli/board/attach.go:36 +msgid "" +"Sets the default values for port and FQBN. If no port or FQBN are specified," +" the current default port and FQBN are displayed." +msgstr "" + +#: internal/cli/config/init.go:55 internal/cli/config/init.go:56 +msgid "Sets where to save the configuration file." +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Setting" +msgstr "" + +#: internal/cli/config/validate.go:50 +msgid "Settings key doesn't exist" +msgstr "" + +#: internal/cli/core/search.go:52 +msgid "Show all available core versions." +msgstr "" + +#: internal/cli/monitor/monitor.go:67 +msgid "Show all the settings of the communication port." +msgstr "" + +#: internal/cli/board/listall.go:47 internal/cli/board/search.go:45 +msgid "Show also boards marked as 'hidden' in the platform" +msgstr "" + +#: internal/cli/arguments/show_properties.go:59 +msgid "" +"Show build properties. The properties are expanded, use \"--show-" +"properties=unexpanded\" if you want them exactly as they are defined." +msgstr "" + +#: internal/cli/board/details.go:51 +msgid "Show full board details" +msgstr "" + +#: internal/cli/board/details.go:42 +msgid "" +"Show information about a board, in particular if the board has options to be" +" specified in the FQBN." +msgstr "" + +#: internal/cli/lib/search.go:49 +msgid "Show library names only." +msgstr "" + +#: internal/cli/board/details.go:52 +msgid "Show list of available programmers" +msgstr "" + +#: internal/cli/debug/debug.go:65 +msgid "" +"Show metadata about the debug session instead of starting the debugger." +msgstr "" + +#: internal/cli/update/update.go:45 +msgid "Show outdated cores and libraries after index update" +msgstr "" + +#: internal/cli/lib/list.go:39 +msgid "Shows a list of installed libraries." +msgstr "" + +#: internal/cli/lib/list.go:40 +msgid "" +"Shows a list of installed libraries.\n" +"\n" +"If the LIBNAME parameter is specified the listing is limited to that specific\n" +"library. By default the libraries provided as built-in by platforms/core are\n" +"not listed, they can be listed by adding the --all flag." +msgstr "" + +#: internal/cli/core/list.go:36 internal/cli/core/list.go:37 +msgid "Shows the list of installed platforms." +msgstr "" + +#: internal/cli/lib/examples.go:43 +msgid "Shows the list of the examples for libraries." +msgstr "" + +#: internal/cli/lib/examples.go:44 +msgid "" +"Shows the list of the examples for libraries. A name may be given as " +"argument to search a specific library." +msgstr "" + +#: internal/cli/version/version.go:39 +msgid "" +"Shows the version number of Arduino CLI which is installed on your system." +msgstr "" + +#: internal/cli/version/version.go:38 +msgid "Shows version number of Arduino CLI." +msgstr "" + +#: internal/cli/board/details.go:187 +msgid "Size (bytes):" +msgstr "" + +#: commands/compile/compile.go:249 +msgid "" +"Sketch cannot be located in build path. Please specify a different build " +"path" +msgstr "" + +#: internal/cli/sketch/new.go:84 +msgid "Sketch created in: %s" +msgstr "" + +#: internal/cli/arguments/profiles.go:29 +msgid "Sketch profile to use" +msgstr "" + +#: arduino/builder/sizer/sizer.go:184 +msgid "Sketch too big; see %[1]s for tips on reducing it." +msgstr "" + +#: arduino/builder/sizer/sizer.go:152 +msgid "" +"Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" +" bytes." +msgstr "" + +#: internal/cli/arguments/sketch.go:49 +msgid "" +"Sketches with .pde extension are deprecated, please rename the following " +"files to .ino:" +msgstr "" + +#: arduino/builder/linker.go:41 +msgid "Skip linking of final executable." +msgstr "" + +#: commands/upload/upload.go:432 +msgid "Skipping 1200-bps touch reset: no serial port selected!" +msgstr "" + +#: arduino/builder/utils/utils.go:589 +msgid "Skipping archive creation of: %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:571 +msgid "Skipping compile of: %[1]s" +msgstr "" + +#: arduino/builder/detector/detector.go:408 +msgid "Skipping dependencies detection for precompiled library %[1]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:187 +msgid "Skipping platform configuration." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:350 +msgid "Skipping tool configuration." +msgstr "" + +#: legacy/builder/recipe_runner.go:54 +msgid "Skipping: %[1]s" +msgstr "" + +#: commands/instances.go:574 +msgid "Some indexes could not be updated." +msgstr "" + +#: internal/cli/core/upgrade.go:124 +msgid "Some upgrades failed, please check the output for details." +msgstr "" + +#: arduino/serialutils/serialutils.go:141 +msgid "TOUCH: error during reset: %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:59 +msgid "The TCP port the daemon will listen to" +msgstr "" + +#: internal/cli/cli.go:125 +msgid "The custom config file (if not specified the default will be used)." +msgstr "" + +#: internal/cli/daemon/daemon.go:78 +msgid "The flag --debug-file must be used with --debug." +msgstr "" + +#: internal/cli/config/add.go:93 +msgid "" +"The key '%[1]v' is not a list of items, can't add to it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: internal/cli/config/remove.go:51 +msgid "" +"The key '%[1]v' is not a list of items, can't remove from it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: arduino/errors.go:859 +msgid "The library %s has multiple installations:" +msgstr "" + +#: internal/cli/compile/compile.go:113 +msgid "" +"The name of the custom encryption key to use to encrypt a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/compile/compile.go:111 +msgid "" +"The name of the custom signing key to use to sign a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/cli.go:116 internal/cli/cli.go:121 +msgid "The output format for the logs, can be: %s" +msgstr "" + +#: internal/cli/compile/compile.go:109 +msgid "" +"The path of the dir to search for the custom keys to sign and encrypt a " +"binary. Used only by the platforms that support it." +msgstr "" + +#: arduino/builder/libraries.go:201 +msgid "The platform does not support '%[1]s' for precompiled libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:35 +msgid "" +"This command upgrades an installed library to the latest available version. " +"Multiple libraries can be passed separated by a space. If no arguments are " +"provided, the command will upgrade all the installed libraries where an " +"update is available." +msgstr "" + +#: internal/cli/outdated/outdated.go:42 +msgid "" +"This commands shows a list of installed cores and/or libraries\n" +"that can be upgraded. If nothing needs to be updated the output is empty." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:86 +#: arduino/cores/packagemanager/install_uninstall.go:311 +msgid "Tool %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:400 +msgid "Tool %s uninstalled" +msgstr "" + +#: commands/debug/debug.go:139 +msgid "Toolchain '%s' is not supported" +msgstr "" + +#: internal/cli/debug/debug.go:140 +msgid "Toolchain custom configurations" +msgstr "" + +#: internal/cli/debug/debug.go:134 +msgid "Toolchain path" +msgstr "" + +#: internal/cli/debug/debug.go:135 +msgid "Toolchain prefix" +msgstr "" + +#: internal/cli/debug/debug.go:133 +msgid "Toolchain type" +msgstr "" + +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 +msgid "Try running %s" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:57 +msgid "Turns on verbose mode." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Type" +msgstr "" + +#: internal/cli/lib/search.go:165 +msgid "Types: %s" +msgstr "" + +#: internal/cli/board/details.go:189 +msgid "URL:" +msgstr "" + +#: arduino/builder/core.go:190 +msgid "" +"Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" +msgstr "" + +#: configuration/configuration.go:125 +msgid "Unable to get Documents Folder: %v" +msgstr "" + +#: configuration/configuration.go:100 +msgid "Unable to get Local App Data Folder: %v" +msgstr "" + +#: configuration/configuration.go:88 configuration/configuration.go:113 +msgid "Unable to get user home dir: %v" +msgstr "" + +#: internal/cli/cli.go:204 +msgid "Unable to open file for logging: %s" +msgstr "" + +#: commands/instances.go:541 +msgid "Unable to parse URL" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:277 +#: commands/lib/uninstall.go:44 +msgid "Uninstalling %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:163 +#: commands/core/uninstall.go:73 +msgid "Uninstalling %s, tool is no more required" +msgstr "" + +#: internal/cli/core/uninstall.go:35 internal/cli/core/uninstall.go:36 +msgid "" +"Uninstalls one or more cores and corresponding tool dependencies if no " +"longer used." +msgstr "" + +#: internal/cli/lib/uninstall.go:35 internal/cli/lib/uninstall.go:36 +msgid "Uninstalls one or more libraries." +msgstr "" + +#: internal/cli/board/list.go:164 +msgid "Unknown" +msgstr "" + +#: arduino/errors.go:185 +msgid "Unknown FQBN" +msgstr "" + +#: internal/cli/update/update.go:37 +msgid "Updates the index of cores and libraries" +msgstr "" + +#: internal/cli/update/update.go:38 +msgid "Updates the index of cores and libraries to the latest versions." +msgstr "" + +#: internal/cli/core/update_index.go:34 +msgid "Updates the index of cores to the latest version." +msgstr "" + +#: internal/cli/core/update_index.go:33 +msgid "Updates the index of cores." +msgstr "" + +#: internal/cli/lib/update_index.go:34 +msgid "Updates the libraries index to the latest version." +msgstr "" + +#: internal/cli/lib/update_index.go:33 +msgid "Updates the libraries index." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:43 +msgid "Upgrade doesn't accept parameters with version" +msgstr "" + +#: internal/cli/upgrade/upgrade.go:38 +msgid "Upgrades installed cores and libraries to latest version." +msgstr "" + +#: internal/cli/upgrade/upgrade.go:37 +msgid "Upgrades installed cores and libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:34 +msgid "Upgrades installed libraries." +msgstr "" + +#: internal/cli/core/upgrade.go:38 internal/cli/core/upgrade.go:39 +msgid "Upgrades one or all installed platforms to the latest version." +msgstr "" + +#: internal/cli/upload/upload.go:57 +msgid "Upload Arduino sketches." +msgstr "" + +#: internal/cli/upload/upload.go:58 +msgid "" +"Upload Arduino sketches. This does NOT compile the sketch prior to upload." +msgstr "" + +#: internal/cli/arguments/port.go:42 +msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" +msgstr "" + +#: commands/upload/upload.go:456 +msgid "Upload port found on %s" +msgstr "" + +#: internal/cli/arguments/port.go:46 +msgid "Upload port protocol, e.g: serial" +msgstr "" + +#: internal/cli/compile/compile.go:118 +msgid "Upload the binary after the compilation." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:47 +msgid "Upload the bootloader on the board using an external programmer." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:46 +msgid "Upload the bootloader." +msgstr "" + +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 +msgid "" +"Uploading to specified board using %s protocol requires the following info:" +msgstr "" + +#: internal/cli/config/init.go:103 +msgid "" +"Urls cannot contain commas. Separate multiple urls exported as env var with a space:\n" +"%s" +msgstr "" + +#: internal/cli/usage.go:26 +msgid "Usage:" +msgstr "" + +#: internal/cli/usage.go:33 +msgid "Use %s for more information about a command." +msgstr "" + +#: internal/cli/compile/compile.go:427 +msgid "Used library" +msgstr "" + +#: internal/cli/compile/compile.go:442 +msgid "Used platform" +msgstr "" + +#: arduino/builder/detector/detector.go:155 +msgid "Used: %[1]s" +msgstr "" + +#: commands/compile/compile.go:342 +msgid "Using board '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: arduino/builder/detector/detector.go:348 +msgid "Using cached library dependencies for file: %[1]s" +msgstr "" + +#: commands/compile/compile.go:343 +msgid "Using core '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:44 +msgid "Using library %[1]s at version %[2]s in folder: %[3]s %[4]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:38 +msgid "Using library %[1]s in folder: %[2]s %[3]s" +msgstr "" + +#: arduino/builder/core.go:154 +msgid "Using precompiled core: %[1]s" +msgstr "" + +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 +msgid "Using precompiled library in %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 +msgid "Using previously compiled file: %[1]s" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +msgid "VERSION" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "VERSION_NUMBER" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Values" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:56 +#: internal/cli/compile/compile.go:120 internal/cli/upload/upload.go:72 +msgid "Verify uploaded binary after the upload." +msgstr "" + +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 +#: internal/cli/core/search.go:100 +msgid "Version" +msgstr "" + +#: internal/cli/lib/search.go:166 +msgid "Versions: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:182 +msgid "WARNING cannot configure platform: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:346 +msgid "WARNING cannot configure tool: %s" +msgstr "" + +#: internal/cli/compile/compile.go:308 +msgid "WARNING: The sketch is compiled using one or more custom libraries." +msgstr "" + +#: legacy/builder/warn_about_arch_incompatible_libraries.go:39 +msgid "" +"WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be " +"incompatible with your current board which runs on %[3]s architecture(s)." +msgstr "" + +#: commands/upload/upload.go:445 +msgid "Waiting for upload port..." +msgstr "" + +#: commands/compile/compile.go:348 +msgid "" +"Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" +msgstr "" + +#: internal/cli/lib/search.go:159 +msgid "Website: %s" +msgstr "" + +#: internal/cli/config/init.go:42 +msgid "Writes current configuration to a configuration file." +msgstr "" + +#: internal/cli/config/init.go:45 +msgid "" +"Writes current configuration to the configuration file in the data " +"directory." +msgstr "" + +#: internal/cli/config/set.go:74 +msgid "Writing config file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:149 internal/cli/compile/compile.go:152 +msgid "You cannot use the %s flag while compiling with a profile." +msgstr "" + +#: arduino/resources/checksums.go:79 +msgid "archive hash differs from hash in index" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:192 +msgid "archive is not valid: multiple files found in zip file top level" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:195 +msgid "archive is not valid: no files found in zip file top level" +msgstr "" + +#: internal/cli/sketch/archive.go:37 +msgid "archivePath" +msgstr "" + +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 +msgid "arduino-preprocessor pattern is missing" +msgstr "" + +#: commands/upload/upload.go:714 +msgid "autodetect build artifact: %s" +msgstr "" + +#: internal/cli/feedback/stdio.go:35 +msgid "available only in text format" +msgstr "" + +#: commands/upload/upload.go:699 +msgid "binary file not found in %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:305 +msgid "board %s not found" +msgstr "" + +#: internal/cli/board/listall.go:37 internal/cli/board/search.go:36 +msgid "boardname" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:155 +msgid "built-in libraries directory not set" +msgstr "" + +#: arduino/discovery/discovery.go:346 arduino/discovery/discovery.go:369 +#: arduino/discovery/discovery.go:391 arduino/discovery/discovery.go:431 +#: arduino/discovery/discovery.go:457 +msgid "calling %[1]s: %[2]w" +msgstr "" + +#: arduino/cores/status.go:124 arduino/cores/status.go:151 +msgid "can't find latest release of %s" +msgstr "" + +#: commands/instances.go:360 +msgid "can't find latest release of tool %s" +msgstr "" + +#: arduino/sketch/sketch.go:106 +msgid "can't find main Sketch file in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:825 +msgid "can't find pattern for discovery with id %s" +msgstr "" + +#: executils/output.go:52 +msgid "can't retrieve standard error stream: %s" +msgstr "" + +#: executils/output.go:34 +msgid "can't retrieve standard output stream: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:91 +msgid "candidates" +msgstr "" + +#: commands/upload/upload.go:656 commands/upload/upload.go:663 +msgid "cannot execute upload tool: %s" +msgstr "" + +#: arduino/resources/install.go:39 +msgid "checking local archive integrity" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:85 +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:89 +msgid "cleaning build path" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "command" +msgstr "" + +#: arduino/monitor/monitor.go:150 +msgid "command '%[1]s' failed: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:350 arduino/discovery/discovery.go:373 +#: arduino/discovery/discovery.go:395 arduino/discovery/discovery.go:435 +#: arduino/discovery/discovery.go:461 +msgid "command failed: %s" +msgstr "" + +#: arduino/discovery/discovery.go:348 arduino/discovery/discovery.go:352 +#: arduino/discovery/discovery.go:371 arduino/discovery/discovery.go:375 +#: arduino/discovery/discovery.go:393 arduino/discovery/discovery.go:397 +#: arduino/discovery/discovery.go:433 arduino/discovery/discovery.go:459 +#: arduino/discovery/discovery.go:463 arduino/monitor/monitor.go:147 +#: arduino/monitor/monitor.go:153 +msgid "communication out of sync, expected '%[1]s', received '%[2]s'" +msgstr "" + +#: arduino/resources/checksums.go:75 +msgid "computing hash: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:145 +msgid "copying library to destination directory:" +msgstr "" + +#: commands/upload/upload.go:771 +msgid "could not find a valid build artifact" +msgstr "" + +#: commands/core/install.go:62 +msgid "could not overwrite" +msgstr "" + +#: commands/lib/install.go:133 +msgid "could not remove old library" +msgstr "" + +#: arduino/sketch/yaml.go:78 arduino/sketch/yaml.go:82 +#: arduino/sketch/yaml.go:86 +msgid "could not update sketch project file" +msgstr "" + +#: arduino/builder/core.go:133 +msgid "creating core cache folder: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:216 +msgid "creating installed.json in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:44 arduino/resources/install.go:48 +msgid "creating temp dir for extraction: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:190 +msgid "data section exceeds available space in board" +msgstr "" + +#: commands/lib/resolve_deps.go:56 +msgid "dependency '%s' is not available" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:126 +msgid "destination already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:93 +msgid "destination dir %s already exists, cannot install" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:142 +msgid "destination directory already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:282 +msgid "directory doesn't exist: %s" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:190 +msgid "discovery %[1]s process not started: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:756 +msgid "discovery %s not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:760 +msgid "discovery %s not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:698 +msgid "discovery release not found: %s" +msgstr "" + +#: internal/cli/core/download.go:39 internal/cli/core/install.go:41 +msgid "download a specific version (in this case 1.6.9)." +msgstr "" + +#: internal/cli/core/download.go:38 internal/cli/core/install.go:39 +msgid "download the latest version of Arduino SAMD core." +msgstr "" + +#: internal/cli/feedback/rpc_progress.go:73 +msgid "downloaded" +msgstr "" + +#: commands/instances.go:138 +msgid "downloading %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/fqbn.go:48 +msgid "empty board identifier" +msgstr "" + +#: arduino/sketch/sketch.go:92 +msgid "error loading sketch project file:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:650 +msgid "error opening %s" +msgstr "" + +#: internal/cli/config/set.go:67 +msgid "error parsing value: %v" +msgstr "" + +#: arduino/sketch/profiles.go:193 +msgid "error parsing version constraints" +msgstr "" + +#: commands/board/list.go:116 +msgid "error processing response from server" +msgstr "" + +#: commands/board/list.go:96 +msgid "error querying Arduino Cloud Api" +msgstr "" + +#: arduino/resources/install.go:67 +msgid "extracting archive: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:183 +msgid "extracting archive: %w" +msgstr "" + +#: arduino/resources/checksums.go:144 +msgid "failed to compute hash of file \"%s\"" +msgstr "" + +#: commands/board/list.go:91 +msgid "failed to initialize http client" +msgstr "" + +#: arduino/resources/checksums.go:96 +msgid "fetched archive size differs from size specified in index" +msgstr "" + +#: arduino/resources/install.go:128 +msgid "files in archive must be placed in a subdirectory" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:61 +msgid "finding absolute path of %s" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "flags" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:100 +msgid "following symlink %s" +msgstr "" + +#: internal/cli/lib/download.go:39 +msgid "for a specific version." +msgstr "" + +#: internal/cli/lib/check_deps.go:40 internal/cli/lib/download.go:38 +#: internal/cli/lib/install.go:48 +msgid "for the latest version." +msgstr "" + +#: internal/cli/lib/check_deps.go:41 internal/cli/lib/install.go:49 +#: internal/cli/lib/install.go:51 +msgid "for the specific version." +msgstr "" + +#: internal/inventory/inventory.go:68 +msgid "generating installation.id: %w" +msgstr "" + +#: internal/inventory/inventory.go:74 +msgid "generating installation.secret: %w" +msgstr "" + +#: arduino/resources/download.go:53 +msgid "getting archive file info: %s" +msgstr "" + +#: arduino/resources/checksums.go:93 +msgid "getting archive info: %s" +msgstr "" + +#: arduino/resources/checksums.go:66 arduino/resources/checksums.go:89 +#: arduino/resources/download.go:34 arduino/resources/helpers.go:38 +#: arduino/resources/install.go:55 +msgid "getting archive path: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:311 +msgid "getting build properties for board %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:106 +msgid "getting discovery dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:114 +msgid "getting monitor dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:711 +msgid "getting parent dir of %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:99 +msgid "getting tool dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:153 +msgid "install directory not set" +msgstr "" + +#: commands/instances.go:142 +msgid "installing %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:208 +msgid "installing platform %[1]s: %[2]s" +msgstr "" + +#: internal/cli/feedback/terminal.go:36 +msgid "interactive terminal not supported for the '%s' output format" +msgstr "" + +#: arduino/sketch/profiles.go:191 +msgid "invalid '%s' directive" +msgstr "" + +#: arduino/discovery/discovery.go:212 +msgid "invalid 'add' message: missing port" +msgstr "" + +#: arduino/discovery/discovery.go:222 +msgid "invalid 'remove' message: missing port" +msgstr "" + +#: arduino/resources/checksums.go:44 +msgid "invalid checksum format: %s" +msgstr "" + +#: arduino/cores/fqbn.go:54 arduino/cores/fqbn.go:59 +msgid "invalid config option: %s" +msgstr "" + +#: internal/cli/arguments/reference.go:90 +msgid "invalid empty core architecture '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:67 +msgid "invalid empty core argument" +msgstr "" + +#: internal/cli/arguments/reference.go:86 +msgid "invalid empty core name '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:71 +msgid "invalid empty core reference '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:76 +msgid "invalid empty core version: '%s'" +msgstr "" + +#: internal/cli/lib/args.go:49 +msgid "invalid empty library name" +msgstr "" + +#: internal/cli/lib/args.go:54 +msgid "invalid empty library version: %s" +msgstr "" + +#: arduino/cores/board.go:142 +msgid "invalid empty option found" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:272 +msgid "invalid git url" +msgstr "" + +#: arduino/resources/checksums.go:48 +msgid "invalid hash '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/arguments/reference.go:83 +msgid "invalid item %s" +msgstr "" + +#: arduino/sketch/profiles.go:225 +msgid "invalid library directive:" +msgstr "" + +#: arduino/libraries/libraries_layout.go:65 +msgid "invalid library layout: %s" +msgstr "" + +#: arduino/libraries/libraries_location.go:88 +msgid "invalid library location: %s" +msgstr "" + +#: arduino/libraries/loader.go:139 +msgid "invalid library: no header files found" +msgstr "" + +#: arduino/cores/board.go:145 +msgid "invalid option '%s'" +msgstr "" + +#: internal/cli/arguments/show_properties.go:51 +msgid "invalid option '%s'." +msgstr "" + +#: internal/inventory/inventory.go:93 +msgid "invalid path creating config dir: %[1]s error: %[2]w" +msgstr "" + +#: internal/inventory/inventory.go:99 +msgid "invalid path writing inventory file: %[1]s error: %[2]w" +msgstr "" + +#: arduino/cores/packageindex/index.go:283 +msgid "invalid platform archive size: %s" +msgstr "" + +#: arduino/sketch/profiles.go:195 +msgid "invalid platform identifier" +msgstr "" + +#: arduino/sketch/profiles.go:205 +msgid "invalid platform index URL:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:363 +msgid "invalid pluggable monitor reference: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:123 +msgid "invalid port configuration value for %s: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:131 +msgid "invalid port configuration: %s" +msgstr "" + +#: commands/upload/upload.go:643 +msgid "invalid recipe '%[1]s': %[2]s" +msgstr "" + +#: commands/sketch/new.go:86 +msgid "" +"invalid sketch name \"%[1]s\": the first character must be alphanumeric or " +"\"_\", the following ones can also contain \"-\" and \".\". The last one " +"cannot be \".\"." +msgstr "" + +#: arduino/cores/board.go:149 +msgid "invalid value '%[1]s' for option '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:273 +msgid "invalid version directory %s" +msgstr "" + +#: arduino/sketch/profiles.go:227 +msgid "invalid version:" +msgstr "" + +#: commands/daemon/settings.go:111 commands/daemon/settings.go:166 +msgid "key not found in settings" +msgstr "" + +#: internal/cli/core/search.go:45 +msgid "keywords" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:130 +msgid "library %s already installed" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:319 +msgid "library not valid" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:197 +msgid "library path does not exist: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:67 +msgid "listing serial ports" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:301 +#: arduino/cores/packagemanager/loader.go:310 +#: arduino/cores/packagemanager/loader.go:315 +msgid "loading %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:351 +msgid "loading boards: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:666 +msgid "loading bundled tools from %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:452 +#: arduino/cores/packagemanager/package_manager.go:467 +msgid "loading json index file %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:179 +#: arduino/libraries/librariesmanager/librariesmanager.go:202 +msgid "loading library from %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:54 +msgid "loading library.properties: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:250 +#: arduino/cores/packagemanager/loader.go:278 +msgid "loading platform release %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:197 +msgid "loading platform.txt" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:44 +msgid "loading required platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:60 +msgid "loading required tool %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:625 +msgid "loading tool release in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:190 +msgid "looking for boards.txt in %s" +msgstr "" + +#: arduino/sketch/sketch.go:76 +msgid "main file missing from sketch: %s" +msgstr "" + +#: arduino/sketch/profiles.go:189 +msgid "missing '%s' directive" +msgstr "" + +#: arduino/resources/checksums.go:40 +msgid "missing checksum for: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:413 +msgid "missing package %[1]s referenced by board %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:86 +msgid "missing package index for %s, future updates cannot be guaranteed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:418 +msgid "missing platform %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:423 +msgid "missing platform release %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:709 +msgid "monitor release not found: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:201 +#: arduino/libraries/librariesmanager/install.go:250 +#: arduino/resources/install.go:96 +msgid "moving extracted archive to destination dir: %s" +msgstr "" + +#: commands/upload/upload.go:766 +msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" +msgstr "" + +#: arduino/sketch/sketch.go:68 +msgid "multiple main sketch files found (%[1]v, %[2]v)" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:320 +msgid "" +"no compatible version of %[1]s tools found for the current os, try " +"contacting %[2]s" +msgstr "" + +#: executils/process.go:40 +msgid "no executable specified" +msgstr "" + +#: commands/daemon/daemon.go:100 +msgid "no instance specified" +msgstr "" + +#: commands/upload/upload.go:721 +msgid "no sketch or build directory/file specified" +msgstr "" + +#: arduino/sketch/sketch.go:55 +msgid "no such file or directory" +msgstr "" + +#: arduino/resources/install.go:131 +msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" +msgstr "" + +#: commands/upload/upload.go:638 +msgid "no upload port provided" +msgstr "" + +#: arduino/sketch/sketch.go:274 +msgid "no valid sketch found in %[1]s: missing %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:128 +msgid "no versions available for the current OS, try contacting %s" +msgstr "" + +#: internal/cli/feedback/terminal.go:39 +msgid "not running in a terminal" +msgstr "" + +#: arduino/resources/checksums.go:71 arduino/resources/install.go:59 +msgid "opening archive file: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:266 +msgid "opening boards.txt" +msgstr "" + +#: arduino/serialutils/serialutils.go:38 +msgid "opening port at 1200bps" +msgstr "" + +#: arduino/security/signatures.go:83 +msgid "opening signature file: %s" +msgstr "" + +#: arduino/security/signatures.go:78 +msgid "opening target file: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:76 arduino/cores/status.go:89 +#: arduino/cores/status.go:114 arduino/cores/status.go:141 +msgid "package %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:481 +msgid "package '%s' not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:221 +msgid "parsing IDE bundled index" +msgstr "" + +#: arduino/cores/board.go:165 +#: arduino/cores/packagemanager/package_manager.go:252 +msgid "parsing fqbn: %s" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:72 +msgid "parsing library_index.json: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:181 +msgid "path is not a platform directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:80 +msgid "platform %[1]s not found in package %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:92 +msgid "platform %s has no available releases" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:298 +msgid "platform %s is not installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:176 +#: arduino/cores/packagemanager/install_uninstall.go:280 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 +msgid "platform not installed" +msgstr "" + +#: internal/cli/compile/compile.go:139 +msgid "please use --build-property instead." +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:126 +msgid "pluggable discovery already added: %s" +msgstr "" + +#: internal/cli/board/attach.go:34 +msgid "port" +msgstr "" + +#: internal/cli/arguments/port.go:125 +msgid "port not found: %[1]s %[2]s" +msgstr "" + +#: arduino/monitor/monitor.go:236 +msgid "protocol version not supported: requested %[1]d, got %[2]d" +msgstr "" + +#: arduino/discovery/discovery.go:354 +msgid "protocol version not supported: requested 1, got %d" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:716 +msgid "reading %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:170 +msgid "reading dir %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:198 +msgid "reading directory %[1]s content: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:71 +#: arduino/cores/packagemanager/loader.go:153 +#: arduino/cores/packagemanager/loader.go:260 +#: arduino/cores/packagemanager/loader.go:617 +msgid "reading directory %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:292 +msgid "reading directory %s content: %w" +msgstr "" + +#: arduino/builder/sketch.go:89 +msgid "reading file %[1]s: %[2]s" +msgstr "" + +#: arduino/sketch/sketch.go:205 +msgid "reading files: %v" +msgstr "" + +#: arduino/libraries/librariesresolver/cpp.go:104 +msgid "reading lib headers: %s" +msgstr "" + +#: arduino/libraries/libraries.go:228 +msgid "reading lib src dir: %s" +msgstr "" + +#: arduino/libraries/libraries.go:116 +msgid "reading library headers: %w" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:66 +msgid "reading library_index.json: %s" +msgstr "" + +#: arduino/resources/install.go:121 +msgid "reading package root dir: %s" +msgstr "" + +#: commands/upload/upload.go:632 +msgid "recipe not found '%s'" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:557 +msgid "release %[1]s not found for tool %[2]s" +msgstr "" + +#: arduino/cores/status.go:83 arduino/cores/status.go:107 +#: arduino/cores/status.go:134 +msgid "release cannot be nil" +msgstr "" + +#: arduino/resources/download.go:44 +msgid "removing corrupted archive file: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:156 +msgid "removing library directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:293 +msgid "removing platform files: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:87 +msgid "required version %[1]s not found for platform %[2]s" +msgstr "" + +#: arduino/security/signatures.go:74 +msgid "retrieving Arduino public keys: %s" +msgstr "" + +#: arduino/libraries/loader.go:116 arduino/libraries/loader.go:154 +msgid "scanning examples: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:702 +msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:73 +msgid "searching package root dir: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:48 +msgid "setting DTR to OFF" +msgstr "" + +#: commands/sketch/new.go:78 +msgid "sketch name cannot be empty" +msgstr "" + +#: commands/sketch/new.go:91 +msgid "sketch name cannot be the reserved name \"%[1]s\"" +msgstr "" + +#: commands/sketch/new.go:81 +msgid "" +"sketch name too long (%[1]d characters). Maximum allowed length is %[2]d" +msgstr "" + +#: arduino/sketch/sketch.go:48 arduino/sketch/sketch.go:53 +msgid "sketch path is not valid" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/sketch/archive.go:37 +msgid "sketchPath" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:118 +msgid "source is not a directory" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:194 +msgid "starting discovery %s" +msgstr "" + +#: arduino/resources/checksums.go:118 +msgid "testing archive checksum: %s" +msgstr "" + +#: arduino/resources/checksums.go:111 +msgid "testing archive size: %s" +msgstr "" + +#: arduino/resources/checksums.go:105 +msgid "testing if archive is cached: %s" +msgstr "" + +#: arduino/resources/install.go:37 +msgid "testing local archive integrity: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:185 +msgid "text section exceeds available space in board" +msgstr "" + +#: arduino/builder/detector/detector.go:211 +#: arduino/builder/preprocessor/ctags.go:70 +msgid "the compilation database may be incomplete or inaccurate" +msgstr "" + +#: commands/core/list.go:63 +msgid "the platform has no releases" +msgstr "" + +#: commands/board/list.go:103 +msgid "the server responded with status %s" +msgstr "" + +#: arduino/monitor/monitor.go:140 +msgid "timeout waiting for message" +msgstr "" + +#: arduino/discovery/discovery.go:251 +msgid "timeout waiting for message from %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:386 +msgid "tool %s is not managed by package manager" +msgstr "" + +#: arduino/cores/status.go:93 arduino/cores/status.go:118 +#: arduino/cores/status.go:145 +msgid "tool %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:507 +msgid "tool '%[1]s' not found in package '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:381 +msgid "tool not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:687 +#: arduino/cores/packagemanager/package_manager.go:793 +msgid "tool release not found: %s" +msgstr "" + +#: arduino/cores/status.go:97 +msgid "tool version %s not found" +msgstr "" + +#: commands/lib/install.go:61 +msgid "" +"two different versions of the library %[1]s are required: %[2]s and %[3]s" +msgstr "" + +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 +msgid "unable to compute relative path to the sketch for the item" +msgstr "" + +#: arduino/builder/sketch.go:53 +msgid "unable to create a folder to save the sketch" +msgstr "" + +#: arduino/builder/sketch.go:132 +msgid "unable to create the folder containing the item" +msgstr "" + +#: internal/cli/config/dump.go:59 +msgid "unable to marshal config to YAML: %v" +msgstr "" + +#: arduino/builder/sketch.go:170 +msgid "unable to read contents of the destination item" +msgstr "" + +#: arduino/builder/sketch.go:143 +msgid "unable to read contents of the source item" +msgstr "" + +#: arduino/builder/sketch.go:153 +msgid "unable to write to destination file" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:286 +msgid "unknown package %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:293 +msgid "unknown platform %s:%s" +msgstr "" + +#: arduino/sketch/sketch.go:147 +msgid "unknown sketch file extension '%s'" +msgstr "" + +#: arduino/resources/checksums.go:61 +msgid "unsupported hash algorithm: %s" +msgstr "" + +#: internal/cli/core/upgrade.go:43 +msgid "upgrade arduino:samd to the latest version" +msgstr "" + +#: internal/cli/core/upgrade.go:41 +msgid "upgrade everything to the latest version" +msgstr "" + +#: commands/upload/upload.go:667 +msgid "uploading error: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:153 +msgid "user directory not set" +msgstr "" + +#: internal/cli/feedback/terminal.go:73 +msgid "user input not supported for the '%s' output format" +msgstr "" + +#: internal/cli/feedback/terminal.go:76 +msgid "user input not supported in non interactive mode" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:176 +msgid "version %s not available for this operating system" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:155 +msgid "version %s not found" +msgstr "" + +#: commands/board/list.go:121 +msgid "wrong format in server response" +msgstr "" diff --git a/i18n/data/ko.po b/i18n/data/ko.po index 4070cc6534b..cf2c6dff40c 100644 --- a/i18n/data/ko.po +++ b/i18n/data/ko.po @@ -13,7 +13,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "" @@ -25,7 +25,7 @@ msgstr "" msgid "%[1]s is required but %[2]s is currently installed." msgstr "" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s 패턴이 없습니다" @@ -49,7 +49,7 @@ msgstr "" msgid "%s already downloaded" msgstr "" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "" @@ -154,7 +154,7 @@ msgstr "" msgid "Already installed %s" msgstr "" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "" @@ -162,7 +162,7 @@ msgstr "" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -178,7 +178,7 @@ msgstr "" msgid "Archive already exists" msgstr "" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "" @@ -263,7 +263,7 @@ msgstr "" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "부트로더 파일이 지정되었으나 누락됨: %[1]s" @@ -312,11 +312,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -356,7 +356,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -398,7 +398,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -406,19 +406,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "스케치를 컴파일 중…" @@ -435,7 +435,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -453,7 +453,7 @@ msgstr "" msgid "Connected" msgstr "" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -469,11 +469,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -499,7 +499,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -535,7 +535,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "디폴트" @@ -569,7 +569,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -682,7 +682,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -698,11 +698,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -710,7 +710,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -763,7 +763,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -773,8 +773,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -782,7 +782,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -802,7 +802,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -818,11 +818,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -834,11 +834,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -902,15 +902,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -954,7 +954,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -982,17 +982,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1000,7 +1000,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1020,7 +1020,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1034,15 +1034,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1070,7 +1070,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1078,7 +1078,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1107,9 +1107,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1141,7 +1139,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1149,19 +1147,19 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." msgstr "" "전역 변수는 동적 메모리 %[1]s바이트(%[3]s%%)를 사용, %[4]s바이트의 지역변수가 남음. 최대는 %[2]s 바이트." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "전역 변수는 %[1]s 바이트의 동적 메모리를 사용." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1231,7 +1229,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1270,15 +1268,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1326,7 +1324,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1365,7 +1363,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1391,7 +1389,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1408,7 +1406,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1463,7 +1461,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "사용 가능한 메모리 부족, 안정성에 문제가 생길 수 있습니다." @@ -1480,7 +1478,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "라이브러리 %[2]s에서 '%[1]s'가 없음" @@ -1504,7 +1502,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1520,7 +1518,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "\"%[1]s\"를 위한 복수개의 라이브러리가 발견되었습니다" @@ -1534,7 +1532,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1584,7 +1582,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1592,11 +1590,11 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "메모리가 충분하지 않음; 메모리를 줄이기 위한 팁을 위해 다음 링크를 참고하세요%[1]s" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "사용되지 않음: %[1]s" @@ -1614,7 +1612,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1697,7 +1695,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1723,7 +1721,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1735,7 +1733,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1757,7 +1755,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1805,7 +1803,7 @@ msgstr "" msgid "Port" msgstr "포트" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1813,8 +1811,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1890,7 +1887,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1900,7 +1897,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1940,6 +1937,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1954,7 +1955,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1966,7 +1967,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2047,7 +2048,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2061,11 +2062,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "스케치가 너무 큼; 이것을 줄이기 위해 다음을 참고하세요. %[1]s" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2077,23 +2078,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2145,7 +2146,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2171,7 +2172,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2218,7 +2219,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2238,7 +2239,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2344,15 +2345,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2368,7 +2369,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2387,27 +2388,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "사용됨: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2419,17 +2420,15 @@ msgstr "라이브러리 %[1]s를 버전 %[2]s 폴더: %[3]s %[4]s 에서 사용" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "폴더:%[2]s %[3]s의 라이브러리 %[1]s 사용" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "이전에 컴파일된 파일: %[1]s 사용" @@ -2441,7 +2440,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2450,7 +2449,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2467,7 +2466,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2478,11 +2477,11 @@ msgid "" msgstr "" "경고: 라이브러리 %[1]s가 %[2]s 아키텍처에서 실행되며 %[3]s아키텍처에서 실행되는 현재보드에서는 호환되지 않을 수 있습니다." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2525,11 +2524,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2537,7 +2536,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2583,11 +2582,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2631,7 +2630,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2648,7 +2647,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2660,7 +2659,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2668,7 +2667,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2972,7 +2971,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3110,7 +3109,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3132,7 +3131,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3144,7 +3143,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3220,7 +3219,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3236,7 +3235,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3271,7 +3270,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3299,7 +3298,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3369,7 +3368,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3393,12 +3392,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3449,19 +3448,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3469,19 +3464,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3509,7 +3500,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3517,11 +3508,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/lb.po b/i18n/data/lb.po new file mode 100644 index 00000000000..54d82fcc8e5 --- /dev/null +++ b/i18n/data/lb.po @@ -0,0 +1,3527 @@ +# +# Translators: +# Luc Ohles, 2023 +# +msgid "" +msgstr "" +"Last-Translator: Luc Ohles, 2023\n" +"Language-Team: Luxembourgish (https://app.transifex.com/arduino-1/teams/108174/lb/)\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: version/version.go:59 +msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" +msgstr "" + +#: arduino/builder/detector/detector.go:456 +msgid "%[1]s folder is no longer supported! See %[2]s for more information" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:49 +msgid "%[1]s invalid, rebuilding all" +msgstr "" + +#: internal/cli/lib/check_deps.go:111 +msgid "%[1]s is required but %[2]s is currently installed." +msgstr "" + +#: arduino/builder/utils/utils.go:311 +msgid "%[1]s pattern is missing" +msgstr "" + +#: arduino/discovery/discovery.go:74 +msgid "%[1]s, message: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:83 +msgid "%[1]s, port: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:80 +msgid "%[1]s, ports: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:77 +msgid "%[1]s, protocol version: %[2]d" +msgstr "" + +#: arduino/resources/download.go:49 +msgid "%s already downloaded" +msgstr "" + +#: commands/upload/upload.go:689 +msgid "%s and %s cannot be used together" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:353 +msgid "%s installed" +msgstr "%s installéiert" + +#: internal/cli/lib/check_deps.go:108 +msgid "%s is already installed." +msgstr "" + +#: arduino/cores/packagemanager/loader.go:65 +#: arduino/cores/packagemanager/loader.go:652 +msgid "%s is not a directory" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:287 +msgid "%s is not managed by package manager" +msgstr "" + +#: internal/cli/lib/check_deps.go:105 +msgid "%s must be installed." +msgstr "%s muss installéiert ginn." + +#: arduino/builder/preprocessor/ctags.go:190 +#: arduino/builder/preprocessor/gcc.go:58 +msgid "%s pattern is missing" +msgstr "" + +#: arduino/errors.go:819 +msgid "'%s' has an invalid signature" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:400 +msgid "" +"'build.core' and 'build.variant' refer to different platforms: %[1]s and " +"%[2]s" +msgstr "" + +#: internal/cli/board/listall.go:89 internal/cli/board/search.go:86 +msgid "(hidden)" +msgstr "(verstoppt)" + +#: legacy/builder/print_used_libraries_if_verbose.go:34 +msgid "(legacy)" +msgstr "" + +#: internal/cli/lib/install.go:81 +msgid "" +"--git-url and --zip-path are disabled by default, for more information see: " +"%v" +msgstr "" + +#: internal/cli/lib/install.go:83 +msgid "" +"--git-url and --zip-path flags allow installing untrusted files, use it at " +"your own risk." +msgstr "" + +#: internal/cli/lib/install.go:86 +msgid "--git-url or --zip-path can't be used with --install-in-builtin-dir" +msgstr "" + +#: commands/sketch/new.go:66 +msgid ".ino file already exists" +msgstr "" + +#: internal/cli/updater/updater.go:71 +msgid "A new release of Arduino CLI is available:" +msgstr "" + +#: arduino/errors.go:300 +msgid "A programmer is required to upload" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "ARCH" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:80 +msgid "ARDUINO COMMAND LINE MANUAL" +msgstr "" + +#: internal/cli/usage.go:32 +msgid "Additional help topics:" +msgstr "" + +#: internal/cli/config/add.go:73 internal/cli/config/add.go:74 +msgid "Adds one or more values to a setting." +msgstr "" + +#: internal/cli/usage.go:27 +msgid "Aliases:" +msgstr "" + +#: internal/cli/core/upgrade.go:72 +msgid "All the cores are already at the latest version" +msgstr "" + +#: commands/lib/install.go:86 +msgid "Already installed %s" +msgstr "" + +#: arduino/builder/detector/detector.go:89 +msgid "Alternatives for %[1]s: %[2]s" +msgstr "" + +#: arduino/builder/preprocessor/ctags.go:69 +msgid "An error occurred adding prototypes" +msgstr "" + +#: arduino/builder/detector/detector.go:210 +msgid "An error occurred detecting libraries" +msgstr "" + +#: internal/cli/daemon/daemon.go:63 +msgid "Append debug logging to the specified file" +msgstr "" + +#: internal/cli/lib/search.go:164 +msgid "Architecture: %s" +msgstr "" + +#: commands/sketch/archive.go:71 +msgid "Archive already exists" +msgstr "" + +#: arduino/builder/core.go:188 +msgid "Archiving built core (caching) in: %[1]s" +msgstr "" + +#: internal/cli/sketch/sketch.go:31 internal/cli/sketch/sketch.go:32 +msgid "Arduino CLI sketch commands." +msgstr "" + +#: internal/cli/cli.go:70 +msgid "Arduino CLI." +msgstr "" + +#: internal/cli/cli.go:71 +msgid "Arduino Command Line Interface (arduino-cli)." +msgstr "" + +#: internal/cli/board/board.go:31 internal/cli/board/board.go:32 +msgid "Arduino board commands." +msgstr "" + +#: internal/cli/cache/cache.go:31 internal/cli/cache/cache.go:32 +msgid "Arduino cache commands." +msgstr "" + +#: internal/cli/lib/lib.go:31 internal/cli/lib/lib.go:32 +msgid "Arduino commands about libraries." +msgstr "" + +#: internal/cli/config/config.go:33 +msgid "Arduino configuration commands." +msgstr "" + +#: internal/cli/core/core.go:31 internal/cli/core/core.go:32 +msgid "Arduino core operations." +msgstr "" + +#: internal/cli/lib/check_deps.go:56 internal/cli/lib/install.go:127 +msgid "Arguments error: %v" +msgstr "" + +#: internal/cli/board/attach.go:35 +msgid "Attaches a sketch to a board." +msgstr "" + +#: internal/cli/lib/search.go:155 +msgid "Author: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:78 +msgid "" +"Automatic library install can't be performed in this case, please manually " +"remove all duplicates and retry." +msgstr "" + +#: commands/lib/uninstall.go:57 +msgid "" +"Automatic library uninstall can't be performed in this case, please manually" +" remove them." +msgstr "" + +#: internal/cli/lib/list.go:136 +msgid "Available" +msgstr "" + +#: internal/cli/usage.go:29 +msgid "Available Commands:" +msgstr "" + +#: internal/cli/upload/upload.go:71 +msgid "Binary file to upload." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "Board Name" +msgstr "" + +#: internal/cli/board/details.go:138 +msgid "Board name:" +msgstr "" + +#: internal/cli/board/details.go:140 +msgid "Board version:" +msgstr "" + +#: legacy/builder/merge_sketch_with_bootloader.go:71 +msgid "Bootloader file specified but missing: %[1]s" +msgstr "" + +#: internal/cli/compile/compile.go:100 +msgid "Builds of 'core.a' are saved into this path to be cached and reused." +msgstr "" + +#: arduino/resources/index.go:57 +msgid "Can't create data directory %s" +msgstr "" + +#: arduino/errors.go:512 +msgid "Can't create sketch" +msgstr "" + +#: commands/lib/download.go:63 commands/lib/download.go:66 +msgid "Can't download library" +msgstr "Kann Bibliothéik net roflueden" + +#: arduino/cores/packagemanager/install_uninstall.go:133 +#: commands/core/uninstall.go:64 +msgid "Can't find dependencies for platform %s" +msgstr "" + +#: arduino/errors.go:538 +msgid "Can't open sketch" +msgstr "" + +#: internal/cli/config/set.go:54 +msgid "Can't set multiple values in key %v" +msgstr "" + +#: arduino/errors.go:525 +msgid "Can't update sketch" +msgstr "" + +#: internal/cli/arguments/arguments.go:36 +msgid "Can't use the following flags together: %s" +msgstr "" + +#: internal/cli/config/add.go:103 internal/cli/config/remove.go:69 +msgid "Can't write config file: %v" +msgstr "" + +#: internal/cli/daemon/daemon.go:92 +msgid "Can't write debug log: %s" +msgstr "" + +#: commands/compile/compile.go:166 commands/compile/compile.go:169 +msgid "Cannot create build cache directory" +msgstr "" + +#: commands/compile/compile.go:154 +msgid "Cannot create build directory" +msgstr "" + +#: internal/cli/config/init.go:94 +msgid "Cannot create config file directory: %v" +msgstr "" + +#: internal/cli/config/init.go:109 +msgid "Cannot create config file: %v" +msgstr "" + +#: arduino/errors.go:782 +msgid "Cannot create temp dir" +msgstr "" + +#: arduino/errors.go:800 +msgid "Cannot create temp file" +msgstr "" + +#: internal/cli/config/delete.go:53 +msgid "Cannot delete the key %[1]s: %[2]v" +msgstr "" + +#: commands/debug/debug.go:72 +msgid "Cannot execute debug tool" +msgstr "" + +#: internal/cli/config/init.go:72 internal/cli/config/init.go:82 +msgid "Cannot find absolute path: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:140 +msgid "Cannot install platform" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:331 +msgid "Cannot install tool %s" +msgstr "" + +#: commands/upload/upload.go:468 +msgid "Cannot perform port reset: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:158 +msgid "Cannot upgrade platform" +msgstr "" + +#: internal/cli/config/delete.go:57 +msgid "Cannot write the file %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:163 +msgid "Category: %s" +msgstr "" + +#: internal/cli/lib/check_deps.go:37 internal/cli/lib/check_deps.go:38 +msgid "Check dependencies status for the specified library." +msgstr "" + +#: arduino/resources/checksums.go:167 +msgid "Checksum differs from checksum in package.json" +msgstr "" + +#: internal/cli/board/details.go:188 +msgid "Checksum:" +msgstr "" + +#: internal/cli/cache/cache.go:33 +msgid "Clean caches." +msgstr "" + +#: internal/cli/cli.go:126 +msgid "Comma-separated list of additional URLs for the Boards Manager." +msgstr "" + +#: internal/cli/board/list.go:53 +msgid "" +"Command keeps running and prints list of connected boards whenever there is " +"a change." +msgstr "" + +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 +msgid "Compiled sketch not found in %s" +msgstr "" + +#: internal/cli/compile/compile.go:84 internal/cli/compile/compile.go:85 +msgid "Compiles Arduino sketches." +msgstr "" + +#: legacy/builder/builder.go:129 +msgid "Compiling core..." +msgstr "" + +#: legacy/builder/builder.go:94 +msgid "Compiling libraries..." +msgstr "" + +#: arduino/builder/libraries.go:182 +msgid "Compiling library \"%[1]s\"" +msgstr "" + +#: legacy/builder/builder.go:66 +msgid "Compiling sketch..." +msgstr "" + +#: internal/cli/config/init.go:88 +msgid "" +"Config file already exists, use --overwrite to discard the existing one." +msgstr "" + +#: internal/cli/config/init.go:112 +msgid "Config file written to: %s" +msgstr "" + +#: internal/cli/debug/debug.go:151 +msgid "Configuration options for %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:68 +msgid "" +"Configure communication port settings. The format is " +"=[,=]..." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:174 +msgid "Configuring platform." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:341 +msgid "Configuring tool." +msgstr "" + +#: internal/cli/board/list.go:188 +msgid "Connected" +msgstr "" + +#: internal/cli/monitor/monitor.go:155 +msgid "Connected to %s! Press CTRL-C to exit." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Core" +msgstr "" + +#: arduino/httpclient/httpclient.go:112 +msgid "Could not connect via HTTP" +msgstr "" + +#: commands/instances.go:503 +msgid "Could not create index directory" +msgstr "" + +#: arduino/builder/core.go:61 +msgid "Couldn't deeply cache core build: %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:148 +msgid "Couldn't determine program size" +msgstr "" + +#: internal/cli/arguments/sketch.go:36 internal/cli/lib/install.go:109 +msgid "Couldn't get current working directory: %v" +msgstr "" + +#: internal/cli/sketch/new.go:37 internal/cli/sketch/new.go:38 +msgid "Create a new Sketch" +msgstr "" + +#: internal/cli/compile/compile.go:97 +msgid "Create and print a profile configuration from the build." +msgstr "" + +#: internal/cli/sketch/archive.go:38 internal/cli/sketch/archive.go:39 +msgid "Creates a zip file containing all sketch files." +msgstr "" + +#: internal/cli/config/init.go:43 +msgid "" +"Creates or updates the configuration file in the data directory or custom " +"directory with the current configuration settings." +msgstr "" + +#: internal/cli/compile/compile.go:309 +msgid "" +"Currently, Build Profiles only support libraries available through Arduino " +"Library Manager." +msgstr "" + +#: internal/cli/core/list.go:93 internal/cli/core/search.go:104 +#: internal/cli/outdated/outdated.go:98 +msgid "DEPRECATED" +msgstr "" + +#: internal/cli/daemon/daemon.go:178 +msgid "Daemon is now listening on %s:%s" +msgstr "" + +#: internal/cli/debug/debug.go:53 +msgid "Debug Arduino sketches." +msgstr "" + +#: internal/cli/debug/debug.go:54 +msgid "" +"Debug Arduino sketches. (this command opens an interactive gdb session)" +msgstr "" + +#: internal/cli/debug/debug.go:63 +msgid "Debug interpreter e.g.: %s" +msgstr "" + +#: commands/debug/debug_info.go:148 +msgid "Debugging not supported for board %s" +msgstr "" + +#: internal/cli/board/details.go:142 +msgid "Debugging supported:" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Default" +msgstr "" + +#: internal/cli/board/attach.go:108 +msgid "Default FQBN set to" +msgstr "" + +#: internal/cli/board/attach.go:107 +msgid "Default port set to" +msgstr "" + +#: internal/cli/cache/clean.go:30 +msgid "Delete Boards/Library Manager download cache." +msgstr "" + +#: internal/cli/cache/clean.go:31 +msgid "" +"Delete contents of the `directories.downloads` folder, where archive files " +"are staged during installation of libraries and boards platforms." +msgstr "" + +#: internal/cli/config/delete.go:32 internal/cli/config/delete.go:33 +msgid "Deletes a settings key and all its sub keys." +msgstr "" + +#: internal/cli/lib/search.go:171 +msgid "Dependencies: %s" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:88 +msgid "Description" +msgstr "" + +#: legacy/builder/builder.go:58 +msgid "Detecting libraries used..." +msgstr "" + +#: internal/cli/board/list.go:43 +msgid "" +"Detects and displays a list of boards connected to the current computer." +msgstr "" + +#: internal/cli/debug/debug.go:64 +msgid "Directory containing binaries for debug." +msgstr "" + +#: internal/cli/upload/upload.go:70 +msgid "Directory containing binaries to upload." +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:45 +msgid "" +"Directory where to save generated files. Default is './docs', the directory " +"must exist." +msgstr "" + +#: internal/cli/completion/completion.go:44 +msgid "Disable completion description for shells that support it" +msgstr "" + +#: internal/cli/board/list.go:189 +msgid "Disconnected" +msgstr "" + +#: internal/cli/daemon/daemon.go:64 +msgid "Display only the provided gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:61 +msgid "Do not install dependencies." +msgstr "" + +#: internal/cli/lib/install.go:62 +msgid "Do not overwrite already installed libraries." +msgstr "" + +#: internal/cli/core/install.go:55 +msgid "Do not overwrite already installed platforms." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:58 +#: internal/cli/upload/upload.go:75 +msgid "Do not perform the actual upload, just log out actions" +msgstr "" + +#: internal/cli/daemon/daemon.go:61 +msgid "Do not terminate daemon process if the parent process dies" +msgstr "" + +#: commands/lib/download.go:60 +msgid "Downloading %s" +msgstr "" + +#: arduino/resources/index.go:129 +msgid "Downloading index signature: %s" +msgstr "" + +#: arduino/resources/index.go:74 commands/instances.go:542 +#: commands/instances.go:551 +msgid "Downloading index: %s" +msgstr "" + +#: commands/instances.go:439 +msgid "Downloading library %s" +msgstr "" + +#: commands/instances.go:136 +msgid "Downloading missing tool %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:93 +msgid "Downloading packages" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:98 +msgid "Downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:178 +msgid "Downloading tool %s" +msgstr "" + +#: internal/cli/core/download.go:35 internal/cli/core/download.go:36 +msgid "Downloads one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/download.go:35 internal/cli/lib/download.go:36 +msgid "Downloads one or more libraries without installing them." +msgstr "" + +#: internal/cli/daemon/daemon.go:62 +msgid "Enable debug logging of gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:64 +msgid "Enter a path to zip file" +msgstr "" + +#: internal/cli/lib/install.go:63 +msgid "Enter git url for libraries hosted on repositories" +msgstr "" + +#: commands/sketch/archive.go:107 +msgid "Error adding file to sketch archive" +msgstr "" + +#: arduino/builder/core.go:194 +msgid "Error archiving built core (caching) in %[1]s: %[2]s" +msgstr "" + +#: internal/cli/sketch/archive.go:80 +msgid "Error archiving: %v" +msgstr "" + +#: commands/sketch/archive.go:95 +msgid "Error calculating relative file path" +msgstr "" + +#: internal/cli/cache/clean.go:45 +msgid "Error cleaning caches: %v" +msgstr "" + +#: internal/cli/compile/compile.go:218 +msgid "Error converting path to absolute: %v" +msgstr "" + +#: commands/compile/compile.go:405 +msgid "Error copying output file %s" +msgstr "" + +#: internal/cli/instance/instance.go:43 +msgid "Error creating instance: %v" +msgstr "" + +#: commands/compile/compile.go:385 +msgid "Error creating output dir" +msgstr "" + +#: commands/sketch/archive.go:83 +msgid "Error creating sketch archive" +msgstr "" + +#: internal/cli/sketch/new.go:69 internal/cli/sketch/new.go:81 +msgid "Error creating sketch: %v" +msgstr "" + +#: internal/cli/board/list.go:78 internal/cli/board/list.go:89 +msgid "Error detecting boards: %v" +msgstr "" + +#: internal/cli/core/download.go:68 internal/cli/lib/download.go:65 +msgid "Error downloading %[1]s: %[2]v" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:106 +#: arduino/cores/packagemanager/profiles.go:107 +#: arduino/cores/packagemanager/profiles.go:111 +#: arduino/cores/packagemanager/profiles.go:112 +msgid "Error downloading %s" +msgstr "" + +#: arduino/resources/index.go:75 commands/instances.go:602 +msgid "Error downloading index '%s'" +msgstr "" + +#: arduino/resources/index.go:130 +msgid "Error downloading index signature '%s'" +msgstr "" + +#: commands/instances.go:451 +msgid "Error downloading library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:129 +#: arduino/cores/packagemanager/profiles.go:130 +msgid "Error downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:127 +#: arduino/cores/packagemanager/profiles.go:180 +msgid "Error downloading tool %s" +msgstr "" + +#: internal/cli/debug/debug.go:114 +msgid "Error during Debug: %v" +msgstr "" + +#: internal/cli/arguments/port.go:144 +msgid "Error during FQBN detection: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:244 internal/cli/feedback/feedback.go:250 +msgid "Error during JSON encoding of the output: %v" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:72 +#: internal/cli/burnbootloader/burnbootloader.go:85 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 +msgid "Error during Upload: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:256 +msgid "Error during YAML encoding of the output: %v" +msgstr "" + +#: internal/cli/compile/compile.go:355 +msgid "Error during build: %v" +msgstr "" + +#: internal/cli/core/install.go:79 +msgid "Error during install: %v" +msgstr "" + +#: internal/cli/core/uninstall.go:68 +msgid "Error during uninstall: %v" +msgstr "" + +#: internal/cli/core/upgrade.go:119 +msgid "Error during upgrade: %v" +msgstr "" + +#: arduino/resources/index.go:97 arduino/resources/index.go:116 +msgid "Error extracting %s" +msgstr "" + +#: commands/upload/upload.go:373 +msgid "Error finding build artifacts" +msgstr "" + +#: internal/cli/debug/debug.go:98 +msgid "Error getting Debug info: %v" +msgstr "" + +#: commands/sketch/archive.go:59 +msgid "Error getting absolute path of sketch archive" +msgstr "" + +#: internal/cli/board/details.go:73 +msgid "Error getting board details: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:81 +msgid "Error getting current directory for compilation database: %s" +msgstr "" + +#: commands/compile/compile.go:319 commands/lib/list.go:108 +msgid "Error getting information for library %s" +msgstr "" + +#: internal/cli/lib/examples.go:72 +msgid "Error getting libraries info: %v" +msgstr "" + +#: internal/cli/arguments/fqbn.go:90 +msgid "Error getting port metadata: %v" +msgstr "" + +#: internal/cli/monitor/monitor.go:95 +msgid "Error getting port settings details: %s" +msgstr "" + +#: internal/cli/upload/upload.go:155 +msgid "Error getting user input" +msgstr "" + +#: internal/cli/instance/instance.go:82 internal/cli/instance/instance.go:99 +msgid "Error initializing instance: %v" +msgstr "" + +#: internal/cli/lib/install.go:145 +msgid "Error installing %s: %v" +msgstr "" + +#: internal/cli/lib/install.go:119 +msgid "Error installing Git Library: %v" +msgstr "" + +#: internal/cli/lib/install.go:98 +msgid "Error installing Zip Library: %v" +msgstr "" + +#: commands/instances.go:461 +msgid "Error installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:137 +#: arduino/cores/packagemanager/profiles.go:138 +msgid "Error installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:181 +#: arduino/cores/packagemanager/profiles.go:188 +#: arduino/cores/packagemanager/profiles.go:189 +msgid "Error installing tool %s" +msgstr "" + +#: internal/cli/board/listall.go:63 +msgid "Error listing boards: %v" +msgstr "" + +#: internal/cli/lib/list.go:89 +msgid "Error listing libraries: %v" +msgstr "" + +#: internal/cli/core/list.go:69 +msgid "Error listing platforms: %v" +msgstr "" + +#: arduino/errors.go:425 +msgid "Error loading hardware platform" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:115 +#: arduino/cores/packagemanager/profiles.go:116 +msgid "Error loading index %s" +msgstr "" + +#: arduino/resources/index.go:91 +msgid "Error opening %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:86 +msgid "Error opening debug logging file: %s" +msgstr "" + +#: internal/cli/compile/compile.go:191 +msgid "Error opening source code overrides data file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:204 +msgid "Error parsing --show-properties flag: %v" +msgstr "" + +#: commands/compile/compile.go:395 +msgid "Error reading build directory" +msgstr "" + +#: configuration/configuration.go:68 +msgid "Error reading config file: %v" +msgstr "" + +#: commands/sketch/archive.go:77 +msgid "Error reading sketch files" +msgstr "" + +#: internal/cli/lib/check_deps.go:65 +msgid "Error resolving dependencies for %[1]s: %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:68 +msgid "Error retrieving core list: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:155 +msgid "Error rolling-back changes: %s" +msgstr "" + +#: arduino/resources/index.go:153 arduino/resources/index.go:165 +msgid "Error saving downloaded index" +msgstr "" + +#: arduino/resources/index.go:160 arduino/resources/index.go:169 +msgid "Error saving downloaded index signature" +msgstr "" + +#: internal/cli/board/search.go:60 +msgid "Error searching boards: %v" +msgstr "" + +#: internal/cli/lib/search.go:79 +msgid "Error searching for Libraries: %v" +msgstr "" + +#: internal/cli/core/search.go:80 +msgid "Error searching for platforms: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:66 +msgid "Error serializing compilation database: %s" +msgstr "" + +#: internal/cli/board/list.go:81 +msgid "Error starting discovery: %v" +msgstr "" + +#: internal/cli/lib/uninstall.go:63 +msgid "Error uninstalling %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:68 internal/cli/lib/update_index.go:54 +msgid "Error updating library index: %v" +msgstr "" + +#: internal/cli/lib/upgrade.go:71 +msgid "Error upgrading libraries" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:150 +msgid "Error upgrading platform: %s" +msgstr "" + +#: arduino/resources/index.go:139 +msgid "Error verifying signature" +msgstr "" + +#: arduino/builder/detector/detector.go:366 +msgid "Error while detecting libraries included by %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 +msgid "Error while determining sketch size: %s" +msgstr "" + +#: arduino/builder/compilation/database.go:69 +msgid "Error writing compilation database: %s" +msgstr "" + +#: internal/cli/completion/completion.go:56 +msgid "Error: command description is not supported by %v" +msgstr "" + +#: internal/cli/compile/compile.go:197 +msgid "Error: invalid source code overrides data file: %v" +msgstr "" + +#: internal/cli/board/list.go:96 +msgid "Event" +msgstr "" + +#: internal/cli/lib/examples.go:120 +msgid "Examples for library %s" +msgstr "" + +#: internal/cli/usage.go:28 +msgid "Examples:" +msgstr "" + +#: internal/cli/debug/debug.go:132 +msgid "Executable to debug" +msgstr "" + +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 +msgid "Expected compiled sketch in directory %s, but is a file instead" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/board/details.go:40 +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "FQBN" +msgstr "" + +#: internal/cli/board/details.go:139 +msgid "FQBN:" +msgstr "" + +#: commands/upload/upload.go:502 +msgid "Failed chip erase" +msgstr "" + +#: commands/upload/upload.go:509 +msgid "Failed programming" +msgstr "" + +#: commands/upload/upload.go:505 +msgid "Failed to burn bootloader" +msgstr "" + +#: commands/instances.go:166 +msgid "Failed to create data directory" +msgstr "" + +#: commands/instances.go:156 +msgid "Failed to create downloads directory" +msgstr "" + +#: internal/cli/daemon/daemon.go:133 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is an invalid port." +msgstr "" + +#: internal/cli/daemon/daemon.go:128 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is unknown name." +msgstr "" + +#: internal/cli/daemon/daemon.go:140 +msgid "Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v" +msgstr "" + +#: internal/cli/daemon/daemon.go:138 +msgid "Failed to listen on TCP port: %s. Address already in use." +msgstr "" + +#: commands/upload/upload.go:513 +msgid "Failed uploading" +msgstr "" + +#: internal/cli/board/details.go:186 +msgid "File:" +msgstr "" + +#: commands/compile/compile.go:137 +msgid "" +"Firmware encryption/signing requires all the following properties to be " +"defined: %s" +msgstr "" + +#: commands/daemon/debug.go:46 +msgid "First message must contain debug request, not data" +msgstr "" + +#: internal/cli/arguments/arguments.go:47 +msgid "Flag %[1]s is mandatory when used in conjunction with: %[2]s" +msgstr "" + +#: internal/cli/usage.go:30 +msgid "Flags:" +msgstr "" + +#: internal/cli/arguments/post_install.go:35 +msgid "" +"Force run of post-install scripts (if the CLI is not running interactively)." +msgstr "" + +#: internal/cli/arguments/post_install.go:36 +msgid "" +"Force skip of post-install scripts (if the CLI is running interactively)." +msgstr "" + +#: arduino/errors.go:840 +msgid "Found %d platforms matching \"%s\": %s" +msgstr "" + +#: internal/cli/arguments/fqbn.go:37 +msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" +msgstr "" + +#: internal/cli/debug/debug.go:146 +msgid "GDB Server path" +msgstr "" + +#: internal/cli/debug/debug.go:145 +msgid "GDB Server type" +msgstr "" + +#: commands/debug/debug.go:178 +msgid "GDB server '%s' is not supported" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:38 +#: internal/cli/generatedocs/generatedocs.go:39 +msgid "Generates bash completion and command manpages." +msgstr "" + +#: internal/cli/completion/completion.go:38 +msgid "Generates completion scripts" +msgstr "" + +#: internal/cli/completion/completion.go:39 +msgid "Generates completion scripts for various shells" +msgstr "" + +#: legacy/builder/builder.go:63 +msgid "Generating function prototypes..." +msgstr "" + +#: internal/cli/usage.go:31 +msgid "Global Flags:" +msgstr "" + +#: arduino/builder/sizer/sizer.go:158 +msgid "" +"Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " +"bytes for local variables. Maximum is %[2]s bytes." +msgstr "" + +#: arduino/builder/sizer/sizer.go:164 +msgid "Global variables use %[1]s bytes of dynamic memory." +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 +#: internal/cli/outdated/outdated.go:83 +msgid "ID" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Id" +msgstr "" + +#: internal/cli/board/details.go:153 +msgid "Identification properties:" +msgstr "" + +#: internal/cli/compile/compile.go:132 +msgid "If set built binaries will be exported to the sketch folder." +msgstr "" + +#: internal/cli/core/list.go:45 +msgid "" +"If set return all installable and installed cores, including manually " +"installed." +msgstr "" + +#: internal/cli/lib/list.go:53 +msgid "Include built-in libraries (from platforms and IDE) in listing." +msgstr "" + +#: internal/cli/sketch/archive.go:50 +msgid "Includes %s directory in the archive." +msgstr "" + +#: internal/cli/lib/install.go:65 +msgid "Install libraries in the IDE-Builtin directory" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:85 +msgid "Installed" +msgstr "" + +#: commands/lib/install.go:140 +msgid "Installed %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:316 +#: commands/lib/install.go:126 +msgid "Installing %s" +msgstr "" + +#: commands/instances.go:459 +msgid "Installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:116 +#: arduino/cores/packagemanager/profiles.go:135 +msgid "Installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:186 +msgid "Installing tool %s" +msgstr "" + +#: internal/cli/core/install.go:37 internal/cli/core/install.go:38 +msgid "Installs one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/install.go:45 internal/cli/lib/install.go:46 +msgid "Installs one or more specified libraries into the system." +msgstr "" + +#: arduino/builder/detector/detector.go:392 +msgid "Internal error in cache" +msgstr "" + +#: arduino/errors.go:378 +msgid "Invalid '%[1]s' property: %[2]s" +msgstr "" + +#: internal/cli/cli.go:250 +msgid "" +"Invalid Call : should show Help, but it is available only in TEXT mode." +msgstr "" + +#: arduino/errors.go:62 +msgid "Invalid FQBN" +msgstr "" + +#: internal/cli/daemon/daemon.go:151 +msgid "Invalid TCP address: port is missing" +msgstr "" + +#: arduino/errors.go:80 +msgid "Invalid URL" +msgstr "" + +#: commands/instances.go:274 +msgid "Invalid additional URL: %v" +msgstr "" + +#: arduino/resources/index.go:103 +msgid "Invalid archive: file %{1}s not found in archive %{2}s" +msgstr "" + +#: internal/cli/core/download.go:56 internal/cli/core/install.go:65 +#: internal/cli/core/uninstall.go:53 internal/cli/core/upgrade.go:93 +#: internal/cli/lib/download.go:54 internal/cli/lib/uninstall.go:53 +msgid "Invalid argument passed: %v" +msgstr "" + +#: commands/compile/compile.go:190 +msgid "Invalid build properties" +msgstr "" + +#: arduino/builder/sizer/sizer.go:237 +msgid "Invalid data size regexp: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:243 +msgid "Invalid eeprom size regexp: %s" +msgstr "" + +#: arduino/errors.go:48 +msgid "Invalid instance" +msgstr "" + +#: internal/cli/core/upgrade.go:99 +msgid "Invalid item %s" +msgstr "" + +#: arduino/errors.go:98 +msgid "Invalid library" +msgstr "" + +#: configuration/network.go:63 +msgid "Invalid network.proxy '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/cli.go:217 +msgid "Invalid option for --log-level: %s" +msgstr "" + +#: internal/cli/cli.go:229 +msgid "Invalid output format: %s" +msgstr "" + +#: commands/instances.go:554 +msgid "Invalid package index in %s" +msgstr "" + +#: internal/cli/core/uninstall.go:58 +msgid "Invalid parameter %s: version not allowed" +msgstr "" + +#: commands/board/list.go:79 +msgid "Invalid pid value: '%s'" +msgstr "" + +#: arduino/errors.go:222 +msgid "Invalid profile" +msgstr "" + +#: commands/monitor/monitor.go:145 +msgid "Invalid recipe in platform.txt" +msgstr "" + +#: arduino/builder/sizer/sizer.go:227 +msgid "Invalid size regexp: %s" +msgstr "" + +#: internal/cli/core/search.go:124 +msgid "Invalid timeout: %s" +msgstr "" + +#: arduino/errors.go:116 +msgid "Invalid version" +msgstr "" + +#: commands/board/list.go:76 +msgid "Invalid vid value: '%s'" +msgstr "" + +#: internal/cli/compile/compile.go:127 +msgid "" +"Just produce the compilation database, without actually compiling. All build" +" commands are skipped except pre* hooks." +msgstr "" + +#: internal/cli/lib/list.go:38 +msgid "LIBNAME" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "LIBRARY" +msgstr "" + +#: internal/cli/lib/download.go:34 internal/cli/lib/examples.go:42 +#: internal/cli/lib/search.go:40 internal/cli/lib/uninstall.go:34 +msgid "LIBRARY_NAME" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/outdated/outdated.go:86 +msgid "Latest" +msgstr "" + +#: arduino/builder/libraries.go:112 +msgid "Library %[1]s has been declared precompiled:" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:135 +#: commands/lib/install.go:92 +msgid "" +"Library %[1]s is already installed, but with a different version: %[2]s" +msgstr "" + +#: commands/lib/upgrade.go:59 +msgid "Library %s is already at the latest version" +msgstr "" + +#: commands/lib/uninstall.go:39 +msgid "Library %s is not installed" +msgstr "" + +#: commands/instances.go:445 +msgid "Library %s not found" +msgstr "" + +#: arduino/errors.go:446 +msgid "Library '%s' not found" +msgstr "" + +#: arduino/builder/detector/detector.go:465 +msgid "" +"Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." +msgstr "" + +#: arduino/errors.go:575 +msgid "Library install failed" +msgstr "" + +#: commands/lib/install.go:150 commands/lib/install.go:160 +msgid "Library installed" +msgstr "" + +#: internal/cli/lib/search.go:161 +msgid "License: %s" +msgstr "" + +#: legacy/builder/builder.go:156 +msgid "Linking everything together..." +msgstr "" + +#: internal/cli/board/listall.go:39 +msgid "" +"List all boards that have the support platform installed. You can search\n" +"for a specific board if you specify the board name" +msgstr "" + +#: internal/cli/board/listall.go:38 +msgid "List all known boards and their corresponding FQBN." +msgstr "" + +#: internal/cli/board/list.go:42 +msgid "List connected boards." +msgstr "" + +#: internal/cli/arguments/fqbn.go:42 +msgid "" +"List of board options separated by commas. Or can be used multiple times for" +" multiple options." +msgstr "" + +#: internal/cli/compile/compile.go:105 +msgid "" +"List of custom build properties separated by commas. Or can be used multiple" +" times for multiple properties." +msgstr "" + +#: internal/cli/lib/list.go:55 +msgid "List updatable libraries." +msgstr "" + +#: internal/cli/core/list.go:44 +msgid "List updatable platforms." +msgstr "" + +#: internal/cli/board/board.go:33 +msgid "Lists all connected boards." +msgstr "" + +#: internal/cli/outdated/outdated.go:41 +msgid "Lists cores and libraries that can be upgraded" +msgstr "" + +#: commands/instances.go:307 commands/instances.go:318 +#: commands/instances.go:418 +msgid "Loading index file: %v" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:87 +msgid "Location" +msgstr "" + +#: arduino/builder/sizer/sizer.go:199 +msgid "Low memory available, stability problems may occur." +msgstr "" + +#: internal/cli/lib/search.go:156 +msgid "Maintainer: %s" +msgstr "" + +#: internal/cli/arguments/discovery_timeout.go:31 +msgid "Max time to wait for port discovery, e.g.: 30s, 1m" +msgstr "" + +#: internal/cli/cli.go:110 +msgid "" +"Messages with this level and above will be logged. Valid levels are: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:460 +msgid "Missing '%[1]s' from library in %[2]s" +msgstr "" + +#: arduino/errors.go:171 +msgid "Missing FQBN (Fully Qualified Board Name)" +msgstr "" + +#: arduino/errors.go:262 +msgid "Missing port" +msgstr "" + +#: arduino/errors.go:238 +msgid "Missing port address" +msgstr "" + +#: arduino/errors.go:250 +msgid "Missing port protocol" +msgstr "" + +#: arduino/errors.go:288 +msgid "Missing programmer" +msgstr "" + +#: arduino/builder/sizer/sizer.go:231 +msgid "Missing size regexp" +msgstr "" + +#: arduino/errors.go:498 +msgid "Missing sketch path" +msgstr "" + +#: arduino/errors.go:359 +msgid "Monitor '%s' not found" +msgstr "" + +#: internal/cli/monitor/monitor.go:138 +msgid "Monitor port settings:" +msgstr "" + +#: arduino/builder/detector/detector.go:154 +msgid "Multiple libraries were found for \"%[1]s\"" +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:84 +msgid "Name" +msgstr "" + +#: internal/cli/lib/search.go:135 +msgid "Name: \"%s\"" +msgstr "" + +#: internal/cli/upload/upload.go:206 +msgid "New upload port: %[1]s (%[2]s)" +msgstr "" + +#: internal/cli/board/list.go:122 +msgid "No boards found." +msgstr "" + +#: internal/cli/board/attach.go:105 +msgid "No default port or FQBN set" +msgstr "" + +#: internal/cli/lib/examples.go:105 +msgid "No libraries found." +msgstr "" + +#: internal/cli/lib/list.go:128 +msgid "No libraries installed." +msgstr "" + +#: internal/cli/lib/search.go:124 +msgid "No libraries matching your search." +msgstr "" + +#: internal/cli/lib/search.go:130 +msgid "" +"No libraries matching your search.\n" +"Did you mean...\n" +msgstr "" + +#: internal/cli/lib/list.go:126 +msgid "No libraries update is available." +msgstr "" + +#: arduino/errors.go:276 +msgid "No monitor available for the port protocol %s" +msgstr "" + +#: internal/cli/outdated/outdated.go:77 +msgid "No outdated platforms or libraries found." +msgstr "" + +#: internal/cli/core/list.go:86 +msgid "No platforms installed." +msgstr "" + +#: internal/cli/core/search.go:110 +msgid "No platforms matching your search." +msgstr "" + +#: commands/upload/upload.go:458 +msgid "No upload port found, using %s as fallback" +msgstr "" + +#: arduino/errors.go:465 +msgid "No valid dependencies solution found" +msgstr "" + +#: arduino/builder/sizer/sizer.go:189 +msgid "Not enough memory; see %[1]s for tips on reducing your footprint." +msgstr "" + +#: arduino/builder/detector/detector.go:157 +msgid "Not used: %[1]s" +msgstr "" + +#: internal/cli/board/details.go:185 +msgid "OS:" +msgstr "" + +#: internal/cli/board/details.go:147 +msgid "Official Arduino board:" +msgstr "" + +#: internal/cli/lib/search.go:50 +msgid "" +"Omit library details far all versions except the latest (produce a more " +"compact JSON output)." +msgstr "" + +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 +msgid "Open a communication port with a board." +msgstr "" + +#: internal/cli/board/details.go:197 +msgid "Option:" +msgstr "" + +#: internal/cli/compile/compile.go:115 +msgid "" +"Optional, can be: %s. Used to tell gcc which warning level to use (-W flag)." +msgstr "" + +#: internal/cli/compile/compile.go:128 +msgid "Optional, cleanup the build folder and do not use any cached build." +msgstr "" + +#: internal/cli/compile/compile.go:125 +msgid "" +"Optional, optimize compile output for debugging, rather than for release." +msgstr "" + +#: internal/cli/compile/compile.go:117 +msgid "Optional, suppresses almost every output." +msgstr "" + +#: internal/cli/compile/compile.go:116 internal/cli/upload/upload.go:73 +msgid "Optional, turns on verbose mode." +msgstr "" + +#: internal/cli/compile/compile.go:133 +msgid "" +"Optional. Path to a .json file that contains a set of replacements of the " +"sketch source code." +msgstr "" + +#: internal/cli/compile/compile.go:107 +msgid "" +"Override a build property with a custom value. Can be used multiple times " +"for multiple properties." +msgstr "" + +#: internal/cli/config/init.go:57 +msgid "Overwrite existing config file." +msgstr "" + +#: internal/cli/sketch/archive.go:51 +msgid "Overwrites an already existing archive" +msgstr "" + +#: internal/cli/sketch/new.go:44 +msgid "Overwrites an existing .ino sketch." +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "PACKAGER" +msgstr "" + +#: internal/cli/board/details.go:163 +msgid "Package URL:" +msgstr "" + +#: internal/cli/board/details.go:162 +msgid "Package maintainer:" +msgstr "" + +#: internal/cli/board/details.go:161 +msgid "Package name:" +msgstr "" + +#: internal/cli/board/details.go:165 +msgid "Package online help:" +msgstr "" + +#: internal/cli/board/details.go:164 +msgid "Package website:" +msgstr "" + +#: internal/cli/lib/search.go:158 +msgid "Paragraph: %s" +msgstr "" + +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 +msgid "Path" +msgstr "" + +#: internal/cli/compile/compile.go:124 +msgid "" +"Path to a collection of libraries. Can be used multiple times or entries can" +" be comma separated." +msgstr "" + +#: internal/cli/compile/compile.go:122 +msgid "" +"Path to a single library’s root folder. Can be used multiple times or " +"entries can be comma separated." +msgstr "" + +#: internal/cli/cli.go:114 +msgid "Path to the file where logs will be written." +msgstr "" + +#: internal/cli/compile/compile.go:103 +msgid "" +"Path where to save compiled files. If omitted, a directory will be created " +"in the default temporary path of your OS." +msgstr "" + +#: commands/upload/upload.go:439 +msgid "Performing 1200-bps touch reset on serial port %s" +msgstr "" + +#: commands/core/install.go:54 commands/core/install.go:61 +msgid "Platform %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:191 +msgid "Platform %s installed" +msgstr "" + +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 +msgid "" +"Platform %s is not found in any known index\n" +"Maybe you need to add a 3rd party URL?" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:301 +msgid "Platform %s uninstalled" +msgstr "" + +#: arduino/errors.go:483 +msgid "Platform '%s' is already at the latest version" +msgstr "" + +#: arduino/errors.go:407 +msgid "Platform '%s' not found" +msgstr "" + +#: internal/cli/board/search.go:82 +msgid "Platform ID" +msgstr "" + +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 +msgid "Platform ID is not correct" +msgstr "" + +#: internal/cli/board/details.go:171 +msgid "Platform URL:" +msgstr "" + +#: internal/cli/board/details.go:170 +msgid "Platform architecture:" +msgstr "" + +#: internal/cli/board/details.go:169 +msgid "Platform category:" +msgstr "" + +#: internal/cli/board/details.go:176 +msgid "Platform checksum:" +msgstr "" + +#: internal/cli/board/details.go:172 +msgid "Platform file name:" +msgstr "" + +#: internal/cli/board/details.go:168 +msgid "Platform name:" +msgstr "" + +#: internal/cli/board/details.go:174 +msgid "Platform size (bytes):" +msgstr "" + +#: arduino/errors.go:155 +msgid "" +"Please specify an FQBN. Multiple possible boards detected on port %[1]s with" +" protocol %[2]s" +msgstr "" + +#: arduino/errors.go:135 +msgid "" +"Please specify an FQBN. The board on port %[1]s with protocol %[2]s can't be" +" identified" +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Port" +msgstr "" + +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 +msgid "Port closed: %v" +msgstr "" + +#: arduino/errors.go:669 +msgid "Port monitor error" +msgstr "" + +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 +msgid "Precompiled library in \"%[1]s\" not found" +msgstr "" + +#: internal/cli/board/details.go:41 +msgid "Print details about a board." +msgstr "" + +#: internal/cli/compile/compile.go:99 +msgid "Print preprocessed code to stdout instead of compiling." +msgstr "" + +#: internal/cli/cli.go:106 internal/cli/cli.go:108 +msgid "Print the logs on the standard output." +msgstr "" + +#: internal/cli/config/dump.go:31 +msgid "Prints the current configuration" +msgstr "" + +#: internal/cli/config/dump.go:32 +msgid "Prints the current configuration." +msgstr "" + +#: arduino/errors.go:204 +msgid "Profile '%s' not found" +msgstr "" + +#: arduino/errors.go:340 +msgid "Programmer '%s' not found" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Programmer name" +msgstr "" + +#: internal/cli/arguments/programmer.go:29 +msgid "Programmer to use, e.g: atmel_ice" +msgstr "" + +#: internal/cli/board/details.go:214 +msgid "Programmers:" +msgstr "" + +#: arduino/errors.go:392 +msgid "Property '%s' is undefined" +msgstr "" + +#: internal/cli/board/list.go:132 +msgid "Protocol" +msgstr "" + +#: internal/cli/lib/search.go:168 +msgid "Provides includes: %s" +msgstr "" + +#: internal/cli/config/remove.go:31 internal/cli/config/remove.go:32 +msgid "Removes one or more values from a setting." +msgstr "" + +#: commands/lib/install.go:130 +msgid "Replacing %[1]s with %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:120 +msgid "Replacing platform %[1]s with %[2]s" +msgstr "" + +#: internal/cli/board/details.go:182 +msgid "Required tool:" +msgstr "" + +#: internal/cli/daemon/daemon.go:53 +msgid "Run as a daemon on port: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:69 +msgid "Run in silent mode, show only monitor input and output." +msgstr "" + +#: internal/cli/daemon/daemon.go:54 +msgid "" +"Running as a daemon the initialization of cores and libraries is done only " +"once." +msgstr "" + +#: arduino/builder/core.go:62 +msgid "Running normal build of the core..." +msgstr "" + +#: internal/cli/compile/compile.go:101 +msgid "Save build artifacts in this directory." +msgstr "" + +#: internal/cli/board/search.go:38 +msgid "Search for a board in the Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/board/search.go:37 +msgid "Search for a board in the Boards Manager." +msgstr "" + +#: internal/cli/core/search.go:47 +msgid "Search for a core in Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/core/search.go:46 +msgid "Search for a core in Boards Manager." +msgstr "" + +#: internal/cli/lib/search.go:42 +msgid "Search for one or more libraries data (case insensitive search)." +msgstr "" + +#: internal/cli/lib/search.go:41 +msgid "Searches for one or more libraries data." +msgstr "" + +#: internal/cli/lib/search.go:157 +msgid "Sentence: %s" +msgstr "" + +#: arduino/httpclient/httpclient.go:73 +msgid "Server responded with: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + +#: internal/cli/config/set.go:32 internal/cli/config/set.go:33 +msgid "Sets a setting value." +msgstr "" + +#: internal/cli/board/attach.go:36 +msgid "" +"Sets the default values for port and FQBN. If no port or FQBN are specified," +" the current default port and FQBN are displayed." +msgstr "" + +#: internal/cli/config/init.go:55 internal/cli/config/init.go:56 +msgid "Sets where to save the configuration file." +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Setting" +msgstr "" + +#: internal/cli/config/validate.go:50 +msgid "Settings key doesn't exist" +msgstr "" + +#: internal/cli/core/search.go:52 +msgid "Show all available core versions." +msgstr "" + +#: internal/cli/monitor/monitor.go:67 +msgid "Show all the settings of the communication port." +msgstr "" + +#: internal/cli/board/listall.go:47 internal/cli/board/search.go:45 +msgid "Show also boards marked as 'hidden' in the platform" +msgstr "" + +#: internal/cli/arguments/show_properties.go:59 +msgid "" +"Show build properties. The properties are expanded, use \"--show-" +"properties=unexpanded\" if you want them exactly as they are defined." +msgstr "" + +#: internal/cli/board/details.go:51 +msgid "Show full board details" +msgstr "" + +#: internal/cli/board/details.go:42 +msgid "" +"Show information about a board, in particular if the board has options to be" +" specified in the FQBN." +msgstr "" + +#: internal/cli/lib/search.go:49 +msgid "Show library names only." +msgstr "" + +#: internal/cli/board/details.go:52 +msgid "Show list of available programmers" +msgstr "" + +#: internal/cli/debug/debug.go:65 +msgid "" +"Show metadata about the debug session instead of starting the debugger." +msgstr "" + +#: internal/cli/update/update.go:45 +msgid "Show outdated cores and libraries after index update" +msgstr "" + +#: internal/cli/lib/list.go:39 +msgid "Shows a list of installed libraries." +msgstr "" + +#: internal/cli/lib/list.go:40 +msgid "" +"Shows a list of installed libraries.\n" +"\n" +"If the LIBNAME parameter is specified the listing is limited to that specific\n" +"library. By default the libraries provided as built-in by platforms/core are\n" +"not listed, they can be listed by adding the --all flag." +msgstr "" + +#: internal/cli/core/list.go:36 internal/cli/core/list.go:37 +msgid "Shows the list of installed platforms." +msgstr "" + +#: internal/cli/lib/examples.go:43 +msgid "Shows the list of the examples for libraries." +msgstr "" + +#: internal/cli/lib/examples.go:44 +msgid "" +"Shows the list of the examples for libraries. A name may be given as " +"argument to search a specific library." +msgstr "" + +#: internal/cli/version/version.go:39 +msgid "" +"Shows the version number of Arduino CLI which is installed on your system." +msgstr "" + +#: internal/cli/version/version.go:38 +msgid "Shows version number of Arduino CLI." +msgstr "" + +#: internal/cli/board/details.go:187 +msgid "Size (bytes):" +msgstr "" + +#: commands/compile/compile.go:249 +msgid "" +"Sketch cannot be located in build path. Please specify a different build " +"path" +msgstr "" + +#: internal/cli/sketch/new.go:84 +msgid "Sketch created in: %s" +msgstr "" + +#: internal/cli/arguments/profiles.go:29 +msgid "Sketch profile to use" +msgstr "" + +#: arduino/builder/sizer/sizer.go:184 +msgid "Sketch too big; see %[1]s for tips on reducing it." +msgstr "" + +#: arduino/builder/sizer/sizer.go:152 +msgid "" +"Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" +" bytes." +msgstr "" + +#: internal/cli/arguments/sketch.go:49 +msgid "" +"Sketches with .pde extension are deprecated, please rename the following " +"files to .ino:" +msgstr "" + +#: arduino/builder/linker.go:41 +msgid "Skip linking of final executable." +msgstr "" + +#: commands/upload/upload.go:432 +msgid "Skipping 1200-bps touch reset: no serial port selected!" +msgstr "" + +#: arduino/builder/utils/utils.go:589 +msgid "Skipping archive creation of: %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:571 +msgid "Skipping compile of: %[1]s" +msgstr "" + +#: arduino/builder/detector/detector.go:408 +msgid "Skipping dependencies detection for precompiled library %[1]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:187 +msgid "Skipping platform configuration." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:350 +msgid "Skipping tool configuration." +msgstr "" + +#: legacy/builder/recipe_runner.go:54 +msgid "Skipping: %[1]s" +msgstr "" + +#: commands/instances.go:574 +msgid "Some indexes could not be updated." +msgstr "" + +#: internal/cli/core/upgrade.go:124 +msgid "Some upgrades failed, please check the output for details." +msgstr "" + +#: arduino/serialutils/serialutils.go:141 +msgid "TOUCH: error during reset: %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:59 +msgid "The TCP port the daemon will listen to" +msgstr "" + +#: internal/cli/cli.go:125 +msgid "The custom config file (if not specified the default will be used)." +msgstr "" + +#: internal/cli/daemon/daemon.go:78 +msgid "The flag --debug-file must be used with --debug." +msgstr "" + +#: internal/cli/config/add.go:93 +msgid "" +"The key '%[1]v' is not a list of items, can't add to it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: internal/cli/config/remove.go:51 +msgid "" +"The key '%[1]v' is not a list of items, can't remove from it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: arduino/errors.go:859 +msgid "The library %s has multiple installations:" +msgstr "" + +#: internal/cli/compile/compile.go:113 +msgid "" +"The name of the custom encryption key to use to encrypt a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/compile/compile.go:111 +msgid "" +"The name of the custom signing key to use to sign a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/cli.go:116 internal/cli/cli.go:121 +msgid "The output format for the logs, can be: %s" +msgstr "" + +#: internal/cli/compile/compile.go:109 +msgid "" +"The path of the dir to search for the custom keys to sign and encrypt a " +"binary. Used only by the platforms that support it." +msgstr "" + +#: arduino/builder/libraries.go:201 +msgid "The platform does not support '%[1]s' for precompiled libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:35 +msgid "" +"This command upgrades an installed library to the latest available version. " +"Multiple libraries can be passed separated by a space. If no arguments are " +"provided, the command will upgrade all the installed libraries where an " +"update is available." +msgstr "" + +#: internal/cli/outdated/outdated.go:42 +msgid "" +"This commands shows a list of installed cores and/or libraries\n" +"that can be upgraded. If nothing needs to be updated the output is empty." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:86 +#: arduino/cores/packagemanager/install_uninstall.go:311 +msgid "Tool %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:400 +msgid "Tool %s uninstalled" +msgstr "" + +#: commands/debug/debug.go:139 +msgid "Toolchain '%s' is not supported" +msgstr "" + +#: internal/cli/debug/debug.go:140 +msgid "Toolchain custom configurations" +msgstr "" + +#: internal/cli/debug/debug.go:134 +msgid "Toolchain path" +msgstr "" + +#: internal/cli/debug/debug.go:135 +msgid "Toolchain prefix" +msgstr "" + +#: internal/cli/debug/debug.go:133 +msgid "Toolchain type" +msgstr "" + +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 +msgid "Try running %s" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:57 +msgid "Turns on verbose mode." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Type" +msgstr "" + +#: internal/cli/lib/search.go:165 +msgid "Types: %s" +msgstr "" + +#: internal/cli/board/details.go:189 +msgid "URL:" +msgstr "" + +#: arduino/builder/core.go:190 +msgid "" +"Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" +msgstr "" + +#: configuration/configuration.go:125 +msgid "Unable to get Documents Folder: %v" +msgstr "" + +#: configuration/configuration.go:100 +msgid "Unable to get Local App Data Folder: %v" +msgstr "" + +#: configuration/configuration.go:88 configuration/configuration.go:113 +msgid "Unable to get user home dir: %v" +msgstr "" + +#: internal/cli/cli.go:204 +msgid "Unable to open file for logging: %s" +msgstr "" + +#: commands/instances.go:541 +msgid "Unable to parse URL" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:277 +#: commands/lib/uninstall.go:44 +msgid "Uninstalling %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:163 +#: commands/core/uninstall.go:73 +msgid "Uninstalling %s, tool is no more required" +msgstr "" + +#: internal/cli/core/uninstall.go:35 internal/cli/core/uninstall.go:36 +msgid "" +"Uninstalls one or more cores and corresponding tool dependencies if no " +"longer used." +msgstr "" + +#: internal/cli/lib/uninstall.go:35 internal/cli/lib/uninstall.go:36 +msgid "Uninstalls one or more libraries." +msgstr "" + +#: internal/cli/board/list.go:164 +msgid "Unknown" +msgstr "" + +#: arduino/errors.go:185 +msgid "Unknown FQBN" +msgstr "" + +#: internal/cli/update/update.go:37 +msgid "Updates the index of cores and libraries" +msgstr "" + +#: internal/cli/update/update.go:38 +msgid "Updates the index of cores and libraries to the latest versions." +msgstr "" + +#: internal/cli/core/update_index.go:34 +msgid "Updates the index of cores to the latest version." +msgstr "" + +#: internal/cli/core/update_index.go:33 +msgid "Updates the index of cores." +msgstr "" + +#: internal/cli/lib/update_index.go:34 +msgid "Updates the libraries index to the latest version." +msgstr "" + +#: internal/cli/lib/update_index.go:33 +msgid "Updates the libraries index." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:43 +msgid "Upgrade doesn't accept parameters with version" +msgstr "" + +#: internal/cli/upgrade/upgrade.go:38 +msgid "Upgrades installed cores and libraries to latest version." +msgstr "" + +#: internal/cli/upgrade/upgrade.go:37 +msgid "Upgrades installed cores and libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:34 +msgid "Upgrades installed libraries." +msgstr "" + +#: internal/cli/core/upgrade.go:38 internal/cli/core/upgrade.go:39 +msgid "Upgrades one or all installed platforms to the latest version." +msgstr "" + +#: internal/cli/upload/upload.go:57 +msgid "Upload Arduino sketches." +msgstr "" + +#: internal/cli/upload/upload.go:58 +msgid "" +"Upload Arduino sketches. This does NOT compile the sketch prior to upload." +msgstr "" + +#: internal/cli/arguments/port.go:42 +msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" +msgstr "" + +#: commands/upload/upload.go:456 +msgid "Upload port found on %s" +msgstr "" + +#: internal/cli/arguments/port.go:46 +msgid "Upload port protocol, e.g: serial" +msgstr "" + +#: internal/cli/compile/compile.go:118 +msgid "Upload the binary after the compilation." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:47 +msgid "Upload the bootloader on the board using an external programmer." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:46 +msgid "Upload the bootloader." +msgstr "" + +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 +msgid "" +"Uploading to specified board using %s protocol requires the following info:" +msgstr "" + +#: internal/cli/config/init.go:103 +msgid "" +"Urls cannot contain commas. Separate multiple urls exported as env var with a space:\n" +"%s" +msgstr "" + +#: internal/cli/usage.go:26 +msgid "Usage:" +msgstr "" + +#: internal/cli/usage.go:33 +msgid "Use %s for more information about a command." +msgstr "" + +#: internal/cli/compile/compile.go:427 +msgid "Used library" +msgstr "" + +#: internal/cli/compile/compile.go:442 +msgid "Used platform" +msgstr "" + +#: arduino/builder/detector/detector.go:155 +msgid "Used: %[1]s" +msgstr "" + +#: commands/compile/compile.go:342 +msgid "Using board '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: arduino/builder/detector/detector.go:348 +msgid "Using cached library dependencies for file: %[1]s" +msgstr "" + +#: commands/compile/compile.go:343 +msgid "Using core '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:44 +msgid "Using library %[1]s at version %[2]s in folder: %[3]s %[4]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:38 +msgid "Using library %[1]s in folder: %[2]s %[3]s" +msgstr "" + +#: arduino/builder/core.go:154 +msgid "Using precompiled core: %[1]s" +msgstr "" + +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 +msgid "Using precompiled library in %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 +msgid "Using previously compiled file: %[1]s" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +msgid "VERSION" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "VERSION_NUMBER" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Values" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:56 +#: internal/cli/compile/compile.go:120 internal/cli/upload/upload.go:72 +msgid "Verify uploaded binary after the upload." +msgstr "" + +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 +#: internal/cli/core/search.go:100 +msgid "Version" +msgstr "" + +#: internal/cli/lib/search.go:166 +msgid "Versions: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:182 +msgid "WARNING cannot configure platform: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:346 +msgid "WARNING cannot configure tool: %s" +msgstr "" + +#: internal/cli/compile/compile.go:308 +msgid "WARNING: The sketch is compiled using one or more custom libraries." +msgstr "" + +#: legacy/builder/warn_about_arch_incompatible_libraries.go:39 +msgid "" +"WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be " +"incompatible with your current board which runs on %[3]s architecture(s)." +msgstr "" + +#: commands/upload/upload.go:445 +msgid "Waiting for upload port..." +msgstr "" + +#: commands/compile/compile.go:348 +msgid "" +"Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" +msgstr "" + +#: internal/cli/lib/search.go:159 +msgid "Website: %s" +msgstr "" + +#: internal/cli/config/init.go:42 +msgid "Writes current configuration to a configuration file." +msgstr "" + +#: internal/cli/config/init.go:45 +msgid "" +"Writes current configuration to the configuration file in the data " +"directory." +msgstr "" + +#: internal/cli/config/set.go:74 +msgid "Writing config file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:149 internal/cli/compile/compile.go:152 +msgid "You cannot use the %s flag while compiling with a profile." +msgstr "" + +#: arduino/resources/checksums.go:79 +msgid "archive hash differs from hash in index" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:192 +msgid "archive is not valid: multiple files found in zip file top level" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:195 +msgid "archive is not valid: no files found in zip file top level" +msgstr "" + +#: internal/cli/sketch/archive.go:37 +msgid "archivePath" +msgstr "" + +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 +msgid "arduino-preprocessor pattern is missing" +msgstr "" + +#: commands/upload/upload.go:714 +msgid "autodetect build artifact: %s" +msgstr "" + +#: internal/cli/feedback/stdio.go:35 +msgid "available only in text format" +msgstr "" + +#: commands/upload/upload.go:699 +msgid "binary file not found in %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:305 +msgid "board %s not found" +msgstr "" + +#: internal/cli/board/listall.go:37 internal/cli/board/search.go:36 +msgid "boardname" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:155 +msgid "built-in libraries directory not set" +msgstr "" + +#: arduino/discovery/discovery.go:346 arduino/discovery/discovery.go:369 +#: arduino/discovery/discovery.go:391 arduino/discovery/discovery.go:431 +#: arduino/discovery/discovery.go:457 +msgid "calling %[1]s: %[2]w" +msgstr "" + +#: arduino/cores/status.go:124 arduino/cores/status.go:151 +msgid "can't find latest release of %s" +msgstr "" + +#: commands/instances.go:360 +msgid "can't find latest release of tool %s" +msgstr "" + +#: arduino/sketch/sketch.go:106 +msgid "can't find main Sketch file in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:825 +msgid "can't find pattern for discovery with id %s" +msgstr "" + +#: executils/output.go:52 +msgid "can't retrieve standard error stream: %s" +msgstr "" + +#: executils/output.go:34 +msgid "can't retrieve standard output stream: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:91 +msgid "candidates" +msgstr "" + +#: commands/upload/upload.go:656 commands/upload/upload.go:663 +msgid "cannot execute upload tool: %s" +msgstr "" + +#: arduino/resources/install.go:39 +msgid "checking local archive integrity" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:85 +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:89 +msgid "cleaning build path" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "command" +msgstr "" + +#: arduino/monitor/monitor.go:150 +msgid "command '%[1]s' failed: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:350 arduino/discovery/discovery.go:373 +#: arduino/discovery/discovery.go:395 arduino/discovery/discovery.go:435 +#: arduino/discovery/discovery.go:461 +msgid "command failed: %s" +msgstr "" + +#: arduino/discovery/discovery.go:348 arduino/discovery/discovery.go:352 +#: arduino/discovery/discovery.go:371 arduino/discovery/discovery.go:375 +#: arduino/discovery/discovery.go:393 arduino/discovery/discovery.go:397 +#: arduino/discovery/discovery.go:433 arduino/discovery/discovery.go:459 +#: arduino/discovery/discovery.go:463 arduino/monitor/monitor.go:147 +#: arduino/monitor/monitor.go:153 +msgid "communication out of sync, expected '%[1]s', received '%[2]s'" +msgstr "" + +#: arduino/resources/checksums.go:75 +msgid "computing hash: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:145 +msgid "copying library to destination directory:" +msgstr "" + +#: commands/upload/upload.go:771 +msgid "could not find a valid build artifact" +msgstr "" + +#: commands/core/install.go:62 +msgid "could not overwrite" +msgstr "" + +#: commands/lib/install.go:133 +msgid "could not remove old library" +msgstr "" + +#: arduino/sketch/yaml.go:78 arduino/sketch/yaml.go:82 +#: arduino/sketch/yaml.go:86 +msgid "could not update sketch project file" +msgstr "" + +#: arduino/builder/core.go:133 +msgid "creating core cache folder: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:216 +msgid "creating installed.json in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:44 arduino/resources/install.go:48 +msgid "creating temp dir for extraction: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:190 +msgid "data section exceeds available space in board" +msgstr "" + +#: commands/lib/resolve_deps.go:56 +msgid "dependency '%s' is not available" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:126 +msgid "destination already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:93 +msgid "destination dir %s already exists, cannot install" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:142 +msgid "destination directory already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:282 +msgid "directory doesn't exist: %s" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:190 +msgid "discovery %[1]s process not started: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:756 +msgid "discovery %s not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:760 +msgid "discovery %s not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:698 +msgid "discovery release not found: %s" +msgstr "" + +#: internal/cli/core/download.go:39 internal/cli/core/install.go:41 +msgid "download a specific version (in this case 1.6.9)." +msgstr "" + +#: internal/cli/core/download.go:38 internal/cli/core/install.go:39 +msgid "download the latest version of Arduino SAMD core." +msgstr "" + +#: internal/cli/feedback/rpc_progress.go:73 +msgid "downloaded" +msgstr "" + +#: commands/instances.go:138 +msgid "downloading %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/fqbn.go:48 +msgid "empty board identifier" +msgstr "" + +#: arduino/sketch/sketch.go:92 +msgid "error loading sketch project file:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:650 +msgid "error opening %s" +msgstr "" + +#: internal/cli/config/set.go:67 +msgid "error parsing value: %v" +msgstr "" + +#: arduino/sketch/profiles.go:193 +msgid "error parsing version constraints" +msgstr "" + +#: commands/board/list.go:116 +msgid "error processing response from server" +msgstr "" + +#: commands/board/list.go:96 +msgid "error querying Arduino Cloud Api" +msgstr "" + +#: arduino/resources/install.go:67 +msgid "extracting archive: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:183 +msgid "extracting archive: %w" +msgstr "" + +#: arduino/resources/checksums.go:144 +msgid "failed to compute hash of file \"%s\"" +msgstr "" + +#: commands/board/list.go:91 +msgid "failed to initialize http client" +msgstr "" + +#: arduino/resources/checksums.go:96 +msgid "fetched archive size differs from size specified in index" +msgstr "" + +#: arduino/resources/install.go:128 +msgid "files in archive must be placed in a subdirectory" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:61 +msgid "finding absolute path of %s" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "flags" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:100 +msgid "following symlink %s" +msgstr "" + +#: internal/cli/lib/download.go:39 +msgid "for a specific version." +msgstr "" + +#: internal/cli/lib/check_deps.go:40 internal/cli/lib/download.go:38 +#: internal/cli/lib/install.go:48 +msgid "for the latest version." +msgstr "" + +#: internal/cli/lib/check_deps.go:41 internal/cli/lib/install.go:49 +#: internal/cli/lib/install.go:51 +msgid "for the specific version." +msgstr "" + +#: internal/inventory/inventory.go:68 +msgid "generating installation.id: %w" +msgstr "" + +#: internal/inventory/inventory.go:74 +msgid "generating installation.secret: %w" +msgstr "" + +#: arduino/resources/download.go:53 +msgid "getting archive file info: %s" +msgstr "" + +#: arduino/resources/checksums.go:93 +msgid "getting archive info: %s" +msgstr "" + +#: arduino/resources/checksums.go:66 arduino/resources/checksums.go:89 +#: arduino/resources/download.go:34 arduino/resources/helpers.go:38 +#: arduino/resources/install.go:55 +msgid "getting archive path: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:311 +msgid "getting build properties for board %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:106 +msgid "getting discovery dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:114 +msgid "getting monitor dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:711 +msgid "getting parent dir of %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:99 +msgid "getting tool dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:153 +msgid "install directory not set" +msgstr "" + +#: commands/instances.go:142 +msgid "installing %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:208 +msgid "installing platform %[1]s: %[2]s" +msgstr "" + +#: internal/cli/feedback/terminal.go:36 +msgid "interactive terminal not supported for the '%s' output format" +msgstr "" + +#: arduino/sketch/profiles.go:191 +msgid "invalid '%s' directive" +msgstr "" + +#: arduino/discovery/discovery.go:212 +msgid "invalid 'add' message: missing port" +msgstr "" + +#: arduino/discovery/discovery.go:222 +msgid "invalid 'remove' message: missing port" +msgstr "" + +#: arduino/resources/checksums.go:44 +msgid "invalid checksum format: %s" +msgstr "" + +#: arduino/cores/fqbn.go:54 arduino/cores/fqbn.go:59 +msgid "invalid config option: %s" +msgstr "" + +#: internal/cli/arguments/reference.go:90 +msgid "invalid empty core architecture '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:67 +msgid "invalid empty core argument" +msgstr "" + +#: internal/cli/arguments/reference.go:86 +msgid "invalid empty core name '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:71 +msgid "invalid empty core reference '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:76 +msgid "invalid empty core version: '%s'" +msgstr "" + +#: internal/cli/lib/args.go:49 +msgid "invalid empty library name" +msgstr "" + +#: internal/cli/lib/args.go:54 +msgid "invalid empty library version: %s" +msgstr "" + +#: arduino/cores/board.go:142 +msgid "invalid empty option found" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:272 +msgid "invalid git url" +msgstr "" + +#: arduino/resources/checksums.go:48 +msgid "invalid hash '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/arguments/reference.go:83 +msgid "invalid item %s" +msgstr "" + +#: arduino/sketch/profiles.go:225 +msgid "invalid library directive:" +msgstr "" + +#: arduino/libraries/libraries_layout.go:65 +msgid "invalid library layout: %s" +msgstr "" + +#: arduino/libraries/libraries_location.go:88 +msgid "invalid library location: %s" +msgstr "" + +#: arduino/libraries/loader.go:139 +msgid "invalid library: no header files found" +msgstr "" + +#: arduino/cores/board.go:145 +msgid "invalid option '%s'" +msgstr "" + +#: internal/cli/arguments/show_properties.go:51 +msgid "invalid option '%s'." +msgstr "" + +#: internal/inventory/inventory.go:93 +msgid "invalid path creating config dir: %[1]s error: %[2]w" +msgstr "" + +#: internal/inventory/inventory.go:99 +msgid "invalid path writing inventory file: %[1]s error: %[2]w" +msgstr "" + +#: arduino/cores/packageindex/index.go:283 +msgid "invalid platform archive size: %s" +msgstr "" + +#: arduino/sketch/profiles.go:195 +msgid "invalid platform identifier" +msgstr "" + +#: arduino/sketch/profiles.go:205 +msgid "invalid platform index URL:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:363 +msgid "invalid pluggable monitor reference: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:123 +msgid "invalid port configuration value for %s: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:131 +msgid "invalid port configuration: %s" +msgstr "" + +#: commands/upload/upload.go:643 +msgid "invalid recipe '%[1]s': %[2]s" +msgstr "" + +#: commands/sketch/new.go:86 +msgid "" +"invalid sketch name \"%[1]s\": the first character must be alphanumeric or " +"\"_\", the following ones can also contain \"-\" and \".\". The last one " +"cannot be \".\"." +msgstr "" + +#: arduino/cores/board.go:149 +msgid "invalid value '%[1]s' for option '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:273 +msgid "invalid version directory %s" +msgstr "" + +#: arduino/sketch/profiles.go:227 +msgid "invalid version:" +msgstr "" + +#: commands/daemon/settings.go:111 commands/daemon/settings.go:166 +msgid "key not found in settings" +msgstr "" + +#: internal/cli/core/search.go:45 +msgid "keywords" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:130 +msgid "library %s already installed" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:319 +msgid "library not valid" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:197 +msgid "library path does not exist: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:67 +msgid "listing serial ports" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:301 +#: arduino/cores/packagemanager/loader.go:310 +#: arduino/cores/packagemanager/loader.go:315 +msgid "loading %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:351 +msgid "loading boards: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:666 +msgid "loading bundled tools from %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:452 +#: arduino/cores/packagemanager/package_manager.go:467 +msgid "loading json index file %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:179 +#: arduino/libraries/librariesmanager/librariesmanager.go:202 +msgid "loading library from %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:54 +msgid "loading library.properties: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:250 +#: arduino/cores/packagemanager/loader.go:278 +msgid "loading platform release %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:197 +msgid "loading platform.txt" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:44 +msgid "loading required platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:60 +msgid "loading required tool %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:625 +msgid "loading tool release in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:190 +msgid "looking for boards.txt in %s" +msgstr "" + +#: arduino/sketch/sketch.go:76 +msgid "main file missing from sketch: %s" +msgstr "" + +#: arduino/sketch/profiles.go:189 +msgid "missing '%s' directive" +msgstr "" + +#: arduino/resources/checksums.go:40 +msgid "missing checksum for: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:413 +msgid "missing package %[1]s referenced by board %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:86 +msgid "missing package index for %s, future updates cannot be guaranteed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:418 +msgid "missing platform %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:423 +msgid "missing platform release %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:709 +msgid "monitor release not found: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:201 +#: arduino/libraries/librariesmanager/install.go:250 +#: arduino/resources/install.go:96 +msgid "moving extracted archive to destination dir: %s" +msgstr "" + +#: commands/upload/upload.go:766 +msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" +msgstr "" + +#: arduino/sketch/sketch.go:68 +msgid "multiple main sketch files found (%[1]v, %[2]v)" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:320 +msgid "" +"no compatible version of %[1]s tools found for the current os, try " +"contacting %[2]s" +msgstr "" + +#: executils/process.go:40 +msgid "no executable specified" +msgstr "" + +#: commands/daemon/daemon.go:100 +msgid "no instance specified" +msgstr "" + +#: commands/upload/upload.go:721 +msgid "no sketch or build directory/file specified" +msgstr "" + +#: arduino/sketch/sketch.go:55 +msgid "no such file or directory" +msgstr "" + +#: arduino/resources/install.go:131 +msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" +msgstr "" + +#: commands/upload/upload.go:638 +msgid "no upload port provided" +msgstr "" + +#: arduino/sketch/sketch.go:274 +msgid "no valid sketch found in %[1]s: missing %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:128 +msgid "no versions available for the current OS, try contacting %s" +msgstr "" + +#: internal/cli/feedback/terminal.go:39 +msgid "not running in a terminal" +msgstr "" + +#: arduino/resources/checksums.go:71 arduino/resources/install.go:59 +msgid "opening archive file: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:266 +msgid "opening boards.txt" +msgstr "" + +#: arduino/serialutils/serialutils.go:38 +msgid "opening port at 1200bps" +msgstr "" + +#: arduino/security/signatures.go:83 +msgid "opening signature file: %s" +msgstr "" + +#: arduino/security/signatures.go:78 +msgid "opening target file: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:76 arduino/cores/status.go:89 +#: arduino/cores/status.go:114 arduino/cores/status.go:141 +msgid "package %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:481 +msgid "package '%s' not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:221 +msgid "parsing IDE bundled index" +msgstr "" + +#: arduino/cores/board.go:165 +#: arduino/cores/packagemanager/package_manager.go:252 +msgid "parsing fqbn: %s" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:72 +msgid "parsing library_index.json: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:181 +msgid "path is not a platform directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:80 +msgid "platform %[1]s not found in package %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:92 +msgid "platform %s has no available releases" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:298 +msgid "platform %s is not installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:176 +#: arduino/cores/packagemanager/install_uninstall.go:280 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 +msgid "platform not installed" +msgstr "" + +#: internal/cli/compile/compile.go:139 +msgid "please use --build-property instead." +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:126 +msgid "pluggable discovery already added: %s" +msgstr "" + +#: internal/cli/board/attach.go:34 +msgid "port" +msgstr "" + +#: internal/cli/arguments/port.go:125 +msgid "port not found: %[1]s %[2]s" +msgstr "" + +#: arduino/monitor/monitor.go:236 +msgid "protocol version not supported: requested %[1]d, got %[2]d" +msgstr "" + +#: arduino/discovery/discovery.go:354 +msgid "protocol version not supported: requested 1, got %d" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:716 +msgid "reading %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:170 +msgid "reading dir %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:198 +msgid "reading directory %[1]s content: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:71 +#: arduino/cores/packagemanager/loader.go:153 +#: arduino/cores/packagemanager/loader.go:260 +#: arduino/cores/packagemanager/loader.go:617 +msgid "reading directory %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:292 +msgid "reading directory %s content: %w" +msgstr "" + +#: arduino/builder/sketch.go:89 +msgid "reading file %[1]s: %[2]s" +msgstr "" + +#: arduino/sketch/sketch.go:205 +msgid "reading files: %v" +msgstr "" + +#: arduino/libraries/librariesresolver/cpp.go:104 +msgid "reading lib headers: %s" +msgstr "" + +#: arduino/libraries/libraries.go:228 +msgid "reading lib src dir: %s" +msgstr "" + +#: arduino/libraries/libraries.go:116 +msgid "reading library headers: %w" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:66 +msgid "reading library_index.json: %s" +msgstr "" + +#: arduino/resources/install.go:121 +msgid "reading package root dir: %s" +msgstr "" + +#: commands/upload/upload.go:632 +msgid "recipe not found '%s'" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:557 +msgid "release %[1]s not found for tool %[2]s" +msgstr "" + +#: arduino/cores/status.go:83 arduino/cores/status.go:107 +#: arduino/cores/status.go:134 +msgid "release cannot be nil" +msgstr "" + +#: arduino/resources/download.go:44 +msgid "removing corrupted archive file: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:156 +msgid "removing library directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:293 +msgid "removing platform files: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:87 +msgid "required version %[1]s not found for platform %[2]s" +msgstr "" + +#: arduino/security/signatures.go:74 +msgid "retrieving Arduino public keys: %s" +msgstr "" + +#: arduino/libraries/loader.go:116 arduino/libraries/loader.go:154 +msgid "scanning examples: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:702 +msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:73 +msgid "searching package root dir: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:48 +msgid "setting DTR to OFF" +msgstr "" + +#: commands/sketch/new.go:78 +msgid "sketch name cannot be empty" +msgstr "" + +#: commands/sketch/new.go:91 +msgid "sketch name cannot be the reserved name \"%[1]s\"" +msgstr "" + +#: commands/sketch/new.go:81 +msgid "" +"sketch name too long (%[1]d characters). Maximum allowed length is %[2]d" +msgstr "" + +#: arduino/sketch/sketch.go:48 arduino/sketch/sketch.go:53 +msgid "sketch path is not valid" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/sketch/archive.go:37 +msgid "sketchPath" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:118 +msgid "source is not a directory" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:194 +msgid "starting discovery %s" +msgstr "" + +#: arduino/resources/checksums.go:118 +msgid "testing archive checksum: %s" +msgstr "" + +#: arduino/resources/checksums.go:111 +msgid "testing archive size: %s" +msgstr "" + +#: arduino/resources/checksums.go:105 +msgid "testing if archive is cached: %s" +msgstr "" + +#: arduino/resources/install.go:37 +msgid "testing local archive integrity: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:185 +msgid "text section exceeds available space in board" +msgstr "" + +#: arduino/builder/detector/detector.go:211 +#: arduino/builder/preprocessor/ctags.go:70 +msgid "the compilation database may be incomplete or inaccurate" +msgstr "" + +#: commands/core/list.go:63 +msgid "the platform has no releases" +msgstr "" + +#: commands/board/list.go:103 +msgid "the server responded with status %s" +msgstr "" + +#: arduino/monitor/monitor.go:140 +msgid "timeout waiting for message" +msgstr "" + +#: arduino/discovery/discovery.go:251 +msgid "timeout waiting for message from %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:386 +msgid "tool %s is not managed by package manager" +msgstr "" + +#: arduino/cores/status.go:93 arduino/cores/status.go:118 +#: arduino/cores/status.go:145 +msgid "tool %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:507 +msgid "tool '%[1]s' not found in package '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:381 +msgid "tool not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:687 +#: arduino/cores/packagemanager/package_manager.go:793 +msgid "tool release not found: %s" +msgstr "" + +#: arduino/cores/status.go:97 +msgid "tool version %s not found" +msgstr "" + +#: commands/lib/install.go:61 +msgid "" +"two different versions of the library %[1]s are required: %[2]s and %[3]s" +msgstr "" + +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 +msgid "unable to compute relative path to the sketch for the item" +msgstr "" + +#: arduino/builder/sketch.go:53 +msgid "unable to create a folder to save the sketch" +msgstr "" + +#: arduino/builder/sketch.go:132 +msgid "unable to create the folder containing the item" +msgstr "" + +#: internal/cli/config/dump.go:59 +msgid "unable to marshal config to YAML: %v" +msgstr "" + +#: arduino/builder/sketch.go:170 +msgid "unable to read contents of the destination item" +msgstr "" + +#: arduino/builder/sketch.go:143 +msgid "unable to read contents of the source item" +msgstr "" + +#: arduino/builder/sketch.go:153 +msgid "unable to write to destination file" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:286 +msgid "unknown package %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:293 +msgid "unknown platform %s:%s" +msgstr "" + +#: arduino/sketch/sketch.go:147 +msgid "unknown sketch file extension '%s'" +msgstr "" + +#: arduino/resources/checksums.go:61 +msgid "unsupported hash algorithm: %s" +msgstr "" + +#: internal/cli/core/upgrade.go:43 +msgid "upgrade arduino:samd to the latest version" +msgstr "" + +#: internal/cli/core/upgrade.go:41 +msgid "upgrade everything to the latest version" +msgstr "" + +#: commands/upload/upload.go:667 +msgid "uploading error: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:153 +msgid "user directory not set" +msgstr "" + +#: internal/cli/feedback/terminal.go:73 +msgid "user input not supported for the '%s' output format" +msgstr "" + +#: internal/cli/feedback/terminal.go:76 +msgid "user input not supported in non interactive mode" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:176 +msgid "version %s not available for this operating system" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:155 +msgid "version %s not found" +msgstr "" + +#: commands/board/list.go:121 +msgid "wrong format in server response" +msgstr "" diff --git a/i18n/data/ne.po b/i18n/data/ne.po new file mode 100644 index 00000000000..455bb82acda --- /dev/null +++ b/i18n/data/ne.po @@ -0,0 +1,3527 @@ +# +# Translators: +# Niraj Pradhan, 2023 +# +msgid "" +msgstr "" +"Last-Translator: Niraj Pradhan, 2023\n" +"Language-Team: Nepali (https://app.transifex.com/arduino-1/teams/108174/ne/)\n" +"Language: ne\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: version/version.go:59 +msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" +msgstr "%[1]s%[2]sसंस्करण: %[3]s प्रतिबद्ध: %[4]s मिति:%[5]s" + +#: arduino/builder/detector/detector.go:456 +msgid "%[1]s folder is no longer supported! See %[2]s for more information" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:49 +msgid "%[1]s invalid, rebuilding all" +msgstr "" + +#: internal/cli/lib/check_deps.go:111 +msgid "%[1]s is required but %[2]s is currently installed." +msgstr "" + +#: arduino/builder/utils/utils.go:311 +msgid "%[1]s pattern is missing" +msgstr "" + +#: arduino/discovery/discovery.go:74 +msgid "%[1]s, message: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:83 +msgid "%[1]s, port: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:80 +msgid "%[1]s, ports: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:77 +msgid "%[1]s, protocol version: %[2]d" +msgstr "" + +#: arduino/resources/download.go:49 +msgid "%s already downloaded" +msgstr "" + +#: commands/upload/upload.go:689 +msgid "%s and %s cannot be used together" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:353 +msgid "%s installed" +msgstr "" + +#: internal/cli/lib/check_deps.go:108 +msgid "%s is already installed." +msgstr "" + +#: arduino/cores/packagemanager/loader.go:65 +#: arduino/cores/packagemanager/loader.go:652 +msgid "%s is not a directory" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:287 +msgid "%s is not managed by package manager" +msgstr "" + +#: internal/cli/lib/check_deps.go:105 +msgid "%s must be installed." +msgstr "" + +#: arduino/builder/preprocessor/ctags.go:190 +#: arduino/builder/preprocessor/gcc.go:58 +msgid "%s pattern is missing" +msgstr "" + +#: arduino/errors.go:819 +msgid "'%s' has an invalid signature" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:400 +msgid "" +"'build.core' and 'build.variant' refer to different platforms: %[1]s and " +"%[2]s" +msgstr "" + +#: internal/cli/board/listall.go:89 internal/cli/board/search.go:86 +msgid "(hidden)" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:34 +msgid "(legacy)" +msgstr "" + +#: internal/cli/lib/install.go:81 +msgid "" +"--git-url and --zip-path are disabled by default, for more information see: " +"%v" +msgstr "" + +#: internal/cli/lib/install.go:83 +msgid "" +"--git-url and --zip-path flags allow installing untrusted files, use it at " +"your own risk." +msgstr "" + +#: internal/cli/lib/install.go:86 +msgid "--git-url or --zip-path can't be used with --install-in-builtin-dir" +msgstr "" + +#: commands/sketch/new.go:66 +msgid ".ino file already exists" +msgstr "" + +#: internal/cli/updater/updater.go:71 +msgid "A new release of Arduino CLI is available:" +msgstr "" + +#: arduino/errors.go:300 +msgid "A programmer is required to upload" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "ARCH" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:80 +msgid "ARDUINO COMMAND LINE MANUAL" +msgstr "" + +#: internal/cli/usage.go:32 +msgid "Additional help topics:" +msgstr "" + +#: internal/cli/config/add.go:73 internal/cli/config/add.go:74 +msgid "Adds one or more values to a setting." +msgstr "" + +#: internal/cli/usage.go:27 +msgid "Aliases:" +msgstr "" + +#: internal/cli/core/upgrade.go:72 +msgid "All the cores are already at the latest version" +msgstr "" + +#: commands/lib/install.go:86 +msgid "Already installed %s" +msgstr "" + +#: arduino/builder/detector/detector.go:89 +msgid "Alternatives for %[1]s: %[2]s" +msgstr "" + +#: arduino/builder/preprocessor/ctags.go:69 +msgid "An error occurred adding prototypes" +msgstr "" + +#: arduino/builder/detector/detector.go:210 +msgid "An error occurred detecting libraries" +msgstr "" + +#: internal/cli/daemon/daemon.go:63 +msgid "Append debug logging to the specified file" +msgstr "" + +#: internal/cli/lib/search.go:164 +msgid "Architecture: %s" +msgstr "" + +#: commands/sketch/archive.go:71 +msgid "Archive already exists" +msgstr "" + +#: arduino/builder/core.go:188 +msgid "Archiving built core (caching) in: %[1]s" +msgstr "" + +#: internal/cli/sketch/sketch.go:31 internal/cli/sketch/sketch.go:32 +msgid "Arduino CLI sketch commands." +msgstr "" + +#: internal/cli/cli.go:70 +msgid "Arduino CLI." +msgstr "" + +#: internal/cli/cli.go:71 +msgid "Arduino Command Line Interface (arduino-cli)." +msgstr "" + +#: internal/cli/board/board.go:31 internal/cli/board/board.go:32 +msgid "Arduino board commands." +msgstr "" + +#: internal/cli/cache/cache.go:31 internal/cli/cache/cache.go:32 +msgid "Arduino cache commands." +msgstr "" + +#: internal/cli/lib/lib.go:31 internal/cli/lib/lib.go:32 +msgid "Arduino commands about libraries." +msgstr "" + +#: internal/cli/config/config.go:33 +msgid "Arduino configuration commands." +msgstr "" + +#: internal/cli/core/core.go:31 internal/cli/core/core.go:32 +msgid "Arduino core operations." +msgstr "" + +#: internal/cli/lib/check_deps.go:56 internal/cli/lib/install.go:127 +msgid "Arguments error: %v" +msgstr "" + +#: internal/cli/board/attach.go:35 +msgid "Attaches a sketch to a board." +msgstr "" + +#: internal/cli/lib/search.go:155 +msgid "Author: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:78 +msgid "" +"Automatic library install can't be performed in this case, please manually " +"remove all duplicates and retry." +msgstr "" + +#: commands/lib/uninstall.go:57 +msgid "" +"Automatic library uninstall can't be performed in this case, please manually" +" remove them." +msgstr "" + +#: internal/cli/lib/list.go:136 +msgid "Available" +msgstr "" + +#: internal/cli/usage.go:29 +msgid "Available Commands:" +msgstr "" + +#: internal/cli/upload/upload.go:71 +msgid "Binary file to upload." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "Board Name" +msgstr "" + +#: internal/cli/board/details.go:138 +msgid "Board name:" +msgstr "" + +#: internal/cli/board/details.go:140 +msgid "Board version:" +msgstr "" + +#: legacy/builder/merge_sketch_with_bootloader.go:71 +msgid "Bootloader file specified but missing: %[1]s" +msgstr "" + +#: internal/cli/compile/compile.go:100 +msgid "Builds of 'core.a' are saved into this path to be cached and reused." +msgstr "" + +#: arduino/resources/index.go:57 +msgid "Can't create data directory %s" +msgstr "" + +#: arduino/errors.go:512 +msgid "Can't create sketch" +msgstr "" + +#: commands/lib/download.go:63 commands/lib/download.go:66 +msgid "Can't download library" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:133 +#: commands/core/uninstall.go:64 +msgid "Can't find dependencies for platform %s" +msgstr "" + +#: arduino/errors.go:538 +msgid "Can't open sketch" +msgstr "" + +#: internal/cli/config/set.go:54 +msgid "Can't set multiple values in key %v" +msgstr "" + +#: arduino/errors.go:525 +msgid "Can't update sketch" +msgstr "" + +#: internal/cli/arguments/arguments.go:36 +msgid "Can't use the following flags together: %s" +msgstr "" + +#: internal/cli/config/add.go:103 internal/cli/config/remove.go:69 +msgid "Can't write config file: %v" +msgstr "" + +#: internal/cli/daemon/daemon.go:92 +msgid "Can't write debug log: %s" +msgstr "" + +#: commands/compile/compile.go:166 commands/compile/compile.go:169 +msgid "Cannot create build cache directory" +msgstr "" + +#: commands/compile/compile.go:154 +msgid "Cannot create build directory" +msgstr "" + +#: internal/cli/config/init.go:94 +msgid "Cannot create config file directory: %v" +msgstr "" + +#: internal/cli/config/init.go:109 +msgid "Cannot create config file: %v" +msgstr "" + +#: arduino/errors.go:782 +msgid "Cannot create temp dir" +msgstr "" + +#: arduino/errors.go:800 +msgid "Cannot create temp file" +msgstr "" + +#: internal/cli/config/delete.go:53 +msgid "Cannot delete the key %[1]s: %[2]v" +msgstr "" + +#: commands/debug/debug.go:72 +msgid "Cannot execute debug tool" +msgstr "" + +#: internal/cli/config/init.go:72 internal/cli/config/init.go:82 +msgid "Cannot find absolute path: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:140 +msgid "Cannot install platform" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:331 +msgid "Cannot install tool %s" +msgstr "" + +#: commands/upload/upload.go:468 +msgid "Cannot perform port reset: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:158 +msgid "Cannot upgrade platform" +msgstr "" + +#: internal/cli/config/delete.go:57 +msgid "Cannot write the file %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:163 +msgid "Category: %s" +msgstr "" + +#: internal/cli/lib/check_deps.go:37 internal/cli/lib/check_deps.go:38 +msgid "Check dependencies status for the specified library." +msgstr "" + +#: arduino/resources/checksums.go:167 +msgid "Checksum differs from checksum in package.json" +msgstr "" + +#: internal/cli/board/details.go:188 +msgid "Checksum:" +msgstr "" + +#: internal/cli/cache/cache.go:33 +msgid "Clean caches." +msgstr "" + +#: internal/cli/cli.go:126 +msgid "Comma-separated list of additional URLs for the Boards Manager." +msgstr "" + +#: internal/cli/board/list.go:53 +msgid "" +"Command keeps running and prints list of connected boards whenever there is " +"a change." +msgstr "" + +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 +msgid "Compiled sketch not found in %s" +msgstr "" + +#: internal/cli/compile/compile.go:84 internal/cli/compile/compile.go:85 +msgid "Compiles Arduino sketches." +msgstr "" + +#: legacy/builder/builder.go:129 +msgid "Compiling core..." +msgstr "" + +#: legacy/builder/builder.go:94 +msgid "Compiling libraries..." +msgstr "" + +#: arduino/builder/libraries.go:182 +msgid "Compiling library \"%[1]s\"" +msgstr "" + +#: legacy/builder/builder.go:66 +msgid "Compiling sketch..." +msgstr "" + +#: internal/cli/config/init.go:88 +msgid "" +"Config file already exists, use --overwrite to discard the existing one." +msgstr "" + +#: internal/cli/config/init.go:112 +msgid "Config file written to: %s" +msgstr "" + +#: internal/cli/debug/debug.go:151 +msgid "Configuration options for %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:68 +msgid "" +"Configure communication port settings. The format is " +"=[,=]..." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:174 +msgid "Configuring platform." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:341 +msgid "Configuring tool." +msgstr "" + +#: internal/cli/board/list.go:188 +msgid "Connected" +msgstr "" + +#: internal/cli/monitor/monitor.go:155 +msgid "Connected to %s! Press CTRL-C to exit." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Core" +msgstr "" + +#: arduino/httpclient/httpclient.go:112 +msgid "Could not connect via HTTP" +msgstr "" + +#: commands/instances.go:503 +msgid "Could not create index directory" +msgstr "" + +#: arduino/builder/core.go:61 +msgid "Couldn't deeply cache core build: %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:148 +msgid "Couldn't determine program size" +msgstr "" + +#: internal/cli/arguments/sketch.go:36 internal/cli/lib/install.go:109 +msgid "Couldn't get current working directory: %v" +msgstr "" + +#: internal/cli/sketch/new.go:37 internal/cli/sketch/new.go:38 +msgid "Create a new Sketch" +msgstr "" + +#: internal/cli/compile/compile.go:97 +msgid "Create and print a profile configuration from the build." +msgstr "" + +#: internal/cli/sketch/archive.go:38 internal/cli/sketch/archive.go:39 +msgid "Creates a zip file containing all sketch files." +msgstr "" + +#: internal/cli/config/init.go:43 +msgid "" +"Creates or updates the configuration file in the data directory or custom " +"directory with the current configuration settings." +msgstr "" + +#: internal/cli/compile/compile.go:309 +msgid "" +"Currently, Build Profiles only support libraries available through Arduino " +"Library Manager." +msgstr "" + +#: internal/cli/core/list.go:93 internal/cli/core/search.go:104 +#: internal/cli/outdated/outdated.go:98 +msgid "DEPRECATED" +msgstr "" + +#: internal/cli/daemon/daemon.go:178 +msgid "Daemon is now listening on %s:%s" +msgstr "" + +#: internal/cli/debug/debug.go:53 +msgid "Debug Arduino sketches." +msgstr "" + +#: internal/cli/debug/debug.go:54 +msgid "" +"Debug Arduino sketches. (this command opens an interactive gdb session)" +msgstr "" + +#: internal/cli/debug/debug.go:63 +msgid "Debug interpreter e.g.: %s" +msgstr "" + +#: commands/debug/debug_info.go:148 +msgid "Debugging not supported for board %s" +msgstr "" + +#: internal/cli/board/details.go:142 +msgid "Debugging supported:" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Default" +msgstr "" + +#: internal/cli/board/attach.go:108 +msgid "Default FQBN set to" +msgstr "" + +#: internal/cli/board/attach.go:107 +msgid "Default port set to" +msgstr "" + +#: internal/cli/cache/clean.go:30 +msgid "Delete Boards/Library Manager download cache." +msgstr "" + +#: internal/cli/cache/clean.go:31 +msgid "" +"Delete contents of the `directories.downloads` folder, where archive files " +"are staged during installation of libraries and boards platforms." +msgstr "" + +#: internal/cli/config/delete.go:32 internal/cli/config/delete.go:33 +msgid "Deletes a settings key and all its sub keys." +msgstr "" + +#: internal/cli/lib/search.go:171 +msgid "Dependencies: %s" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:88 +msgid "Description" +msgstr "" + +#: legacy/builder/builder.go:58 +msgid "Detecting libraries used..." +msgstr "" + +#: internal/cli/board/list.go:43 +msgid "" +"Detects and displays a list of boards connected to the current computer." +msgstr "" + +#: internal/cli/debug/debug.go:64 +msgid "Directory containing binaries for debug." +msgstr "" + +#: internal/cli/upload/upload.go:70 +msgid "Directory containing binaries to upload." +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:45 +msgid "" +"Directory where to save generated files. Default is './docs', the directory " +"must exist." +msgstr "" + +#: internal/cli/completion/completion.go:44 +msgid "Disable completion description for shells that support it" +msgstr "" + +#: internal/cli/board/list.go:189 +msgid "Disconnected" +msgstr "" + +#: internal/cli/daemon/daemon.go:64 +msgid "Display only the provided gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:61 +msgid "Do not install dependencies." +msgstr "" + +#: internal/cli/lib/install.go:62 +msgid "Do not overwrite already installed libraries." +msgstr "" + +#: internal/cli/core/install.go:55 +msgid "Do not overwrite already installed platforms." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:58 +#: internal/cli/upload/upload.go:75 +msgid "Do not perform the actual upload, just log out actions" +msgstr "" + +#: internal/cli/daemon/daemon.go:61 +msgid "Do not terminate daemon process if the parent process dies" +msgstr "" + +#: commands/lib/download.go:60 +msgid "Downloading %s" +msgstr "" + +#: arduino/resources/index.go:129 +msgid "Downloading index signature: %s" +msgstr "" + +#: arduino/resources/index.go:74 commands/instances.go:542 +#: commands/instances.go:551 +msgid "Downloading index: %s" +msgstr "" + +#: commands/instances.go:439 +msgid "Downloading library %s" +msgstr "" + +#: commands/instances.go:136 +msgid "Downloading missing tool %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:93 +msgid "Downloading packages" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:98 +msgid "Downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:178 +msgid "Downloading tool %s" +msgstr "" + +#: internal/cli/core/download.go:35 internal/cli/core/download.go:36 +msgid "Downloads one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/download.go:35 internal/cli/lib/download.go:36 +msgid "Downloads one or more libraries without installing them." +msgstr "" + +#: internal/cli/daemon/daemon.go:62 +msgid "Enable debug logging of gRPC calls" +msgstr "" + +#: internal/cli/lib/install.go:64 +msgid "Enter a path to zip file" +msgstr "" + +#: internal/cli/lib/install.go:63 +msgid "Enter git url for libraries hosted on repositories" +msgstr "" + +#: commands/sketch/archive.go:107 +msgid "Error adding file to sketch archive" +msgstr "" + +#: arduino/builder/core.go:194 +msgid "Error archiving built core (caching) in %[1]s: %[2]s" +msgstr "" + +#: internal/cli/sketch/archive.go:80 +msgid "Error archiving: %v" +msgstr "" + +#: commands/sketch/archive.go:95 +msgid "Error calculating relative file path" +msgstr "" + +#: internal/cli/cache/clean.go:45 +msgid "Error cleaning caches: %v" +msgstr "" + +#: internal/cli/compile/compile.go:218 +msgid "Error converting path to absolute: %v" +msgstr "" + +#: commands/compile/compile.go:405 +msgid "Error copying output file %s" +msgstr "" + +#: internal/cli/instance/instance.go:43 +msgid "Error creating instance: %v" +msgstr "" + +#: commands/compile/compile.go:385 +msgid "Error creating output dir" +msgstr "" + +#: commands/sketch/archive.go:83 +msgid "Error creating sketch archive" +msgstr "" + +#: internal/cli/sketch/new.go:69 internal/cli/sketch/new.go:81 +msgid "Error creating sketch: %v" +msgstr "" + +#: internal/cli/board/list.go:78 internal/cli/board/list.go:89 +msgid "Error detecting boards: %v" +msgstr "" + +#: internal/cli/core/download.go:68 internal/cli/lib/download.go:65 +msgid "Error downloading %[1]s: %[2]v" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:106 +#: arduino/cores/packagemanager/profiles.go:107 +#: arduino/cores/packagemanager/profiles.go:111 +#: arduino/cores/packagemanager/profiles.go:112 +msgid "Error downloading %s" +msgstr "" + +#: arduino/resources/index.go:75 commands/instances.go:602 +msgid "Error downloading index '%s'" +msgstr "" + +#: arduino/resources/index.go:130 +msgid "Error downloading index signature '%s'" +msgstr "" + +#: commands/instances.go:451 +msgid "Error downloading library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:129 +#: arduino/cores/packagemanager/profiles.go:130 +msgid "Error downloading platform %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:127 +#: arduino/cores/packagemanager/profiles.go:180 +msgid "Error downloading tool %s" +msgstr "" + +#: internal/cli/debug/debug.go:114 +msgid "Error during Debug: %v" +msgstr "" + +#: internal/cli/arguments/port.go:144 +msgid "Error during FQBN detection: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:244 internal/cli/feedback/feedback.go:250 +msgid "Error during JSON encoding of the output: %v" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:72 +#: internal/cli/burnbootloader/burnbootloader.go:85 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 +msgid "Error during Upload: %v" +msgstr "" + +#: internal/cli/feedback/feedback.go:256 +msgid "Error during YAML encoding of the output: %v" +msgstr "" + +#: internal/cli/compile/compile.go:355 +msgid "Error during build: %v" +msgstr "" + +#: internal/cli/core/install.go:79 +msgid "Error during install: %v" +msgstr "" + +#: internal/cli/core/uninstall.go:68 +msgid "Error during uninstall: %v" +msgstr "" + +#: internal/cli/core/upgrade.go:119 +msgid "Error during upgrade: %v" +msgstr "" + +#: arduino/resources/index.go:97 arduino/resources/index.go:116 +msgid "Error extracting %s" +msgstr "" + +#: commands/upload/upload.go:373 +msgid "Error finding build artifacts" +msgstr "" + +#: internal/cli/debug/debug.go:98 +msgid "Error getting Debug info: %v" +msgstr "" + +#: commands/sketch/archive.go:59 +msgid "Error getting absolute path of sketch archive" +msgstr "" + +#: internal/cli/board/details.go:73 +msgid "Error getting board details: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:81 +msgid "Error getting current directory for compilation database: %s" +msgstr "" + +#: commands/compile/compile.go:319 commands/lib/list.go:108 +msgid "Error getting information for library %s" +msgstr "" + +#: internal/cli/lib/examples.go:72 +msgid "Error getting libraries info: %v" +msgstr "" + +#: internal/cli/arguments/fqbn.go:90 +msgid "Error getting port metadata: %v" +msgstr "" + +#: internal/cli/monitor/monitor.go:95 +msgid "Error getting port settings details: %s" +msgstr "" + +#: internal/cli/upload/upload.go:155 +msgid "Error getting user input" +msgstr "" + +#: internal/cli/instance/instance.go:82 internal/cli/instance/instance.go:99 +msgid "Error initializing instance: %v" +msgstr "" + +#: internal/cli/lib/install.go:145 +msgid "Error installing %s: %v" +msgstr "" + +#: internal/cli/lib/install.go:119 +msgid "Error installing Git Library: %v" +msgstr "" + +#: internal/cli/lib/install.go:98 +msgid "Error installing Zip Library: %v" +msgstr "" + +#: commands/instances.go:461 +msgid "Error installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:137 +#: arduino/cores/packagemanager/profiles.go:138 +msgid "Error installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:181 +#: arduino/cores/packagemanager/profiles.go:188 +#: arduino/cores/packagemanager/profiles.go:189 +msgid "Error installing tool %s" +msgstr "" + +#: internal/cli/board/listall.go:63 +msgid "Error listing boards: %v" +msgstr "" + +#: internal/cli/lib/list.go:89 +msgid "Error listing libraries: %v" +msgstr "" + +#: internal/cli/core/list.go:69 +msgid "Error listing platforms: %v" +msgstr "" + +#: arduino/errors.go:425 +msgid "Error loading hardware platform" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:115 +#: arduino/cores/packagemanager/profiles.go:116 +msgid "Error loading index %s" +msgstr "" + +#: arduino/resources/index.go:91 +msgid "Error opening %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:86 +msgid "Error opening debug logging file: %s" +msgstr "" + +#: internal/cli/compile/compile.go:191 +msgid "Error opening source code overrides data file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:204 +msgid "Error parsing --show-properties flag: %v" +msgstr "" + +#: commands/compile/compile.go:395 +msgid "Error reading build directory" +msgstr "" + +#: configuration/configuration.go:68 +msgid "Error reading config file: %v" +msgstr "" + +#: commands/sketch/archive.go:77 +msgid "Error reading sketch files" +msgstr "" + +#: internal/cli/lib/check_deps.go:65 +msgid "Error resolving dependencies for %[1]s: %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:68 +msgid "Error retrieving core list: %v" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:155 +msgid "Error rolling-back changes: %s" +msgstr "" + +#: arduino/resources/index.go:153 arduino/resources/index.go:165 +msgid "Error saving downloaded index" +msgstr "" + +#: arduino/resources/index.go:160 arduino/resources/index.go:169 +msgid "Error saving downloaded index signature" +msgstr "" + +#: internal/cli/board/search.go:60 +msgid "Error searching boards: %v" +msgstr "" + +#: internal/cli/lib/search.go:79 +msgid "Error searching for Libraries: %v" +msgstr "" + +#: internal/cli/core/search.go:80 +msgid "Error searching for platforms: %v" +msgstr "" + +#: arduino/builder/compilation/database.go:66 +msgid "Error serializing compilation database: %s" +msgstr "" + +#: internal/cli/board/list.go:81 +msgid "Error starting discovery: %v" +msgstr "" + +#: internal/cli/lib/uninstall.go:63 +msgid "Error uninstalling %[1]s: %[2]v" +msgstr "" + +#: internal/cli/lib/search.go:68 internal/cli/lib/update_index.go:54 +msgid "Error updating library index: %v" +msgstr "" + +#: internal/cli/lib/upgrade.go:71 +msgid "Error upgrading libraries" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:150 +msgid "Error upgrading platform: %s" +msgstr "" + +#: arduino/resources/index.go:139 +msgid "Error verifying signature" +msgstr "" + +#: arduino/builder/detector/detector.go:366 +msgid "Error while detecting libraries included by %[1]s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 +msgid "Error while determining sketch size: %s" +msgstr "" + +#: arduino/builder/compilation/database.go:69 +msgid "Error writing compilation database: %s" +msgstr "" + +#: internal/cli/completion/completion.go:56 +msgid "Error: command description is not supported by %v" +msgstr "" + +#: internal/cli/compile/compile.go:197 +msgid "Error: invalid source code overrides data file: %v" +msgstr "" + +#: internal/cli/board/list.go:96 +msgid "Event" +msgstr "" + +#: internal/cli/lib/examples.go:120 +msgid "Examples for library %s" +msgstr "" + +#: internal/cli/usage.go:28 +msgid "Examples:" +msgstr "" + +#: internal/cli/debug/debug.go:132 +msgid "Executable to debug" +msgstr "" + +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 +msgid "Expected compiled sketch in directory %s, but is a file instead" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/board/details.go:40 +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "FQBN" +msgstr "" + +#: internal/cli/board/details.go:139 +msgid "FQBN:" +msgstr "" + +#: commands/upload/upload.go:502 +msgid "Failed chip erase" +msgstr "" + +#: commands/upload/upload.go:509 +msgid "Failed programming" +msgstr "" + +#: commands/upload/upload.go:505 +msgid "Failed to burn bootloader" +msgstr "" + +#: commands/instances.go:166 +msgid "Failed to create data directory" +msgstr "" + +#: commands/instances.go:156 +msgid "Failed to create downloads directory" +msgstr "" + +#: internal/cli/daemon/daemon.go:133 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is an invalid port." +msgstr "" + +#: internal/cli/daemon/daemon.go:128 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is unknown name." +msgstr "" + +#: internal/cli/daemon/daemon.go:140 +msgid "Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v" +msgstr "" + +#: internal/cli/daemon/daemon.go:138 +msgid "Failed to listen on TCP port: %s. Address already in use." +msgstr "" + +#: commands/upload/upload.go:513 +msgid "Failed uploading" +msgstr "" + +#: internal/cli/board/details.go:186 +msgid "File:" +msgstr "" + +#: commands/compile/compile.go:137 +msgid "" +"Firmware encryption/signing requires all the following properties to be " +"defined: %s" +msgstr "" + +#: commands/daemon/debug.go:46 +msgid "First message must contain debug request, not data" +msgstr "" + +#: internal/cli/arguments/arguments.go:47 +msgid "Flag %[1]s is mandatory when used in conjunction with: %[2]s" +msgstr "" + +#: internal/cli/usage.go:30 +msgid "Flags:" +msgstr "" + +#: internal/cli/arguments/post_install.go:35 +msgid "" +"Force run of post-install scripts (if the CLI is not running interactively)." +msgstr "" + +#: internal/cli/arguments/post_install.go:36 +msgid "" +"Force skip of post-install scripts (if the CLI is running interactively)." +msgstr "" + +#: arduino/errors.go:840 +msgid "Found %d platforms matching \"%s\": %s" +msgstr "" + +#: internal/cli/arguments/fqbn.go:37 +msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" +msgstr "" + +#: internal/cli/debug/debug.go:146 +msgid "GDB Server path" +msgstr "" + +#: internal/cli/debug/debug.go:145 +msgid "GDB Server type" +msgstr "" + +#: commands/debug/debug.go:178 +msgid "GDB server '%s' is not supported" +msgstr "" + +#: internal/cli/generatedocs/generatedocs.go:38 +#: internal/cli/generatedocs/generatedocs.go:39 +msgid "Generates bash completion and command manpages." +msgstr "" + +#: internal/cli/completion/completion.go:38 +msgid "Generates completion scripts" +msgstr "" + +#: internal/cli/completion/completion.go:39 +msgid "Generates completion scripts for various shells" +msgstr "" + +#: legacy/builder/builder.go:63 +msgid "Generating function prototypes..." +msgstr "" + +#: internal/cli/usage.go:31 +msgid "Global Flags:" +msgstr "" + +#: arduino/builder/sizer/sizer.go:158 +msgid "" +"Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " +"bytes for local variables. Maximum is %[2]s bytes." +msgstr "" + +#: arduino/builder/sizer/sizer.go:164 +msgid "Global variables use %[1]s bytes of dynamic memory." +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 +#: internal/cli/outdated/outdated.go:83 +msgid "ID" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Id" +msgstr "" + +#: internal/cli/board/details.go:153 +msgid "Identification properties:" +msgstr "" + +#: internal/cli/compile/compile.go:132 +msgid "If set built binaries will be exported to the sketch folder." +msgstr "" + +#: internal/cli/core/list.go:45 +msgid "" +"If set return all installable and installed cores, including manually " +"installed." +msgstr "" + +#: internal/cli/lib/list.go:53 +msgid "Include built-in libraries (from platforms and IDE) in listing." +msgstr "" + +#: internal/cli/sketch/archive.go:50 +msgid "Includes %s directory in the archive." +msgstr "" + +#: internal/cli/lib/install.go:65 +msgid "Install libraries in the IDE-Builtin directory" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:85 +msgid "Installed" +msgstr "" + +#: commands/lib/install.go:140 +msgid "Installed %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:316 +#: commands/lib/install.go:126 +msgid "Installing %s" +msgstr "" + +#: commands/instances.go:459 +msgid "Installing library %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:116 +#: arduino/cores/packagemanager/profiles.go:135 +msgid "Installing platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:186 +msgid "Installing tool %s" +msgstr "" + +#: internal/cli/core/install.go:37 internal/cli/core/install.go:38 +msgid "Installs one or more cores and corresponding tool dependencies." +msgstr "" + +#: internal/cli/lib/install.go:45 internal/cli/lib/install.go:46 +msgid "Installs one or more specified libraries into the system." +msgstr "" + +#: arduino/builder/detector/detector.go:392 +msgid "Internal error in cache" +msgstr "" + +#: arduino/errors.go:378 +msgid "Invalid '%[1]s' property: %[2]s" +msgstr "" + +#: internal/cli/cli.go:250 +msgid "" +"Invalid Call : should show Help, but it is available only in TEXT mode." +msgstr "" + +#: arduino/errors.go:62 +msgid "Invalid FQBN" +msgstr "" + +#: internal/cli/daemon/daemon.go:151 +msgid "Invalid TCP address: port is missing" +msgstr "" + +#: arduino/errors.go:80 +msgid "Invalid URL" +msgstr "" + +#: commands/instances.go:274 +msgid "Invalid additional URL: %v" +msgstr "" + +#: arduino/resources/index.go:103 +msgid "Invalid archive: file %{1}s not found in archive %{2}s" +msgstr "" + +#: internal/cli/core/download.go:56 internal/cli/core/install.go:65 +#: internal/cli/core/uninstall.go:53 internal/cli/core/upgrade.go:93 +#: internal/cli/lib/download.go:54 internal/cli/lib/uninstall.go:53 +msgid "Invalid argument passed: %v" +msgstr "" + +#: commands/compile/compile.go:190 +msgid "Invalid build properties" +msgstr "" + +#: arduino/builder/sizer/sizer.go:237 +msgid "Invalid data size regexp: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:243 +msgid "Invalid eeprom size regexp: %s" +msgstr "" + +#: arduino/errors.go:48 +msgid "Invalid instance" +msgstr "" + +#: internal/cli/core/upgrade.go:99 +msgid "Invalid item %s" +msgstr "" + +#: arduino/errors.go:98 +msgid "Invalid library" +msgstr "" + +#: configuration/network.go:63 +msgid "Invalid network.proxy '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/cli.go:217 +msgid "Invalid option for --log-level: %s" +msgstr "" + +#: internal/cli/cli.go:229 +msgid "Invalid output format: %s" +msgstr "" + +#: commands/instances.go:554 +msgid "Invalid package index in %s" +msgstr "" + +#: internal/cli/core/uninstall.go:58 +msgid "Invalid parameter %s: version not allowed" +msgstr "" + +#: commands/board/list.go:79 +msgid "Invalid pid value: '%s'" +msgstr "" + +#: arduino/errors.go:222 +msgid "Invalid profile" +msgstr "" + +#: commands/monitor/monitor.go:145 +msgid "Invalid recipe in platform.txt" +msgstr "" + +#: arduino/builder/sizer/sizer.go:227 +msgid "Invalid size regexp: %s" +msgstr "" + +#: internal/cli/core/search.go:124 +msgid "Invalid timeout: %s" +msgstr "" + +#: arduino/errors.go:116 +msgid "Invalid version" +msgstr "" + +#: commands/board/list.go:76 +msgid "Invalid vid value: '%s'" +msgstr "" + +#: internal/cli/compile/compile.go:127 +msgid "" +"Just produce the compilation database, without actually compiling. All build" +" commands are skipped except pre* hooks." +msgstr "" + +#: internal/cli/lib/list.go:38 +msgid "LIBNAME" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "LIBRARY" +msgstr "" + +#: internal/cli/lib/download.go:34 internal/cli/lib/examples.go:42 +#: internal/cli/lib/search.go:40 internal/cli/lib/uninstall.go:34 +msgid "LIBRARY_NAME" +msgstr "" + +#: internal/cli/core/list.go:89 internal/cli/outdated/outdated.go:86 +msgid "Latest" +msgstr "" + +#: arduino/builder/libraries.go:112 +msgid "Library %[1]s has been declared precompiled:" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:135 +#: commands/lib/install.go:92 +msgid "" +"Library %[1]s is already installed, but with a different version: %[2]s" +msgstr "" + +#: commands/lib/upgrade.go:59 +msgid "Library %s is already at the latest version" +msgstr "" + +#: commands/lib/uninstall.go:39 +msgid "Library %s is not installed" +msgstr "" + +#: commands/instances.go:445 +msgid "Library %s not found" +msgstr "" + +#: arduino/errors.go:446 +msgid "Library '%s' not found" +msgstr "" + +#: arduino/builder/detector/detector.go:465 +msgid "" +"Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." +msgstr "" + +#: arduino/errors.go:575 +msgid "Library install failed" +msgstr "" + +#: commands/lib/install.go:150 commands/lib/install.go:160 +msgid "Library installed" +msgstr "" + +#: internal/cli/lib/search.go:161 +msgid "License: %s" +msgstr "" + +#: legacy/builder/builder.go:156 +msgid "Linking everything together..." +msgstr "" + +#: internal/cli/board/listall.go:39 +msgid "" +"List all boards that have the support platform installed. You can search\n" +"for a specific board if you specify the board name" +msgstr "" + +#: internal/cli/board/listall.go:38 +msgid "List all known boards and their corresponding FQBN." +msgstr "" + +#: internal/cli/board/list.go:42 +msgid "List connected boards." +msgstr "" + +#: internal/cli/arguments/fqbn.go:42 +msgid "" +"List of board options separated by commas. Or can be used multiple times for" +" multiple options." +msgstr "" + +#: internal/cli/compile/compile.go:105 +msgid "" +"List of custom build properties separated by commas. Or can be used multiple" +" times for multiple properties." +msgstr "" + +#: internal/cli/lib/list.go:55 +msgid "List updatable libraries." +msgstr "" + +#: internal/cli/core/list.go:44 +msgid "List updatable platforms." +msgstr "" + +#: internal/cli/board/board.go:33 +msgid "Lists all connected boards." +msgstr "" + +#: internal/cli/outdated/outdated.go:41 +msgid "Lists cores and libraries that can be upgraded" +msgstr "" + +#: commands/instances.go:307 commands/instances.go:318 +#: commands/instances.go:418 +msgid "Loading index file: %v" +msgstr "" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:87 +msgid "Location" +msgstr "" + +#: arduino/builder/sizer/sizer.go:199 +msgid "Low memory available, stability problems may occur." +msgstr "" + +#: internal/cli/lib/search.go:156 +msgid "Maintainer: %s" +msgstr "" + +#: internal/cli/arguments/discovery_timeout.go:31 +msgid "Max time to wait for port discovery, e.g.: 30s, 1m" +msgstr "" + +#: internal/cli/cli.go:110 +msgid "" +"Messages with this level and above will be logged. Valid levels are: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:460 +msgid "Missing '%[1]s' from library in %[2]s" +msgstr "" + +#: arduino/errors.go:171 +msgid "Missing FQBN (Fully Qualified Board Name)" +msgstr "" + +#: arduino/errors.go:262 +msgid "Missing port" +msgstr "" + +#: arduino/errors.go:238 +msgid "Missing port address" +msgstr "" + +#: arduino/errors.go:250 +msgid "Missing port protocol" +msgstr "" + +#: arduino/errors.go:288 +msgid "Missing programmer" +msgstr "" + +#: arduino/builder/sizer/sizer.go:231 +msgid "Missing size regexp" +msgstr "" + +#: arduino/errors.go:498 +msgid "Missing sketch path" +msgstr "" + +#: arduino/errors.go:359 +msgid "Monitor '%s' not found" +msgstr "" + +#: internal/cli/monitor/monitor.go:138 +msgid "Monitor port settings:" +msgstr "" + +#: arduino/builder/detector/detector.go:154 +msgid "Multiple libraries were found for \"%[1]s\"" +msgstr "" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:84 +msgid "Name" +msgstr "" + +#: internal/cli/lib/search.go:135 +msgid "Name: \"%s\"" +msgstr "" + +#: internal/cli/upload/upload.go:206 +msgid "New upload port: %[1]s (%[2]s)" +msgstr "" + +#: internal/cli/board/list.go:122 +msgid "No boards found." +msgstr "" + +#: internal/cli/board/attach.go:105 +msgid "No default port or FQBN set" +msgstr "" + +#: internal/cli/lib/examples.go:105 +msgid "No libraries found." +msgstr "" + +#: internal/cli/lib/list.go:128 +msgid "No libraries installed." +msgstr "" + +#: internal/cli/lib/search.go:124 +msgid "No libraries matching your search." +msgstr "" + +#: internal/cli/lib/search.go:130 +msgid "" +"No libraries matching your search.\n" +"Did you mean...\n" +msgstr "" + +#: internal/cli/lib/list.go:126 +msgid "No libraries update is available." +msgstr "" + +#: arduino/errors.go:276 +msgid "No monitor available for the port protocol %s" +msgstr "" + +#: internal/cli/outdated/outdated.go:77 +msgid "No outdated platforms or libraries found." +msgstr "" + +#: internal/cli/core/list.go:86 +msgid "No platforms installed." +msgstr "" + +#: internal/cli/core/search.go:110 +msgid "No platforms matching your search." +msgstr "" + +#: commands/upload/upload.go:458 +msgid "No upload port found, using %s as fallback" +msgstr "" + +#: arduino/errors.go:465 +msgid "No valid dependencies solution found" +msgstr "" + +#: arduino/builder/sizer/sizer.go:189 +msgid "Not enough memory; see %[1]s for tips on reducing your footprint." +msgstr "" + +#: arduino/builder/detector/detector.go:157 +msgid "Not used: %[1]s" +msgstr "" + +#: internal/cli/board/details.go:185 +msgid "OS:" +msgstr "" + +#: internal/cli/board/details.go:147 +msgid "Official Arduino board:" +msgstr "" + +#: internal/cli/lib/search.go:50 +msgid "" +"Omit library details far all versions except the latest (produce a more " +"compact JSON output)." +msgstr "" + +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 +msgid "Open a communication port with a board." +msgstr "" + +#: internal/cli/board/details.go:197 +msgid "Option:" +msgstr "" + +#: internal/cli/compile/compile.go:115 +msgid "" +"Optional, can be: %s. Used to tell gcc which warning level to use (-W flag)." +msgstr "" + +#: internal/cli/compile/compile.go:128 +msgid "Optional, cleanup the build folder and do not use any cached build." +msgstr "" + +#: internal/cli/compile/compile.go:125 +msgid "" +"Optional, optimize compile output for debugging, rather than for release." +msgstr "" + +#: internal/cli/compile/compile.go:117 +msgid "Optional, suppresses almost every output." +msgstr "" + +#: internal/cli/compile/compile.go:116 internal/cli/upload/upload.go:73 +msgid "Optional, turns on verbose mode." +msgstr "" + +#: internal/cli/compile/compile.go:133 +msgid "" +"Optional. Path to a .json file that contains a set of replacements of the " +"sketch source code." +msgstr "" + +#: internal/cli/compile/compile.go:107 +msgid "" +"Override a build property with a custom value. Can be used multiple times " +"for multiple properties." +msgstr "" + +#: internal/cli/config/init.go:57 +msgid "Overwrite existing config file." +msgstr "" + +#: internal/cli/sketch/archive.go:51 +msgid "Overwrites an already existing archive" +msgstr "" + +#: internal/cli/sketch/new.go:44 +msgid "Overwrites an existing .ino sketch." +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "PACKAGER" +msgstr "" + +#: internal/cli/board/details.go:163 +msgid "Package URL:" +msgstr "" + +#: internal/cli/board/details.go:162 +msgid "Package maintainer:" +msgstr "" + +#: internal/cli/board/details.go:161 +msgid "Package name:" +msgstr "" + +#: internal/cli/board/details.go:165 +msgid "Package online help:" +msgstr "" + +#: internal/cli/board/details.go:164 +msgid "Package website:" +msgstr "" + +#: internal/cli/lib/search.go:158 +msgid "Paragraph: %s" +msgstr "" + +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 +msgid "Path" +msgstr "" + +#: internal/cli/compile/compile.go:124 +msgid "" +"Path to a collection of libraries. Can be used multiple times or entries can" +" be comma separated." +msgstr "" + +#: internal/cli/compile/compile.go:122 +msgid "" +"Path to a single library’s root folder. Can be used multiple times or " +"entries can be comma separated." +msgstr "" + +#: internal/cli/cli.go:114 +msgid "Path to the file where logs will be written." +msgstr "" + +#: internal/cli/compile/compile.go:103 +msgid "" +"Path where to save compiled files. If omitted, a directory will be created " +"in the default temporary path of your OS." +msgstr "" + +#: commands/upload/upload.go:439 +msgid "Performing 1200-bps touch reset on serial port %s" +msgstr "" + +#: commands/core/install.go:54 commands/core/install.go:61 +msgid "Platform %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:191 +msgid "Platform %s installed" +msgstr "" + +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 +msgid "" +"Platform %s is not found in any known index\n" +"Maybe you need to add a 3rd party URL?" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:301 +msgid "Platform %s uninstalled" +msgstr "" + +#: arduino/errors.go:483 +msgid "Platform '%s' is already at the latest version" +msgstr "" + +#: arduino/errors.go:407 +msgid "Platform '%s' not found" +msgstr "" + +#: internal/cli/board/search.go:82 +msgid "Platform ID" +msgstr "" + +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 +msgid "Platform ID is not correct" +msgstr "" + +#: internal/cli/board/details.go:171 +msgid "Platform URL:" +msgstr "" + +#: internal/cli/board/details.go:170 +msgid "Platform architecture:" +msgstr "" + +#: internal/cli/board/details.go:169 +msgid "Platform category:" +msgstr "" + +#: internal/cli/board/details.go:176 +msgid "Platform checksum:" +msgstr "" + +#: internal/cli/board/details.go:172 +msgid "Platform file name:" +msgstr "" + +#: internal/cli/board/details.go:168 +msgid "Platform name:" +msgstr "" + +#: internal/cli/board/details.go:174 +msgid "Platform size (bytes):" +msgstr "" + +#: arduino/errors.go:155 +msgid "" +"Please specify an FQBN. Multiple possible boards detected on port %[1]s with" +" protocol %[2]s" +msgstr "" + +#: arduino/errors.go:135 +msgid "" +"Please specify an FQBN. The board on port %[1]s with protocol %[2]s can't be" +" identified" +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Port" +msgstr "" + +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 +msgid "Port closed: %v" +msgstr "" + +#: arduino/errors.go:669 +msgid "Port monitor error" +msgstr "" + +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 +msgid "Precompiled library in \"%[1]s\" not found" +msgstr "" + +#: internal/cli/board/details.go:41 +msgid "Print details about a board." +msgstr "" + +#: internal/cli/compile/compile.go:99 +msgid "Print preprocessed code to stdout instead of compiling." +msgstr "" + +#: internal/cli/cli.go:106 internal/cli/cli.go:108 +msgid "Print the logs on the standard output." +msgstr "" + +#: internal/cli/config/dump.go:31 +msgid "Prints the current configuration" +msgstr "" + +#: internal/cli/config/dump.go:32 +msgid "Prints the current configuration." +msgstr "" + +#: arduino/errors.go:204 +msgid "Profile '%s' not found" +msgstr "" + +#: arduino/errors.go:340 +msgid "Programmer '%s' not found" +msgstr "" + +#: internal/cli/board/details.go:110 +msgid "Programmer name" +msgstr "" + +#: internal/cli/arguments/programmer.go:29 +msgid "Programmer to use, e.g: atmel_ice" +msgstr "" + +#: internal/cli/board/details.go:214 +msgid "Programmers:" +msgstr "" + +#: arduino/errors.go:392 +msgid "Property '%s' is undefined" +msgstr "" + +#: internal/cli/board/list.go:132 +msgid "Protocol" +msgstr "" + +#: internal/cli/lib/search.go:168 +msgid "Provides includes: %s" +msgstr "" + +#: internal/cli/config/remove.go:31 internal/cli/config/remove.go:32 +msgid "Removes one or more values from a setting." +msgstr "" + +#: commands/lib/install.go:130 +msgid "Replacing %[1]s with %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:120 +msgid "Replacing platform %[1]s with %[2]s" +msgstr "" + +#: internal/cli/board/details.go:182 +msgid "Required tool:" +msgstr "" + +#: internal/cli/daemon/daemon.go:53 +msgid "Run as a daemon on port: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:69 +msgid "Run in silent mode, show only monitor input and output." +msgstr "" + +#: internal/cli/daemon/daemon.go:54 +msgid "" +"Running as a daemon the initialization of cores and libraries is done only " +"once." +msgstr "" + +#: arduino/builder/core.go:62 +msgid "Running normal build of the core..." +msgstr "" + +#: internal/cli/compile/compile.go:101 +msgid "Save build artifacts in this directory." +msgstr "" + +#: internal/cli/board/search.go:38 +msgid "Search for a board in the Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/board/search.go:37 +msgid "Search for a board in the Boards Manager." +msgstr "" + +#: internal/cli/core/search.go:47 +msgid "Search for a core in Boards Manager using the specified keywords." +msgstr "" + +#: internal/cli/core/search.go:46 +msgid "Search for a core in Boards Manager." +msgstr "" + +#: internal/cli/lib/search.go:42 +msgid "Search for one or more libraries data (case insensitive search)." +msgstr "" + +#: internal/cli/lib/search.go:41 +msgid "Searches for one or more libraries data." +msgstr "" + +#: internal/cli/lib/search.go:157 +msgid "Sentence: %s" +msgstr "" + +#: arduino/httpclient/httpclient.go:73 +msgid "Server responded with: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + +#: internal/cli/config/set.go:32 internal/cli/config/set.go:33 +msgid "Sets a setting value." +msgstr "" + +#: internal/cli/board/attach.go:36 +msgid "" +"Sets the default values for port and FQBN. If no port or FQBN are specified," +" the current default port and FQBN are displayed." +msgstr "" + +#: internal/cli/config/init.go:55 internal/cli/config/init.go:56 +msgid "Sets where to save the configuration file." +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Setting" +msgstr "" + +#: internal/cli/config/validate.go:50 +msgid "Settings key doesn't exist" +msgstr "" + +#: internal/cli/core/search.go:52 +msgid "Show all available core versions." +msgstr "" + +#: internal/cli/monitor/monitor.go:67 +msgid "Show all the settings of the communication port." +msgstr "" + +#: internal/cli/board/listall.go:47 internal/cli/board/search.go:45 +msgid "Show also boards marked as 'hidden' in the platform" +msgstr "" + +#: internal/cli/arguments/show_properties.go:59 +msgid "" +"Show build properties. The properties are expanded, use \"--show-" +"properties=unexpanded\" if you want them exactly as they are defined." +msgstr "" + +#: internal/cli/board/details.go:51 +msgid "Show full board details" +msgstr "" + +#: internal/cli/board/details.go:42 +msgid "" +"Show information about a board, in particular if the board has options to be" +" specified in the FQBN." +msgstr "" + +#: internal/cli/lib/search.go:49 +msgid "Show library names only." +msgstr "" + +#: internal/cli/board/details.go:52 +msgid "Show list of available programmers" +msgstr "" + +#: internal/cli/debug/debug.go:65 +msgid "" +"Show metadata about the debug session instead of starting the debugger." +msgstr "" + +#: internal/cli/update/update.go:45 +msgid "Show outdated cores and libraries after index update" +msgstr "" + +#: internal/cli/lib/list.go:39 +msgid "Shows a list of installed libraries." +msgstr "" + +#: internal/cli/lib/list.go:40 +msgid "" +"Shows a list of installed libraries.\n" +"\n" +"If the LIBNAME parameter is specified the listing is limited to that specific\n" +"library. By default the libraries provided as built-in by platforms/core are\n" +"not listed, they can be listed by adding the --all flag." +msgstr "" + +#: internal/cli/core/list.go:36 internal/cli/core/list.go:37 +msgid "Shows the list of installed platforms." +msgstr "" + +#: internal/cli/lib/examples.go:43 +msgid "Shows the list of the examples for libraries." +msgstr "" + +#: internal/cli/lib/examples.go:44 +msgid "" +"Shows the list of the examples for libraries. A name may be given as " +"argument to search a specific library." +msgstr "" + +#: internal/cli/version/version.go:39 +msgid "" +"Shows the version number of Arduino CLI which is installed on your system." +msgstr "" + +#: internal/cli/version/version.go:38 +msgid "Shows version number of Arduino CLI." +msgstr "" + +#: internal/cli/board/details.go:187 +msgid "Size (bytes):" +msgstr "" + +#: commands/compile/compile.go:249 +msgid "" +"Sketch cannot be located in build path. Please specify a different build " +"path" +msgstr "" + +#: internal/cli/sketch/new.go:84 +msgid "Sketch created in: %s" +msgstr "" + +#: internal/cli/arguments/profiles.go:29 +msgid "Sketch profile to use" +msgstr "" + +#: arduino/builder/sizer/sizer.go:184 +msgid "Sketch too big; see %[1]s for tips on reducing it." +msgstr "" + +#: arduino/builder/sizer/sizer.go:152 +msgid "" +"Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" +" bytes." +msgstr "" + +#: internal/cli/arguments/sketch.go:49 +msgid "" +"Sketches with .pde extension are deprecated, please rename the following " +"files to .ino:" +msgstr "" + +#: arduino/builder/linker.go:41 +msgid "Skip linking of final executable." +msgstr "" + +#: commands/upload/upload.go:432 +msgid "Skipping 1200-bps touch reset: no serial port selected!" +msgstr "" + +#: arduino/builder/utils/utils.go:589 +msgid "Skipping archive creation of: %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:571 +msgid "Skipping compile of: %[1]s" +msgstr "" + +#: arduino/builder/detector/detector.go:408 +msgid "Skipping dependencies detection for precompiled library %[1]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:187 +msgid "Skipping platform configuration." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:350 +msgid "Skipping tool configuration." +msgstr "" + +#: legacy/builder/recipe_runner.go:54 +msgid "Skipping: %[1]s" +msgstr "" + +#: commands/instances.go:574 +msgid "Some indexes could not be updated." +msgstr "" + +#: internal/cli/core/upgrade.go:124 +msgid "Some upgrades failed, please check the output for details." +msgstr "" + +#: arduino/serialutils/serialutils.go:141 +msgid "TOUCH: error during reset: %s" +msgstr "" + +#: internal/cli/daemon/daemon.go:59 +msgid "The TCP port the daemon will listen to" +msgstr "" + +#: internal/cli/cli.go:125 +msgid "The custom config file (if not specified the default will be used)." +msgstr "" + +#: internal/cli/daemon/daemon.go:78 +msgid "The flag --debug-file must be used with --debug." +msgstr "" + +#: internal/cli/config/add.go:93 +msgid "" +"The key '%[1]v' is not a list of items, can't add to it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: internal/cli/config/remove.go:51 +msgid "" +"The key '%[1]v' is not a list of items, can't remove from it.\n" +"Maybe use '%[2]s'?" +msgstr "" + +#: arduino/errors.go:859 +msgid "The library %s has multiple installations:" +msgstr "" + +#: internal/cli/compile/compile.go:113 +msgid "" +"The name of the custom encryption key to use to encrypt a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/compile/compile.go:111 +msgid "" +"The name of the custom signing key to use to sign a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "" + +#: internal/cli/cli.go:116 internal/cli/cli.go:121 +msgid "The output format for the logs, can be: %s" +msgstr "" + +#: internal/cli/compile/compile.go:109 +msgid "" +"The path of the dir to search for the custom keys to sign and encrypt a " +"binary. Used only by the platforms that support it." +msgstr "" + +#: arduino/builder/libraries.go:201 +msgid "The platform does not support '%[1]s' for precompiled libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:35 +msgid "" +"This command upgrades an installed library to the latest available version. " +"Multiple libraries can be passed separated by a space. If no arguments are " +"provided, the command will upgrade all the installed libraries where an " +"update is available." +msgstr "" + +#: internal/cli/outdated/outdated.go:42 +msgid "" +"This commands shows a list of installed cores and/or libraries\n" +"that can be upgraded. If nothing needs to be updated the output is empty." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:86 +#: arduino/cores/packagemanager/install_uninstall.go:311 +msgid "Tool %s already installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:400 +msgid "Tool %s uninstalled" +msgstr "" + +#: commands/debug/debug.go:139 +msgid "Toolchain '%s' is not supported" +msgstr "" + +#: internal/cli/debug/debug.go:140 +msgid "Toolchain custom configurations" +msgstr "" + +#: internal/cli/debug/debug.go:134 +msgid "Toolchain path" +msgstr "" + +#: internal/cli/debug/debug.go:135 +msgid "Toolchain prefix" +msgstr "" + +#: internal/cli/debug/debug.go:133 +msgid "Toolchain type" +msgstr "" + +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 +msgid "Try running %s" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:57 +msgid "Turns on verbose mode." +msgstr "" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Type" +msgstr "" + +#: internal/cli/lib/search.go:165 +msgid "Types: %s" +msgstr "" + +#: internal/cli/board/details.go:189 +msgid "URL:" +msgstr "" + +#: arduino/builder/core.go:190 +msgid "" +"Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" +msgstr "" + +#: configuration/configuration.go:125 +msgid "Unable to get Documents Folder: %v" +msgstr "" + +#: configuration/configuration.go:100 +msgid "Unable to get Local App Data Folder: %v" +msgstr "" + +#: configuration/configuration.go:88 configuration/configuration.go:113 +msgid "Unable to get user home dir: %v" +msgstr "" + +#: internal/cli/cli.go:204 +msgid "Unable to open file for logging: %s" +msgstr "" + +#: commands/instances.go:541 +msgid "Unable to parse URL" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:277 +#: commands/lib/uninstall.go:44 +msgid "Uninstalling %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:163 +#: commands/core/uninstall.go:73 +msgid "Uninstalling %s, tool is no more required" +msgstr "" + +#: internal/cli/core/uninstall.go:35 internal/cli/core/uninstall.go:36 +msgid "" +"Uninstalls one or more cores and corresponding tool dependencies if no " +"longer used." +msgstr "" + +#: internal/cli/lib/uninstall.go:35 internal/cli/lib/uninstall.go:36 +msgid "Uninstalls one or more libraries." +msgstr "" + +#: internal/cli/board/list.go:164 +msgid "Unknown" +msgstr "" + +#: arduino/errors.go:185 +msgid "Unknown FQBN" +msgstr "" + +#: internal/cli/update/update.go:37 +msgid "Updates the index of cores and libraries" +msgstr "" + +#: internal/cli/update/update.go:38 +msgid "Updates the index of cores and libraries to the latest versions." +msgstr "" + +#: internal/cli/core/update_index.go:34 +msgid "Updates the index of cores to the latest version." +msgstr "" + +#: internal/cli/core/update_index.go:33 +msgid "Updates the index of cores." +msgstr "" + +#: internal/cli/lib/update_index.go:34 +msgid "Updates the libraries index to the latest version." +msgstr "" + +#: internal/cli/lib/update_index.go:33 +msgid "Updates the libraries index." +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:43 +msgid "Upgrade doesn't accept parameters with version" +msgstr "" + +#: internal/cli/upgrade/upgrade.go:38 +msgid "Upgrades installed cores and libraries to latest version." +msgstr "" + +#: internal/cli/upgrade/upgrade.go:37 +msgid "Upgrades installed cores and libraries." +msgstr "" + +#: internal/cli/lib/upgrade.go:34 +msgid "Upgrades installed libraries." +msgstr "" + +#: internal/cli/core/upgrade.go:38 internal/cli/core/upgrade.go:39 +msgid "Upgrades one or all installed platforms to the latest version." +msgstr "" + +#: internal/cli/upload/upload.go:57 +msgid "Upload Arduino sketches." +msgstr "" + +#: internal/cli/upload/upload.go:58 +msgid "" +"Upload Arduino sketches. This does NOT compile the sketch prior to upload." +msgstr "" + +#: internal/cli/arguments/port.go:42 +msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" +msgstr "" + +#: commands/upload/upload.go:456 +msgid "Upload port found on %s" +msgstr "" + +#: internal/cli/arguments/port.go:46 +msgid "Upload port protocol, e.g: serial" +msgstr "" + +#: internal/cli/compile/compile.go:118 +msgid "Upload the binary after the compilation." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:47 +msgid "Upload the bootloader on the board using an external programmer." +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:46 +msgid "Upload the bootloader." +msgstr "" + +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 +msgid "" +"Uploading to specified board using %s protocol requires the following info:" +msgstr "" + +#: internal/cli/config/init.go:103 +msgid "" +"Urls cannot contain commas. Separate multiple urls exported as env var with a space:\n" +"%s" +msgstr "" + +#: internal/cli/usage.go:26 +msgid "Usage:" +msgstr "" + +#: internal/cli/usage.go:33 +msgid "Use %s for more information about a command." +msgstr "" + +#: internal/cli/compile/compile.go:427 +msgid "Used library" +msgstr "" + +#: internal/cli/compile/compile.go:442 +msgid "Used platform" +msgstr "" + +#: arduino/builder/detector/detector.go:155 +msgid "Used: %[1]s" +msgstr "" + +#: commands/compile/compile.go:342 +msgid "Using board '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: arduino/builder/detector/detector.go:348 +msgid "Using cached library dependencies for file: %[1]s" +msgstr "" + +#: commands/compile/compile.go:343 +msgid "Using core '%[1]s' from platform in folder: %[2]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:44 +msgid "Using library %[1]s at version %[2]s in folder: %[3]s %[4]s" +msgstr "" + +#: legacy/builder/print_used_libraries_if_verbose.go:38 +msgid "Using library %[1]s in folder: %[2]s %[3]s" +msgstr "" + +#: arduino/builder/core.go:154 +msgid "Using precompiled core: %[1]s" +msgstr "" + +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 +msgid "Using precompiled library in %[1]s" +msgstr "" + +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 +msgid "Using previously compiled file: %[1]s" +msgstr "" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +msgid "VERSION" +msgstr "" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "VERSION_NUMBER" +msgstr "" + +#: internal/cli/monitor/monitor.go:225 +msgid "Values" +msgstr "" + +#: internal/cli/burnbootloader/burnbootloader.go:56 +#: internal/cli/compile/compile.go:120 internal/cli/upload/upload.go:72 +msgid "Verify uploaded binary after the upload." +msgstr "" + +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 +#: internal/cli/core/search.go:100 +msgid "Version" +msgstr "" + +#: internal/cli/lib/search.go:166 +msgid "Versions: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:182 +msgid "WARNING cannot configure platform: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:346 +msgid "WARNING cannot configure tool: %s" +msgstr "" + +#: internal/cli/compile/compile.go:308 +msgid "WARNING: The sketch is compiled using one or more custom libraries." +msgstr "" + +#: legacy/builder/warn_about_arch_incompatible_libraries.go:39 +msgid "" +"WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be " +"incompatible with your current board which runs on %[3]s architecture(s)." +msgstr "" + +#: commands/upload/upload.go:445 +msgid "Waiting for upload port..." +msgstr "" + +#: commands/compile/compile.go:348 +msgid "" +"Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" +msgstr "" + +#: internal/cli/lib/search.go:159 +msgid "Website: %s" +msgstr "" + +#: internal/cli/config/init.go:42 +msgid "Writes current configuration to a configuration file." +msgstr "" + +#: internal/cli/config/init.go:45 +msgid "" +"Writes current configuration to the configuration file in the data " +"directory." +msgstr "" + +#: internal/cli/config/set.go:74 +msgid "Writing config file: %v" +msgstr "" + +#: internal/cli/compile/compile.go:149 internal/cli/compile/compile.go:152 +msgid "You cannot use the %s flag while compiling with a profile." +msgstr "" + +#: arduino/resources/checksums.go:79 +msgid "archive hash differs from hash in index" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:192 +msgid "archive is not valid: multiple files found in zip file top level" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:195 +msgid "archive is not valid: no files found in zip file top level" +msgstr "" + +#: internal/cli/sketch/archive.go:37 +msgid "archivePath" +msgstr "" + +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 +msgid "arduino-preprocessor pattern is missing" +msgstr "" + +#: commands/upload/upload.go:714 +msgid "autodetect build artifact: %s" +msgstr "" + +#: internal/cli/feedback/stdio.go:35 +msgid "available only in text format" +msgstr "" + +#: commands/upload/upload.go:699 +msgid "binary file not found in %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:305 +msgid "board %s not found" +msgstr "" + +#: internal/cli/board/listall.go:37 internal/cli/board/search.go:36 +msgid "boardname" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:155 +msgid "built-in libraries directory not set" +msgstr "" + +#: arduino/discovery/discovery.go:346 arduino/discovery/discovery.go:369 +#: arduino/discovery/discovery.go:391 arduino/discovery/discovery.go:431 +#: arduino/discovery/discovery.go:457 +msgid "calling %[1]s: %[2]w" +msgstr "" + +#: arduino/cores/status.go:124 arduino/cores/status.go:151 +msgid "can't find latest release of %s" +msgstr "" + +#: commands/instances.go:360 +msgid "can't find latest release of tool %s" +msgstr "" + +#: arduino/sketch/sketch.go:106 +msgid "can't find main Sketch file in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:825 +msgid "can't find pattern for discovery with id %s" +msgstr "" + +#: executils/output.go:52 +msgid "can't retrieve standard error stream: %s" +msgstr "" + +#: executils/output.go:34 +msgid "can't retrieve standard output stream: %s" +msgstr "" + +#: arduino/builder/detector/detector.go:91 +msgid "candidates" +msgstr "" + +#: commands/upload/upload.go:656 commands/upload/upload.go:663 +msgid "cannot execute upload tool: %s" +msgstr "" + +#: arduino/resources/install.go:39 +msgid "checking local archive integrity" +msgstr "" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:85 +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:89 +msgid "cleaning build path" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "command" +msgstr "" + +#: arduino/monitor/monitor.go:150 +msgid "command '%[1]s' failed: %[2]s" +msgstr "" + +#: arduino/discovery/discovery.go:350 arduino/discovery/discovery.go:373 +#: arduino/discovery/discovery.go:395 arduino/discovery/discovery.go:435 +#: arduino/discovery/discovery.go:461 +msgid "command failed: %s" +msgstr "" + +#: arduino/discovery/discovery.go:348 arduino/discovery/discovery.go:352 +#: arduino/discovery/discovery.go:371 arduino/discovery/discovery.go:375 +#: arduino/discovery/discovery.go:393 arduino/discovery/discovery.go:397 +#: arduino/discovery/discovery.go:433 arduino/discovery/discovery.go:459 +#: arduino/discovery/discovery.go:463 arduino/monitor/monitor.go:147 +#: arduino/monitor/monitor.go:153 +msgid "communication out of sync, expected '%[1]s', received '%[2]s'" +msgstr "" + +#: arduino/resources/checksums.go:75 +msgid "computing hash: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:145 +msgid "copying library to destination directory:" +msgstr "" + +#: commands/upload/upload.go:771 +msgid "could not find a valid build artifact" +msgstr "" + +#: commands/core/install.go:62 +msgid "could not overwrite" +msgstr "" + +#: commands/lib/install.go:133 +msgid "could not remove old library" +msgstr "" + +#: arduino/sketch/yaml.go:78 arduino/sketch/yaml.go:82 +#: arduino/sketch/yaml.go:86 +msgid "could not update sketch project file" +msgstr "" + +#: arduino/builder/core.go:133 +msgid "creating core cache folder: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:216 +msgid "creating installed.json in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:44 arduino/resources/install.go:48 +msgid "creating temp dir for extraction: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:190 +msgid "data section exceeds available space in board" +msgstr "" + +#: commands/lib/resolve_deps.go:56 +msgid "dependency '%s' is not available" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:126 +msgid "destination already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:93 +msgid "destination dir %s already exists, cannot install" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:142 +msgid "destination directory already exists" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:282 +msgid "directory doesn't exist: %s" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:190 +msgid "discovery %[1]s process not started: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:756 +msgid "discovery %s not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:760 +msgid "discovery %s not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:698 +msgid "discovery release not found: %s" +msgstr "" + +#: internal/cli/core/download.go:39 internal/cli/core/install.go:41 +msgid "download a specific version (in this case 1.6.9)." +msgstr "" + +#: internal/cli/core/download.go:38 internal/cli/core/install.go:39 +msgid "download the latest version of Arduino SAMD core." +msgstr "" + +#: internal/cli/feedback/rpc_progress.go:73 +msgid "downloaded" +msgstr "" + +#: commands/instances.go:138 +msgid "downloading %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/fqbn.go:48 +msgid "empty board identifier" +msgstr "" + +#: arduino/sketch/sketch.go:92 +msgid "error loading sketch project file:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:650 +msgid "error opening %s" +msgstr "" + +#: internal/cli/config/set.go:67 +msgid "error parsing value: %v" +msgstr "" + +#: arduino/sketch/profiles.go:193 +msgid "error parsing version constraints" +msgstr "" + +#: commands/board/list.go:116 +msgid "error processing response from server" +msgstr "" + +#: commands/board/list.go:96 +msgid "error querying Arduino Cloud Api" +msgstr "" + +#: arduino/resources/install.go:67 +msgid "extracting archive: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:183 +msgid "extracting archive: %w" +msgstr "" + +#: arduino/resources/checksums.go:144 +msgid "failed to compute hash of file \"%s\"" +msgstr "" + +#: commands/board/list.go:91 +msgid "failed to initialize http client" +msgstr "" + +#: arduino/resources/checksums.go:96 +msgid "fetched archive size differs from size specified in index" +msgstr "" + +#: arduino/resources/install.go:128 +msgid "files in archive must be placed in a subdirectory" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:61 +msgid "finding absolute path of %s" +msgstr "" + +#: internal/cli/cli.go:72 +msgid "flags" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:100 +msgid "following symlink %s" +msgstr "" + +#: internal/cli/lib/download.go:39 +msgid "for a specific version." +msgstr "" + +#: internal/cli/lib/check_deps.go:40 internal/cli/lib/download.go:38 +#: internal/cli/lib/install.go:48 +msgid "for the latest version." +msgstr "" + +#: internal/cli/lib/check_deps.go:41 internal/cli/lib/install.go:49 +#: internal/cli/lib/install.go:51 +msgid "for the specific version." +msgstr "" + +#: internal/inventory/inventory.go:68 +msgid "generating installation.id: %w" +msgstr "" + +#: internal/inventory/inventory.go:74 +msgid "generating installation.secret: %w" +msgstr "" + +#: arduino/resources/download.go:53 +msgid "getting archive file info: %s" +msgstr "" + +#: arduino/resources/checksums.go:93 +msgid "getting archive info: %s" +msgstr "" + +#: arduino/resources/checksums.go:66 arduino/resources/checksums.go:89 +#: arduino/resources/download.go:34 arduino/resources/helpers.go:38 +#: arduino/resources/install.go:55 +msgid "getting archive path: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:311 +msgid "getting build properties for board %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:106 +msgid "getting discovery dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:114 +msgid "getting monitor dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:711 +msgid "getting parent dir of %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:99 +msgid "getting tool dependencies for platform %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:153 +msgid "install directory not set" +msgstr "" + +#: commands/instances.go:142 +msgid "installing %[1]s tool: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:208 +msgid "installing platform %[1]s: %[2]s" +msgstr "" + +#: internal/cli/feedback/terminal.go:36 +msgid "interactive terminal not supported for the '%s' output format" +msgstr "" + +#: arduino/sketch/profiles.go:191 +msgid "invalid '%s' directive" +msgstr "" + +#: arduino/discovery/discovery.go:212 +msgid "invalid 'add' message: missing port" +msgstr "" + +#: arduino/discovery/discovery.go:222 +msgid "invalid 'remove' message: missing port" +msgstr "" + +#: arduino/resources/checksums.go:44 +msgid "invalid checksum format: %s" +msgstr "" + +#: arduino/cores/fqbn.go:54 arduino/cores/fqbn.go:59 +msgid "invalid config option: %s" +msgstr "" + +#: internal/cli/arguments/reference.go:90 +msgid "invalid empty core architecture '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:67 +msgid "invalid empty core argument" +msgstr "" + +#: internal/cli/arguments/reference.go:86 +msgid "invalid empty core name '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:71 +msgid "invalid empty core reference '%s'" +msgstr "" + +#: internal/cli/arguments/reference.go:76 +msgid "invalid empty core version: '%s'" +msgstr "" + +#: internal/cli/lib/args.go:49 +msgid "invalid empty library name" +msgstr "" + +#: internal/cli/lib/args.go:54 +msgid "invalid empty library version: %s" +msgstr "" + +#: arduino/cores/board.go:142 +msgid "invalid empty option found" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:272 +msgid "invalid git url" +msgstr "" + +#: arduino/resources/checksums.go:48 +msgid "invalid hash '%[1]s': %[2]s" +msgstr "" + +#: internal/cli/arguments/reference.go:83 +msgid "invalid item %s" +msgstr "" + +#: arduino/sketch/profiles.go:225 +msgid "invalid library directive:" +msgstr "" + +#: arduino/libraries/libraries_layout.go:65 +msgid "invalid library layout: %s" +msgstr "" + +#: arduino/libraries/libraries_location.go:88 +msgid "invalid library location: %s" +msgstr "" + +#: arduino/libraries/loader.go:139 +msgid "invalid library: no header files found" +msgstr "" + +#: arduino/cores/board.go:145 +msgid "invalid option '%s'" +msgstr "" + +#: internal/cli/arguments/show_properties.go:51 +msgid "invalid option '%s'." +msgstr "" + +#: internal/inventory/inventory.go:93 +msgid "invalid path creating config dir: %[1]s error: %[2]w" +msgstr "" + +#: internal/inventory/inventory.go:99 +msgid "invalid path writing inventory file: %[1]s error: %[2]w" +msgstr "" + +#: arduino/cores/packageindex/index.go:283 +msgid "invalid platform archive size: %s" +msgstr "" + +#: arduino/sketch/profiles.go:195 +msgid "invalid platform identifier" +msgstr "" + +#: arduino/sketch/profiles.go:205 +msgid "invalid platform index URL:" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:363 +msgid "invalid pluggable monitor reference: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:123 +msgid "invalid port configuration value for %s: %s" +msgstr "" + +#: internal/cli/monitor/monitor.go:131 +msgid "invalid port configuration: %s" +msgstr "" + +#: commands/upload/upload.go:643 +msgid "invalid recipe '%[1]s': %[2]s" +msgstr "" + +#: commands/sketch/new.go:86 +msgid "" +"invalid sketch name \"%[1]s\": the first character must be alphanumeric or " +"\"_\", the following ones can also contain \"-\" and \".\". The last one " +"cannot be \".\"." +msgstr "" + +#: arduino/cores/board.go:149 +msgid "invalid value '%[1]s' for option '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:273 +msgid "invalid version directory %s" +msgstr "" + +#: arduino/sketch/profiles.go:227 +msgid "invalid version:" +msgstr "" + +#: commands/daemon/settings.go:111 commands/daemon/settings.go:166 +msgid "key not found in settings" +msgstr "" + +#: internal/cli/core/search.go:45 +msgid "keywords" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:130 +msgid "library %s already installed" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:319 +msgid "library not valid" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:197 +msgid "library path does not exist: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:67 +msgid "listing serial ports" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:301 +#: arduino/cores/packagemanager/loader.go:310 +#: arduino/cores/packagemanager/loader.go:315 +msgid "loading %[1]s: %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:351 +msgid "loading boards: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:666 +msgid "loading bundled tools from %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:452 +#: arduino/cores/packagemanager/package_manager.go:467 +msgid "loading json index file %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:179 +#: arduino/libraries/librariesmanager/librariesmanager.go:202 +msgid "loading library from %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:54 +msgid "loading library.properties: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:250 +#: arduino/cores/packagemanager/loader.go:278 +msgid "loading platform release %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:197 +msgid "loading platform.txt" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:44 +msgid "loading required platform %s" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:60 +msgid "loading required tool %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:625 +msgid "loading tool release in %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:190 +msgid "looking for boards.txt in %s" +msgstr "" + +#: arduino/sketch/sketch.go:76 +msgid "main file missing from sketch: %s" +msgstr "" + +#: arduino/sketch/profiles.go:189 +msgid "missing '%s' directive" +msgstr "" + +#: arduino/resources/checksums.go:40 +msgid "missing checksum for: %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:413 +msgid "missing package %[1]s referenced by board %[2]s" +msgstr "" + +#: internal/cli/core/upgrade.go:86 +msgid "missing package index for %s, future updates cannot be guaranteed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:418 +msgid "missing platform %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:423 +msgid "missing platform release %[1]s:%[2]s referenced by board %[3]s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:709 +msgid "monitor release not found: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:201 +#: arduino/libraries/librariesmanager/install.go:250 +#: arduino/resources/install.go:96 +msgid "moving extracted archive to destination dir: %s" +msgstr "" + +#: commands/upload/upload.go:766 +msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" +msgstr "" + +#: arduino/sketch/sketch.go:68 +msgid "multiple main sketch files found (%[1]v, %[2]v)" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:320 +msgid "" +"no compatible version of %[1]s tools found for the current os, try " +"contacting %[2]s" +msgstr "" + +#: executils/process.go:40 +msgid "no executable specified" +msgstr "" + +#: commands/daemon/daemon.go:100 +msgid "no instance specified" +msgstr "" + +#: commands/upload/upload.go:721 +msgid "no sketch or build directory/file specified" +msgstr "" + +#: arduino/sketch/sketch.go:55 +msgid "no such file or directory" +msgstr "" + +#: arduino/resources/install.go:131 +msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" +msgstr "" + +#: commands/upload/upload.go:638 +msgid "no upload port provided" +msgstr "" + +#: arduino/sketch/sketch.go:274 +msgid "no valid sketch found in %[1]s: missing %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:128 +msgid "no versions available for the current OS, try contacting %s" +msgstr "" + +#: internal/cli/feedback/terminal.go:39 +msgid "not running in a terminal" +msgstr "" + +#: arduino/resources/checksums.go:71 arduino/resources/install.go:59 +msgid "opening archive file: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:266 +msgid "opening boards.txt" +msgstr "" + +#: arduino/serialutils/serialutils.go:38 +msgid "opening port at 1200bps" +msgstr "" + +#: arduino/security/signatures.go:83 +msgid "opening signature file: %s" +msgstr "" + +#: arduino/security/signatures.go:78 +msgid "opening target file: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:76 arduino/cores/status.go:89 +#: arduino/cores/status.go:114 arduino/cores/status.go:141 +msgid "package %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:481 +msgid "package '%s' not found" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:221 +msgid "parsing IDE bundled index" +msgstr "" + +#: arduino/cores/board.go:165 +#: arduino/cores/packagemanager/package_manager.go:252 +msgid "parsing fqbn: %s" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:72 +msgid "parsing library_index.json: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:181 +msgid "path is not a platform directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:80 +msgid "platform %[1]s not found in package %[2]s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:92 +msgid "platform %s has no available releases" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:298 +msgid "platform %s is not installed" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:176 +#: arduino/cores/packagemanager/install_uninstall.go:280 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 +msgid "platform not installed" +msgstr "" + +#: internal/cli/compile/compile.go:139 +msgid "please use --build-property instead." +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:126 +msgid "pluggable discovery already added: %s" +msgstr "" + +#: internal/cli/board/attach.go:34 +msgid "port" +msgstr "" + +#: internal/cli/arguments/port.go:125 +msgid "port not found: %[1]s %[2]s" +msgstr "" + +#: arduino/monitor/monitor.go:236 +msgid "protocol version not supported: requested %[1]d, got %[2]d" +msgstr "" + +#: arduino/discovery/discovery.go:354 +msgid "protocol version not supported: requested 1, got %d" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:716 +msgid "reading %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:170 +msgid "reading dir %[1]s: %[2]s" +msgstr "" + +#: arduino/libraries/loader.go:198 +msgid "reading directory %[1]s content: %[2]w" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:71 +#: arduino/cores/packagemanager/loader.go:153 +#: arduino/cores/packagemanager/loader.go:260 +#: arduino/cores/packagemanager/loader.go:617 +msgid "reading directory %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:292 +msgid "reading directory %s content: %w" +msgstr "" + +#: arduino/builder/sketch.go:89 +msgid "reading file %[1]s: %[2]s" +msgstr "" + +#: arduino/sketch/sketch.go:205 +msgid "reading files: %v" +msgstr "" + +#: arduino/libraries/librariesresolver/cpp.go:104 +msgid "reading lib headers: %s" +msgstr "" + +#: arduino/libraries/libraries.go:228 +msgid "reading lib src dir: %s" +msgstr "" + +#: arduino/libraries/libraries.go:116 +msgid "reading library headers: %w" +msgstr "" + +#: arduino/libraries/librariesindex/json.go:66 +msgid "reading library_index.json: %s" +msgstr "" + +#: arduino/resources/install.go:121 +msgid "reading package root dir: %s" +msgstr "" + +#: commands/upload/upload.go:632 +msgid "recipe not found '%s'" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:557 +msgid "release %[1]s not found for tool %[2]s" +msgstr "" + +#: arduino/cores/status.go:83 arduino/cores/status.go:107 +#: arduino/cores/status.go:134 +msgid "release cannot be nil" +msgstr "" + +#: arduino/resources/download.go:44 +msgid "removing corrupted archive file: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/install.go:156 +msgid "removing library directory: %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:293 +msgid "removing platform files: %s" +msgstr "" + +#: arduino/cores/packagemanager/download.go:87 +msgid "required version %[1]s not found for platform %[2]s" +msgstr "" + +#: arduino/security/signatures.go:74 +msgid "retrieving Arduino public keys: %s" +msgstr "" + +#: arduino/libraries/loader.go:116 arduino/libraries/loader.go:154 +msgid "scanning examples: %s" +msgstr "" + +#: arduino/cores/packagemanager/loader.go:702 +msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s" +msgstr "" + +#: arduino/resources/install.go:73 +msgid "searching package root dir: %s" +msgstr "" + +#: arduino/serialutils/serialutils.go:48 +msgid "setting DTR to OFF" +msgstr "" + +#: commands/sketch/new.go:78 +msgid "sketch name cannot be empty" +msgstr "" + +#: commands/sketch/new.go:91 +msgid "sketch name cannot be the reserved name \"%[1]s\"" +msgstr "" + +#: commands/sketch/new.go:81 +msgid "" +"sketch name too long (%[1]d characters). Maximum allowed length is %[2]d" +msgstr "" + +#: arduino/sketch/sketch.go:48 arduino/sketch/sketch.go:53 +msgid "sketch path is not valid" +msgstr "" + +#: internal/cli/board/attach.go:34 internal/cli/sketch/archive.go:37 +msgid "sketchPath" +msgstr "" + +#: legacy/builder/create_cmake_rule.go:118 +msgid "source is not a directory" +msgstr "" + +#: arduino/discovery/discoverymanager/discoverymanager.go:194 +msgid "starting discovery %s" +msgstr "" + +#: arduino/resources/checksums.go:118 +msgid "testing archive checksum: %s" +msgstr "" + +#: arduino/resources/checksums.go:111 +msgid "testing archive size: %s" +msgstr "" + +#: arduino/resources/checksums.go:105 +msgid "testing if archive is cached: %s" +msgstr "" + +#: arduino/resources/install.go:37 +msgid "testing local archive integrity: %s" +msgstr "" + +#: arduino/builder/sizer/sizer.go:185 +msgid "text section exceeds available space in board" +msgstr "" + +#: arduino/builder/detector/detector.go:211 +#: arduino/builder/preprocessor/ctags.go:70 +msgid "the compilation database may be incomplete or inaccurate" +msgstr "" + +#: commands/core/list.go:63 +msgid "the platform has no releases" +msgstr "" + +#: commands/board/list.go:103 +msgid "the server responded with status %s" +msgstr "" + +#: arduino/monitor/monitor.go:140 +msgid "timeout waiting for message" +msgstr "" + +#: arduino/discovery/discovery.go:251 +msgid "timeout waiting for message from %s" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:386 +msgid "tool %s is not managed by package manager" +msgstr "" + +#: arduino/cores/status.go:93 arduino/cores/status.go:118 +#: arduino/cores/status.go:145 +msgid "tool %s not found" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:507 +msgid "tool '%[1]s' not found in package '%[2]s'" +msgstr "" + +#: arduino/cores/packagemanager/install_uninstall.go:381 +msgid "tool not installed" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:687 +#: arduino/cores/packagemanager/package_manager.go:793 +msgid "tool release not found: %s" +msgstr "" + +#: arduino/cores/status.go:97 +msgid "tool version %s not found" +msgstr "" + +#: commands/lib/install.go:61 +msgid "" +"two different versions of the library %[1]s are required: %[2]s and %[3]s" +msgstr "" + +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 +msgid "unable to compute relative path to the sketch for the item" +msgstr "" + +#: arduino/builder/sketch.go:53 +msgid "unable to create a folder to save the sketch" +msgstr "" + +#: arduino/builder/sketch.go:132 +msgid "unable to create the folder containing the item" +msgstr "" + +#: internal/cli/config/dump.go:59 +msgid "unable to marshal config to YAML: %v" +msgstr "" + +#: arduino/builder/sketch.go:170 +msgid "unable to read contents of the destination item" +msgstr "" + +#: arduino/builder/sketch.go:143 +msgid "unable to read contents of the source item" +msgstr "" + +#: arduino/builder/sketch.go:153 +msgid "unable to write to destination file" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:286 +msgid "unknown package %s" +msgstr "" + +#: arduino/cores/packagemanager/package_manager.go:293 +msgid "unknown platform %s:%s" +msgstr "" + +#: arduino/sketch/sketch.go:147 +msgid "unknown sketch file extension '%s'" +msgstr "" + +#: arduino/resources/checksums.go:61 +msgid "unsupported hash algorithm: %s" +msgstr "" + +#: internal/cli/core/upgrade.go:43 +msgid "upgrade arduino:samd to the latest version" +msgstr "" + +#: internal/cli/core/upgrade.go:41 +msgid "upgrade everything to the latest version" +msgstr "" + +#: commands/upload/upload.go:667 +msgid "uploading error: %s" +msgstr "" + +#: arduino/libraries/librariesmanager/librariesmanager.go:153 +msgid "user directory not set" +msgstr "" + +#: internal/cli/feedback/terminal.go:73 +msgid "user input not supported for the '%s' output format" +msgstr "" + +#: internal/cli/feedback/terminal.go:76 +msgid "user input not supported in non interactive mode" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:176 +msgid "version %s not available for this operating system" +msgstr "" + +#: arduino/cores/packagemanager/profiles.go:155 +msgid "version %s not found" +msgstr "" + +#: commands/board/list.go:121 +msgid "wrong format in server response" +msgstr "" diff --git a/i18n/data/pl.po b/i18n/data/pl.po index 2a33aaa8ca0..7b895fe9a12 100644 --- a/i18n/data/pl.po +++ b/i18n/data/pl.po @@ -15,7 +15,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "%[1]sfolder nie jest już wspierany,.Zobacz %[2]spo więcej informacji" @@ -27,7 +27,7 @@ msgstr "%[1]snieprawidłowe, przebudowywuję całość" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]sjest wymagane ale %[2]s jest obecnie zaistalowane" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "Brakujący wzorzec %[1]s" @@ -51,7 +51,7 @@ msgstr "%[1]s, wersja protokołu %[2]d" msgid "%s already downloaded" msgstr "%sjuż pobrane" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s oraz %s nie mogą być razem użyte" @@ -156,7 +156,7 @@ msgstr "" msgid "Already installed %s" msgstr "" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "" @@ -164,7 +164,7 @@ msgstr "" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -180,7 +180,7 @@ msgstr "Architektura: %s" msgid "Archive already exists" msgstr "" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Archiwizowanie budowanego rdzenia (buforowanie) w: %[1]s" @@ -265,7 +265,7 @@ msgstr "Nazwa płytki:" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Podany nieistniejący plik programu rozruchowego: %[1]s" @@ -314,11 +314,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -358,7 +358,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -400,7 +400,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -408,19 +408,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Kompilowanie szkicu..." @@ -437,7 +437,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -455,7 +455,7 @@ msgstr "" msgid "Connected" msgstr "" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -471,11 +471,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -501,7 +501,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -537,7 +537,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Domyślne" @@ -571,7 +571,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -684,7 +684,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -700,11 +700,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -712,7 +712,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -765,7 +765,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -775,8 +775,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -784,7 +784,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -804,7 +804,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -820,11 +820,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -836,11 +836,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -904,15 +904,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -956,7 +956,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -984,17 +984,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1002,7 +1002,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1022,7 +1022,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1036,15 +1036,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1072,7 +1072,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1080,7 +1080,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1109,9 +1109,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1143,7 +1141,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1151,7 +1149,7 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1160,12 +1158,12 @@ msgstr "" "pozostawiając %[4]s bajtów dla zmiennych lokalnych. Maksimum to %[2]s " "bajtów." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Zmienne globalne używają %[1]s bajtów pamięci dynamicznej." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1235,7 +1233,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1274,15 +1272,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1330,7 +1328,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1369,7 +1367,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1395,7 +1393,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1412,7 +1410,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1467,7 +1465,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "" "Niski poziom dostępnej pamięci, mogą wystąpić problemy ze stabilnością." @@ -1485,7 +1483,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "Brakuje '%[1]s' z biblioteki w %[2]s" @@ -1509,7 +1507,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1525,7 +1523,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Znaleziono wiele bibliotek w \"%[1]s\"" @@ -1539,7 +1537,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1589,7 +1587,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1597,13 +1595,13 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "Niewystarczająca ilość pamięci; sprawdź %[1]s w poszukiwaniu rozwiązania " "problemu" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Niewykorzystane: %[1]s" @@ -1621,7 +1619,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1704,7 +1702,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1730,7 +1728,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1742,7 +1740,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1764,7 +1762,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1812,7 +1810,7 @@ msgstr "" msgid "Port" msgstr "Port" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1820,8 +1818,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1897,7 +1894,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1907,7 +1904,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1947,6 +1944,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1961,7 +1962,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1973,7 +1974,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2054,7 +2055,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2068,11 +2069,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "Szkic za duży, zobacz porady na %[1]s w celu zmiejszenia go." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2086,23 +2087,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2154,7 +2155,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2180,7 +2181,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2227,7 +2228,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2247,7 +2248,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2353,15 +2354,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2377,7 +2378,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2396,27 +2397,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Wykorzystane: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2428,17 +2429,15 @@ msgstr "Użycie biblioteki %[1]s w wersji %[2]s z folderu: %[3]s %[4]s" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "Użycie biblioteki %[1]s z folderu %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Użycie wcześniej skompilowanego pliku: %[1]s" @@ -2450,7 +2449,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2459,7 +2458,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2476,7 +2475,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2489,11 +2488,11 @@ msgstr "" "może nie być kompatybilna z obecną płytką która działa na " "architekturze(/architekturach) %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2536,11 +2535,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2548,7 +2547,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2594,11 +2593,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2642,7 +2641,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2659,7 +2658,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2671,7 +2670,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2679,7 +2678,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2983,7 +2982,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3121,7 +3120,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3143,7 +3142,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3155,7 +3154,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3231,7 +3230,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3247,7 +3246,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3282,7 +3281,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3310,7 +3309,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3380,7 +3379,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3404,12 +3403,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3460,19 +3459,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3480,19 +3475,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3520,7 +3511,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3528,11 +3519,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/pt.po b/i18n/data/pt.po index 0f76c7a12c3..0ec645ebac5 100644 --- a/i18n/data/pt.po +++ b/i18n/data/pt.po @@ -15,7 +15,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s%[5]s%[4]sData%[3]scomprometer%[2]sVersão" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "%[1]spasta não é mais suportada! Ver%[2]sPara maiores informações" @@ -27,7 +27,7 @@ msgstr "%[1]sinválido, refazendo tudo" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s‎é necessário, mas‎%[2]snão é instalado em nenhum momento." -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]so padrão está faltando" @@ -51,7 +51,7 @@ msgstr "%[2]d%[1]s, versão do protocolo:" msgid "%s already downloaded" msgstr "%s‎já baixado‎" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%se%s‎não pode ser usado em conjunto‎" @@ -163,7 +163,7 @@ msgstr "Todos os Núcleos já estão na versão mais recente" msgid "Already installed %s" msgstr "%s‎Já instalado‎" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "%[1]sAlternativas para‎%[2]s:" @@ -171,7 +171,7 @@ msgstr "%[1]sAlternativas para‎%[2]s:" msgid "An error occurred adding prototypes" msgstr "‎Ocorreu um erro ao adicionar os protótipos‎" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "‎Ocorreu um erro na detecção de bibliotecas‎" @@ -187,7 +187,7 @@ msgstr "%sArquitetura:‎" msgid "Archive already exists" msgstr "O Arquivo já existe" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "%[1]sArquivando núcleo construído (cache) em:" @@ -276,7 +276,7 @@ msgstr "Nome da Placa:" msgid "Board version:" msgstr "Versão da Placa:" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "" "Um Arquivo carregador de inicialização definido, mas está faltando: %[1]s" @@ -328,11 +328,11 @@ msgstr "Não é possível escrever para o arquivo de configuração: %v" msgid "Can't write debug log: %s" msgstr "Não é possível escrever para o arquivo de depuração: %s" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "Não é possível criar Build do diretório de Cache" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "Não é possível criar Build do diretório" @@ -372,7 +372,7 @@ msgstr "Não é possível instalar plataforma" msgid "Cannot install tool %s" msgstr "Não é possível instalar ferramenta %s" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "Não é possível realizar redefinição de porta: %s" @@ -418,7 +418,7 @@ msgstr "" "Comando continua a executar e a imprimir lista de placas conectadas sempre " "que ocorrer uma mudança." -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "Esboço compilado não encontrado em %s" @@ -426,19 +426,19 @@ msgstr "Esboço compilado não encontrado em %s" msgid "Compiles Arduino sketches." msgstr "Compila esboços Arduino." -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "Compilando núcleo..." -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "Compilando bibliotecas..." -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "%[1]s‎Biblioteca de compilação‎ \"\"" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Compilando sketch..." @@ -457,7 +457,7 @@ msgstr "%s‎Arquivo Config escrito para:‎" msgid "Configuration options for %s" msgstr "Opções de configuração para %s" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -477,7 +477,7 @@ msgstr "Configurando ferramenta." msgid "Connected" msgstr "Conectado" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "Conectado para %s! Aperte CTRL-C para sair." @@ -493,11 +493,11 @@ msgstr "Não foi possível conectar via HTTP" msgid "Could not create index directory" msgstr "Não foi possível criar diretório Index" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "Não foi possível fazer o Cache profundo para a Build central: %[1]s" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "Não foi possível determinar o tamanho do programa" @@ -525,7 +525,7 @@ msgstr "" "Cria ou atualiza o arquivo de configuração no diretório de dados ou em um " "diretório customizado com as definições de configuração atuais." -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -565,7 +565,7 @@ msgstr "Depuramento não é suportado para a placa %s" msgid "Debugging supported:" msgstr "Depuramento suportado:" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "Padrão" @@ -603,7 +603,7 @@ msgstr "Dependências: %s" msgid "Description" msgstr "Descrição" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "Detectando bibliotecas utilizadas..." @@ -719,7 +719,7 @@ msgstr "Insira URL git para bibliotecas hospedadas em repositórios" msgid "Error adding file to sketch archive" msgstr "Erro ao adicionar arquivo de esboço para o depósito de documentos" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "Erro ao adicionar Build do Núcleo (caching) em %[1]s:%[2]s" @@ -735,11 +735,11 @@ msgstr "Erro ao calcular caminho de arquivo relativo" msgid "Error cleaning caches: %v" msgstr "Erro ao limpar caches: %v" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "Erro ao converter caminho para absoluto: %v" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "Erro ao copiar arquivo de saída %s" @@ -747,7 +747,7 @@ msgstr "Erro ao copiar arquivo de saída %s" msgid "Error creating instance: %v" msgstr "Erro ao criar instância: %v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "Erro ao criar diretório de saída" @@ -800,7 +800,7 @@ msgstr "Erro ao baixar ferramenta %s" msgid "Error during Debug: %v" msgstr "Erro durante Depuramento: %v" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "Erro durante detecção FQBN: %v" @@ -810,8 +810,8 @@ msgstr "Erro durante codificação da saída JSON: %v" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "Erro durante envio: %v" @@ -819,7 +819,7 @@ msgstr "Erro durante envio: %v" msgid "Error during YAML encoding of the output: %v" msgstr "Erro durante codificação da saída YAML: %v" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "Erro durante build: %v" @@ -839,7 +839,7 @@ msgstr "Erro durante atualização: %v" msgid "Error extracting %s" msgstr "Erro ao extrair %s" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "Erro ao buscar por artefatos da Build" @@ -855,12 +855,12 @@ msgstr "Erro ao obter caminho absoluto do arquivo de esboço" msgid "Error getting board details: %v" msgstr "Erro ao obter detalhes da placa: %v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" "Erro ao obter o diretório atual para o banco de dados de compilação: %s" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "Erro ao obter informações da biblioteca %s" @@ -872,11 +872,11 @@ msgstr "Erro ao obter informações sobre as bibliotecas: %v" msgid "Error getting port metadata: %v" msgstr "Erro ao obter metadata da porta: %v" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "Erro ao obter detalhes das configurações da porta: %s" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "Erro ao obter entrada do usuário" @@ -940,15 +940,15 @@ msgstr "Erro ao abrir %s" msgid "Error opening debug logging file: %s" msgstr "Erro ao abrir arquivo de registro de depuração: %s" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "Erro ao abrir arquivo de dados que sobrescrevem o código fonte: %v" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "Erro ao fazer análise sintática na flag --show-properties: %v" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "Erro ao ler diretório de build" @@ -992,7 +992,7 @@ msgstr "Erro ao buscar por bibliotecas: %v" msgid "Error searching for platforms: %v" msgstr "Erro ao buscar por plataformas: %v" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "Erro ao serializar compilação do banco de dados: %s" @@ -1020,17 +1020,17 @@ msgstr "Erro ao atualizar plataforma: %s" msgid "Error verifying signature" msgstr "Erro ao verificar assinatura" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "Erro ao detectar bibliotecas incluídas por %[1]s" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "Erro ao determinar tamanho do esboço: %s" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "Erro ao escrever compilação de banco de dados: %s" @@ -1038,7 +1038,7 @@ msgstr "Erro ao escrever compilação de banco de dados: %s" msgid "Error: command description is not supported by %v" msgstr "Erro: descrição de comando não suportado por %v" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "Erro: arquivo de dados que sobrescrevem o código fonte inválido: %v" @@ -1058,7 +1058,7 @@ msgstr "Exemplos:" msgid "Executable to debug" msgstr "Executável para depurar" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" "Um esboço compilado era esperado no diretório %s, mas um arquivo foi " @@ -1074,15 +1074,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "Falha ao apagar chip" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "Falha ao programar" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "Falha ao gravar carregador de inicialização" @@ -1110,7 +1110,7 @@ msgstr "Falha ao ouvir porta TCP: %[1]s. Erro inesperado: %[2]v" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "Falha ao ouvir porta TCP: %s. Endereço já está em uso." -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "Falha ao enviar" @@ -1118,7 +1118,7 @@ msgstr "Falha ao enviar" msgid "File:" msgstr "Arquivo:" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1154,12 +1154,8 @@ msgstr "" "no modo interativo)." #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" -"Plataforma %d encontrada para a referência \"%s\":\n" -"%s" #: internal/cli/arguments/fqbn.go:37 msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" @@ -1190,7 +1186,7 @@ msgstr "Gera scripts de conclusão" msgid "Generates completion scripts for various shells" msgstr "Gera scripts de conclusão para várias Shells" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "Gerando protótipos de função..." @@ -1198,7 +1194,7 @@ msgstr "Gerando protótipos de função..." msgid "Global Flags:" msgstr "Flags Globais:" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1206,12 +1202,12 @@ msgstr "" "Variáveis globais usam %[1]s bytes (%[3]s%%) de memória dinâmica, restando " "%[4]s bytes para variáveis locais. O maximo é %[2]s bytes." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Variáveis globais usam %[1]s bytes de memória dinâmica." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1287,7 +1283,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "Instala uma ou mais bibliotecas especificadas no sistema." -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "Erro interno no Cache" @@ -1330,15 +1326,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "Argumento inválido passado: %v" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "Propriedades de compilação inválidas" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "Tamanho de dados para regexp inválida: %s" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "Regexp de tamanho EEPROM inválida: %s" @@ -1386,7 +1382,7 @@ msgstr "Perfil inválido" msgid "Invalid recipe in platform.txt" msgstr "Receita inválida em platform.txt" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "Tamanho de regexp inválido: %s" @@ -1427,7 +1423,7 @@ msgstr "NOME_BIBLIOTECA" msgid "Latest" msgstr "Mais recente" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "A biblioteca %[1]s foi declarada como pré-compilada:" @@ -1454,7 +1450,7 @@ msgstr "A biblioteca %s não foi encontrada" msgid "Library '%s' not found" msgstr "A biblioteca '%s' não foi encontrada" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1473,7 +1469,7 @@ msgstr "Biblioteca instalada" msgid "License: %s" msgstr "Licença: %s" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "Vinculando tudo..." @@ -1534,7 +1530,7 @@ msgstr "Carregando arquivo Index: %v" msgid "Location" msgstr "Localização" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "Pouca memória disponível, podem ocorrer problemas de estabilidade." @@ -1552,7 +1548,7 @@ msgid "" msgstr "" "Mensagens com esse nível e acima serão registradas. Níveis válidos são: %s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "'%[1]s' está faltando da biblioteca em %[2]s" @@ -1576,7 +1572,7 @@ msgstr "Protocolo de porta faltando" msgid "Missing programmer" msgstr "Programador faltando" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "Tamanho de regexp faltando" @@ -1592,7 +1588,7 @@ msgstr "Monitor '%s' não encontrado" msgid "Monitor port settings:" msgstr "Configurações da porta do monitor:" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Múltiplas bibliotecas foram encontradas para \"%[1]s\"" @@ -1606,7 +1602,7 @@ msgstr "Nome" msgid "Name: \"%s\"" msgstr "Nome: \"%s\"" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1658,7 +1654,7 @@ msgstr "Nenhuma plataforma instalada." msgid "No platforms matching your search." msgstr "Nenhuma plataforma correspondente à sua busca." -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "Nenhuma porta de envio encontrada, usando %s como reserva" @@ -1666,13 +1662,13 @@ msgstr "Nenhuma porta de envio encontrada, usando %s como reserva" msgid "No valid dependencies solution found" msgstr "Sem solução válida para dependências encontrada " -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "" "Memória insuficiente: veja %[1]s para sugestões sobre como reduzir a sua " "pegada." -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Não utilizado: %[1]s" @@ -1692,7 +1688,7 @@ msgstr "" "Esconder detalhes da biblioteca para todas as versões exceto a mais recente " "(produz uma saída JSON mais compacta)." -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "Abra uma porta de comunicação com a placa." @@ -1785,7 +1781,7 @@ msgstr "Website do pacote:" msgid "Paragraph: %s" msgstr "Parágrafo: %s" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "Caminho" @@ -1817,7 +1813,7 @@ msgstr "" "Caminho para onde salvar arquivos compilados. Se omitido, um diretório vai " "ser criado no caminho temporário padrão do seu SO." -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "Executando toque de redefinição de 1200-bps na porta serial %s" @@ -1829,7 +1825,7 @@ msgstr "Plataforma %s já está instalada" msgid "Platform %s installed" msgstr "Plataforma %s instalada" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1853,7 +1849,7 @@ msgstr "Plataforma '%s' não encontrada" msgid "Platform ID" msgstr "ID da Plataforma" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "ID da Plataforma incorreto" @@ -1905,7 +1901,7 @@ msgstr "" msgid "Port" msgstr "Porta" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "Porta fechada: %v" @@ -1913,8 +1909,7 @@ msgstr "Porta fechada: %v" msgid "Port monitor error" msgstr "Erro no monitor de portas" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "Biblioteca pré-compilada em \"%[1]s\" não foi encontrada" @@ -1990,7 +1985,7 @@ msgstr "Ferramenta necessária:" msgid "Run as a daemon on port: %s" msgstr "Execute como um daemon na porta: %s" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" "Execute no modo silencioso e mostre apenas a entrada e a saída do monitor." @@ -2003,7 +1998,7 @@ msgstr "" "Ao executar como um daemon, a inicialização de núcleos e bibliotecas é feita" " apenas uma vez." -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "Executando compilação normal do núcleo..." @@ -2049,6 +2044,10 @@ msgstr "Sentença: %s" msgid "Server responded with: %s" msgstr "Servidor respondeu com: %s" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "Define um valor de configuração." @@ -2065,7 +2064,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "Define onde o arquivo de configuração deve ser salvo." -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "Configuração" @@ -2077,7 +2076,7 @@ msgstr "Chave de configuração não existe" msgid "Show all available core versions." msgstr "Mostre todas as versões de núcleo disponíveis." -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "Mostre todas as configurações da porta de comunicação." @@ -2173,7 +2172,7 @@ msgstr "Mostra o número de versão da CLI Arduino." msgid "Size (bytes):" msgstr "Tamanho (em bytes):" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2189,13 +2188,13 @@ msgstr "Esboço criado em: %s" msgid "Sketch profile to use" msgstr "Perfil de Esboço para utilizar" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "" "O rascunho é demasiado grande; veja %[1]s para técnicas de reduzir o " "ficheiro." -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2211,25 +2210,25 @@ msgstr "" "Esboços com a extensão. pde estão descontinuados. Por favor renomeie os " "seguintes arquivos para .ino:" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "Pule a vinculação da executável final." -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" "Pulando o toque de redefinição 1200-bps: nenhuma porta serial foi " "selecionada!" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "Pulando a criação de depósito de documentos de: %[1]s" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "Pulando a compilação de: %[1]s" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" "Pulando detecção de dependências para a biblioteca pré-compilada %[1]s" @@ -2289,7 +2288,7 @@ msgstr "" "A chave '%[1]v' não é uma lista de itens. Não é possível remover dela.\n" "Talvez tente usar '%[2]s'?" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "A biblioteca %s possui múltiplas instalações:" @@ -2324,7 +2323,7 @@ msgstr "" "e criptografar um resultado binário. Usado apenas por plataformas que " "possuem suporte." -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "A plataforma não suporta '%[1]s' para bibliotecas pré-compiladas." @@ -2378,7 +2377,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2398,7 +2397,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2504,15 +2503,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2528,7 +2527,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2547,27 +2546,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Utilizado: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2579,17 +2578,15 @@ msgstr "" msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "A usar a biblioteca %[1]s na directoria: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "A usar o ficheiro previamente compilado: %[1]s" @@ -2601,7 +2598,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2610,7 +2607,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2627,7 +2624,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2640,11 +2637,11 @@ msgstr "" "%[2]s e pode ser incompatível com a sua placa actual que é executada em " "arquitectura(s) %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2687,11 +2684,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2699,7 +2696,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2745,11 +2742,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2793,7 +2790,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2810,7 +2807,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2822,7 +2819,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2830,7 +2827,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -3134,7 +3131,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3272,7 +3269,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3294,7 +3291,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3306,7 +3303,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3382,7 +3379,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3398,7 +3395,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3433,7 +3430,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3461,7 +3458,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3531,7 +3528,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3555,12 +3552,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3613,20 +3610,16 @@ msgstr "" "%[1]s‎existem duas versões diferentes da biblioteca‎%[2]s‎são " "necessárias:‎%[3]se" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" "não é possível encontrar o caminho relativo para o esboço para o item‎" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "‎não é possível criar uma pasta para salvar o sketch" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "‎não é possível criar uma pasta para salvar o sketch" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "‎não é possível criar a pasta contendo o item‎" @@ -3634,19 +3627,15 @@ msgstr "‎não é possível criar a pasta contendo o item‎" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "‎não é possível de ler o conteúdo do item de destino‎" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "‎não é possível ler o conteúdo do item de origem‎" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "‎incapaz de salvar o sketch no disco‎" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "‎incapaz de escrever para o arquivo de destino‎" @@ -3674,7 +3663,7 @@ msgstr "‎atualizar arduino: samd para a versão mais recente‎" msgid "upgrade everything to the latest version" msgstr "‎atualizar tudo para a versão mais recente‎" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "%serro ao carregar" @@ -3682,11 +3671,11 @@ msgstr "%serro ao carregar" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/ru.po b/i18n/data/ru.po index bf919570cd9..51b04dcc1e6 100644 --- a/i18n/data/ru.po +++ b/i18n/data/ru.po @@ -15,7 +15,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s%[2]s Версия: %[3]s Фиксация: %[4]s Дата: %[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "Папка %[1]s более не поддерживается! Более подробно в %[2]s" @@ -27,7 +27,7 @@ msgstr "" msgid "%[1]s is required but %[2]s is currently installed." msgstr "Требуется %[1]s, но в данный момент устанавливается %[2]s" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s не найден шаблон" @@ -51,7 +51,7 @@ msgstr "%[1]s, версия протокола: %[2]d" msgid "%s already downloaded" msgstr "%s уже скачана" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s не может быть использована вместе с %s" @@ -157,7 +157,7 @@ msgstr "" msgid "Already installed %s" msgstr "" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "" @@ -165,7 +165,7 @@ msgstr "" msgid "An error occurred adding prototypes" msgstr "" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "" @@ -181,7 +181,7 @@ msgstr "" msgid "Archive already exists" msgstr "" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "Архивирование откомпилированного ядра (кэширование) в: %[1]s" @@ -266,7 +266,7 @@ msgstr "" msgid "Board version:" msgstr "" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "Файл загрузчика указан но не существует: %[1]s" @@ -315,11 +315,11 @@ msgstr "" msgid "Can't write debug log: %s" msgstr "" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "" @@ -359,7 +359,7 @@ msgstr "" msgid "Cannot install tool %s" msgstr "" -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "" @@ -401,7 +401,7 @@ msgid "" "a change." msgstr "" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "" @@ -409,19 +409,19 @@ msgstr "" msgid "Compiles Arduino sketches." msgstr "" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "Компиляция скетча..." @@ -438,7 +438,7 @@ msgstr "" msgid "Configuration options for %s" msgstr "" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -456,7 +456,7 @@ msgstr "" msgid "Connected" msgstr "" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "" @@ -472,11 +472,11 @@ msgstr "" msgid "Could not create index directory" msgstr "" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "" @@ -502,7 +502,7 @@ msgid "" "directory with the current configuration settings." msgstr "" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -538,7 +538,7 @@ msgstr "" msgid "Debugging supported:" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "По умолчанию" @@ -572,7 +572,7 @@ msgstr "" msgid "Description" msgstr "" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "" @@ -685,7 +685,7 @@ msgstr "" msgid "Error adding file to sketch archive" msgstr "" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "" @@ -701,11 +701,11 @@ msgstr "" msgid "Error cleaning caches: %v" msgstr "" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "" @@ -713,7 +713,7 @@ msgstr "" msgid "Error creating instance: %v" msgstr "" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "" @@ -766,7 +766,7 @@ msgstr "" msgid "Error during Debug: %v" msgstr "" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "" @@ -776,8 +776,8 @@ msgstr "" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "" @@ -785,7 +785,7 @@ msgstr "" msgid "Error during YAML encoding of the output: %v" msgstr "" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "" @@ -805,7 +805,7 @@ msgstr "" msgid "Error extracting %s" msgstr "" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "" @@ -821,11 +821,11 @@ msgstr "" msgid "Error getting board details: %v" msgstr "" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "" @@ -837,11 +837,11 @@ msgstr "" msgid "Error getting port metadata: %v" msgstr "" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "" @@ -905,15 +905,15 @@ msgstr "" msgid "Error opening debug logging file: %s" msgstr "" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "" @@ -957,7 +957,7 @@ msgstr "" msgid "Error searching for platforms: %v" msgstr "" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "" @@ -985,17 +985,17 @@ msgstr "" msgid "Error verifying signature" msgstr "" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "" @@ -1003,7 +1003,7 @@ msgstr "" msgid "Error: command description is not supported by %v" msgstr "" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "" @@ -1023,7 +1023,7 @@ msgstr "" msgid "Executable to debug" msgstr "" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "" @@ -1037,15 +1037,15 @@ msgstr "" msgid "FQBN:" msgstr "" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "" @@ -1073,7 +1073,7 @@ msgstr "" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "" @@ -1081,7 +1081,7 @@ msgstr "" msgid "File:" msgstr "" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1110,9 +1110,7 @@ msgid "" msgstr "" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" #: internal/cli/arguments/fqbn.go:37 @@ -1144,7 +1142,7 @@ msgstr "" msgid "Generates completion scripts for various shells" msgstr "" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "" @@ -1152,7 +1150,7 @@ msgstr "" msgid "Global Flags:" msgstr "" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." @@ -1160,12 +1158,12 @@ msgstr "" "Глобальные переменные используют %[1]s байт (%[3]s%%) динамической памяти, " "оставляя %[4]s байт для локальных переменных. Максимум: %[2]s байт." -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "Глобальные переменные используют %[1]s байт динамической памяти." #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "" @@ -1235,7 +1233,7 @@ msgstr "" msgid "Installs one or more specified libraries into the system." msgstr "" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "" @@ -1274,15 +1272,15 @@ msgstr "" msgid "Invalid argument passed: %v" msgstr "" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "" @@ -1330,7 +1328,7 @@ msgstr "" msgid "Invalid recipe in platform.txt" msgstr "" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "" @@ -1369,7 +1367,7 @@ msgstr "" msgid "Latest" msgstr "" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "" @@ -1395,7 +1393,7 @@ msgstr "" msgid "Library '%s' not found" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "" @@ -1412,7 +1410,7 @@ msgstr "" msgid "License: %s" msgstr "" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "" @@ -1467,7 +1465,7 @@ msgstr "" msgid "Location" msgstr "" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "Недостаточно памяти, программа может работать нестабильно." @@ -1484,7 +1482,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "Пропущен '%[1]s' из библиотеки в %[2]s" @@ -1508,7 +1506,7 @@ msgstr "" msgid "Missing programmer" msgstr "" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "" @@ -1524,7 +1522,7 @@ msgstr "" msgid "Monitor port settings:" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "Несколько библиотек найдено для \"%[1]s\"" @@ -1538,7 +1536,7 @@ msgstr "" msgid "Name: \"%s\"" msgstr "" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1588,7 +1586,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "" @@ -1596,11 +1594,11 @@ msgstr "" msgid "No valid dependencies solution found" msgstr "" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "Недостаточно памяти; прочитайте %[1]s" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "Не используется: %[1]s" @@ -1618,7 +1616,7 @@ msgid "" "compact JSON output)." msgstr "" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "" @@ -1701,7 +1699,7 @@ msgstr "" msgid "Paragraph: %s" msgstr "" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "" @@ -1727,7 +1725,7 @@ msgid "" "in the default temporary path of your OS." msgstr "" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "" @@ -1739,7 +1737,7 @@ msgstr "" msgid "Platform %s installed" msgstr "" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1761,7 +1759,7 @@ msgstr "" msgid "Platform ID" msgstr "" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "" @@ -1809,7 +1807,7 @@ msgstr "" msgid "Port" msgstr "Порт" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "" @@ -1817,8 +1815,7 @@ msgstr "" msgid "Port monitor error" msgstr "" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "" @@ -1894,7 +1891,7 @@ msgstr "" msgid "Run as a daemon on port: %s" msgstr "" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "" @@ -1904,7 +1901,7 @@ msgid "" "once." msgstr "" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "" @@ -1944,6 +1941,10 @@ msgstr "" msgid "Server responded with: %s" msgstr "" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "" @@ -1958,7 +1959,7 @@ msgstr "" msgid "Sets where to save the configuration file." msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "" @@ -1970,7 +1971,7 @@ msgstr "" msgid "Show all available core versions." msgstr "" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "" @@ -2051,7 +2052,7 @@ msgstr "" msgid "Size (bytes):" msgstr "" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2065,11 +2066,11 @@ msgstr "" msgid "Sketch profile to use" msgstr "" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "Скетч слишком большой; прочитайте %[1]s" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2083,23 +2084,23 @@ msgid "" "files to .ino:" msgstr "" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "" @@ -2151,7 +2152,7 @@ msgid "" "Maybe use '%[2]s'?" msgstr "" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "" @@ -2177,7 +2178,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "" @@ -2224,7 +2225,7 @@ msgstr "" msgid "Toolchain type" msgstr "" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "" @@ -2244,7 +2245,7 @@ msgstr "" msgid "URL:" msgstr "" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "" @@ -2350,15 +2351,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "" @@ -2374,7 +2375,7 @@ msgstr "" msgid "Upload the bootloader." msgstr "" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "" @@ -2393,27 +2394,27 @@ msgstr "" msgid "Use %s for more information about a command." msgstr "" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "Используется: %[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "" @@ -2425,17 +2426,15 @@ msgstr "Используем библиотеку %[1]s версии %[2]s из msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "Используем библиотеку %[1]s в папке: %[2]s %[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "Используем предварительно скомпилированный файл: %[1]s" @@ -2447,7 +2446,7 @@ msgstr "" msgid "VERSION_NUMBER" msgstr "" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "" @@ -2456,7 +2455,7 @@ msgstr "" msgid "Verify uploaded binary after the upload." msgstr "" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "" @@ -2473,7 +2472,7 @@ msgstr "" msgid "WARNING cannot configure tool: %s" msgstr "" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "" @@ -2485,11 +2484,11 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: библиотека %[1]s должна запускаться на архитектурах %[2]s и " "может быть несовместима с вашей платой на архитектуре %[3]s." -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "" @@ -2532,11 +2531,11 @@ msgstr "" msgid "archivePath" msgstr "" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "" @@ -2544,7 +2543,7 @@ msgstr "" msgid "available only in text format" msgstr "" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "" @@ -2590,11 +2589,11 @@ msgstr "" msgid "can't retrieve standard output stream: %s" msgstr "" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "" @@ -2638,7 +2637,7 @@ msgstr "" msgid "copying library to destination directory:" msgstr "" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "" @@ -2655,7 +2654,7 @@ msgstr "" msgid "could not update sketch project file" msgstr "" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "" @@ -2667,7 +2666,7 @@ msgstr "" msgid "creating temp dir for extraction: %s" msgstr "" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "" @@ -2675,7 +2674,7 @@ msgstr "" msgid "dependency '%s' is not available" msgstr "" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "" @@ -2979,7 +2978,7 @@ msgstr "" msgid "invalid port configuration: %s" msgstr "" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "" @@ -3117,7 +3116,7 @@ msgstr "" msgid "moving extracted archive to destination dir: %s" msgstr "" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "" @@ -3139,7 +3138,7 @@ msgstr "" msgid "no instance specified" msgstr "" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "" @@ -3151,7 +3150,7 @@ msgstr "" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "" @@ -3227,7 +3226,7 @@ msgstr "" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "" @@ -3243,7 +3242,7 @@ msgstr "" msgid "port" msgstr "" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "" @@ -3278,7 +3277,7 @@ msgstr "" msgid "reading directory %s content: %w" msgstr "" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "" @@ -3306,7 +3305,7 @@ msgstr "" msgid "reading package root dir: %s" msgstr "" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "" @@ -3376,7 +3375,7 @@ msgstr "" msgid "sketchPath" msgstr "" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "" @@ -3400,12 +3399,12 @@ msgstr "" msgid "testing local archive integrity: %s" msgstr "" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "" @@ -3456,19 +3455,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "" @@ -3476,19 +3471,15 @@ msgstr "" msgid "unable to marshal config to YAML: %v" msgstr "" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "" @@ -3516,7 +3507,7 @@ msgstr "" msgid "upgrade everything to the latest version" msgstr "" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "" @@ -3524,11 +3515,11 @@ msgstr "" msgid "user directory not set" msgstr "" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "" diff --git a/i18n/data/zh.po b/i18n/data/zh.po index cf34dff0a26..ac1cbf90d3c 100644 --- a/i18n/data/zh.po +++ b/i18n/data/zh.po @@ -17,7 +17,7 @@ msgstr "" msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" msgstr "%[1]s %[2]s 版本:%[3]s 提交:%[4]s 日期:%[5]s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:36 +#: arduino/builder/detector/detector.go:456 msgid "%[1]s folder is no longer supported! See %[2]s for more information" msgstr "%[1]s 文件夹不再受支持!有关详细信息,请参见 %[2]s" @@ -29,7 +29,7 @@ msgstr "%[1]s 无效,全部重建" msgid "%[1]s is required but %[2]s is currently installed." msgstr "%[1]s 是必需的,但当前已安装 %[2]s。" -#: legacy/builder/builder_utils/utils.go:438 +#: arduino/builder/utils/utils.go:311 msgid "%[1]s pattern is missing" msgstr "%[1]s 模式丢失" @@ -53,7 +53,7 @@ msgstr "%[1]s,协议版本:%[2]d" msgid "%s already downloaded" msgstr "%s 已经下载" -#: commands/upload/upload.go:684 +#: commands/upload/upload.go:689 msgid "%s and %s cannot be used together" msgstr "%s 和 %s 不能一起使用" @@ -158,7 +158,7 @@ msgstr "所有内核都是最新版本" msgid "Already installed %s" msgstr "已经安装 %s" -#: legacy/builder/container_find_includes.go:465 +#: arduino/builder/detector/detector.go:89 msgid "Alternatives for %[1]s: %[2]s" msgstr "%[1]s 的替代方案:%[2]s" @@ -166,7 +166,7 @@ msgstr "%[1]s 的替代方案:%[2]s" msgid "An error occurred adding prototypes" msgstr "添加原型时出错" -#: legacy/builder/container_find_includes.go:118 +#: arduino/builder/detector/detector.go:210 msgid "An error occurred detecting libraries" msgstr "检测库时出错" @@ -182,7 +182,7 @@ msgstr "架构:%s" msgid "Archive already exists" msgstr "存档已经存在" -#: legacy/builder/phases/core_builder.go:138 +#: arduino/builder/core.go:188 msgid "Archiving built core (caching) in: %[1]s" msgstr "存档构建代码(缓存):%[1]s" @@ -267,7 +267,7 @@ msgstr "开发板名:" msgid "Board version:" msgstr "开发板版本:" -#: legacy/builder/merge_sketch_with_bootloader.go:69 +#: legacy/builder/merge_sketch_with_bootloader.go:71 msgid "Bootloader file specified but missing: %[1]s" msgstr "已指定引导加载程序文件,缺少:%[1]s" @@ -316,11 +316,11 @@ msgstr "无法写入配置文件:%v" msgid "Can't write debug log: %s" msgstr "无法写入调试日志:%s" -#: commands/compile/compile.go:205 commands/compile/compile.go:208 +#: commands/compile/compile.go:166 commands/compile/compile.go:169 msgid "Cannot create build cache directory" msgstr "无法新建构建缓存目录" -#: commands/compile/compile.go:145 +#: commands/compile/compile.go:154 msgid "Cannot create build directory" msgstr "无法新建构建目录" @@ -360,7 +360,7 @@ msgstr "无法安装平台" msgid "Cannot install tool %s" msgstr "无法安装 %s 工具 " -#: commands/upload/upload.go:463 +#: commands/upload/upload.go:468 msgid "Cannot perform port reset: %s" msgstr "无法执行端口重置:%s" @@ -402,7 +402,7 @@ msgid "" "a change." msgstr "命令保持运行,并在发生更改时打印已连接开发板的列表。" -#: commands/debug/debug_info.go:125 commands/upload/upload.go:371 +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 msgid "Compiled sketch not found in %s" msgstr "在 %s 中找不到已编译项目" @@ -410,19 +410,19 @@ msgstr "在 %s 中找不到已编译项目" msgid "Compiles Arduino sketches." msgstr "编译 Arduino 项目" -#: legacy/builder/builder.go:76 +#: legacy/builder/builder.go:129 msgid "Compiling core..." msgstr "正在编译内核。。。" -#: legacy/builder/builder.go:70 +#: legacy/builder/builder.go:94 msgid "Compiling libraries..." msgstr "正在编译库。。。" -#: legacy/builder/phases/libraries_builder.go:133 +#: arduino/builder/libraries.go:182 msgid "Compiling library \"%[1]s\"" msgstr "正在编译 “%[1]s” 库" -#: legacy/builder/builder.go:65 +#: legacy/builder/builder.go:66 msgid "Compiling sketch..." msgstr "正在编译项目。。。" @@ -439,7 +439,7 @@ msgstr "配置文件写入:%s" msgid "Configuration options for %s" msgstr "%s 的配置选项" -#: internal/cli/monitor/monitor.go:62 +#: internal/cli/monitor/monitor.go:68 msgid "" "Configure communication port settings. The format is " "=[,=]..." @@ -457,7 +457,7 @@ msgstr "配置工具。" msgid "Connected" msgstr "已连接" -#: internal/cli/monitor/monitor.go:175 +#: internal/cli/monitor/monitor.go:155 msgid "Connected to %s! Press CTRL-C to exit." msgstr "已连接到 %s!按 CTRL-C 退出。" @@ -473,11 +473,11 @@ msgstr "无法通过 HTTP 连接" msgid "Could not create index directory" msgstr "无法新建索引目录" -#: legacy/builder/phases/core_builder.go:50 +#: arduino/builder/core.go:61 msgid "Couldn't deeply cache core build: %[1]s" msgstr "无法深度缓存内核构建:%[1]s" -#: legacy/builder/phases/sizer.go:123 +#: arduino/builder/sizer/sizer.go:148 msgid "Couldn't determine program size" msgstr "无法确定程序大小" @@ -503,7 +503,7 @@ msgid "" "directory with the current configuration settings." msgstr "用当前的配置创建或更新数据目录或自定义目录中的配置文件。" -#: internal/cli/compile/compile.go:299 +#: internal/cli/compile/compile.go:309 msgid "" "Currently, Build Profiles only support libraries available through Arduino " "Library Manager." @@ -539,7 +539,7 @@ msgstr "%s 开发板不支持调试" msgid "Debugging supported:" msgstr "支持调试:" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Default" msgstr "默认" @@ -573,7 +573,7 @@ msgstr "依赖:%s" msgid "Description" msgstr "说明" -#: legacy/builder/builder.go:57 +#: legacy/builder/builder.go:58 msgid "Detecting libraries used..." msgstr "正在检测使用的库。。。" @@ -686,7 +686,7 @@ msgstr "输入在存储库上托管的库的 git 地址" msgid "Error adding file to sketch archive" msgstr "将文件添加到项目存档时出错" -#: legacy/builder/phases/core_builder.go:144 +#: arduino/builder/core.go:194 msgid "Error archiving built core (caching) in %[1]s: %[2]s" msgstr "在 %[1]s 中存档构建内核(缓存)时出错:%[2]s" @@ -702,11 +702,11 @@ msgstr "计算相对文件路径时出错" msgid "Error cleaning caches: %v" msgstr "清理缓存出错:%v" -#: internal/cli/compile/compile.go:208 +#: internal/cli/compile/compile.go:218 msgid "Error converting path to absolute: %v" msgstr "将路径转换为绝对路径时出错:%v" -#: commands/compile/compile.go:346 +#: commands/compile/compile.go:405 msgid "Error copying output file %s" msgstr "复制输出 %s 文件时出错" @@ -714,7 +714,7 @@ msgstr "复制输出 %s 文件时出错" msgid "Error creating instance: %v" msgstr "新建实例时出错:%v" -#: commands/compile/compile.go:326 +#: commands/compile/compile.go:385 msgid "Error creating output dir" msgstr "新建输出目录时出错" @@ -767,7 +767,7 @@ msgstr "下载 %s 工具时出错" msgid "Error during Debug: %v" msgstr "调试时出错:%v" -#: internal/cli/arguments/port.go:146 +#: internal/cli/arguments/port.go:144 msgid "Error during FQBN detection: %v" msgstr "检测 FQBN 时出错:%v" @@ -777,8 +777,8 @@ msgstr "输出编码 JSON 过程时出错:%v" #: internal/cli/burnbootloader/burnbootloader.go:72 #: internal/cli/burnbootloader/burnbootloader.go:85 -#: internal/cli/compile/compile.go:248 internal/cli/compile/compile.go:274 -#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:113 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 msgid "Error during Upload: %v" msgstr "上传时出错:%v" @@ -786,7 +786,7 @@ msgstr "上传时出错:%v" msgid "Error during YAML encoding of the output: %v" msgstr "输出编码 YAML 过程时出错:%v" -#: internal/cli/compile/compile.go:345 +#: internal/cli/compile/compile.go:355 msgid "Error during build: %v" msgstr "构建时出错:%v" @@ -806,7 +806,7 @@ msgstr "升级时出错:%v" msgid "Error extracting %s" msgstr "提取 %s 时出错" -#: commands/upload/upload.go:368 +#: commands/upload/upload.go:373 msgid "Error finding build artifacts" msgstr "查找构建项目时出错" @@ -822,11 +822,11 @@ msgstr "获取项目存档的绝对路径时出错" msgid "Error getting board details: %v" msgstr "获取开发板详细信息时出错:%v" -#: arduino/builder/compilation_database.go:78 +#: arduino/builder/compilation/database.go:81 msgid "Error getting current directory for compilation database: %s" msgstr "获取编译数据库的当前目录时出错:%s" -#: commands/compile/compile.go:265 commands/lib/list.go:108 +#: commands/compile/compile.go:319 commands/lib/list.go:108 msgid "Error getting information for library %s" msgstr "获取 %s 库的信息时出错" @@ -838,11 +838,11 @@ msgstr "获取库信息时出错:%v" msgid "Error getting port metadata: %v" msgstr "获取端口元数据出错:%v" -#: internal/cli/monitor/monitor.go:89 +#: internal/cli/monitor/monitor.go:95 msgid "Error getting port settings details: %s" msgstr "获取端口设置详细信息时出错:%s" -#: internal/cli/upload/upload.go:146 +#: internal/cli/upload/upload.go:155 msgid "Error getting user input" msgstr "获取用户输入时出错" @@ -906,15 +906,15 @@ msgstr "打开 %s 时出错" msgid "Error opening debug logging file: %s" msgstr "打开调试日志文件出错:%s" -#: internal/cli/compile/compile.go:181 +#: internal/cli/compile/compile.go:191 msgid "Error opening source code overrides data file: %v" msgstr "打开源代码覆盖数据文件时出错:%v" -#: internal/cli/compile/compile.go:194 +#: internal/cli/compile/compile.go:204 msgid "Error parsing --show-properties flag: %v" msgstr "解析 --show-properties 参数时出错:%v" -#: commands/compile/compile.go:336 +#: commands/compile/compile.go:395 msgid "Error reading build directory" msgstr "读取构建目录时出错" @@ -958,7 +958,7 @@ msgstr "搜索库时出现错误:%v" msgid "Error searching for platforms: %v" msgstr "搜索平台时出错:%v" -#: arduino/builder/compilation_database.go:63 +#: arduino/builder/compilation/database.go:66 msgid "Error serializing compilation database: %s" msgstr "序列化编译数据库时出错:%s" @@ -986,17 +986,17 @@ msgstr "更新平台时出错:%s" msgid "Error verifying signature" msgstr "验证签名时出错" -#: legacy/builder/container_find_includes.go:391 +#: arduino/builder/detector/detector.go:366 msgid "Error while detecting libraries included by %[1]s" msgstr "检测 %[1]s 包含的库时出错" -#: legacy/builder/phases/sizer.go:55 legacy/builder/phases/sizer.go:60 -#: legacy/builder/phases/sizer.go:79 legacy/builder/phases/sizer.go:184 -#: legacy/builder/phases/sizer.go:190 +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 msgid "Error while determining sketch size: %s" msgstr "确定项目大小时出错:%s" -#: arduino/builder/compilation_database.go:66 +#: arduino/builder/compilation/database.go:69 msgid "Error writing compilation database: %s" msgstr "写入编译数据库时出错:%s" @@ -1004,7 +1004,7 @@ msgstr "写入编译数据库时出错:%s" msgid "Error: command description is not supported by %v" msgstr "错误:%v 不支持命令说明" -#: internal/cli/compile/compile.go:187 +#: internal/cli/compile/compile.go:197 msgid "Error: invalid source code overrides data file: %v" msgstr "错误:无效的源代码覆盖了数据文件:%v" @@ -1024,7 +1024,7 @@ msgstr "示例:" msgid "Executable to debug" msgstr "可执行调试" -#: commands/debug/debug_info.go:128 commands/upload/upload.go:374 +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 msgid "Expected compiled sketch in directory %s, but is a file instead" msgstr "应在 %s 目录中编译项目,但它是一个文件" @@ -1038,15 +1038,15 @@ msgstr "FQBN" msgid "FQBN:" msgstr "FQBN:" -#: commands/upload/upload.go:497 +#: commands/upload/upload.go:502 msgid "Failed chip erase" msgstr "芯片擦除失败" -#: commands/upload/upload.go:504 +#: commands/upload/upload.go:509 msgid "Failed programming" msgstr "编译失败" -#: commands/upload/upload.go:500 +#: commands/upload/upload.go:505 msgid "Failed to burn bootloader" msgstr "无法烧录引导加载程序" @@ -1074,7 +1074,7 @@ msgstr "未能侦听 TCP 端口:%[1]s。意外错误:%[2]v" msgid "Failed to listen on TCP port: %s. Address already in use." msgstr "未能侦听 TCP 端口:%s。地址已被使用。" -#: commands/upload/upload.go:508 +#: commands/upload/upload.go:513 msgid "Failed uploading" msgstr "上传失败" @@ -1082,7 +1082,7 @@ msgstr "上传失败" msgid "File:" msgstr "文件:" -#: commands/compile/compile.go:128 +#: commands/compile/compile.go:137 msgid "" "Firmware encryption/signing requires all the following properties to be " "defined: %s" @@ -1111,12 +1111,8 @@ msgid "" msgstr "强制跳过安装后脚本(如果 CLI 以交互方式运行)。" #: arduino/errors.go:840 -msgid "" -"Found %d platform for reference \"%s\":\n" -"%s" +msgid "Found %d platforms matching \"%s\": %s" msgstr "" -"找到 %d 平台以供参考 “%s”:\n" -"%s" #: internal/cli/arguments/fqbn.go:37 msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" @@ -1147,7 +1143,7 @@ msgstr "已生成脚本" msgid "Generates completion scripts for various shells" msgstr "已为各种 shell 生成脚本" -#: legacy/builder/builder.go:62 +#: legacy/builder/builder.go:63 msgid "Generating function prototypes..." msgstr "生成函数原型。。。" @@ -1155,18 +1151,18 @@ msgstr "生成函数原型。。。" msgid "Global Flags:" msgstr "全局参数:" -#: legacy/builder/phases/sizer.go:133 +#: arduino/builder/sizer/sizer.go:158 msgid "" "Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " "bytes for local variables. Maximum is %[2]s bytes." msgstr " 个全局变量使用 %[1]s 个字节(%[3]s%%)的动态内存,剩下 %[4]s 个字节用于局部变量。最大值为 %[2]s 字节。" -#: legacy/builder/phases/sizer.go:139 +#: arduino/builder/sizer/sizer.go:164 msgid "Global variables use %[1]s bytes of dynamic memory." msgstr "全局变量使用 %[1]s 字节的动态内存。" #: internal/cli/board/details.go:214 internal/cli/core/list.go:89 -#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:193 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 #: internal/cli/outdated/outdated.go:83 msgid "ID" msgstr "ID" @@ -1236,7 +1232,7 @@ msgstr "安装一个或多个内核和相应的工具依赖。" msgid "Installs one or more specified libraries into the system." msgstr "在系统中安装一个或多个指定的库。" -#: legacy/builder/container_find_includes.go:417 +#: arduino/builder/detector/detector.go:392 msgid "Internal error in cache" msgstr "缓存中的内部错误" @@ -1275,15 +1271,15 @@ msgstr "无效存档:在存档 %{1}s 中未找到文件 %{2}s" msgid "Invalid argument passed: %v" msgstr "传递的参数无效:%v" -#: commands/compile/compile.go:159 +#: commands/compile/compile.go:190 msgid "Invalid build properties" msgstr "无效的构建属性" -#: legacy/builder/phases/sizer.go:209 +#: arduino/builder/sizer/sizer.go:237 msgid "Invalid data size regexp: %s" msgstr "无效的数据大小正则表达式:%s" -#: legacy/builder/phases/sizer.go:215 +#: arduino/builder/sizer/sizer.go:243 msgid "Invalid eeprom size regexp: %s" msgstr "无效的 eeprom 大小正则表达式:%s" @@ -1331,7 +1327,7 @@ msgstr "无效的配置文件" msgid "Invalid recipe in platform.txt" msgstr "platform.txt 中的方法无效" -#: legacy/builder/phases/sizer.go:199 +#: arduino/builder/sizer/sizer.go:227 msgid "Invalid size regexp: %s" msgstr "无效的大小正则表达式:%s" @@ -1370,7 +1366,7 @@ msgstr "库_名" msgid "Latest" msgstr "最新的" -#: legacy/builder/phases/libraries_builder.go:90 +#: arduino/builder/libraries.go:112 msgid "Library %[1]s has been declared precompiled:" msgstr "%[1]s 库已声明为预编译:" @@ -1396,7 +1392,7 @@ msgstr "未找到 %s 库" msgid "Library '%s' not found" msgstr "未找到 %s 库" -#: legacy/builder/fail_if_imported_library_is_wrong.go:45 +#: arduino/builder/detector/detector.go:465 msgid "" "Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." msgstr "库不能同时使用 ‘%[1]s’ 和 ‘%[2]s’ 文件夹。在 ‘%[3]s’ 再次检查。" @@ -1413,7 +1409,7 @@ msgstr "已安装的库" msgid "License: %s" msgstr "许可证:%s" -#: legacy/builder/builder.go:81 +#: legacy/builder/builder.go:156 msgid "Linking everything together..." msgstr "将所有内容链接在一起。。。" @@ -1468,7 +1464,7 @@ msgstr "正在加载索引文件:%v" msgid "Location" msgstr "位置" -#: legacy/builder/phases/sizer.go:174 +#: arduino/builder/sizer/sizer.go:199 msgid "Low memory available, stability problems may occur." msgstr "可用内存不足,可能会出现稳定性问题。" @@ -1485,7 +1481,7 @@ msgid "" "Messages with this level and above will be logged. Valid levels are: %s" msgstr "记录此级别及以上的消息。有效级别为 %s" -#: legacy/builder/fail_if_imported_library_is_wrong.go:40 +#: arduino/builder/detector/detector.go:460 msgid "Missing '%[1]s' from library in %[2]s" msgstr "%[2]s 中的库中缺少 ‘%[1]s’" @@ -1509,7 +1505,7 @@ msgstr "找不到端口协议" msgid "Missing programmer" msgstr "找不到编译器" -#: legacy/builder/phases/sizer.go:203 +#: arduino/builder/sizer/sizer.go:231 msgid "Missing size regexp" msgstr "缺少大小正则表达式" @@ -1525,7 +1521,7 @@ msgstr "未找到 ‘%s’ 监视器" msgid "Monitor port settings:" msgstr "监视端口设置:" -#: legacy/builder/print_used_and_not_used_libraries.go:45 +#: arduino/builder/detector/detector.go:154 msgid "Multiple libraries were found for \"%[1]s\"" msgstr "为 “%[1]s” 找到了多个库" @@ -1539,7 +1535,7 @@ msgstr "名" msgid "Name: \"%s\"" msgstr "名:“%s”" -#: internal/cli/upload/upload.go:197 +#: internal/cli/upload/upload.go:206 msgid "New upload port: %[1]s (%[2]s)" msgstr "" @@ -1591,7 +1587,7 @@ msgstr "" msgid "No platforms matching your search." msgstr "没有与你的搜索匹配的平台。" -#: commands/upload/upload.go:453 +#: commands/upload/upload.go:458 msgid "No upload port found, using %s as fallback" msgstr "未找到上传端口,使用 %s 作为后备" @@ -1599,11 +1595,11 @@ msgstr "未找到上传端口,使用 %s 作为后备" msgid "No valid dependencies solution found" msgstr "找不到有效的依赖解决方案" -#: legacy/builder/phases/sizer.go:164 +#: arduino/builder/sizer/sizer.go:189 msgid "Not enough memory; see %[1]s for tips on reducing your footprint." msgstr "内存不足;有关减少空间的提示,请参见 %[1]s。" -#: legacy/builder/print_used_and_not_used_libraries.go:48 +#: arduino/builder/detector/detector.go:157 msgid "Not used: %[1]s" msgstr "未使用:%[1]s" @@ -1621,7 +1617,7 @@ msgid "" "compact JSON output)." msgstr "省略库中除最新版本之外的所有版本(生成更紧凑的 JSON 输出)。" -#: internal/cli/monitor/monitor.go:53 internal/cli/monitor/monitor.go:54 +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 msgid "Open a communication port with a board." msgstr "开启开发板的通信端口。" @@ -1704,7 +1700,7 @@ msgstr "软件包网站:" msgid "Paragraph: %s" msgstr "段落:%s" -#: internal/cli/compile/compile.go:419 internal/cli/compile/compile.go:434 +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 msgid "Path" msgstr "路径" @@ -1730,7 +1726,7 @@ msgid "" "in the default temporary path of your OS." msgstr "保存已编译文件的路径。如果省略,将在操作系统的默认临时路径中创建目录。" -#: commands/upload/upload.go:434 +#: commands/upload/upload.go:439 msgid "Performing 1200-bps touch reset on serial port %s" msgstr "在 %s 端口上执行 1200-bps TOUCH 重置" @@ -1742,7 +1738,7 @@ msgstr "%s 平台已经安装" msgid "Platform %s installed" msgstr "已安装 %s 平台" -#: internal/cli/compile/compile.go:370 internal/cli/upload/upload.go:136 +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 msgid "" "Platform %s is not found in any known index\n" "Maybe you need to add a 3rd party URL?" @@ -1766,7 +1762,7 @@ msgstr "未找到 ‘%s’ 平台" msgid "Platform ID" msgstr "平台 ID" -#: internal/cli/compile/compile.go:353 internal/cli/upload/upload.go:121 +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 msgid "Platform ID is not correct" msgstr "平台 ID 不正确" @@ -1814,7 +1810,7 @@ msgstr "请指定一个 FQBN。%[1]s 端口上的开发板与协议 %[2]s 不能 msgid "Port" msgstr "端口" -#: internal/cli/monitor/monitor.go:159 internal/cli/monitor/monitor.go:168 +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 msgid "Port closed: %v" msgstr "端口关闭:%v" @@ -1822,8 +1818,7 @@ msgstr "端口关闭:%v" msgid "Port monitor error" msgstr "端口监视器错误" -#: legacy/builder/phases/libraries_builder.go:100 -#: legacy/builder/phases/libraries_builder.go:108 +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 msgid "Precompiled library in \"%[1]s\" not found" msgstr "在 “%[1]s” 中找不到预编译库" @@ -1899,7 +1894,7 @@ msgstr "需要的工具:" msgid "Run as a daemon on port: %s" msgstr "在端口上作为守护进程运行:%s" -#: internal/cli/monitor/monitor.go:63 +#: internal/cli/monitor/monitor.go:69 msgid "Run in silent mode, show only monitor input and output." msgstr "以静默模式运行,仅显示监视器输入和输出。" @@ -1909,7 +1904,7 @@ msgid "" "once." msgstr "作为守护进程运行时,只执行一次内核和库的初始化。" -#: legacy/builder/phases/core_builder.go:51 +#: arduino/builder/core.go:62 msgid "Running normal build of the core..." msgstr "正在运行正常的内核构建。。。" @@ -1949,6 +1944,10 @@ msgstr "句子:%s" msgid "Server responded with: %s" msgstr "服务器响应:%s" +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "" + #: internal/cli/config/set.go:32 internal/cli/config/set.go:33 msgid "Sets a setting value." msgstr "设置一个值。" @@ -1963,7 +1962,7 @@ msgstr "设置端口和 FQBN 的默认值。如果没有指定端口或 FQBN, msgid "Sets where to save the configuration file." msgstr "设置保存配置文件的位置。" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Setting" msgstr "设置" @@ -1975,7 +1974,7 @@ msgstr "设置键不存在" msgid "Show all available core versions." msgstr "显示所有可用的内核版本。" -#: internal/cli/monitor/monitor.go:61 +#: internal/cli/monitor/monitor.go:67 msgid "Show all the settings of the communication port." msgstr "显示通讯端口的所有设置。" @@ -2058,7 +2057,7 @@ msgstr "显示 Arduino CLI 的版本号。" msgid "Size (bytes):" msgstr "大小(字节):" -#: legacy/builder/fail_if_buildpath_equals_sketchpath.go:29 +#: commands/compile/compile.go:249 msgid "" "Sketch cannot be located in build path. Please specify a different build " "path" @@ -2072,11 +2071,11 @@ msgstr "项目新建于:%s" msgid "Sketch profile to use" msgstr "使用项目配置文件" -#: legacy/builder/phases/sizer.go:159 +#: arduino/builder/sizer/sizer.go:184 msgid "Sketch too big; see %[1]s for tips on reducing it." msgstr "项目太大;请参阅 %[1]s,以获取减少项目大小的提示。" -#: legacy/builder/phases/sizer.go:127 +#: arduino/builder/sizer/sizer.go:152 msgid "" "Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" " bytes." @@ -2088,23 +2087,23 @@ msgid "" "files to .ino:" msgstr "项目 .pde 扩展名已弃用,请将以下文件重命名为 .ino:" -#: legacy/builder/phases/linker.go:36 +#: arduino/builder/linker.go:41 msgid "Skip linking of final executable." msgstr "跳过最终可执行文件的链接。" -#: commands/upload/upload.go:427 +#: commands/upload/upload.go:432 msgid "Skipping 1200-bps touch reset: no serial port selected!" msgstr "跳过 1200-bps TOUCH 重置:未选择串口!" -#: legacy/builder/builder_utils/utils.go:384 +#: arduino/builder/utils/utils.go:589 msgid "Skipping archive creation of: %[1]s" msgstr "正在跳过以下内容的存档创建:%[1]s" -#: legacy/builder/builder_utils/utils.go:210 +#: arduino/builder/utils/utils.go:571 msgid "Skipping compile of: %[1]s" msgstr "跳过编译:%[1]s" -#: legacy/builder/container_find_includes.go:358 +#: arduino/builder/detector/detector.go:408 msgid "Skipping dependencies detection for precompiled library %[1]s" msgstr "跳过 %[1]s 预编译库的依赖检测" @@ -2160,7 +2159,7 @@ msgstr "" "‘%[1]v’ 键不是列表中的条目,无法从中删除。\n" "是否可以使用 ‘%[2]s’?" -#: arduino/errors.go:862 +#: arduino/errors.go:859 msgid "The library %s has multiple installations:" msgstr "库 %s 有多个安装。" @@ -2186,7 +2185,7 @@ msgid "" "binary. Used only by the platforms that support it." msgstr "搜索自定义密钥以签署和加密二进制文件的文件夹的路径。只在支持它的平台上使用。" -#: legacy/builder/phases/libraries_builder.go:148 +#: arduino/builder/libraries.go:201 msgid "The platform does not support '%[1]s' for precompiled libraries." msgstr "该平台不支持预编译库的 ‘%[1]s’。" @@ -2233,7 +2232,7 @@ msgstr "工具链前缀" msgid "Toolchain type" msgstr "工具链类型" -#: internal/cli/compile/compile.go:368 internal/cli/upload/upload.go:134 +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 msgid "Try running %s" msgstr "尝试运行 %s" @@ -2253,7 +2252,7 @@ msgstr "类型:%s" msgid "URL:" msgstr "地址:" -#: legacy/builder/phases/core_builder.go:140 +#: arduino/builder/core.go:190 msgid "" "Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" msgstr "无法缓存构建的内核,请告知 %[1]s 维护者关注 %[2]s" @@ -2359,15 +2358,15 @@ msgid "" "Upload Arduino sketches. This does NOT compile the sketch prior to upload." msgstr "上传 Arduino 项目。不会在上传之前编译项目。" -#: internal/cli/arguments/port.go:43 +#: internal/cli/arguments/port.go:42 msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" msgstr "上传端口地址,例如:COM3 或 /dev/ttyACM2" -#: commands/upload/upload.go:451 +#: commands/upload/upload.go:456 msgid "Upload port found on %s" msgstr "在 %s 上找到上传端口" -#: internal/cli/arguments/port.go:47 +#: internal/cli/arguments/port.go:46 msgid "Upload port protocol, e.g: serial" msgstr "上传端口协议,例如:串行" @@ -2383,7 +2382,7 @@ msgstr "使用外部编译器将引导加载程序上传到板上。" msgid "Upload the bootloader." msgstr "上传引导加载程序。" -#: internal/cli/compile/compile.go:253 internal/cli/upload/upload.go:144 +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 msgid "" "Uploading to specified board using %s protocol requires the following info:" msgstr "使用 %s 协议上传到指定的开发板需要以下信息:" @@ -2404,27 +2403,27 @@ msgstr "用法:" msgid "Use %s for more information about a command." msgstr "使用 %s 获取有关命令的更多信息。" -#: internal/cli/compile/compile.go:417 +#: internal/cli/compile/compile.go:427 msgid "Used library" msgstr "已使用的库" -#: internal/cli/compile/compile.go:432 +#: internal/cli/compile/compile.go:442 msgid "Used platform" msgstr "已使用的平台" -#: legacy/builder/print_used_and_not_used_libraries.go:46 +#: arduino/builder/detector/detector.go:155 msgid "Used: %[1]s" msgstr "使用:%[1]s" -#: commands/compile/compile.go:288 +#: commands/compile/compile.go:342 msgid "Using board '%[1]s' from platform in folder: %[2]s" msgstr "使用平台的 ‘%[1]s’ 开发板,在列出的文件夹中:%[2]s" -#: legacy/builder/container_find_includes.go:370 +#: arduino/builder/detector/detector.go:348 msgid "Using cached library dependencies for file: %[1]s" msgstr "使用缓存库文件依赖项:%[1]s" -#: commands/compile/compile.go:289 +#: commands/compile/compile.go:343 msgid "Using core '%[1]s' from platform in folder: %[2]s" msgstr "使用平台的 ‘%[1]s’ 代码,在列出的文件夹中:%[2]s" @@ -2436,17 +2435,15 @@ msgstr "使用 %[2]s 版本的 %[1]s 库,在列出的文件夹中:%[3]s%[4]s msgid "Using library %[1]s in folder: %[2]s %[3]s" msgstr "使用的 %[1]s 库,在列出的文件夹中:%[2]s%[3]s" -#: legacy/builder/phases/core_builder.go:117 +#: arduino/builder/core.go:154 msgid "Using precompiled core: %[1]s" msgstr "使用预编译代码:%[1]s" -#: legacy/builder/phases/libraries_builder.go:97 -#: legacy/builder/phases/libraries_builder.go:105 +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 msgid "Using precompiled library in %[1]s" msgstr "在 %[1]s 中使用预编译库" -#: legacy/builder/builder_utils/utils.go:208 -#: legacy/builder/builder_utils/utils.go:407 +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 msgid "Using previously compiled file: %[1]s" msgstr "使用以前编译的文件:%[1]s" @@ -2458,7 +2455,7 @@ msgstr "版本" msgid "VERSION_NUMBER" msgstr "版本号" -#: internal/cli/monitor/monitor.go:193 +#: internal/cli/monitor/monitor.go:225 msgid "Values" msgstr "值" @@ -2467,7 +2464,7 @@ msgstr "值" msgid "Verify uploaded binary after the upload." msgstr "上传后验证上传的二进制文件。" -#: internal/cli/compile/compile.go:418 internal/cli/compile/compile.go:433 +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 #: internal/cli/core/search.go:100 msgid "Version" msgstr "版本" @@ -2484,7 +2481,7 @@ msgstr "警告:无法配置平台:%s" msgid "WARNING cannot configure tool: %s" msgstr "警告无法配置工具:%s" -#: internal/cli/compile/compile.go:298 +#: internal/cli/compile/compile.go:308 msgid "WARNING: The sketch is compiled using one or more custom libraries." msgstr "警告:该项目是用一个或多个自定义库编译的。" @@ -2494,11 +2491,11 @@ msgid "" "incompatible with your current board which runs on %[3]s architecture(s)." msgstr "警告:%[1]s 库声称在 %[2]s 体系结构上运行,可能与当前在 %[3]s 体系结构上运行的开发板不兼容。" -#: commands/upload/upload.go:440 +#: commands/upload/upload.go:445 msgid "Waiting for upload port..." msgstr "正在等待上传端口。。。" -#: commands/compile/compile.go:294 +#: commands/compile/compile.go:348 msgid "" "Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" msgstr "警告:%[1]s 开发板未定义 %[2]s 首选项。自动设置为:%[3]s" @@ -2541,11 +2538,11 @@ msgstr "存档无效:在压缩文件的顶层没有找到文件" msgid "archivePath" msgstr "存档路径" -#: legacy/builder/preprocess_sketch.go:60 +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 msgid "arduino-preprocessor pattern is missing" msgstr "缺少 arduino 预处理器程序" -#: commands/upload/upload.go:709 +#: commands/upload/upload.go:714 msgid "autodetect build artifact: %s" msgstr "自动检测生成项目:%s" @@ -2553,7 +2550,7 @@ msgstr "自动检测生成项目:%s" msgid "available only in text format" msgstr "仅以文本格式提供" -#: commands/upload/upload.go:694 +#: commands/upload/upload.go:699 msgid "binary file not found in %s" msgstr "在 %s 中找不到二进制文件" @@ -2599,11 +2596,11 @@ msgstr "无法检索标准错误流:%s" msgid "can't retrieve standard output stream: %s" msgstr "无法检索标准输出流:%s" -#: legacy/builder/container_find_includes.go:467 +#: arduino/builder/detector/detector.go:91 msgid "candidates" msgstr "候选" -#: commands/upload/upload.go:651 commands/upload/upload.go:658 +#: commands/upload/upload.go:656 commands/upload/upload.go:663 msgid "cannot execute upload tool: %s" msgstr "无法使用上传工具:%s" @@ -2647,7 +2644,7 @@ msgstr "计算哈希:%s" msgid "copying library to destination directory:" msgstr "将库复制到目标目录:" -#: commands/upload/upload.go:766 +#: commands/upload/upload.go:771 msgid "could not find a valid build artifact" msgstr "找不到有效的构建项目" @@ -2664,7 +2661,7 @@ msgstr "无法删除旧库" msgid "could not update sketch project file" msgstr "无法更新项目文件" -#: legacy/builder/phases/core_builder.go:107 +#: arduino/builder/core.go:133 msgid "creating core cache folder: %s" msgstr "创建核心缓存文件夹:%s" @@ -2676,7 +2673,7 @@ msgstr "在 %[1]s 中创建 installed.json:%[2]s" msgid "creating temp dir for extraction: %s" msgstr "新建用于提取的临时目录:%s" -#: legacy/builder/phases/sizer.go:165 +#: arduino/builder/sizer/sizer.go:190 msgid "data section exceeds available space in board" msgstr "数据部分超出开发板中的可用空间" @@ -2684,7 +2681,7 @@ msgstr "数据部分超出开发板中的可用空间" msgid "dependency '%s' is not available" msgstr "‘%s’ 依赖不可用" -#: legacy/builder/utils/utils.go:347 +#: legacy/builder/create_cmake_rule.go:126 msgid "destination already exists" msgstr "目标已存在" @@ -2988,7 +2985,7 @@ msgstr "%s 的端口配置值无效:%s" msgid "invalid port configuration: %s" msgstr "无效的端口配置:%s" -#: commands/upload/upload.go:638 +#: commands/upload/upload.go:643 msgid "invalid recipe '%[1]s': %[2]s" msgstr "无效的 ‘%[1]s’ 方法: %[2]s" @@ -3126,7 +3123,7 @@ msgstr "未找到公开监视器:%s" msgid "moving extracted archive to destination dir: %s" msgstr "正在将提取的存档移动到目标目录:%s" -#: commands/upload/upload.go:761 +#: commands/upload/upload.go:766 msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" msgstr "找到多个构建文件:‘%[1]s’ 和 ‘%[2]s’" @@ -3148,7 +3145,7 @@ msgstr "没有指定可执行文件" msgid "no instance specified" msgstr "没有指定实例" -#: commands/upload/upload.go:716 +#: commands/upload/upload.go:721 msgid "no sketch or build directory/file specified" msgstr "未指定项目或构建目录/文件" @@ -3160,7 +3157,7 @@ msgstr "没有这样的文件或目录" msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" msgstr "存档中没有唯一的根目录,找到了 ‘%[1]s’ 和 ‘%[2]s’" -#: commands/upload/upload.go:633 +#: commands/upload/upload.go:638 msgid "no upload port provided" msgstr "未提供上传端口" @@ -3236,7 +3233,7 @@ msgstr "%s 平台未安装" #: arduino/cores/packagemanager/install_uninstall.go:176 #: arduino/cores/packagemanager/install_uninstall.go:280 -#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:99 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 msgid "platform not installed" msgstr "平台未安装" @@ -3252,7 +3249,7 @@ msgstr "已添加可插入 discovery:%s" msgid "port" msgstr "端口" -#: internal/cli/arguments/port.go:127 +#: internal/cli/arguments/port.go:125 msgid "port not found: %[1]s %[2]s" msgstr "未找到端口:%[1]s %[2]s" @@ -3287,7 +3284,7 @@ msgstr "正在读取 %s 目录" msgid "reading directory %s content: %w" msgstr "正在读取 %s 目录的内容:%w" -#: arduino/builder/sketch.go:84 +#: arduino/builder/sketch.go:89 msgid "reading file %[1]s: %[2]s" msgstr "正在读取 %[1]s 文件: %[2]s" @@ -3315,7 +3312,7 @@ msgstr "正在读取 library_index.json: %s" msgid "reading package root dir: %s" msgstr "正在读取软件包根目录:%s" -#: commands/upload/upload.go:627 +#: commands/upload/upload.go:632 msgid "recipe not found '%s'" msgstr "未找到 ‘%s’ 方法" @@ -3385,7 +3382,7 @@ msgstr "项目路径无效" msgid "sketchPath" msgstr "项目路径" -#: legacy/builder/utils/utils.go:339 +#: legacy/builder/create_cmake_rule.go:118 msgid "source is not a directory" msgstr "来源不是目录" @@ -3409,12 +3406,12 @@ msgstr "测试存档是否被缓存:%s" msgid "testing local archive integrity: %s" msgstr "测试本地存档完整性:%s" -#: legacy/builder/phases/sizer.go:160 +#: arduino/builder/sizer/sizer.go:185 msgid "text section exceeds available space in board" msgstr "文本部分超出开发板的可用空间" +#: arduino/builder/detector/detector.go:211 #: arduino/builder/preprocessor/ctags.go:70 -#: legacy/builder/container_find_includes.go:119 msgid "the compilation database may be incomplete or inaccurate" msgstr "编译数据库可能不完整或不准确" @@ -3465,19 +3462,15 @@ msgid "" "two different versions of the library %[1]s are required: %[2]s and %[3]s" msgstr "需要 %[1]s 库的两个不同版本:%[2]s 和 %[3]s" -#: arduino/builder/sketch.go:77 arduino/builder/sketch.go:125 +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 msgid "unable to compute relative path to the sketch for the item" msgstr "无法计算项目的相对路径" -#: arduino/builder/sketch.go:56 +#: arduino/builder/sketch.go:53 msgid "unable to create a folder to save the sketch" msgstr "无法新建文件夹来保存项目" -#: arduino/builder/sketch.go:119 -msgid "unable to create a folder to save the sketch files" -msgstr "无法新建文件夹来保存项目文件" - -#: arduino/builder/sketch.go:131 +#: arduino/builder/sketch.go:132 msgid "unable to create the folder containing the item" msgstr "无法新建包含该项目的文件夹" @@ -3485,19 +3478,15 @@ msgstr "无法新建包含该项目的文件夹" msgid "unable to marshal config to YAML: %v" msgstr "无法将 config 编码成 YAML:%v" -#: arduino/builder/sketch.go:169 +#: arduino/builder/sketch.go:170 msgid "unable to read contents of the destination item" msgstr "无法读取目标项目的内容" -#: arduino/builder/sketch.go:142 +#: arduino/builder/sketch.go:143 msgid "unable to read contents of the source item" msgstr "无法读取源项目的内容" -#: arduino/builder/sketch.go:62 -msgid "unable to save the sketch on disk" -msgstr "无法在磁盘上保存项目" - -#: arduino/builder/sketch.go:152 +#: arduino/builder/sketch.go:153 msgid "unable to write to destination file" msgstr "无法写入目标文件" @@ -3525,7 +3514,7 @@ msgstr "将 arduino:samd 升级到最新版本" msgid "upgrade everything to the latest version" msgstr "将所有内容升级到最新版本" -#: commands/upload/upload.go:662 +#: commands/upload/upload.go:667 msgid "uploading error: %s" msgstr "上传错误:%s" @@ -3533,11 +3522,11 @@ msgstr "上传错误:%s" msgid "user directory not set" msgstr "未设置用户目录" -#: internal/cli/feedback/terminal.go:51 +#: internal/cli/feedback/terminal.go:73 msgid "user input not supported for the '%s' output format" msgstr "'%s' 输出格式不支持用户输入" -#: internal/cli/feedback/terminal.go:54 +#: internal/cli/feedback/terminal.go:76 msgid "user input not supported in non interactive mode" msgstr "在非互动模式下不支持用户输入" diff --git a/i18n/data/zh_TW.po b/i18n/data/zh_TW.po new file mode 100644 index 00000000000..25966b8752b --- /dev/null +++ b/i18n/data/zh_TW.po @@ -0,0 +1,3539 @@ +# +# Translators: +# you bike, 2023 +# +msgid "" +msgstr "" +"Last-Translator: you bike, 2023\n" +"Language-Team: Chinese (Taiwan) (https://app.transifex.com/arduino-1/teams/108174/zh_TW/)\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: version/version.go:59 +msgid "%[1]s %[2]s Version: %[3]s Commit: %[4]s Date: %[5]s" +msgstr "%[1]s %[2]s 版本:%[3]s 交付:%[4]s 日期:%[5]s" + +#: arduino/builder/detector/detector.go:456 +msgid "%[1]s folder is no longer supported! See %[2]s for more information" +msgstr "已不支援%[1]s 檔案夾!詳細資訊,請見 %[2]s" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:49 +msgid "%[1]s invalid, rebuilding all" +msgstr "%[1]s 無效,重新建構全部" + +#: internal/cli/lib/check_deps.go:111 +msgid "%[1]s is required but %[2]s is currently installed." +msgstr "需要 %[1]s ,但已安裝 %[2]s" + +#: arduino/builder/utils/utils.go:311 +msgid "%[1]s pattern is missing" +msgstr "%[1]s 樣態遺失" + +#: arduino/discovery/discovery.go:74 +msgid "%[1]s, message: %[2]s" +msgstr "%[1]s,訊息:%[2]s" + +#: arduino/discovery/discovery.go:83 +msgid "%[1]s, port: %[2]s" +msgstr "%[1]s,連接埠:%[2]s" + +#: arduino/discovery/discovery.go:80 +msgid "%[1]s, ports: %[2]s" +msgstr "%[1]s,連接埠:%[2]s" + +#: arduino/discovery/discovery.go:77 +msgid "%[1]s, protocol version: %[2]d" +msgstr "%[1]s,協議版本:%[2]d" + +#: arduino/resources/download.go:49 +msgid "%s already downloaded" +msgstr "%s 已經下載" + +#: commands/upload/upload.go:689 +msgid "%s and %s cannot be used together" +msgstr "%s 和 %s 不能一起使用" + +#: arduino/cores/packagemanager/install_uninstall.go:353 +msgid "%s installed" +msgstr "%s 已安裝" + +#: internal/cli/lib/check_deps.go:108 +msgid "%s is already installed." +msgstr "%s 已安裝" + +#: arduino/cores/packagemanager/loader.go:65 +#: arduino/cores/packagemanager/loader.go:652 +msgid "%s is not a directory" +msgstr "%s 不是目錄" + +#: arduino/cores/packagemanager/install_uninstall.go:287 +msgid "%s is not managed by package manager" +msgstr "%s 不是由套件管理員管理的" + +#: internal/cli/lib/check_deps.go:105 +msgid "%s must be installed." +msgstr "必須安裝 %s " + +#: arduino/builder/preprocessor/ctags.go:190 +#: arduino/builder/preprocessor/gcc.go:58 +msgid "%s pattern is missing" +msgstr "%s 樣態遺失" + +#: arduino/errors.go:819 +msgid "'%s' has an invalid signature" +msgstr "'%s'的簽名無效" + +#: arduino/cores/packagemanager/package_manager.go:400 +msgid "" +"'build.core' and 'build.variant' refer to different platforms: %[1]s and " +"%[2]s" +msgstr "'build.core' 和 'build.variant' 參照到不同的平台: %[1]s 和 %[2]s" + +#: internal/cli/board/listall.go:89 internal/cli/board/search.go:86 +msgid "(hidden)" +msgstr "(隱藏)" + +#: legacy/builder/print_used_libraries_if_verbose.go:34 +msgid "(legacy)" +msgstr "(舊版)" + +#: internal/cli/lib/install.go:81 +msgid "" +"--git-url and --zip-path are disabled by default, for more information see: " +"%v" +msgstr "--git-url 和 --zip-path 預設為不能使用, 詳情請見: %v" + +#: internal/cli/lib/install.go:83 +msgid "" +"--git-url and --zip-path flags allow installing untrusted files, use it at " +"your own risk." +msgstr "--git-url 和 --zip-path 旗標允許安裝未被信任的檔案, 使用風險自負." + +#: internal/cli/lib/install.go:86 +msgid "--git-url or --zip-path can't be used with --install-in-builtin-dir" +msgstr "--git-url 或 --zip-path 不能和 --install-in-builtin-dir 一起使用" + +#: commands/sketch/new.go:66 +msgid ".ino file already exists" +msgstr ".ino 檔已存在" + +#: internal/cli/updater/updater.go:71 +msgid "A new release of Arduino CLI is available:" +msgstr "有新版的 Arduino CLI" + +#: arduino/errors.go:300 +msgid "A programmer is required to upload" +msgstr "上傳需要編寫器/燒錄器" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "ARCH" +msgstr "架構" + +#: internal/cli/generatedocs/generatedocs.go:80 +msgid "ARDUINO COMMAND LINE MANUAL" +msgstr "ARDUINO 命令列手冊" + +#: internal/cli/usage.go:32 +msgid "Additional help topics:" +msgstr "更多協助主題:" + +#: internal/cli/config/add.go:73 internal/cli/config/add.go:74 +msgid "Adds one or more values to a setting." +msgstr "加入一或多個值到設定中" + +#: internal/cli/usage.go:27 +msgid "Aliases:" +msgstr "別名:" + +#: internal/cli/core/upgrade.go:72 +msgid "All the cores are already at the latest version" +msgstr "所有核心都已是最新版" + +#: commands/lib/install.go:86 +msgid "Already installed %s" +msgstr "已安裝 %s" + +#: arduino/builder/detector/detector.go:89 +msgid "Alternatives for %[1]s: %[2]s" +msgstr "%[1]s 的替代品: %[2]s" + +#: arduino/builder/preprocessor/ctags.go:69 +msgid "An error occurred adding prototypes" +msgstr "新增原型時出錯" + +#: arduino/builder/detector/detector.go:210 +msgid "An error occurred detecting libraries" +msgstr "偵測程式庫時出錯" + +#: internal/cli/daemon/daemon.go:63 +msgid "Append debug logging to the specified file" +msgstr "添加除錯日誌到指定檔案" + +#: internal/cli/lib/search.go:164 +msgid "Architecture: %s" +msgstr "架構:%s" + +#: commands/sketch/archive.go:71 +msgid "Archive already exists" +msgstr "壓縮檔已存在" + +#: arduino/builder/core.go:188 +msgid "Archiving built core (caching) in: %[1]s" +msgstr "壓縮在: %[1]s 裏已編譯核心 (快取) " + +#: internal/cli/sketch/sketch.go:31 internal/cli/sketch/sketch.go:32 +msgid "Arduino CLI sketch commands." +msgstr "Arduino CLI sketch 命令" + +#: internal/cli/cli.go:70 +msgid "Arduino CLI." +msgstr "Arduino CLI 命令列介面" + +#: internal/cli/cli.go:71 +msgid "Arduino Command Line Interface (arduino-cli)." +msgstr "Arduino 命令列界面 (arduino-cli)" + +#: internal/cli/board/board.go:31 internal/cli/board/board.go:32 +msgid "Arduino board commands." +msgstr "Arduino 開發板指令" + +#: internal/cli/cache/cache.go:31 internal/cli/cache/cache.go:32 +msgid "Arduino cache commands." +msgstr "Arduino 快取指令" + +#: internal/cli/lib/lib.go:31 internal/cli/lib/lib.go:32 +msgid "Arduino commands about libraries." +msgstr "Arduino 程式庫指令" + +#: internal/cli/config/config.go:33 +msgid "Arduino configuration commands." +msgstr "Arduino 設定指令" + +#: internal/cli/core/core.go:31 internal/cli/core/core.go:32 +msgid "Arduino core operations." +msgstr "Arduino 核心作業" + +#: internal/cli/lib/check_deps.go:56 internal/cli/lib/install.go:127 +msgid "Arguments error: %v" +msgstr "參數錯誤:%v" + +#: internal/cli/board/attach.go:35 +msgid "Attaches a sketch to a board." +msgstr "將 sketch 放入開發板" + +#: internal/cli/lib/search.go:155 +msgid "Author: %s" +msgstr "作者: %s" + +#: arduino/libraries/librariesmanager/install.go:78 +msgid "" +"Automatic library install can't be performed in this case, please manually " +"remove all duplicates and retry." +msgstr "在這情況下無法自動化程式庫安裝, 請手動移除重覆的再試" + +#: commands/lib/uninstall.go:57 +msgid "" +"Automatic library uninstall can't be performed in this case, please manually" +" remove them." +msgstr "在這情況下無法自動化程式庫卸除, 請手動移除" + +#: internal/cli/lib/list.go:136 +msgid "Available" +msgstr "可用的" + +#: internal/cli/usage.go:29 +msgid "Available Commands:" +msgstr "可用命令:" + +#: internal/cli/upload/upload.go:71 +msgid "Binary file to upload." +msgstr "要上傳的二進位檔" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "Board Name" +msgstr "開發板名" + +#: internal/cli/board/details.go:138 +msgid "Board name:" +msgstr "開發板名:" + +#: internal/cli/board/details.go:140 +msgid "Board version:" +msgstr "開發板版本:" + +#: legacy/builder/merge_sketch_with_bootloader.go:71 +msgid "Bootloader file specified but missing: %[1]s" +msgstr "找不到指定的 Bootloader 檔: %[1]s" + +#: internal/cli/compile/compile.go:100 +msgid "Builds of 'core.a' are saved into this path to be cached and reused." +msgstr "'core.a'的編譯檔已存到這路徑,方便快取和重複使用" + +#: arduino/resources/index.go:57 +msgid "Can't create data directory %s" +msgstr "無法建立 %s 資料目錄" + +#: arduino/errors.go:512 +msgid "Can't create sketch" +msgstr "無法建立 sketch" + +#: commands/lib/download.go:63 commands/lib/download.go:66 +msgid "Can't download library" +msgstr "無法下載程式庫" + +#: arduino/cores/packagemanager/install_uninstall.go:133 +#: commands/core/uninstall.go:64 +msgid "Can't find dependencies for platform %s" +msgstr "找不到 %s 平台的相依" + +#: arduino/errors.go:538 +msgid "Can't open sketch" +msgstr "無法打開 sketch" + +#: internal/cli/config/set.go:54 +msgid "Can't set multiple values in key %v" +msgstr "無法在 %v 鍵設多個值" + +#: arduino/errors.go:525 +msgid "Can't update sketch" +msgstr "無法更新 sketch" + +#: internal/cli/arguments/arguments.go:36 +msgid "Can't use the following flags together: %s" +msgstr "不能同時使用下列參數: %s" + +#: internal/cli/config/add.go:103 internal/cli/config/remove.go:69 +msgid "Can't write config file: %v" +msgstr "無法寫入設定檔: %v" + +#: internal/cli/daemon/daemon.go:92 +msgid "Can't write debug log: %s" +msgstr "無法寫入除錯日誌: %s" + +#: commands/compile/compile.go:166 commands/compile/compile.go:169 +msgid "Cannot create build cache directory" +msgstr "無法建立編譯快取的目錄" + +#: commands/compile/compile.go:154 +msgid "Cannot create build directory" +msgstr "無法建立編譯目錄" + +#: internal/cli/config/init.go:94 +msgid "Cannot create config file directory: %v" +msgstr "無法建立設定檔的目錄: %v" + +#: internal/cli/config/init.go:109 +msgid "Cannot create config file: %v" +msgstr "無法建立設定檔: %v" + +#: arduino/errors.go:782 +msgid "Cannot create temp dir" +msgstr "無法建立暫存目錄" + +#: arduino/errors.go:800 +msgid "Cannot create temp file" +msgstr "無法建立暫存檔" + +#: internal/cli/config/delete.go:53 +msgid "Cannot delete the key %[1]s: %[2]v" +msgstr "無法刪除鍵值 %[1]s: %[2]v" + +#: commands/debug/debug.go:72 +msgid "Cannot execute debug tool" +msgstr "無法執行除錯工具" + +#: internal/cli/config/init.go:72 internal/cli/config/init.go:82 +msgid "Cannot find absolute path: %v" +msgstr "找不到絕對路徑: %v" + +#: arduino/cores/packagemanager/install_uninstall.go:140 +msgid "Cannot install platform" +msgstr "無法安裝平台" + +#: arduino/cores/packagemanager/install_uninstall.go:331 +msgid "Cannot install tool %s" +msgstr "無法安裝工具 %s" + +#: commands/upload/upload.go:468 +msgid "Cannot perform port reset: %s" +msgstr "無法執行連接埠重設: %s" + +#: arduino/cores/packagemanager/install_uninstall.go:158 +msgid "Cannot upgrade platform" +msgstr "無法升級平台" + +#: internal/cli/config/delete.go:57 +msgid "Cannot write the file %[1]s: %[2]v" +msgstr "無法寫入檔案 %[1]s: %[2]v" + +#: internal/cli/lib/search.go:163 +msgid "Category: %s" +msgstr "類別:%s" + +#: internal/cli/lib/check_deps.go:37 internal/cli/lib/check_deps.go:38 +msgid "Check dependencies status for the specified library." +msgstr "檢查指定程式庫的相依狀態" + +#: arduino/resources/checksums.go:167 +msgid "Checksum differs from checksum in package.json" +msgstr "校驗碼和 package.json 檔內的不同" + +#: internal/cli/board/details.go:188 +msgid "Checksum:" +msgstr "校驗碼:" + +#: internal/cli/cache/cache.go:33 +msgid "Clean caches." +msgstr "清除快取" + +#: internal/cli/cli.go:126 +msgid "Comma-separated list of additional URLs for the Boards Manager." +msgstr "給開發板管理員用的網址清單,以逗號分隔" + +#: internal/cli/board/list.go:53 +msgid "" +"Command keeps running and prints list of connected boards whenever there is " +"a change." +msgstr "命令保持執行, 在有更動時列出連接的開發板" + +#: commands/debug/debug_info.go:125 commands/upload/upload.go:376 +msgid "Compiled sketch not found in %s" +msgstr "在 %s 中找不到已編譯的 sketch" + +#: internal/cli/compile/compile.go:84 internal/cli/compile/compile.go:85 +msgid "Compiles Arduino sketches." +msgstr "編譯 Arduino sketch" + +#: legacy/builder/builder.go:129 +msgid "Compiling core..." +msgstr "編譯核心..." + +#: legacy/builder/builder.go:94 +msgid "Compiling libraries..." +msgstr "編譯程式庫..." + +#: arduino/builder/libraries.go:182 +msgid "Compiling library \"%[1]s\"" +msgstr "編譯程式庫 “%[1]s”" + +#: legacy/builder/builder.go:66 +msgid "Compiling sketch..." +msgstr "編譯 sketch ..." + +#: internal/cli/config/init.go:88 +msgid "" +"Config file already exists, use --overwrite to discard the existing one." +msgstr "設定檔已存在,使用 --overwrite 覆蓋它" + +#: internal/cli/config/init.go:112 +msgid "Config file written to: %s" +msgstr "設定檔寫入:%s" + +#: internal/cli/debug/debug.go:151 +msgid "Configuration options for %s" +msgstr "%s 的設定選項" + +#: internal/cli/monitor/monitor.go:68 +msgid "" +"Configure communication port settings. The format is " +"=[,=]..." +msgstr "通訊埠設定, 格式為 =[,=]..." + +#: arduino/cores/packagemanager/install_uninstall.go:174 +msgid "Configuring platform." +msgstr "設定平台" + +#: arduino/cores/packagemanager/install_uninstall.go:341 +msgid "Configuring tool." +msgstr "設定工具" + +#: internal/cli/board/list.go:188 +msgid "Connected" +msgstr "已連接" + +#: internal/cli/monitor/monitor.go:155 +msgid "Connected to %s! Press CTRL-C to exit." +msgstr "已連到 %s!按 CTRL-C 退出" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Core" +msgstr "核心" + +#: arduino/httpclient/httpclient.go:112 +msgid "Could not connect via HTTP" +msgstr "無法通過 HTTP 連接" + +#: commands/instances.go:503 +msgid "Could not create index directory" +msgstr "無法建立索引目錄" + +#: arduino/builder/core.go:61 +msgid "Couldn't deeply cache core build: %[1]s" +msgstr "無法深入快取核心編譯:%[1]s" + +#: arduino/builder/sizer/sizer.go:148 +msgid "Couldn't determine program size" +msgstr "無法確定程式大小" + +#: internal/cli/arguments/sketch.go:36 internal/cli/lib/install.go:109 +msgid "Couldn't get current working directory: %v" +msgstr "無法取得工作目錄:%v" + +#: internal/cli/sketch/new.go:37 internal/cli/sketch/new.go:38 +msgid "Create a new Sketch" +msgstr "建立新 sketch" + +#: internal/cli/compile/compile.go:97 +msgid "Create and print a profile configuration from the build." +msgstr "從建構中建立並印出設定檔內容" + +#: internal/cli/sketch/archive.go:38 internal/cli/sketch/archive.go:39 +msgid "Creates a zip file containing all sketch files." +msgstr "建立含全部 sketch 檔的 zip 壓縮檔" + +#: internal/cli/config/init.go:43 +msgid "" +"Creates or updates the configuration file in the data directory or custom " +"directory with the current configuration settings." +msgstr "用目前的設定值建立或更新資料或自定義目錄內的設定檔" + +#: internal/cli/compile/compile.go:309 +msgid "" +"Currently, Build Profiles only support libraries available through Arduino " +"Library Manager." +msgstr "目前建構方案只支援 Arduino 程式庫管理員所提供的程式庫" + +#: internal/cli/core/list.go:93 internal/cli/core/search.go:104 +#: internal/cli/outdated/outdated.go:98 +msgid "DEPRECATED" +msgstr "已棄用" + +#: internal/cli/daemon/daemon.go:178 +msgid "Daemon is now listening on %s:%s" +msgstr "背景程式正在監聽 %s:%s" + +#: internal/cli/debug/debug.go:53 +msgid "Debug Arduino sketches." +msgstr "除錯 Arduino sketch" + +#: internal/cli/debug/debug.go:54 +msgid "" +"Debug Arduino sketches. (this command opens an interactive gdb session)" +msgstr "除錯 Arduino sketch (此命令會開啟互動式 gdb 對話)" + +#: internal/cli/debug/debug.go:63 +msgid "Debug interpreter e.g.: %s" +msgstr "除錯解譯器,例如:%s" + +#: commands/debug/debug_info.go:148 +msgid "Debugging not supported for board %s" +msgstr "不支援 %s 開發板除錯" + +#: internal/cli/board/details.go:142 +msgid "Debugging supported:" +msgstr "支援除錯:" + +#: internal/cli/monitor/monitor.go:225 +msgid "Default" +msgstr "預設" + +#: internal/cli/board/attach.go:108 +msgid "Default FQBN set to" +msgstr "預設 FQBN 設定為" + +#: internal/cli/board/attach.go:107 +msgid "Default port set to" +msgstr "預設連接埠設定為" + +#: internal/cli/cache/clean.go:30 +msgid "Delete Boards/Library Manager download cache." +msgstr "刪除開發板/程式庫管理員下載快取" + +#: internal/cli/cache/clean.go:31 +msgid "" +"Delete contents of the `directories.downloads` folder, where archive files " +"are staged during installation of libraries and boards platforms." +msgstr "刪除 `directories.downloads` 目錄裏面的內容,內有在安裝程式庫和開發板平台時所暫存的檔案" + +#: internal/cli/config/delete.go:32 internal/cli/config/delete.go:33 +msgid "Deletes a settings key and all its sub keys." +msgstr "刪除某設定鍵和所有子鍵" + +#: internal/cli/lib/search.go:171 +msgid "Dependencies: %s" +msgstr "相依: %s" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:88 +msgid "Description" +msgstr "說明" + +#: legacy/builder/builder.go:58 +msgid "Detecting libraries used..." +msgstr "檢測有使用的程式庫..." + +#: internal/cli/board/list.go:43 +msgid "" +"Detects and displays a list of boards connected to the current computer." +msgstr "檢測並顯示連接到電腦的開發板清單" + +#: internal/cli/debug/debug.go:64 +msgid "Directory containing binaries for debug." +msgstr "目錄內有除錯用二進位檔" + +#: internal/cli/upload/upload.go:70 +msgid "Directory containing binaries to upload." +msgstr "目錄內有上傳用二進位檔" + +#: internal/cli/generatedocs/generatedocs.go:45 +msgid "" +"Directory where to save generated files. Default is './docs', the directory " +"must exist." +msgstr "目錄用來保存生成檔。預設為 ./docs,本目錄必須存在" + +#: internal/cli/completion/completion.go:44 +msgid "Disable completion description for shells that support it" +msgstr "關閉 shell 的完成描述功能" + +#: internal/cli/board/list.go:189 +msgid "Disconnected" +msgstr "斷開連接" + +#: internal/cli/daemon/daemon.go:64 +msgid "Display only the provided gRPC calls" +msgstr "只顯示提供的 gRPC 呼叫" + +#: internal/cli/lib/install.go:61 +msgid "Do not install dependencies." +msgstr "不安裝相依" + +#: internal/cli/lib/install.go:62 +msgid "Do not overwrite already installed libraries." +msgstr "不要覆蓋已安裝的程式庫" + +#: internal/cli/core/install.go:55 +msgid "Do not overwrite already installed platforms." +msgstr "不要覆蓋已安裝的平台" + +#: internal/cli/burnbootloader/burnbootloader.go:58 +#: internal/cli/upload/upload.go:75 +msgid "Do not perform the actual upload, just log out actions" +msgstr "不要真的上傳,取消動作" + +#: internal/cli/daemon/daemon.go:61 +msgid "Do not terminate daemon process if the parent process dies" +msgstr "就算父程序已 GG,也不要中止背景程式" + +#: commands/lib/download.go:60 +msgid "Downloading %s" +msgstr "下載 %s" + +#: arduino/resources/index.go:129 +msgid "Downloading index signature: %s" +msgstr "下載索引簽名: %s" + +#: arduino/resources/index.go:74 commands/instances.go:542 +#: commands/instances.go:551 +msgid "Downloading index: %s" +msgstr "下載索引: %s" + +#: commands/instances.go:439 +msgid "Downloading library %s" +msgstr "下載程式庫 %s" + +#: commands/instances.go:136 +msgid "Downloading missing tool %s" +msgstr "下載缺少的工具 %s" + +#: arduino/cores/packagemanager/install_uninstall.go:93 +msgid "Downloading packages" +msgstr "下載安裝包" + +#: arduino/cores/packagemanager/profiles.go:98 +msgid "Downloading platform %s" +msgstr "下載平台 %s" + +#: arduino/cores/packagemanager/profiles.go:178 +msgid "Downloading tool %s" +msgstr "下載工具 %s" + +#: internal/cli/core/download.go:35 internal/cli/core/download.go:36 +msgid "Downloads one or more cores and corresponding tool dependencies." +msgstr "下載一或多個核心及工具相依" + +#: internal/cli/lib/download.go:35 internal/cli/lib/download.go:36 +msgid "Downloads one or more libraries without installing them." +msgstr "下載一或多個程式庫, 但不安裝" + +#: internal/cli/daemon/daemon.go:62 +msgid "Enable debug logging of gRPC calls" +msgstr "啟用 gRPC 呼叫的除錯記錄" + +#: internal/cli/lib/install.go:64 +msgid "Enter a path to zip file" +msgstr "輸入 zip 壓縮檔的路徑" + +#: internal/cli/lib/install.go:63 +msgid "Enter git url for libraries hosted on repositories" +msgstr "輸入托管程式庫的 git 位址" + +#: commands/sketch/archive.go:107 +msgid "Error adding file to sketch archive" +msgstr "將檔案加入 sketch 時出錯" + +#: arduino/builder/core.go:194 +msgid "Error archiving built core (caching) in %[1]s: %[2]s" +msgstr "在 %[1]s 中儲存編譯核心(快取)時出錯:%[2]s" + +#: internal/cli/sketch/archive.go:80 +msgid "Error archiving: %v" +msgstr "錯誤歸檔:%v" + +#: commands/sketch/archive.go:95 +msgid "Error calculating relative file path" +msgstr "計算相對檔案路徑時出錯" + +#: internal/cli/cache/clean.go:45 +msgid "Error cleaning caches: %v" +msgstr "清理快取時出錯: %v" + +#: internal/cli/compile/compile.go:218 +msgid "Error converting path to absolute: %v" +msgstr "將路徑轉換成絕對路徑時出錯: %v" + +#: commands/compile/compile.go:405 +msgid "Error copying output file %s" +msgstr "複製輸出檔 %s 時出錯" + +#: internal/cli/instance/instance.go:43 +msgid "Error creating instance: %v" +msgstr "建立實例時出錯: %v" + +#: commands/compile/compile.go:385 +msgid "Error creating output dir" +msgstr "建立輸出目錄時出錯" + +#: commands/sketch/archive.go:83 +msgid "Error creating sketch archive" +msgstr "建立 sketch 檔時出錯" + +#: internal/cli/sketch/new.go:69 internal/cli/sketch/new.go:81 +msgid "Error creating sketch: %v" +msgstr "建立 sketch 時出錯: %v" + +#: internal/cli/board/list.go:78 internal/cli/board/list.go:89 +msgid "Error detecting boards: %v" +msgstr "偵測開發板時出錯: %v" + +#: internal/cli/core/download.go:68 internal/cli/lib/download.go:65 +msgid "Error downloading %[1]s: %[2]v" +msgstr "下載 %[1]s 出錯: %[2]v" + +#: arduino/cores/packagemanager/profiles.go:106 +#: arduino/cores/packagemanager/profiles.go:107 +#: arduino/cores/packagemanager/profiles.go:111 +#: arduino/cores/packagemanager/profiles.go:112 +msgid "Error downloading %s" +msgstr "下載 %s 出錯" + +#: arduino/resources/index.go:75 commands/instances.go:602 +msgid "Error downloading index '%s'" +msgstr "下載索引'%s'時出錯" + +#: arduino/resources/index.go:130 +msgid "Error downloading index signature '%s'" +msgstr "下載索引簽名 '%s' 出錯" + +#: commands/instances.go:451 +msgid "Error downloading library %s" +msgstr "下載程式庫 %s 出錯" + +#: arduino/cores/packagemanager/profiles.go:129 +#: arduino/cores/packagemanager/profiles.go:130 +msgid "Error downloading platform %s" +msgstr "下載平台 %s 出錯" + +#: arduino/cores/packagemanager/download.go:127 +#: arduino/cores/packagemanager/profiles.go:180 +msgid "Error downloading tool %s" +msgstr "下載工具 %s 出錯" + +#: internal/cli/debug/debug.go:114 +msgid "Error during Debug: %v" +msgstr "除錯時出錯: %v" + +#: internal/cli/arguments/port.go:144 +msgid "Error during FQBN detection: %v" +msgstr "FQBN 偵測時出錯: %v" + +#: internal/cli/feedback/feedback.go:244 internal/cli/feedback/feedback.go:250 +msgid "Error during JSON encoding of the output: %v" +msgstr "輸出 JSON 編碼過程出錯:%v" + +#: internal/cli/burnbootloader/burnbootloader.go:72 +#: internal/cli/burnbootloader/burnbootloader.go:85 +#: internal/cli/compile/compile.go:258 internal/cli/compile/compile.go:284 +#: internal/cli/upload/upload.go:95 internal/cli/upload/upload.go:122 +msgid "Error during Upload: %v" +msgstr "上傳時出錯: %v" + +#: internal/cli/feedback/feedback.go:256 +msgid "Error during YAML encoding of the output: %v" +msgstr "輸出 YAML 編碼過程出錯: %v" + +#: internal/cli/compile/compile.go:355 +msgid "Error during build: %v" +msgstr "建構時出錯: %v" + +#: internal/cli/core/install.go:79 +msgid "Error during install: %v" +msgstr "安裝時出錯: %v" + +#: internal/cli/core/uninstall.go:68 +msgid "Error during uninstall: %v" +msgstr "卸載時出錯: %v" + +#: internal/cli/core/upgrade.go:119 +msgid "Error during upgrade: %v" +msgstr "升級時出錯: %v" + +#: arduino/resources/index.go:97 arduino/resources/index.go:116 +msgid "Error extracting %s" +msgstr "解開 %s 時出錯" + +#: commands/upload/upload.go:373 +msgid "Error finding build artifacts" +msgstr "尋找建構成品時出錯" + +#: internal/cli/debug/debug.go:98 +msgid "Error getting Debug info: %v" +msgstr "取得除錯資訊時出錯: %v" + +#: commands/sketch/archive.go:59 +msgid "Error getting absolute path of sketch archive" +msgstr "取得 sketch 檔絕對路徑時出錯" + +#: internal/cli/board/details.go:73 +msgid "Error getting board details: %v" +msgstr "取得開發板細節時出錯: %v" + +#: arduino/builder/compilation/database.go:81 +msgid "Error getting current directory for compilation database: %s" +msgstr "取得編譯資料庫所在目錄時出錯: %s" + +#: commands/compile/compile.go:319 commands/lib/list.go:108 +msgid "Error getting information for library %s" +msgstr "取得程式庫 %s 資訊時出錯" + +#: internal/cli/lib/examples.go:72 +msgid "Error getting libraries info: %v" +msgstr "取得程式庫資訊時出錯: %v" + +#: internal/cli/arguments/fqbn.go:90 +msgid "Error getting port metadata: %v" +msgstr "取得連接埠資訊出錯: %v" + +#: internal/cli/monitor/monitor.go:95 +msgid "Error getting port settings details: %s" +msgstr "取得連接埠設定細節出錯: %s" + +#: internal/cli/upload/upload.go:155 +msgid "Error getting user input" +msgstr "取得用戶輸入時出錯" + +#: internal/cli/instance/instance.go:82 internal/cli/instance/instance.go:99 +msgid "Error initializing instance: %v" +msgstr "初始化實例時出錯: %v" + +#: internal/cli/lib/install.go:145 +msgid "Error installing %s: %v" +msgstr "安裝 %s 時出錯: %v" + +#: internal/cli/lib/install.go:119 +msgid "Error installing Git Library: %v" +msgstr "安裝 Git 程式庫出錯: %v" + +#: internal/cli/lib/install.go:98 +msgid "Error installing Zip Library: %v" +msgstr "安裝 Zip 程式庫出錯: %v" + +#: commands/instances.go:461 +msgid "Error installing library %s" +msgstr "安裝程式庫 %s 出錯" + +#: arduino/cores/packagemanager/profiles.go:137 +#: arduino/cores/packagemanager/profiles.go:138 +msgid "Error installing platform %s" +msgstr "安裝 %s 平台出錯" + +#: arduino/cores/packagemanager/profiles.go:181 +#: arduino/cores/packagemanager/profiles.go:188 +#: arduino/cores/packagemanager/profiles.go:189 +msgid "Error installing tool %s" +msgstr "安裝 %s 工具出錯" + +#: internal/cli/board/listall.go:63 +msgid "Error listing boards: %v" +msgstr "列出開發板出錯: %v" + +#: internal/cli/lib/list.go:89 +msgid "Error listing libraries: %v" +msgstr "列出程式庫出錯: %v" + +#: internal/cli/core/list.go:69 +msgid "Error listing platforms: %v" +msgstr "列出平台出錯: %v" + +#: arduino/errors.go:425 +msgid "Error loading hardware platform" +msgstr "載入硬體平台時出錯" + +#: arduino/cores/packagemanager/profiles.go:115 +#: arduino/cores/packagemanager/profiles.go:116 +msgid "Error loading index %s" +msgstr "載入索引 %s 出錯" + +#: arduino/resources/index.go:91 +msgid "Error opening %s" +msgstr "開啟 %s 時出錯" + +#: internal/cli/daemon/daemon.go:86 +msgid "Error opening debug logging file: %s" +msgstr "打開除錯日誌檔出錯: %s" + +#: internal/cli/compile/compile.go:191 +msgid "Error opening source code overrides data file: %v" +msgstr "打開原始碼覆寫資料檔時出錯: %v" + +#: internal/cli/compile/compile.go:204 +msgid "Error parsing --show-properties flag: %v" +msgstr "解析 --show-properties 參數出錯: %v" + +#: commands/compile/compile.go:395 +msgid "Error reading build directory" +msgstr "讀取建構目錄時出錯" + +#: configuration/configuration.go:68 +msgid "Error reading config file: %v" +msgstr "讀取設定檔時出錯: %v" + +#: commands/sketch/archive.go:77 +msgid "Error reading sketch files" +msgstr "讀取 sketch 檔出錯" + +#: internal/cli/lib/check_deps.go:65 +msgid "Error resolving dependencies for %[1]s: %[2]s" +msgstr "解析 %[1]s 的相依時出錯: %[2]s" + +#: internal/cli/core/upgrade.go:68 +msgid "Error retrieving core list: %v" +msgstr "取得核心列表出錯: %v" + +#: arduino/cores/packagemanager/install_uninstall.go:155 +msgid "Error rolling-back changes: %s" +msgstr "回復更改時出錯: %s" + +#: arduino/resources/index.go:153 arduino/resources/index.go:165 +msgid "Error saving downloaded index" +msgstr "儲存下載的索引出錯" + +#: arduino/resources/index.go:160 arduino/resources/index.go:169 +msgid "Error saving downloaded index signature" +msgstr "儲存下載的索引簽名時出錯" + +#: internal/cli/board/search.go:60 +msgid "Error searching boards: %v" +msgstr "搜尋開發板時出錯: %v" + +#: internal/cli/lib/search.go:79 +msgid "Error searching for Libraries: %v" +msgstr "搜尋程式庫時出錯: %v" + +#: internal/cli/core/search.go:80 +msgid "Error searching for platforms: %v" +msgstr "搜尋平台時出錯: %v" + +#: arduino/builder/compilation/database.go:66 +msgid "Error serializing compilation database: %s" +msgstr "序列化編譯資料庫時出錯: %s" + +#: internal/cli/board/list.go:81 +msgid "Error starting discovery: %v" +msgstr "啟動探索時出錯:%v" + +#: internal/cli/lib/uninstall.go:63 +msgid "Error uninstalling %[1]s: %[2]v" +msgstr "卸載 %[1]s 時出錯: %[2]v" + +#: internal/cli/lib/search.go:68 internal/cli/lib/update_index.go:54 +msgid "Error updating library index: %v" +msgstr "更新程式庫索引時出錯: %v" + +#: internal/cli/lib/upgrade.go:71 +msgid "Error upgrading libraries" +msgstr "更新程式庫時出錯" + +#: arduino/cores/packagemanager/install_uninstall.go:150 +msgid "Error upgrading platform: %s" +msgstr "更新平台時出錯: %s" + +#: arduino/resources/index.go:139 +msgid "Error verifying signature" +msgstr "驗證簽名時出錯" + +#: arduino/builder/detector/detector.go:366 +msgid "Error while detecting libraries included by %[1]s" +msgstr "偵測 %[1]s 所包含的程式庫時出錯" + +#: arduino/builder/sizer/sizer.go:77 arduino/builder/sizer/sizer.go:85 +#: arduino/builder/sizer/sizer.go:104 arduino/builder/sizer/sizer.go:209 +#: arduino/builder/sizer/sizer.go:218 +msgid "Error while determining sketch size: %s" +msgstr "確定 sketch 大小時出錯: %s" + +#: arduino/builder/compilation/database.go:69 +msgid "Error writing compilation database: %s" +msgstr "寫入編譯資料庫時出錯: %s" + +#: internal/cli/completion/completion.go:56 +msgid "Error: command description is not supported by %v" +msgstr "錯誤: %v 不支持命令說明" + +#: internal/cli/compile/compile.go:197 +msgid "Error: invalid source code overrides data file: %v" +msgstr "錯誤: 無效原始碼覆蓋了資料檔: %v" + +#: internal/cli/board/list.go:96 +msgid "Event" +msgstr "事件" + +#: internal/cli/lib/examples.go:120 +msgid "Examples for library %s" +msgstr "%s 程式庫的範例" + +#: internal/cli/usage.go:28 +msgid "Examples:" +msgstr "範例:" + +#: internal/cli/debug/debug.go:132 +msgid "Executable to debug" +msgstr "可執行來除錯" + +#: commands/debug/debug_info.go:128 commands/upload/upload.go:379 +msgid "Expected compiled sketch in directory %s, but is a file instead" +msgstr "%s 目錄內應該有已編譯的 sketch,卻只有個檔案" + +#: internal/cli/board/attach.go:34 internal/cli/board/details.go:40 +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +#: internal/cli/board/listall.go:85 internal/cli/board/search.go:82 +msgid "FQBN" +msgstr "FQBN" + +#: internal/cli/board/details.go:139 +msgid "FQBN:" +msgstr "FQBN:" + +#: commands/upload/upload.go:502 +msgid "Failed chip erase" +msgstr "晶片擦除失敗" + +#: commands/upload/upload.go:509 +msgid "Failed programming" +msgstr "燒錄失敗" + +#: commands/upload/upload.go:505 +msgid "Failed to burn bootloader" +msgstr "燒錄 bootloader 失敗" + +#: commands/instances.go:166 +msgid "Failed to create data directory" +msgstr "建立資料目錄失敗" + +#: commands/instances.go:156 +msgid "Failed to create downloads directory" +msgstr "建立下載檔案夾失敗" + +#: internal/cli/daemon/daemon.go:133 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is an invalid port." +msgstr "監聽 TCP 埠失敗: %[1]s. %[2]s 是無效連接埠" + +#: internal/cli/daemon/daemon.go:128 +msgid "Failed to listen on TCP port: %[1]s. %[2]s is unknown name." +msgstr "監聽 TCP 埠失敗: %[1]s. %[2]s 是未知名稱" + +#: internal/cli/daemon/daemon.go:140 +msgid "Failed to listen on TCP port: %[1]s. Unexpected error: %[2]v" +msgstr "監聽 TCP 埠: %[1]s 失敗, 未預期的錯誤: %[2]v" + +#: internal/cli/daemon/daemon.go:138 +msgid "Failed to listen on TCP port: %s. Address already in use." +msgstr "監聽 TCP 埠: %s 失敗。位址已被使用" + +#: commands/upload/upload.go:513 +msgid "Failed uploading" +msgstr "上傳失敗" + +#: internal/cli/board/details.go:186 +msgid "File:" +msgstr "檔案:" + +#: commands/compile/compile.go:137 +msgid "" +"Firmware encryption/signing requires all the following properties to be " +"defined: %s" +msgstr "韌體加密/簽名需要定義以下全部屬性: %s" + +#: commands/daemon/debug.go:46 +msgid "First message must contain debug request, not data" +msgstr "第一則訊息必須包含除錯請求,而不是資料" + +#: internal/cli/arguments/arguments.go:47 +msgid "Flag %[1]s is mandatory when used in conjunction with: %[2]s" +msgstr "參數 %[1]s 當與:%[2]s 一起使用時必須強制使用" + +#: internal/cli/usage.go:30 +msgid "Flags:" +msgstr "旗標參數:" + +#: internal/cli/arguments/post_install.go:35 +msgid "" +"Force run of post-install scripts (if the CLI is not running interactively)." +msgstr "強制執行安裝後指令檔 (如果 CLI 未以互動方式執行)" + +#: internal/cli/arguments/post_install.go:36 +msgid "" +"Force skip of post-install scripts (if the CLI is running interactively)." +msgstr "強制跳過安裝後指令檔 (如果 CLI 以互動方式運行)" + +#: arduino/errors.go:840 +msgid "Found %d platforms matching \"%s\": %s" +msgstr "找到 %d 平台有符合 \"%s\": %s" + +#: internal/cli/arguments/fqbn.go:37 +msgid "Fully Qualified Board Name, e.g.: arduino:avr:uno" +msgstr "完全合格的開發板名,例如:arduino:avr:uno" + +#: internal/cli/debug/debug.go:146 +msgid "GDB Server path" +msgstr "GDB 伺服器路徑" + +#: internal/cli/debug/debug.go:145 +msgid "GDB Server type" +msgstr "GDB 伺服器類型" + +#: commands/debug/debug.go:178 +msgid "GDB server '%s' is not supported" +msgstr "不支援 GDB 伺服器 '%s'" + +#: internal/cli/generatedocs/generatedocs.go:38 +#: internal/cli/generatedocs/generatedocs.go:39 +msgid "Generates bash completion and command manpages." +msgstr "已生成 bash 和命令手冊" + +#: internal/cli/completion/completion.go:38 +msgid "Generates completion scripts" +msgstr "已生成指令檔" + +#: internal/cli/completion/completion.go:39 +msgid "Generates completion scripts for various shells" +msgstr "已為各種 shell 生成指令檔" + +#: legacy/builder/builder.go:63 +msgid "Generating function prototypes..." +msgstr "生成函式原型..." + +#: internal/cli/usage.go:31 +msgid "Global Flags:" +msgstr "全域旗標:" + +#: arduino/builder/sizer/sizer.go:158 +msgid "" +"Global variables use %[1]s bytes (%[3]s%%) of dynamic memory, leaving %[4]s " +"bytes for local variables. Maximum is %[2]s bytes." +msgstr "全域變數使用 %[1]s 位元組 (%[3]s%%) 的動態記憶體, 保留 %[4]s 位元組給區域變數. 最大 %[2]s 位元組" + +#: arduino/builder/sizer/sizer.go:164 +msgid "Global variables use %[1]s bytes of dynamic memory." +msgstr "全域變數使用 %[1]s 位元組的動態記憶體" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/monitor/monitor.go:225 +#: internal/cli/outdated/outdated.go:83 +msgid "ID" +msgstr "ID" + +#: internal/cli/board/details.go:110 +msgid "Id" +msgstr "Id" + +#: internal/cli/board/details.go:153 +msgid "Identification properties:" +msgstr "標識屬性:" + +#: internal/cli/compile/compile.go:132 +msgid "If set built binaries will be exported to the sketch folder." +msgstr "一經設定,建構的二進位檔將導出到 sketch 檔案夾" + +#: internal/cli/core/list.go:45 +msgid "" +"If set return all installable and installed cores, including manually " +"installed." +msgstr "一經設定,傳回所有可安裝和已安裝的核心,包括手動安裝的" + +#: internal/cli/lib/list.go:53 +msgid "Include built-in libraries (from platforms and IDE) in listing." +msgstr "列表內包含內建程式庫 (來自平台和 IDE)" + +#: internal/cli/sketch/archive.go:50 +msgid "Includes %s directory in the archive." +msgstr "存檔中包含 %s 目錄" + +#: internal/cli/lib/install.go:65 +msgid "Install libraries in the IDE-Builtin directory" +msgstr "安裝程式庫到 IDE-Builtin 目錄" + +#: internal/cli/core/list.go:89 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:85 +msgid "Installed" +msgstr "已安裝" + +#: commands/lib/install.go:140 +msgid "Installed %s" +msgstr "已安裝 %s" + +#: arduino/cores/packagemanager/install_uninstall.go:316 +#: commands/lib/install.go:126 +msgid "Installing %s" +msgstr "安裝 %s..." + +#: commands/instances.go:459 +msgid "Installing library %s" +msgstr "安裝程式庫 %s" + +#: arduino/cores/packagemanager/install_uninstall.go:116 +#: arduino/cores/packagemanager/profiles.go:135 +msgid "Installing platform %s" +msgstr "安裝平台 %s " + +#: arduino/cores/packagemanager/profiles.go:186 +msgid "Installing tool %s" +msgstr "安裝工具 %s" + +#: internal/cli/core/install.go:37 internal/cli/core/install.go:38 +msgid "Installs one or more cores and corresponding tool dependencies." +msgstr "安裝一或多個核心和工具相依" + +#: internal/cli/lib/install.go:45 internal/cli/lib/install.go:46 +msgid "Installs one or more specified libraries into the system." +msgstr "安裝一或多個指定程式庫到系統中" + +#: arduino/builder/detector/detector.go:392 +msgid "Internal error in cache" +msgstr "快取的內部錯誤" + +#: arduino/errors.go:378 +msgid "Invalid '%[1]s' property: %[2]s" +msgstr "無效的 '%[1]s' 屬性:%[2]s" + +#: internal/cli/cli.go:250 +msgid "" +"Invalid Call : should show Help, but it is available only in TEXT mode." +msgstr "無效呼叫: 應顯示求助,但只在文字模式下能用" + +#: arduino/errors.go:62 +msgid "Invalid FQBN" +msgstr "無效的 FQBN" + +#: internal/cli/daemon/daemon.go:151 +msgid "Invalid TCP address: port is missing" +msgstr "無效的 TCP 位址:缺少連接埠" + +#: arduino/errors.go:80 +msgid "Invalid URL" +msgstr "無效的網址" + +#: commands/instances.go:274 +msgid "Invalid additional URL: %v" +msgstr "無效的額外網址: %v" + +#: arduino/resources/index.go:103 +msgid "Invalid archive: file %{1}s not found in archive %{2}s" +msgstr "無效存檔:存檔 %{2}s 裏找不到檔案 %{1}s " + +#: internal/cli/core/download.go:56 internal/cli/core/install.go:65 +#: internal/cli/core/uninstall.go:53 internal/cli/core/upgrade.go:93 +#: internal/cli/lib/download.go:54 internal/cli/lib/uninstall.go:53 +msgid "Invalid argument passed: %v" +msgstr "傳送的參數無效: %v" + +#: commands/compile/compile.go:190 +msgid "Invalid build properties" +msgstr "無效的建構屬性" + +#: arduino/builder/sizer/sizer.go:237 +msgid "Invalid data size regexp: %s" +msgstr "無效的資料大小正規表示式: %s" + +#: arduino/builder/sizer/sizer.go:243 +msgid "Invalid eeprom size regexp: %s" +msgstr "無效的 eeprom 大小正規表示式: %s" + +#: arduino/errors.go:48 +msgid "Invalid instance" +msgstr "無效的實例" + +#: internal/cli/core/upgrade.go:99 +msgid "Invalid item %s" +msgstr "無效的項目 %s" + +#: arduino/errors.go:98 +msgid "Invalid library" +msgstr "無效的程式庫" + +#: configuration/network.go:63 +msgid "Invalid network.proxy '%[1]s': %[2]s" +msgstr "無效的 '%[1]s' 網路代理 network.proxy: %[2]s" + +#: internal/cli/cli.go:217 +msgid "Invalid option for --log-level: %s" +msgstr "--log-level: %s 選項無效" + +#: internal/cli/cli.go:229 +msgid "Invalid output format: %s" +msgstr "無效的輸出格式: %s" + +#: commands/instances.go:554 +msgid "Invalid package index in %s" +msgstr "%s 內的套件索引無效" + +#: internal/cli/core/uninstall.go:58 +msgid "Invalid parameter %s: version not allowed" +msgstr "無效 %s 參數: 版本不允許" + +#: commands/board/list.go:79 +msgid "Invalid pid value: '%s'" +msgstr "無效的 pid 值: '%s'" + +#: arduino/errors.go:222 +msgid "Invalid profile" +msgstr "無效的設定檔" + +#: commands/monitor/monitor.go:145 +msgid "Invalid recipe in platform.txt" +msgstr "platform.txt 中的方法無效" + +#: arduino/builder/sizer/sizer.go:227 +msgid "Invalid size regexp: %s" +msgstr "無效的大小正規表示式: %s" + +#: internal/cli/core/search.go:124 +msgid "Invalid timeout: %s" +msgstr "無效的超時: %s" + +#: arduino/errors.go:116 +msgid "Invalid version" +msgstr "無效的版本" + +#: commands/board/list.go:76 +msgid "Invalid vid value: '%s'" +msgstr "無效的 vid 值: '%s'" + +#: internal/cli/compile/compile.go:127 +msgid "" +"Just produce the compilation database, without actually compiling. All build" +" commands are skipped except pre* hooks." +msgstr "只產生編譯資料庫,不實際編譯。跳過除 pre* 以外的所有建構指令" + +#: internal/cli/lib/list.go:38 +msgid "LIBNAME" +msgstr "程式庫名" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "LIBRARY" +msgstr "程式庫" + +#: internal/cli/lib/download.go:34 internal/cli/lib/examples.go:42 +#: internal/cli/lib/search.go:40 internal/cli/lib/uninstall.go:34 +msgid "LIBRARY_NAME" +msgstr "程式庫_名" + +#: internal/cli/core/list.go:89 internal/cli/outdated/outdated.go:86 +msgid "Latest" +msgstr "最新的" + +#: arduino/builder/libraries.go:112 +msgid "Library %[1]s has been declared precompiled:" +msgstr "程式庫 %[1]s 已聲明為預編譯:" + +#: arduino/libraries/librariesmanager/install.go:135 +#: commands/lib/install.go:92 +msgid "" +"Library %[1]s is already installed, but with a different version: %[2]s" +msgstr "程式庫 %[1]s 已經安裝, 但版本不同: %[2]s" + +#: commands/lib/upgrade.go:59 +msgid "Library %s is already at the latest version" +msgstr "程式庫 %s 已是最新版" + +#: commands/lib/uninstall.go:39 +msgid "Library %s is not installed" +msgstr "程式庫 %s 未安裝" + +#: commands/instances.go:445 +msgid "Library %s not found" +msgstr "未找到程式庫 %s " + +#: arduino/errors.go:446 +msgid "Library '%s' not found" +msgstr "未找到程式庫 '%s'" + +#: arduino/builder/detector/detector.go:465 +msgid "" +"Library can't use both '%[1]s' and '%[2]s' folders. Double check in '%[3]s'." +msgstr "程式庫不能同時用'%[1]s'和'%[2]s'檔案夾。再檢查 '%[3]s'" + +#: arduino/errors.go:575 +msgid "Library install failed" +msgstr "程式庫安裝失敗" + +#: commands/lib/install.go:150 commands/lib/install.go:160 +msgid "Library installed" +msgstr "程式庫已安裝" + +#: internal/cli/lib/search.go:161 +msgid "License: %s" +msgstr "許可證: %s" + +#: legacy/builder/builder.go:156 +msgid "Linking everything together..." +msgstr "將所有內容鏈接在一起..." + +#: internal/cli/board/listall.go:39 +msgid "" +"List all boards that have the support platform installed. You can search\n" +"for a specific board if you specify the board name" +msgstr "列出已安裝被支援平台的所有開發板。輸入開發板名,也可進行搜尋" + +#: internal/cli/board/listall.go:38 +msgid "List all known boards and their corresponding FQBN." +msgstr "列出所有已知開發板及其相應的 FQBN" + +#: internal/cli/board/list.go:42 +msgid "List connected boards." +msgstr "列出已連接的開發板" + +#: internal/cli/arguments/fqbn.go:42 +msgid "" +"List of board options separated by commas. Or can be used multiple times for" +" multiple options." +msgstr "列出開發板選項列表。可多選項多次使用" + +#: internal/cli/compile/compile.go:105 +msgid "" +"List of custom build properties separated by commas. Or can be used multiple" +" times for multiple properties." +msgstr "列出自定義屬性列表。可多屬性多次使用" + +#: internal/cli/lib/list.go:55 +msgid "List updatable libraries." +msgstr "列出可更新的程式庫" + +#: internal/cli/core/list.go:44 +msgid "List updatable platforms." +msgstr "列出可更新的平台" + +#: internal/cli/board/board.go:33 +msgid "Lists all connected boards." +msgstr "列出所有連接的開發板" + +#: internal/cli/outdated/outdated.go:41 +msgid "Lists cores and libraries that can be upgraded" +msgstr "列出可升級的核心和程式庫" + +#: commands/instances.go:307 commands/instances.go:318 +#: commands/instances.go:418 +msgid "Loading index file: %v" +msgstr "載入索引檔: %v" + +#: internal/cli/lib/list.go:136 internal/cli/outdated/outdated.go:87 +msgid "Location" +msgstr "位置" + +#: arduino/builder/sizer/sizer.go:199 +msgid "Low memory available, stability problems may occur." +msgstr "記憶體低容量,可能影響穩定性" + +#: internal/cli/lib/search.go:156 +msgid "Maintainer: %s" +msgstr "維護者: %s" + +#: internal/cli/arguments/discovery_timeout.go:31 +msgid "Max time to wait for port discovery, e.g.: 30s, 1m" +msgstr "等待連接埠探尋的最長時間,例如:30s, 1m" + +#: internal/cli/cli.go:110 +msgid "" +"Messages with this level and above will be logged. Valid levels are: %s" +msgstr "記錄此等級含以上的訊息。有效等級為 %s" + +#: arduino/builder/detector/detector.go:460 +msgid "Missing '%[1]s' from library in %[2]s" +msgstr "%[2]s 的程式庫缺少 '%[1]s'" + +#: arduino/errors.go:171 +msgid "Missing FQBN (Fully Qualified Board Name)" +msgstr "缺少 FQBN (完全合格開發板名)" + +#: arduino/errors.go:262 +msgid "Missing port" +msgstr "缺少連接埠" + +#: arduino/errors.go:238 +msgid "Missing port address" +msgstr "缺少連接埠地址" + +#: arduino/errors.go:250 +msgid "Missing port protocol" +msgstr "缺少連接埠協議" + +#: arduino/errors.go:288 +msgid "Missing programmer" +msgstr "缺少燒錄器" + +#: arduino/builder/sizer/sizer.go:231 +msgid "Missing size regexp" +msgstr "缺少大小正規表示式" + +#: arduino/errors.go:498 +msgid "Missing sketch path" +msgstr "缺少 sketch 路徑" + +#: arduino/errors.go:359 +msgid "Monitor '%s' not found" +msgstr "監視器 '%s' 找不到" + +#: internal/cli/monitor/monitor.go:138 +msgid "Monitor port settings:" +msgstr "監視連接埠設定:" + +#: arduino/builder/detector/detector.go:154 +msgid "Multiple libraries were found for \"%[1]s\"" +msgstr "找到了多個 “%[1]s” 程式庫" + +#: internal/cli/board/details.go:214 internal/cli/core/list.go:89 +#: internal/cli/core/search.go:100 internal/cli/lib/list.go:136 +#: internal/cli/outdated/outdated.go:84 +msgid "Name" +msgstr "名" + +#: internal/cli/lib/search.go:135 +msgid "Name: \"%s\"" +msgstr "名: “%s”" + +#: internal/cli/upload/upload.go:206 +msgid "New upload port: %[1]s (%[2]s)" +msgstr "新上傳連接埠: %[1]s (%[2]s)" + +#: internal/cli/board/list.go:122 +msgid "No boards found." +msgstr "沒找到開發板" + +#: internal/cli/board/attach.go:105 +msgid "No default port or FQBN set" +msgstr "未設定預設連接埠或 FQBN" + +#: internal/cli/lib/examples.go:105 +msgid "No libraries found." +msgstr "沒找到程式庫" + +#: internal/cli/lib/list.go:128 +msgid "No libraries installed." +msgstr "沒安裝程式庫" + +#: internal/cli/lib/search.go:124 +msgid "No libraries matching your search." +msgstr "沒有你想找的程式庫" + +#: internal/cli/lib/search.go:130 +msgid "" +"No libraries matching your search.\n" +"Did you mean...\n" +msgstr "" +"沒有符合你想找的程式庫\n" +"你的意思是...\n" + +#: internal/cli/lib/list.go:126 +msgid "No libraries update is available." +msgstr "沒的程式庫更新檔" + +#: arduino/errors.go:276 +msgid "No monitor available for the port protocol %s" +msgstr "沒有可用於連接埠協議 %s 的監視器" + +#: internal/cli/outdated/outdated.go:77 +msgid "No outdated platforms or libraries found." +msgstr "沒找到已過時的平台或程式庫" + +#: internal/cli/core/list.go:86 +msgid "No platforms installed." +msgstr "沒安裝任何平台" + +#: internal/cli/core/search.go:110 +msgid "No platforms matching your search." +msgstr "沒有你想找的平台" + +#: commands/upload/upload.go:458 +msgid "No upload port found, using %s as fallback" +msgstr "沒找到上傳連接埠,使用 %s 作為後援" + +#: arduino/errors.go:465 +msgid "No valid dependencies solution found" +msgstr "找不到有效的相依解決方案" + +#: arduino/builder/sizer/sizer.go:189 +msgid "Not enough memory; see %[1]s for tips on reducing your footprint." +msgstr "記憶體不足;有關減少用量的方法,請參見 %[1]s" + +#: arduino/builder/detector/detector.go:157 +msgid "Not used: %[1]s" +msgstr "未使用: %[1]s" + +#: internal/cli/board/details.go:185 +msgid "OS:" +msgstr "作業系統:" + +#: internal/cli/board/details.go:147 +msgid "Official Arduino board:" +msgstr "Arduino 官方開發板:" + +#: internal/cli/lib/search.go:50 +msgid "" +"Omit library details far all versions except the latest (produce a more " +"compact JSON output)." +msgstr "省略程式庫中除最新版本以外的所有版本(產出更精簡的 JSON )" + +#: internal/cli/monitor/monitor.go:56 internal/cli/monitor/monitor.go:57 +msgid "Open a communication port with a board." +msgstr "開啟開發板的通信埠" + +#: internal/cli/board/details.go:197 +msgid "Option:" +msgstr "選項:" + +#: internal/cli/compile/compile.go:115 +msgid "" +"Optional, can be: %s. Used to tell gcc which warning level to use (-W flag)." +msgstr "選項,可以是:%s。用來告訴 gcc 使用哪個警告級別 (-W 參數)" + +#: internal/cli/compile/compile.go:128 +msgid "Optional, cleanup the build folder and do not use any cached build." +msgstr "選項,清理建構用的檔案夾且不使用任何快取" + +#: internal/cli/compile/compile.go:125 +msgid "" +"Optional, optimize compile output for debugging, rather than for release." +msgstr "選項,優化編譯用於除錯的輸出,還不到發佈用" + +#: internal/cli/compile/compile.go:117 +msgid "Optional, suppresses almost every output." +msgstr "選項,禁止全部輸出" + +#: internal/cli/compile/compile.go:116 internal/cli/upload/upload.go:73 +msgid "Optional, turns on verbose mode." +msgstr "選項,開啟詳細模式" + +#: internal/cli/compile/compile.go:133 +msgid "" +"Optional. Path to a .json file that contains a set of replacements of the " +"sketch source code." +msgstr "選項, 包含一組替代 sketch 原始碼的 .json 檔的路徑" + +#: internal/cli/compile/compile.go:107 +msgid "" +"Override a build property with a custom value. Can be used multiple times " +"for multiple properties." +msgstr "用自定義值替代建構屬性。可多次使用多個屬性" + +#: internal/cli/config/init.go:57 +msgid "Overwrite existing config file." +msgstr "覆蓋現有的設定檔" + +#: internal/cli/sketch/archive.go:51 +msgid "Overwrites an already existing archive" +msgstr "覆蓋已存在的存檔" + +#: internal/cli/sketch/new.go:44 +msgid "Overwrites an existing .ino sketch." +msgstr "覆蓋現有的 .ino sketch 檔" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +#: internal/cli/core/uninstall.go:34 internal/cli/core/upgrade.go:37 +msgid "PACKAGER" +msgstr "套件管理員" + +#: internal/cli/board/details.go:163 +msgid "Package URL:" +msgstr "套件網址:" + +#: internal/cli/board/details.go:162 +msgid "Package maintainer:" +msgstr "套件維護者:" + +#: internal/cli/board/details.go:161 +msgid "Package name:" +msgstr "套件名" + +#: internal/cli/board/details.go:165 +msgid "Package online help:" +msgstr "套件線上協助:" + +#: internal/cli/board/details.go:164 +msgid "Package website:" +msgstr "套件網站:" + +#: internal/cli/lib/search.go:158 +msgid "Paragraph: %s" +msgstr "段落: %s" + +#: internal/cli/compile/compile.go:429 internal/cli/compile/compile.go:444 +msgid "Path" +msgstr "路徑" + +#: internal/cli/compile/compile.go:124 +msgid "" +"Path to a collection of libraries. Can be used multiple times or entries can" +" be comma separated." +msgstr "程式庫集合的路徑。可多次使用,或以逗號分隔" + +#: internal/cli/compile/compile.go:122 +msgid "" +"Path to a single library’s root folder. Can be used multiple times or " +"entries can be comma separated." +msgstr "單一程式庫的根目錄路徑。可多次使用,或以逗號分隔" + +#: internal/cli/cli.go:114 +msgid "Path to the file where logs will be written." +msgstr "日誌檔的路徑" + +#: internal/cli/compile/compile.go:103 +msgid "" +"Path where to save compiled files. If omitted, a directory will be created " +"in the default temporary path of your OS." +msgstr "保存已編譯檔的路徑。如果省略,將在作業系統預設的臨時目錄中建立" + +#: commands/upload/upload.go:439 +msgid "Performing 1200-bps touch reset on serial port %s" +msgstr "在 %s 連接埠上執行 1200-bps TOUCH 重置" + +#: commands/core/install.go:54 commands/core/install.go:61 +msgid "Platform %s already installed" +msgstr "平台 %s 已安裝過" + +#: arduino/cores/packagemanager/install_uninstall.go:191 +msgid "Platform %s installed" +msgstr "平台 %s 已安裝" + +#: internal/cli/compile/compile.go:380 internal/cli/upload/upload.go:145 +msgid "" +"Platform %s is not found in any known index\n" +"Maybe you need to add a 3rd party URL?" +msgstr "" +"在已知索引中找不到平台 %s \n" +"也許你需要加入第三方 3rd 位址?" + +#: arduino/cores/packagemanager/install_uninstall.go:301 +msgid "Platform %s uninstalled" +msgstr "%s 平台已卸載" + +#: arduino/errors.go:483 +msgid "Platform '%s' is already at the latest version" +msgstr "平台 '%s' 已是最新版" + +#: arduino/errors.go:407 +msgid "Platform '%s' not found" +msgstr "平台 '%s' 沒找到" + +#: internal/cli/board/search.go:82 +msgid "Platform ID" +msgstr "平台 ID" + +#: internal/cli/compile/compile.go:363 internal/cli/upload/upload.go:130 +msgid "Platform ID is not correct" +msgstr "平台 ID 不正確" + +#: internal/cli/board/details.go:171 +msgid "Platform URL:" +msgstr "平台位址:" + +#: internal/cli/board/details.go:170 +msgid "Platform architecture:" +msgstr "平台架構:" + +#: internal/cli/board/details.go:169 +msgid "Platform category:" +msgstr "平台類別:" + +#: internal/cli/board/details.go:176 +msgid "Platform checksum:" +msgstr "平台校驗碼:" + +#: internal/cli/board/details.go:172 +msgid "Platform file name:" +msgstr "平台檔案名:" + +#: internal/cli/board/details.go:168 +msgid "Platform name:" +msgstr "平台名:" + +#: internal/cli/board/details.go:174 +msgid "Platform size (bytes):" +msgstr "平台大小 (位元組):" + +#: arduino/errors.go:155 +msgid "" +"Please specify an FQBN. Multiple possible boards detected on port %[1]s with" +" protocol %[2]s" +msgstr "請指定一個 FQBN。在 %[1]s 連接埠以協議 %[2]s 檢測到多個可能的開發板" + +#: arduino/errors.go:135 +msgid "" +"Please specify an FQBN. The board on port %[1]s with protocol %[2]s can't be" +" identified" +msgstr "請指定一個 FQBN。%[1]s 連接埠以協議 %[2]s 的開發板無法識別" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Port" +msgstr "連接埠" + +#: internal/cli/monitor/monitor.go:183 internal/cli/monitor/monitor.go:192 +msgid "Port closed: %v" +msgstr "連接埠關閉: %v" + +#: arduino/errors.go:669 +msgid "Port monitor error" +msgstr "連接埠監視器錯誤" + +#: arduino/builder/libraries.go:122 arduino/builder/libraries.go:130 +msgid "Precompiled library in \"%[1]s\" not found" +msgstr "找不到在“%[1]s”的預編譯程式庫" + +#: internal/cli/board/details.go:41 +msgid "Print details about a board." +msgstr "列出開發板的詳細資訊" + +#: internal/cli/compile/compile.go:99 +msgid "Print preprocessed code to stdout instead of compiling." +msgstr "列出預處理的代碼到標準輸出,而不是編譯" + +#: internal/cli/cli.go:106 internal/cli/cli.go:108 +msgid "Print the logs on the standard output." +msgstr "列出日誌到標準輸出" + +#: internal/cli/config/dump.go:31 +msgid "Prints the current configuration" +msgstr "列出目前設定" + +#: internal/cli/config/dump.go:32 +msgid "Prints the current configuration." +msgstr "列出目前設定" + +#: arduino/errors.go:204 +msgid "Profile '%s' not found" +msgstr "設定集'%s' 找不到" + +#: arduino/errors.go:340 +msgid "Programmer '%s' not found" +msgstr "燒錄器 '%s' 找不到" + +#: internal/cli/board/details.go:110 +msgid "Programmer name" +msgstr "燒錄器名" + +#: internal/cli/arguments/programmer.go:29 +msgid "Programmer to use, e.g: atmel_ice" +msgstr "要使用的燒錄器,例如:atmel_ice" + +#: internal/cli/board/details.go:214 +msgid "Programmers:" +msgstr "燒錄器:" + +#: arduino/errors.go:392 +msgid "Property '%s' is undefined" +msgstr "'%s' 屬性未定義" + +#: internal/cli/board/list.go:132 +msgid "Protocol" +msgstr "協議" + +#: internal/cli/lib/search.go:168 +msgid "Provides includes: %s" +msgstr "提供的包括: %s" + +#: internal/cli/config/remove.go:31 internal/cli/config/remove.go:32 +msgid "Removes one or more values from a setting." +msgstr "從設定中移除一或多個值" + +#: commands/lib/install.go:130 +msgid "Replacing %[1]s with %[2]s" +msgstr "將 %[1]s 替換成 %[2]s" + +#: arduino/cores/packagemanager/install_uninstall.go:120 +msgid "Replacing platform %[1]s with %[2]s" +msgstr "以平台 %[2]s 替換 %[1]s " + +#: internal/cli/board/details.go:182 +msgid "Required tool:" +msgstr "需要的工具:" + +#: internal/cli/daemon/daemon.go:53 +msgid "Run as a daemon on port: %s" +msgstr "以背景程式身份在連接埠: %s 執行" + +#: internal/cli/monitor/monitor.go:69 +msgid "Run in silent mode, show only monitor input and output." +msgstr "以靜默模式執行,只顯示監視輸入和輸出" + +#: internal/cli/daemon/daemon.go:54 +msgid "" +"Running as a daemon the initialization of cores and libraries is done only " +"once." +msgstr "以背景程式身份執行時,只做一次核心和程式庫的初始化" + +#: arduino/builder/core.go:62 +msgid "Running normal build of the core..." +msgstr "以正常建構的核心執行..." + +#: internal/cli/compile/compile.go:101 +msgid "Save build artifacts in this directory." +msgstr "將建構成品存在這個目錄" + +#: internal/cli/board/search.go:38 +msgid "Search for a board in the Boards Manager using the specified keywords." +msgstr "以指定的關鍵字在開發板管理員尋找開發板" + +#: internal/cli/board/search.go:37 +msgid "Search for a board in the Boards Manager." +msgstr "在開發板管理員尋找開發板" + +#: internal/cli/core/search.go:47 +msgid "Search for a core in Boards Manager using the specified keywords." +msgstr "以指定的關鍵字在開發板管理員尋找核心" + +#: internal/cli/core/search.go:46 +msgid "Search for a core in Boards Manager." +msgstr "在開發板管理員尋找核心" + +#: internal/cli/lib/search.go:42 +msgid "Search for one or more libraries data (case insensitive search)." +msgstr "尋找一或多個程式庫資料 (不分大小寫)" + +#: internal/cli/lib/search.go:41 +msgid "Searches for one or more libraries data." +msgstr "尋找一或多個程式庫資料" + +#: internal/cli/lib/search.go:157 +msgid "Sentence: %s" +msgstr "句子: %s" + +#: arduino/httpclient/httpclient.go:73 +msgid "Server responded with: %s" +msgstr "伺服器回應: %s" + +#: internal/cli/monitor/monitor.go:66 +msgid "Set terminal in raw mode (unbuffered)." +msgstr "設定終端成粗糙模式 (無緩衝)" + +#: internal/cli/config/set.go:32 internal/cli/config/set.go:33 +msgid "Sets a setting value." +msgstr "設定一個值" + +#: internal/cli/board/attach.go:36 +msgid "" +"Sets the default values for port and FQBN. If no port or FQBN are specified," +" the current default port and FQBN are displayed." +msgstr "設定連接埠和 FQBN 的預設值。如果沒指定連接埠或 FQBN,將顯示預設的" + +#: internal/cli/config/init.go:55 internal/cli/config/init.go:56 +msgid "Sets where to save the configuration file." +msgstr "設定儲存設定檔的位置" + +#: internal/cli/monitor/monitor.go:225 +msgid "Setting" +msgstr "設定" + +#: internal/cli/config/validate.go:50 +msgid "Settings key doesn't exist" +msgstr "設定鍵值不存在" + +#: internal/cli/core/search.go:52 +msgid "Show all available core versions." +msgstr "顯示全部可用的核心版本" + +#: internal/cli/monitor/monitor.go:67 +msgid "Show all the settings of the communication port." +msgstr "顯示通訊連接埠的全部設定" + +#: internal/cli/board/listall.go:47 internal/cli/board/search.go:45 +msgid "Show also boards marked as 'hidden' in the platform" +msgstr "在平台上也顯示標記為'隱藏的'開發板" + +#: internal/cli/arguments/show_properties.go:59 +msgid "" +"Show build properties. The properties are expanded, use \"--show-" +"properties=unexpanded\" if you want them exactly as they are defined." +msgstr "顯示建構屬性. 屬性是攤開的, 如只想看定義, 請用 \\\"--show-properties=unexpanded\\\"." + +#: internal/cli/board/details.go:51 +msgid "Show full board details" +msgstr "顯示完整的開發板細節" + +#: internal/cli/board/details.go:42 +msgid "" +"Show information about a board, in particular if the board has options to be" +" specified in the FQBN." +msgstr "顯示開發板的資訊,特別是如果開發板在 FQBN 中有可指定的選項" + +#: internal/cli/lib/search.go:49 +msgid "Show library names only." +msgstr "只顯示程式庫名" + +#: internal/cli/board/details.go:52 +msgid "Show list of available programmers" +msgstr "顯示可用的燒錄器列表" + +#: internal/cli/debug/debug.go:65 +msgid "" +"Show metadata about the debug session instead of starting the debugger." +msgstr "顯示除錯作業的數據,而不是啟動除錯器" + +#: internal/cli/update/update.go:45 +msgid "Show outdated cores and libraries after index update" +msgstr "顯示在索引更新後過時的核心和程式庫" + +#: internal/cli/lib/list.go:39 +msgid "Shows a list of installed libraries." +msgstr "顯示已安裝的程式庫" + +#: internal/cli/lib/list.go:40 +msgid "" +"Shows a list of installed libraries.\n" +"\n" +"If the LIBNAME parameter is specified the listing is limited to that specific\n" +"library. By default the libraries provided as built-in by platforms/core are\n" +"not listed, they can be listed by adding the --all flag." +msgstr "" +"顯示已安裝的程式庫。\\n如果指定了 LIBNAME 參數,則只列出該程式庫。\\n預設情況下,不會列出 '平台/核心' 內建的程式庫,\\n但可以通過" +" --all 來顯示" + +#: internal/cli/core/list.go:36 internal/cli/core/list.go:37 +msgid "Shows the list of installed platforms." +msgstr "顯示已安裝的平台" + +#: internal/cli/lib/examples.go:43 +msgid "Shows the list of the examples for libraries." +msgstr "顯示程式庫範例" + +#: internal/cli/lib/examples.go:44 +msgid "" +"Shows the list of the examples for libraries. A name may be given as " +"argument to search a specific library." +msgstr "顯示程式庫的範例列表。可以指定程式庫" + +#: internal/cli/version/version.go:39 +msgid "" +"Shows the version number of Arduino CLI which is installed on your system." +msgstr "顯示安裝在系統上的 Arduino CLI 版本" + +#: internal/cli/version/version.go:38 +msgid "Shows version number of Arduino CLI." +msgstr "\"顯示 Arduino CLI 版本" + +#: internal/cli/board/details.go:187 +msgid "Size (bytes):" +msgstr "大小 (字元組) :" + +#: commands/compile/compile.go:249 +msgid "" +"Sketch cannot be located in build path. Please specify a different build " +"path" +msgstr "sketch 不能放在建構路徑上。請指定不同的建構路徑" + +#: internal/cli/sketch/new.go:84 +msgid "Sketch created in: %s" +msgstr "Sketch 建立在: %s" + +#: internal/cli/arguments/profiles.go:29 +msgid "Sketch profile to use" +msgstr "採用的 Sketch 設定集" + +#: arduino/builder/sizer/sizer.go:184 +msgid "Sketch too big; see %[1]s for tips on reducing it." +msgstr "Sketch 太胖了;請參考 %[1]s 裏的減肥技巧" + +#: arduino/builder/sizer/sizer.go:152 +msgid "" +"Sketch uses %[1]s bytes (%[3]s%%) of program storage space. Maximum is %[2]s" +" bytes." +msgstr "Sketch 使用 %[1]s 位元組(%[3]s%%)的程式儲存空間。最大為 %[2]s 位元組" + +#: internal/cli/arguments/sketch.go:49 +msgid "" +"Sketches with .pde extension are deprecated, please rename the following " +"files to .ino:" +msgstr "Sketch 已棄用 .pde 副檔名 ,請將下列檔案的副檔名改成.ino" + +#: arduino/builder/linker.go:41 +msgid "Skip linking of final executable." +msgstr "跳過鏈結成執行檔" + +#: commands/upload/upload.go:432 +msgid "Skipping 1200-bps touch reset: no serial port selected!" +msgstr "跳過 1200-bps 接觸重設:未選取序列埠!" + +#: arduino/builder/utils/utils.go:589 +msgid "Skipping archive creation of: %[1]s" +msgstr "跳過建立壓縮檔: %[1]s" + +#: arduino/builder/utils/utils.go:571 +msgid "Skipping compile of: %[1]s" +msgstr "跳過編譯: %[1]s" + +#: arduino/builder/detector/detector.go:408 +msgid "Skipping dependencies detection for precompiled library %[1]s" +msgstr "跳過預編譯程式庫 %[1]s 的相依偵測" + +#: arduino/cores/packagemanager/install_uninstall.go:187 +msgid "Skipping platform configuration." +msgstr "跳過平台設定" + +#: arduino/cores/packagemanager/install_uninstall.go:350 +msgid "Skipping tool configuration." +msgstr "跳過工具設定" + +#: legacy/builder/recipe_runner.go:54 +msgid "Skipping: %[1]s" +msgstr "跳過: %[1]s" + +#: commands/instances.go:574 +msgid "Some indexes could not be updated." +msgstr "有些索引無法更新" + +#: internal/cli/core/upgrade.go:124 +msgid "Some upgrades failed, please check the output for details." +msgstr "有些升級失敗了,細節請看輸出" + +#: arduino/serialutils/serialutils.go:141 +msgid "TOUCH: error during reset: %s" +msgstr "TOUCH: 重設時出錯: %s" + +#: internal/cli/daemon/daemon.go:59 +msgid "The TCP port the daemon will listen to" +msgstr "背景程式監聽的 TCP 埠" + +#: internal/cli/cli.go:125 +msgid "The custom config file (if not specified the default will be used)." +msgstr "自定義設定檔 (如沒指定,將使用預設值)" + +#: internal/cli/daemon/daemon.go:78 +msgid "The flag --debug-file must be used with --debug." +msgstr "參數 --debug-file 必須和 --debug 一起使用" + +#: internal/cli/config/add.go:93 +msgid "" +"The key '%[1]v' is not a list of items, can't add to it.\n" +"Maybe use '%[2]s'?" +msgstr "" +"'%[1]v' 鍵不是項目列表,無法加入其中。\n" +"還是用 '%[2]s'?" + +#: internal/cli/config/remove.go:51 +msgid "" +"The key '%[1]v' is not a list of items, can't remove from it.\n" +"Maybe use '%[2]s'?" +msgstr "" +"'%[1]v' 鍵不是項目列表,無法移除。\n" +"還是用 '%[2]s'?" + +#: arduino/errors.go:859 +msgid "The library %s has multiple installations:" +msgstr "程式庫 %s 有多個安裝" + +#: internal/cli/compile/compile.go:113 +msgid "" +"The name of the custom encryption key to use to encrypt a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "自定義加密密鑰的名稱,用在編譯過程中對二進位碼進行加密。只用在有支援的平台" + +#: internal/cli/compile/compile.go:111 +msgid "" +"The name of the custom signing key to use to sign a binary during the " +"compile process. Used only by the platforms that support it." +msgstr "自定義簽名密鑰的名稱,用在編譯過程中對二進位碼進行簽名。只用在有支援的平台" + +#: internal/cli/cli.go:116 internal/cli/cli.go:121 +msgid "The output format for the logs, can be: %s" +msgstr "日誌的輸出格​​式,可以是: %s" + +#: internal/cli/compile/compile.go:109 +msgid "" +"The path of the dir to search for the custom keys to sign and encrypt a " +"binary. Used only by the platforms that support it." +msgstr "尋找用來簽名和加密二進位碼的自定義密鑰檔的檔案夾路徑。只用在有支援的平台" + +#: arduino/builder/libraries.go:201 +msgid "The platform does not support '%[1]s' for precompiled libraries." +msgstr "本平台不支援預編譯程式庫的 '%[1]s'" + +#: internal/cli/lib/upgrade.go:35 +msgid "" +"This command upgrades an installed library to the latest available version. " +"Multiple libraries can be passed separated by a space. If no arguments are " +"provided, the command will upgrade all the installed libraries where an " +"update is available." +msgstr "此指令將升級已安裝的程式庫到最新版。多程式庫以空格為間格。如未提供參數,將升級全部已安裝的程式庫" + +#: internal/cli/outdated/outdated.go:42 +msgid "" +"This commands shows a list of installed cores and/or libraries\n" +"that can be upgraded. If nothing needs to be updated the output is empty." +msgstr "此指令顯示可升級的已安裝核心和程式庫。如沒需要更新的,則輸出空白" + +#: arduino/cores/packagemanager/install_uninstall.go:86 +#: arduino/cores/packagemanager/install_uninstall.go:311 +msgid "Tool %s already installed" +msgstr "工具 %s 已安裝" + +#: arduino/cores/packagemanager/install_uninstall.go:400 +msgid "Tool %s uninstalled" +msgstr "工具 %s 已卸除" + +#: commands/debug/debug.go:139 +msgid "Toolchain '%s' is not supported" +msgstr "不支援工具包 '%s' " + +#: internal/cli/debug/debug.go:140 +msgid "Toolchain custom configurations" +msgstr "工具包客製化設定" + +#: internal/cli/debug/debug.go:134 +msgid "Toolchain path" +msgstr "工具包路徑" + +#: internal/cli/debug/debug.go:135 +msgid "Toolchain prefix" +msgstr "工具包前綴字元" + +#: internal/cli/debug/debug.go:133 +msgid "Toolchain type" +msgstr "工具包類型" + +#: internal/cli/compile/compile.go:378 internal/cli/upload/upload.go:143 +msgid "Try running %s" +msgstr "嘗試執行 %s" + +#: internal/cli/burnbootloader/burnbootloader.go:57 +msgid "Turns on verbose mode." +msgstr "開啟囉嗦模式" + +#: internal/cli/board/list.go:96 internal/cli/board/list.go:132 +msgid "Type" +msgstr "類型" + +#: internal/cli/lib/search.go:165 +msgid "Types: %s" +msgstr "類型: %s" + +#: internal/cli/board/details.go:189 +msgid "URL:" +msgstr "網址:" + +#: arduino/builder/core.go:190 +msgid "" +"Unable to cache built core, please tell %[1]s maintainers to follow %[2]s" +msgstr "無法快取建構核心,請通知 %[1]s 維護者注意 %[2]s" + +#: configuration/configuration.go:125 +msgid "Unable to get Documents Folder: %v" +msgstr "無法取得文件夾: %v" + +#: configuration/configuration.go:100 +msgid "Unable to get Local App Data Folder: %v" +msgstr "無法取得本地應用程式的資料夾: %v" + +#: configuration/configuration.go:88 configuration/configuration.go:113 +msgid "Unable to get user home dir: %v" +msgstr "無法取得用戶家目錄: %v" + +#: internal/cli/cli.go:204 +msgid "Unable to open file for logging: %s" +msgstr "無法開啟檔案做日誌記錄: %s" + +#: commands/instances.go:541 +msgid "Unable to parse URL" +msgstr "無法解析網址" + +#: arduino/cores/packagemanager/install_uninstall.go:277 +#: commands/lib/uninstall.go:44 +msgid "Uninstalling %s" +msgstr "卸除 %s" + +#: arduino/cores/packagemanager/install_uninstall.go:163 +#: commands/core/uninstall.go:73 +msgid "Uninstalling %s, tool is no more required" +msgstr "卸除 %s,不需要這工具了" + +#: internal/cli/core/uninstall.go:35 internal/cli/core/uninstall.go:36 +msgid "" +"Uninstalls one or more cores and corresponding tool dependencies if no " +"longer used." +msgstr "如不再需用到, 卸除一或多個核心及相依" + +#: internal/cli/lib/uninstall.go:35 internal/cli/lib/uninstall.go:36 +msgid "Uninstalls one or more libraries." +msgstr "卸載一或多個程式庫" + +#: internal/cli/board/list.go:164 +msgid "Unknown" +msgstr "未知的" + +#: arduino/errors.go:185 +msgid "Unknown FQBN" +msgstr "未知的 FQBN" + +#: internal/cli/update/update.go:37 +msgid "Updates the index of cores and libraries" +msgstr "更新核心和程式庫的索引" + +#: internal/cli/update/update.go:38 +msgid "Updates the index of cores and libraries to the latest versions." +msgstr "更新核心和程式庫的索引到最新版" + +#: internal/cli/core/update_index.go:34 +msgid "Updates the index of cores to the latest version." +msgstr "更新核心索引到最新" + +#: internal/cli/core/update_index.go:33 +msgid "Updates the index of cores." +msgstr "更新核心索引" + +#: internal/cli/lib/update_index.go:34 +msgid "Updates the libraries index to the latest version." +msgstr "更新程式庫索引到最新" + +#: internal/cli/lib/update_index.go:33 +msgid "Updates the libraries index." +msgstr "更新程式庫索引" + +#: arduino/cores/packagemanager/install_uninstall.go:43 +msgid "Upgrade doesn't accept parameters with version" +msgstr "升級不接受版本參數" + +#: internal/cli/upgrade/upgrade.go:38 +msgid "Upgrades installed cores and libraries to latest version." +msgstr "升級已安裝的核心和程式庫到最新版" + +#: internal/cli/upgrade/upgrade.go:37 +msgid "Upgrades installed cores and libraries." +msgstr "升級已安裝的核心和程式庫" + +#: internal/cli/lib/upgrade.go:34 +msgid "Upgrades installed libraries." +msgstr "升級已安裝的程式庫" + +#: internal/cli/core/upgrade.go:38 internal/cli/core/upgrade.go:39 +msgid "Upgrades one or all installed platforms to the latest version." +msgstr "升級已安裝的平台到最新版本" + +#: internal/cli/upload/upload.go:57 +msgid "Upload Arduino sketches." +msgstr "上傳 Arduino sketch" + +#: internal/cli/upload/upload.go:58 +msgid "" +"Upload Arduino sketches. This does NOT compile the sketch prior to upload." +msgstr "上傳 Arduino sketch。不會在上傳前編譯它" + +#: internal/cli/arguments/port.go:42 +msgid "Upload port address, e.g.: COM3 or /dev/ttyACM2" +msgstr "上傳連接埠,例如:COM3 或 /dev/ttyACM2" + +#: commands/upload/upload.go:456 +msgid "Upload port found on %s" +msgstr "找到上傳連接埠 %s " + +#: internal/cli/arguments/port.go:46 +msgid "Upload port protocol, e.g: serial" +msgstr "上傳連接埠協議,例如:串列" + +#: internal/cli/compile/compile.go:118 +msgid "Upload the binary after the compilation." +msgstr "編譯完成就上傳二進位碼" + +#: internal/cli/burnbootloader/burnbootloader.go:47 +msgid "Upload the bootloader on the board using an external programmer." +msgstr "使用燒錄器將 bootloader 上傳到開發板" + +#: internal/cli/burnbootloader/burnbootloader.go:46 +msgid "Upload the bootloader." +msgstr "上傳 bootloader" + +#: internal/cli/compile/compile.go:263 internal/cli/upload/upload.go:153 +msgid "" +"Uploading to specified board using %s protocol requires the following info:" +msgstr "以 %s 協議上傳到開發板需要以下資訊:" + +#: internal/cli/config/init.go:103 +msgid "" +"Urls cannot contain commas. Separate multiple urls exported as env var with a space:\n" +"%s" +msgstr "" +"網址不能有逗號。用空格隔開多個位址, 例如 env var::\n" +"%s" + +#: internal/cli/usage.go:26 +msgid "Usage:" +msgstr "用法:" + +#: internal/cli/usage.go:33 +msgid "Use %s for more information about a command." +msgstr "使用 %s 取得指令的更多資訊" + +#: internal/cli/compile/compile.go:427 +msgid "Used library" +msgstr "使用的程式庫" + +#: internal/cli/compile/compile.go:442 +msgid "Used platform" +msgstr "使用的平台" + +#: arduino/builder/detector/detector.go:155 +msgid "Used: %[1]s" +msgstr "使用: %[1]s" + +#: commands/compile/compile.go:342 +msgid "Using board '%[1]s' from platform in folder: %[2]s" +msgstr "使用檔案夾: %[2]s 裏面平台的開發板 '%[1]s' " + +#: arduino/builder/detector/detector.go:348 +msgid "Using cached library dependencies for file: %[1]s" +msgstr "檔案: %[1]s 使用快取程式庫相依" + +#: commands/compile/compile.go:343 +msgid "Using core '%[1]s' from platform in folder: %[2]s" +msgstr "使用檔案夾: %[2]s 裏面平台的核心 '%[1]s' " + +#: legacy/builder/print_used_libraries_if_verbose.go:44 +msgid "Using library %[1]s at version %[2]s in folder: %[3]s %[4]s" +msgstr "使用檔案夾: %[3]s %[4]s 內的程式庫 %[1]s 版本 %[2]s " + +#: legacy/builder/print_used_libraries_if_verbose.go:38 +msgid "Using library %[1]s in folder: %[2]s %[3]s" +msgstr "使用檔案夾: %[2]s %[3]s 內的程式庫 %[1]s " + +#: arduino/builder/core.go:154 +msgid "Using precompiled core: %[1]s" +msgstr "使用預編譯核心: %[1]s" + +#: arduino/builder/libraries.go:119 arduino/builder/libraries.go:127 +msgid "Using precompiled library in %[1]s" +msgstr "使用在%[1]s 裏預編譯的程式庫" + +#: arduino/builder/utils/utils.go:569 arduino/builder/utils/utils.go:612 +msgid "Using previously compiled file: %[1]s" +msgstr "使用先前編譯的檔案: %[1]s" + +#: internal/cli/core/download.go:34 internal/cli/core/install.go:36 +msgid "VERSION" +msgstr "版本" + +#: internal/cli/lib/check_deps.go:36 internal/cli/lib/install.go:44 +msgid "VERSION_NUMBER" +msgstr "版本_號" + +#: internal/cli/monitor/monitor.go:225 +msgid "Values" +msgstr "數值" + +#: internal/cli/burnbootloader/burnbootloader.go:56 +#: internal/cli/compile/compile.go:120 internal/cli/upload/upload.go:72 +msgid "Verify uploaded binary after the upload." +msgstr "上傳後驗證上傳的二進位碼" + +#: internal/cli/compile/compile.go:428 internal/cli/compile/compile.go:443 +#: internal/cli/core/search.go:100 +msgid "Version" +msgstr "版本" + +#: internal/cli/lib/search.go:166 +msgid "Versions: %s" +msgstr "版本: %s" + +#: arduino/cores/packagemanager/install_uninstall.go:182 +msgid "WARNING cannot configure platform: %s" +msgstr "警告! 無法設定平台: %s" + +#: arduino/cores/packagemanager/install_uninstall.go:346 +msgid "WARNING cannot configure tool: %s" +msgstr "警告!無法設定工具: %s" + +#: internal/cli/compile/compile.go:308 +msgid "WARNING: The sketch is compiled using one or more custom libraries." +msgstr "警告! sketch 用了一或多個客製程式庫編譯" + +#: legacy/builder/warn_about_arch_incompatible_libraries.go:39 +msgid "" +"WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be " +"incompatible with your current board which runs on %[3]s architecture(s)." +msgstr "警告: %[1]s 程式庫是 (%[2]s 架構),可能與選擇的開發板 (%[3]s架構)不相容 " + +#: commands/upload/upload.go:445 +msgid "Waiting for upload port..." +msgstr "等待上傳連接埠..." + +#: commands/compile/compile.go:348 +msgid "" +"Warning: Board %[1]s doesn't define a %[2]s preference. Auto-set to: %[3]s" +msgstr "警告: 開發板 %[1]s 並沒定義 %[2]s 喜好。自動設定成:%[3]s" + +#: internal/cli/lib/search.go:159 +msgid "Website: %s" +msgstr "網站: %s" + +#: internal/cli/config/init.go:42 +msgid "Writes current configuration to a configuration file." +msgstr "將目前的設定寫入設定檔" + +#: internal/cli/config/init.go:45 +msgid "" +"Writes current configuration to the configuration file in the data " +"directory." +msgstr "將目前的設定寫入資料目錄裏面的設定檔" + +#: internal/cli/config/set.go:74 +msgid "Writing config file: %v" +msgstr "寫入設定檔: %v" + +#: internal/cli/compile/compile.go:149 internal/cli/compile/compile.go:152 +msgid "You cannot use the %s flag while compiling with a profile." +msgstr "使用設定集編譯時不能使用 %s 旗標參數" + +#: arduino/resources/checksums.go:79 +msgid "archive hash differs from hash in index" +msgstr "保存與和索引不同的雜湊" + +#: arduino/libraries/librariesmanager/install.go:192 +msgid "archive is not valid: multiple files found in zip file top level" +msgstr "存檔無效: 在 zip 檔頂層找到多個檔案" + +#: arduino/libraries/librariesmanager/install.go:195 +msgid "archive is not valid: no files found in zip file top level" +msgstr "存檔無效: 在 zip 檔的頂層沒找到檔案" + +#: internal/cli/sketch/archive.go:37 +msgid "archivePath" +msgstr "存檔路徑" + +#: arduino/builder/preprocessor/arduino_preprocessor.go:60 +msgid "arduino-preprocessor pattern is missing" +msgstr "缺少 arduino 預處理器樣態" + +#: commands/upload/upload.go:714 +msgid "autodetect build artifact: %s" +msgstr "自動偵測建構成品: %s" + +#: internal/cli/feedback/stdio.go:35 +msgid "available only in text format" +msgstr "只有本文格式" + +#: commands/upload/upload.go:699 +msgid "binary file not found in %s" +msgstr "%s 裏找不到二進位檔" + +#: arduino/cores/packagemanager/package_manager.go:305 +msgid "board %s not found" +msgstr "找不到開發板 %s" + +#: internal/cli/board/listall.go:37 internal/cli/board/search.go:36 +msgid "boardname" +msgstr "開發板名" + +#: arduino/libraries/librariesmanager/librariesmanager.go:155 +msgid "built-in libraries directory not set" +msgstr "內建程式庫目錄未設定" + +#: arduino/discovery/discovery.go:346 arduino/discovery/discovery.go:369 +#: arduino/discovery/discovery.go:391 arduino/discovery/discovery.go:431 +#: arduino/discovery/discovery.go:457 +msgid "calling %[1]s: %[2]w" +msgstr "呼叫 %[1]s: %[2]w" + +#: arduino/cores/status.go:124 arduino/cores/status.go:151 +msgid "can't find latest release of %s" +msgstr "找不到最新版的 %s " + +#: commands/instances.go:360 +msgid "can't find latest release of tool %s" +msgstr "找不到最新版的工具 %s " + +#: arduino/sketch/sketch.go:106 +msgid "can't find main Sketch file in %s" +msgstr "在 %s 找不到 sketch 主檔" + +#: arduino/cores/packagemanager/loader.go:825 +msgid "can't find pattern for discovery with id %s" +msgstr "找不到 id 為 %s 探索的樣態" + +#: executils/output.go:52 +msgid "can't retrieve standard error stream: %s" +msgstr "無法取得標準錯誤流: %s" + +#: executils/output.go:34 +msgid "can't retrieve standard output stream: %s" +msgstr "無法取得標準輸出流: %s" + +#: arduino/builder/detector/detector.go:91 +msgid "candidates" +msgstr "候選" + +#: commands/upload/upload.go:656 commands/upload/upload.go:663 +msgid "cannot execute upload tool: %s" +msgstr "無法執行上傳工具: %s" + +#: arduino/resources/install.go:39 +msgid "checking local archive integrity" +msgstr "檢查本地端存檔的完整性" + +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:85 +#: legacy/builder/wipeout_build_path_if_build_options_changed.go:89 +msgid "cleaning build path" +msgstr "清理建構路徑" + +#: internal/cli/cli.go:72 +msgid "command" +msgstr "指令" + +#: arduino/monitor/monitor.go:150 +msgid "command '%[1]s' failed: %[2]s" +msgstr "指令 '%[1]s' 失敗: %[2]s" + +#: arduino/discovery/discovery.go:350 arduino/discovery/discovery.go:373 +#: arduino/discovery/discovery.go:395 arduino/discovery/discovery.go:435 +#: arduino/discovery/discovery.go:461 +msgid "command failed: %s" +msgstr "指令失敗: %s" + +#: arduino/discovery/discovery.go:348 arduino/discovery/discovery.go:352 +#: arduino/discovery/discovery.go:371 arduino/discovery/discovery.go:375 +#: arduino/discovery/discovery.go:393 arduino/discovery/discovery.go:397 +#: arduino/discovery/discovery.go:433 arduino/discovery/discovery.go:459 +#: arduino/discovery/discovery.go:463 arduino/monitor/monitor.go:147 +#: arduino/monitor/monitor.go:153 +msgid "communication out of sync, expected '%[1]s', received '%[2]s'" +msgstr "通信不同步,預期 '%[1]s',卻收到 '%[2]s'" + +#: arduino/resources/checksums.go:75 +msgid "computing hash: %s" +msgstr "計算雜湊: %s" + +#: arduino/libraries/librariesmanager/install.go:145 +msgid "copying library to destination directory:" +msgstr "拷貝程式庫到目標目錄:" + +#: commands/upload/upload.go:771 +msgid "could not find a valid build artifact" +msgstr "找不到正確的建構成品" + +#: commands/core/install.go:62 +msgid "could not overwrite" +msgstr "無法覆寫" + +#: commands/lib/install.go:133 +msgid "could not remove old library" +msgstr "無法移除舊的程式庫" + +#: arduino/sketch/yaml.go:78 arduino/sketch/yaml.go:82 +#: arduino/sketch/yaml.go:86 +msgid "could not update sketch project file" +msgstr "無法更新 sketch 專案檔" + +#: arduino/builder/core.go:133 +msgid "creating core cache folder: %s" +msgstr "建立核心快取檔案夾: %s" + +#: arduino/cores/packagemanager/install_uninstall.go:216 +msgid "creating installed.json in %[1]s: %[2]s" +msgstr "在 %[1]s:%[2]s 建立 installed.json" + +#: arduino/resources/install.go:44 arduino/resources/install.go:48 +msgid "creating temp dir for extraction: %s" +msgstr "建立解壓縮用的臨時目錄: %s" + +#: arduino/builder/sizer/sizer.go:190 +msgid "data section exceeds available space in board" +msgstr "資料區已超出開發板的可用空間" + +#: commands/lib/resolve_deps.go:56 +msgid "dependency '%s' is not available" +msgstr "沒有 '%s' 的相依" + +#: legacy/builder/create_cmake_rule.go:126 +msgid "destination already exists" +msgstr "目的地已存在" + +#: arduino/libraries/librariesmanager/install.go:93 +msgid "destination dir %s already exists, cannot install" +msgstr "目標目錄 %s 已存在,無法安裝" + +#: arduino/libraries/librariesmanager/install.go:142 +msgid "destination directory already exists" +msgstr "目標目錄已存在" + +#: arduino/libraries/librariesmanager/install.go:282 +msgid "directory doesn't exist: %s" +msgstr "目錄不存在: %s" + +#: arduino/discovery/discoverymanager/discoverymanager.go:190 +msgid "discovery %[1]s process not started: %[2]w" +msgstr "探索 %[1]s 程序未啟動: %[2]w" + +#: arduino/cores/packagemanager/loader.go:756 +msgid "discovery %s not found" +msgstr "探索 %s找不到 " + +#: arduino/cores/packagemanager/loader.go:760 +msgid "discovery %s not installed" +msgstr "探索 %s 未安裝" + +#: arduino/cores/packagemanager/package_manager.go:698 +msgid "discovery release not found: %s" +msgstr "找不到探索發行: %s" + +#: internal/cli/core/download.go:39 internal/cli/core/install.go:41 +msgid "download a specific version (in this case 1.6.9)." +msgstr "下載特定版本(在本例中為 1.6.9)" + +#: internal/cli/core/download.go:38 internal/cli/core/install.go:39 +msgid "download the latest version of Arduino SAMD core." +msgstr "下載 Arduino SAMD 核心最新版" + +#: internal/cli/feedback/rpc_progress.go:73 +msgid "downloaded" +msgstr "已下載" + +#: commands/instances.go:138 +msgid "downloading %[1]s tool: %[2]s" +msgstr "正在下載 %[1]s 工具: %[2]s" + +#: arduino/cores/fqbn.go:48 +msgid "empty board identifier" +msgstr "清空開發板識別" + +#: arduino/sketch/sketch.go:92 +msgid "error loading sketch project file:" +msgstr "錯誤載入 sketch 專案:" + +#: arduino/cores/packagemanager/loader.go:650 +msgid "error opening %s" +msgstr "錯誤開啟 %s" + +#: internal/cli/config/set.go:67 +msgid "error parsing value: %v" +msgstr "錯誤解析數值: %v" + +#: arduino/sketch/profiles.go:193 +msgid "error parsing version constraints" +msgstr "錯誤解析版本限制" + +#: commands/board/list.go:116 +msgid "error processing response from server" +msgstr "錯誤處理伺服器回應" + +#: commands/board/list.go:96 +msgid "error querying Arduino Cloud Api" +msgstr "錯誤查詢 Arduino Cloud Api" + +#: arduino/resources/install.go:67 +msgid "extracting archive: %s" +msgstr "解開存檔: %s" + +#: arduino/libraries/librariesmanager/install.go:183 +msgid "extracting archive: %w" +msgstr "解開存檔: %w" + +#: arduino/resources/checksums.go:144 +msgid "failed to compute hash of file \"%s\"" +msgstr "計算 “%s” 檔的雜湊值失敗" + +#: commands/board/list.go:91 +msgid "failed to initialize http client" +msgstr "初始化 http 客戶端失敗" + +#: arduino/resources/checksums.go:96 +msgid "fetched archive size differs from size specified in index" +msgstr "抓取的存檔大小跟索引內指明的大小不同" + +#: arduino/resources/install.go:128 +msgid "files in archive must be placed in a subdirectory" +msgstr "存檔內的檔案必須放在子目錄下" + +#: arduino/cores/packagemanager/loader.go:61 +msgid "finding absolute path of %s" +msgstr "尋找 %s 的絕對路徑" + +#: internal/cli/cli.go:72 +msgid "flags" +msgstr "旗標" + +#: arduino/cores/packagemanager/loader.go:100 +msgid "following symlink %s" +msgstr "跟隨符式鏈接 %s" + +#: internal/cli/lib/download.go:39 +msgid "for a specific version." +msgstr "針對特定版本" + +#: internal/cli/lib/check_deps.go:40 internal/cli/lib/download.go:38 +#: internal/cli/lib/install.go:48 +msgid "for the latest version." +msgstr "針對最新版本" + +#: internal/cli/lib/check_deps.go:41 internal/cli/lib/install.go:49 +#: internal/cli/lib/install.go:51 +msgid "for the specific version." +msgstr "針對特定版本" + +#: internal/inventory/inventory.go:68 +msgid "generating installation.id: %w" +msgstr "產出 installation.id: %w" + +#: internal/inventory/inventory.go:74 +msgid "generating installation.secret: %w" +msgstr "產出 installation.secret: %w" + +#: arduino/resources/download.go:53 +msgid "getting archive file info: %s" +msgstr "取得存檔資訊: %s" + +#: arduino/resources/checksums.go:93 +msgid "getting archive info: %s" +msgstr "取得存檔資訊: %s" + +#: arduino/resources/checksums.go:66 arduino/resources/checksums.go:89 +#: arduino/resources/download.go:34 arduino/resources/helpers.go:38 +#: arduino/resources/install.go:55 +msgid "getting archive path: %s" +msgstr "取得存檔路徑: %s" + +#: arduino/cores/packagemanager/package_manager.go:311 +msgid "getting build properties for board %[1]s: %[2]s" +msgstr "取得開發板 %[1]s: %[2]s 的建構屬性" + +#: arduino/cores/packagemanager/download.go:106 +msgid "getting discovery dependencies for platform %[1]s: %[2]s" +msgstr "取得平台 %[1]s: %[2]s 的探索相依" + +#: arduino/cores/packagemanager/download.go:114 +msgid "getting monitor dependencies for platform %[1]s: %[2]s" +msgstr "取得平台 %[1]s: %[2]s 的監視器相依" + +#: arduino/cores/packagemanager/loader.go:711 +msgid "getting parent dir of %[1]s: %[2]s" +msgstr "取得 %[1]s: %[2]s 的父目錄" + +#: arduino/cores/packagemanager/download.go:99 +msgid "getting tool dependencies for platform %[1]s: %[2]s" +msgstr "取得平台 %[1]s: %[2]s 的工具相依" + +#: arduino/libraries/librariesmanager/install.go:153 +msgid "install directory not set" +msgstr "未設定安裝目錄" + +#: commands/instances.go:142 +msgid "installing %[1]s tool: %[2]s" +msgstr "安裝 %[1]s 工具: %[2]s" + +#: arduino/cores/packagemanager/install_uninstall.go:208 +msgid "installing platform %[1]s: %[2]s" +msgstr "安裝平台%[1]s: %[2]s" + +#: internal/cli/feedback/terminal.go:36 +msgid "interactive terminal not supported for the '%s' output format" +msgstr "互動終端不支援 '%s' 輸出格式" + +#: arduino/sketch/profiles.go:191 +msgid "invalid '%s' directive" +msgstr "無效的 '%s' 指令" + +#: arduino/discovery/discovery.go:212 +msgid "invalid 'add' message: missing port" +msgstr "無效的 “加入” 訊息:找不到連接埠" + +#: arduino/discovery/discovery.go:222 +msgid "invalid 'remove' message: missing port" +msgstr "無效的 “移除” 訊息:找不到連接埠" + +#: arduino/resources/checksums.go:44 +msgid "invalid checksum format: %s" +msgstr "無效的校驗碼格式: %s" + +#: arduino/cores/fqbn.go:54 arduino/cores/fqbn.go:59 +msgid "invalid config option: %s" +msgstr "無效的設定選項: %s" + +#: internal/cli/arguments/reference.go:90 +msgid "invalid empty core architecture '%s'" +msgstr "無效的空核心架構 '%s'" + +#: internal/cli/arguments/reference.go:67 +msgid "invalid empty core argument" +msgstr "無效的空核心參數" + +#: internal/cli/arguments/reference.go:86 +msgid "invalid empty core name '%s'" +msgstr "無效的空核心名 '%s'" + +#: internal/cli/arguments/reference.go:71 +msgid "invalid empty core reference '%s'" +msgstr "無效的空核心參照 '%s'" + +#: internal/cli/arguments/reference.go:76 +msgid "invalid empty core version: '%s'" +msgstr "無效的空核心版本: '%s'" + +#: internal/cli/lib/args.go:49 +msgid "invalid empty library name" +msgstr "無效的空程式庫名" + +#: internal/cli/lib/args.go:54 +msgid "invalid empty library version: %s" +msgstr "無效的空程式庫版本: %s" + +#: arduino/cores/board.go:142 +msgid "invalid empty option found" +msgstr "找到無效的空選項" + +#: arduino/libraries/librariesmanager/install.go:272 +msgid "invalid git url" +msgstr "無效的 git 網址" + +#: arduino/resources/checksums.go:48 +msgid "invalid hash '%[1]s': %[2]s" +msgstr "無效的雜湊 '%[1]s': %[2]s" + +#: internal/cli/arguments/reference.go:83 +msgid "invalid item %s" +msgstr "無效的項目 %s" + +#: arduino/sketch/profiles.go:225 +msgid "invalid library directive:" +msgstr "無效的程式庫指令:" + +#: arduino/libraries/libraries_layout.go:65 +msgid "invalid library layout: %s" +msgstr "無效的程式庫配置: %s" + +#: arduino/libraries/libraries_location.go:88 +msgid "invalid library location: %s" +msgstr "無效的程式庫位置: %s" + +#: arduino/libraries/loader.go:139 +msgid "invalid library: no header files found" +msgstr "無效的程式庫: 找不到 .h 標頭檔" + +#: arduino/cores/board.go:145 +msgid "invalid option '%s'" +msgstr "無效的選項 '%s'" + +#: internal/cli/arguments/show_properties.go:51 +msgid "invalid option '%s'." +msgstr "無效的選項 '%s'" + +#: internal/inventory/inventory.go:93 +msgid "invalid path creating config dir: %[1]s error: %[2]w" +msgstr "無效的建定目錄路徑: %[1]s 錯誤: %[2]w" + +#: internal/inventory/inventory.go:99 +msgid "invalid path writing inventory file: %[1]s error: %[2]w" +msgstr "無效的庫存檔路徑: %[1]s 錯誤:%[2]w" + +#: arduino/cores/packageindex/index.go:283 +msgid "invalid platform archive size: %s" +msgstr "無效的平台存檔大小: %s" + +#: arduino/sketch/profiles.go:195 +msgid "invalid platform identifier" +msgstr "無效的平台識別" + +#: arduino/sketch/profiles.go:205 +msgid "invalid platform index URL:" +msgstr "無效的平台索引位址:" + +#: arduino/cores/packagemanager/loader.go:363 +msgid "invalid pluggable monitor reference: %s" +msgstr "無效的插拔式監視器參照: %s" + +#: internal/cli/monitor/monitor.go:123 +msgid "invalid port configuration value for %s: %s" +msgstr "無效的連接埠設定值 %s : %s" + +#: internal/cli/monitor/monitor.go:131 +msgid "invalid port configuration: %s" +msgstr "無效的連接埠設定: %s" + +#: commands/upload/upload.go:643 +msgid "invalid recipe '%[1]s': %[2]s" +msgstr "無效的作法'%[1]s': %[2]s" + +#: commands/sketch/new.go:86 +msgid "" +"invalid sketch name \"%[1]s\": the first character must be alphanumeric or " +"\"_\", the following ones can also contain \"-\" and \".\". The last one " +"cannot be \".\"." +msgstr "無效的 sketch 名 \\\"%[1]s\\\": 首字元必須是英數字或底線, 接著可以是減號和逗點, 但最後字元不可以是逗點" + +#: arduino/cores/board.go:149 +msgid "invalid value '%[1]s' for option '%[2]s'" +msgstr "無效的 '%[2]s' 選項值 '%[1]s' " + +#: arduino/cores/packagemanager/loader.go:273 +msgid "invalid version directory %s" +msgstr "無效的版本目錄 %s" + +#: arduino/sketch/profiles.go:227 +msgid "invalid version:" +msgstr "無效的版本:" + +#: commands/daemon/settings.go:111 commands/daemon/settings.go:166 +msgid "key not found in settings" +msgstr "設定中找不到鍵值" + +#: internal/cli/core/search.go:45 +msgid "keywords" +msgstr "關鍵字" + +#: arduino/libraries/librariesmanager/install.go:130 +msgid "library %s already installed" +msgstr "程式庫 %s 已安裝" + +#: arduino/libraries/librariesmanager/install.go:319 +msgid "library not valid" +msgstr "程式庫無效" + +#: arduino/libraries/librariesmanager/librariesmanager.go:197 +msgid "library path does not exist: %s" +msgstr "程式庫路徑不存在: %s" + +#: arduino/serialutils/serialutils.go:67 +msgid "listing serial ports" +msgstr "列出序列埠" + +#: arduino/cores/packagemanager/loader.go:301 +#: arduino/cores/packagemanager/loader.go:310 +#: arduino/cores/packagemanager/loader.go:315 +msgid "loading %[1]s: %[2]s" +msgstr "載入 %[1]s: %[2]s" + +#: arduino/cores/packagemanager/loader.go:351 +msgid "loading boards: %s" +msgstr "載入開發板: %s" + +#: arduino/cores/packagemanager/loader.go:666 +msgid "loading bundled tools from %s" +msgstr "從 %s 載入整捆的工具" + +#: arduino/cores/packagemanager/package_manager.go:452 +#: arduino/cores/packagemanager/package_manager.go:467 +msgid "loading json index file %[1]s: %[2]s" +msgstr "載入json 索引檔 %[1]s:%[2]s" + +#: arduino/libraries/librariesmanager/librariesmanager.go:179 +#: arduino/libraries/librariesmanager/librariesmanager.go:202 +msgid "loading library from %[1]s: %[2]s" +msgstr "從 %[1]s: %[2]s載入程式庫" + +#: arduino/libraries/loader.go:54 +msgid "loading library.properties: %s" +msgstr "載入 library.properties: %s" + +#: arduino/cores/packagemanager/loader.go:250 +#: arduino/cores/packagemanager/loader.go:278 +msgid "loading platform release %s" +msgstr "載入平台發行版 %s" + +#: arduino/cores/packagemanager/loader.go:197 +msgid "loading platform.txt" +msgstr "載入 platform.txt" + +#: arduino/cores/packagemanager/profiles.go:44 +msgid "loading required platform %s" +msgstr "載入需要的平台 %s" + +#: arduino/cores/packagemanager/profiles.go:60 +msgid "loading required tool %s" +msgstr "載入需要的工具 %s" + +#: arduino/cores/packagemanager/loader.go:625 +msgid "loading tool release in %s" +msgstr "載入在 %s 的工具" + +#: arduino/cores/packagemanager/loader.go:190 +msgid "looking for boards.txt in %s" +msgstr "在 %s 尋找 boards.txt" + +#: arduino/sketch/sketch.go:76 +msgid "main file missing from sketch: %s" +msgstr "sketch 缺少主檔: %s" + +#: arduino/sketch/profiles.go:189 +msgid "missing '%s' directive" +msgstr "缺少 '%s' 指令" + +#: arduino/resources/checksums.go:40 +msgid "missing checksum for: %s" +msgstr "缺少 %s 的校驗碼" + +#: arduino/cores/packagemanager/package_manager.go:413 +msgid "missing package %[1]s referenced by board %[2]s" +msgstr "缺少開發板 %[2]s 參照的套件 %[1]s" + +#: internal/cli/core/upgrade.go:86 +msgid "missing package index for %s, future updates cannot be guaranteed" +msgstr "缺少 %s 的套件索引, 不保証未來更新與否" + +#: arduino/cores/packagemanager/package_manager.go:418 +msgid "missing platform %[1]s:%[2]s referenced by board %[3]s" +msgstr "缺少被開發板 %[3]s 參照的平台 %[1]s : %[2]s" + +#: arduino/cores/packagemanager/package_manager.go:423 +msgid "missing platform release %[1]s:%[2]s referenced by board %[3]s" +msgstr "缺少開發板 %[3]s 參照的平台發行版 %[1]s : %[2]s" + +#: arduino/cores/packagemanager/package_manager.go:709 +msgid "monitor release not found: %s" +msgstr "沒找到監視器發行版: %s" + +#: arduino/libraries/librariesmanager/install.go:201 +#: arduino/libraries/librariesmanager/install.go:250 +#: arduino/resources/install.go:96 +msgid "moving extracted archive to destination dir: %s" +msgstr "移動解壓縮的存檔到目標資料夾: %s" + +#: commands/upload/upload.go:766 +msgid "multiple build artifacts found: '%[1]s' and '%[2]s'" +msgstr "找到多個建構成品: '%[1]s' 和 '%[2]s'" + +#: arduino/sketch/sketch.go:68 +msgid "multiple main sketch files found (%[1]v, %[2]v)" +msgstr "找到多個 sketch 檔 (%[1]v, %[2]v)" + +#: arduino/cores/packagemanager/install_uninstall.go:320 +msgid "" +"no compatible version of %[1]s tools found for the current os, try " +"contacting %[2]s" +msgstr "沒找到目前作業系統相容工具版本 %[1]s,請聯絡 %[2]s" + +#: executils/process.go:40 +msgid "no executable specified" +msgstr "未指定執行檔" + +#: commands/daemon/daemon.go:100 +msgid "no instance specified" +msgstr "未指定實例" + +#: commands/upload/upload.go:721 +msgid "no sketch or build directory/file specified" +msgstr "未指定 sketch 或建構目錄/檔" + +#: arduino/sketch/sketch.go:55 +msgid "no such file or directory" +msgstr "沒有這檔案/目錄" + +#: arduino/resources/install.go:131 +msgid "no unique root dir in archive, found '%[1]s' and '%[2]s'" +msgstr "存檔中沒有單一的根目錄,找到了 '%[1]s' 和 '%[2]s'" + +#: commands/upload/upload.go:638 +msgid "no upload port provided" +msgstr "未提供上傳連接埠" + +#: arduino/sketch/sketch.go:274 +msgid "no valid sketch found in %[1]s: missing %[2]s" +msgstr "在 %[1]s 找不到有效的 sketch : 缺少 %[2]s" + +#: arduino/cores/packagemanager/download.go:128 +msgid "no versions available for the current OS, try contacting %s" +msgstr "目前的作業系統沒可用的版本,請聯絡 %s" + +#: internal/cli/feedback/terminal.go:39 +msgid "not running in a terminal" +msgstr "沒在終端執行" + +#: arduino/resources/checksums.go:71 arduino/resources/install.go:59 +msgid "opening archive file: %s" +msgstr "開啟存檔: %s" + +#: arduino/cores/packagemanager/loader.go:266 +msgid "opening boards.txt" +msgstr "開啟 boards.txt" + +#: arduino/serialutils/serialutils.go:38 +msgid "opening port at 1200bps" +msgstr "以 1200 bps 開啟連接埠" + +#: arduino/security/signatures.go:83 +msgid "opening signature file: %s" +msgstr "開啟簽名檔: %s" + +#: arduino/security/signatures.go:78 +msgid "opening target file: %s" +msgstr "開啟目標檔: %s" + +#: arduino/cores/packagemanager/download.go:76 arduino/cores/status.go:89 +#: arduino/cores/status.go:114 arduino/cores/status.go:141 +msgid "package %s not found" +msgstr "找不到套件 %s" + +#: arduino/cores/packagemanager/package_manager.go:481 +msgid "package '%s' not found" +msgstr "找不到套件 '%s'" + +#: arduino/cores/packagemanager/loader.go:221 +msgid "parsing IDE bundled index" +msgstr "解析 IDE 同捆的索引" + +#: arduino/cores/board.go:165 +#: arduino/cores/packagemanager/package_manager.go:252 +msgid "parsing fqbn: %s" +msgstr "解析 FQBN:%s" + +#: arduino/libraries/librariesindex/json.go:72 +msgid "parsing library_index.json: %s" +msgstr "解析 library_index.json: %s" + +#: arduino/cores/packagemanager/loader.go:181 +msgid "path is not a platform directory: %s" +msgstr "路徑不是平台目錄: %s" + +#: arduino/cores/packagemanager/download.go:80 +msgid "platform %[1]s not found in package %[2]s" +msgstr "%[2]s 套件裏找不到 %[1]s 平台" + +#: arduino/cores/packagemanager/download.go:92 +msgid "platform %s has no available releases" +msgstr "平台 %s 沒有可用的發行版" + +#: arduino/cores/packagemanager/package_manager.go:298 +msgid "platform %s is not installed" +msgstr "平台 %s 未安裝" + +#: arduino/cores/packagemanager/install_uninstall.go:176 +#: arduino/cores/packagemanager/install_uninstall.go:280 +#: arduino/cores/packagemanager/loader.go:457 commands/compile/compile.go:108 +msgid "platform not installed" +msgstr "平台未安裝" + +#: internal/cli/compile/compile.go:139 +msgid "please use --build-property instead." +msgstr "請改用 --build-property" + +#: arduino/discovery/discoverymanager/discoverymanager.go:126 +msgid "pluggable discovery already added: %s" +msgstr "已加入可插拔探索: %s" + +#: internal/cli/board/attach.go:34 +msgid "port" +msgstr "連接埠" + +#: internal/cli/arguments/port.go:125 +msgid "port not found: %[1]s %[2]s" +msgstr "沒找到連接埠: %[1]s %[2]s" + +#: arduino/monitor/monitor.go:236 +msgid "protocol version not supported: requested %[1]d, got %[2]d" +msgstr "協議版本不被支援: 要 %[1]d,卻得到 %[2]d" + +#: arduino/discovery/discovery.go:354 +msgid "protocol version not supported: requested 1, got %d" +msgstr "協議版本不被支援: 要 1,卻得到%d" + +#: arduino/cores/packagemanager/loader.go:716 +msgid "reading %[1]s: %[2]s" +msgstr "讀取 %[1]s: %[2]s" + +#: arduino/libraries/librariesmanager/librariesmanager.go:170 +msgid "reading dir %[1]s: %[2]s" +msgstr "讀取目錄 %[1]s: %[2]s" + +#: arduino/libraries/loader.go:198 +msgid "reading directory %[1]s content: %[2]w" +msgstr "讀取目錄 %[1]s 內容: %[2]w" + +#: arduino/cores/packagemanager/loader.go:71 +#: arduino/cores/packagemanager/loader.go:153 +#: arduino/cores/packagemanager/loader.go:260 +#: arduino/cores/packagemanager/loader.go:617 +msgid "reading directory %s" +msgstr "讀取目錄 %s" + +#: arduino/libraries/librariesmanager/install.go:292 +msgid "reading directory %s content: %w" +msgstr "讀取目錄%s 內容: %w" + +#: arduino/builder/sketch.go:89 +msgid "reading file %[1]s: %[2]s" +msgstr "讀取檔案%[1]s: %[2]s" + +#: arduino/sketch/sketch.go:205 +msgid "reading files: %v" +msgstr "讀取檔案: %v" + +#: arduino/libraries/librariesresolver/cpp.go:104 +msgid "reading lib headers: %s" +msgstr "讀取程式庫頭檔: %s" + +#: arduino/libraries/libraries.go:228 +msgid "reading lib src dir: %s" +msgstr "正在讀取 lib src 目錄: %s" + +#: arduino/libraries/libraries.go:116 +msgid "reading library headers: %w" +msgstr "讀取程式庫標頭檔:%w" + +#: arduino/libraries/librariesindex/json.go:66 +msgid "reading library_index.json: %s" +msgstr "讀取 library_index.json: %s" + +#: arduino/resources/install.go:121 +msgid "reading package root dir: %s" +msgstr "讀取套件根目錄: %s" + +#: commands/upload/upload.go:632 +msgid "recipe not found '%s'" +msgstr "作法未找到 %s" + +#: arduino/cores/packagemanager/package_manager.go:557 +msgid "release %[1]s not found for tool %[2]s" +msgstr "找不到工具 %[2]s 的發行版 %[1]s" + +#: arduino/cores/status.go:83 arduino/cores/status.go:107 +#: arduino/cores/status.go:134 +msgid "release cannot be nil" +msgstr "發行版不能是無" + +#: arduino/resources/download.go:44 +msgid "removing corrupted archive file: %s" +msgstr "刪除損壞的存檔 %s" + +#: arduino/libraries/librariesmanager/install.go:156 +msgid "removing library directory: %s" +msgstr "刪除程式庫目錄: %s" + +#: arduino/cores/packagemanager/install_uninstall.go:293 +msgid "removing platform files: %s" +msgstr "刪除平台檔: %s" + +#: arduino/cores/packagemanager/download.go:87 +msgid "required version %[1]s not found for platform %[2]s" +msgstr "找不到平台 %[2]s 需要的版本 %[1]s" + +#: arduino/security/signatures.go:74 +msgid "retrieving Arduino public keys: %s" +msgstr "取得 Arduino 公鑰:%s" + +#: arduino/libraries/loader.go:116 arduino/libraries/loader.go:154 +msgid "scanning examples: %s" +msgstr "掃描範例: %s" + +#: arduino/cores/packagemanager/loader.go:702 +msgid "searching for builtin_tools_versions.txt in %[1]s: %[2]s" +msgstr "在 %[1]s: %[2]s 尋找 builtin_tools_versions.txt" + +#: arduino/resources/install.go:73 +msgid "searching package root dir: %s" +msgstr "尋找套件根目錄: %s" + +#: arduino/serialutils/serialutils.go:48 +msgid "setting DTR to OFF" +msgstr "將 DTR 設為 OFF" + +#: commands/sketch/new.go:78 +msgid "sketch name cannot be empty" +msgstr "sketch 名字不能空白" + +#: commands/sketch/new.go:91 +msgid "sketch name cannot be the reserved name \"%[1]s\"" +msgstr "sketch 名字不能使用保留名'%[1]s'" + +#: commands/sketch/new.go:81 +msgid "" +"sketch name too long (%[1]d characters). Maximum allowed length is %[2]d" +msgstr "sketch 名字過長(%[1]d 字元)。 最大允許 %[2]d 字元" + +#: arduino/sketch/sketch.go:48 arduino/sketch/sketch.go:53 +msgid "sketch path is not valid" +msgstr "sketch 路徑無效" + +#: internal/cli/board/attach.go:34 internal/cli/sketch/archive.go:37 +msgid "sketchPath" +msgstr "sketchPath" + +#: legacy/builder/create_cmake_rule.go:118 +msgid "source is not a directory" +msgstr "來源不是目錄" + +#: arduino/discovery/discoverymanager/discoverymanager.go:194 +msgid "starting discovery %s" +msgstr "開始探索 %s" + +#: arduino/resources/checksums.go:118 +msgid "testing archive checksum: %s" +msgstr "測試存檔校驗碼: %s" + +#: arduino/resources/checksums.go:111 +msgid "testing archive size: %s" +msgstr "測試存檔大小: %s" + +#: arduino/resources/checksums.go:105 +msgid "testing if archive is cached: %s" +msgstr "測試存檔是否被快取: %s" + +#: arduino/resources/install.go:37 +msgid "testing local archive integrity: %s" +msgstr "測試本地存檔完整性: %s" + +#: arduino/builder/sizer/sizer.go:185 +msgid "text section exceeds available space in board" +msgstr "本文區已超出開發板的可用空間" + +#: arduino/builder/detector/detector.go:211 +#: arduino/builder/preprocessor/ctags.go:70 +msgid "the compilation database may be incomplete or inaccurate" +msgstr "編譯資料庫可能不完整或不準確" + +#: commands/core/list.go:63 +msgid "the platform has no releases" +msgstr "該平台沒有發行版" + +#: commands/board/list.go:103 +msgid "the server responded with status %s" +msgstr "伺服器回應狀態 %s" + +#: arduino/monitor/monitor.go:140 +msgid "timeout waiting for message" +msgstr "等待訊息超時" + +#: arduino/discovery/discovery.go:251 +msgid "timeout waiting for message from %s" +msgstr "等待來自 %s 的訊息超時" + +#: arduino/cores/packagemanager/install_uninstall.go:386 +msgid "tool %s is not managed by package manager" +msgstr "工具 %s 不是由套件管理員管理的" + +#: arduino/cores/status.go:93 arduino/cores/status.go:118 +#: arduino/cores/status.go:145 +msgid "tool %s not found" +msgstr "找不到工具 %s" + +#: arduino/cores/packagemanager/package_manager.go:507 +msgid "tool '%[1]s' not found in package '%[2]s'" +msgstr "套件 '%[2]s' 裏找不到工具 '%[1]s'" + +#: arduino/cores/packagemanager/install_uninstall.go:381 +msgid "tool not installed" +msgstr "工具未安裝" + +#: arduino/cores/packagemanager/package_manager.go:687 +#: arduino/cores/packagemanager/package_manager.go:793 +msgid "tool release not found: %s" +msgstr "工具發行未找到: %s" + +#: arduino/cores/status.go:97 +msgid "tool version %s not found" +msgstr "工具版本 %s 未找到" + +#: commands/lib/install.go:61 +msgid "" +"two different versions of the library %[1]s are required: %[2]s and %[3]s" +msgstr "需要兩個不同版本的程式庫 %[1]s : %[2]s 和 %[3]s" + +#: arduino/builder/sketch.go:82 arduino/builder/sketch.go:126 +msgid "unable to compute relative path to the sketch for the item" +msgstr "無法計算 sketch 的相對路徑" + +#: arduino/builder/sketch.go:53 +msgid "unable to create a folder to save the sketch" +msgstr "無法建立保存 sketch 的資料夾" + +#: arduino/builder/sketch.go:132 +msgid "unable to create the folder containing the item" +msgstr "無法建立含有項目的資料夾" + +#: internal/cli/config/dump.go:59 +msgid "unable to marshal config to YAML: %v" +msgstr "無法將 config 轉成 YAML: %v" + +#: arduino/builder/sketch.go:170 +msgid "unable to read contents of the destination item" +msgstr "無法讀取目標項目的內容" + +#: arduino/builder/sketch.go:143 +msgid "unable to read contents of the source item" +msgstr "無法讀取來源項目的內容" + +#: arduino/builder/sketch.go:153 +msgid "unable to write to destination file" +msgstr "無法寫入目標檔" + +#: arduino/cores/packagemanager/package_manager.go:286 +msgid "unknown package %s" +msgstr "未知的套件 %s" + +#: arduino/cores/packagemanager/package_manager.go:293 +msgid "unknown platform %s:%s" +msgstr "未知的平台 %s:%s" + +#: arduino/sketch/sketch.go:147 +msgid "unknown sketch file extension '%s'" +msgstr "未知的 sketch 副檔名 %s" + +#: arduino/resources/checksums.go:61 +msgid "unsupported hash algorithm: %s" +msgstr "未支援的雜湊演算法: %s" + +#: internal/cli/core/upgrade.go:43 +msgid "upgrade arduino:samd to the latest version" +msgstr "升級 arduino:samd 到最新版" + +#: internal/cli/core/upgrade.go:41 +msgid "upgrade everything to the latest version" +msgstr "升級全部內容到最新版" + +#: commands/upload/upload.go:667 +msgid "uploading error: %s" +msgstr "上傳錯誤: %s" + +#: arduino/libraries/librariesmanager/librariesmanager.go:153 +msgid "user directory not set" +msgstr "用戶目錄未設定" + +#: internal/cli/feedback/terminal.go:73 +msgid "user input not supported for the '%s' output format" +msgstr "用戶輸入不支援 '%s' 輸出格式" + +#: internal/cli/feedback/terminal.go:76 +msgid "user input not supported in non interactive mode" +msgstr "在非互動模式下不支援用戶輸入" + +#: arduino/cores/packagemanager/profiles.go:176 +msgid "version %s not available for this operating system" +msgstr "版本 %s 不適合本作業系統" + +#: arduino/cores/packagemanager/profiles.go:155 +msgid "version %s not found" +msgstr "沒找到版本 %s " + +#: commands/board/list.go:121 +msgid "wrong format in server response" +msgstr "伺服器回應錯誤格式" diff --git a/internal/cli/arguments/post_install.go b/internal/cli/arguments/pre_post_script.go similarity index 52% rename from internal/cli/arguments/post_install.go rename to internal/cli/arguments/pre_post_script.go index 1db4eb85645..99a54e02d94 100644 --- a/internal/cli/arguments/post_install.go +++ b/internal/cli/arguments/pre_post_script.go @@ -21,33 +21,47 @@ import ( "github.com/spf13/cobra" ) -// PostInstallFlags contains flags data used by the core install and the upgrade command +// PrePostScriptsFlags contains flags data used by the core install and the upgrade command // This is useful so all flags used by commands that need // this information are consistent with each other. -type PostInstallFlags struct { - runPostInstall bool // force the execution of installation scripts - skipPostInstall bool //skip the execution of installation scripts +type PrePostScriptsFlags struct { + runPostInstall bool // force the execution of installation scripts + skipPostInstall bool // skip the execution of installation scripts + runPreUninstall bool // force the execution of pre uninstall scripts + skipPreUninstall bool // skip the execution of pre uninstall scripts } // AddToCommand adds flags that can be used to force running or skipping // of post installation scripts -func (p *PostInstallFlags) AddToCommand(cmd *cobra.Command) { +func (p *PrePostScriptsFlags) AddToCommand(cmd *cobra.Command) { cmd.Flags().BoolVar(&p.runPostInstall, "run-post-install", false, tr("Force run of post-install scripts (if the CLI is not running interactively).")) cmd.Flags().BoolVar(&p.skipPostInstall, "skip-post-install", false, tr("Force skip of post-install scripts (if the CLI is running interactively).")) + cmd.Flags().BoolVar(&p.runPreUninstall, "run-pre-uninstall", false, tr("Force run of pre-uninstall scripts (if the CLI is not running interactively).")) + cmd.Flags().BoolVar(&p.skipPreUninstall, "skip-pre-uninstall", false, tr("Force skip of pre-uninstall scripts (if the CLI is running interactively).")) } // GetRunPostInstall returns the run-post-install flag value -func (p *PostInstallFlags) GetRunPostInstall() bool { +func (p *PrePostScriptsFlags) GetRunPostInstall() bool { return p.runPostInstall } // GetSkipPostInstall returns the skip-post-install flag value -func (p *PostInstallFlags) GetSkipPostInstall() bool { +func (p *PrePostScriptsFlags) GetSkipPostInstall() bool { return p.skipPostInstall } +// GetRunPreUninstall returns the run-post-install flag value +func (p *PrePostScriptsFlags) GetRunPreUninstall() bool { + return p.runPreUninstall +} + +// GetSkipPreUninstall returns the skip-post-install flag value +func (p *PrePostScriptsFlags) GetSkipPreUninstall() bool { + return p.skipPreUninstall +} + // DetectSkipPostInstallValue returns true if a post install script must be run -func (p *PostInstallFlags) DetectSkipPostInstallValue() bool { +func (p *PrePostScriptsFlags) DetectSkipPostInstallValue() bool { if p.GetRunPostInstall() { logrus.Info("Will run post-install by user request") return false @@ -64,3 +78,22 @@ func (p *PostInstallFlags) DetectSkipPostInstallValue() bool { logrus.Info("Running from console, will run post-install by default") return false } + +// DetectSkipPreUninstallValue returns true if a post install script must be run +func (p *PrePostScriptsFlags) DetectSkipPreUninstallValue() bool { + if p.GetRunPreUninstall() { + logrus.Info("Will run pre-uninstall by user request") + return false + } + if p.GetSkipPreUninstall() { + logrus.Info("Will skip pre-uninstall by user request") + return true + } + + if !configuration.IsInteractive { + logrus.Info("Not running from console, will skip pre-uninstall by default") + return true + } + logrus.Info("Running from console, will run pre-uninstall by default") + return false +} diff --git a/internal/cli/completion/completion.go b/internal/cli/completion/completion.go index 32b337eaf41..0dd05f8e315 100644 --- a/internal/cli/completion/completion.go +++ b/internal/cli/completion/completion.go @@ -25,7 +25,7 @@ import ( ) var ( - completionNoDesc bool //Disable completion description for shells that support it + completionNoDesc bool // Disable completion description for shells that support it tr = i18n.Tr ) diff --git a/internal/cli/core/install.go b/internal/cli/core/install.go index 9aa367740c5..8193a8b4344 100644 --- a/internal/cli/core/install.go +++ b/internal/cli/core/install.go @@ -31,7 +31,7 @@ import ( func initInstallCommand() *cobra.Command { var noOverwrite bool - var postInstallFlags arguments.PostInstallFlags + var scriptFlags arguments.PrePostScriptsFlags installCommand := &cobra.Command{ Use: fmt.Sprintf("install %s:%s[@%s]...", tr("PACKAGER"), tr("ARCH"), tr("VERSION")), Short: tr("Installs one or more cores and corresponding tool dependencies."), @@ -45,18 +45,18 @@ func initInstallCommand() *cobra.Command { arguments.CheckFlagsConflicts(cmd, "run-post-install", "skip-post-install") }, Run: func(cmd *cobra.Command, args []string) { - runInstallCommand(args, postInstallFlags, noOverwrite) + runInstallCommand(args, scriptFlags, noOverwrite) }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return arguments.GetInstallableCores(), cobra.ShellCompDirectiveDefault }, } - postInstallFlags.AddToCommand(installCommand) + scriptFlags.AddToCommand(installCommand) installCommand.Flags().BoolVar(&noOverwrite, "no-overwrite", false, tr("Do not overwrite already installed platforms.")) return installCommand } -func runInstallCommand(args []string, postInstallFlags arguments.PostInstallFlags, noOverwrite bool) { +func runInstallCommand(args []string, scriptFlags arguments.PrePostScriptsFlags, noOverwrite bool) { inst := instance.CreateAndInit() logrus.Info("Executing `arduino-cli core install`") @@ -67,12 +67,13 @@ func runInstallCommand(args []string, postInstallFlags arguments.PostInstallFlag for _, platformRef := range platformsRefs { platformInstallRequest := &rpc.PlatformInstallRequest{ - Instance: inst, - PlatformPackage: platformRef.PackageName, - Architecture: platformRef.Architecture, - Version: platformRef.Version, - SkipPostInstall: postInstallFlags.DetectSkipPostInstallValue(), - NoOverwrite: noOverwrite, + Instance: inst, + PlatformPackage: platformRef.PackageName, + Architecture: platformRef.Architecture, + Version: platformRef.Version, + SkipPostInstall: scriptFlags.DetectSkipPostInstallValue(), + NoOverwrite: noOverwrite, + SkipPreUninstall: scriptFlags.DetectSkipPreUninstallValue(), } _, err := core.PlatformInstall(context.Background(), platformInstallRequest, feedback.ProgressBar(), feedback.TaskProgress()) if err != nil { diff --git a/internal/cli/core/uninstall.go b/internal/cli/core/uninstall.go index fb31d4ea1b5..10992ef9bdf 100644 --- a/internal/cli/core/uninstall.go +++ b/internal/cli/core/uninstall.go @@ -30,21 +30,25 @@ import ( ) func initUninstallCommand() *cobra.Command { + var preUninstallFlags arguments.PrePostScriptsFlags uninstallCommand := &cobra.Command{ Use: fmt.Sprintf("uninstall %s:%s ...", tr("PACKAGER"), tr("ARCH")), Short: tr("Uninstalls one or more cores and corresponding tool dependencies if no longer used."), Long: tr("Uninstalls one or more cores and corresponding tool dependencies if no longer used."), Example: " " + os.Args[0] + " core uninstall arduino:samd\n", Args: cobra.MinimumNArgs(1), - Run: runUninstallCommand, + Run: func(cmd *cobra.Command, args []string) { + runUninstallCommand(args, preUninstallFlags) + }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return arguments.GetUninstallableCores(), cobra.ShellCompDirectiveDefault }, } + preUninstallFlags.AddToCommand(uninstallCommand) return uninstallCommand } -func runUninstallCommand(cmd *cobra.Command, args []string) { +func runUninstallCommand(args []string, preUninstallFlags arguments.PrePostScriptsFlags) { inst := instance.CreateAndInit() logrus.Info("Executing `arduino-cli core uninstall`") @@ -60,9 +64,10 @@ func runUninstallCommand(cmd *cobra.Command, args []string) { } for _, platformRef := range platformsRefs { _, err := core.PlatformUninstall(context.Background(), &rpc.PlatformUninstallRequest{ - Instance: inst, - PlatformPackage: platformRef.PackageName, - Architecture: platformRef.Architecture, + Instance: inst, + PlatformPackage: platformRef.PackageName, + Architecture: platformRef.Architecture, + SkipPreUninstall: preUninstallFlags.DetectSkipPreUninstallValue(), }, feedback.NewTaskProgressCB()) if err != nil { feedback.Fatal(tr("Error during uninstall: %v", err), feedback.ErrGeneric) diff --git a/internal/cli/core/upgrade.go b/internal/cli/core/upgrade.go index 7324fce12be..f8484dc985b 100644 --- a/internal/cli/core/upgrade.go +++ b/internal/cli/core/upgrade.go @@ -32,7 +32,7 @@ import ( ) func initUpgradeCommand() *cobra.Command { - var postInstallFlags arguments.PostInstallFlags + var postInstallFlags arguments.PrePostScriptsFlags upgradeCommand := &cobra.Command{ Use: fmt.Sprintf("upgrade [%s:%s] ...", tr("PACKAGER"), tr("ARCH")), Short: tr("Upgrades one or all installed platforms to the latest version."), @@ -43,21 +43,21 @@ func initUpgradeCommand() *cobra.Command { " # " + tr("upgrade arduino:samd to the latest version") + "\n" + " " + os.Args[0] + " core upgrade arduino:samd", Run: func(cmd *cobra.Command, args []string) { - runUpgradeCommand(args, postInstallFlags.DetectSkipPostInstallValue()) + runUpgradeCommand(args, postInstallFlags.DetectSkipPostInstallValue(), postInstallFlags.DetectSkipPreUninstallValue()) }, } postInstallFlags.AddToCommand(upgradeCommand) return upgradeCommand } -func runUpgradeCommand(args []string, skipPostInstall bool) { +func runUpgradeCommand(args []string, skipPostInstall bool, skipPreUninstall bool) { inst := instance.CreateAndInit() logrus.Info("Executing `arduino-cli core upgrade`") - Upgrade(inst, args, skipPostInstall) + Upgrade(inst, args, skipPostInstall, skipPreUninstall) } // Upgrade upgrades one or all installed platforms to the latest version. -func Upgrade(inst *rpc.Instance, args []string, skipPostInstall bool) { +func Upgrade(inst *rpc.Instance, args []string, skipPostInstall bool, skipPreUninstall bool) { // if no platform was passed, upgrade allthethings if len(args) == 0 { targets, err := core.PlatformList(&rpc.PlatformListRequest{ @@ -102,10 +102,11 @@ func Upgrade(inst *rpc.Instance, args []string, skipPostInstall bool) { } r := &rpc.PlatformUpgradeRequest{ - Instance: inst, - PlatformPackage: platformRef.PackageName, - Architecture: platformRef.Architecture, - SkipPostInstall: skipPostInstall, + Instance: inst, + PlatformPackage: platformRef.PackageName, + Architecture: platformRef.Architecture, + SkipPostInstall: skipPostInstall, + SkipPreUninstall: skipPreUninstall, } response, err := core.PlatformUpgrade(context.Background(), r, feedback.ProgressBar(), feedback.TaskProgress()) warningMissingIndex(response) diff --git a/internal/cli/lib/search.go b/internal/cli/lib/search.go index 2f62d5cad92..c44ced3778b 100644 --- a/internal/cli/lib/search.go +++ b/internal/cli/lib/search.go @@ -163,7 +163,7 @@ func (res result) String() string { out.WriteString(fmt.Sprintf(" "+tr("Category: %s")+"\n", latest.Category)) out.WriteString(fmt.Sprintf(" "+tr("Architecture: %s")+"\n", strings.Join(latest.Architectures, ", "))) out.WriteString(fmt.Sprintf(" "+tr("Types: %s")+"\n", strings.Join(latest.Types, ", "))) - out.WriteString(fmt.Sprintf(" "+tr("Versions: %s")+"\n", strings.Replace(fmt.Sprint(lib.GetAvailableVersions()), " ", ", ", -1))) + out.WriteString(fmt.Sprintf(" "+tr("Versions: %s")+"\n", strings.ReplaceAll(fmt.Sprint(lib.GetAvailableVersions()), " ", ", "))) if len(latest.ProvidesIncludes) > 0 { out.WriteString(fmt.Sprintf(" "+tr("Provides includes: %s")+"\n", strings.Join(latest.ProvidesIncludes, ", "))) } diff --git a/internal/cli/upgrade/upgrade.go b/internal/cli/upgrade/upgrade.go index 0cc93735d43..937abd845fa 100644 --- a/internal/cli/upgrade/upgrade.go +++ b/internal/cli/upgrade/upgrade.go @@ -31,7 +31,7 @@ var tr = i18n.Tr // NewCommand creates a new `upgrade` command func NewCommand() *cobra.Command { - var postInstallFlags arguments.PostInstallFlags + var postInstallFlags arguments.PrePostScriptsFlags upgradeCommand := &cobra.Command{ Use: "upgrade", Short: tr("Upgrades installed cores and libraries."), @@ -39,16 +39,16 @@ func NewCommand() *cobra.Command { Example: " " + os.Args[0] + " upgrade", Args: cobra.NoArgs, Run: func(cmd *cobra.Command, args []string) { - runUpgradeCommand(postInstallFlags.DetectSkipPostInstallValue()) + runUpgradeCommand(postInstallFlags.DetectSkipPostInstallValue(), postInstallFlags.DetectSkipPreUninstallValue()) }, } postInstallFlags.AddToCommand(upgradeCommand) return upgradeCommand } -func runUpgradeCommand(skipPostInstall bool) { +func runUpgradeCommand(skipPostInstall bool, skipPreUninstall bool) { inst := instance.CreateAndInit() logrus.Info("Executing `arduino-cli upgrade`") lib.Upgrade(inst, []string{}) - core.Upgrade(inst, []string{}, skipPostInstall) + core.Upgrade(inst, []string{}, skipPostInstall, skipPreUninstall) } diff --git a/internal/integrationtest/board/hardware_loading_test.go b/internal/integrationtest/board/hardware_loading_test.go index 05c650c7f0b..54bf8cffa14 100644 --- a/internal/integrationtest/board/hardware_loading_test.go +++ b/internal/integrationtest/board/hardware_loading_test.go @@ -151,7 +151,7 @@ func TestHardwareLoading(t *testing.T) { require.NoError(t, err) jsonOut := requirejson.Parse(t, out) if runtime.GOOS == "windows" { - //a package is a symlink, and windows does not support them + // a package is a symlink, and windows does not support them jsonOut.LengthMustEqualTo(2) } else { jsonOut.LengthMustEqualTo(3) diff --git a/internal/integrationtest/compile_3/core_caching_test.go b/internal/integrationtest/compile_3/core_caching_test.go index 856aad9c38e..4af201012bc 100644 --- a/internal/integrationtest/compile_3/core_caching_test.go +++ b/internal/integrationtest/compile_3/core_caching_test.go @@ -16,13 +16,13 @@ package compile_test import ( + "slices" "strings" "testing" "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" ) func TestCompileCoreCacheGeneration(t *testing.T) { diff --git a/internal/integrationtest/compile_4/compile_test.go b/internal/integrationtest/compile_4/compile_test.go index 09125b5e2e1..a61d68563a5 100644 --- a/internal/integrationtest/compile_4/compile_test.go +++ b/internal/integrationtest/compile_4/compile_test.go @@ -17,8 +17,10 @@ package compile_test import ( "bytes" + "cmp" "encoding/json" "os/exec" + "slices" "strings" "testing" "text/template" @@ -28,7 +30,7 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" + "go.bug.st/testifyjson/requirejson" ) func TestCompileOfProblematicSketches(t *testing.T) { @@ -63,6 +65,8 @@ func TestCompileOfProblematicSketches(t *testing.T) { require.NoError(t, err) _, _, err = cli.Run("lib", "install", "CapacitiveSensor@0.5") require.NoError(t, err) + _, _, err = cli.Run("lib", "install", "FastLED@3.1.0") + require.NoError(t, err) // Install custom hardware required for tests customHwDir, err := paths.New("..", "testdata", "user_hardware").Abs() @@ -99,12 +103,24 @@ func TestCompileOfProblematicSketches(t *testing.T) { {"SketchNoFunctionsTwoFiles", testBuilderSketchNoFunctionsTwoFiles}, {"SketchWithClassAndMethodSubstring", testBuilderSketchWithClassAndMethodSubstring}, {"SketchThatChecksIfSPIHasTransactions", tryBuildAvrLeonardo}, + {"SketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet", testBuilderSketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet}, {"SketchWithDependendLibraries", tryBuildAvrLeonardo}, {"SketchWithFunctionPointer", tryBuildAvrLeonardo}, {"USBHostExample", testBuilderUSBHostExample}, {"SketchWithConflictingLibraries", testBuilderSketchWithConflictingLibraries}, {"SketchLibraryProvidesAllIncludes", testBuilderSketchLibraryProvidesAllIncludes}, {"UserHardware", testBuilderWithUserHardware}, + {"SketchThatIncludesArduinoH", testBuilderSketchThatIncludesArduinoH}, + {"SketchWithStaticAsserts", testBuilderSketchWithStaticAsserts}, + {"SketchWithEnumClass", testBuilderSketchWithEnumClass}, + {"SketchWithExternC", testBuilderSketchWithExternC}, + {"SketchWithMultilinePrototypes", testBuilderSketchWithMultilinePrototypes}, + {"SketchWithExternCMultiline", testBuilderSketchWithExternCMultiline}, + {"SketchWithMultilineTemplate", testBuilderSketchWithMultilineTemplate}, + {"SketchWithFakeFunctionPointer", testBuilderSketchWithFakeFunctionPointer}, + {"SketchWithMinMaxDefinitions", testBuilderSketchWithMinMaxDefinitions}, + {"SketchWithFastledsLibrary", testBuilderSketchWithFastledsLibrary}, + {"SketchClassFunction", testBuilderSketchClassFunction}, }.Run(t, env, cli) } @@ -161,7 +177,7 @@ func testBuilderSketchWithSubfolders(t *testing.T, env *integrationtest.Environm // Build out, err := tryBuild(t, env, cli, "arduino:avr:leonardo") importedLibraries := out.BuilderResult.UsedLibraries - slices.SortFunc(importedLibraries, func(x, y *builderLibrary) bool { return x.Name < y.Name }) + slices.SortFunc(importedLibraries, func(x, y *builderLibrary) int { return cmp.Compare(x.Name, y.Name) }) require.NoError(t, err) require.Equal(t, 3, len(importedLibraries)) require.Equal(t, "testlib1", importedLibraries[0].Name) @@ -387,6 +403,7 @@ func testBuilderBridgeExample(t *testing.T, env *integrationtest.Environment, cl // Simulate a library use in libraries build path require.NoError(t, buildPath.Join("libraries", "SPI").MkdirAll()) + require.NoError(t, buildPath.Join("libraries", "dummy_file").WriteFile([]byte{})) // Build again... _, err = tryBuild(t, env, cli, "arduino:avr:leonardo", &buildOptions{NoClean: true}) @@ -394,6 +411,7 @@ func testBuilderBridgeExample(t *testing.T, env *integrationtest.Environment, cl require.False(t, buildPath.Join("libraries", "SPI").Exist()) require.True(t, buildPath.Join("libraries", "Bridge").Exist()) + require.True(t, buildPath.Join("libraries", "dummy_file").Exist()) }) t.Run("Preprocess", func(t *testing.T) { @@ -553,7 +571,8 @@ func testBuilderSketchWithConflictingLibraries(t *testing.T, env *integrationtes out, err := tryBuild(t, env, cli, "arduino:avr:leonardo") require.NoError(t, err) libs := out.BuilderResult.UsedLibraries - slices.SortFunc(libs, func(x, y *builderLibrary) bool { return x.Name < y.Name }) + + slices.SortFunc(libs, func(x, y *builderLibrary) int { return cmp.Compare(x.Name, y.Name) }) require.Len(t, libs, 2) require.Equal(t, "Bridge", libs[0].Name) require.Equal(t, "IRremote", libs[1].Name) @@ -566,7 +585,7 @@ func testBuilderSketchLibraryProvidesAllIncludes(t *testing.T, env *integrationt out, err := tryBuild(t, env, cli, "arduino:avr:leonardo") require.NoError(t, err) libs := out.BuilderResult.UsedLibraries - slices.SortFunc(libs, func(x, y *builderLibrary) bool { return x.Name < y.Name }) + slices.SortFunc(libs, func(x, y *builderLibrary) int { return cmp.Compare(x.Name, y.Name) }) require.Len(t, libs, 2) require.Equal(t, "ANewLibrary-master", libs[0].Name) require.Equal(t, "IRremote", libs[1].Name) @@ -611,6 +630,179 @@ func tryBuildAvrLeonardo(t *testing.T, env *integrationtest.Environment, cli *in require.NoError(t, err) } +func testBuilderSketchThatIncludesArduinoH(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithStaticAsserts(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithEnumClass(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithExternC(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithMultilinePrototypes(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithExternCMultiline(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithMultilineTemplate(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithFakeFunctionPointer(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithMinMaxDefinitions(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:samd:arduino_zero_native") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:samd:arduino_zero_native") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchWithFastledsLibrary(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:samd:arduino_zero_native") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:samd:arduino_zero_native") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchClassFunction(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + }) + + t.Run("Preprocess", func(t *testing.T) { + // Preprocess + sketchPath, preprocessedSketch, err := tryPreprocess(t, env, cli, "arduino:avr:leonardo") + require.NoError(t, err) + comparePreprocessGoldenFile(t, sketchPath, preprocessedSketch) + }) +} + +func testBuilderSketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet(t *testing.T, env *integrationtest.Environment, cli *integrationtest.ArduinoCLI) { + t.Run("Build", func(t *testing.T) { + // Build + _, err := tryBuild(t, env, cli, "arduino:avr:leonardo") + require.Error(t, err) + }) +} + type builderOutput struct { CompilerOut string `json:"compiler_out"` CompilerErr string `json:"compiler_err"` @@ -709,7 +901,7 @@ func comparePreprocessGoldenFile(t *testing.T, sketchDir *paths.Path, preprocess err = tpl.Execute(&buf, data) require.NoError(t, err) - require.Equal(t, buf.String(), strings.Replace(preprocessedSketch, "\r\n", "\n", -1)) + require.Equal(t, buf.String(), strings.ReplaceAll(preprocessedSketch, "\r\n", "\n")) } func TestCoreCaching(t *testing.T) { @@ -763,3 +955,88 @@ func TestCoreCaching(t *testing.T) { require.NoError(t, err) require.NotEqual(t, coreStatBefore.ModTime(), coreStatAfterTouch.ModTime()) } + +func TestMergeSketchWithBootloader(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + sketchPath, err := paths.New("testdata", "SketchWithMergedSketchAndBootloader").Abs() + require.NoError(t, err) + + // Install Arduino AVR Boards + _, _, err = cli.Run("core", "install", "arduino:avr@1.8.6") + require.NoError(t, err) + + buildPath, err := paths.MkTempDir("", "arduino-integration-test") + require.NoError(t, err) + defer buildPath.RemoveAll() + + // Build first time + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(), sketchPath.String()) + require.NoError(t, err) + + bytes, err := buildPath.Join("SketchWithMergedSketchAndBootloader.ino.with_bootloader.hex").ReadFile() + require.NoError(t, err) + mergedSketchHex := string(bytes) + + require.Contains(t, mergedSketchHex, ":100000000C9434000C9446000C9446000C9446006A\n") + require.True(t, strings.HasSuffix(mergedSketchHex, ":00000001FF\n")) +} + +func TestBuildOptionsFile(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + sketchPath := cli.CopySketch("sketch_simple") + defer sketchPath.RemoveAll() + + _, _, err := cli.Run("core", "install", "arduino:avr@1.8.6") + require.NoError(t, err) + + buildPath, err := paths.MkTempDir("", "arduino-integration-test") + require.NoError(t, err) + defer buildPath.RemoveAll() + + // Build first time + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(), sketchPath.String()) + require.NoError(t, err) + + exist, err := buildPath.Join("build.options.json").ExistCheck() + require.NoError(t, err) + require.True(t, exist) + + buildOptionsBytes, err := buildPath.Join("build.options.json").ReadFile() + require.NoError(t, err) + + requirejson.Query(t, buildOptionsBytes, "keys", `[ + "additionalFiles", + "builtInToolsFolders", + "compiler.optimization_flags", + "customBuildProperties", + "fqbn", + "hardwareFolders", + "otherLibrariesFolders", + "sketchLocation" + ]`) + requirejson.Query(t, buildOptionsBytes, ".fqbn", `"arduino:avr:uno"`) + requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"build.warn_data_percentage=75"`) + + // Recompiling a second time should provide the same result + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(), sketchPath.String()) + require.NoError(t, err) + + buildOptionsBytes, err = buildPath.Join("build.options.json").ReadFile() + require.NoError(t, err) + requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"build.warn_data_percentage=75"`) + + // Recompiling with a new build option must produce a new `build.options.json` + _, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(), + "--build-property", "custom=prop", + sketchPath.String(), + ) + require.NoError(t, err) + + buildOptionsBytes, err = buildPath.Join("build.options.json").ReadFile() + require.NoError(t, err) + requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"custom=prop,build.warn_data_percentage=75"`) +} diff --git a/legacy/builder/test/sketch_class_function/sketch_class_function.ino b/internal/integrationtest/compile_4/testdata/SketchClassFunction/SketchClassFunction.ino similarity index 100% rename from legacy/builder/test/sketch_class_function/sketch_class_function.ino rename to internal/integrationtest/compile_4/testdata/SketchClassFunction/SketchClassFunction.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchClassFunction/SketchClassFunction.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchClassFunction/SketchClassFunction.preprocessed.txt new file mode 100644 index 00000000000..a49a869b9fe --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchClassFunction/SketchClassFunction.preprocessed.txt @@ -0,0 +1,17 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +class test { + void asdf() {} +}; +#line 4 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 7 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 8 {{QuoteCppString .sketchMainFile}} +void asdf(); +#line 4 {{QuoteCppString .sketchMainFile}} +void setup() { + asdf(); +} +void loop() {} +void asdf() {} diff --git a/legacy/builder/test/sketch_that_checks_if_SPI_has_transactions_and_includes_missing_Ethernet/sketch.ino b/internal/integrationtest/compile_4/testdata/SketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet/SketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet.ino similarity index 100% rename from legacy/builder/test/sketch_that_checks_if_SPI_has_transactions_and_includes_missing_Ethernet/sketch.ino rename to internal/integrationtest/compile_4/testdata/SketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet/SketchThatChecksIfSPIHasTransactionsAndIncludesMissingEthernet.ino diff --git a/legacy/builder/test/sketch_that_includes_arduino_h/sketch_that_includes_arduino_h.ino b/internal/integrationtest/compile_4/testdata/SketchThatIncludesArduinoH/SketchThatIncludesArduinoH.ino similarity index 100% rename from legacy/builder/test/sketch_that_includes_arduino_h/sketch_that_includes_arduino_h.ino rename to internal/integrationtest/compile_4/testdata/SketchThatIncludesArduinoH/SketchThatIncludesArduinoH.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchThatIncludesArduinoH/SketchThatIncludesArduinoH.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchThatIncludesArduinoH/SketchThatIncludesArduinoH.preprocessed.txt new file mode 100644 index 00000000000..574062c29d2 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchThatIncludesArduinoH/SketchThatIncludesArduinoH.preprocessed.txt @@ -0,0 +1,21 @@ +#line 1 {{QuoteCppString .sketchMainFile}} +// Arduino.h should not be automatically included by the Arduino +// preprocessor before the explicit include line in this sketch. + +#if defined(HIGH) +#error Arduino.h seems to be automatically included +#endif + + # include + +#line 10 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 13 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 10 {{QuoteCppString .sketchMainFile}} +void setup() { +} + +void loop() { +} + diff --git a/legacy/builder/test/sketch_with_enum_class/sketch_with_enum_class.ino b/internal/integrationtest/compile_4/testdata/SketchWithEnumClass/SketchWithEnumClass.ino similarity index 100% rename from legacy/builder/test/sketch_with_enum_class/sketch_with_enum_class.ino rename to internal/integrationtest/compile_4/testdata/SketchWithEnumClass/SketchWithEnumClass.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithEnumClass/SketchWithEnumClass.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithEnumClass/SketchWithEnumClass.preprocessed.txt new file mode 100644 index 00000000000..5aaae6f52ad --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithEnumClass/SketchWithEnumClass.preprocessed.txt @@ -0,0 +1,31 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +#line 1 {{QuoteCppString .sketchMainFile}} +void test(); +#line 11 {{QuoteCppString .sketchMainFile}} +void test2(); +#line 14 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 17 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 1 {{QuoteCppString .sketchMainFile}} +void test() { + test2(); +} + +enum class MyEnum +{ + AValue = 0, + AnotherValue = 1 +}; + +void test2() { +} + +void setup() { +} + +void loop() { +} + + diff --git a/legacy/builder/test/sketch_with_externC/sketch_with_externC.ino b/internal/integrationtest/compile_4/testdata/SketchWithExternC/SketchWithExternC.ino similarity index 100% rename from legacy/builder/test/sketch_with_externC/sketch_with_externC.ino rename to internal/integrationtest/compile_4/testdata/SketchWithExternC/SketchWithExternC.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithExternC/SketchWithExternC.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithExternC/SketchWithExternC.preprocessed.txt new file mode 100644 index 00000000000..c067a742cdd --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithExternC/SketchWithExternC.preprocessed.txt @@ -0,0 +1,20 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +#line 1 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 6 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 11 {{QuoteCppString .sketchMainFile}} + extern "C" void test(); +#line 1 {{QuoteCppString .sketchMainFile}} +void setup() { + // put your setup code here, to run once: + test(); +} + +void loop() { + // put your main code here, to run repeatedly: + +} + +extern "C" void test() {} diff --git a/legacy/builder/test/sketch_with_externC_multiline/sketch_with_externC_multiline.ino b/internal/integrationtest/compile_4/testdata/SketchWithExternCMultiline/SketchWithExternCMultiline.ino similarity index 100% rename from legacy/builder/test/sketch_with_externC_multiline/sketch_with_externC_multiline.ino rename to internal/integrationtest/compile_4/testdata/SketchWithExternCMultiline/SketchWithExternCMultiline.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithExternCMultiline/SketchWithExternCMultiline.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithExternCMultiline/SketchWithExternCMultiline.preprocessed.txt new file mode 100644 index 00000000000..f40f61fe921 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithExternCMultiline/SketchWithExternCMultiline.preprocessed.txt @@ -0,0 +1,51 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +#line 1 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 5 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 15 {{QuoteCppString .sketchMainFile}} + extern "C" void test2(); +#line 20 {{QuoteCppString .sketchMainFile}} + extern "C" void test4(); +#line 26 {{QuoteCppString .sketchMainFile}} + extern "C" void test6(); +#line 30 {{QuoteCppString .sketchMainFile}} +void test7(); +#line 32 {{QuoteCppString .sketchMainFile}} + extern "C" void test10(); +#line 1 {{QuoteCppString .sketchMainFile}} +void setup() { + // put your setup code here, to run once: + } + + void loop() { + // put your main code here, to run repeatedly: + test2(); + test4(); + test6(); + test7(); + test10(); + } + + extern "C" { + void test2() {} + } + + extern "C" + { + void test4() {} + } + + extern "C" + + { + void test6() {} + } + + // this function should not have C linkage + void test7() {} + + extern "C" void test10() { + + }; diff --git a/legacy/builder/test/sketch_with_fake_function_pointer/sketch_with_fake_function_pointer.ino b/internal/integrationtest/compile_4/testdata/SketchWithFakeFunctionPointer/SketchWithFakeFunctionPointer.ino similarity index 100% rename from legacy/builder/test/sketch_with_fake_function_pointer/sketch_with_fake_function_pointer.ino rename to internal/integrationtest/compile_4/testdata/SketchWithFakeFunctionPointer/SketchWithFakeFunctionPointer.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithFakeFunctionPointer/SketchWithFakeFunctionPointer.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithFakeFunctionPointer/SketchWithFakeFunctionPointer.preprocessed.txt new file mode 100644 index 00000000000..4fb3e3e61f1 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithFakeFunctionPointer/SketchWithFakeFunctionPointer.preprocessed.txt @@ -0,0 +1,27 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +template< uint16_t nBuffSize > + class Foo{ + public: + + template< uint16_t N > + Foo &operator +=( const Foo &ref ){ + //... + return *this; + } +}; + +Foo<64> a; +Foo<32> b; + +#line 15 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 19 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 15 {{QuoteCppString .sketchMainFile}} +void setup(){ + a += b; +} + +void loop(){} + diff --git a/legacy/builder/test/sketch_fastleds/sketch_fastleds.ino b/internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.ino similarity index 99% rename from legacy/builder/test/sketch_fastleds/sketch_fastleds.ino rename to internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.ino index eba4f5265cf..82c208e69c0 100644 --- a/legacy/builder/test/sketch_fastleds/sketch_fastleds.ino +++ b/internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.ino @@ -24,4 +24,4 @@ SimplePatternList gPatterns = {sinelon}; void sinelon() { -} \ No newline at end of file +} diff --git a/internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.preprocessed.txt new file mode 100644 index 00000000000..e770d0c709b --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithFastledsLibrary/SketchWithFastledsLibrary.preprocessed.txt @@ -0,0 +1,37 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +#include "FastLED.h" + +#define DATA_PIN 7 +#define CLK_PIN 6 +#define LED_TYPE APA102 +#define COLOR_ORDER GRB +#define NUM_LEDS 79 +CRGB leds[NUM_LEDS]; + +#define BRIGHTNESS 96 +#define FRAMES_PER_SECOND 120 +#line 12 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 17 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 25 {{QuoteCppString .sketchMainFile}} +void sinelon(); +#line 12 {{QuoteCppString .sketchMainFile}} +void setup() { + + FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); +} + +void loop() { + +} + +typedef void (*SimplePatternList[])(); +//SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, sinelon, juggle, bpm }; +SimplePatternList gPatterns = {sinelon}; + +void sinelon() +{ +} + diff --git a/legacy/builder/test/sketch1/sketch1.ino b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/SketchWithMergedSketchAndBootloader.ino similarity index 94% rename from legacy/builder/test/sketch1/sketch1.ino rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/SketchWithMergedSketchAndBootloader.ino index 0d5e0f5ceb9..32f56baab79 100644 --- a/legacy/builder/test/sketch1/sketch1.ino +++ b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/SketchWithMergedSketchAndBootloader.ino @@ -4,4 +4,4 @@ void setup() { void loop() { -} \ No newline at end of file +} diff --git a/legacy/builder/test/sketch1/doc.txt b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/doc.txt similarity index 100% rename from legacy/builder/test/sketch1/doc.txt rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/doc.txt diff --git a/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/header.h b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/header.h new file mode 100644 index 00000000000..eb6f60040f0 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/header.h @@ -0,0 +1 @@ +#define TRUE FALSE diff --git a/legacy/builder/test/sketch1/merged_sketch.txt b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/merged_sketch.txt similarity index 100% rename from legacy/builder/test/sketch1/merged_sketch.txt rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/merged_sketch.txt diff --git a/legacy/builder/test/sketch1/old.pde b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/old.pde similarity index 100% rename from legacy/builder/test/sketch1/old.pde rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/old.pde diff --git a/legacy/builder/test/sketch1/other.ino b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/other.ino similarity index 94% rename from legacy/builder/test/sketch1/other.ino rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/other.ino index c426196c017..b0f732c3f50 100644 --- a/legacy/builder/test/sketch1/other.ino +++ b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/other.ino @@ -1,3 +1,3 @@ String hello() { return "world"; -} \ No newline at end of file +} diff --git a/legacy/builder/test/sketch1/s_file.S b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/s_file.S similarity index 100% rename from legacy/builder/test/sketch1/s_file.S rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/s_file.S diff --git a/legacy/builder/test/sketch1/src/helper.h b/internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/src/helper.h similarity index 100% rename from legacy/builder/test/sketch1/src/helper.h rename to internal/integrationtest/compile_4/testdata/SketchWithMergedSketchAndBootloader/src/helper.h diff --git a/legacy/builder/test/sketch12/sketch12.ino b/internal/integrationtest/compile_4/testdata/SketchWithMinMaxDefinitions/SketchWithMinMaxDefinitions.ino similarity index 100% rename from legacy/builder/test/sketch12/sketch12.ino rename to internal/integrationtest/compile_4/testdata/SketchWithMinMaxDefinitions/SketchWithMinMaxDefinitions.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithMinMaxDefinitions/SketchWithMinMaxDefinitions.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithMinMaxDefinitions/SketchWithMinMaxDefinitions.preprocessed.txt new file mode 100644 index 00000000000..140c8f2b30a --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithMinMaxDefinitions/SketchWithMinMaxDefinitions.preprocessed.txt @@ -0,0 +1,26 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +// See: https://github.com/arduino/arduino-builder/issues/68 + +// The following avoid duplicate definitions of min and max +#undef min +#undef max + +#include + +#line 9 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 13 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 15 {{QuoteCppString .sketchMainFile}} +void test(); +#line 9 {{QuoteCppString .sketchMainFile}} +void setup() { + test(); +} + +void loop() {} + +void test() {} + + diff --git a/legacy/builder/test/sketch_with_multiline_prototypes/sketch_with_multiline_prototypes.ino b/internal/integrationtest/compile_4/testdata/SketchWithMultilinePrototypes/SketchWithMultilinePrototypes.ino similarity index 100% rename from legacy/builder/test/sketch_with_multiline_prototypes/sketch_with_multiline_prototypes.ino rename to internal/integrationtest/compile_4/testdata/SketchWithMultilinePrototypes/SketchWithMultilinePrototypes.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithMultilinePrototypes/SketchWithMultilinePrototypes.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithMultilinePrototypes/SketchWithMultilinePrototypes.preprocessed.txt new file mode 100644 index 00000000000..513eea23055 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithMultilinePrototypes/SketchWithMultilinePrototypes.preprocessed.txt @@ -0,0 +1,76 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +#line 1 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 12 {{QuoteCppString .sketchMainFile}} +void myctagstestfunc(int a, int b, int c, int d); +#line 17 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 18 {{QuoteCppString .sketchMainFile}} +void test(); +#line 21 {{QuoteCppString .sketchMainFile}} +void test3(); +#line 25 {{QuoteCppString .sketchMainFile}} +void test5(int a, int b, int c); +#line 33 {{QuoteCppString .sketchMainFile}} +void test7(); +#line 36 {{QuoteCppString .sketchMainFile}} +void test8(); +#line 44 {{QuoteCppString .sketchMainFile}} +void test9(int a, int b); +#line 50 {{QuoteCppString .sketchMainFile}} +void test10(int a, int b, int c ); +#line 1 {{QuoteCppString .sketchMainFile}} +void setup() { + myctagstestfunc(1,2,3,4); + test(); + test3(); + test5(1,2,3); + test7(); + test8(); + test9(42, 42); + test10(0,0,0); +} + +void myctagstestfunc(int a, +int b, +int c, +int d) { } + +void loop() {} + +void +test() {} + +void +// comment +test3() {} + +void +test5(int a, + int b, + int c) +{ + +} + +void /* comment */ +test7() {} + +void +/* +multi +line +comment +*/ +test8() {} + + void + /* comment */ + test9(int a, + int b) {} + +void test10(int a, // this + int b, // doesn't + int c // work + ) {} diff --git a/legacy/builder/test/sketch_with_multiline_template/sketch_with_multiline_template.ino b/internal/integrationtest/compile_4/testdata/SketchWithMultilineTemplate/SketchWithMultilineTemplate.ino similarity index 100% rename from legacy/builder/test/sketch_with_multiline_template/sketch_with_multiline_template.ino rename to internal/integrationtest/compile_4/testdata/SketchWithMultilineTemplate/SketchWithMultilineTemplate.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithMultilineTemplate/SketchWithMultilineTemplate.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithMultilineTemplate/SketchWithMultilineTemplate.preprocessed.txt new file mode 100644 index 00000000000..bf3b3ae2e32 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithMultilineTemplate/SketchWithMultilineTemplate.preprocessed.txt @@ -0,0 +1,20 @@ +#include +#line 0 {{QuoteCppString .sketchMainFile}} +template< typename T > T func(T t); +#line 6 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 10 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 0 {{QuoteCppString .sketchMainFile}} +#line 1 {{QuoteCppString .sketchMainFile}} +template< typename T > +T func(T t){ + return t * t; +} + +void setup() { + func( 12.34f ); +} + +void loop() {} + diff --git a/legacy/builder/test/sketch_with_static_asserts/sketch_with_static_asserts.ino b/internal/integrationtest/compile_4/testdata/SketchWithStaticAsserts/SketchWithStaticAsserts.ino similarity index 100% rename from legacy/builder/test/sketch_with_static_asserts/sketch_with_static_asserts.ino rename to internal/integrationtest/compile_4/testdata/SketchWithStaticAsserts/SketchWithStaticAsserts.ino diff --git a/internal/integrationtest/compile_4/testdata/SketchWithStaticAsserts/SketchWithStaticAsserts.preprocessed.txt b/internal/integrationtest/compile_4/testdata/SketchWithStaticAsserts/SketchWithStaticAsserts.preprocessed.txt new file mode 100644 index 00000000000..87c352443c5 --- /dev/null +++ b/internal/integrationtest/compile_4/testdata/SketchWithStaticAsserts/SketchWithStaticAsserts.preprocessed.txt @@ -0,0 +1,26 @@ +#include +#line 1 {{QuoteCppString .sketchMainFile}} +// https://github.com/arduino/arduino-builder/issues/68 + +const int a = 10; +const int b = 20; + +static_assert(a < b, "bar"); + +#line 8 {{QuoteCppString .sketchMainFile}} +void setup(); +#line 12 {{QuoteCppString .sketchMainFile}} +void loop(); +#line 15 {{QuoteCppString .sketchMainFile}} +void test(); +#line 8 {{QuoteCppString .sketchMainFile}} +void setup() { + test(); +} + +void loop() { +} + +void test() { +} + diff --git a/internal/integrationtest/core/core_test.go b/internal/integrationtest/core/core_test.go index 40742676fa5..ae4330b4b8a 100644 --- a/internal/integrationtest/core/core_test.go +++ b/internal/integrationtest/core/core_test.go @@ -1056,7 +1056,7 @@ func TestCoreUpgradeWarningWithPackageInstalledButNotIndexed(t *testing.T) { // install 3rd-party core outdated version _, _, err = cli.Run("core", "install", "test:x86@1.0.0", "--additional-urls="+url) require.NoError(t, err) - //upgrade without index fires a warning + // upgrade without index fires a warning jsonStdout, _, _ := cli.Run("core", "upgrade", "test:x86", "--format", "json") requirejson.Query(t, jsonStdout, ".warnings[]", `"missing package index for test:x86, future updates cannot be guaranteed"`) }) diff --git a/internal/integrationtest/daemon/daemon_test.go b/internal/integrationtest/daemon/daemon_test.go index cbb227293c4..d550ea2ed09 100644 --- a/internal/integrationtest/daemon/daemon_test.go +++ b/internal/integrationtest/daemon/daemon_test.go @@ -187,7 +187,7 @@ func TestDaemonCompileOptions(t *testing.T) { // https://github.com/arduino/arduino-cli/issues/2016 // assert that the task progress is increasing and doesn't contain multiple 100% values results := analyzer.Results[""] - require.True(t, results[len(results)-1].Completed) + require.True(t, results[len(results)-1].Completed, fmt.Sprintf("latest percent value: %v", results[len(results)-1].Percent)) require.IsNonDecreasing(t, f.Map(results, (*commands.TaskProgress).GetPercent)) } diff --git a/internal/integrationtest/outdated/outdated_test.go b/internal/integrationtest/outdated/outdated_test.go index 77f7c54bcd4..85773a838d0 100644 --- a/internal/integrationtest/outdated/outdated_test.go +++ b/internal/integrationtest/outdated/outdated_test.go @@ -27,7 +27,7 @@ func TestOutdated(t *testing.T) { env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() - //Updates index for cores and libraries + // Updates index for cores and libraries _, _, err := cli.Run("core", "update-index") require.NoError(t, err) _, _, err = cli.Run("lib", "update-index") diff --git a/internal/integrationtest/upload/upload_test.go b/internal/integrationtest/upload/upload_test.go index e81bb5e1562..7407c5af31e 100644 --- a/internal/integrationtest/upload/upload_test.go +++ b/internal/integrationtest/upload/upload_test.go @@ -41,7 +41,7 @@ type board struct { func detectedBoards(t *testing.T, cli *integrationtest.ArduinoCLI) []board { // This fixture provides a list of all the boards attached to the host. // This fixture will parse the JSON output of `arduino-cli board list --format json` - //to extract all the connected boards data. + // to extract all the connected boards data. // :returns a list `Board` objects. diff --git a/internal/inventory/inventory.go b/internal/inventory/inventory.go index ff7aab2c549..d366278e1e7 100644 --- a/internal/inventory/inventory.go +++ b/internal/inventory/inventory.go @@ -22,7 +22,7 @@ import ( "sync" "github.com/arduino/arduino-cli/i18n" - "github.com/gofrs/uuid" + "github.com/gofrs/uuid/v5" "github.com/sirupsen/logrus" "github.com/spf13/viper" ) diff --git a/legacy/builder/.gitignore b/legacy/builder/.gitignore deleted file mode 100644 index 0df12e548b2..00000000000 --- a/legacy/builder/.gitignore +++ /dev/null @@ -1,81 +0,0 @@ -bin -src/github.com -src/golang.org -./arduino-builder - -# Created by .ignore support plugin (hsz.mobi) -### Go template -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - - - -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm - -*.iml - -## Directory-based project format: -.idea/ -# if you remove the above rule, at least ignore the following: - -# User-specific stuff: -# .idea/workspace.xml -# .idea/tasks.xml -# .idea/dictionaries - -# Sensitive or high-churn files: -# .idea/dataSources.ids -# .idea/dataSources.xml -# .idea/sqlDataSources.xml -# .idea/dynamic.xml -# .idea/uiDesigner.xml - -# Gradle: -# .idea/gradle.xml -# .idea/libraries - -# Mongo Explorer plugin: -# .idea/mongoSettings.xml - -## File-based project format: -*.ipr -*.iws - -## Plugin-specific files: - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties diff --git a/legacy/builder/builder.go b/legacy/builder/builder.go deleted file mode 100644 index c36335aa799..00000000000 --- a/legacy/builder/builder.go +++ /dev/null @@ -1,447 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "reflect" - "time" - - "github.com/arduino/arduino-cli/arduino/builder" - "github.com/arduino/arduino-cli/arduino/builder/preprocessor" - "github.com/arduino/arduino-cli/arduino/builder/sizer" - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/i18n" - "github.com/arduino/arduino-cli/legacy/builder/types" - "github.com/arduino/go-paths-helper" - properties "github.com/arduino/go-properties-orderedmap" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -) - -var tr = i18n.Tr - -const DEFAULT_DEBUG_LEVEL = 5 - -type Builder struct{} - -func (s *Builder) Run(ctx *types.Context) error { - if err := ctx.BuildPath.MkdirAll(); err != nil { - return err - } - - var _err, mainErr error - commands := []types.Command{ - containerBuildOptions(ctx), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.prebuild", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride, ctx.SketchBuildPath) - return _err - }), - - logIfVerbose(false, tr("Detecting libraries used...")), - findIncludes(ctx), - - warnAboutArchIncompatibleLibraries(ctx), - - logIfVerbose(false, tr("Generating function prototypes...")), - preprocessSketchCommand(ctx), - - logIfVerbose(false, tr("Compiling sketch...")), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.sketch.prebuild", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - sketchObjectFiles, err := builder.SketchBuilder( - ctx.SketchBuildPath, - ctx.BuildProperties, - ctx.SketchLibrariesDetector.IncludeFolders(), - ctx.OnlyUpdateCompilationDatabase, - ctx.CompilationDatabase, - ctx.Builder.Jobs(), - ctx.BuilderLogger, - &ctx.Progress, ctx.ProgressCB, - ) - if err != nil { - return err - } - ctx.SketchObjectFiles = sketchObjectFiles - return nil - }), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.sketch.postbuild", ".pattern", true) - }), - - logIfVerbose(false, tr("Compiling libraries...")), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.libraries.prebuild", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - return UnusedCompiledLibrariesRemover( - ctx.LibrariesBuildPath, - ctx.SketchLibrariesDetector.ImportedLibraries(), - ) - }), - - types.BareCommand(func(ctx *types.Context) error { - librariesObjectFiles, err := builder.LibrariesBuilder( - ctx.LibrariesBuildPath, - ctx.BuildProperties, - ctx.SketchLibrariesDetector.IncludeFolders(), - ctx.SketchLibrariesDetector.ImportedLibraries(), - ctx.OnlyUpdateCompilationDatabase, - ctx.CompilationDatabase, - ctx.Builder.Jobs(), - ctx.BuilderLogger, - &ctx.Progress, ctx.ProgressCB, - ) - if err != nil { - return err - } - ctx.LibrariesObjectFiles = librariesObjectFiles - - return nil - }), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.libraries.postbuild", ".pattern", true) - }), - - logIfVerbose(false, tr("Compiling core...")), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.core.prebuild", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - objectFiles, archiveFile, err := builder.CoreBuilder( - ctx.BuildPath, ctx.CoreBuildPath, ctx.Builder.CoreBuildCachePath(), - ctx.BuildProperties, - ctx.ActualPlatform, - ctx.OnlyUpdateCompilationDatabase, ctx.Clean, - ctx.CompilationDatabase, - ctx.Builder.Jobs(), - ctx.BuilderLogger, - &ctx.Progress, ctx.ProgressCB, - ) - - ctx.CoreObjectsFiles = objectFiles - ctx.CoreArchiveFilePath = archiveFile - - return err - }), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.core.postbuild", ".pattern", true) - }), - - logIfVerbose(false, tr("Linking everything together...")), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.linking.prelink", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - verboseInfoOut, err := builder.Linker( - ctx.OnlyUpdateCompilationDatabase, - ctx.SketchObjectFiles, - ctx.LibrariesObjectFiles, - ctx.CoreObjectsFiles, - ctx.CoreArchiveFilePath, - ctx.BuildPath, - ctx.BuildProperties, - ctx.BuilderLogger, - ) - if ctx.BuilderLogger.Verbose() { - ctx.BuilderLogger.Info(string(verboseInfoOut)) - } - return err - }), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.linking.postlink", ".pattern", true) - }), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.objcopy.preobjcopy", ".pattern", false) - }), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.objcopy.", ".pattern", true) - }), - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.objcopy.postobjcopy", ".pattern", true) - }), - - types.BareCommand(func(ctx *types.Context) error { - return MergeSketchWithBootloader( - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildPath, ctx.Builder.Sketch(), ctx.BuildProperties, - ctx.BuilderLogger, - ) - }), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.postbuild", ".pattern", true) - }), - } - - ctx.Progress.AddSubSteps(len(commands) + 5) - defer ctx.Progress.RemoveSubSteps() - - for _, command := range commands { - PrintRingNameIfDebug(ctx, command) - err := command.Run(ctx) - if err != nil { - mainErr = errors.WithStack(err) - break - } - ctx.Progress.CompleteStep() - ctx.PushProgress() - } - - if ctx.CompilationDatabase != nil { - ctx.CompilationDatabase.SaveToFile() - } - - var otherErr error - commands = []types.Command{ - types.BareCommand(func(ctx *types.Context) error { - ctx.SketchLibrariesDetector.PrintUsedAndNotUsedLibraries(mainErr != nil) - return nil - }), - - types.BareCommand(func(ctx *types.Context) error { - infoOut, _ := PrintUsedLibrariesIfVerbose(ctx.BuilderLogger.Verbose(), ctx.SketchLibrariesDetector.ImportedLibraries()) - ctx.BuilderLogger.Info(string(infoOut)) - return nil - }), - - types.BareCommand(func(ctx *types.Context) error { - normalOutput, verboseOutput, err := ExportProjectCMake( - mainErr != nil, - ctx.BuildPath, ctx.SketchBuildPath, - ctx.SketchLibrariesDetector.ImportedLibraries(), - ctx.BuildProperties, - ctx.Builder.Sketch(), - ctx.SketchLibrariesDetector.IncludeFolders(), - ctx.LineOffset, - ctx.OnlyUpdateCompilationDatabase, - ) - if ctx.BuilderLogger.Verbose() { - ctx.BuilderLogger.WriteStdout(verboseOutput) - } else { - ctx.BuilderLogger.WriteStdout(normalOutput) - } - return err - }), - - types.BareCommand(func(ctx *types.Context) error { - executableSectionsSize, err := sizer.Size( - ctx.OnlyUpdateCompilationDatabase, mainErr != nil, - ctx.BuildProperties, - ctx.BuilderLogger, - ) - ctx.ExecutableSectionsSize = executableSectionsSize - return err - }), - } - for _, command := range commands { - PrintRingNameIfDebug(ctx, command) - err := command.Run(ctx) - if err != nil { - otherErr = errors.WithStack(err) - break - } - ctx.Progress.CompleteStep() - ctx.PushProgress() - } - - if mainErr != nil { - return mainErr - } - - return otherErr -} - -func preprocessSketchCommand(ctx *types.Context) types.BareCommand { - return func(ctx *types.Context) error { - normalOutput, verboseOutput, err := PreprocessSketch( - ctx.Builder.Sketch(), ctx.BuildPath, ctx.SketchLibrariesDetector.IncludeFolders(), ctx.LineOffset, - ctx.BuildProperties, ctx.OnlyUpdateCompilationDatabase) - if ctx.BuilderLogger.Verbose() { - ctx.BuilderLogger.WriteStdout(verboseOutput) - } else { - ctx.BuilderLogger.WriteStdout(normalOutput) - } - return err - } -} - -func PreprocessSketch( - sketch *sketch.Sketch, buildPath *paths.Path, includes paths.PathList, lineOffset int, - buildProperties *properties.Map, onlyUpdateCompilationDatabase bool, -) ([]byte, []byte, error) { - // In the future we might change the preprocessor - preprocessorImpl := preprocessor.PreprocessSketchWithCtags - return preprocessorImpl(sketch, buildPath, includes, lineOffset, buildProperties, onlyUpdateCompilationDatabase) -} - -type Preprocess struct{} - -func (s *Preprocess) Run(ctx *types.Context) error { - if err := ctx.BuildPath.MkdirAll(); err != nil { - return err - } - - var _err error - commands := []types.Command{ - containerBuildOptions(ctx), - - types.BareCommand(func(ctx *types.Context) error { - return recipeByPrefixSuffixRunner(ctx, "recipe.hooks.prebuild", ".pattern", false) - }), - - types.BareCommand(func(ctx *types.Context) error { - ctx.LineOffset, _err = ctx.Builder.PrepareSketchBuildPath(ctx.SourceOverride, ctx.SketchBuildPath) - return _err - }), - - findIncludes(ctx), - - warnAboutArchIncompatibleLibraries(ctx), - - preprocessSketchCommand(ctx), - } - - if err := runCommands(ctx, commands); err != nil { - return err - } - - // Output arduino-preprocessed source - preprocessedSketch, err := ctx.SketchBuildPath.Join(ctx.Builder.Sketch().MainFile.Base() + ".cpp").ReadFile() - if err != nil { - return err - } - ctx.BuilderLogger.WriteStdout(preprocessedSketch) - return nil -} - -func runCommands(ctx *types.Context, commands []types.Command) error { - ctx.Progress.AddSubSteps(len(commands)) - defer ctx.Progress.RemoveSubSteps() - - for _, command := range commands { - PrintRingNameIfDebug(ctx, command) - err := command.Run(ctx) - if err != nil { - return errors.WithStack(err) - } - ctx.Progress.CompleteStep() - ctx.PushProgress() - } - return nil -} - -func PrintRingNameIfDebug(ctx *types.Context, command types.Command) { - logrus.Debugf("Ts: %d - Running: %s", time.Now().Unix(), reflect.Indirect(reflect.ValueOf(command)).Type().Name()) -} - -func RunBuilder(ctx *types.Context) error { - return runCommands(ctx, []types.Command{&Builder{}}) -} - -func RunPreprocess(ctx *types.Context) error { - command := Preprocess{} - return command.Run(ctx) -} - -func findIncludes(ctx *types.Context) types.BareCommand { - return types.BareCommand(func(ctx *types.Context) error { - return ctx.SketchLibrariesDetector.FindIncludes( - ctx.BuildPath, - ctx.BuildProperties.GetPath("build.core.path"), - ctx.BuildProperties.GetPath("build.variant.path"), - ctx.SketchBuildPath, - ctx.Builder.Sketch(), - ctx.LibrariesBuildPath, - ctx.BuildProperties, - ctx.TargetPlatform.Platform.Architecture, - ) - }) -} - -func logIfVerbose(warn bool, msg string) types.BareCommand { - return types.BareCommand(func(ctx *types.Context) error { - if !ctx.BuilderLogger.Verbose() { - return nil - } - if warn { - ctx.BuilderLogger.Warn(msg) - } else { - ctx.BuilderLogger.Info(msg) - } - return nil - }) -} - -func recipeByPrefixSuffixRunner(ctx *types.Context, prefix, suffix string, skipIfOnlyUpdatingCompilationDatabase bool) error { - return RecipeByPrefixSuffixRunner( - prefix, suffix, skipIfOnlyUpdatingCompilationDatabase, - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildProperties, - ctx.BuilderLogger, - ) -} - -func containerBuildOptions(ctx *types.Context) types.BareCommand { - return types.BareCommand(func(ctx *types.Context) error { - // TODO here we can pass only the properties we're reading from the - // ctx.BuildProperties - buildOptionsJSON, buildOptionsJSONPrevious, infoMessage, err := ContainerBuildOptions( - ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs, - ctx.BuiltInLibrariesDirs, ctx.BuildPath, ctx.Builder.Sketch(), ctx.CustomBuildProperties, - ctx.FQBN.String(), ctx.Clean, ctx.BuildProperties, - ) - if infoMessage != "" { - ctx.BuilderLogger.Info(infoMessage) - } - if err != nil { - return err - } - - ctx.BuildOptionsJson = buildOptionsJSON - ctx.BuildOptionsJsonPrevious = buildOptionsJSONPrevious - - return nil - }) -} - -func warnAboutArchIncompatibleLibraries(ctx *types.Context) types.BareCommand { - return types.BareCommand(func(ctx *types.Context) error { - overrides, _ := ctx.BuildProperties.GetOk("architecture.override_check") - WarnAboutArchIncompatibleLibraries( - ctx.TargetPlatform, - overrides, - ctx.SketchLibrariesDetector.ImportedLibraries(), - func(s string) { ctx.BuilderLogger.Info(s) }, - ) - return nil - }) -} diff --git a/legacy/builder/constants/constants.go b/legacy/builder/constants/constants.go deleted file mode 100644 index 31287e769da..00000000000 --- a/legacy/builder/constants/constants.go +++ /dev/null @@ -1,47 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// Copyright 2015 Matthijs Kooijman -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package constants - -const BUILD_OPTIONS_FILE = "build.options.json" -const BUILD_PROPERTIES_ARCH_OVERRIDE_CHECK = "architecture.override_check" -const BUILD_PROPERTIES_BOOTLOADER_FILE = "bootloader.file" -const BUILD_PROPERTIES_BOOTLOADER_NOBLINK = "bootloader.noblink" -const BUILD_PROPERTIES_BUILD_BOARD = "build.board" -const BUILD_PROPERTIES_COMPILER_LDFLAGS = "compiler.ldflags" -const BUILD_PROPERTIES_COMPILER_CPP_FLAGS = "compiler.cpp.flags" -const FOLDER_BOOTLOADERS = "bootloaders" -const FOLDER_CORE = "core" -const FOLDER_SKETCH = "sketch" -const FOLDER_TOOLS = "tools" -const FOLDER_LIBRARIES = "libraries" -const LIBRARY_ALL_ARCHS = "*" -const LIBRARY_EMAIL = "email" -const LIBRARY_FOLDER_SRC = "src" -const LOG_LEVEL_DEBUG = "debug" -const LOG_LEVEL_ERROR = "error" -const LOG_LEVEL_INFO = "info" -const LOG_LEVEL_WARN = "warn" - -const PACKAGE_NAME = "name" -const PACKAGE_TOOLS = "tools" -const PLATFORM_ARCHITECTURE = "architecture" -const PLATFORM_URL = "url" -const PLATFORM_VERSION = "version" -const RECIPE_C_COMBINE_PATTERN = "recipe.c.combine.pattern" -const TOOL_NAME = "name" -const TOOL_URL = "url" -const TOOL_VERSION = "version" diff --git a/legacy/builder/container_build_options.go b/legacy/builder/container_build_options.go deleted file mode 100644 index 6302bc558f7..00000000000 --- a/legacy/builder/container_build_options.go +++ /dev/null @@ -1,60 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/go-paths-helper" - properties "github.com/arduino/go-properties-orderedmap" - "github.com/pkg/errors" -) - -func ContainerBuildOptions( - hardwareDirs, builtInToolsDirs, otherLibrariesDirs paths.PathList, - builtInLibrariesDirs, buildPath *paths.Path, - sketch *sketch.Sketch, - customBuildProperties []string, - fqbn string, - clean bool, - buildProperties *properties.Map, -) (string, string, string, error) { - buildOptionsJSON, err := CreateBuildOptionsMap( - hardwareDirs, builtInToolsDirs, otherLibrariesDirs, - builtInLibrariesDirs, sketch, customBuildProperties, - fqbn, buildProperties.Get("compiler.optimization_flags"), - ) - if err != nil { - return "", "", "", errors.WithStack(err) - } - - buildOptionsJSONPrevious, err := LoadPreviousBuildOptionsMap(buildPath) - if err != nil { - return "", "", "", errors.WithStack(err) - } - - infoOut, err := WipeoutBuildPathIfBuildOptionsChanged( - clean, - buildPath, - buildOptionsJSON, - buildOptionsJSONPrevious, - buildProperties, - ) - if err != nil { - return "", "", "", errors.WithStack(err) - } - - return buildOptionsJSON, buildOptionsJSONPrevious, infoOut, StoreBuildOptionsMap(buildPath, buildOptionsJSON) -} diff --git a/legacy/builder/create_build_options_map.go b/legacy/builder/create_build_options_map.go deleted file mode 100644 index 23240f56bc1..00000000000 --- a/legacy/builder/create_build_options_map.go +++ /dev/null @@ -1,63 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "encoding/json" - "strings" - - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/go-paths-helper" - properties "github.com/arduino/go-properties-orderedmap" - "github.com/pkg/errors" -) - -func CreateBuildOptionsMap( - hardwareDirs, builtInToolsDirs, otherLibrariesDirs paths.PathList, - builtInLibrariesDirs *paths.Path, - sketch *sketch.Sketch, - customBuildProperties []string, - fqbn, compilerOptimizationFlags string, -) (string, error) { - opts := properties.NewMap() - opts.Set("hardwareFolders", strings.Join(hardwareDirs.AsStrings(), ",")) - opts.Set("builtInToolsFolders", strings.Join(builtInToolsDirs.AsStrings(), ",")) - if builtInLibrariesDirs != nil { - opts.Set("builtInLibrariesFolders", builtInLibrariesDirs.String()) - } - opts.Set("otherLibrariesFolders", strings.Join(otherLibrariesDirs.AsStrings(), ",")) - opts.SetPath("sketchLocation", sketch.FullPath) - var additionalFilesRelative []string - absPath := sketch.FullPath.Parent() - for _, f := range sketch.AdditionalFiles { - relPath, err := f.RelTo(absPath) - if err != nil { - continue // ignore - } - additionalFilesRelative = append(additionalFilesRelative, relPath.String()) - } - opts.Set("fqbn", fqbn) - opts.Set("customBuildProperties", strings.Join(customBuildProperties, ",")) - opts.Set("additionalFiles", strings.Join(additionalFilesRelative, ",")) - opts.Set("compiler.optimization_flags", compilerOptimizationFlags) - - buildOptionsJSON, err := json.MarshalIndent(opts, "", " ") - if err != nil { - return "", errors.WithStack(err) - } - - return string(buildOptionsJSON), nil -} diff --git a/legacy/builder/merge_sketch_with_bootloader.go b/legacy/builder/merge_sketch_with_bootloader.go deleted file mode 100644 index 7d77204de33..00000000000 --- a/legacy/builder/merge_sketch_with_bootloader.go +++ /dev/null @@ -1,160 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "math" - "strconv" - "strings" - - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" - "github.com/marcinbor85/gohex" - "github.com/pkg/errors" -) - -func MergeSketchWithBootloader( - onlyUpdateCompilationDatabase bool, - buildPath *paths.Path, - sketch *sketch.Sketch, - buildProperties *properties.Map, - builderLogger *logger.BuilderLogger, -) error { - if onlyUpdateCompilationDatabase { - return nil - } - - if !buildProperties.ContainsKey(constants.BUILD_PROPERTIES_BOOTLOADER_NOBLINK) && !buildProperties.ContainsKey(constants.BUILD_PROPERTIES_BOOTLOADER_FILE) { - return nil - } - - sketchFileName := sketch.MainFile.Base() - sketchInBuildPath := buildPath.Join(sketchFileName + ".hex") - sketchInSubfolder := buildPath.Join(constants.FOLDER_SKETCH, sketchFileName+".hex") - - var builtSketchPath *paths.Path - if sketchInBuildPath.Exist() { - builtSketchPath = sketchInBuildPath - } else if sketchInSubfolder.Exist() { - builtSketchPath = sketchInSubfolder - } else { - return nil - } - - bootloader := "" - if bootloaderNoBlink, ok := buildProperties.GetOk(constants.BUILD_PROPERTIES_BOOTLOADER_NOBLINK); ok { - bootloader = bootloaderNoBlink - } else { - bootloader = buildProperties.Get(constants.BUILD_PROPERTIES_BOOTLOADER_FILE) - } - bootloader = buildProperties.ExpandPropsInString(bootloader) - - bootloaderPath := buildProperties.GetPath("runtime.platform.path").Join(constants.FOLDER_BOOTLOADERS, bootloader) - if bootloaderPath.NotExist() { - if builderLogger.Verbose() { - builderLogger.Warn(tr("Bootloader file specified but missing: %[1]s", bootloaderPath)) - } - return nil - } - - mergedSketchPath := builtSketchPath.Parent().Join(sketchFileName + ".with_bootloader.hex") - - // Ignore merger errors for the first iteration - maximumBinSize := 16000000 - if uploadMaxSize, ok := buildProperties.GetOk("upload.maximum_size"); ok { - maximumBinSize, _ = strconv.Atoi(uploadMaxSize) - maximumBinSize *= 2 - } - err := merge(builtSketchPath, bootloaderPath, mergedSketchPath, maximumBinSize) - if err != nil && builderLogger.Verbose() { - builderLogger.Info(err.Error()) - } - - return nil -} - -func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximumBinSize int) error { - if bootloaderPath.Ext() == ".bin" { - bootloaderPath = paths.New(strings.TrimSuffix(bootloaderPath.String(), ".bin") + ".hex") - } - - memBoot := gohex.NewMemory() - if bootFile, err := bootloaderPath.Open(); err == nil { - defer bootFile.Close() - if err := memBoot.ParseIntelHex(bootFile); err != nil { - return errors.New(bootFile.Name() + " " + err.Error()) - } - } else { - return err - } - - memSketch := gohex.NewMemory() - if buildFile, err := builtSketchPath.Open(); err == nil { - defer buildFile.Close() - if err := memSketch.ParseIntelHex(buildFile); err != nil { - return errors.New(buildFile.Name() + " " + err.Error()) - } - } else { - return err - } - - memMerged := gohex.NewMemory() - initialAddress := uint32(math.MaxUint32) - lastAddress := uint32(0) - - for _, segment := range memBoot.GetDataSegments() { - if err := memMerged.AddBinary(segment.Address, segment.Data); err != nil { - continue - } - if segment.Address < initialAddress { - initialAddress = segment.Address - } - if segment.Address+uint32(len(segment.Data)) > lastAddress { - lastAddress = segment.Address + uint32(len(segment.Data)) - } - } - for _, segment := range memSketch.GetDataSegments() { - if err := memMerged.AddBinary(segment.Address, segment.Data); err != nil { - continue - } - if segment.Address < initialAddress { - initialAddress = segment.Address - } - if segment.Address+uint32(len(segment.Data)) > lastAddress { - lastAddress = segment.Address + uint32(len(segment.Data)) - } - } - - if mergeFile, err := mergedSketchPath.Create(); err == nil { - defer mergeFile.Close() - memMerged.DumpIntelHex(mergeFile, 16) - } else { - return err - } - - // Write out a .bin if the addresses doesn't go too far away from origin - // (and consequently produce a very large bin) - size := lastAddress - initialAddress - if size > uint32(maximumBinSize) { - return nil - } - mergedSketchPathBin := paths.New(strings.TrimSuffix(mergedSketchPath.String(), ".hex") + ".bin") - data := memMerged.ToBinary(initialAddress, size, 0xFF) - return mergedSketchPathBin.WriteFile(data) -} diff --git a/legacy/builder/print_used_libraries_if_verbose.go b/legacy/builder/print_used_libraries_if_verbose.go deleted file mode 100644 index 1ae369d30a2..00000000000 --- a/legacy/builder/print_used_libraries_if_verbose.go +++ /dev/null @@ -1,54 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "bytes" - "time" - - "github.com/arduino/arduino-cli/arduino/libraries" -) - -func PrintUsedLibrariesIfVerbose(verbose bool, importedLibraries libraries.List) ([]byte, error) { - if !verbose || len(importedLibraries) == 0 { - return nil, nil - } - - infoBuf := &bytes.Buffer{} - for _, library := range importedLibraries { - legacy := "" - if library.IsLegacy { - legacy = tr("(legacy)") - } - if library.Version.String() == "" { - infoBuf.WriteString( - tr("Using library %[1]s in folder: %[2]s %[3]s", - library.Name, - library.InstallDir, - legacy)) - } else { - infoBuf.WriteString( - tr("Using library %[1]s at version %[2]s in folder: %[3]s %[4]s", - library.Name, - library.Version, - library.InstallDir, - legacy)) - } - } - - time.Sleep(100 * time.Millisecond) - return infoBuf.Bytes(), nil -} diff --git a/legacy/builder/store_build_options_map.go b/legacy/builder/store_build_options_map.go deleted file mode 100644 index bc872d76d63..00000000000 --- a/legacy/builder/store_build_options_map.go +++ /dev/null @@ -1,25 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/go-paths-helper" -) - -func StoreBuildOptionsMap(buildPath *paths.Path, buildOptionsJson string) error { - return buildPath.Join(constants.BUILD_OPTIONS_FILE).WriteFile([]byte(buildOptionsJson)) -} diff --git a/legacy/builder/test/.gitignore b/legacy/builder/test/.gitignore deleted file mode 100644 index c49bbb5b804..00000000000 --- a/legacy/builder/test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -downloaded_* diff --git a/legacy/builder/test/builder_test.go b/legacy/builder/test/builder_test.go deleted file mode 100644 index e6af9105ebc..00000000000 --- a/legacy/builder/test/builder_test.go +++ /dev/null @@ -1,143 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "fmt" - "path/filepath" - "testing" - - bldr "github.com/arduino/arduino-cli/arduino/builder" - "github.com/arduino/arduino-cli/arduino/builder/detector" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/cores/packagemanager" - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" - "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func cleanUpBuilderTestContext(t *testing.T, ctx *types.Context) { - if ctx.BuildPath != nil { - err := ctx.BuildPath.RemoveAll() - require.NoError(t, err) - } -} - -type skipContextPreparationStepName string - -const skipLibraries = skipContextPreparationStepName("libraries") - -func prepareBuilderTestContext(t *testing.T, ctx *types.Context, sketchPath *paths.Path, fqbn string, skips ...skipContextPreparationStepName) *types.Context { - DownloadCoresAndToolsAndLibraries(t) - - stepToSkip := map[skipContextPreparationStepName]bool{} - for _, skip := range skips { - stepToSkip[skip] = true - } - - if ctx == nil { - ctx = &types.Context{} - } - if ctx.HardwareDirs.Len() == 0 { - ctx.HardwareDirs = paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware") - ctx.BuiltInToolsDirs = paths.NewPathList("downloaded_tools") - ctx.BuiltInLibrariesDirs = paths.New("downloaded_libraries") - ctx.OtherLibrariesDirs = paths.NewPathList("libraries") - } - if ctx.BuildPath == nil { - buildPath, err := paths.MkTempDir("", "test_build_path") - require.NoError(t, err) - ctx.BuildPath = buildPath - } - - buildPath := ctx.BuildPath - sketchBuildPath, err := buildPath.Join(constants.FOLDER_SKETCH).Abs() - require.NoError(t, err) - librariesBuildPath, err := buildPath.Join(constants.FOLDER_LIBRARIES).Abs() - require.NoError(t, err) - coreBuildPath, err := buildPath.Join(constants.FOLDER_CORE).Abs() - require.NoError(t, err) - - ctx.SketchBuildPath = sketchBuildPath - ctx.LibrariesBuildPath = librariesBuildPath - ctx.CoreBuildPath = coreBuildPath - - // Create a Package Manager from the given context - // This should happen only on legacy arduino-builder. - // Hopefully this piece will be removed once the legacy package will be cleanedup. - pmb := packagemanager.NewBuilder(nil, nil, nil, nil, "arduino-builder") - for _, err := range pmb.LoadHardwareFromDirectories(ctx.HardwareDirs) { - // NoError(t, err) - fmt.Println(err) - } - if ctx.BuiltInToolsDirs != nil { - pmb.LoadToolsFromBundleDirectories(ctx.BuiltInToolsDirs) - } - pm := pmb.Build() - pme, _ /* never release... */ := pm.NewExplorer() - ctx.PackageManager = pme - - var sk *sketch.Sketch - if sketchPath != nil { - s, err := sketch.New(sketchPath) - require.NoError(t, err) - sk = s - } - - builderLogger := logger.New(nil, nil, false, "") - ctx.BuilderLogger = builderLogger - ctx.Builder = bldr.NewBuilder(sk, nil, nil, false, nil, 0) - if fqbn != "" { - ctx.FQBN = parseFQBN(t, fqbn) - targetPackage, targetPlatform, targetBoard, boardBuildProperties, buildPlatform, err := pme.ResolveFQBN(ctx.FQBN) - require.NoError(t, err) - requiredTools, err := pme.FindToolsRequiredForBuild(targetPlatform, buildPlatform) - require.NoError(t, err) - - ctx.Builder = bldr.NewBuilder(sk, boardBuildProperties, ctx.BuildPath, false /*OptimizeForDebug*/, nil, 0) - ctx.PackageManager = pme - ctx.TargetBoard = targetBoard - ctx.BuildProperties = ctx.Builder.GetBuildProperties() - ctx.TargetPlatform = targetPlatform - ctx.TargetPackage = targetPackage - ctx.ActualPlatform = buildPlatform - ctx.RequiredTools = requiredTools - } - - if sk != nil { - require.False(t, ctx.BuildPath.Canonical().EqualsTo(sk.FullPath.Canonical())) - } - - if !stepToSkip[skipLibraries] { - lm, libsResolver, _, err := detector.LibrariesLoader( - false, nil, - ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs, - ctx.ActualPlatform, ctx.TargetPlatform, - ) - require.NoError(t, err) - - ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector( - lm, libsResolver, - false, - false, - builderLogger, - ) - } - - return ctx -} diff --git a/legacy/builder/test/builder_utils_test.go b/legacy/builder/test/builder_utils_test.go deleted file mode 100644 index 8d5cb09de2e..00000000000 --- a/legacy/builder/test/builder_utils_test.go +++ /dev/null @@ -1,156 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "os" - "testing" - "time" - - "github.com/arduino/arduino-cli/arduino/builder/utils" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func tempFile(t *testing.T, prefix string) *paths.Path { - file, err := os.CreateTemp("", prefix) - file.Close() - require.NoError(t, err) - return paths.New(file.Name()) -} - -func TestObjFileIsUpToDateObjMissing(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, nil, nil) - require.NoError(t, err) - require.False(t, upToDate) -} - -func TestObjFileIsUpToDateDepMissing(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, nil) - require.NoError(t, err) - require.False(t, upToDate) -} - -func TestObjFileIsUpToDateObjOlder(t *testing.T) { - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - depFile := tempFile(t, "dep") - defer depFile.RemoveAll() - - time.Sleep(time.Second) - - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, depFile) - require.NoError(t, err) - require.False(t, upToDate) -} - -func TestObjFileIsUpToDateObjNewer(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - time.Sleep(time.Second) - - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - depFile := tempFile(t, "dep") - defer depFile.RemoveAll() - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, depFile) - require.NoError(t, err) - require.True(t, upToDate) -} - -func TestObjFileIsUpToDateDepIsNewer(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - time.Sleep(time.Second) - - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - depFile := tempFile(t, "dep") - defer depFile.RemoveAll() - - time.Sleep(time.Second) - - headerFile := tempFile(t, "header") - defer headerFile.RemoveAll() - - data := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() - depFile.WriteFile([]byte(data)) - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, depFile) - require.NoError(t, err) - require.False(t, upToDate) -} - -func TestObjFileIsUpToDateDepIsOlder(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - headerFile := tempFile(t, "header") - defer headerFile.RemoveAll() - - time.Sleep(time.Second) - - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - depFile := tempFile(t, "dep") - defer depFile.RemoveAll() - - res := objFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() - depFile.WriteFile([]byte(res)) - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, depFile) - require.NoError(t, err) - require.True(t, upToDate) -} - -func TestObjFileIsUpToDateDepIsWrong(t *testing.T) { - sourceFile := tempFile(t, "source") - defer sourceFile.RemoveAll() - - time.Sleep(time.Second) - - objFile := tempFile(t, "obj") - defer objFile.RemoveAll() - depFile := tempFile(t, "dep") - defer depFile.RemoveAll() - - time.Sleep(time.Second) - - headerFile := tempFile(t, "header") - defer headerFile.RemoveAll() - - res := sourceFile.String() + ": \\\n\t" + sourceFile.String() + " \\\n\t" + headerFile.String() - depFile.WriteFile([]byte(res)) - - upToDate, err := utils.ObjFileIsUpToDate(sourceFile, objFile, depFile) - require.NoError(t, err) - require.False(t, upToDate) -} diff --git a/legacy/builder/test/create_build_options_map_test.go b/legacy/builder/test/create_build_options_map_test.go deleted file mode 100644 index d3c5ce42580..00000000000 --- a/legacy/builder/test/create_build_options_map_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/types" - "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" - "github.com/stretchr/testify/require" -) - -func TestCreateBuildOptionsMap(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList("hardware", "hardware2"), - BuiltInToolsDirs: paths.NewPathList("tools"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - FQBN: parseFQBN(t, "my:nice:fqbn"), - BuildPath: paths.New("buildPath"), - BuildProperties: properties.NewFromHashmap(map[string]string{"compiler.optimization_flags": "-Os"}), - } - - buildPropertiesJSON, err := builder.CreateBuildOptionsMap( - ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs, - ctx.BuiltInLibrariesDirs, &sketch.Sketch{FullPath: paths.New("sketchLocation")}, ctx.CustomBuildProperties, - ctx.FQBN.String(), ctx.BuildProperties.Get("compiler.optimization_flags"), - ) - require.NoError(t, err) - - require.Equal(t, `{ - "additionalFiles": "", - "builtInToolsFolders": "tools", - "compiler.optimization_flags": "-Os", - "customBuildProperties": "", - "fqbn": "my:nice:fqbn", - "hardwareFolders": "hardware,hardware2", - "otherLibrariesFolders": "libraries", - "sketchLocation": "sketchLocation" -}`, buildPropertiesJSON) -} diff --git a/legacy/builder/test/hardware/watterott/avr/boards.txt b/legacy/builder/test/hardware/watterott/avr/boards.txt deleted file mode 100644 index be844787844..00000000000 --- a/legacy/builder/test/hardware/watterott/avr/boards.txt +++ /dev/null @@ -1,130 +0,0 @@ -# VID 0x6666 is a prototype product Vendor ID -# http://www.linux-usb.org/usb.ids - -menu.speed=Speed -menu.core=Core -menu.info=Info - - -# ATmega32u4 @ 16 MHz -atmega32u4.name=ATmega32u4 -atmega32u4.menu.speed.16mhz=16 MHz -atmega32u4.menu.speed.16mhz.build.f_cpu=16000000L -atmega32u4.menu.speed.16mhz.bootloader.file=caterina_16mhz.hex -atmega32u4.menu.speed.8mhz=8 MHz -atmega32u4.menu.speed.8mhz.build.f_cpu=8000000L -atmega32u4.menu.speed.8mhz.bootloader.file=caterina_8mhz.hex -atmega32u4.vid.0=0x1D50 -atmega32u4.pid.0=0x60B0 -atmega32u4.vid.1=0x6666 -atmega32u4.pid.1=0x60B0 -atmega32u4.vid.2=0x2341 -atmega32u4.pid.2=0x0036 -atmega32u4.vid.3=0x2341 -atmega32u4.pid.3=0x8036 -atmega32u4.vid.4=0x2A03 -atmega32u4.pid.4=0x0036 -atmega32u4.vid.5=0x2A03 -atmega32u4.pid.5=0x8036 -atmega32u4.bootloader.tool=avrdude -atmega32u4.bootloader.low_fuses=0xff -atmega32u4.bootloader.high_fuses=0xd8 -atmega32u4.bootloader.extended_fuses=0xcb -#atmega32u4.bootloader.file=caterina_16mhz.hex -atmega32u4.bootloader.unlock_bits=0x3F -atmega32u4.bootloader.lock_bits=0x2F -atmega32u4.upload.tool=avrdude -atmega32u4.upload.protocol=avr109 -atmega32u4.upload.maximum_size=28672 -atmega32u4.upload.maximum_data_size=2560 -atmega32u4.upload.speed=57600 -atmega32u4.upload.disable_flushing=true -atmega32u4.upload.use_1200bps_touch=true -atmega32u4.upload.wait_for_upload_port=true -atmega32u4.build.mcu=atmega32u4 -#atmega32u4.build.f_cpu=16000000L -atmega32u4.build.vid=0x6666 -atmega32u4.build.pid=0x60B0 -atmega32u4.build.usb_product="USB IO Board" -atmega32u4.build.usb_manufacturer="ATmega32u4" -atmega32u4.build.board=AVR_LEONARDO -atmega32u4.build.core=arduino:arduino -atmega32u4.build.variant=leonardo -atmega32u4.build.extra_flags={build.usb_flags} -DMOUSE_ABS_ENABLED - - -# ATtiny841 @ internal 8 MHz -attiny841.name=ATtiny841 (8 MHz) -# use Standard Arduino Core -attiny841.menu.core.arduino=Standard Arduino -attiny841.menu.core.arduino.build.core=arduino:arduino -attiny841.menu.core.arduino.build.variant=tiny14 -# use Spence Konde Core: https://github.com/SpenceKonde/arduino-tiny-841/ -attiny841.menu.core.spencekonde=ATtiny841 (by Spence Konde) -#attiny841.menu.core.spencekonde.build.core=arduino-tiny-841:tiny -attiny841.menu.core.spencekonde.build.core=tiny841 -attiny841.menu.core.spencekonde.build.variant=tiny14 -# info menu item -attiny841.menu.info.info=Press Reset, when Uploading is shown. -attiny841.vid.0=0x16D0 -attiny841.pid.0=0x0753 -attiny841.bootloader.tool=avrdude -attiny841.bootloader.low_fuses=0xE2 -attiny841.bootloader.high_fuses=0xDD -attiny841.bootloader.extended_fuses=0xFE -attiny841.bootloader.unlock_bits=0xFF -attiny841.bootloader.lock_bits=0xFF -attiny841.bootloader.file=micronucleus-t841.hex -attiny841.upload.tool=micronucleus -attiny841.upload.protocol=usb -attiny841.upload.wait_for_upload_port=false -attiny841.upload.use_1200bps_touch=false -attiny841.upload.disable_flushing=false -attiny841.upload.maximum_size=6500 -attiny841.build.mcu=attiny841 -attiny841.build.f_cpu=8000000L -attiny841.build.board=AVR_ATTINY841 -#attiny841.build.core=arduino:arduino -#attiny841.build.variant=tiny14 - - -# ATtiny85 @ internal 16.5 MHz -attiny85.name=ATtiny85 (16.5 MHz) -# use Standard Arduino Core -attiny85.menu.core.arduino=Standard Arduino -attiny85.menu.core.arduino.build.board=AVR_ATTINY85 -attiny85.menu.core.arduino.build.core=arduino:arduino -attiny85.menu.core.arduino.build.variant=tiny8 -# use Spence Konde Core: https://github.com/SpenceKonde/ATTinyCore -attiny85.menu.core.spencekonde=ATtiny85 (by Spence Konde) -attiny85.menu.core.spencekonde.build.board=AVR_ATTINY85 -#attiny85.menu.core.spencekonde.build.core=ATTinyCore:tiny -attiny85.menu.core.spencekonde.build.core=tiny85 -attiny85.menu.core.spencekonde.build.variant=tiny8 -# use Digistump Core: https://github.com/digistump/DigistumpArduino -attiny85.menu.core.digistump=Digistump/Digispark -attiny85.menu.core.digistump.build.board=AVR_DIGISPARK -attiny85.menu.core.digistump.build.core=digistump:tiny -attiny85.menu.core.digistump.build.variant=digispark -# info menu item -attiny85.menu.info.info=Press Reset, when Uploading is shown. -attiny85.vid.0=0x16D0 -attiny85.pid.0=0x0753 -attiny85.bootloader.tool=avrdude -attiny85.bootloader.low_fuses=0xE1 -attiny85.bootloader.high_fuses=0xDD -attiny85.bootloader.extended_fuses=0xFE -attiny85.bootloader.unlock_bits=0xFF -attiny85.bootloader.lock_bits=0xFF -attiny85.bootloader.file=micronucleus-t85.hex -attiny85.upload.tool=micronucleus -attiny85.upload.protocol=usb -attiny85.upload.wait_for_upload_port=false -attiny85.upload.use_1200bps_touch=false -attiny85.upload.disable_flushing=false -attiny85.upload.maximum_size=6300 -attiny85.build.mcu=attiny85 -attiny85.build.f_cpu=16500000L -attiny85.build.board=AVR_ATTINY85 -#attiny85.build.core=arduino:arduino -#attiny85.build.variant=tiny8 diff --git a/legacy/builder/test/hardware/watterott/avr/platform.txt b/legacy/builder/test/hardware/watterott/avr/platform.txt deleted file mode 100644 index 13d46ceae1e..00000000000 --- a/legacy/builder/test/hardware/watterott/avr/platform.txt +++ /dev/null @@ -1,146 +0,0 @@ - -# Watterott AVR Core and platform. -# ------------------------------ -# -# For more info: -# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification - -name=Watterott AVR Boards -version=1.0.0 - -# 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 overidde the initial value -#compiler.path={runtime.ide.path}/hardware/tools/avr/bin/ -compiler.path={runtime.tools.avr-gcc.path}/bin/ -compiler.c.cmd=avr-gcc -compiler.c.flags=-c -g -Os {compiler.warning_flags} -ffunction-sections -fdata-sections -MMD -# -w flag added to avoid printing a wrong warning http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396 -# This is fixed in gcc 4.8.3 and will be removed as soon as we update the toolchain -compiler.c.elf.flags=-Os {compiler.warning_flags} -Wl,--gc-sections -compiler.c.elf.cmd=avr-gcc -compiler.S.flags=-c -g -x assembler-with-cpp -compiler.cpp.cmd=avr-g++ -compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -compiler.ar.cmd=avr-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.size.cmd=avr-size - -# This can be overriden 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 -recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{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} -o "{build.path}/{build.project_name}.elf" {object_files} "{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}" - - -# AVR Uploader/Programmers tools -# ------------------------------ - -## AVRdude -#tools.avrdude.path={runtime.ide.path}/hardware/tools/avr/ -tools.avrdude.path={runtime.tools.avrdude.path} -tools.avrdude.cmd.path={path}/bin/avrdude -#tools.avrdude.config.path={path}/etc/avrdude.conf -tools.avrdude.config.path={runtime.platform.path}/tools/avrdude.conf - -tools.avrdude.upload.params.verbose=-v -tools.avrdude.upload.params.quiet=-q -q -tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -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.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} -P{serial.port} {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} -P{serial.port} {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} -P{serial.port} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m - -## Micronucleus -tools.micronucleus.path={runtime.tools.micronucleus.path} -tools.micronucleus.cmd=micronucleus -tools.micronucleus.cmd.windows=micronucleus.exe - -tools.micronucleus.upload.params.verbose= -tools.micronucleus.upload.params.quiet= -tools.micronucleus.upload.pattern="{path}/{cmd}" --run --timeout 60 "{build.path}/{build.project_name}.hex" - -tools.micronucleus.program.params.verbose= -tools.micronucleus.program.params.quiet= -tools.micronucleus.program.pattern="{path}/{cmd}" --run --timeout 60 "{build.path}/{build.project_name}.hex" - -tools.micronucleus.erase.params.verbose= -tools.micronucleus.erase.params.quiet= -tools.micronucleus.erase.pattern= -#tools.micronucleus.erase.pattern="{path}/{cmd}" --erase-only --timeout 60 - -tools.micronucleus.bootloader.params.verbose= -tools.micronucleus.bootloader.params.quiet= -tools.micronucleus.bootloader.pattern="{path}/{cmd}" --run --timeout 60 "{runtime.platform.path}/bootloaders/{bootloader.file}" - - -# USB Default Flags -# Default blank usb manufacturer will be filled it 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/legacy/builder/test/hardware/watterott/avr/programmers.txt b/legacy/builder/test/hardware/watterott/avr/programmers.txt deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/helper.go b/legacy/builder/test/helper.go deleted file mode 100644 index 33b9aa1e2cf..00000000000 --- a/legacy/builder/test/helper.go +++ /dev/null @@ -1,58 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// Copyright 2015 Matthijs Kooijman -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/arduino/cores" - "github.com/arduino/arduino-cli/arduino/libraries" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func Abs(t *testing.T, rel *paths.Path) *paths.Path { - absPath, err := rel.Abs() - require.NoError(t, err) - return absPath -} - -func SetupBuildPath(t *testing.T, ctx *types.Context) *paths.Path { - buildPath, err := paths.MkTempDir("", "test_build_path") - require.NoError(t, err) - ctx.BuildPath = buildPath - return buildPath -} - -func parseFQBN(t *testing.T, fqbnIn string) *cores.FQBN { - fqbn, err := cores.ParseFQBN(fqbnIn) - require.NoError(t, err) - return fqbn -} - -type ByLibraryName []*libraries.Library - -func (s ByLibraryName) Len() int { - return len(s) -} -func (s ByLibraryName) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} -func (s ByLibraryName) Less(i, j int) bool { - return s[i].Name < s[j].Name -} diff --git a/legacy/builder/test/helper_tools_downloader.go b/legacy/builder/test/helper_tools_downloader.go deleted file mode 100644 index 2d80f0417fe..00000000000 --- a/legacy/builder/test/helper_tools_downloader.go +++ /dev/null @@ -1,727 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "encoding/json" - "fmt" - "io" - "net/http" - "os" - "os/exec" - "runtime" - "strings" - "testing" - - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" - "github.com/pkg/errors" - "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" -) - -var hardwareFolder = paths.New("downloaded_hardware") -var boardManagerFolder = paths.New("downloaded_board_manager_stuff") -var toolsFolder = paths.New("downloaded_tools") -var librariesFolder = paths.New("downloaded_libraries") -var patchesFolder = paths.New("downloaded_stuff_patches") - -type Tool struct { - Name string - Package string - Version string - OsUrls []OsUrl -} - -type OsUrl struct { - Os string - Url string -} - -type Library struct { - Name string - Version string - VersionInLibProperties string - Url string -} - -type Core struct { - Maintainer string - Arch string - Version string - Url string -} - -func DownloadCoresAndToolsAndLibraries(t *testing.T) { - cores := []Core{ - {Maintainer: "arduino", Arch: "avr", Version: "1.6.10"}, - {Maintainer: "arduino", Arch: "sam", Version: "1.6.7"}, - } - - boardsManagerCores := []Core{ - {Maintainer: "arduino", Arch: "samd", Version: "1.6.5"}, - } - - boardsManagerRedBearCores := []Core{ - {Maintainer: "RedBearLab", Arch: "avr", Version: "1.0.0", Url: "https://redbearlab.github.io/arduino/Blend/blend_boards.zip"}, - } - - toolsMultipleVersions := []Tool{ - {Name: "bossac", Version: "1.6.1-arduino"}, - {Name: "bossac", Version: "1.5-arduino"}, - } - - tools := []Tool{ - {Name: "avrdude", Version: "6.0.1-arduino5"}, - {Name: "avr-gcc", Version: "4.8.1-arduino5"}, - {Name: "arm-none-eabi-gcc", Version: "4.8.3-2014q1"}, - {Name: "ctags", Version: "5.8-arduino11", - OsUrls: []OsUrl{ - {Os: "i686-pc-linux-gnu", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-i686-pc-linux-gnu.tar.bz2"}, - {Os: "x86_64-pc-linux-gnu", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-x86_64-pc-linux-gnu.tar.bz2"}, - {Os: "i686-mingw32", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-i686-mingw32.zip"}, - {Os: "x86_64-apple-darwin", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-x86_64-apple-darwin.zip"}, - {Os: "arm-linux-gnueabihf", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-armv6-linux-gnueabihf.tar.bz2"}, - {Os: "aarch64-linux-gnu", Url: "http://downloads.arduino.cc/tools/ctags-5.8-arduino11-aarch64-linux-gnu.tar.bz2"}, - }, - }, - {Name: "arduino-preprocessor", Version: "0.1.5", - OsUrls: []OsUrl{ - {Os: "i686-pc-linux-gnu", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-i686-pc-linux-gnu.tar.bz2"}, - {Os: "x86_64-pc-linux-gnu", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-x86_64-pc-linux-gnu.tar.bz2"}, - {Os: "i686-mingw32", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-i686-w64-mingw32.tar.bz2"}, - {Os: "x86_64-apple-darwin", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-x86_64-apple-darwin11.tar.bz2"}, - {Os: "arm-linux-gnueabihf", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-arm-linux-gnueabihf.tar.bz2"}, - {Os: "aarch64-linux-gnu", Url: "https://github.com/arduino/arduino-preprocessor/releases/download/0.1.5/arduino-preprocessor-0.1.5-aarch64-linux-gnu.tar.bz2"}, - }, - }, - } - - boardsManagerTools := []Tool{ - {Name: "openocd", Version: "0.9.0-arduino", Package: "arduino"}, - {Name: "CMSIS", Version: "4.0.0-atmel", Package: "arduino"}, - } - - boardsManagerRFduinoTools := []Tool{ - {Name: "arm-none-eabi-gcc", Version: "4.8.3-2014q1", Package: "RFduino"}, - } - - libraries := []Library{ - {Name: "Audio", Version: "1.0.4"}, - {Name: "Adafruit PN532", Version: "1.0.0"}, - {Name: "Bridge", Version: "1.6.1"}, - {Name: "CapacitiveSensor", Version: "0.5.0", VersionInLibProperties: "0.5"}, - {Name: "Ethernet", Version: "1.1.1"}, - {Name: "Robot IR Remote", Version: "2.0.0"}, - {Name: "FastLED", Version: "3.1.0"}, - } - - download(t, cores, boardsManagerCores, boardsManagerRedBearCores, tools, toolsMultipleVersions, boardsManagerTools, boardsManagerRFduinoTools, libraries) - - patchFiles(t) -} - -func patchFiles(t *testing.T) { - err := patchesFolder.MkdirAll() - require.NoError(t, err) - files, err := patchesFolder.ReadDir() - require.NoError(t, err) - - for _, file := range files { - if file.Ext() == ".patch" { - panic("Patching for downloaded tools is not available! (see https://github.com/arduino/arduino-builder/issues/147)") - // XXX: find an alternative to x/codereview/patch - // https://github.com/arduino/arduino-builder/issues/147 - /* - data, err := ioutil.ReadFile(Abs(t, filepath.Join(PATCHES_FOLDER, file.Name()))) - require.NoError(t, err) - patchSet, err := patch.Parse(data) - require.NoError(t, err) - operations, err := patchSet.Apply(ioutil.ReadFile) - for _, op := range operations { - utils.WriteFileBytes(op.Dst, op.Data) - } - */ - } - } -} - -func download(t *testing.T, cores, boardsManagerCores, boardsManagerRedBearCores []Core, tools, toolsMultipleVersions, boardsManagerTools, boardsManagerRFduinoTools []Tool, libraries []Library) { - allCoresDownloaded, err := allCoresAlreadyDownloadedAndUnpacked(hardwareFolder, cores) - require.NoError(t, err) - if allCoresDownloaded && - allBoardsManagerCoresAlreadyDownloadedAndUnpacked(boardManagerFolder, boardsManagerCores) && - allBoardsManagerCoresAlreadyDownloadedAndUnpacked(boardManagerFolder, boardsManagerRedBearCores) && - allBoardsManagerToolsAlreadyDownloadedAndUnpacked(boardManagerFolder, boardsManagerTools) && - allBoardsManagerToolsAlreadyDownloadedAndUnpacked(boardManagerFolder, boardsManagerRFduinoTools) && - allToolsAlreadyDownloadedAndUnpacked(toolsFolder, tools) && - allToolsAlreadyDownloadedAndUnpacked(toolsFolder, toolsMultipleVersions) && - allLibrariesAlreadyDownloadedAndUnpacked(librariesFolder, libraries) { - return - } - - index, err := downloadIndex("http://downloads.arduino.cc/packages/package_index.json") - require.NoError(t, err) - - err = downloadCores(cores, index) - require.NoError(t, err) - - err = downloadBoardManagerCores(boardsManagerCores, index) - require.NoError(t, err) - - err = downloadTools(tools, index) - require.NoError(t, err) - - err = downloadToolsMultipleVersions(toolsMultipleVersions, index) - require.NoError(t, err) - - err = downloadBoardsManagerTools(boardsManagerTools, index) - require.NoError(t, err) - - rfduinoIndex, err := downloadIndex("http://downloads.arduino.cc/packages/test_package_rfduino_index.json") - require.NoError(t, err) - - err = downloadBoardsManagerTools(boardsManagerRFduinoTools, rfduinoIndex) - require.NoError(t, err) - - err = downloadBoardManagerCores(boardsManagerRedBearCores, nil) - require.NoError(t, err) - - librariesIndex, err := downloadIndex("http://downloads.arduino.cc/libraries/library_index.json") - require.NoError(t, err) - - err = downloadLibraries(libraries, librariesIndex) - require.NoError(t, err) -} - -func downloadIndex(url string) (map[string]interface{}, error) { - res, err := http.Get(url) - if err != nil { - return nil, err - } - - bytes, err := io.ReadAll(res.Body) - if err != nil { - return nil, err - } - res.Body.Close() - - index := make(map[string]interface{}) - err = json.Unmarshal(bytes, &index) - if err != nil { - return nil, err - } - - return index, nil -} - -func downloadCores(cores []Core, index map[string]interface{}) error { - for _, core := range cores { - url, err := findCoreUrl(index, core) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackCore(core, url, hardwareFolder) - if err != nil { - return errors.WithStack(err) - } - } - return nil -} - -func downloadBoardManagerCores(cores []Core, index map[string]interface{}) error { - for _, core := range cores { - url, err := findCoreUrl(index, core) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackBoardManagerCore(core, url, boardManagerFolder) - if err != nil { - return errors.WithStack(err) - } - } - return nil -} - -func findCoreUrl(index map[string]interface{}, core Core) (string, error) { - if core.Url != "" { - return core.Url, nil - } - packages := index["packages"].([]interface{}) - for _, p := range packages { - pack := p.(map[string]interface{}) - if pack[constants.PACKAGE_NAME].(string) == core.Maintainer { - packagePlatforms := pack["platforms"].([]interface{}) - for _, pt := range packagePlatforms { - packagePlatform := pt.(map[string]interface{}) - if packagePlatform[constants.PLATFORM_ARCHITECTURE] == core.Arch && packagePlatform[constants.PLATFORM_VERSION] == core.Version { - return packagePlatform[constants.PLATFORM_URL].(string), nil - } - } - } - } - - return "", errors.Errorf("Unable to find tool " + core.Maintainer + " " + core.Arch + " " + core.Version) -} - -func downloadTools(tools []Tool, index map[string]interface{}) error { - host := translateGOOSGOARCHToPackageIndexValue() - - for _, tool := range tools { - url, err := findToolUrl(index, tool, host) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackTool(tool, url, toolsFolder, true) - if err != nil { - return errors.WithStack(err) - } - } - - return nil -} - -func downloadToolsMultipleVersions(tools []Tool, index map[string]interface{}) error { - host := translateGOOSGOARCHToPackageIndexValue() - - for _, tool := range tools { - if !toolAlreadyDownloadedAndUnpacked(toolsFolder, tool) { - if toolsFolder.Join(tool.Name).Exist() { - if err := toolsFolder.Join(tool.Name).RemoveAll(); err != nil { - return errors.WithStack(err) - } - } - } - } - - for _, tool := range tools { - url, err := findToolUrl(index, tool, host) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackTool(tool, url, toolsFolder, false) - if err != nil { - return errors.WithStack(err) - } - } - - return nil -} - -func downloadBoardsManagerTools(tools []Tool, index map[string]interface{}) error { - host := translateGOOSGOARCHToPackageIndexValue() - - for _, tool := range tools { - url, err := findToolUrl(index, tool, host) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackBoardsManagerTool(tool, url, boardManagerFolder) - if err != nil { - return errors.WithStack(err) - } - } - - return nil -} - -func allBoardsManagerCoresAlreadyDownloadedAndUnpacked(targetPath *paths.Path, cores []Core) bool { - for _, core := range cores { - if !boardManagerCoreAlreadyDownloadedAndUnpacked(targetPath, core) { - return false - } - } - return true -} - -func boardManagerCoreAlreadyDownloadedAndUnpacked(targetPath *paths.Path, core Core) bool { - return targetPath.Join(core.Maintainer, "hardware", core.Arch, core.Version).Exist() -} - -func allCoresAlreadyDownloadedAndUnpacked(targetPath *paths.Path, cores []Core) (bool, error) { - for _, core := range cores { - alreadyDownloaded, err := coreAlreadyDownloadedAndUnpacked(targetPath, core) - if err != nil { - return false, errors.WithStack(err) - } - if !alreadyDownloaded { - return false, nil - } - } - return true, nil -} - -func coreAlreadyDownloadedAndUnpacked(targetPath *paths.Path, core Core) (bool, error) { - corePath := targetPath.Join(core.Maintainer, core.Arch) - - if corePath.NotExist() { - return false, nil - } - platform, err := properties.LoadFromPath(corePath.Join("platform.txt")) - if err != nil { - return false, errors.WithStack(err) - } - - if core.Version != platform.Get("version") { - err := corePath.RemoveAll() - return false, errors.WithStack(err) - } - - return true, nil -} - -func allBoardsManagerToolsAlreadyDownloadedAndUnpacked(targetPath *paths.Path, tools []Tool) bool { - for _, tool := range tools { - if !boardManagerToolAlreadyDownloadedAndUnpacked(targetPath, tool) { - return false - } - } - return true -} - -func boardManagerToolAlreadyDownloadedAndUnpacked(targetPath *paths.Path, tool Tool) bool { - return targetPath.Join(tool.Package, constants.FOLDER_TOOLS, tool.Name, tool.Version).Exist() -} - -func allToolsAlreadyDownloadedAndUnpacked(targetPath *paths.Path, tools []Tool) bool { - for _, tool := range tools { - if !toolAlreadyDownloadedAndUnpacked(targetPath, tool) { - return false - } - } - return true -} - -func toolAlreadyDownloadedAndUnpacked(targetPath *paths.Path, tool Tool) bool { - return targetPath.Join(tool.Name, tool.Version).Exist() -} - -func allLibrariesAlreadyDownloadedAndUnpacked(targetPath *paths.Path, libraries []Library) bool { - for _, library := range libraries { - if !libraryAlreadyDownloadedAndUnpacked(targetPath, library) { - return false - } - } - return true -} - -func libraryAlreadyDownloadedAndUnpacked(targetPath *paths.Path, library Library) bool { - libPath := targetPath.Join(strings.Replace(library.Name, " ", "_", -1)) - if !libPath.Exist() { - return false - } - - libProps, err := properties.LoadFromPath(libPath.Join("library.properties")) - if err != nil { - return false - } - return libProps.Get("version") == library.Version || libProps.Get("version") == library.VersionInLibProperties -} - -func downloadAndUnpackCore(core Core, url string, targetPath *paths.Path) error { - alreadyDownloaded, err := coreAlreadyDownloadedAndUnpacked(targetPath, core) - if err != nil { - return errors.WithStack(err) - } - if alreadyDownloaded { - return nil - } - - if err := targetPath.ToAbs(); err != nil { - return errors.WithStack(err) - } - - unpackFolder, files, err := downloadAndUnpack(url) - if err != nil { - return errors.WithStack(err) - } - defer unpackFolder.RemoveAll() - - packagerPath := targetPath.Join(core.Maintainer) - corePath := targetPath.Join(core.Maintainer, core.Arch) - - if err := packagerPath.MkdirAll(); err != nil { - return errors.WithStack(err) - } - if corePath.Exist() { - if err := corePath.RemoveAll(); err != nil { - return errors.WithStack(err) - } - } - if err := unpackFolder.Join(files[0].Base()).CopyDirTo(corePath); err != nil { - return errors.WithStack(err) - } - return nil -} - -func downloadAndUnpackBoardManagerCore(core Core, url string, targetPath *paths.Path) error { - if boardManagerCoreAlreadyDownloadedAndUnpacked(targetPath, core) { - return nil - } - - if err := targetPath.ToAbs(); err != nil { - return errors.WithStack(err) - } - - unpackFolder, files, err := downloadAndUnpack(url) - if err != nil { - return errors.WithStack(err) - } - defer unpackFolder.RemoveAll() - - corePath := targetPath.Join(core.Maintainer, "hardware", core.Arch) - if corePath.Exist() { - if err := corePath.RemoveAll(); err != nil { - return errors.WithStack(err) - } - } - if err := corePath.MkdirAll(); err != nil { - return errors.WithStack(err) - } - if err := unpackFolder.Join(files[0].Base()).CopyDirTo(corePath.Join(core.Version)); err != nil { - return errors.WithStack(err) - } - return nil -} - -func downloadAndUnpackBoardsManagerTool(tool Tool, url string, targetPath *paths.Path) error { - if boardManagerToolAlreadyDownloadedAndUnpacked(targetPath, tool) { - return nil - } - - if err := targetPath.ToAbs(); err != nil { - return errors.WithStack(err) - } - - unpackFolder, files, err := downloadAndUnpack(url) - if err != nil { - return errors.WithStack(err) - } - defer unpackFolder.RemoveAll() - - if err := targetPath.Join(tool.Package, constants.FOLDER_TOOLS, tool.Name).MkdirAll(); err != nil { - return errors.WithStack(err) - } - if err := unpackFolder.Join(files[0].Base()).CopyDirTo(targetPath.Join(tool.Package, constants.FOLDER_TOOLS, tool.Name, tool.Version)); err != nil { - return errors.WithStack(err) - } - return nil -} - -func downloadAndUnpackTool(tool Tool, url string, targetPath *paths.Path, deleteIfMissing bool) error { - if toolAlreadyDownloadedAndUnpacked(targetPath, tool) { - return nil - } - - if err := targetPath.ToAbs(); err != nil { - return errors.WithStack(err) - } - - unpackFolder, files, err := downloadAndUnpack(url) - if err != nil { - return errors.WithStack(err) - } - defer unpackFolder.RemoveAll() - - toolPath := targetPath.Join(tool.Name) - if deleteIfMissing { - if toolPath.Exist() { - if err := toolPath.MkdirAll(); err != nil { - return errors.WithStack(err) - } - } - } - if err := toolPath.MkdirAll(); err != nil { - return errors.WithStack(err) - } - destDir := toolPath.Join(tool.Version) - if len(files) == 1 && files[0].IsDir() { - if err := unpackFolder.Join(files[0].Base()).CopyDirTo(destDir); err != nil { - return errors.WithStack(err) - } - } else { - unpackFolder.CopyDirTo(destDir) - } - - return nil -} - -func downloadAndUnpack(url string) (*paths.Path, paths.PathList, error) { - fmt.Fprintln(os.Stderr, "Downloading "+url) - - unpackFolder, err := paths.MkTempDir("", "arduino-builder-tool") - if err != nil { - return nil, nil, errors.WithStack(err) - } - - urlParts := strings.Split(url, "/") - archiveFileName := urlParts[len(urlParts)-1] - archiveFilePath := unpackFolder.Join(archiveFileName) - - res, err := http.Get(url) - if err != nil { - return nil, nil, errors.WithStack(err) - } - - bytes, err := io.ReadAll(res.Body) - if err != nil { - return nil, nil, errors.WithStack(err) - } - res.Body.Close() - - archiveFilePath.WriteFile(bytes) - - cmd := buildUnpackCmd(archiveFilePath) - out, err := cmd.CombinedOutput() - if err != nil { - fmt.Println(string(out)) - return nil, nil, errors.WithStack(err) - } - if len(out) > 0 { - fmt.Println(string(out)) - } - - archiveFilePath.Remove() - - files, err := unpackFolder.ReadDir() - if err != nil { - return nil, nil, errors.WithStack(err) - } - - return unpackFolder, files, nil -} - -func buildUnpackCmd(file *paths.Path) *exec.Cmd { - var cmd *exec.Cmd - if file.Ext() == ".zip" { - cmd = exec.Command("unzip", "-qq", file.Base()) - } else { - cmd = exec.Command("tar", "xf", file.Base()) - } - cmd.Dir = file.Parent().String() - return cmd -} - -func translateGOOSGOARCHToPackageIndexValue() []string { - switch value := runtime.GOOS + "-" + runtime.GOARCH; value { - case "linux-amd64": - return []string{"x86_64-pc-linux-gnu", "x86_64-linux-gnu"} - case "linux-386": - return []string{"i686-pc-linux-gnu", "i686-linux-gnu"} - case "windows-amd64": - return []string{"i686-mingw32", "i686-cygwin"} - case "windows-386": - return []string{"i686-mingw32", "i686-cygwin"} - case "darwin-amd64": - return []string{"i386-apple-darwin11", "x86_64-apple-darwin"} - case "linux-arm": - return []string{"arm-linux-gnueabihf"} - default: - panic("Unknown OS: " + value) - } -} - -func findToolUrl(index map[string]interface{}, tool Tool, host []string) (string, error) { - if len(tool.OsUrls) > 0 { - for _, osUrl := range tool.OsUrls { - if slices.Contains(host, osUrl.Os) { - return osUrl.Url, nil - } - } - } else { - packages := index["packages"].([]interface{}) - for _, p := range packages { - pack := p.(map[string]interface{}) - packageTools := pack[constants.PACKAGE_TOOLS].([]interface{}) - for _, pt := range packageTools { - packageTool := pt.(map[string]interface{}) - name := packageTool[constants.TOOL_NAME].(string) - version := packageTool[constants.TOOL_VERSION].(string) - if name == tool.Name && version == tool.Version { - systems := packageTool["systems"].([]interface{}) - for _, s := range systems { - system := s.(map[string]interface{}) - if slices.Contains(host, system["host"].(string)) { - return system[constants.TOOL_URL].(string), nil - } - } - } - } - } - } - - return "", errors.Errorf("Unable to find tool " + tool.Name + " " + tool.Version) -} - -func downloadLibraries(libraries []Library, index map[string]interface{}) error { - for _, library := range libraries { - url, err := findLibraryUrl(index, library) - if err != nil { - return errors.WithStack(err) - } - err = downloadAndUnpackLibrary(library, url, librariesFolder) - if err != nil { - return errors.WithStack(err) - } - } - - return nil -} - -func findLibraryUrl(index map[string]interface{}, library Library) (string, error) { - if library.Url != "" { - return library.Url, nil - } - libs := index["libraries"].([]interface{}) - for _, l := range libs { - lib := l.(map[string]interface{}) - if library.Name == lib["name"].(string) && library.Version == lib["version"].(string) { - return lib["url"].(string), nil - } - } - - return "", errors.Errorf("Unable to find library " + library.Name + " " + library.Version) -} - -func downloadAndUnpackLibrary(library Library, url string, targetPath *paths.Path) error { - if libraryAlreadyDownloadedAndUnpacked(targetPath, library) { - return nil - } - - if err := targetPath.ToAbs(); err != nil { - return errors.WithStack(err) - } - - unpackFolder, files, err := downloadAndUnpack(url) - if err != nil { - return errors.WithStack(err) - } - defer unpackFolder.RemoveAll() - - libPath := targetPath.Join(strings.Replace(library.Name, " ", "_", -1)) - if libPath.Exist() { - if err := libPath.RemoveAll(); err != nil { - return errors.WithStack(err) - } - } - - if err := unpackFolder.Join(files[0].Base()).CopyDirTo(libPath); err != nil { - return errors.WithStack(err) - } - - return nil -} diff --git a/legacy/builder/test/libraries/ANewLibrary-master/anewlibrary.h b/legacy/builder/test/libraries/ANewLibrary-master/anewlibrary.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/Balanduino.h b/legacy/builder/test/libraries/Balanduino/Balanduino.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/Kalman.h b/legacy/builder/test/libraries/Balanduino/Kalman.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/PS3BT.h b/legacy/builder/test/libraries/Balanduino/PS3BT.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/SPP.h b/legacy/builder/test/libraries/Balanduino/SPP.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/Wii.h b/legacy/builder/test/libraries/Balanduino/Wii.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/XBOXRECV.h b/legacy/builder/test/libraries/Balanduino/XBOXRECV.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/adk.h b/legacy/builder/test/libraries/Balanduino/adk.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/Balanduino/usbhub.h b/legacy/builder/test/libraries/Balanduino/usbhub.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/FakeAudio/Audio.h b/legacy/builder/test/libraries/FakeAudio/Audio.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/FakeAudio/FakeAudio.h b/legacy/builder/test/libraries/FakeAudio/FakeAudio.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/IRremote/IRremote.h b/legacy/builder/test/libraries/IRremote/IRremote.h deleted file mode 100644 index 5497fbd7255..00000000000 --- a/legacy/builder/test/libraries/IRremote/IRremote.h +++ /dev/null @@ -1 +0,0 @@ -#warning IRRemote included! \ No newline at end of file diff --git a/legacy/builder/test/libraries/IRremote/IRremoteInt.h b/legacy/builder/test/libraries/IRremote/IRremoteInt.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/SPI/SPI.cpp b/legacy/builder/test/libraries/SPI/SPI.cpp deleted file mode 100644 index af14e07b12f..00000000000 --- a/legacy/builder/test/libraries/SPI/SPI.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2010 by Cristian Maglie - * Copyright (c) 2014 by Paul Stoffregen (Transaction API) - * Copyright (c) 2014 by Matthijs Kooijman (SPISettings AVR) - * Copyright (c) 2014 by Andrew J. Kroll (atomicity fixes) - * SPI Master library for arduino. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#include "SPI.h" - -SPIClass SPI; - -uint8_t SPIClass::initialized = 0; -uint8_t SPIClass::interruptMode = 0; -uint8_t SPIClass::interruptMask = 0; -uint8_t SPIClass::interruptSave = 0; -#ifdef SPI_TRANSACTION_MISMATCH_LED -uint8_t SPIClass::inTransactionFlag = 0; -#endif - -void SPIClass::begin() -{ - uint8_t sreg = SREG; - noInterrupts(); // Protect from a scheduler and prevent transactionBegin - if (!initialized) { - // Set SS to high so a connected chip will be "deselected" by default - uint8_t port = digitalPinToPort(SS); - uint8_t bit = digitalPinToBitMask(SS); - volatile uint8_t *reg = portModeRegister(port); - - // if the SS pin is not already configured as an output - // then set it high (to enable the internal pull-up resistor) - if(!(*reg & bit)){ - digitalWrite(SS, HIGH); - } - - // When the SS pin is set as OUTPUT, it can be used as - // a general purpose output port (it doesn't influence - // SPI operations). - pinMode(SS, OUTPUT); - - // Warning: if the SS pin ever becomes a LOW INPUT then SPI - // automatically switches to Slave, so the data direction of - // the SS pin MUST be kept as OUTPUT. - SPCR |= _BV(MSTR); - SPCR |= _BV(SPE); - - // Set direction register for SCK and MOSI pin. - // MISO pin automatically overrides to INPUT. - // By doing this AFTER enabling SPI, we avoid accidentally - // clocking in a single bit since the lines go directly - // from "input" to SPI control. - // http://code.google.com/p/arduino/issues/detail?id=888 - pinMode(SCK, OUTPUT); - pinMode(MOSI, OUTPUT); - } - initialized++; // reference count - SREG = sreg; -} - -void SPIClass::end() { - uint8_t sreg = SREG; - noInterrupts(); // Protect from a scheduler and prevent transactionBegin - // Decrease the reference counter - if (initialized) - initialized--; - // If there are no more references disable SPI - if (!initialized) { - SPCR &= ~_BV(SPE); - interruptMode = 0; - #ifdef SPI_TRANSACTION_MISMATCH_LED - inTransactionFlag = 0; - #endif - } - SREG = sreg; -} - -// mapping of interrupt numbers to bits within SPI_AVR_EIMSK -#if defined(__AVR_ATmega32U4__) - #define SPI_INT0_MASK (1< - * Copyright (c) 2014 by Paul Stoffregen (Transaction API) - * Copyright (c) 2014 by Matthijs Kooijman (SPISettings AVR) - * Copyright (c) 2014 by Andrew J. Kroll (atomicity fixes) - * SPI Master library for arduino. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#ifndef _SPI_H_INCLUDED -#define _SPI_H_INCLUDED - -#include - -// SPI_HAS_TRANSACTION means SPI has beginTransaction(), endTransaction(), -// usingInterrupt(), and SPISetting(clock, bitOrder, dataMode) -#define SPI_HAS_TRANSACTION 1 - -// SPI_HAS_NOTUSINGINTERRUPT means that SPI has notUsingInterrupt() method -#define SPI_HAS_NOTUSINGINTERRUPT 1 - -// SPI_ATOMIC_VERSION means that SPI has atomicity fixes and what version. -// This way when there is a bug fix you can check this define to alert users -// of your code if it uses better version of this library. -// This also implies everything that SPI_HAS_TRANSACTION as documented above is -// available too. -#define SPI_ATOMIC_VERSION 1 - -// Uncomment this line to add detection of mismatched begin/end transactions. -// A mismatch occurs if other libraries fail to use SPI.endTransaction() for -// each SPI.beginTransaction(). Connect an LED to this pin. The LED will turn -// on if any mismatch is ever detected. -//#define SPI_TRANSACTION_MISMATCH_LED 5 - -#ifndef LSBFIRST -#define LSBFIRST 0 -#endif -#ifndef MSBFIRST -#define MSBFIRST 1 -#endif - -#define SPI_CLOCK_DIV4 0x00 -#define SPI_CLOCK_DIV16 0x01 -#define SPI_CLOCK_DIV64 0x02 -#define SPI_CLOCK_DIV128 0x03 -#define SPI_CLOCK_DIV2 0x04 -#define SPI_CLOCK_DIV8 0x05 -#define SPI_CLOCK_DIV32 0x06 - -#define SPI_MODE0 0x00 -#define SPI_MODE1 0x04 -#define SPI_MODE2 0x08 -#define SPI_MODE3 0x0C - -#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR -#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR -#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR - -// define SPI_AVR_EIMSK for AVR boards with external interrupt pins -#if defined(EIMSK) - #define SPI_AVR_EIMSK EIMSK -#elif defined(GICR) - #define SPI_AVR_EIMSK GICR -#elif defined(GIMSK) - #define SPI_AVR_EIMSK GIMSK -#endif - -class SPISettings { -public: - SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) { - if (__builtin_constant_p(clock)) { - init_AlwaysInline(clock, bitOrder, dataMode); - } else { - init_MightInline(clock, bitOrder, dataMode); - } - } - SPISettings() { - init_AlwaysInline(4000000, MSBFIRST, SPI_MODE0); - } -private: - void init_MightInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) { - init_AlwaysInline(clock, bitOrder, dataMode); - } - void init_AlwaysInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) - __attribute__((__always_inline__)) { - // Clock settings are defined as follows. Note that this shows SPI2X - // inverted, so the bits form increasing numbers. Also note that - // fosc/64 appears twice - // SPR1 SPR0 ~SPI2X Freq - // 0 0 0 fosc/2 - // 0 0 1 fosc/4 - // 0 1 0 fosc/8 - // 0 1 1 fosc/16 - // 1 0 0 fosc/32 - // 1 0 1 fosc/64 - // 1 1 0 fosc/64 - // 1 1 1 fosc/128 - - // We find the fastest clock that is less than or equal to the - // given clock rate. The clock divider that results in clock_setting - // is 2 ^^ (clock_div + 1). If nothing is slow enough, we'll use the - // slowest (128 == 2 ^^ 7, so clock_div = 6). - uint8_t clockDiv; - - // When the clock is known at compiletime, use this if-then-else - // cascade, which the compiler knows how to completely optimize - // away. When clock is not known, use a loop instead, which generates - // shorter code. - if (__builtin_constant_p(clock)) { - if (clock >= F_CPU / 2) { - clockDiv = 0; - } else if (clock >= F_CPU / 4) { - clockDiv = 1; - } else if (clock >= F_CPU / 8) { - clockDiv = 2; - } else if (clock >= F_CPU / 16) { - clockDiv = 3; - } else if (clock >= F_CPU / 32) { - clockDiv = 4; - } else if (clock >= F_CPU / 64) { - clockDiv = 5; - } else { - clockDiv = 6; - } - } else { - uint32_t clockSetting = F_CPU / 2; - clockDiv = 0; - while (clockDiv < 6 && clock < clockSetting) { - clockSetting /= 2; - clockDiv++; - } - } - - // Compensate for the duplicate fosc/64 - if (clockDiv == 6) - clockDiv = 7; - - // Invert the SPI2X bit - clockDiv ^= 0x1; - - // Pack into the SPISettings class - spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) | - (dataMode & SPI_MODE_MASK) | ((clockDiv >> 1) & SPI_CLOCK_MASK); - spsr = clockDiv & SPI_2XCLOCK_MASK; - } - uint8_t spcr; - uint8_t spsr; - friend class SPIClass; -}; - - -class SPIClass { -public: - // Initialize the SPI library - static void begin(); - - // If SPI is used from within an interrupt, this function registers - // that interrupt with the SPI library, so beginTransaction() can - // prevent conflicts. The input interruptNumber is the number used - // with attachInterrupt. If SPI is used from a different interrupt - // (eg, a timer), interruptNumber should be 255. - static void usingInterrupt(uint8_t interruptNumber); - // And this does the opposite. - static void notUsingInterrupt(uint8_t interruptNumber); - // Note: the usingInterrupt and notUsingInterrupt functions should - // not to be called from ISR context or inside a transaction. - // For details see: - // https://github.com/arduino/Arduino/pull/2381 - // https://github.com/arduino/Arduino/pull/2449 - - // Before using SPI.transfer() or asserting chip select pins, - // this function is used to gain exclusive access to the SPI bus - // and configure the correct settings. - inline static void beginTransaction(SPISettings settings) { - if (interruptMode > 0) { - uint8_t sreg = SREG; - noInterrupts(); - - #ifdef SPI_AVR_EIMSK - if (interruptMode == 1) { - interruptSave = SPI_AVR_EIMSK; - SPI_AVR_EIMSK &= ~interruptMask; - SREG = sreg; - } else - #endif - { - interruptSave = sreg; - } - } - - #ifdef SPI_TRANSACTION_MISMATCH_LED - if (inTransactionFlag) { - pinMode(SPI_TRANSACTION_MISMATCH_LED, OUTPUT); - digitalWrite(SPI_TRANSACTION_MISMATCH_LED, HIGH); - } - inTransactionFlag = 1; - #endif - - SPCR = settings.spcr; - SPSR = settings.spsr; - } - - // Write to the SPI bus (MOSI pin) and also receive (MISO pin) - inline static uint8_t transfer(uint8_t data) { - SPDR = data; - /* - * The following NOP introduces a small delay that can prevent the wait - * loop form iterating when running at the maximum speed. This gives - * about 10% more speed, even if it seems counter-intuitive. At lower - * speeds it is unnoticed. - */ - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; // wait - return SPDR; - } - inline static uint16_t transfer16(uint16_t data) { - union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } in, out; - in.val = data; - if (!(SPCR & _BV(DORD))) { - SPDR = in.msb; - asm volatile("nop"); // See transfer(uint8_t) function - while (!(SPSR & _BV(SPIF))) ; - out.msb = SPDR; - SPDR = in.lsb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.lsb = SPDR; - } else { - SPDR = in.lsb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.lsb = SPDR; - SPDR = in.msb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.msb = SPDR; - } - return out.val; - } - inline static void transfer(void *buf, size_t count) { - if (count == 0) return; - uint8_t *p = (uint8_t *)buf; - SPDR = *p; - while (--count > 0) { - uint8_t out = *(p + 1); - while (!(SPSR & _BV(SPIF))) ; - uint8_t in = SPDR; - SPDR = out; - *p++ = in; - } - while (!(SPSR & _BV(SPIF))) ; - *p = SPDR; - } - // After performing a group of transfers and releasing the chip select - // signal, this function allows others to access the SPI bus - inline static void endTransaction(void) { - #ifdef SPI_TRANSACTION_MISMATCH_LED - if (!inTransactionFlag) { - pinMode(SPI_TRANSACTION_MISMATCH_LED, OUTPUT); - digitalWrite(SPI_TRANSACTION_MISMATCH_LED, HIGH); - } - inTransactionFlag = 0; - #endif - - if (interruptMode > 0) { - #ifdef SPI_AVR_EIMSK - uint8_t sreg = SREG; - #endif - noInterrupts(); - #ifdef SPI_AVR_EIMSK - if (interruptMode == 1) { - SPI_AVR_EIMSK = interruptSave; - SREG = sreg; - } else - #endif - { - SREG = interruptSave; - } - } - } - - // Disable the SPI bus - static void end(); - - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setBitOrder(uint8_t bitOrder) { - if (bitOrder == LSBFIRST) SPCR |= _BV(DORD); - else SPCR &= ~(_BV(DORD)); - } - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setDataMode(uint8_t dataMode) { - SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode; - } - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setClockDivider(uint8_t clockDiv) { - SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK); - SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & SPI_2XCLOCK_MASK); - } - // These undocumented functions should not be used. SPI.transfer() - // polls the hardware flag which is automatically cleared as the - // AVR responds to SPI's interrupt - inline static void attachInterrupt() { SPCR |= _BV(SPIE); } - inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); } - -private: - static uint8_t initialized; - static uint8_t interruptMode; // 0=none, 1=mask, 2=global - static uint8_t interruptMask; // which interrupts to mask - static uint8_t interruptSave; // temp storage, to restore state - #ifdef SPI_TRANSACTION_MISMATCH_LED - static uint8_t inTransactionFlag; - #endif -}; - -extern SPIClass SPI; - -#endif diff --git a/legacy/builder/test/libraries/SPI/keywords.txt b/legacy/builder/test/libraries/SPI/keywords.txt deleted file mode 100644 index fa7616581aa..00000000000 --- a/legacy/builder/test/libraries/SPI/keywords.txt +++ /dev/null @@ -1,36 +0,0 @@ -####################################### -# Syntax Coloring Map SPI -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -SPI KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### -begin KEYWORD2 -end KEYWORD2 -transfer KEYWORD2 -setBitOrder KEYWORD2 -setDataMode KEYWORD2 -setClockDivider KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### -SPI_CLOCK_DIV4 LITERAL1 -SPI_CLOCK_DIV16 LITERAL1 -SPI_CLOCK_DIV64 LITERAL1 -SPI_CLOCK_DIV128 LITERAL1 -SPI_CLOCK_DIV2 LITERAL1 -SPI_CLOCK_DIV8 LITERAL1 -SPI_CLOCK_DIV32 LITERAL1 -SPI_CLOCK_DIV64 LITERAL1 -SPI_MODE0 LITERAL1 -SPI_MODE1 LITERAL1 -SPI_MODE2 LITERAL1 -SPI_MODE3 LITERAL1 \ No newline at end of file diff --git a/legacy/builder/test/libraries/SPI/library.properties b/legacy/builder/test/libraries/SPI/library.properties deleted file mode 100644 index 7e55b100497..00000000000 --- a/legacy/builder/test/libraries/SPI/library.properties +++ /dev/null @@ -1,11 +0,0 @@ -name=SPI -version=1.0 -author=Arduino -maintainer=Arduino -sentence=Enables the communication with devices that use the Serial Peripheral Interface (SPI) Bus. For all Arduino boards, BUT Arduino DUE. -paragraph= -url=http://arduino.cc/en/Reference/SPI -architectures=avr -types=Arduino -category=Other - diff --git a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.cpp b/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.cpp deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.h b/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/doc/error.cpp b/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/doc/error.cpp deleted file mode 100644 index 28fe130ceb5..00000000000 --- a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/doc/error.cpp +++ /dev/null @@ -1 +0,0 @@ - #error "This file is never supposed to be compiled" diff --git a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.cpp b/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.cpp deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.h b/legacy/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/USBHost/keywords.txt b/legacy/builder/test/libraries/USBHost/keywords.txt deleted file mode 100644 index dded4dcf729..00000000000 --- a/legacy/builder/test/libraries/USBHost/keywords.txt +++ /dev/null @@ -1,35 +0,0 @@ -####################################### -# Syntax Coloring Map For USBHost -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -MouseController KEYWORD1 -USBHost KEYWORD1 -KeyboardController KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -Task KEYWORD2 -mouseMoved KEYWORD2 -mouseDragged KEYWORD2 -mousePressed KEYWORD2 -mouseReleased KEYWORD2 -getXChange KEYWORD2 -getYChange KEYWORD2 -getButton KEYWORD2 -keyPressed KEYWORD2 -keyReleased KEYWORD2 -getModifiers KEYWORD2 -getKey KEYWORD2 -getOemKey KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/legacy/builder/test/libraries/USBHost/library.properties b/legacy/builder/test/libraries/USBHost/library.properties deleted file mode 100644 index b6bdce97f49..00000000000 --- a/legacy/builder/test/libraries/USBHost/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=USBHost -version=1.0 -author=Arduino -maintainer=Arduino -sentence=Allows the communication with USB peripherals like mice, keyboards, and thumbdrives. For Arduino Due and Zero. -paragraph=The USBHost library allows the board to appear as a USB host, enabling it to communicate with peripherals like USB mice and keyboards. USBHost does not support devices that are connected through USB hubs. This includes some keyboards that have an internal hub. -url=http://arduino.cc/en/Reference/USBHost -architectures=samd -category=Other diff --git a/legacy/builder/test/libraries/USBHost/src/KeyboardController.cpp b/legacy/builder/test/libraries/USBHost/src/KeyboardController.cpp deleted file mode 100644 index 70c769f64e0..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/KeyboardController.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (c) 2012 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -extern "C" { -void __keyboardControllerEmptyCallback() { } -} - -void keyPressed() __attribute__ ((weak, alias("__keyboardControllerEmptyCallback"))); -void keyReleased() __attribute__ ((weak, alias("__keyboardControllerEmptyCallback"))); - -void KeyboardController::OnKeyDown(uint8_t _mod, uint8_t _oemKey) { - modifiers = _mod; - keyOem = _oemKey; - key = OemToAscii(_mod, _oemKey); - keyPressed(); -} - -void KeyboardController::OnKeyUp(uint8_t _mod, uint8_t _oemKey) { - modifiers = _mod; - keyOem = _oemKey; - key = OemToAscii(_mod, _oemKey); - keyReleased(); -} diff --git a/legacy/builder/test/libraries/USBHost/src/KeyboardController.h b/legacy/builder/test/libraries/USBHost/src/KeyboardController.h deleted file mode 100644 index e1b891bff8a..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/KeyboardController.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (c) 2012 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef KEYBOARD_CONTROLLER_H -#define KEYBOARD_CONTROLLER_H - -#include - -enum KeyboardModifiers { - LeftCtrl = 1, - LeftShift = 2, - Alt = 4, - LeftCmd = 8, - RightCtrl = 16, - RightShift = 32, - AltGr = 64, - RightCmd = 128 -}; - -class KeyboardController : public KeyboardReportParser { -public: - KeyboardController(USBHost &usb) : hostKeyboard(&usb), key(0), keyOem(0), modifiers(0) { - hostKeyboard.SetReportParser(0, this); - }; - - uint8_t getKey() { return key; }; - uint8_t getModifiers() { return modifiers; }; - uint8_t getOemKey() { return keyOem; }; - -protected: - virtual void OnKeyDown(uint8_t mod, uint8_t key); - virtual void OnKeyUp(uint8_t mod, uint8_t key); - -private: - HIDBoot hostKeyboard; - uint8_t key, keyOem, modifiers; -}; - -#endif diff --git a/legacy/builder/test/libraries/USBHost/src/MouseController.cpp b/legacy/builder/test/libraries/USBHost/src/MouseController.cpp deleted file mode 100644 index 3d528bc3785..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/MouseController.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - Copyright (c) 2012 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -extern "C" { -void __mouseControllerEmptyCallback() { } -} - -void mouseClicked() __attribute__ ((weak, alias("__mouseControllerEmptyCallback"))); -void mouseDragged() __attribute__ ((weak, alias("__mouseControllerEmptyCallback"))); -void mouseMoved() __attribute__ ((weak, alias("__mouseControllerEmptyCallback"))); -void mousePressed() __attribute__ ((weak, alias("__mouseControllerEmptyCallback"))); -void mouseReleased() __attribute__ ((weak, alias("__mouseControllerEmptyCallback"))); - -int MouseController::getXChange() { - int r = dx; - dx = 0; - return r; -} - -int MouseController::getYChange() { - int r = dy; - dy = 0; - return r; -} - -void MouseController::OnMouseMove(MOUSEINFO *mi) { - dx += mi->dX; - dy += mi->dY; - if (buttons != 0) - mouseDragged(); - else - mouseMoved(); -} - -void MouseController::OnLeftButtonUp(MOUSEINFO *mi) { - buttons &= ~LEFT_BUTTON; - mouseReleased(); - mouseClicked(); -} - -void MouseController::OnLeftButtonDown(MOUSEINFO *mi) { - buttons |= LEFT_BUTTON; - mousePressed(); -} - -void MouseController::OnMiddleButtonUp(MOUSEINFO *mi) { - buttons &= ~MIDDLE_BUTTON; - mouseReleased(); - mouseClicked(); -} - -void MouseController::OnMiddleButtonDown(MOUSEINFO *mi) { - buttons |= MIDDLE_BUTTON; - mousePressed(); -} - -void MouseController::OnRightButtonUp(MOUSEINFO *mi) { - buttons &= ~RIGHT_BUTTON; - mouseReleased(); - mouseClicked(); -} - -void MouseController::OnRightButtonDown(MOUSEINFO *mi) { - buttons |= RIGHT_BUTTON; - mousePressed(); -} diff --git a/legacy/builder/test/libraries/USBHost/src/MouseController.h b/legacy/builder/test/libraries/USBHost/src/MouseController.h deleted file mode 100644 index 4c8c65e9ce9..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/MouseController.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (c) 2012 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef MOUSE_CONTROLLER_H -#define MOUSE_CONTROLLER_H - -#include - -enum MouseButton { - LEFT_BUTTON = 0x01, - MIDDLE_BUTTON = 0x02, - RIGHT_BUTTON = 0x04 -}; - -class MouseController : public MouseReportParser -{ -public: - MouseController(USBHost &usb) : hostMouse(&usb), dx(0), dy(0), buttons(0) { - hostMouse.SetReportParser(0, this); - }; - - bool getButton(MouseButton button) { return (buttons & button) == button; }; - int getXChange(); - int getYChange(); - // int getWheelChange(); // Not implemented - -protected: - virtual void OnMouseMove(MOUSEINFO *mi); - virtual void OnLeftButtonUp(MOUSEINFO *mi); - virtual void OnLeftButtonDown(MOUSEINFO *mi); - virtual void OnMiddleButtonUp(MOUSEINFO *mi); - virtual void OnMiddleButtonDown(MOUSEINFO *mi); - virtual void OnRightButtonUp(MOUSEINFO *mi); - virtual void OnRightButtonDown(MOUSEINFO *mi); - -private: - HIDBoot hostMouse; - int dx, dy; - int buttons; -}; - -#endif diff --git a/legacy/builder/test/libraries/USBHost/src/Usb.cpp b/legacy/builder/test/libraries/USBHost/src/Usb.cpp deleted file mode 100644 index bc821bb1fb4..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/Usb.cpp +++ /dev/null @@ -1,857 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -/* USB functions */ - -#include -#include "Arduino.h" -#include "Usb.h" - - -#ifdef ARDUINO_SAMD_ZERO - -static uint32_t usb_error = 0; -static uint32_t usb_task_state = USB_DETACHED_SUBSTATE_INITIALIZE; - -/* constructor */ -USBHost::USBHost() : bmHubPre(0) { - // Set up state machine - usb_task_state = USB_DETACHED_SUBSTATE_INITIALIZE; //set up state machine -} - -/* Initialize data structures */ -uint32_t USBHost::Init() { - //devConfigIndex = 0; - // Init host stack - init(); - bmHubPre = 0; - UHD_Init(); - return 0; -} - -uint32_t USBHost::getUsbTaskState(void) { - return (usb_task_state); -} - -void USBHost::setUsbTaskState(uint32_t state) { - usb_task_state = state; -} - -EpInfo* USBHost::getEpInfoEntry(uint32_t addr, uint32_t ep) { - UsbDeviceDefinition *p = addrPool.GetUsbDevicePtr(addr); - - if(!p || !p->epinfo) - return NULL; - - EpInfo *pep = p->epinfo; - - for (uint32_t i = 0; i < p->epcount; i++) { - if(pep->epAddr == ep) - return pep; - - pep++; - } - return NULL; -} - -/* set device table entry */ - -/* each device is different and has different number of endpoints. This function plugs endpoint record structure, defined in application, to devtable */ -uint32_t USBHost::setEpInfoEntry(uint32_t addr, uint32_t epcount, EpInfo* eprecord_ptr) { - if (!eprecord_ptr) - return USB_ERROR_INVALID_ARGUMENT; - - UsbDeviceDefinition *p = addrPool.GetUsbDevicePtr(addr); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - p->address.devAddress = addr; - p->epinfo = eprecord_ptr; - p->epcount = epcount; - - return 0; -} - -uint32_t USBHost::SetPipeAddress(uint32_t addr, uint32_t ep, EpInfo **ppep, uint32_t &nak_limit) { - UsbDeviceDefinition *p = addrPool.GetUsbDevicePtr(addr); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - if(!p->epinfo) - return USB_ERROR_EPINFO_IS_NULL; - - *ppep = getEpInfoEntry(addr, ep); - - if(!*ppep) - return USB_ERROR_EP_NOT_FOUND_IN_TBL; - - nak_limit = (0x0001UL << (((*ppep)->bmNakPower > USB_NAK_MAX_POWER ) ? USB_NAK_MAX_POWER : (*ppep)->bmNakPower)); - nak_limit--; - TRACE_USBHOST(printf(" => SetPipeAddress deviceEP=%lu configued as hostPIPE=%lu sending to address=%lu\r\n", ep, (*ppep)->epAddr, addr);) - /* - USBTRACE2("\r\nAddress: ", addr); - USBTRACE2(" EP: ", ep); - USBTRACE2(" NAK Power: ",(*ppep)->bmNakPower); - USBTRACE2(" NAK Limit: ", nak_limit); - USBTRACE("\r\n"); - */ - - // CTRL_PIPE.PDADDR: usb_pipe_table[pipe_num].HostDescBank[0].CTRL_PIPE.bit.PDADDR = addr - uhd_configure_address((*ppep)->epAddr, addr); // Set peripheral address - - return 0; -} - -/* Control transfer. Sets address, endpoint, fills control packet with necessary data, dispatches control packet, and initiates bulk IN transfer, */ -/* depending on request. Actual requests are defined as inlines */ -/* return codes: */ -/* 00 = success */ -/* 01-0f = non-zero HRSLT */ -uint32_t USBHost::ctrlReq(uint32_t addr, uint32_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi, - uint16_t wInd, uint16_t total, uint32_t nbytes, uint8_t* dataptr, USBReadParser *p) { - - uint32_t direction = 0; // Request direction, IN or OUT - uint32_t rcode; - SETUP_PKT setup_pkt; - - EpInfo *pep = NULL; - uint32_t nak_limit = 0; - - TRACE_USBHOST(printf(" => ctrlReq\r\n");) - - rcode = SetPipeAddress(addr, ep, &pep, nak_limit); - if(rcode) - return rcode; - - // Allocate Pipe0 with default 64 bytes size if not already initialized - rcode = UHD_Pipe0_Alloc(0, 64); - if (rcode) - { - TRACE_USBHOST(printf("/!\\ USBHost::ctrlReq : EP0 allocation error: %lu\r\n", rcode);) - //USBTRACE2("\n\rUSBHost::ctrlReq : EP0 allocation error: ", rcode"); - return rcode; - } - - // Determine request direction - direction = ((bmReqType & 0x80 ) > 0); - - /* fill in setup packet */ - setup_pkt.ReqType_u.bmRequestType = bmReqType; - setup_pkt.bRequest = bRequest; - setup_pkt.wVal_u.wValueLo = wValLo; - setup_pkt.wVal_u.wValueHi = wValHi; - setup_pkt.wIndex = wInd; - setup_pkt.wLength = total; - - UHD_Pipe_Write(pep->epAddr, sizeof(setup_pkt), (uint8_t *)&setup_pkt); //transfer to setup packet FIFO - - rcode = dispatchPkt(tokSETUP, ep, nak_limit); // Dispatch packet - - if (rcode) //return HRSLT if not zero - return ( rcode); - - if (dataptr != NULL) //data stage, if present - { - if (direction) // IN transfer - { - uint32_t left = total; - TRACE_USBHOST(printf(" => ctrlData IN\r\n");) - - pep->bmRcvToggle = 1; //bmRCVTOG1; - - // Bytes read into buffer - uint32_t read = nbytes; - - rcode = InTransfer(pep, nak_limit, (uint8_t*)&read, dataptr); - - if((rcode&USB_ERROR_DATATOGGLE) == USB_ERROR_DATATOGGLE) { - // yes, we flip it wrong here so that next time it is actually correct! - //pep->bmRcvToggle = (regRd(rHRSL) & bmSNDTOGRD) ? 0 : 1; - pep->bmRcvToggle = USB_HOST_DTGL(pep->epAddr); - //continue; - } - - if(rcode) { - //USBTRACE2("\n\rUSBHost::ctrlReq : in transfer: ", rcode"); - return rcode; - } - // Invoke callback function if inTransfer completed successfully and callback function pointer is specified - if(!rcode && p) - ((USBReadParser*)p)->Parse(read, dataptr, total - left); - } - else // OUT transfer - { - pep->bmSndToggle = 1; //bmSNDTOG1; - rcode = OutTransfer(pep, nak_limit, nbytes, dataptr); - } - if(rcode) //return error - return (rcode); - } - - // Status stage - UHD_Pipe_CountZero(pep->epAddr); - USB->HOST.HostPipe[pep->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL; - return dispatchPkt((direction) ? tokOUTHS : tokINHS, pep->epAddr, nak_limit); //GET if direction -} - -/* IN transfer to arbitrary endpoint. Assumes PERADDR is set. Handles multiple packets if necessary. Transfers 'nbytes' bytes. */ -/* Keep sending INs and writes data to memory area pointed by 'data' */ - -/* rcode 0 if no errors. rcode 01-0f is relayed from dispatchPkt(). Rcode f0 means RCVDAVIRQ error, - fe USB xfer timeout */ -uint32_t USBHost::inTransfer(uint32_t addr, uint32_t ep, uint8_t *nbytesptr, uint8_t* data) { - EpInfo *pep = NULL; - uint32_t nak_limit = 0; - - uint32_t rcode = SetPipeAddress(addr, ep, &pep, nak_limit); - - if(rcode) { - USBTRACE3("(USB::InTransfer) SetAddress Failed ", rcode, 0x81); - USBTRACE3("(USB::InTransfer) addr requested ", addr, 0x81); - USBTRACE3("(USB::InTransfer) ep requested ", ep, 0x81); - return rcode; - } - return InTransfer(pep, nak_limit, nbytesptr, data); -} - -uint32_t USBHost::InTransfer(EpInfo *pep, uint32_t nak_limit, uint8_t *nbytesptr, uint8_t* data) { - uint32_t rcode = 0; - uint32_t pktsize = 0; - - uint32_t nbytes = *nbytesptr; - uint32_t maxpktsize = pep->maxPktSize; - - *nbytesptr = 0; - //set toggle value - if(pep->bmRcvToggle) - USB->HOST.HostPipe[pep->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL; - else - USB->HOST.HostPipe[pep->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL; - - usb_pipe_table[pep->epAddr].HostDescBank[0].ADDR.reg = (uint32_t)data; - - // use a 'break' to exit this loop - while (1) { - /* get pipe config from setting register */ - usb_pipe_table[pep->epAddr].HostDescBank[0].ADDR.reg += pktsize; - - rcode = dispatchPkt(tokIN, pep->epAddr, nak_limit); //IN packet to EP-'endpoint'. Function takes care of NAKS. - if(rcode == USB_ERROR_DATATOGGLE) { - // yes, we flip it wrong here so that next time it is actually correct! - //pep->bmRcvToggle = (regRd(rHRSL) & bmSNDTOGRD) ? 0 : 1; - pep->bmRcvToggle = USB_HOST_DTGL(pep->epAddr); - //set toggle value - if(pep->bmRcvToggle) - USB->HOST.HostPipe[pep->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL; - else - USB->HOST.HostPipe[pep->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL; - continue; - } - if(rcode) { - //printf(">>>>>>>> Problem! dispatchPkt %2.2x\r\n", rcode); - return(rcode);// break; //should be 0, indicating ACK. Else return error code. - } - /* check for RCVDAVIRQ and generate error if not present */ - /* the only case when absence of RCVDAVIRQ makes sense is when toggle error occurred. Need to add handling for that */ - - pktsize = uhd_byte_count(pep->epAddr); // Number of received bytes - - USB->HOST.HostPipe[pep->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_BK0RDY; - - //printf("Got %i bytes \r\n", pktsize); - // This would be OK, but... - //assert(pktsize <= nbytes); - if(pktsize > nbytes) { - // This can happen. Use of assert on Arduino locks up the Arduino. - // So I will trim the value, and hope for the best. - //printf(">>>>>>>> Problem! Wanted %i bytes but got %i.\r\n", nbytes, pktsize); - pktsize = nbytes; - } - - int16_t mem_left = (int16_t)nbytes - *((int16_t*)nbytesptr); - - if(mem_left < 0) - mem_left = 0; - - //data = bytesRd(rRCVFIFO, ((pktsize > mem_left) ? mem_left : pktsize), data); - - //regWr(rHIRQ, bmRCVDAVIRQ); // Clear the IRQ & free the buffer - *nbytesptr += pktsize;// add this packet's byte count to total transfer length - - /* The transfer is complete under two conditions: */ - /* 1. The device sent a short packet (L.T. maxPacketSize) */ - /* 2. 'nbytes' have been transferred. */ - if((pktsize < maxpktsize) || (*nbytesptr >= nbytes)) // have we transferred 'nbytes' bytes? - { - // Save toggle value - pep->bmRcvToggle = USB_HOST_DTGL(pep->epAddr); - //printf("\r\n"); - rcode = 0; - break; - } // if - } //while( 1 ) - return ( rcode); -} - -/* OUT transfer to arbitrary endpoint. Handles multiple packets if necessary. Transfers 'nbytes' bytes. */ -/* Handles NAK bug per Maxim Application Note 4000 for single buffer transfer */ - -/* rcode 0 if no errors. rcode 01-0f is relayed from HRSL */ -uint32_t USBHost::outTransfer(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* data) { - EpInfo *pep = NULL; - uint32_t nak_limit = 0; - - uint32_t rcode = SetPipeAddress(addr, ep, &pep, nak_limit); - - if(rcode) - return rcode; - - return OutTransfer(pep, nak_limit, nbytes, data); -} - -uint32_t USBHost::OutTransfer(EpInfo *pep, uint32_t nak_limit, uint32_t nbytes, uint8_t *data) { - uint32_t rcode = 0, retry_count; - uint8_t *data_p = data; //local copy of the data pointer - uint32_t bytes_tosend, nak_count; - uint32_t bytes_left = nbytes; - uint8_t buf[64]; - uint8_t i; - - uint32_t maxpktsize = pep->maxPktSize; - - if(maxpktsize < 1 || maxpktsize > 64) - return USB_ERROR_INVALID_MAX_PKT_SIZE; - - for( i=0; ibmSndToggle) - USB->HOST.HostPipe[pep->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL; - else - USB->HOST.HostPipe[pep->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL; - - while(bytes_left) { - retry_count = 0; - nak_count = 0; - bytes_tosend = (bytes_left >= maxpktsize) ? maxpktsize : bytes_left; - UHD_Pipe_Write(pep->epAddr, bytes_tosend, buf); //filling output FIFO - - //set number of bytes - //dispatch packet - //wait for the completion IRQ - //clear IRQ - - rcode = dispatchPkt(tokOUT, pep->epAddr, nak_limit); - if (rcode) - { - switch(rcode) { - case USB_ERRORFLOW: - nak_count++; - if(nak_limit && (nak_count == nak_limit)) - goto breakout; - return ( rcode); - break; - case USB_ERRORTIMEOUT: - retry_count++; - if(retry_count == USB_RETRY_LIMIT) - goto breakout; - return ( rcode); - break; - case USB_ERROR_DATATOGGLE: - // yes, we flip it wrong here so that next time it is actually correct! - pep->bmSndToggle = USB_HOST_DTGL(pep->epAddr); - //set toggle value - if(pep->bmSndToggle) - USB->HOST.HostPipe[pep->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL; - else - USB->HOST.HostPipe[pep->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL; - break; - default: - goto breakout; - }//switch( rcode - } - - bytes_left -= bytes_tosend; - data_p += bytes_tosend; - }//while( bytes_left... -breakout: - - pep->bmSndToggle = USB_HOST_DTGL(pep->epAddr); - return ( rcode); //should be 0 in all cases -} - -/* dispatch USB packet. Assumes peripheral address is set and relevant buffer is loaded/empty */ -/* If NAK, tries to re-send up to nak_limit times */ -/* If nak_limit == 0, do not count NAKs, exit after timeout */ -/* If bus timeout, re-sends up to USB_RETRY_LIMIT times */ - -/* return codes 0x00-0x0f are HRSLT( 0x00 being success ), 0xff means timeout */ -uint32_t USBHost::dispatchPkt(uint32_t token, uint32_t epAddr, uint32_t nak_limit) { - uint32_t timeout = millis() + USB_XFER_TIMEOUT; - uint32_t nak_count = 0, retry_count=0; - uint32_t rcode = USB_ERROR_TRANSFER_TIMEOUT; - - TRACE_USBHOST(printf(" => dispatchPkt token=%lu pipe=%lu nak_limit=%lu\r\n", token, epAddr, nak_limit);) - - UHD_Pipe_Send(epAddr, token); //launch the transfer - - // Check timeout but don't hold timeout if VBUS is lost - while ((timeout > millis()) && (UHD_GetVBUSState() == UHD_STATE_CONNECTED)) - { - // Wait for transfer completion - if (UHD_Pipe_Is_Transfer_Complete(epAddr, token)) - { - return 0; - } - - //case hrNAK: - if( (usb_pipe_table[epAddr].HostDescBank[0].STATUS_BK.reg & USB_ERRORFLOW ) ) { - nak_count++; - if(nak_limit && (nak_count == nak_limit)) { - rcode = USB_ERRORFLOW; - return (rcode); - } - } - - //case hrTIMEOUT: - if(usb_pipe_table[epAddr].HostDescBank[0].STATUS_PIPE.reg & USB_ERRORTIMEOUT) { - retry_count++; - if(retry_count == USB_RETRY_LIMIT) { - rcode = USB_ERRORTIMEOUT; - return (rcode); - } - } - - if( (usb_pipe_table[epAddr].HostDescBank[0].STATUS_PIPE.reg & USB_ERROR_DATATOGGLE ) ) { - rcode = USB_ERROR_DATATOGGLE; - return (rcode); - } - } - - return rcode; -} - -/* USB main task. Performs enumeration/cleanup */ -void USBHost::Task(void) //USB state machine -{ - uint32_t rcode = 0; - volatile uint32_t tmpdata = 0; - static uint32_t delay = 0; - //USB_DEVICE_DESCRIPTOR buf; - uint32_t lowspeed = 0; - - // Update USB task state on Vbus change - tmpdata = UHD_GetVBUSState(); - - /* modify USB task state if Vbus changed */ - switch (tmpdata) - { - case UHD_STATE_ERROR: //illegal state - usb_task_state = USB_DETACHED_SUBSTATE_ILLEGAL; - lowspeed = 0; - break; - - case UHD_STATE_DISCONNECTED: // Disconnected state - if ((usb_task_state & USB_STATE_MASK) != USB_STATE_DETACHED) - usb_task_state = USB_DETACHED_SUBSTATE_INITIALIZE; - lowspeed = 0; - break; - - case UHD_STATE_CONNECTED: // Attached state - if ((usb_task_state & USB_STATE_MASK) == USB_STATE_DETACHED) { - delay = millis() + USB_SETTLE_DELAY; - usb_task_state = USB_ATTACHED_SUBSTATE_SETTLE; - } - break; - }// switch( tmpdata - - // Poll connected devices (if required) - for (uint32_t i = 0; i < USB_NUMDEVICES; ++i) - if (devConfig[i]) - rcode = devConfig[i]->Poll(); - - // Perform USB enumeration stage and clean up - switch (usb_task_state) { - case USB_DETACHED_SUBSTATE_INITIALIZE: - TRACE_USBHOST(printf(" + USB_DETACHED_SUBSTATE_INITIALIZE\r\n");) - - // Init USB stack and driver - UHD_Init(); - init(); - - // Free all USB resources - for (uint32_t i = 0; i < USB_NUMDEVICES; ++i) - if (devConfig[i]) - rcode = devConfig[i]->Release(); - - usb_task_state = USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE; - break; - case USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE: //just sit here - // Nothing to do - break; - case USB_DETACHED_SUBSTATE_ILLEGAL: //just sit here - // Nothing to do - break; - case USB_ATTACHED_SUBSTATE_SETTLE: // Settle time for just attached device - if((long)(millis() - delay) >= 0L) - usb_task_state = USB_ATTACHED_SUBSTATE_RESET_DEVICE; - break; - case USB_ATTACHED_SUBSTATE_RESET_DEVICE: - TRACE_USBHOST(printf(" + USB_ATTACHED_SUBSTATE_RESET_DEVICE\r\n");) - UHD_BusReset(); //issue bus reset - usb_task_state = USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE; - break; - case USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE: - if (Is_uhd_reset_sent()) - { - TRACE_USBHOST(printf(" + USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE\r\n");) - - // Clear Bus Reset flag - uhd_ack_reset_sent(); - - // Enable Start Of Frame generation - uhd_enable_sof(); - - usb_task_state = USB_ATTACHED_SUBSTATE_WAIT_SOF; - - // Wait 20ms after Bus Reset (USB spec) - delay = millis() + 20; - } - break; - case USB_ATTACHED_SUBSTATE_WAIT_SOF: - // Wait for SOF received first - if (Is_uhd_sof()) - { - if (delay < millis()) - { - TRACE_USBHOST(printf(" + USB_ATTACHED_SUBSTATE_WAIT_SOF\r\n");) - - // 20ms waiting elapsed - usb_task_state = USB_STATE_CONFIGURING; - } - } - break; - case USB_STATE_CONFIGURING: - TRACE_USBHOST(printf(" + USB_STATE_CONFIGURING\r\n");) - rcode = Configuring(0, 0, lowspeed); - - if (rcode) { - TRACE_USBHOST(printf("/!\\ USBHost::Task : USB_STATE_CONFIGURING failed with code: %lu\r\n", rcode);) - if (rcode != USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE) { - usb_error = rcode; - usb_task_state = USB_STATE_ERROR; - } - } - else { - usb_task_state = USB_STATE_RUNNING; - TRACE_USBHOST(printf(" + USB_STATE_RUNNING\r\n");) - } - break; - case USB_STATE_RUNNING: - break; - case USB_STATE_ERROR: - break; - } // switch( usb_task_state ) -} - -uint32_t USBHost::DefaultAddressing(uint32_t parent, uint32_t port, uint32_t lowspeed) { - //uint8_t buf[12]; - uint32_t rcode = 0; - UsbDeviceDefinition *p0 = NULL, *p = NULL; - - // Get pointer to pseudo device with address 0 assigned - p0 = addrPool.GetUsbDevicePtr(0); - - if(!p0) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - if(!p0->epinfo) - return USB_ERROR_EPINFO_IS_NULL; - - p0->lowspeed = (lowspeed) ? 1 : 0; - - // Allocate new address according to device class - uint32_t bAddress = addrPool.AllocAddress(parent, 0, port); - - if(!bAddress) - return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - - p = addrPool.GetUsbDevicePtr(bAddress); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - p->lowspeed = lowspeed; - - // Assign new address to the device - rcode = setAddr(0, 0, bAddress); - - if(rcode) { - TRACE_USBHOST(printf("/!\\ USBHost::DefaultAddressing : Set address failed with code: %lu\r\n", rcode);) - addrPool.FreeAddress(bAddress); - bAddress = 0; - return rcode; - } - return 0; -} - -uint32_t USBHost::AttemptConfig(uint32_t driver, uint32_t parent, uint32_t port, uint32_t lowspeed) { - //printf("AttemptConfig: parent = %i, port = %i\r\n", parent, port); - uint8_t retries = 0; - -again: - uint8_t rcode = devConfig[driver]->ConfigureDevice(parent, port, lowspeed); - if(rcode == USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET) { - if(parent == 0) { - // Send a bus reset on the root interface. - //regWr(rHCTL, bmBUSRST); //issue bus reset - UHD_BusReset(); - delay(102); // delay 102ms, compensate for clock inaccuracy. - } else { - // reset parent port - devConfig[parent]->ResetHubPort(port); - } - } else if(rcode != 0x00/*hrJERR*/ && retries < 3) { // Some devices returns this when plugged in - trying to initialize the device again usually works - delay(100); - retries++; - goto again; - } else if(rcode) - return rcode; - - rcode = devConfig[driver]->Init(parent, port, lowspeed); - if(rcode != 0x00/*hrJERR*/ && retries < 3) { // Some devices returns this when plugged in - trying to initialize the device again usually works - delay(100); - retries++; - goto again; - } - if(rcode) { - // Issue a bus reset, because the device may be in a limbo state - if(parent == 0) { - // Send a bus reset on the root interface. - //regWr(rHCTL, bmBUSRST); //issue bus reset - UHD_BusReset(); - delay(102); // delay 102ms, compensate for clock inaccuracy. - } else { - // reset parent port - devConfig[parent]->ResetHubPort(port); - } - } - return rcode; -} - -/* - * This is broken. We need to enumerate differently. - * It causes major problems with several devices if detected in an unexpected order. - * - * - * Oleg - I wouldn't do anything before the newly connected device is considered sane. - * i.e.(delays are not indicated for brevity): - * 1. reset - * 2. GetDevDescr(); - * 3a. If ACK, continue with allocating address, addressing, etc. - * 3b. Else reset again, count resets, stop at some number (5?). - * 4. When max.number of resets is reached, toggle power/fail - * If desired, this could be modified by performing two resets with GetDevDescr() in the middle - however, from my experience, if a device answers to GDD() - * it doesn't need to be reset again - * New steps proposal: - * 1: get address pool instance. exit on fail - * 2: pUsb->getDevDescr(0, 0, constBufSize, (uint8_t*)buf). exit on fail. - * 3: bus reset, 100ms delay - * 4: set address - * 5: pUsb->setEpInfoEntry(bAddress, 1, epInfo), exit on fail - * 6: while (configurations) { - * for(each configuration) { - * for (each driver) { - * 6a: Ask device if it likes configuration. Returns 0 on OK. - * If successful, the driver configured device. - * The driver now owns the endpoints, and takes over managing them. - * The following will need codes: - * Everything went well, instance consumed, exit with success. - * Instance already in use, ignore it, try next driver. - * Not a supported device, ignore it, try next driver. - * Not a supported configuration for this device, ignore it, try next driver. - * Could not configure device, fatal, exit with fail. - * } - * } - * } - * 7: for(each driver) { - * 7a: Ask device if it knows this VID/PID. Acts exactly like 6a, but using VID/PID - * 8: if we get here, no driver likes the device plugged in, so exit failure. - * - */ -uint32_t USBHost::Configuring(uint32_t parent, uint32_t port, uint32_t lowspeed) { - //uint32_t bAddress = 0; - //printf("Configuring: parent = %i, port = %i\r\n", parent, port); - uint32_t devConfigIndex; - uint32_t rcode = 0; - uint8_t buf[sizeof (USB_DEVICE_DESCRIPTOR)]; - USB_DEVICE_DESCRIPTOR *udd = reinterpret_cast(buf); - UsbDeviceDefinition *p = NULL; - EpInfo *oldep_ptr = NULL; - EpInfo epInfo; - - epInfo.epAddr = 0; - epInfo.maxPktSize = 8; - epInfo.epAttribs = 0; - epInfo.bmNakPower = USB_NAK_MAX_POWER; - - //delay(2000); - AddressPool &addrPool = GetAddressPool(); - // Get pointer to pseudo device with address 0 assigned - p = addrPool.GetUsbDevicePtr(0); - if(!p) { - //printf("Configuring error: USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL\r\n"); - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - } - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - - // Temporary assign new pointer to epInfo to p->epinfo in order to - // avoid toggle inconsistence - - p->epinfo = &epInfo; - - p->lowspeed = lowspeed; - // Get device descriptor - rcode = getDevDescr(0, 0, sizeof (USB_DEVICE_DESCRIPTOR), (uint8_t*)buf); - // The first GetDescriptor give us the endpoint 0 max packet size. - epInfo.maxPktSize = buf[7]; - // Restore p->epinfo - p->epinfo = oldep_ptr; - - if(rcode) { - //printf("Configuring error: Can't get USB_DEVICE_DESCRIPTOR\r\n"); - return rcode; - } - - // to-do? - // Allocate new address according to device class - //bAddress = addrPool.AllocAddress(parent, false, port); - - //if (!bAddress) - // return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - uint16_t vid = udd->idVendor; - uint16_t pid = udd->idProduct; - uint8_t klass = udd->bDeviceClass; - - // Attempt to configure if VID/PID or device class matches with a driver - for(devConfigIndex = 0; devConfigIndex < USB_NUMDEVICES; devConfigIndex++) { - if(!devConfig[devConfigIndex]) continue; // no driver - if(devConfig[devConfigIndex]->GetAddress()) continue; // consumed - if(devConfig[devConfigIndex]->VIDPIDOK(vid, pid) || devConfig[devConfigIndex]->DEVCLASSOK(klass)) { - rcode = AttemptConfig(devConfigIndex, parent, port, lowspeed); - if(rcode != USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED) - break; - } - } - - if(devConfigIndex < USB_NUMDEVICES) { - return rcode; - } - - - // blindly attempt to configure - for(devConfigIndex = 0; devConfigIndex < USB_NUMDEVICES; devConfigIndex++) { - if(!devConfig[devConfigIndex]) continue; - if(devConfig[devConfigIndex]->GetAddress()) continue; // consumed - if(devConfig[devConfigIndex]->VIDPIDOK(vid, pid) || devConfig[devConfigIndex]->DEVCLASSOK(klass)) continue; // If this is true it means it must have returned USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED above - rcode = AttemptConfig(devConfigIndex, parent, port, lowspeed); - - //printf("ERROR ENUMERATING %2.2x\r\n", rcode); - if(!(rcode == USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED || rcode == USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE)) { - // in case of an error dev_index should be reset to 0 - // in order to start from the very beginning the - // next time the program gets here - //if (rcode != USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE) - // devConfigIndex = 0; - return rcode; - } - } - // if we get here that means that the device class is not supported by any of registered classes - rcode = DefaultAddressing(parent, port, lowspeed); - - return rcode; -} - -uint32_t USBHost::ReleaseDevice(uint32_t addr) { - if(!addr) - return 0; - - for(uint32_t i = 0; i < USB_NUMDEVICES; i++) { - if(!devConfig[i]) continue; - if(devConfig[i]->GetAddress() == addr) - return devConfig[i]->Release(); - } - return 0; -} - -//get device descriptor - -uint32_t USBHost::getDevDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* dataptr) { - return (ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, USB_DESCRIPTOR_DEVICE, 0x0000, nbytes, nbytes, dataptr, 0)); -} -//get configuration descriptor - -uint32_t USBHost::getConfDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint32_t conf, uint8_t* dataptr) { - return (ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, conf, USB_DESCRIPTOR_CONFIGURATION, 0x0000, nbytes, nbytes, dataptr, 0)); -} - -/* Requests Configuration Descriptor. Sends two Get Conf Descr requests. The first one gets the total length of all descriptors, then the second one requests this - total length. The length of the first request can be shorter ( 4 bytes ), however, there are devices which won't work unless this length is set to 9 */ -uint32_t USBHost::getConfDescr(uint32_t addr, uint32_t ep, uint32_t conf, USBReadParser *p) { - const uint32_t bufSize = 64; - uint8_t buf[bufSize]; - USB_CONFIGURATION_DESCRIPTOR *ucd = reinterpret_cast(buf); - - uint32_t ret = getConfDescr(addr, ep, 9, conf, buf); - - if(ret) - return ret; - - uint32_t total = ucd->wTotalLength; - - //USBTRACE2("\r\ntotal conf.size:", total); - - return (ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, conf, USB_DESCRIPTOR_CONFIGURATION, 0x0000, total, bufSize, buf, p)); -} - -//get string descriptor - -uint32_t USBHost::getStrDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint32_t index, uint32_t langid, uint8_t* dataptr) { - return (ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, index, USB_DESCRIPTOR_STRING, langid, nbytes, nbytes, dataptr, 0)); -} -//set address - -uint32_t USBHost::setAddr(uint32_t oldaddr, uint32_t ep, uint32_t newaddr) { - uint32_t rcode = ctrlReq(oldaddr, ep, bmREQ_SET, USB_REQUEST_SET_ADDRESS, newaddr, 0x00, 0x0000, 0x0000, 0x0000, NULL, NULL); - //delay(2); //per USB 2.0 sect.9.2.6.3 - delay(300); // Older spec says you should wait at least 200ms - return rcode; - //return ( ctrlReq(oldaddr, ep, bmREQ_SET, USB_REQUEST_SET_ADDRESS, newaddr, 0x00, 0x0000, 0x0000, 0x0000, NULL, NULL)); -} -//set configuration - -uint32_t USBHost::setConf(uint32_t addr, uint32_t ep, uint32_t conf_value) { - return ( ctrlReq(addr, ep, bmREQ_SET, USB_REQUEST_SET_CONFIGURATION, conf_value, 0x00, 0x0000, 0x0000, 0x0000, NULL, NULL)); -} - -#endif //ARDUINO_SAMD_ZERO diff --git a/legacy/builder/test/libraries/USBHost/src/Usb.h b/legacy/builder/test/libraries/USBHost/src/Usb.h deleted file mode 100644 index e95ebc0528b..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/Usb.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -/* USB functions */ - -#ifndef USB_H_INCLUDED -#define USB_H_INCLUDED -#define _usb_h_ - -#include - -#define ARDUINO 101 - -//#include "Arduino.h" -#include "macros.h" -// None of these should ever be included by a driver, or a user's sketch. - -#include "variant.h" -#define USB_HOST_SERIAL SERIAL_PORT_MONITOR -#include "Print.h" -#include "printhex.h" -#include "message.h" -#include "hexdump.h" -#include "sink_parser.h" - -#include "address.h" - -#include "usb_ch9.h" -//#include "usbhost.h" -#include "UsbCore.h" -#include "parsetools.h" - -#include "confdescparser.h" - -#endif /* USB_H_INCLUDED */ diff --git a/legacy/builder/test/libraries/USBHost/src/UsbCore.h b/legacy/builder/test/libraries/USBHost/src/UsbCore.h deleted file mode 100644 index fdb14c1c14a..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/UsbCore.h +++ /dev/null @@ -1,291 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#if !defined(_usb_h_) || defined(USBCORE_H) -#error "Never include UsbCore.h directly; include Usb.h instead" -#else -#define USBCORE_H - -// Not used anymore? If anyone uses this, please let us know so that this may be -// moved to the proper place, settings.h. -//#define USB_METHODS_INLINE - -/* shield pins. First parameter - SS pin, second parameter - INT pin */ -#ifdef BOARD_BLACK_WIDDOW -typedef MAX3421e MAX3421E; // Black Widow -#elif defined(CORE_TEENSY) && (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)) -#if EXT_RAM -typedef MAX3421e MAX3421E; // Teensy++ 2.0 with XMEM2 -#else -typedef MAX3421e MAX3421E; // Teensy++ 1.0 and 2.0 -#endif -#elif defined(BOARD_MEGA_ADK) -typedef MAX3421e MAX3421E; // Arduino Mega ADK -#elif defined(ARDUINO_AVR_BALANDUINO) -typedef MAX3421e MAX3421E; // Balanduino -#else -//typedef MAX3421e MAX3421E; // Official Arduinos (UNO, Duemilanove, Mega, 2560, Leonardo, Due etc.) or Teensy 2.0 and 3.0 -#endif - -/* Common setup data constant combinations */ -#define bmREQ_GET_DESCR USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //get descriptor request type -#define bmREQ_SET USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_DEVICE //set request type for all but 'set feature' and 'set interface' -#define bmREQ_CL_GET_INTF USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE //get interface request type - -// D7 data transfer direction (0 - host-to-device, 1 - device-to-host) -// D6-5 Type (0- standard, 1 - class, 2 - vendor, 3 - reserved) -// D4-0 Recipient (0 - device, 1 - interface, 2 - endpoint, 3 - other, 4..31 - reserved) - -// USB Device Classes -#define USB_CLASS_USE_CLASS_INFO 0x00 // Use Class Info in the Interface Descriptors -#define USB_CLASS_AUDIO 0x01 // Audio -#define USB_CLASS_COM_AND_CDC_CTRL 0x02 // Communications and CDC Control -#define USB_CLASS_HID 0x03 // HID -#define USB_CLASS_PHYSICAL 0x05 // Physical -#define USB_CLASS_IMAGE 0x06 // Image -#define USB_CLASS_PRINTER 0x07 // Printer -#define USB_CLASS_MASS_STORAGE 0x08 // Mass Storage -#define USB_CLASS_HUB 0x09 // Hub -#define USB_CLASS_CDC_DATA 0x0a // CDC-Data -#define USB_CLASS_SMART_CARD 0x0b // Smart-Card -#define USB_CLASS_CONTENT_SECURITY 0x0d // Content Security -#define USB_CLASS_VIDEO 0x0e // Video -#define USB_CLASS_PERSONAL_HEALTH 0x0f // Personal Healthcare -#define USB_CLASS_DIAGNOSTIC_DEVICE 0xdc // Diagnostic Device -#define USB_CLASS_WIRELESS_CTRL 0xe0 // Wireless Controller -#define USB_CLASS_MISC 0xef // Miscellaneous -#define USB_CLASS_APP_SPECIFIC 0xfe // Application Specific -#define USB_CLASS_VENDOR_SPECIFIC 0xff // Vendor Specific - -// Additional Error Codes -#define USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED 0xD1 -#define USB_DEV_CONFIG_ERROR_DEVICE_INIT_INCOMPLETE 0xD2 -#define USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS 0xD3 -#define USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL 0xD4 -#define USB_ERROR_HUB_ADDRESS_OVERFLOW 0xD5 -#define USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL 0xD6 -#define USB_ERROR_EPINFO_IS_NULL 0xD7 -#define USB_ERROR_INVALID_ARGUMENT 0xD8 -#define USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE 0xD9 -#define USB_ERROR_INVALID_MAX_PKT_SIZE 0xDA -#define USB_ERROR_EP_NOT_FOUND_IN_TBL 0xDB -#define USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET 0xE0 -#define USB_ERROR_FailGetDevDescr 0xE1 -#define USB_ERROR_FailSetDevTblEntry 0xE2 -#define USB_ERROR_FailGetConfDescr 0xE3 -#define USB_ERROR_TRANSFER_TIMEOUT 0xFF - -#define USB_XFER_TIMEOUT 10000 //30000 // (5000) USB transfer timeout in milliseconds, per section 9.2.6.1 of USB 2.0 spec -//#define USB_NAK_LIMIT 32000 //NAK limit for a transfer. 0 means NAKs are not counted -#define USB_RETRY_LIMIT 3 // 3 retry limit for a transfer -#define USB_SETTLE_DELAY 200 //settle delay in milliseconds - -#define USB_NUMDEVICES 16 //number of USB devices -//#define HUB_MAX_HUBS 7 // maximum number of hubs that can be attached to the host controller -#define HUB_PORT_RESET_DELAY 20 // hub port reset delay 10 ms recomended, can be up to 20 ms - -/* USB state machine states */ -#define USB_STATE_MASK 0xf0 - -#define USB_STATE_DETACHED 0x10 -#define USB_DETACHED_SUBSTATE_INITIALIZE 0x11 -#define USB_DETACHED_SUBSTATE_WAIT_FOR_DEVICE 0x12 -#define USB_DETACHED_SUBSTATE_ILLEGAL 0x13 -#define USB_ATTACHED_SUBSTATE_SETTLE 0x20 -#define USB_ATTACHED_SUBSTATE_RESET_DEVICE 0x30 -#define USB_ATTACHED_SUBSTATE_WAIT_RESET_COMPLETE 0x40 -#define USB_ATTACHED_SUBSTATE_WAIT_SOF 0x50 -#define USB_ATTACHED_SUBSTATE_WAIT_RESET 0x51 -#define USB_ATTACHED_SUBSTATE_GET_DEVICE_DESCRIPTOR_SIZE 0x60 -#define USB_STATE_ADDRESSING 0x70 -#define USB_STATE_CONFIGURING 0x80 -#define USB_STATE_RUNNING 0x90 -#define USB_STATE_ERROR 0xa0 - -class USBDeviceConfig { -public: - - virtual uint32_t Init(uint32_t parent, uint32_t port, uint32_t lowspeed) { - return 0; - } - - virtual uint32_t ConfigureDevice(uint32_t parent, uint32_t port, uint32_t lowspeed) { - return 0; - } - - virtual uint32_t Release() { - return 0; - } - - virtual uint32_t Poll() { - return 0; - } - - virtual uint32_t GetAddress() { - return 0; - } - - virtual void ResetHubPort(uint32_t port) { - return; - } // Note used for hubs only! - - virtual uint32_t VIDPIDOK(uint32_t vid, uint32_t pid) { - return false; - } - - virtual uint32_t DEVCLASSOK(uint32_t klass) { - return false; - } -}; - -/* USB Setup Packet Structure */ -typedef struct { - - union { // offset description - uint8_t bmRequestType; // 0 Bit-map of request type - - struct { - uint8_t recipient : 5; // Recipient of the request - uint8_t type : 2; // Type of request - uint8_t direction : 1; // Direction of data X-fer - }; - } ReqType_u; - uint8_t bRequest; // 1 Request - - union { - uint16_t wValue; // 2 Depends on bRequest - - struct { - uint8_t wValueLo; - uint8_t wValueHi; - }; - } wVal_u; - uint16_t wIndex; // 4 Depends on bRequest - uint16_t wLength; // 6 Depends on bRequest -} SETUP_PKT, *PSETUP_PKT; - - - -// Base class for incoming data parser - -class USBReadParser { -public: - virtual void Parse(const uint32_t len, const uint8_t *pbuf, const uint32_t &offset) = 0; -}; - -class USBHost { - AddressPoolImpl addrPool; - USBDeviceConfig* devConfig[USB_NUMDEVICES]; - uint8_t bmHubPre; - -public: - USBHost(void); - - void SetHubPreMask() { - //bmHubPre |= bmHUBPRE; - }; - - void ResetHubPreMask() { - //bmHubPre &= (~bmHUBPRE); - }; - - AddressPool& GetAddressPool() { - return (AddressPool&)addrPool; - }; - - uint32_t RegisterDeviceClass(USBDeviceConfig *pdev) { - for(uint8_t i = 0; i < USB_NUMDEVICES; i++) { - if(!devConfig[i]) { - devConfig[i] = pdev; - return 0; - } - } - return USB_ERROR_UNABLE_TO_REGISTER_DEVICE_CLASS; - }; - - void ForEachUsbDevice(UsbDeviceHandleFunc pfunc) { - addrPool.ForEachUsbDevice(pfunc); - }; - uint32_t getUsbTaskState(void); - void setUsbTaskState(uint32_t state); - - EpInfo* getEpInfoEntry(uint32_t addr, uint32_t ep); - uint32_t setEpInfoEntry(uint32_t addr, uint32_t epcount, EpInfo* eprecord_ptr); - - /* Control requests */ - uint32_t getDevDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* dataptr); - uint32_t getConfDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint32_t conf, uint8_t* dataptr); - - uint32_t getConfDescr(uint32_t addr, uint32_t ep, uint32_t conf, USBReadParser *p); - - uint32_t getStrDescr(uint32_t addr, uint32_t ep, uint32_t nbytes, uint32_t index, uint32_t langid, uint8_t* dataptr); - uint32_t setAddr(uint32_t oldaddr, uint32_t ep, uint32_t newaddr); - uint32_t setConf(uint32_t addr, uint32_t ep, uint32_t conf_value); - /**/ - uint32_t ctrlData(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* dataptr, uint32_t direction); - uint32_t ctrlStatus(uint32_t ep, uint32_t direction, uint32_t nak_limit); - uint32_t inTransfer(uint32_t addr, uint32_t ep, uint8_t *nbytesptr, uint8_t* data); - uint32_t outTransfer(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* data); - uint32_t dispatchPkt(uint32_t token, uint32_t ep, uint32_t nak_limit); - - void Task(void); - - uint32_t DefaultAddressing(uint32_t parent, uint32_t port, uint32_t lowspeed); - uint32_t Configuring(uint32_t parent, uint32_t port, uint32_t lowspeed); - uint32_t ReleaseDevice(uint32_t addr); - - uint32_t ctrlReq(uint32_t addr, uint32_t ep, uint8_t bmReqType, uint8_t bRequest, uint8_t wValLo, uint8_t wValHi, - uint16_t wInd, uint16_t total, uint32_t nbytes, uint8_t* dataptr, USBReadParser *p); - - uint32_t Init(); -private: - uint32_t SetPipeAddress(uint32_t addr, uint32_t ep, EpInfo **ppep, uint32_t &nak_limit); - uint32_t OutTransfer(EpInfo *pep, uint32_t nak_limit, uint32_t nbytes, uint8_t *data); - uint32_t InTransfer(EpInfo *pep, uint32_t nak_limit, uint8_t *nbytesptr, uint8_t *data); - uint32_t AttemptConfig(uint32_t driver, uint32_t parent, uint32_t port, uint32_t lowspeed); -}; - -#if 0 //defined(USB_METHODS_INLINE) -//get device descriptor - -inline uint8_t USBHost::getDevDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t* dataptr) { - return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, USB_DESCRIPTOR_DEVICE, 0x0000, nbytes, dataptr)); -} -//get configuration descriptor - -inline uint8_t USBHost::getConfDescr(uint8_t addr, uint8_t ep, uint16_t nbytes, uint8_t conf, uint8_t* dataptr) { - return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, conf, USB_DESCRIPTOR_CONFIGURATION, 0x0000, nbytes, dataptr)); -} -//get string descriptor - -inline uint8_t USBHost::getStrDescr(uint8_t addr, uint8_t ep, uint16_t nuint8_ts, uint8_t index, uint16_t langid, uint8_t* dataptr) { - return ( ctrlReq(addr, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, index, USB_DESCRIPTOR_STRING, langid, nuint8_ts, dataptr)); -} -//set address - -inline uint8_t USBHost::setAddr(uint8_t oldaddr, uint8_t ep, uint8_t newaddr) { - return ( ctrlReq(oldaddr, ep, bmREQ_SET, USB_REQUEST_SET_ADDRESS, newaddr, 0x00, 0x0000, 0x0000, NULL)); -} -//set configuration - -inline uint8_t USBHost::setConf(uint8_t addr, uint8_t ep, uint8_t conf_value) { - return ( ctrlReq(addr, ep, bmREQ_SET, USB_REQUEST_SET_CONFIGURATION, conf_value, 0x00, 0x0000, 0x0000, NULL)); -} - -#endif // defined(USB_METHODS_INLINE) - -#endif /* USBCORE_H */ diff --git a/legacy/builder/test/libraries/USBHost/src/address.h b/legacy/builder/test/libraries/USBHost/src/address.h deleted file mode 100644 index a96108224f8..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/address.h +++ /dev/null @@ -1,280 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -#if !defined(_usb_h_) || defined(ADDRESS_H_INCLUDED) -#error "Never include address.h directly; include Usb.h instead" -#else -#define ADDRESS_H_INCLUDED - -#include -#include - -/* NAK powers. To save space in endpoint data structure, amount of retries before giving up and returning 0x4 is stored in */ -/* bmNakPower as a power of 2. The actual nak_limit is then calculated as nak_limit = ( 2^bmNakPower - 1) */ -#define USB_NAK_MAX_POWER 15 //NAK binary order maximum value -#define USB_NAK_DEFAULT 14 //default 32K-1 NAKs before giving up -#define USB_NAK_NOWAIT 1 //Single NAK stops transfer -#define USB_NAK_NONAK 0 //Do not count NAKs, stop retrying after USB Timeout - -struct EpInfo { - uint32_t epAddr; // Endpoint address - uint32_t maxPktSize; // Maximum packet size - union { - uint8_t epAttribs; - - struct { - uint8_t bmSndToggle : 1; // Send toggle, when zero bmSNDTOG0, bmSNDTOG1 otherwise - uint8_t bmRcvToggle : 1; // Send toggle, when zero bmRCVTOG0, bmRCVTOG1 otherwise - uint8_t bmNakPower : 6; // Binary order for NAK_LIMIT value - }; - }; -}; - -// 7 6 5 4 3 2 1 0 -// --------------------------------- -// | | H | P | P | P | A | A | A | -// --------------------------------- -// -// H - if 1 the address is a hub address -// P - parent hub address -// A - device address / port number in case of hub -// - -struct UsbDeviceAddress { - union { - struct { - uint32_t bmAddress : 3; // device address/port number - uint32_t bmParent : 3; // parent hub address - uint32_t bmHub : 1; // hub flag - uint32_t bmReserved : 25; // reserved, must be zerro - }; - uint32_t devAddress; - }; -}; - -#define bmUSB_DEV_ADDR_ADDRESS 0x07 -#define bmUSB_DEV_ADDR_PARENT 0x38 -#define bmUSB_DEV_ADDR_HUB 0x40 - -struct UsbDeviceDefinition { - EpInfo *epinfo; // endpoint info pointer - UsbDeviceAddress address; - uint32_t epcount; // number of endpoints - uint32_t lowspeed; // indicates if a device is the low speed one - // uint8_t devclass; // device class -}; - -class AddressPool { -public: - virtual UsbDeviceDefinition* GetUsbDevicePtr(uint32_t addr) = 0; - virtual uint32_t AllocAddress(uint32_t parent, uint32_t is_hub = 0, uint32_t port = 0) = 0; - virtual void FreeAddress(uint32_t addr) = 0; -}; - -typedef void (*UsbDeviceHandleFunc)(UsbDeviceDefinition *pdev); - -#define ADDR_ERROR_INVALID_INDEX 0xFF -#define ADDR_ERROR_INVALID_ADDRESS 0xFF - -template -class AddressPoolImpl : public AddressPool { - EpInfo dev0ep; //Endpoint data structure used during enumeration for uninitialized device - - uint32_t hubCounter; // hub counter is kept - // in order to avoid hub address duplication - - UsbDeviceDefinition thePool[MAX_DEVICES_ALLOWED]; - - // Initializes address pool entry - - void InitEntry(uint32_t index) { - thePool[index].address.devAddress = 0; - thePool[index].epcount = 1; - thePool[index].lowspeed = 0; - thePool[index].epinfo = &dev0ep; - }; - - // Returns thePool index for a given address - - uint32_t FindAddressIndex(uint32_t address = 0) { - for (uint8_t i = 1; i < MAX_DEVICES_ALLOWED; i++) { - if(thePool[i].address.devAddress == address) - return i; - } - return 0; - }; - - // Returns thePool child index for a given parent - - uint32_t FindChildIndex(UsbDeviceAddress addr, uint32_t start = 1) { - for (uint32_t i = (start < 1 || start >= MAX_DEVICES_ALLOWED) ? 1 : start; i < MAX_DEVICES_ALLOWED; i++) { - if(thePool[i].address.bmParent == addr.bmAddress) - return i; - } - return 0; - }; - - // Frees address entry specified by index parameter - - void FreeAddressByIndex(uint32_t index) { - // Zero field is reserved and should not be affected - if(index == 0) - return; - - UsbDeviceAddress uda = thePool[index].address; - // If a hub was switched off all port addresses should be freed - if(uda.bmHub == 1) { - for (uint32_t i = 1; (i = FindChildIndex(uda, i));) - FreeAddressByIndex(i); - - // If the hub had the last allocated address, hubCounter should be decremented - if(hubCounter == uda.bmAddress) - hubCounter--; - } - InitEntry(index); - } - - // Initializes the whole address pool at once - - void InitAllAddresses() { - for (uint32_t i = 1; i < MAX_DEVICES_ALLOWED; i++) - InitEntry(i); - - hubCounter = 0; - }; - -public: - - AddressPoolImpl() : hubCounter(0) { - // Zero address is reserved - InitEntry(0); - - thePool[0].address.devAddress = 0; - thePool[0].epinfo = &dev0ep; - dev0ep.epAddr = 0; - dev0ep.maxPktSize = 8; - dev0ep.epAttribs = 0; //set DATA0/1 toggles to 0 - dev0ep.bmNakPower = USB_NAK_MAX_POWER; - - InitAllAddresses(); - }; - - // Returns a pointer to a specified address entry - - virtual UsbDeviceDefinition* GetUsbDevicePtr(uint32_t addr) { - if(!addr) - return thePool; - - uint32_t index = FindAddressIndex(addr); - - return (!index) ? NULL : thePool + index; - }; - - // Performs an operation specified by pfunc for each addressed device - - void ForEachUsbDevice(UsbDeviceHandleFunc pfunc) { - if(!pfunc) - return; - - for (uint32_t i = 1; i < MAX_DEVICES_ALLOWED; i++) - if(thePool[i].address.devAddress) - pfunc(thePool + i); - }; - - // Allocates new address - - virtual uint32_t AllocAddress(uint32_t parent, uint32_t is_hub = 0, uint32_t port = 0) { - /* if (parent != 0 && port == 0) - USB_HOST_SERIAL.println("PRT:0"); */ - UsbDeviceAddress _parent; - _parent.devAddress = parent; - if(_parent.bmReserved || port > 7) - //if(parent > 127 || port > 7) - return 0; - - if(is_hub && hubCounter == 7) - return 0; - - // finds first empty address entry starting from one - uint32_t index = FindAddressIndex(0); - - if(!index) // if empty entry is not found - return 0; - - if(_parent.devAddress == 0) { - if(is_hub) { - thePool[index].address.devAddress = 0x41; - hubCounter++; - } else - thePool[index].address.devAddress = 1; - - return thePool[index].address.devAddress; - } - - UsbDeviceAddress addr; - addr.devAddress = 0; // Ensure all bits are zero - addr.bmParent = _parent.bmAddress; - if(is_hub) { - addr.bmHub = 1; - addr.bmAddress = ++hubCounter; - } else { - addr.bmHub = 0; - addr.bmAddress = port; - } - thePool[index].address = addr; - /* - USB_HOST_SERIAL.print("Addr:"); - USB_HOST_SERIAL.print(addr.bmHub, HEX); - USB_HOST_SERIAL.print("."); - USB_HOST_SERIAL.print(addr.bmParent, HEX); - USB_HOST_SERIAL.print("."); - USB_HOST_SERIAL.println(addr.bmAddress, HEX); - */ - return thePool[index].address.devAddress; - }; - - // Empties pool entry - - virtual void FreeAddress(uint32_t addr) { - // if the root hub is disconnected all the addresses should be initialized - if(addr == 0x41) { - InitAllAddresses(); - return; - } - uint32_t index = FindAddressIndex(addr); - FreeAddressByIndex(index); - }; - - // Returns number of hubs attached - // It can be rather helpfull to find out if there are hubs attached than getting the exact number of hubs. - //uint32_t GetNumHubs() - //{ - // return hubCounter; - //}; - //uint32_t GetNumDevices() - //{ - // uint32_t counter = 0; - - // for (uint32_t i=1; iRegisterDeviceClass(this); //set devConfig[] entry - } -} - -uint32_t ADK::ConfigureDevice(uint32_t parent, uint32_t port, uint32_t lowspeed) { - return Init(parent, port, lowspeed); // Just call Init. Yes, really! -} - -/* Connection initialization of an Android phone */ -uint32_t ADK::Init(uint32_t parent, uint32_t port, uint32_t lowspeed) { - uint8_t buf[sizeof (USB_DEVICE_DESCRIPTOR)]; - USB_DEVICE_DESCRIPTOR * udd = reinterpret_cast(buf); - uint32_t rcode; - uint32_t num_of_conf; // number of configurations - UsbDeviceDefinition *p = NULL; - EpInfo *oldep_ptr = NULL; - - // get memory address of USB device address pool - AddressPool &addrPool = pUsb->GetAddressPool(); - - USBTRACE("\r\nADK Init"); - - // check if address has already been assigned to an instance - if(bAddress) { - USBTRACE("\r\nAddress in use"); - return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE; - } - - // Get pointer to pseudo device with address 0 assigned - p = addrPool.GetUsbDevicePtr(0); - - if(!p) { - USBTRACE("\r\nAddress not found"); - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - } - - if(!p->epinfo) { - USBTRACE("epinfo is null\r\n"); - return USB_ERROR_EPINFO_IS_NULL; - } - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - - p->lowspeed = lowspeed; - - // Get device descriptor GET_DESCRIPTOR - rcode = pUsb->getDevDescr(0, 0, sizeof(USB_DEVICE_DESCRIPTOR), (uint8_t*)buf); - - // Restore p->epinfo - p->epinfo = oldep_ptr; - - if(rcode) { - USBTRACE("\r\nGetDevDesc1 Error "); - goto FailGetDevDescr; - } - - // Reset - UHD_BusReset(); - while( Is_uhd_starting_reset() ) {} - - // Allocate new address according to device class - bAddress = addrPool.AllocAddress(parent, false, port); - if (!bAddress) - return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - - - // Extract Max Packet Size from device descriptor - epInfo[0].maxPktSize = udd->bMaxPacketSize0; - - // Assign new address to the device SET_ADDRESS - rcode = pUsb->setAddr(0, 0, bAddress); - if(rcode) { - USBTRACE("\r\nsetAddr Error "); - p->lowspeed = false; - addrPool.FreeAddress(bAddress); - bAddress = 0; - TRACE_USBHOST(printf("ADK::Init : setAddr failed with rcode %lu\r\n", rcode);) - return rcode; - }//if (rcode... - - USBTRACE2("\r\nAddr:", bAddress); - // Spec says you should wait at least 200ms. - //delay(300); - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - // Get device descriptor GET_DESCRIPTOR - rcode = pUsb->getDevDescr(bAddress, 0, sizeof(USB_DEVICE_DESCRIPTOR), (uint8_t*)buf); - // Restore p->epinfo - p->epinfo = oldep_ptr; - if (rcode) - { - USBTRACE("\r\nGetDevDesc2 Error "); - goto FailGetDevDescr; - } - - TRACE_USBHOST(printf("ADK::Init : device address is now %lu\r\n", bAddress);) - - p->lowspeed = false; - - //get pointer to assigned address record - p = addrPool.GetUsbDevicePtr(bAddress); - if(!p) { - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - } - - p->lowspeed = lowspeed; - - // Assign epInfo to epinfo pointer - only EP0 is known - rcode = pUsb->setEpInfoEntry(bAddress, 1, epInfo); - if(rcode) { - goto FailSetDevTblEntry; - } - - //check if ADK device is already in accessory mode; if yes, configure and exit - if(udd->idVendor == ADK_VID && - (udd->idProduct == ADK_PID || udd->idProduct == ADB_PID)) { - USBTRACE("\r\nAcc.mode device detected"); - /* go through configurations, find first bulk-IN, bulk-OUT EP, fill epInfo and quit */ - num_of_conf = udd->bNumConfigurations; - - USBTRACE2("\r\nNC:",num_of_conf); - for (uint32_t i = 0; i < num_of_conf; i++) { - ConfigDescParser<0, 0, 0, 0> confDescrParser(this); - - delay(1); - rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser); - -#if defined(XOOM) - //added by Jaylen Scott Vanorden - if(rcode) { - TRACE_USBHOST(printf("ADK::Init : Got 1st bad code for config: %lu\r\n", rcode);) - - // Try once more - rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser); - } -#endif - if(rcode) { - goto FailGetConfDescr; - } - if(bNumEP > 2) { - break; - } - } // for (uint32_t i=0; isetEpInfoEntry(bAddress, 3, epInfo); - if(rcode) { - goto FailSetDevTblEntry; - } - } - - // Set Configuration Value - rcode = pUsb->setConf(bAddress, 0, bConfNum); - if(rcode) { - goto FailSetConfDescr; - } - /* print endpoint structure */ - - USBTRACE("\r\nEndpoint Structure:"); - USBTRACE("\r\nEP0:"); - USBTRACE2("\r\nAddr: ", epInfo[0].epAddr); - USBTRACE2("\r\nMax.pkt.size: ", epInfo[0].maxPktSize); - USBTRACE2("\r\nAttr: ", epInfo[0].epAttribs); - USBTRACE("\r\nEpout:"); - USBTRACE2("\r\nAddr: ", epInfo[epDataOutIndex].epAddr); - USBTRACE2("\r\nMax.pkt.size: ", epInfo[epDataOutIndex].maxPktSize); - USBTRACE2("\r\nAttr: ", epInfo[epDataOutIndex].epAttribs); - USBTRACE("\r\nEpin:"); - USBTRACE2("\r\nAddr: ", epInfo[epDataInIndex].epAddr); - USBTRACE2("\r\nMax.pkt.size: ", epInfo[epDataInIndex].maxPktSize); - USBTRACE2("\r\nAttr: ", epInfo[epDataInIndex].epAttribs); - - - USBTRACE("\r\nConfiguration successful"); - ready = true; - return 0; //successful configuration - }//if( buf->idVendor == ADK_VID... - - //probe device - get accessory protocol revision - { - uint32_t adkproto = 0; - delay(1); - //rcode = getProto((uint8_t*) & adkproto); // ADK_GETPROTO 0x33 - rcode = getProto((uint8_t*)buf); - -#if defined(XOOM) - //added by Jaylen Scott Vanorden - if(rcode) { - USBTRACE2("\r\nGot 1st bad code for proto: ", rcode); - // Try once more - rcode = getProto((uint8_t*) & adkproto); - } -#endif - if(rcode) { - goto FailGetProto; //init fails - } - adkproto = buf[0] | (buf[1]<<8); - USBTRACE2("\r\nADK protocol rev. ", adkproto); - } - - delay(100); - - //sending ID strings - // ADK_SENDSTR 0x34 - if( sendStr(ACCESSORY_STRING_MANUFACTURER, manufacturer) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_MANUFACTURER"); } - delay(10); - if( sendStr(ACCESSORY_STRING_MODEL, model) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_MODEL"); } - delay(10); - if( sendStr(ACCESSORY_STRING_DESCRIPTION, description) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_DESCRIPTION"); } - delay(10); - if( sendStr(ACCESSORY_STRING_VERSION, version) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_VERSION"); } - delay(10); - if( sendStr(ACCESSORY_STRING_URI, uri) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_URI"); } - delay(10); - if( sendStr(ACCESSORY_STRING_SERIAL, serial) ) { - USBTRACE("\r\nPb ACCESSORY_STRING_SERIAL"); } - - delay(100); - - USBTRACE("\r\nSwitch to accessory mode"); - //switch to accessory mode - //the Android phone will reset - rcode = switchAcc(); - if(rcode) { - goto FailSwAcc; //init fails - } - rcode = USB_ERROR_CONFIG_REQUIRES_ADDITIONAL_RESET; - delay(100); // Give Android a chance to do its reset. This is a guess, and possibly could be lower. - goto SwAttempt; //switch to accessory mode attempted - - /* diagnostic messages */ -FailGetDevDescr: -#ifdef DEBUG_USB_HOST - NotifyFailGetDevDescr(rcode); - goto Fail; -#endif - -FailSetDevTblEntry: -#ifdef DEBUG_USB_HOST - NotifyFailSetDevTblEntry(rcode); - goto Fail; -#endif - -FailGetConfDescr: -#ifdef DEBUG_USB_HOST - NotifyFailGetConfDescr(rcode); - goto Fail; -#endif - -FailSetConfDescr: -#ifdef DEBUG_USB_HOST - NotifyFailSetConfDescr(rcode); - goto Fail; -#endif - -FailGetProto: -#ifdef DEBUG_USB_HOST - USBTRACE("\r\ngetProto:"); - goto Fail; -#endif - -FailSwAcc: -#ifdef DEBUG_USB_HOST - USBTRACE("\r\nswAcc:"); - goto Fail; -#endif - - //FailOnInit: - // USBTRACE("OnInit:"); - // goto Fail; - // -SwAttempt: -#ifdef DEBUG_USB_HOST - USBTRACE("\r\nAccessory mode switch attempt"); -Fail: -#endif - USBTRACE2("\r\nADK Init Failed, error code: ", rcode); - //NotifyFail(rcode); - Release(); - return rcode; -} - -/* Extracts bulk-IN and bulk-OUT endpoint information from config descriptor */ -void ADK::EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *pep) { - //ErrorMessage(PSTR("Conf.Val"), conf); - //ErrorMessage(PSTR("Iface Num"), iface); - //ErrorMessage(PSTR("Alt.Set"), alt); - - //added by Yuuichi Akagawa - if(bNumEP == 3) { - return; - } - - bConfNum = conf; - - if((pep->bmAttributes & 0x02) == 2) { - uint32_t index = ((pep->bEndpointAddress & 0x80) == 0x80) ? epDataInIndex : epDataOutIndex; - // Fill in the endpoint info structure - epInfo[index].epAddr = (pep->bEndpointAddress & 0x0F); - epInfo[index].maxPktSize = (uint8_t)pep->wMaxPacketSize; - - bNumEP++; - - //PrintEndpointDescriptor(pep); - } -} - -/* Performs a cleanup after failed Init() attempt */ -uint32_t ADK::Release() { - pUsb->GetAddressPool().FreeAddress(bAddress); - - bNumEP = 1; //must have to be reset to 1 - - bAddress = 0; - ready = false; - return 0; -} - -uint32_t ADK::RcvData(uint8_t *bytes_rcvd, uint8_t *dataptr) { - USBTRACE2("\r\nAddr: ", bAddress ); - USBTRACE2("\r\nEP: ",epInfo[epDataInIndex].epAddr); - return pUsb->inTransfer(bAddress, epInfo[epDataInIndex].epAddr, bytes_rcvd, dataptr); -} - -uint32_t ADK::SndData(uint32_t nbytes, uint8_t *dataptr) { - return pUsb->outTransfer(bAddress, epInfo[epDataOutIndex].epAddr, nbytes, dataptr); -} - -void ADK::PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr) { - Notify(PSTR("Endpoint descriptor:"), 0x80); - Notify(PSTR("\r\nLength:\t\t"), 0x80); - PrintHex (ep_ptr->bLength, 0x80); - Notify(PSTR("\r\nType:\t\t"), 0x80); - PrintHex (ep_ptr->bDescriptorType, 0x80); - Notify(PSTR("\r\nAddress:\t"), 0x80); - PrintHex (ep_ptr->bEndpointAddress, 0x80); - Notify(PSTR("\r\nAttributes:\t"), 0x80); - PrintHex (ep_ptr->bmAttributes, 0x80); - Notify(PSTR("\r\nMaxPktSize:\t"), 0x80); - PrintHex (ep_ptr->wMaxPacketSize, 0x80); - Notify(PSTR("\r\nPoll Intrv:\t"), 0x80); - PrintHex (ep_ptr->bInterval, 0x80); - Notify(PSTR("\r\n"), 0x80); -} diff --git a/legacy/builder/test/libraries/USBHost/src/adk.h b/legacy/builder/test/libraries/USBHost/src/adk.h deleted file mode 100644 index ffd22cf3e1f..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/adk.h +++ /dev/null @@ -1,148 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -/* Google ADK interface support header */ - -#ifndef ADK_H_INCLUDED -#define ADK_H_INCLUDED - -#include -#include "Usb.h" -#include "hid.h" -#include "Arduino.h" - -// #define ADK_VID 0x18D1 -// #define ADK_PID 0x2D00 -// #define ADB_PID 0x2D01 - -// JCB -#define ADK_VID 0x04E8 -#define ADK_PID 0x685C -#define ADB_PID 0x685D - -#define XOOM //enables repeating getProto() and getConf() attempts - //necessary for slow devices such as Motorola XOOM - //defined by default, can be commented out to save memory - -/* requests */ - -#define ADK_GETPROTO 51 //check USB accessory protocol version 0x33 -#define ADK_SENDSTR 52 //send identifying string 0x34 -#define ADK_ACCSTART 53 //start device in accessory mode 0x35 - -#define bmREQ_ADK_GET USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_VENDOR|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_ADK_SEND USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_VENDOR|USB_SETUP_RECIPIENT_DEVICE - -#define ACCESSORY_STRING_MANUFACTURER 0 -#define ACCESSORY_STRING_MODEL 1 -#define ACCESSORY_STRING_DESCRIPTION 2 -#define ACCESSORY_STRING_VERSION 3 -#define ACCESSORY_STRING_URI 4 -#define ACCESSORY_STRING_SERIAL 5 - -#define ADK_MAX_ENDPOINTS 3 //endpoint 0, bulk_IN, bulk_OUT - -class ADK; - -class ADK : public USBDeviceConfig, public UsbConfigXtracter { -private: - /* ID strings */ - const char* manufacturer; - const char* model; - const char* description; - const char* version; - const char* uri; - const char* serial; - - /* ADK proprietary requests */ - uint32_t getProto(uint8_t* adkproto); - uint32_t sendStr(uint32_t index, const char* str); - uint32_t switchAcc(void); - -protected: - static const uint32_t epDataInIndex; // DataIn endpoint index - static const uint32_t epDataOutIndex; // DataOUT endpoint index - - /* Mandatory members */ - USBHost *pUsb; - uint32_t bAddress; // Device USB address - uint32_t bConfNum; // configuration number - - uint32_t bNumEP; // total number of EP in the configuration - uint32_t ready; - - /* Endpoint data structure */ - EpInfo epInfo[ADK_MAX_ENDPOINTS]; - - void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr); - -public: - ADK(USBHost *pUsb, const char* manufacturer, - const char* model, - const char* description, - const char* version, - const char* uri, - const char* serial); - - // Methods for receiving and sending data - uint32_t RcvData(uint8_t *nbytesptr, uint8_t *dataptr); - uint32_t SndData(uint32_t nbytes, uint8_t *dataptr); - - - // USBDeviceConfig implementation - virtual uint32_t ConfigureDevice(uint32_t parent, uint32_t port, uint32_t lowspeed); - virtual uint32_t Init(uint32_t parent, uint32_t port, uint32_t lowspeed); - virtual uint32_t Release(); - - virtual uint32_t Poll() { - return 0; - }; - - virtual uint32_t GetAddress() { - return bAddress; - }; - - virtual uint32_t isReady() { - return ready; - }; - - virtual uint32_t VIDPIDOK(uint32_t vid, uint32_t pid) { - return (vid == ADK_VID && (pid == ADK_PID || pid == ADB_PID)); - }; - - //UsbConfigXtracter implementation - virtual void EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *ep); -}; //class ADK : public USBDeviceConfig ... - -/* get ADK protocol version */ - -/* returns 2 bytes in *adkproto */ -inline uint32_t ADK::getProto(uint8_t* adkproto) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_ADK_GET, ADK_GETPROTO, 0, 0, 0, 2, 2, adkproto, NULL)); -} - -/* send ADK string */ -inline uint32_t ADK::sendStr(uint32_t index, const char* str) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_ADK_SEND, ADK_SENDSTR, 0, 0, index, strlen(str) + 1, strlen(str) + 1, (uint8_t*)str, NULL)); -} - -/* switch to accessory mode */ -inline uint32_t ADK::switchAcc(void) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_ADK_SEND, ADK_ACCSTART, 0, 0, 0, 0, 0, NULL, NULL)); -} - -#endif /* ADK_H_INCLUDED */ diff --git a/legacy/builder/test/libraries/USBHost/src/confdescparser.h b/legacy/builder/test/libraries/USBHost/src/confdescparser.h deleted file mode 100644 index 6ee6a1eef2b..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/confdescparser.h +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -#if !defined(_usb_h_) || defined(__CONFDESCPARSER_H__) -#error "Never include confdescparser.h directly; include Usb.h instead" -#else - -#define __CONFDESCPARSER_H__ - -#include - -//#define TRACE_USBHOST(x) x -#define TRACE_USBHOST(x) - -class UsbConfigXtracter { -public: - //virtual void ConfigXtract(const USB_CONFIGURATION_DESCRIPTOR *conf) = 0; - //virtual void InterfaceXtract(uint32_t conf, const USB_INTERFACE_DESCRIPTOR *iface) = 0; - virtual void EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *ep) = 0; -}; - -#define CP_MASK_COMPARE_CLASS 1 -#define CP_MASK_COMPARE_SUBCLASS 2 -#define CP_MASK_COMPARE_PROTOCOL 4 -#define CP_MASK_COMPARE_ALL 7 - -// Configuration Descriptor Parser Class Template - -template -class ConfigDescParser : public USBReadParser { - UsbConfigXtracter *theXtractor; - MultiValueBuffer theBuffer; - MultiByteValueParser valParser; - ByteSkipper theSkipper; - uint8_t varBuffer[16 /*sizeof(USB_CONFIGURATION_DESCRIPTOR)*/]; - - uint32_t stateParseDescr; // ParseDescriptor state - - uint32_t dscrLen; // Descriptor length - uint32_t dscrType; // Descriptor type - - bool isGoodInterface; // Apropriate interface flag - uint32_t confValue; // Configuration value - uint32_t protoValue; // Protocol value - uint32_t ifaceNumber; // Interface number - uint32_t ifaceAltSet; // Interface alternate settings - - bool UseOr; - bool ParseDescriptor(uint8_t **pp, uint32_t *pcntdn); - void PrintHidDescriptor(const USB_HID_DESCRIPTOR *pDesc); - -public: - - void SetOR(void) { - UseOr = true; - } - ConfigDescParser(UsbConfigXtracter *xtractor); - virtual void Parse(const uint32_t len, const uint8_t *pbuf, const uint32_t &offset); -}; - -template -ConfigDescParser::ConfigDescParser(UsbConfigXtracter *xtractor) : - theXtractor(xtractor), - stateParseDescr(0), - dscrLen(0), - dscrType(0), -UseOr(false) { - theBuffer.pValue = varBuffer; - valParser.Initialize(&theBuffer); - theSkipper.Initialize(&theBuffer); -}; - -template -void ConfigDescParser::Parse(const uint32_t len, const uint8_t *pbuf, const uint32_t &offset) { - uint32_t cntdn = len; - uint8_t *p = (uint8_t*)pbuf; - - while (cntdn) - if(!ParseDescriptor(&p, &cntdn)) - return; -} - -/* Parser for the configuration descriptor. Takes values for class, subclass, protocol fields in interface descriptor and - compare masks for them. When the match is found, calls EndpointXtract passing buffer containing endpoint descriptor */ -template -bool ConfigDescParser::ParseDescriptor(uint8_t **pp, uint32_t *pcntdn) { - USB_CONFIGURATION_DESCRIPTOR* ucd = reinterpret_cast(varBuffer); - USB_INTERFACE_DESCRIPTOR* uid = reinterpret_cast(varBuffer); - switch(stateParseDescr) { - case 0: - theBuffer.valueSize = 2; - valParser.Initialize(&theBuffer); - stateParseDescr = 1; - case 1: - if(!valParser.Parse(pp, pcntdn)) - return false; - dscrLen = *((uint8_t*)theBuffer.pValue); - dscrType = *((uint8_t*)theBuffer.pValue + 1); - stateParseDescr = 2; - case 2: - // This is a sort of hack. Assuming that two bytes are all ready in the buffer - // the pointer is positioned two bytes ahead in order for the rest of descriptor - // to be read right after the size and the type fields. - // This should be used carefully. varBuffer should be used directly to handle data - // in the buffer. - theBuffer.pValue = varBuffer + 2; - stateParseDescr = 3; - case 3: - switch(dscrType) { - case USB_DESCRIPTOR_INTERFACE: - isGoodInterface = false; - case USB_DESCRIPTOR_CONFIGURATION: - theBuffer.valueSize = sizeof (USB_CONFIGURATION_DESCRIPTOR) - 2; - break; - case USB_DESCRIPTOR_ENDPOINT: - theBuffer.valueSize = sizeof (USB_ENDPOINT_DESCRIPTOR) - 2; - break; - case HID_DESCRIPTOR_HID: - theBuffer.valueSize = dscrLen - 2; - break; - } - valParser.Initialize(&theBuffer); - stateParseDescr = 4; - case 4: - switch(dscrType) { - case USB_DESCRIPTOR_CONFIGURATION: - if(!valParser.Parse(pp, pcntdn)) - return false; - confValue = ucd->bConfigurationValue; - break; - case USB_DESCRIPTOR_INTERFACE: - if(!valParser.Parse(pp, pcntdn)) - return false; - if((MASK & CP_MASK_COMPARE_CLASS) && uid->bInterfaceClass != CLASS_ID) - break; - if((MASK & CP_MASK_COMPARE_SUBCLASS) && uid->bInterfaceSubClass != SUBCLASS_ID) - break; - if(UseOr) { - if((!((MASK & CP_MASK_COMPARE_PROTOCOL) && uid->bInterfaceProtocol))) - break; - } else { - if((MASK & CP_MASK_COMPARE_PROTOCOL) && uid->bInterfaceProtocol != PROTOCOL_ID) - break; - } - isGoodInterface = true; - ifaceNumber = uid->bInterfaceNumber; - ifaceAltSet = uid->bAlternateSetting; - protoValue = uid->bInterfaceProtocol; - break; - case USB_DESCRIPTOR_ENDPOINT: - if(!valParser.Parse(pp, pcntdn)) - return false; - if(isGoodInterface) - if(theXtractor) - theXtractor->EndpointXtract(confValue, ifaceNumber, ifaceAltSet, protoValue, (USB_ENDPOINT_DESCRIPTOR*)varBuffer); - break; - //case HID_DESCRIPTOR_HID: - // if (!valParser.Parse(pp, pcntdn)) - // return false; - // PrintHidDescriptor((const USB_HID_DESCRIPTOR*)varBuffer); - // break; - default: - if(!theSkipper.Skip(pp, pcntdn, dscrLen - 2)) - return false; - } - theBuffer.pValue = varBuffer; - stateParseDescr = 0; - } - return true; -} - -template -void ConfigDescParser::PrintHidDescriptor(const USB_HID_DESCRIPTOR *pDesc) { - Notify(PSTR("\r\n\r\nHID Descriptor:\r\n"), 0x80); - Notify(PSTR("bDescLength:\t\t"), 0x80); - PrintHex (pDesc->bLength, 0x80); - - Notify(PSTR("\r\nbDescriptorType:\t"), 0x80); - PrintHex (pDesc->bDescriptorType, 0x80); - - Notify(PSTR("\r\nbcdHID:\t\t\t"), 0x80); - PrintHex (pDesc->bcdHID, 0x80); - - Notify(PSTR("\r\nbCountryCode:\t\t"), 0x80); - PrintHex (pDesc->bCountryCode, 0x80); - - Notify(PSTR("\r\nbNumDescriptors:\t"), 0x80); - PrintHex (pDesc->bNumDescriptors, 0x80); - - //Notify(PSTR("\r\nbDescrType:\t\t")); - //PrintHex(pDesc->bDescrType); - // - //Notify(PSTR("\r\nwDescriptorLength:\t")); - //PrintHex(pDesc->wDescriptorLength); - - for (uint32_t i = 0; i < pDesc->bNumDescriptors; i++) { - HID_CLASS_DESCRIPTOR_LEN_AND_TYPE *pLT = (HID_CLASS_DESCRIPTOR_LEN_AND_TYPE*)&(pDesc->bDescrType); - - Notify(PSTR("\r\nbDescrType:\t\t"), 0x80); - PrintHex (pLT[i].bDescrType, 0x80); - - Notify(PSTR("\r\nwDescriptorLength:\t"), 0x80); - PrintHex (pLT[i].wDescriptorLength, 0x80); - } - Notify(PSTR("\r\n"), 0x80); -} - - -#endif // __CONFDESCPARSER_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/hexdump.h b/legacy/builder/test/libraries/USBHost/src/hexdump.h deleted file mode 100644 index 3818d850b71..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hexdump.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#if !defined(_usb_h_) || defined(__HEXDUMP_H__) -#error "Never include hexdump.h directly; include Usb.h instead" -#else -#define __HEXDUMP_H__ - -extern int UsbDEBUGlvl; - -template -class HexDumper : public BASE_CLASS { - uint8_t byteCount; - OFFSET_TYPE byteTotal; - -public: - - HexDumper() : byteCount(0), byteTotal(0) { - }; - - void Initialize() { - byteCount = 0; - byteTotal = 0; - }; - - virtual void Parse(const LEN_TYPE len, const uint8_t *pbuf, const OFFSET_TYPE &offset); -}; - -template -void HexDumper::Parse(const LEN_TYPE len, const uint8_t *pbuf, const OFFSET_TYPE &offset) { - if(UsbDEBUGlvl >= 0x80) { // Fully bypass this block of code if we do not debug. - for(LEN_TYPE j = 0; j < len; j++, byteCount++, byteTotal++) { - if(!byteCount) { - PrintHex (byteTotal, 0x80); - E_Notify(PSTR(": "), 0x80); - } - PrintHex (pbuf[j], 0x80); - E_Notify(PSTR(" "), 0x80); - - if(byteCount == 15) { - E_Notify(PSTR("\r\n"), 0x80); - byteCount = 0xFF; - } - } - } -} - -#endif // __HEXDUMP_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/hid.cpp b/legacy/builder/test/libraries/USBHost/src/hid.cpp deleted file mode 100644 index 70c785b3e61..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hid.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#include "hid.h" - -//get HID report descriptor - -/* WRONG! Endpoint is _ALWAYS_ ZERO for HID! We want the _INTERFACE_ value here! -uint32_t HID::GetReportDescr(uint32_t ep, USBReadParser *parser) { - const uint8_t constBufLen = 64; - uint8_t buf[constBufLen]; - - uint8_t rcode = pUsb->ctrlReq(bAddress, ep, bmREQ_HIDREPORT, USB_REQUEST_GET_DESCRIPTOR, 0x00, - HID_DESCRIPTOR_REPORT, 0x0000, 128, constBufLen, buf, (USBReadParser*)parser); - - //return ((rcode != hrSTALL) ? rcode : 0); - return rcode; -} - */ -uint32_t HID::GetReportDescr(uint32_t wIndex, USBReadParser *parser) { - const uint8_t constBufLen = 64; - uint8_t buf[constBufLen]; - - uint8_t rcode = pUsb->ctrlReq(bAddress, 0x00, bmREQ_HIDREPORT, USB_REQUEST_GET_DESCRIPTOR, 0x00, - HID_DESCRIPTOR_REPORT, wIndex, 128, constBufLen, buf, (USBReadParser*)parser); - - //return ((rcode != hrSTALL) ? rcode : 0); - return rcode; -} - -//uint32_t HID::getHidDescr( uint8_t ep, uint16_t nbytes, uint8_t* dataptr ) -//{ -// return( pUsb->ctrlReq( bAddress, ep, bmREQ_GET_DESCR, USB_REQUEST_GET_DESCRIPTOR, 0x00, HID_DESCRIPTOR_HID, 0x0000, nbytes, dataptr )); -//} - -uint32_t HID::SetReport(uint32_t ep, uint32_t iface, uint32_t report_type, uint32_t report_id, uint32_t nbytes, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, ep, bmREQ_HIDOUT, HID_REQUEST_SET_REPORT, report_id, report_type, iface, nbytes, nbytes, dataptr, NULL)); -} - -uint32_t HID::GetReport(uint32_t ep, uint32_t iface, uint32_t report_type, uint32_t report_id, uint32_t nbytes, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, ep, bmREQ_HIDIN, HID_REQUEST_GET_REPORT, report_id, report_type, iface, nbytes, nbytes, dataptr, NULL)); -} - -uint32_t HID::GetIdle(uint32_t iface, uint32_t reportID, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDIN, HID_REQUEST_GET_IDLE, reportID, 0, iface, 0x0001, 0x0001, dataptr, NULL)); -} - -uint32_t HID::SetIdle(uint32_t iface, uint32_t reportID, uint32_t duration) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDOUT, HID_REQUEST_SET_IDLE, reportID, duration, iface, 0x0000, 0x0000, NULL, NULL)); -} - -uint32_t HID::SetProtocol(uint32_t iface, uint32_t protocol) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDOUT, HID_REQUEST_SET_PROTOCOL, protocol, 0x00, iface, 0x0000, 0x0000, NULL, NULL)); -} - -uint32_t HID::GetProtocol(uint32_t iface, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_HIDIN, HID_REQUEST_GET_PROTOCOL, 0x00, 0x00, iface, 0x0001, 0x0001, dataptr, NULL)); -} - -void HID::PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr) { - Notify(PSTR("Endpoint descriptor:"), 0x80); - Notify(PSTR("\r\nLength:\t\t"), 0x80); - D_PrintHex (ep_ptr->bLength, 0x80); - Notify(PSTR("\r\nType:\t\t"), 0x80); - D_PrintHex (ep_ptr->bDescriptorType, 0x80); - Notify(PSTR("\r\nAddress:\t"), 0x80); - D_PrintHex (ep_ptr->bEndpointAddress, 0x80); - Notify(PSTR("\r\nAttributes:\t"), 0x80); - D_PrintHex (ep_ptr->bmAttributes, 0x80); - Notify(PSTR("\r\nMaxPktSize:\t"), 0x80); - D_PrintHex (ep_ptr->wMaxPacketSize, 0x80); - Notify(PSTR("\r\nPoll Intrv:\t"), 0x80); - D_PrintHex (ep_ptr->bInterval, 0x80); -} - -void HID::PrintHidDescriptor(const USB_HID_DESCRIPTOR *pDesc) { - Notify(PSTR("\r\n\r\nHID Descriptor:\r\n"), 0x80); - Notify(PSTR("bDescLength:\t\t"), 0x80); - D_PrintHex (pDesc->bLength, 0x80); - - Notify(PSTR("\r\nbDescriptorType:\t"), 0x80); - D_PrintHex (pDesc->bDescriptorType, 0x80); - - Notify(PSTR("\r\nbcdHID:\t\t\t"), 0x80); - D_PrintHex (pDesc->bcdHID, 0x80); - - Notify(PSTR("\r\nbCountryCode:\t\t"), 0x80); - D_PrintHex (pDesc->bCountryCode, 0x80); - - Notify(PSTR("\r\nbNumDescriptors:\t"), 0x80); - D_PrintHex (pDesc->bNumDescriptors, 0x80); - - Notify(PSTR("\r\nbDescrType:\t\t"), 0x80); - D_PrintHex (pDesc->bDescrType, 0x80); - - Notify(PSTR("\r\nwDescriptorLength:\t"), 0x80); - D_PrintHex (pDesc->wDescriptorLength, 0x80); -} diff --git a/legacy/builder/test/libraries/USBHost/src/hid.h b/legacy/builder/test/libraries/USBHost/src/hid.h deleted file mode 100644 index ca697a56829..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hid.h +++ /dev/null @@ -1,183 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -#if !defined(__HID_H__) -#define __HID_H__ - -#include "Usb.h" -#include "hidusagestr.h" - -#define MAX_REPORT_PARSERS 2 -#define HID_MAX_HID_CLASS_DESCRIPTORS 5 - -#define DATA_SIZE_MASK 0x03 -#define TYPE_MASK 0x0C -#define TAG_MASK 0xF0 - -#define DATA_SIZE_0 0x00 -#define DATA_SIZE_1 0x01 -#define DATA_SIZE_2 0x02 -#define DATA_SIZE_4 0x03 - -#define TYPE_MAIN 0x00 -#define TYPE_GLOBAL 0x04 -#define TYPE_LOCAL 0x08 - -#define TAG_MAIN_INPUT 0x80 -#define TAG_MAIN_OUTPUT 0x90 -#define TAG_MAIN_COLLECTION 0xA0 -#define TAG_MAIN_FEATURE 0xB0 -#define TAG_MAIN_ENDCOLLECTION 0xC0 - -#define TAG_GLOBAL_USAGEPAGE 0x00 -#define TAG_GLOBAL_LOGICALMIN 0x10 -#define TAG_GLOBAL_LOGICALMAX 0x20 -#define TAG_GLOBAL_PHYSMIN 0x30 -#define TAG_GLOBAL_PHYSMAX 0x40 -#define TAG_GLOBAL_UNITEXP 0x50 -#define TAG_GLOBAL_UNIT 0x60 -#define TAG_GLOBAL_REPORTSIZE 0x70 -#define TAG_GLOBAL_REPORTID 0x80 -#define TAG_GLOBAL_REPORTCOUNT 0x90 -#define TAG_GLOBAL_PUSH 0xA0 -#define TAG_GLOBAL_POP 0xB0 - -#define TAG_LOCAL_USAGE 0x00 -#define TAG_LOCAL_USAGEMIN 0x10 -#define TAG_LOCAL_USAGEMAX 0x20 - -/* HID requests */ -#define bmREQ_HIDOUT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE -#define bmREQ_HIDIN USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE -#define bmREQ_HIDREPORT USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_STANDARD|USB_SETUP_RECIPIENT_INTERFACE - -/* HID constants. Not part of chapter 9 */ -/* Class-Specific Requests */ -#define HID_REQUEST_GET_REPORT 0x01 -#define HID_REQUEST_GET_IDLE 0x02 -#define HID_REQUEST_GET_PROTOCOL 0x03 -#define HID_REQUEST_SET_REPORT 0x09 -#define HID_REQUEST_SET_IDLE 0x0A -#define HID_REQUEST_SET_PROTOCOL 0x0B - -/* Class Descriptor Types */ -#define HID_DESCRIPTOR_HID 0x21 -#define HID_DESCRIPTOR_REPORT 0x22 -#define HID_DESRIPTOR_PHY 0x23 - -/* Protocol Selection */ -#define HID_BOOT_PROTOCOL 0x00 -#define HID_RPT_PROTOCOL 0x01 - -/* HID Interface Class Code */ -#define HID_INTF 0x03 - -/* HID Interface Class SubClass Codes */ -#define HID_BOOT_INTF_SUBCLASS 0x01 - -/* HID Interface Class Protocol Codes */ -#define HID_PROTOCOL_NONE 0x00 -#define HID_PROTOCOL_KEYBOARD 0x01 -#define HID_PROTOCOL_MOUSE 0x02 - -#define HID_ITEM_TYPE_MAIN 0 -#define HID_ITEM_TYPE_GLOBAL 1 -#define HID_ITEM_TYPE_LOCAL 2 -#define HID_ITEM_TYPE_RESERVED 3 - -#define HID_LONG_ITEM_PREFIX 0xfe // Long item prefix value - -#define bmHID_MAIN_ITEM_TAG 0xfc // Main item tag mask - -#define bmHID_MAIN_ITEM_INPUT 0x80 // Main item Input tag value -#define bmHID_MAIN_ITEM_OUTPUT 0x90 // Main item Output tag value -#define bmHID_MAIN_ITEM_FEATURE 0xb0 // Main item Feature tag value -#define bmHID_MAIN_ITEM_COLLECTION 0xa0 // Main item Collection tag value -#define bmHID_MAIN_ITEM_END_COLLECTION 0xce // Main item End Collection tag value - -#define HID_MAIN_ITEM_COLLECTION_PHYSICAL 0 -#define HID_MAIN_ITEM_COLLECTION_APPLICATION 1 -#define HID_MAIN_ITEM_COLLECTION_LOGICAL 2 -#define HID_MAIN_ITEM_COLLECTION_REPORT 3 -#define HID_MAIN_ITEM_COLLECTION_NAMED_ARRAY 4 -#define HID_MAIN_ITEM_COLLECTION_USAGE_SWITCH 5 -#define HID_MAIN_ITEM_COLLECTION_USAGE_MODIFIER 6 - -struct HidItemPrefix { - uint8_t bSize : 2; - uint8_t bType : 2; - uint8_t bTag : 4; -}; - -struct MainItemIOFeature { - uint8_t bmIsConstantOrData : 1; - uint8_t bmIsArrayOrVariable : 1; - uint8_t bmIsRelativeOrAbsolute : 1; - uint8_t bmIsWrapOrNoWrap : 1; - uint8_t bmIsNonLonearOrLinear : 1; - uint8_t bmIsNoPreferedOrPrefered : 1; - uint8_t bmIsNullOrNoNull : 1; - uint8_t bmIsVolatileOrNonVolatile : 1; -}; - -class HID; - -class HIDReportParser { -public: - virtual void Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf)= 0; -}; - -class HID : public USBDeviceConfig, public UsbConfigXtracter { -protected: - USBHost *pUsb; // USB class instance pointer - uint32_t bAddress; // address - -protected: - static const uint32_t epInterruptInIndex = 1; // InterruptIN endpoint index - static const uint32_t epInterruptOutIndex = 2; // InterruptOUT endpoint index - - static const uint32_t maxHidInterfaces = 3; - static const uint32_t maxEpPerInterface = 2; - static const uint32_t totalEndpoints = (maxHidInterfaces * maxEpPerInterface + 1); - - void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr); - void PrintHidDescriptor(const USB_HID_DESCRIPTOR *pDesc); - - virtual HIDReportParser* GetReportParser(uint32_t id); - -public: - - HID(USBHost *pusb) : pUsb(pusb) { - }; - - const USBHost* GetUsb() { - return pUsb; - }; - virtual uint32_t SetReportParser(uint32_t id, HIDReportParser *prs); - - uint32_t SetProtocol(uint32_t iface, uint32_t protocol); - uint32_t GetProtocol(uint32_t iface, uint8_t* dataptr); - uint32_t GetIdle(uint32_t iface, uint32_t reportID, uint8_t* dataptr); - uint32_t SetIdle(uint32_t iface, uint32_t reportID, uint32_t duration); - - uint32_t GetReportDescr(uint32_t ep, USBReadParser *parser = NULL); - - uint32_t GetHidDescr(uint32_t ep, uint32_t nbytes, uint8_t* dataptr); - uint32_t GetReport(uint32_t ep, uint32_t iface, uint32_t report_type, uint32_t report_id, uint32_t nbytes, uint8_t* dataptr); - uint32_t SetReport(uint32_t ep, uint32_t iface, uint32_t report_type, uint32_t report_id, uint32_t nbytes, uint8_t* dataptr); -}; - -#endif // __HID_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/hidboot.cpp b/legacy/builder/test/libraries/USBHost/src/hidboot.cpp deleted file mode 100644 index 9f6b8743ae9..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hidboot.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -#include "hidboot.h" - -void MouseReportParser::Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf) { - MOUSEINFO *pmi = (MOUSEINFO*)buf; - // Future: - // bool event; - -#if 0 - if (prevState.mouseInfo.bmLeftButton == 0 && pmi->bmLeftButton == 1) - OnLeftButtonDown(pmi); - - if (prevState.mouseInfo.bmLeftButton == 1 && pmi->bmLeftButton == 0) - OnLeftButtonUp(pmi); - - if (prevState.mouseInfo.bmRightButton == 0 && pmi->bmRightButton == 1) - OnRightButtonDown(pmi); - - if (prevState.mouseInfo.bmRightButton == 1 && pmi->bmRightButton == 0) - OnRightButtonUp(pmi); - - if (prevState.mouseInfo.bmMiddleButton == 0 && pmi->bmMiddleButton == 1) - OnMiddleButtonDown(pmi); - - if (prevState.mouseInfo.bmMiddleButton == 1 && pmi->bmMiddleButton == 0) - OnMiddleButtonUp(pmi); - - if (prevState.mouseInfo.dX != pmi->dX || prevState.mouseInfo.dY != pmi->dY) - OnMouseMove(pmi); - - if (len > sizeof (MOUSEINFO)) - for (uint32_t i = 0; ibmLeftButton ) { - if(pmi->bmLeftButton) { - OnLeftButtonDown(pmi); - } else { - OnLeftButtonUp(pmi); - } - // Future: - // event = true; - } - - if(prevState.mouseInfo.bmRightButton != pmi->bmRightButton) { - if(pmi->bmRightButton) { - OnRightButtonDown(pmi); - } else { - OnRightButtonUp(pmi); - } - // Future: - // event = true; - } - - if(prevState.mouseInfo.bmMiddleButton != pmi->bmMiddleButton) { - if(pmi->bmMiddleButton) { - OnMiddleButtonDown(pmi); - } else { - OnMiddleButtonUp(pmi); - } - // Future: - // event = true; - } - - // - // Scroll wheel(s), are not part of the spec, but we could support it. - // Logitech wireless keyboard and mouse combo reports scroll wheel in byte 4 - // We wouldn't even need to save this information. - //if(len > 3) { - //} - // - - // Mice only report motion when they actually move! - // Why not just pass the x/y values to simplify things?? - if(pmi->dX || pmi->dY) { - OnMouseMove(pmi); - // Future: - // event = true; - } - - // - // Future: - // Provide a callback that operates on the gathered events from above. - // - // if(event) OnMouse(); - // - - // Only the first byte matters (buttons). We do NOT need to save position info. - prevState.bInfo[0] = buf[0]; -#endif - -}; - -void KeyboardReportParser::Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf) { - // On error - return - if (buf[2] == 1) - return; - - //KBDINFO *pki = (KBDINFO*)buf; - - // provide event for changed control key state - if (prevState.bInfo[0x00] != buf[0x00]) { - OnControlKeysChanged(prevState.bInfo[0x00], buf[0x00]); - } - - for (uint32_t i = 2; i < 8; i++) { - bool down = false; - bool up = false; - - for (uint8_t j = 2; j < 8; j++) { - if (buf[i] == prevState.bInfo[j] && buf[i] != 1) - down = true; - if (buf[j] == prevState.bInfo[i] && prevState.bInfo[i] != 1) - up = true; - } - if (!down) { - HandleLockingKeys(hid, buf[i]); - OnKeyDown(*buf, buf[i]); - } - if (!up) - OnKeyUp(prevState.bInfo[0], prevState.bInfo[i]); - } - for(uint32_t i = 0; i < 8; i++) - prevState.bInfo[i] = buf[i]; -}; - -uint8_t KeyboardReportParser::HandleLockingKeys(HID *hid, uint8_t key) { - uint8_t old_keys = kbdLockingKeys.bLeds; - - switch (key) { - case UHS_HID_BOOT_KEY_NUM_LOCK: - kbdLockingKeys.kbdLeds.bmNumLock = ~kbdLockingKeys.kbdLeds.bmNumLock; - break; - case UHS_HID_BOOT_KEY_CAPS_LOCK: - kbdLockingKeys.kbdLeds.bmCapsLock = ~kbdLockingKeys.kbdLeds.bmCapsLock; - break; - case UHS_HID_BOOT_KEY_SCROLL_LOCK: - kbdLockingKeys.kbdLeds.bmScrollLock = ~kbdLockingKeys.kbdLeds.bmScrollLock; - break; - } - - if (old_keys != kbdLockingKeys.bLeds && hid) - return (hid->SetReport(0, 0/*hid->GetIface()*/, 2, 0, 1, &kbdLockingKeys.bLeds)); - - return 0; -} - -const uint8_t KeyboardReportParser::numKeys[10] = { '!', '@', '#', '$', '%', '^', '&', '*', '(', ')'}; -const uint8_t KeyboardReportParser::symKeysUp[12] = { '_', '+', '{', '}', '|', '~', ':', '"', '~', '<', '>', '?'}; -const uint8_t KeyboardReportParser::symKeysLo[12] = { '-', '=', '[', ']', '\\', ' ', ';', '\'', '`', ',', '.', '/'}; -const uint8_t KeyboardReportParser::padKeys[5] = { '/', '*', '-', '+', 0x13}; -#define VALUE_WITHIN(v,l,h) (((v)>=(l)) && ((v)<=(h))) -uint8_t KeyboardReportParser::OemToAscii(uint8_t mod, uint8_t key) { - uint8_t shift = (mod & 0x22); - - // [a-z] - if (VALUE_WITHIN(key, 0x04, 0x1d)) { - // Upper case letters - if ((kbdLockingKeys.kbdLeds.bmCapsLock == 0 && (mod & 2)) || - (kbdLockingKeys.kbdLeds.bmCapsLock == 1 && (mod & 2) == 0)) - return (key - 4 + 'A'); - - // Lower case letters - else - return (key - 4 + 'a'); - }// Numbers - else if (VALUE_WITHIN(key, 0x1e, 0x27)) { - if (shift) - return ((uint8_t)pgm_read_byte(&getNumKeys()[key - 0x1e])); - else - return ((key == UHS_HID_BOOT_KEY_ZERO) ? '0' : key - 0x1e + '1'); - }// Keypad Numbers - else if(VALUE_WITHIN(key, 0x59, 0x61)) { - if(kbdLockingKeys.kbdLeds.bmNumLock == 1) - return (key - 0x59 + '1'); - } else if(VALUE_WITHIN(key, 0x2d, 0x38)) - return ((shift) ? (uint8_t)pgm_read_byte(&getSymKeysUp()[key - 0x2d]) : (uint8_t)pgm_read_byte(&getSymKeysLo()[key - 0x2d])); - else if(VALUE_WITHIN(key, 0x54, 0x58)) - return (uint8_t)pgm_read_byte(&getPadKeys()[key - 0x54]); - else { - switch(key) { - case UHS_HID_BOOT_KEY_SPACE: return (0x20); - case UHS_HID_BOOT_KEY_ENTER: return (0x13); - case UHS_HID_BOOT_KEY_ZERO2: return ((kbdLockingKeys.kbdLeds.bmNumLock == 1) ? '0': 0); - case UHS_HID_BOOT_KEY_PERIOD: return ((kbdLockingKeys.kbdLeds.bmNumLock == 1) ? '.': 0); - } - } - return ( 0); -} - diff --git a/legacy/builder/test/libraries/USBHost/src/hidboot.h b/legacy/builder/test/libraries/USBHost/src/hidboot.h deleted file mode 100644 index 621ce57ac2f..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hidboot.h +++ /dev/null @@ -1,609 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -#ifndef HIDBOOT_H_INCLUDED -#define HIDBOOT_H_INCLUDED - -#include -#include "Usb.h" -#include "hid.h" -#include "Arduino.h" - -#define UHS_HID_BOOT_KEY_ZERO 0x27 -#define UHS_HID_BOOT_KEY_ENTER 0x28 -#define UHS_HID_BOOT_KEY_SPACE 0x2c -#define UHS_HID_BOOT_KEY_CAPS_LOCK 0x39 -#define UHS_HID_BOOT_KEY_SCROLL_LOCK 0x47 -#define UHS_HID_BOOT_KEY_NUM_LOCK 0x53 -#define UHS_HID_BOOT_KEY_ZERO2 0x62 -#define UHS_HID_BOOT_KEY_PERIOD 0x63 - -// Don't worry, GCC will optimize the result to a final value. -#define bitsEndpoints(p) ((((p) & HID_PROTOCOL_KEYBOARD)? 2 : 0) | (((p) & HID_PROTOCOL_MOUSE)? 1 : 0)) -#define totalEndpoints(p) ((bitsEndpoints(p) == 3) ? 3 : 2) -#define epMUL(p) ((((p) & HID_PROTOCOL_KEYBOARD)? 1 : 0) + (((p) & HID_PROTOCOL_MOUSE)? 1 : 0)) - -// Already defined in hid.h -// #define HID_MAX_HID_CLASS_DESCRIPTORS 5 - -struct MOUSEINFO { - - struct { - uint8_t bmLeftButton : 1; - uint8_t bmRightButton : 1; - uint8_t bmMiddleButton : 1; - uint8_t bmDummy : 5; - }; - int8_t dX; - int8_t dY; -}; - -class MouseReportParser : public HIDReportParser { - - union { - MOUSEINFO mouseInfo; - uint8_t bInfo[sizeof (MOUSEINFO)]; - } prevState; - -public: - virtual void Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf); - -protected: - - virtual void OnMouseMove(MOUSEINFO *mi) { - }; - - virtual void OnLeftButtonUp(MOUSEINFO *mi) { - }; - - virtual void OnLeftButtonDown(MOUSEINFO *mi) { - }; - - virtual void OnRightButtonUp(MOUSEINFO *mi) { - }; - - virtual void OnRightButtonDown(MOUSEINFO *mi) { - }; - - virtual void OnMiddleButtonUp(MOUSEINFO *mi) { - }; - - virtual void OnMiddleButtonDown(MOUSEINFO *mi) { - }; -}; - -struct MODIFIERKEYS { - uint8_t bmLeftCtrl : 1; - uint8_t bmLeftShift : 1; - uint8_t bmLeftAlt : 1; - uint8_t bmLeftGUI : 1; - uint8_t bmRightCtrl : 1; - uint8_t bmRightShift : 1; - uint8_t bmRightAlt : 1; - uint8_t bmRightGUI : 1; -}; - -struct KBDINFO { - - struct { - uint8_t bmLeftCtrl : 1; - uint8_t bmLeftShift : 1; - uint8_t bmLeftAlt : 1; - uint8_t bmLeftGUI : 1; - uint8_t bmRightCtrl : 1; - uint8_t bmRightShift : 1; - uint8_t bmRightAlt : 1; - uint8_t bmRightGUI : 1; - }; - uint8_t bReserved; - uint8_t Keys[6]; -}; - -struct KBDLEDS { - uint8_t bmNumLock : 1; - uint8_t bmCapsLock : 1; - uint8_t bmScrollLock : 1; - uint8_t bmCompose : 1; - uint8_t bmKana : 1; - uint8_t bmReserved : 3; -}; - -class KeyboardReportParser : public HIDReportParser { - static const uint8_t numKeys[10]; - static const uint8_t symKeysUp[12]; - static const uint8_t symKeysLo[12]; - static const uint8_t padKeys[5]; - -protected: - - union { - KBDINFO kbdInfo; - uint8_t bInfo[sizeof (KBDINFO)]; - } prevState; - - union { - KBDLEDS kbdLeds; - uint8_t bLeds; - } kbdLockingKeys; - - uint8_t OemToAscii(uint8_t mod, uint8_t key); - -public: - - KeyboardReportParser() { - kbdLockingKeys.bLeds = 0; - }; - - virtual void Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf); - -protected: - virtual uint8_t HandleLockingKeys(HID* hid, uint8_t key); - - virtual void OnControlKeysChanged(uint8_t before, uint8_t after) { - }; - - virtual void OnKeyDown(uint8_t mod, uint8_t key) { - }; - - virtual void OnKeyUp(uint8_t mod, uint8_t key) { - }; - - virtual const uint8_t *getNumKeys() { - return numKeys; - }; - - virtual const uint8_t *getSymKeysUp() { - return symKeysUp; - }; - - virtual const uint8_t *getSymKeysLo() { - return symKeysLo; - }; - - virtual const uint8_t *getPadKeys() { - return padKeys; - }; -}; - -template -class HIDBoot : public HID //public USBDeviceConfig, public UsbConfigXtracter -{ - EpInfo epInfo[totalEndpoints(BOOT_PROTOCOL)]; - HIDReportParser *pRptParser[epMUL(BOOT_PROTOCOL)]; - - uint32_t bConfNum; // configuration number - uint32_t bIfaceNum; // Interface Number - uint32_t bNumIface; // number of interfaces in the configuration - uint32_t bNumEP; // total number of EP in the configuration - - uint32_t qNextPollTime; // next poll time - uint32_t bPollEnable; // poll enable flag - uint32_t bInterval; // largest interval - - void Initialize(); - - virtual HIDReportParser* GetReportParser(uint32_t id) { - return pRptParser[id]; - }; - -public: - HIDBoot(USBHost *p); - - virtual uint32_t SetReportParser(uint32_t id, HIDReportParser *prs) { - pRptParser[id] = prs; - return true; - }; - - // USBDeviceConfig implementation - virtual uint32_t Init(uint32_t parent, uint32_t port, uint32_t lowspeed); - virtual uint32_t Release(); - virtual uint32_t Poll(); - - virtual uint32_t GetAddress() { - return bAddress; - }; - - // UsbConfigXtracter implementation - virtual void EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *ep); -}; - -template -HIDBoot::HIDBoot(USBHost *p) : - HID(p), - qNextPollTime(0), - bPollEnable(false) { - Initialize(); - - for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) { - pRptParser[i] = NULL; - } - if(pUsb) - pUsb->RegisterDeviceClass(this); -} - -template -void HIDBoot::Initialize() { - for(int i = 0; i < totalEndpoints(BOOT_PROTOCOL); i++) { - epInfo[i].epAddr = 0; - epInfo[i].maxPktSize = (i) ? 0 : 8; - epInfo[i].epAttribs = 0; - epInfo[i].bmNakPower = (i) ? USB_NAK_NOWAIT : USB_NAK_MAX_POWER; - } - bNumEP = 1; - bNumIface = 0; - bConfNum = 0; -} - -template -uint32_t HIDBoot::Init(uint32_t parent, uint32_t port, uint32_t lowspeed) { - const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR); - - uint8_t buf[constBufSize]; - uint32_t rcode; - UsbDeviceDefinition *p = NULL; - EpInfo *oldep_ptr = NULL; - uint32_t len = 0; - //uint16_t cd_len = 0; - - uint32_t num_of_conf; // number of configurations - //uint32_t num_of_intf; // number of interfaces - - // Get memory address of USB device address pool - AddressPool &addrPool = pUsb->GetAddressPool(); - - USBTRACE("BM Init\r\n"); - //USBTRACE2("totalEndpoints:", (uint8_t) (totalEndpoints(BOOT_PROTOCOL))); - //USBTRACE2("epMUL:", epMUL(BOOT_PROTOCOL)); - - // Check if address has already been assigned to an instance - if(bAddress) - return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE; - - bInterval = 0; - // Get pointer to pseudo device with address 0 assigned - p = addrPool.GetUsbDevicePtr(0); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - if(!p->epinfo) { - USBTRACE("epinfo\r\n"); - return USB_ERROR_EPINFO_IS_NULL; - } - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - - p->lowspeed = lowspeed; - // Get device descriptor GET_DESCRIPTOR - rcode = pUsb->getDevDescr(0, 0, /*8*/sizeof(USB_DEVICE_DESCRIPTOR), (uint8_t*)buf); - - if(!rcode) - len = (buf[0] > constBufSize) ? constBufSize : buf[0]; - - if(rcode) { - // Restore p->epinfo - p->epinfo = oldep_ptr; - - goto FailGetDevDescr; - } - - - // Reset - UHD_BusReset(); - while( Is_uhd_starting_reset() ) {} - - // Restore p->epinfo - p->epinfo = oldep_ptr; - - - // Allocate new address according to device class - bAddress = addrPool.AllocAddress(parent, false, port); - if(!bAddress) - return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - - // Extract Max Packet Size from the device descriptor - epInfo[0].maxPktSize = (uint8_t)((USB_DEVICE_DESCRIPTOR*)buf)->bMaxPacketSize0; - - // Assign new address to the device SET_ADDRESS - - rcode = pUsb->setAddr(0, 0, bAddress); - if(rcode) { - p->lowspeed = false; - addrPool.FreeAddress(bAddress); - bAddress = 0; - USBTRACE2("setAddr:", rcode); - return rcode; - } - //delay(2); //per USB 2.0 sect.9.2.6.3 - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - // Get device descriptor GET_DESCRIPTOR - rcode = pUsb->getDevDescr(bAddress, 0, sizeof(USB_DEVICE_DESCRIPTOR), (uint8_t*)buf); - // Restore p->epinfo - p->epinfo = oldep_ptr; - if (rcode) - { - goto FailGetDevDescr; - } - - TRACE_USBHOST(printf("HIDBoot::Init : device address is now %lu\r\n", bAddress);) - - p->lowspeed = false; - - //get pointer to assigned address record - p = addrPool.GetUsbDevicePtr(bAddress); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - p->lowspeed = lowspeed; - - if(len) - rcode = pUsb->getDevDescr(bAddress, 0, len, (uint8_t*)buf); - - if(rcode) - goto FailGetDevDescr; - - num_of_conf = ((USB_DEVICE_DESCRIPTOR*)buf)->bNumConfigurations; - - USBTRACE2("NC:", num_of_conf); - - // GCC will optimize unused stuff away. - if((BOOT_PROTOCOL & (HID_PROTOCOL_KEYBOARD | HID_PROTOCOL_MOUSE)) == (HID_PROTOCOL_KEYBOARD | HID_PROTOCOL_MOUSE)) { - USBTRACE("HID_PROTOCOL_KEYBOARD AND MOUSE\r\n"); - ConfigDescParser< - USB_CLASS_HID, - HID_BOOT_INTF_SUBCLASS, - HID_PROTOCOL_KEYBOARD | HID_PROTOCOL_MOUSE, - CP_MASK_COMPARE_ALL > confDescrParser(this); - confDescrParser.SetOR(); // Use the OR variant. - for(uint32_t i = 0; i < num_of_conf; i++) { - pUsb->getConfDescr(bAddress, 0, i, &confDescrParser); - if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL))) - break; - } - } else { - // GCC will optimize unused stuff away. - if(BOOT_PROTOCOL & HID_PROTOCOL_KEYBOARD) { - USBTRACE("HID_PROTOCOL_KEYBOARD\r\n"); - for(uint32_t i = 0; i < num_of_conf; i++) { - ConfigDescParser< - USB_CLASS_HID, - HID_BOOT_INTF_SUBCLASS, - HID_PROTOCOL_KEYBOARD, - CP_MASK_COMPARE_ALL> confDescrParserA(this); - - pUsb->getConfDescr(bAddress, 0, i, &confDescrParserA); - if(bNumEP == (uint8_t)(totalEndpoints(BOOT_PROTOCOL))) - break; - } - } - - // GCC will optimize unused stuff away. - if(BOOT_PROTOCOL & HID_PROTOCOL_MOUSE) { - USBTRACE("HID_PROTOCOL_MOUSE\r\n"); - for(uint32_t i = 0; i < num_of_conf; i++) { - ConfigDescParser< - USB_CLASS_HID, - HID_BOOT_INTF_SUBCLASS, - HID_PROTOCOL_MOUSE, - CP_MASK_COMPARE_ALL> confDescrParserB(this); - - pUsb->getConfDescr(bAddress, 0, i, &confDescrParserB); - if(bNumEP == ((uint8_t)(totalEndpoints(BOOT_PROTOCOL)))) - break; - - } - } - } - USBTRACE2("bNumEP:", bNumEP); - - if(bNumEP != (uint8_t)(totalEndpoints(BOOT_PROTOCOL))) { - rcode = USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED; - goto Fail; - } - - // Assign epInfo to epinfo pointer - rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo); - //USBTRACE2("setEpInfoEntry returned ", rcode); - USBTRACE2("Cnf:", bConfNum); - - delay(1000); - - // Set Configuration Value - rcode = pUsb->setConf(bAddress, 0, bConfNum); - - if(rcode) - goto FailSetConfDescr; - - delay(1000); - - USBTRACE2("bIfaceNum:", bIfaceNum); - USBTRACE2("bNumIface:", bNumIface); - - // Yes, mouse wants SetProtocol and SetIdle too! - for(uint32_t i = 0; i < epMUL(BOOT_PROTOCOL); i++) { - USBTRACE2("\r\nInterface:", i); - rcode = SetProtocol(i, HID_BOOT_PROTOCOL); - if(rcode) goto FailSetProtocol; - USBTRACE2("PROTOCOL SET HID_BOOT rcode:", rcode); - rcode = SetIdle(i, 0, 0); - USBTRACE2("SET_IDLE rcode:", rcode); - // if(rcode) goto FailSetIdle; This can fail. - // Get the RPIPE and just throw it away. - SinkParser sink; - rcode = GetReportDescr(i, (USBReadParser *)&sink); - USBTRACE2("RPIPE rcode:", rcode); - } - - // Get RPIPE and throw it away. - - if(BOOT_PROTOCOL & HID_PROTOCOL_KEYBOARD) { - // Wake keyboard interface by twinkling up to 5 LEDs that are in the spec. - // kana, compose, scroll, caps, num - rcode = 0x20; // Reuse rcode. - while(rcode) { - rcode >>= 1; - // Ignore any error returned, we don't care if LED is not supported - SetReport(0, 0, 2, 0, 1, (uint8_t*)&rcode); // Eventually becomes zero (All off) - delay(25); - } - } - USBTRACE("BM configured\r\n"); - - bPollEnable = true; - return 0; - -FailGetDevDescr: -#ifdef DEBUG_USB_HOST - NotifyFailGetDevDescr(); - goto Fail; -#endif - - //FailSetDevTblEntry: - //#ifdef DEBUG_USB_HOST - // NotifyFailSetDevTblEntry(); - // goto Fail; - //#endif - - //FailGetConfDescr: - //#ifdef DEBUG_USB_HOST - // NotifyFailGetConfDescr(); - // goto Fail; - //#endif - -FailSetConfDescr: -#ifdef DEBUG_USB_HOST - NotifyFailSetConfDescr(); - goto Fail; -#endif - -FailSetProtocol: -#ifdef DEBUG_USB_HOST - USBTRACE("SetProto:"); - goto Fail; -#endif - - //FailSetIdle: - //#ifdef DEBUG_USB_HOST - // USBTRACE("SetIdle:"); - //#endif - -Fail: -#ifdef DEBUG_USB_HOST - NotifyFail(rcode); -#endif - Release(); - - return rcode; -} - -template -void HIDBoot::EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *pep) { - // If the first configuration satisfies, the others are not considered. - //if(bNumEP > 1 && conf != bConfNum) - if(bNumEP == totalEndpoints(BOOT_PROTOCOL)) - return; - - bConfNum = conf; - bIfaceNum = iface; - - if((pep->bmAttributes & 0x03) == 3 && (pep->bEndpointAddress & 0x80) == 0x80) { - if(pep->bInterval > bInterval) bInterval = pep->bInterval; - - // Fill in the endpoint info structure - epInfo[bNumEP].epAddr = (pep->bEndpointAddress & 0x0F); - epInfo[bNumEP].maxPktSize = (uint8_t)pep->wMaxPacketSize; - epInfo[bNumEP].epAttribs = 0; - epInfo[bNumEP].bmNakPower = USB_NAK_NOWAIT; - bNumEP++; - - } -} - -template -uint32_t HIDBoot::Release() { - pUsb->GetAddressPool().FreeAddress(bAddress); - - bConfNum = 0; - bIfaceNum = 0; - bNumEP = 1; - bAddress = 0; - qNextPollTime = 0; - bPollEnable = false; - - return 0; -} - -template -uint32_t HIDBoot::Poll() { - uint32_t rcode = 0; - - if(bPollEnable && ((long)(millis() - qNextPollTime) >= 0L)) { - - // To-do: optimize manually, using the for loop only if needed. - for(int i = 0; i < epMUL(BOOT_PROTOCOL); i++) { - const uint16_t const_buff_len = 16; - uint8_t buf[const_buff_len]; - - USBTRACE3("(hidboot.h) i=", i, 0x81); - USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].epAddr=", epInfo[epInterruptInIndex + i].epAddr, 0x81); - USBTRACE3("(hidboot.h) epInfo[epInterruptInIndex + i].maxPktSize=", epInfo[epInterruptInIndex + i].maxPktSize, 0x81); - uint16_t read = (uint16_t)epInfo[epInterruptInIndex + i].maxPktSize; - UHD_Pipe_Alloc(bAddress, epInfo[epInterruptInIndex + i].epAddr, USB_HOST_PTYPE_BULK, USB_EP_DIR_IN, epInfo[epInterruptInIndex + i].maxPktSize, 0, USB_HOST_NB_BK_1); - rcode = pUsb->inTransfer(bAddress, epInfo[epInterruptInIndex + i].epAddr, (uint8_t*)&read, buf); - // SOME buggy dongles report extra keys (like sleep) using a 2 byte packet on the wrong endpoint. - // Since keyboard and mice must report at least 3 bytes, we ignore the extra data. - if(!rcode && read > 2) { - if(pRptParser[i]) - pRptParser[i]->Parse((HID*)this, 0, (uint8_t)read, buf); -#ifdef DEBUG_USB_HOST - // We really don't care about errors and anomalies unless we are debugging. - } else { - if(rcode != USB_ERRORFLOW) { - USBTRACE3("(hidboot.h) Poll:", rcode, 0x81); - } - if(!rcode && read) { - USBTRACE3("(hidboot.h) Strange read count: ", read, 0x80); - USBTRACE3("(hidboot.h) Interface:", i, 0x80); - } - } - - if(!rcode && read && (UsbDEBUGlvl > 0x7f)) { - for(uint8_t i = 0; i < read; i++) { - PrintHex (buf[i], 0x80); - USBTRACE1(" ", 0x80); - } - if(read) - USBTRACE1("\r\n", 0x80); -#endif - } - - } - qNextPollTime = millis() + bInterval; - } - return rcode; -} - -#endif /* HIDBOOT_H_INCLUDED */ diff --git a/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.cpp b/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.cpp deleted file mode 100644 index 17e1e35a9df..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.cpp +++ /dev/null @@ -1,1599 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#include "hidescriptorparser.h" - -const char * const ReportDescParserBase::usagePageTitles0[] PROGMEM = { - pstrUsagePageGenericDesktopControls, - pstrUsagePageSimulationControls, - pstrUsagePageVRControls, - pstrUsagePageSportControls, - pstrUsagePageGameControls, - pstrUsagePageGenericDeviceControls, - pstrUsagePageKeyboardKeypad, - pstrUsagePageLEDs, - pstrUsagePageButton, - pstrUsagePageOrdinal, - pstrUsagePageTelephone, - pstrUsagePageConsumer, - pstrUsagePageDigitizer, - pstrUsagePagePID, - pstrUsagePageUnicode -}; - -const char * const ReportDescParserBase::usagePageTitles1[] PROGMEM = { - pstrUsagePageBarCodeScanner, - pstrUsagePageScale, - pstrUsagePageMSRDevices, - pstrUsagePagePointOfSale, - pstrUsagePageCameraControl, - pstrUsagePageArcade -}; -const char * const ReportDescParserBase::genDesktopTitles0[] PROGMEM = { - pstrUsagePointer, - pstrUsageMouse, - pstrUsageJoystick, - pstrUsageGamePad, - pstrUsageKeyboard, - pstrUsageKeypad, - pstrUsageMultiAxisController, - pstrUsageTabletPCSystemControls - -}; -const char * const ReportDescParserBase::genDesktopTitles1[] PROGMEM = { - pstrUsageX, - pstrUsageY, - pstrUsageZ, - pstrUsageRx, - pstrUsageRy, - pstrUsageRz, - pstrUsageSlider, - pstrUsageDial, - pstrUsageWheel, - pstrUsageHatSwitch, - pstrUsageCountedBuffer, - pstrUsageByteCount, - pstrUsageMotionWakeup, - pstrUsageStart, - pstrUsageSelect, - pstrUsagePageReserved, - pstrUsageVx, - pstrUsageVy, - pstrUsageVz, - pstrUsageVbrx, - pstrUsageVbry, - pstrUsageVbrz, - pstrUsageVno, - pstrUsageFeatureNotification, - pstrUsageResolutionMultiplier -}; -const char * const ReportDescParserBase::genDesktopTitles2[] PROGMEM = { - pstrUsageSystemControl, - pstrUsageSystemPowerDown, - pstrUsageSystemSleep, - pstrUsageSystemWakeup, - pstrUsageSystemContextMenu, - pstrUsageSystemMainMenu, - pstrUsageSystemAppMenu, - pstrUsageSystemMenuHelp, - pstrUsageSystemMenuExit, - pstrUsageSystemMenuSelect, - pstrUsageSystemMenuRight, - pstrUsageSystemMenuLeft, - pstrUsageSystemMenuUp, - pstrUsageSystemMenuDown, - pstrUsageSystemColdRestart, - pstrUsageSystemWarmRestart, - pstrUsageDPadUp, - pstrUsageDPadDown, - pstrUsageDPadRight, - pstrUsageDPadLeft -}; -const char * const ReportDescParserBase::genDesktopTitles3[] PROGMEM = { - pstrUsageSystemDock, - pstrUsageSystemUndock, - pstrUsageSystemSetup, - pstrUsageSystemBreak, - pstrUsageSystemDebuggerBreak, - pstrUsageApplicationBreak, - pstrUsageApplicationDebuggerBreak, - pstrUsageSystemSpeakerMute, - pstrUsageSystemHibernate -}; -const char * const ReportDescParserBase::genDesktopTitles4[] PROGMEM = { - pstrUsageSystemDisplayInvert, - pstrUsageSystemDisplayInternal, - pstrUsageSystemDisplayExternal, - pstrUsageSystemDisplayBoth, - pstrUsageSystemDisplayDual, - pstrUsageSystemDisplayToggleIntExt, - pstrUsageSystemDisplaySwapPriSec, - pstrUsageSystemDisplayLCDAutoscale -}; -const char * const ReportDescParserBase::simuTitles0[] PROGMEM = { - pstrUsageFlightSimulationDevice, - pstrUsageAutomobileSimulationDevice, - pstrUsageTankSimulationDevice, - pstrUsageSpaceshipSimulationDevice, - pstrUsageSubmarineSimulationDevice, - pstrUsageSailingSimulationDevice, - pstrUsageMotocicleSimulationDevice, - pstrUsageSportsSimulationDevice, - pstrUsageAirplaneSimulationDevice, - pstrUsageHelicopterSimulationDevice, - pstrUsageMagicCarpetSimulationDevice, - pstrUsageBicycleSimulationDevice -}; -const char * const ReportDescParserBase::simuTitles1[] PROGMEM = { - pstrUsageFlightControlStick, - pstrUsageFlightStick, - pstrUsageCyclicControl, - pstrUsageCyclicTrim, - pstrUsageFlightYoke, - pstrUsageTrackControl -}; -const char * const ReportDescParserBase::simuTitles2[] PROGMEM = { - pstrUsageAileron, - pstrUsageAileronTrim, - pstrUsageAntiTorqueControl, - pstrUsageAutopilotEnable, - pstrUsageChaffRelease, - pstrUsageCollectiveControl, - pstrUsageDiveBrake, - pstrUsageElectronicCountermeasures, - pstrUsageElevator, - pstrUsageElevatorTrim, - pstrUsageRudder, - pstrUsageThrottle, - pstrUsageFlightCommunications, - pstrUsageFlareRelease, - pstrUsageLandingGear, - pstrUsageToeBrake, - pstrUsageTrigger, - pstrUsageWeaponsArm, - pstrUsageWeaponsSelect, - pstrUsageWingFlaps, - pstrUsageAccelerator, - pstrUsageBrake, - pstrUsageClutch, - pstrUsageShifter, - pstrUsageSteering, - pstrUsageTurretDirection, - pstrUsageBarrelElevation, - pstrUsageDivePlane, - pstrUsageBallast, - pstrUsageBicycleCrank, - pstrUsageHandleBars, - pstrUsageFrontBrake, - pstrUsageRearBrake -}; -const char * const ReportDescParserBase::vrTitles0[] PROGMEM = { - pstrUsageBelt, - pstrUsageBodySuit, - pstrUsageFlexor, - pstrUsageGlove, - pstrUsageHeadTracker, - pstrUsageHeadMountedDisplay, - pstrUsageHandTracker, - pstrUsageOculometer, - pstrUsageVest, - pstrUsageAnimatronicDevice -}; -const char * const ReportDescParserBase::vrTitles1[] PROGMEM = { - pstrUsageStereoEnable, - pstrUsageDisplayEnable -}; -const char * const ReportDescParserBase::sportsCtrlTitles0[] PROGMEM = { - pstrUsageBaseballBat, - pstrUsageGolfClub, - pstrUsageRowingMachine, - pstrUsageTreadmill -}; -const char * const ReportDescParserBase::sportsCtrlTitles1[] PROGMEM = { - pstrUsageOar, - pstrUsageSlope, - pstrUsageRate, - pstrUsageStickSpeed, - pstrUsageStickFaceAngle, - pstrUsageStickHeelToe, - pstrUsageStickFollowThough, - pstrUsageStickTempo, - pstrUsageStickType, - pstrUsageStickHeight -}; -const char * const ReportDescParserBase::sportsCtrlTitles2[] PROGMEM = { - pstrUsagePutter, - pstrUsage1Iron, - pstrUsage2Iron, - pstrUsage3Iron, - pstrUsage4Iron, - pstrUsage5Iron, - pstrUsage6Iron, - pstrUsage7Iron, - pstrUsage8Iron, - pstrUsage9Iron, - pstrUsage10Iron, - pstrUsage11Iron, - pstrUsageSandWedge, - pstrUsageLoftWedge, - pstrUsagePowerWedge, - pstrUsage1Wood, - pstrUsage3Wood, - pstrUsage5Wood, - pstrUsage7Wood, - pstrUsage9Wood -}; -const char * const ReportDescParserBase::gameTitles0[] PROGMEM = { - pstrUsage3DGameController, - pstrUsagePinballDevice, - pstrUsageGunDevice -}; -const char * const ReportDescParserBase::gameTitles1[] PROGMEM = { - pstrUsagePointOfView, - pstrUsageTurnRightLeft, - pstrUsagePitchForwardBackward, - pstrUsageRollRightLeft, - pstrUsageMoveRightLeft, - pstrUsageMoveForwardBackward, - pstrUsageMoveUpDown, - pstrUsageLeanRightLeft, - pstrUsageLeanForwardBackward, - pstrUsageHeightOfPOV, - pstrUsageFlipper, - pstrUsageSecondaryFlipper, - pstrUsageBump, - pstrUsageNewGame, - pstrUsageShootBall, - pstrUsagePlayer, - pstrUsageGunBolt, - pstrUsageGunClip, - pstrUsageGunSelector, - pstrUsageGunSingleShot, - pstrUsageGunBurst, - pstrUsageGunAutomatic, - pstrUsageGunSafety, - pstrUsageGamepadFireJump, - pstrUsageGamepadTrigger -}; -const char * const ReportDescParserBase::genDevCtrlTitles[] PROGMEM = { - pstrUsageBatteryStrength, - pstrUsageWirelessChannel, - pstrUsageWirelessID, - pstrUsageDiscoverWirelessControl, - pstrUsageSecurityCodeCharEntered, - pstrUsageSecurityCodeCharErased, - pstrUsageSecurityCodeCleared -}; -const char * const ReportDescParserBase::ledTitles[] PROGMEM = { - pstrUsageNumLock, - pstrUsageCapsLock, - pstrUsageScrollLock, - pstrUsageCompose, - pstrUsageKana, - pstrUsagePower, - pstrUsageShift, - pstrUsageDoNotDisturb, - pstrUsageMute, - pstrUsageToneEnable, - pstrUsageHighCutFilter, - pstrUsageLowCutFilter, - pstrUsageEqualizerEnable, - pstrUsageSoundFieldOn, - pstrUsageSurroundOn, - pstrUsageRepeat, - pstrUsageStereo, - pstrUsageSamplingRateDetect, - pstrUsageSpinning, - pstrUsageCAV, - pstrUsageCLV, - pstrUsageRecordingFormatDetect, - pstrUsageOffHook, - pstrUsageRing, - pstrUsageMessageWaiting, - pstrUsageDataMode, - pstrUsageBatteryOperation, - pstrUsageBatteryOK, - pstrUsageBatteryLow, - pstrUsageSpeaker, - pstrUsageHeadSet, - pstrUsageHold, - pstrUsageMicrophone, - pstrUsageCoverage, - pstrUsageNightMode, - pstrUsageSendCalls, - pstrUsageCallPickup, - pstrUsageConference, - pstrUsageStandBy, - pstrUsageCameraOn, - pstrUsageCameraOff, - pstrUsageOnLine, - pstrUsageOffLine, - pstrUsageBusy, - pstrUsageReady, - pstrUsagePaperOut, - pstrUsagePaperJam, - pstrUsageRemote, - pstrUsageForward, - pstrUsageReverse, - pstrUsageStop, - pstrUsageRewind, - pstrUsageFastForward, - pstrUsagePlay, - pstrUsagePause, - pstrUsageRecord, - pstrUsageError, - pstrUsageSelectedIndicator, - pstrUsageInUseIndicator, - pstrUsageMultiModeIndicator, - pstrUsageIndicatorOn, - pstrUsageIndicatorFlash, - pstrUsageIndicatorSlowBlink, - pstrUsageIndicatorFastBlink, - pstrUsageIndicatorOff, - pstrUsageFlashOnTime, - pstrUsageSlowBlinkOnTime, - pstrUsageSlowBlinkOffTime, - pstrUsageFastBlinkOnTime, - pstrUsageFastBlinkOffTime, - pstrUsageIndicatorColor, - pstrUsageIndicatorRed, - pstrUsageIndicatorGreen, - pstrUsageIndicatorAmber, - pstrUsageGenericIndicator, - pstrUsageSystemSuspend, - pstrUsageExternalPowerConnected -}; -const char * const ReportDescParserBase::telTitles0 [] PROGMEM = { - pstrUsagePhone, - pstrUsageAnsweringMachine, - pstrUsageMessageControls, - pstrUsageHandset, - pstrUsageHeadset, - pstrUsageTelephonyKeyPad, - pstrUsageProgrammableButton -}; -const char * const ReportDescParserBase::telTitles1 [] PROGMEM = { - pstrUsageHookSwitch, - pstrUsageFlash, - pstrUsageFeature, - pstrUsageHold, - pstrUsageRedial, - pstrUsageTransfer, - pstrUsageDrop, - pstrUsagePark, - pstrUsageForwardCalls, - pstrUsageAlternateFunction, - pstrUsageLine, - pstrUsageSpeakerPhone, - pstrUsageConference, - pstrUsageRingEnable, - pstrUsageRingSelect, - pstrUsagePhoneMute, - pstrUsageCallerID, - pstrUsageSend -}; -const char * const ReportDescParserBase::telTitles2 [] PROGMEM = { - pstrUsageSpeedDial, - pstrUsageStoreNumber, - pstrUsageRecallNumber, - pstrUsagePhoneDirectory -}; -const char * const ReportDescParserBase::telTitles3 [] PROGMEM = { - pstrUsageVoiceMail, - pstrUsageScreenCalls, - pstrUsageDoNotDisturb, - pstrUsageMessage, - pstrUsageAnswerOnOff -}; -const char * const ReportDescParserBase::telTitles4 [] PROGMEM = { - pstrUsageInsideDialTone, - pstrUsageOutsideDialTone, - pstrUsageInsideRingTone, - pstrUsageOutsideRingTone, - pstrUsagePriorityRingTone, - pstrUsageInsideRingback, - pstrUsagePriorityRingback, - pstrUsageLineBusyTone, - pstrUsageReorderTone, - pstrUsageCallWaitingTone, - pstrUsageConfirmationTone1, - pstrUsageConfirmationTone2, - pstrUsageTonesOff, - pstrUsageOutsideRingback, - pstrUsageRinger -}; -const char * const ReportDescParserBase::telTitles5 [] PROGMEM = { - pstrUsagePhoneKey0, - pstrUsagePhoneKey1, - pstrUsagePhoneKey2, - pstrUsagePhoneKey3, - pstrUsagePhoneKey4, - pstrUsagePhoneKey5, - pstrUsagePhoneKey6, - pstrUsagePhoneKey7, - pstrUsagePhoneKey8, - pstrUsagePhoneKey9, - pstrUsagePhoneKeyStar, - pstrUsagePhoneKeyPound, - pstrUsagePhoneKeyA, - pstrUsagePhoneKeyB, - pstrUsagePhoneKeyC, - pstrUsagePhoneKeyD -}; -const char * const ReportDescParserBase::consTitles0[] PROGMEM = { - pstrUsageConsumerControl, - pstrUsageNumericKeyPad, - pstrUsageProgrammableButton, - pstrUsageMicrophone, - pstrUsageHeadphone, - pstrUsageGraphicEqualizer -}; -const char * const ReportDescParserBase::consTitles1[] PROGMEM = { - pstrUsagePlus10, - pstrUsagePlus100, - pstrUsageAMPM -}; -const char * const ReportDescParserBase::consTitles2[] PROGMEM = { - pstrUsagePower, - pstrUsageReset, - pstrUsageSleep, - pstrUsageSleepAfter, - pstrUsageSleepMode, - pstrUsageIllumination, - pstrUsageFunctionButtons - -}; -const char * const ReportDescParserBase::consTitles3[] PROGMEM = { - pstrUsageMenu, - pstrUsageMenuPick, - pstrUsageMenuUp, - pstrUsageMenuDown, - pstrUsageMenuLeft, - pstrUsageMenuRight, - pstrUsageMenuEscape, - pstrUsageMenuValueIncrease, - pstrUsageMenuValueDecrease -}; -const char * const ReportDescParserBase::consTitles4[] PROGMEM = { - pstrUsageDataOnScreen, - pstrUsageClosedCaption, - pstrUsageClosedCaptionSelect, - pstrUsageVCRTV, - pstrUsageBroadcastMode, - pstrUsageSnapshot, - pstrUsageStill -}; -const char * const ReportDescParserBase::consTitles5[] PROGMEM = { - pstrUsageSelection, - pstrUsageAssignSelection, - pstrUsageModeStep, - pstrUsageRecallLast, - pstrUsageEnterChannel, - pstrUsageOrderMovie, - pstrUsageChannel, - pstrUsageMediaSelection, - pstrUsageMediaSelectComputer, - pstrUsageMediaSelectTV, - pstrUsageMediaSelectWWW, - pstrUsageMediaSelectDVD, - pstrUsageMediaSelectTelephone, - pstrUsageMediaSelectProgramGuide, - pstrUsageMediaSelectVideoPhone, - pstrUsageMediaSelectGames, - pstrUsageMediaSelectMessages, - pstrUsageMediaSelectCD, - pstrUsageMediaSelectVCR, - pstrUsageMediaSelectTuner, - pstrUsageQuit, - pstrUsageHelp, - pstrUsageMediaSelectTape, - pstrUsageMediaSelectCable, - pstrUsageMediaSelectSatellite, - pstrUsageMediaSelectSecurity, - pstrUsageMediaSelectHome, - pstrUsageMediaSelectCall, - pstrUsageChannelIncrement, - pstrUsageChannelDecrement, - pstrUsageMediaSelectSAP, - pstrUsagePageReserved, - pstrUsageVCRPlus, - pstrUsageOnce, - pstrUsageDaily, - pstrUsageWeekly, - pstrUsageMonthly -}; -const char * const ReportDescParserBase::consTitles6[] PROGMEM = { - pstrUsagePlay, - pstrUsagePause, - pstrUsageRecord, - pstrUsageFastForward, - pstrUsageRewind, - pstrUsageScanNextTrack, - pstrUsageScanPreviousTrack, - pstrUsageStop, - pstrUsageEject, - pstrUsageRandomPlay, - pstrUsageSelectDisk, - pstrUsageEnterDisk, - pstrUsageRepeat, - pstrUsageTracking, - pstrUsageTrackNormal, - pstrUsageSlowTracking, - pstrUsageFrameForward, - pstrUsageFrameBackwards, - pstrUsageMark, - pstrUsageClearMark, - pstrUsageRepeatFromMark, - pstrUsageReturnToMark, - pstrUsageSearchMarkForward, - pstrUsageSearchMarkBackwards, - pstrUsageCounterReset, - pstrUsageShowCounter, - pstrUsageTrackingIncrement, - pstrUsageTrackingDecrement, - pstrUsageStopEject, - pstrUsagePlayPause, - pstrUsagePlaySkip -}; -const char * const ReportDescParserBase::consTitles7[] PROGMEM = { - pstrUsageVolume, - pstrUsageBalance, - pstrUsageMute, - pstrUsageBass, - pstrUsageTreble, - pstrUsageBassBoost, - pstrUsageSurroundMode, - pstrUsageLoudness, - pstrUsageMPX, - pstrUsageVolumeIncrement, - pstrUsageVolumeDecrement -}; -const char * const ReportDescParserBase::consTitles8[] PROGMEM = { - pstrUsageSpeedSelect, - pstrUsagePlaybackSpeed, - pstrUsageStandardPlay, - pstrUsageLongPlay, - pstrUsageExtendedPlay, - pstrUsageSlow -}; -const char * const ReportDescParserBase::consTitles9[] PROGMEM = { - pstrUsageFanEnable, - pstrUsageFanSpeed, - pstrUsageLightEnable, - pstrUsageLightIlluminationLevel, - pstrUsageClimateControlEnable, - pstrUsageRoomTemperature, - pstrUsageSecurityEnable, - pstrUsageFireAlarm, - pstrUsagePoliceAlarm, - pstrUsageProximity, - pstrUsageMotion, - pstrUsageDuresAlarm, - pstrUsageHoldupAlarm, - pstrUsageMedicalAlarm -}; -const char * const ReportDescParserBase::consTitlesA[] PROGMEM = { - pstrUsageBalanceRight, - pstrUsageBalanceLeft, - pstrUsageBassIncrement, - pstrUsageBassDecrement, - pstrUsageTrebleIncrement, - pstrUsageTrebleDecrement -}; -const char * const ReportDescParserBase::consTitlesB[] PROGMEM = { - pstrUsageSpeakerSystem, - pstrUsageChannelLeft, - pstrUsageChannelRight, - pstrUsageChannelCenter, - pstrUsageChannelFront, - pstrUsageChannelCenterFront, - pstrUsageChannelSide, - pstrUsageChannelSurround, - pstrUsageChannelLowFreqEnhancement, - pstrUsageChannelTop, - pstrUsageChannelUnknown -}; -const char * const ReportDescParserBase::consTitlesC[] PROGMEM = { - pstrUsageSubChannel, - pstrUsageSubChannelIncrement, - pstrUsageSubChannelDecrement, - pstrUsageAlternateAudioIncrement, - pstrUsageAlternateAudioDecrement -}; -const char * const ReportDescParserBase::consTitlesD[] PROGMEM = { - pstrUsageApplicationLaunchButtons, - pstrUsageALLaunchButtonConfigTool, - pstrUsageALProgrammableButton, - pstrUsageALConsumerControlConfig, - pstrUsageALWordProcessor, - pstrUsageALTextEditor, - pstrUsageALSpreadsheet, - pstrUsageALGraphicsEditor, - pstrUsageALPresentationApp, - pstrUsageALDatabaseApp, - pstrUsageALEmailReader, - pstrUsageALNewsreader, - pstrUsageALVoicemail, - pstrUsageALContactsAddressBook, - pstrUsageALCalendarSchedule, - pstrUsageALTaskProjectManager, - pstrUsageALLogJournalTimecard, - pstrUsageALCheckbookFinance, - pstrUsageALCalculator, - pstrUsageALAVCapturePlayback, - pstrUsageALLocalMachineBrowser, - pstrUsageALLANWANBrow, - pstrUsageALInternetBrowser, - pstrUsageALRemoteNetISPConnect, - pstrUsageALNetworkConference, - pstrUsageALNetworkChat, - pstrUsageALTelephonyDialer, - pstrUsageALLogon, - pstrUsageALLogoff, - pstrUsageALLogonLogoff, - pstrUsageALTermLockScrSav, - pstrUsageALControlPannel, - pstrUsageALCommandLineProcessorRun, - pstrUsageALProcessTaskManager, - pstrUsageALSelectTaskApplication, - pstrUsageALNextTaskApplication, - pstrUsageALPreviousTaskApplication, - pstrUsageALPreemptiveHaltTaskApp, - pstrUsageALIntegratedHelpCenter, - pstrUsageALDocuments, - pstrUsageALThesaurus, - pstrUsageALDictionary, - pstrUsageALDesktop, - pstrUsageALSpellCheck, - pstrUsageALGrammarCheck, - pstrUsageALWirelessStatus, - pstrUsageALKeyboardLayout, - pstrUsageALVirusProtection, - pstrUsageALEncryption, - pstrUsageALScreenSaver, - pstrUsageALAlarms, - pstrUsageALClock, - pstrUsageALFileBrowser, - pstrUsageALPowerStatus, - pstrUsageALImageBrowser, - pstrUsageALAudioBrowser, - pstrUsageALMovieBrowser, - pstrUsageALDigitalRightsManager, - pstrUsageALDigitalWallet, - pstrUsagePageReserved, - pstrUsageALInstantMessaging, - pstrUsageALOEMFeaturesBrowser, - pstrUsageALOEMHelp, - pstrUsageALOnlineCommunity, - pstrUsageALEntertainmentContentBrow, - pstrUsageALOnlineShoppingBrowser, - pstrUsageALSmartCardInfoHelp, - pstrUsageALMarketMonitorFinBrowser, - pstrUsageALCustomCorpNewsBrowser, - pstrUsageALOnlineActivityBrowser, - pstrUsageALResearchSearchBrowser, - pstrUsageALAudioPlayer -}; -const char * const ReportDescParserBase::consTitlesE[] PROGMEM = { - pstrUsageGenericGUIAppControls, - pstrUsageACNew, - pstrUsageACOpen, - pstrUsageACClose, - pstrUsageACExit, - pstrUsageACMaximize, - pstrUsageACMinimize, - pstrUsageACSave, - pstrUsageACPrint, - pstrUsageACProperties, - pstrUsageACUndo, - pstrUsageACCopy, - pstrUsageACCut, - pstrUsageACPaste, - pstrUsageACSelectAll, - pstrUsageACFind, - pstrUsageACFindAndReplace, - pstrUsageACSearch, - pstrUsageACGoto, - pstrUsageACHome, - pstrUsageACBack, - pstrUsageACForward, - pstrUsageACStop, - pstrUsageACRefresh, - pstrUsageACPreviousLink, - pstrUsageACNextLink, - pstrUsageACBookmarks, - pstrUsageACHistory, - pstrUsageACSubscriptions, - pstrUsageACZoomIn, - pstrUsageACZoomOut, - pstrUsageACZoom, - pstrUsageACFullScreenView, - pstrUsageACNormalView, - pstrUsageACViewToggle, - pstrUsageACScrollUp, - pstrUsageACScrollDown, - pstrUsageACScroll, - pstrUsageACPanLeft, - pstrUsageACPanRight, - pstrUsageACPan, - pstrUsageACNewWindow, - pstrUsageACTileHoriz, - pstrUsageACTileVert, - pstrUsageACFormat, - pstrUsageACEdit, - pstrUsageACBold, - pstrUsageACItalics, - pstrUsageACUnderline, - pstrUsageACStrikethrough, - pstrUsageACSubscript, - pstrUsageACSuperscript, - pstrUsageACAllCaps, - pstrUsageACRotate, - pstrUsageACResize, - pstrUsageACFlipHorizontal, - pstrUsageACFlipVertical, - pstrUsageACMirrorHorizontal, - pstrUsageACMirrorVertical, - pstrUsageACFontSelect, - pstrUsageACFontColor, - pstrUsageACFontSize, - pstrUsageACJustifyLeft, - pstrUsageACJustifyCenterH, - pstrUsageACJustifyRight, - pstrUsageACJustifyBlockH, - pstrUsageACJustifyTop, - pstrUsageACJustifyCenterV, - pstrUsageACJustifyBottom, - pstrUsageACJustifyBlockV, - pstrUsageACIndentDecrease, - pstrUsageACIndentIncrease, - pstrUsageACNumberedList, - pstrUsageACRestartNumbering, - pstrUsageACBulletedList, - pstrUsageACPromote, - pstrUsageACDemote, - pstrUsageACYes, - pstrUsageACNo, - pstrUsageACCancel, - pstrUsageACCatalog, - pstrUsageACBuyChkout, - pstrUsageACAddToCart, - pstrUsageACExpand, - pstrUsageACExpandAll, - pstrUsageACCollapse, - pstrUsageACCollapseAll, - pstrUsageACPrintPreview, - pstrUsageACPasteSpecial, - pstrUsageACInsertMode, - pstrUsageACDelete, - pstrUsageACLock, - pstrUsageACUnlock, - pstrUsageACProtect, - pstrUsageACUnprotect, - pstrUsageACAttachComment, - pstrUsageACDeleteComment, - pstrUsageACViewComment, - pstrUsageACSelectWord, - pstrUsageACSelectSentence, - pstrUsageACSelectParagraph, - pstrUsageACSelectColumn, - pstrUsageACSelectRow, - pstrUsageACSelectTable, - pstrUsageACSelectObject, - pstrUsageACRedoRepeat, - pstrUsageACSort, - pstrUsageACSortAscending, - pstrUsageACSortDescending, - pstrUsageACFilter, - pstrUsageACSetClock, - pstrUsageACViewClock, - pstrUsageACSelectTimeZone, - pstrUsageACEditTimeZone, - pstrUsageACSetAlarm, - pstrUsageACClearAlarm, - pstrUsageACSnoozeAlarm, - pstrUsageACResetAlarm, - pstrUsageACSyncronize, - pstrUsageACSendReceive, - pstrUsageACSendTo, - pstrUsageACReply, - pstrUsageACReplyAll, - pstrUsageACForwardMessage, - pstrUsageACSend, - pstrUsageACAttachFile, - pstrUsageACUpload, - pstrUsageACDownload, - pstrUsageACSetBorders, - pstrUsageACInsertRow, - pstrUsageACInsertColumn, - pstrUsageACInsertFile, - pstrUsageACInsertPicture, - pstrUsageACInsertObject, - pstrUsageACInsertSymbol, - pstrUsageACSaveAndClose, - pstrUsageACRename, - pstrUsageACMerge, - pstrUsageACSplit, - pstrUsageACDistributeHorizontaly, - pstrUsageACDistributeVerticaly -}; -const char * const ReportDescParserBase::digitTitles0[] PROGMEM = { - pstrUsageDigitizer, - pstrUsagePen, - pstrUsageLightPen, - pstrUsageTouchScreen, - pstrUsageTouchPad, - pstrUsageWhiteBoard, - pstrUsageCoordinateMeasuringMachine, - pstrUsage3DDigitizer, - pstrUsageStereoPlotter, - pstrUsageArticulatedArm, - pstrUsageArmature, - pstrUsageMultiplePointDigitizer, - pstrUsageFreeSpaceWand -}; -const char * const ReportDescParserBase::digitTitles1[] PROGMEM = { - pstrUsageStylus, - pstrUsagePuck, - pstrUsageFinger - -}; -const char * const ReportDescParserBase::digitTitles2[] PROGMEM = { - pstrUsageTipPressure, - pstrUsageBarrelPressure, - pstrUsageInRange, - pstrUsageTouch, - pstrUsageUntouch, - pstrUsageTap, - pstrUsageQuality, - pstrUsageDataValid, - pstrUsageTransducerIndex, - pstrUsageTabletFunctionKeys, - pstrUsageProgramChangeKeys, - pstrUsageBatteryStrength, - pstrUsageInvert, - pstrUsageXTilt, - pstrUsageYTilt, - pstrUsageAzimuth, - pstrUsageAltitude, - pstrUsageTwist, - pstrUsageTipSwitch, - pstrUsageSecondaryTipSwitch, - pstrUsageBarrelSwitch, - pstrUsageEraser, - pstrUsageTabletPick -}; -const char * const ReportDescParserBase::aplphanumTitles0[] PROGMEM = { - pstrUsageAlphanumericDisplay, - pstrUsageBitmappedDisplay -}; -const char * const ReportDescParserBase::aplphanumTitles1[] PROGMEM = { - pstrUsageDisplayAttributesReport, - pstrUsageASCIICharacterSet, - pstrUsageDataReadBack, - pstrUsageFontReadBack, - pstrUsageDisplayControlReport, - pstrUsageClearDisplay, - pstrUsageDisplayEnable, - pstrUsageScreenSaverDelay, - pstrUsageScreenSaverEnable, - pstrUsageVerticalScroll, - pstrUsageHorizontalScroll, - pstrUsageCharacterReport, - pstrUsageDisplayData, - pstrUsageDisplayStatus, - pstrUsageStatusNotReady, - pstrUsageStatusReady, - pstrUsageErrorNotALoadableCharacter, - pstrUsageErrorFotDataCanNotBeRead, - pstrUsageCursorPositionReport, - pstrUsageRow, - pstrUsageColumn, - pstrUsageRows, - pstrUsageColumns, - pstrUsageCursorPixelPosition, - pstrUsageCursorMode, - pstrUsageCursorEnable, - pstrUsageCursorBlink, - pstrUsageFontReport, - pstrUsageFontData, - pstrUsageCharacterWidth, - pstrUsageCharacterHeight, - pstrUsageCharacterSpacingHorizontal, - pstrUsageCharacterSpacingVertical, - pstrUsageUnicodeCharset, - pstrUsageFont7Segment, - pstrUsage7SegmentDirectMap, - pstrUsageFont14Segment, - pstrUsage14SegmentDirectMap, - pstrUsageDisplayBrightness, - pstrUsageDisplayContrast, - pstrUsageCharacterAttribute, - pstrUsageAttributeReadback, - pstrUsageAttributeData, - pstrUsageCharAttributeEnhance, - pstrUsageCharAttributeUnderline, - pstrUsageCharAttributeBlink -}; -const char * const ReportDescParserBase::aplphanumTitles2[] PROGMEM = { - pstrUsageBitmapSizeX, - pstrUsageBitmapSizeY, - pstrUsagePageReserved, - pstrUsageBitDepthFormat, - pstrUsageDisplayOrientation, - pstrUsagePaletteReport, - pstrUsagePaletteDataSize, - pstrUsagePaletteDataOffset, - pstrUsagePaletteData, - pstrUsageBlitReport, - pstrUsageBlitRectangleX1, - pstrUsageBlitRectangleY1, - pstrUsageBlitRectangleX2, - pstrUsageBlitRectangleY2, - pstrUsageBlitData, - pstrUsageSoftButton, - pstrUsageSoftButtonID, - pstrUsageSoftButtonSide, - pstrUsageSoftButtonOffset1, - pstrUsageSoftButtonOffset2, - pstrUsageSoftButtonReport -}; -const char * const ReportDescParserBase::medInstrTitles0[] PROGMEM = { - pstrUsageVCRAcquisition, - pstrUsageFreezeThaw, - pstrUsageClipStore, - pstrUsageUpdate, - pstrUsageNext, - pstrUsageSave, - pstrUsagePrint, - pstrUsageMicrophoneEnable -}; -const char * const ReportDescParserBase::medInstrTitles1[] PROGMEM = { - pstrUsageCine, - pstrUsageTransmitPower, - pstrUsageVolume, - pstrUsageFocus, - pstrUsageDepth -}; -const char * const ReportDescParserBase::medInstrTitles2[] PROGMEM = { - pstrUsageSoftStepPrimary, - pstrUsageSoftStepSecondary -}; -const char * const ReportDescParserBase::medInstrTitles3[] PROGMEM = { - pstrUsageZoomSelect, - pstrUsageZoomAdjust, - pstrUsageSpectralDopplerModeSelect, - pstrUsageSpectralDopplerModeAdjust, - pstrUsageColorDopplerModeSelect, - pstrUsageColorDopplerModeAdjust, - pstrUsageMotionModeSelect, - pstrUsageMotionModeAdjust, - pstrUsage2DModeSelect, - pstrUsage2DModeAdjust -}; -const char * const ReportDescParserBase::medInstrTitles4[] PROGMEM = { - pstrUsageSoftControlSelect, - pstrUsageSoftControlAdjust -}; - -void ReportDescParserBase::Parse(const uint32_t len, const uint8_t *pbuf, const uint32_t &offset) { - uint32_t cntdn = (uint32_t)len; - uint8_t *p = (uint8_t*)pbuf; - - - totalSize = 0; - - while(cntdn) { - //USB_HOST_SERIAL.println(""); - //PrintHex(offset + len - cntdn); - //USB_HOST_SERIAL.print(":"); - - ParseItem(&p, &cntdn); - - //if (ParseItem(&p, &cntdn)) - // return; - } - //USBTRACE2("Total:", totalSize); -} - -void ReportDescParserBase::PrintValue(uint8_t *p, uint8_t len) { - E_Notify(PSTR("("), 0x80); - for(; len; p++, len--) - PrintHex (*p, 0x80); - E_Notify(PSTR(")"), 0x80); -} - -void ReportDescParserBase::PrintByteValue(uint8_t data) { - E_Notify(PSTR("("), 0x80); - PrintHex (data, 0x80); - E_Notify(PSTR(")"), 0x80); -} - -void ReportDescParserBase::PrintItemTitle(uint8_t prefix) { - switch(prefix & (TYPE_MASK | TAG_MASK)) { - case (TYPE_GLOBAL | TAG_GLOBAL_PUSH): - E_Notify(PSTR("\r\nPush"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_POP): - E_Notify(PSTR("\r\nPop"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_USAGEPAGE): - E_Notify(PSTR("\r\nUsage Page"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_LOGICALMIN): - E_Notify(PSTR("\r\nLogical Min"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_LOGICALMAX): - E_Notify(PSTR("\r\nLogical Max"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_PHYSMIN): - E_Notify(PSTR("\r\nPhysical Min"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_PHYSMAX): - E_Notify(PSTR("\r\nPhysical Max"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_UNITEXP): - E_Notify(PSTR("\r\nUnit Exp"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_UNIT): - E_Notify(PSTR("\r\nUnit"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTSIZE): - E_Notify(PSTR("\r\nReport Size"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTCOUNT): - E_Notify(PSTR("\r\nReport Count"), 0x80); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTID): - E_Notify(PSTR("\r\nReport Id"), 0x80); - break; - case (TYPE_LOCAL | TAG_LOCAL_USAGE): - E_Notify(PSTR("\r\nUsage"), 0x80); - break; - case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN): - E_Notify(PSTR("\r\nUsage Min"), 0x80); - break; - case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX): - E_Notify(PSTR("\r\nUsage Max"), 0x80); - break; - case (TYPE_MAIN | TAG_MAIN_COLLECTION): - E_Notify(PSTR("\r\nCollection"), 0x80); - break; - case (TYPE_MAIN | TAG_MAIN_ENDCOLLECTION): - E_Notify(PSTR("\r\nEnd Collection"), 0x80); - break; - case (TYPE_MAIN | TAG_MAIN_INPUT): - E_Notify(PSTR("\r\nInput"), 0x80); - break; - case (TYPE_MAIN | TAG_MAIN_OUTPUT): - E_Notify(PSTR("\r\nOutput"), 0x80); - break; - case (TYPE_MAIN | TAG_MAIN_FEATURE): - E_Notify(PSTR("\r\nFeature"), 0x80); - break; - } // switch (**pp & (TYPE_MASK | TAG_MASK)) -} - -uint8_t ReportDescParserBase::ParseItem(uint8_t **pp, uint32_t *pcntdn) { - //uint8_t ret = enErrorSuccess; - //reinterpret_cast<>(varBuffer); - switch(itemParseState) { - case 0: - if(**pp == HID_LONG_ITEM_PREFIX) - USBTRACE("\r\nLONG\r\n"); - else { - uint8_t size = ((**pp) & DATA_SIZE_MASK); - - itemPrefix = (**pp); - itemSize = 1 + ((size == DATA_SIZE_4) ? 4 : size); - - PrintItemTitle(itemPrefix); - } - (*pp)++; - (*pcntdn)--; - itemSize--; - itemParseState = 1; - - if(!itemSize) - break; - - if(!pcntdn) - return enErrorIncomplete; - case 1: - //USBTRACE2("\r\niSz:",itemSize); - - theBuffer.valueSize = itemSize; - valParser.Initialize(&theBuffer); - itemParseState = 2; - case 2: - if(!valParser.Parse(pp, pcntdn)) - return enErrorIncomplete; - itemParseState = 3; - case 3: - { - uint8_t data = *((uint8_t*)varBuffer); - - switch(itemPrefix & (TYPE_MASK | TAG_MASK)) { - case (TYPE_LOCAL | TAG_LOCAL_USAGE): - if(pfUsage) { - if(theBuffer.valueSize > 1) { - uint16_t* ui16 = reinterpret_cast(varBuffer); - pfUsage(*ui16); - } else - pfUsage(data); - } - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTSIZE): - rptSize = data; - PrintByteValue(data); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTCOUNT): - rptCount = data; - PrintByteValue(data); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_LOGICALMIN): - case (TYPE_GLOBAL | TAG_GLOBAL_LOGICALMAX): - case (TYPE_GLOBAL | TAG_GLOBAL_PHYSMIN): - case (TYPE_GLOBAL | TAG_GLOBAL_PHYSMAX): - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTID): - case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN): - case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX): - case (TYPE_GLOBAL | TAG_GLOBAL_UNITEXP): - case (TYPE_GLOBAL | TAG_GLOBAL_UNIT): - PrintValue(varBuffer, theBuffer.valueSize); - break; - case (TYPE_GLOBAL | TAG_GLOBAL_PUSH): - case (TYPE_GLOBAL | TAG_GLOBAL_POP): - break; - case (TYPE_GLOBAL | TAG_GLOBAL_USAGEPAGE): - SetUsagePage(data); - PrintUsagePage(data); - PrintByteValue(data); - break; - case (TYPE_MAIN | TAG_MAIN_COLLECTION): - case (TYPE_MAIN | TAG_MAIN_ENDCOLLECTION): - switch(data) { - case 0x00: - E_Notify(PSTR(" Physical"), 0x80); - break; - case 0x01: - E_Notify(PSTR(" Application"), 0x80); - break; - case 0x02: - E_Notify(PSTR(" Logical"), 0x80); - break; - case 0x03: - E_Notify(PSTR(" Report"), 0x80); - break; - case 0x04: - E_Notify(PSTR(" Named Array"), 0x80); - break; - case 0x05: - E_Notify(PSTR(" Usage Switch"), 0x80); - break; - case 0x06: - E_Notify(PSTR(" Usage Modifier"), 0x80); - break; - default: - E_Notify(PSTR(" Vendor Defined("), 0x80); - PrintHex (data, 0x80); - E_Notify(PSTR(")"), 0x80); - } - break; - case (TYPE_MAIN | TAG_MAIN_INPUT): - case (TYPE_MAIN | TAG_MAIN_OUTPUT): - case (TYPE_MAIN | TAG_MAIN_FEATURE): - totalSize += (uint16_t)rptSize * (uint16_t)rptCount; - rptSize = 0; - rptCount = 0; - E_Notify(PSTR("("), 0x80); - PrintBin (data, 0x80); - E_Notify(PSTR(")"), 0x80); - break; - } // switch (**pp & (TYPE_MASK | TAG_MASK)) - } - } // switch (itemParseState) - itemParseState = 0; - return enErrorSuccess; -} - -ReportDescParserBase::UsagePageFunc ReportDescParserBase::usagePageFunctions[] /*PROGMEM*/ = { - &ReportDescParserBase::PrintGenericDesktopPageUsage, - &ReportDescParserBase::PrintSimulationControlsPageUsage, - &ReportDescParserBase::PrintVRControlsPageUsage, - &ReportDescParserBase::PrintSportsControlsPageUsage, - &ReportDescParserBase::PrintGameControlsPageUsage, - &ReportDescParserBase::PrintGenericDeviceControlsPageUsage, - NULL, // Keyboard/Keypad - &ReportDescParserBase::PrintLEDPageUsage, - &ReportDescParserBase::PrintButtonPageUsage, - &ReportDescParserBase::PrintOrdinalPageUsage, - &ReportDescParserBase::PrintTelephonyPageUsage, - &ReportDescParserBase::PrintConsumerPageUsage, - &ReportDescParserBase::PrintDigitizerPageUsage, - NULL, // Reserved - NULL, // PID - NULL // Unicode -}; - -void ReportDescParserBase::SetUsagePage(uint16_t page) { - pfUsage = NULL; - - if(VALUE_BETWEEN(page, 0x00, 0x11)) - pfUsage = (usagePageFunctions[page - 1]); - - // Dead code... - // - // pfUsage = (UsagePageFunc)pgm_read_pointer(usagePageFunctions[page - 1]); - //else if (page > 0x7f && page < 0x84) - // E_Notify(pstrUsagePageMonitor); - //else if (page > 0x83 && page < 0x8c) - // E_Notify(pstrUsagePagePower); - //else if (page > 0x8b && page < 0x92) - // E_Notify((char*)pgm_read_pointer(&usagePageTitles1[page - 0x8c])); - //else if (page > 0xfeff && page <= 0xffff) - // E_Notify(pstrUsagePageVendorDefined); - // - else - switch(page) { - case 0x14: - pfUsage = &ReportDescParserBase::PrintAlphanumDisplayPageUsage; - break; - case 0x40: - pfUsage = &ReportDescParserBase::PrintMedicalInstrumentPageUsage; - break; - } -} - -void ReportDescParserBase::PrintUsagePage(uint16_t page) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(page, 0x00, 0x11, w, E_Notify, usagePageTitles0, 0x80) - else output_if_between(page, 0x8b, 0x92, w, E_Notify, usagePageTitles1, 0x80) - else if(VALUE_BETWEEN(page, 0x7f, 0x84)) - E_Notify(pstrUsagePageMonitor, 0x80); - else if(VALUE_BETWEEN(page, 0x83, 0x8c)) - E_Notify(pstrUsagePagePower, 0x80); - else if(page > 0xfeff /* && page <= 0xffff */) - E_Notify(pstrUsagePageVendorDefined, 0x80); - else - switch(page) { - case 0x14: - E_Notify(pstrUsagePageAlphaNumericDisplay, 0x80); - break; - case 0x40: - E_Notify(pstrUsagePageMedicalInstruments, 0x80); - break; - default: - E_Notify(pstrUsagePageUndefined, 0x80); - } -} - -void ReportDescParserBase::PrintButtonPageUsage(uint16_t usage) { - E_Notify(pstrSpace, 0x80); - E_Notify(PSTR("Btn"), 0x80); - PrintHex (usage, 0x80); - E_Notify(PSTR("\r\n"), 0x80); - //USB_HOST_SERIAL.print(usage, HEX); -} - -void ReportDescParserBase::PrintOrdinalPageUsage(uint16_t usage) { - E_Notify(pstrSpace, 0x80); - E_Notify(PSTR("Inst"), 0x80); - // Sorry, HEX for now... - PrintHex (usage, 0x80); - E_Notify(PSTR("\r\n"), 0x80); - //USB_HOST_SERIAL.print(usage, DEC); -} - -void ReportDescParserBase::PrintGenericDesktopPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x0a, w, E_Notify, genDesktopTitles0, 0x80) - else output_if_between(usage, 0x2f, 0x49, w, E_Notify, genDesktopTitles1, 0x80) - else output_if_between(usage, 0x7f, 0x94, w, E_Notify, genDesktopTitles2, 0x80) - else output_if_between(usage, 0x9f, 0xa9, w, E_Notify, genDesktopTitles3, 0x80) - else output_if_between(usage, 0xaf, 0xb8, w, E_Notify, genDesktopTitles4, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintSimulationControlsPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x0d, w, E_Notify, simuTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x26, w, E_Notify, simuTitles1, 0x80) - else output_if_between(usage, 0xaf, 0xd1, w, E_Notify, simuTitles2, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintVRControlsPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x0b, w, E_Notify, vrTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x22, w, E_Notify, vrTitles1, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintSportsControlsPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x05, w, E_Notify, sportsCtrlTitles0, 0x80) - else output_if_between(usage, 0x2f, 0x3a, w, E_Notify, sportsCtrlTitles1, 0x80) - else output_if_between(usage, 0x4f, 0x64, w, E_Notify, sportsCtrlTitles2, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintGameControlsPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x04, w, E_Notify, gameTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x3a, w, E_Notify, gameTitles1, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintGenericDeviceControlsPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x1f, 0x27, w, E_Notify, genDevCtrlTitles, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintLEDPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x4e, w, E_Notify, ledTitles, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintTelephonyPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x08, w, E_Notify, telTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x32, w, E_Notify, telTitles1, 0x80) - else output_if_between(usage, 0x4f, 0x54, w, E_Notify, telTitles2, 0x80) - else output_if_between(usage, 0x6f, 0x75, w, E_Notify, telTitles3, 0x80) - else output_if_between(usage, 0x8f, 0x9f, w, E_Notify, telTitles4, 0x80) - else output_if_between(usage, 0xaf, 0xc0, w, E_Notify, telTitles5, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintConsumerPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x07, w, E_Notify, consTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x23, w, E_Notify, consTitles1, 0x80) - else output_if_between(usage, 0x2f, 0x37, w, E_Notify, consTitles2, 0x80) - else output_if_between(usage, 0x3f, 0x49, w, E_Notify, consTitles3, 0x80) - else output_if_between(usage, 0x5f, 0x67, w, E_Notify, consTitles4, 0x80) - else output_if_between(usage, 0x7f, 0xa5, w, E_Notify, consTitles5, 0x80) - else output_if_between(usage, 0xaf, 0xcf, w, E_Notify, consTitles6, 0x80) - else output_if_between(usage, 0xdf, 0xeb, w, E_Notify, consTitles7, 0x80) - else output_if_between(usage, 0xef, 0xf6, w, E_Notify, consTitles8, 0x80) - else output_if_between(usage, 0xff, 0x10e, w, E_Notify, consTitles9, 0x80) - else output_if_between(usage, 0x14f, 0x156, w, E_Notify, consTitlesA, 0x80) - else output_if_between(usage, 0x15f, 0x16b, w, E_Notify, consTitlesB, 0x80) - else output_if_between(usage, 0x16f, 0x175, w, E_Notify, consTitlesC, 0x80) - else output_if_between(usage, 0x17f, 0x1c8, w, E_Notify, consTitlesD, 0x80) - else output_if_between(usage, 0x1ff, 0x29d, w, E_Notify, consTitlesE, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintDigitizerPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x0e, w, E_Notify, digitTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x23, w, E_Notify, digitTitles1, 0x80) - else output_if_between(usage, 0x2f, 0x47, w, E_Notify, digitTitles2, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintAlphanumDisplayPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - output_if_between(usage, 0x00, 0x03, w, E_Notify, aplphanumTitles0, 0x80) - else output_if_between(usage, 0x1f, 0x4e, w, E_Notify, aplphanumTitles1, 0x80) - else output_if_between(usage, 0x7f, 0x96, w, E_Notify, digitTitles2, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -void ReportDescParserBase::PrintMedicalInstrumentPageUsage(uint16_t usage) { - const char * const * w; - E_Notify(pstrSpace, 0x80); - - if(usage == 1) E_Notify(pstrUsageMedicalUltrasound, 0x80); - else if(usage == 0x70) - E_Notify(pstrUsageDepthGainCompensation, 0x80); - else output_if_between(usage, 0x1f, 0x28, w, E_Notify, medInstrTitles0, 0x80) - else output_if_between(usage, 0x3f, 0x45, w, E_Notify, medInstrTitles1, 0x80) - else output_if_between(usage, 0x5f, 0x62, w, E_Notify, medInstrTitles2, 0x80) - else output_if_between(usage, 0x7f, 0x8a, w, E_Notify, medInstrTitles3, 0x80) - else output_if_between(usage, 0x9f, 0xa2, w, E_Notify, medInstrTitles4, 0x80) - else E_Notify(pstrUsagePageUndefined, 0x80); -} - -uint8_t ReportDescParser2::ParseItem(uint8_t **pp, uint32_t *pcntdn) { - //uint8_t ret = enErrorSuccess; - - switch(itemParseState) { - case 0: - if(**pp == HID_LONG_ITEM_PREFIX) - USBTRACE("\r\nLONG\r\n"); - else { - uint8_t size = ((**pp) & DATA_SIZE_MASK); - itemPrefix = (**pp); - itemSize = 1 + ((size == DATA_SIZE_4) ? 4 : size); - } - (*pp)++; - (*pcntdn)--; - itemSize--; - itemParseState = 1; - - if(!itemSize) - break; - - if(!pcntdn) - return enErrorIncomplete; - case 1: - theBuffer.valueSize = itemSize; - valParser.Initialize(&theBuffer); - itemParseState = 2; - case 2: - if(!valParser.Parse(pp, pcntdn)) - return enErrorIncomplete; - itemParseState = 3; - case 3: - { - uint8_t data = *((uint8_t*)varBuffer); - - switch(itemPrefix & (TYPE_MASK | TAG_MASK)) { - case (TYPE_LOCAL | TAG_LOCAL_USAGE): - if(pfUsage) { - if(theBuffer.valueSize > 1) { - uint16_t* ui16 = reinterpret_cast(varBuffer); - pfUsage(*ui16); - } else - pfUsage(data); - } - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTSIZE): - rptSize = data; - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTCOUNT): - rptCount = data; - break; - case (TYPE_GLOBAL | TAG_GLOBAL_REPORTID): - rptId = data; - break; - case (TYPE_LOCAL | TAG_LOCAL_USAGEMIN): - useMin = data; - break; - case (TYPE_LOCAL | TAG_LOCAL_USAGEMAX): - useMax = data; - break; - case (TYPE_GLOBAL | TAG_GLOBAL_USAGEPAGE): - SetUsagePage(data); - break; - case (TYPE_MAIN | TAG_MAIN_OUTPUT): - case (TYPE_MAIN | TAG_MAIN_FEATURE): - rptSize = 0; - rptCount = 0; - useMin = 0; - useMax = 0; - break; - case (TYPE_MAIN | TAG_MAIN_INPUT): - OnInputItem(data); - - totalSize += (uint16_t)rptSize * (uint16_t)rptCount; - - rptSize = 0; - rptCount = 0; - useMin = 0; - useMax = 0; - break; - } // switch (**pp & (TYPE_MASK | TAG_MASK)) - } - } // switch (itemParseState) - itemParseState = 0; - return enErrorSuccess; -} - -void ReportDescParser2::OnInputItem(uint8_t itm) { - uint8_t byte_offset = (totalSize >> 3); // calculate offset to the next unhandled byte i = (int)(totalCount / 8); - uint32_t tmp = (byte_offset << 3); - uint8_t bit_offset = totalSize - tmp; // number of bits in the current byte already handled - uint8_t *p = pBuf + byte_offset; // current byte pointer - - if(bit_offset) - *p >>= bit_offset; - - uint8_t usage = useMin; - - bool print_usemin_usemax = ((useMin < useMax) && ((itm & 3) == 2) && pfUsage) ? true : false; - - uint8_t bits_of_byte = 8; - - // for each field in field array defined by rptCount - for(uint8_t field = 0; field < rptCount; field++, usage++) { - - union { - uint8_t bResult[4]; - uint16_t wResult[2]; - uint32_t dwResult; - } result; - - result.dwResult = 0; - uint8_t mask = 0; - - if(print_usemin_usemax) - pfUsage(usage); - - // bits_left - number of bits in the field(array of fields, depending on Report Count) left to process - // bits_of_byte - number of bits in current byte left to process - // bits_to_copy - number of bits to copy to result buffer - - // for each bit in a field - for(uint8_t bits_left = rptSize, bits_to_copy = 0; bits_left; - bits_left -= bits_to_copy) { - bits_to_copy = (bits_left > bits_of_byte) ? bits_of_byte : bits_left; - - result.dwResult <<= bits_to_copy; // Result buffer is shifted by the number of bits to be copied into it - - uint8_t val = *p; - - val >>= (8 - bits_of_byte); // Shift by the number of bits already processed - - mask = 0; - - for(uint8_t j = bits_to_copy; j; j--) { - mask <<= 1; - mask |= 1; - } - - result.bResult[0] = (result.bResult[0] | (val & mask)); - - bits_of_byte -= bits_to_copy; - - if(bits_of_byte < 1) { - bits_of_byte = 8; - p++; - } - } - PrintByteValue(result.dwResult); - } - E_Notify(PSTR("\r\n"), 0x80); -} - -void UniversalReportParser::Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf) { - ReportDescParser2 prs(len, buf); - - uint8_t ret = hid->GetReportDescr(0, &prs); - - if(ret) - ErrorMessage (PSTR("GetReportDescr-2"), ret); -} diff --git a/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.h b/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.h deleted file mode 100644 index 65803df5d40..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hidescriptorparser.h +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#if !defined(__HIDDESCRIPTORPARSER_H__) -#define __HIDDESCRIPTORPARSER_H__ - -#include "hid.h" - -class ReportDescParserBase : public USBReadParser { -public: - typedef void (*UsagePageFunc)(uint16_t usage); - - static void PrintGenericDesktopPageUsage(uint16_t usage); - static void PrintSimulationControlsPageUsage(uint16_t usage); - static void PrintVRControlsPageUsage(uint16_t usage); - static void PrintSportsControlsPageUsage(uint16_t usage); - static void PrintGameControlsPageUsage(uint16_t usage); - static void PrintGenericDeviceControlsPageUsage(uint16_t usage); - static void PrintLEDPageUsage(uint16_t usage); - static void PrintButtonPageUsage(uint16_t usage); - static void PrintOrdinalPageUsage(uint16_t usage); - static void PrintTelephonyPageUsage(uint16_t usage); - static void PrintConsumerPageUsage(uint16_t usage); - static void PrintDigitizerPageUsage(uint16_t usage); - static void PrintAlphanumDisplayPageUsage(uint16_t usage); - static void PrintMedicalInstrumentPageUsage(uint16_t usage); - - static void PrintValue(uint8_t *p, uint8_t len); - static void PrintByteValue(uint8_t data); - - static void PrintItemTitle(uint8_t prefix); - - static const char * const usagePageTitles0[]; - static const char * const usagePageTitles1[]; - static const char * const genDesktopTitles0[]; - static const char * const genDesktopTitles1[]; - static const char * const genDesktopTitles2[]; - static const char * const genDesktopTitles3[]; - static const char * const genDesktopTitles4[]; - static const char * const simuTitles0[]; - static const char * const simuTitles1[]; - static const char * const simuTitles2[]; - static const char * const vrTitles0[]; - static const char * const vrTitles1[]; - static const char * const sportsCtrlTitles0[]; - static const char * const sportsCtrlTitles1[]; - static const char * const sportsCtrlTitles2[]; - static const char * const gameTitles0[]; - static const char * const gameTitles1[]; - static const char * const genDevCtrlTitles[]; - static const char * const ledTitles[]; - static const char * const telTitles0[]; - static const char * const telTitles1[]; - static const char * const telTitles2[]; - static const char * const telTitles3[]; - static const char * const telTitles4[]; - static const char * const telTitles5[]; - static const char * const consTitles0[]; - static const char * const consTitles1[]; - static const char * const consTitles2[]; - static const char * const consTitles3[]; - static const char * const consTitles4[]; - static const char * const consTitles5[]; - static const char * const consTitles6[]; - static const char * const consTitles7[]; - static const char * const consTitles8[]; - static const char * const consTitles9[]; - static const char * const consTitlesA[]; - static const char * const consTitlesB[]; - static const char * const consTitlesC[]; - static const char * const consTitlesD[]; - static const char * const consTitlesE[]; - static const char * const digitTitles0[]; - static const char * const digitTitles1[]; - static const char * const digitTitles2[]; - static const char * const aplphanumTitles0[]; - static const char * const aplphanumTitles1[]; - static const char * const aplphanumTitles2[]; - static const char * const medInstrTitles0[]; - static const char * const medInstrTitles1[]; - static const char * const medInstrTitles2[]; - static const char * const medInstrTitles3[]; - static const char * const medInstrTitles4[]; - -protected: - static UsagePageFunc usagePageFunctions[]; - - MultiValueBuffer theBuffer; - MultiByteValueParser valParser; - ByteSkipper theSkipper; - uint8_t varBuffer[sizeof (USB_CONFIGURATION_DESCRIPTOR)]; - - uint8_t itemParseState; // Item parser state variable - uint8_t itemSize; // Item size - uint8_t itemPrefix; // Item prefix (first byte) - uint8_t rptSize; // Report Size - uint8_t rptCount; // Report Count - - uint16_t totalSize; // Report size in bits - - virtual uint8_t ParseItem(uint8_t **pp, uint32_t *pcntdn); - - UsagePageFunc pfUsage; - - static void PrintUsagePage(uint16_t page); - void SetUsagePage(uint16_t page); - -public: - - ReportDescParserBase() : - itemParseState(0), - itemSize(0), - itemPrefix(0), - rptSize(0), - rptCount(0), - pfUsage(NULL) { - theBuffer.pValue = varBuffer; - valParser.Initialize(&theBuffer); - theSkipper.Initialize(&theBuffer); - }; - - virtual void Parse(const uint32_t len, const uint8_t *pbuf, const uint32_t &offset); - - enum { - enErrorSuccess = 0 - , enErrorIncomplete // value or record is partialy read in buffer - , enErrorBufferTooSmall - }; -}; - -class ReportDescParser : public ReportDescParserBase { -}; - -class ReportDescParser2 : public ReportDescParserBase { - uint8_t rptId; // Report ID - uint8_t useMin; // Usage Minimum - uint8_t useMax; // Usage Maximum - uint8_t fieldCount; // Number of field being currently processed - - void OnInputItem(uint8_t itm); // Method which is called every time Input item is found - - uint8_t *pBuf; // Report buffer pointer - uint8_t bLen; // Report length - -protected: - virtual uint8_t ParseItem(uint8_t **pp, uint32_t *pcntdn); - -public: - - ReportDescParser2(uint16_t len, uint8_t *pbuf) : - ReportDescParserBase(), rptId(0), useMin(0), useMax(0), fieldCount(0), pBuf(pbuf), bLen(len) { - }; -}; - -class UniversalReportParser : public HIDReportParser { -public: - virtual void Parse(HID *hid, uint32_t is_rpt_id, uint32_t len, uint8_t *buf); -}; - -#endif // __HIDDESCRIPTORPARSER_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/hiduniversal.cpp b/legacy/builder/test/libraries/USBHost/src/hiduniversal.cpp deleted file mode 100644 index ac5309b8d41..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hiduniversal.cpp +++ /dev/null @@ -1,421 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#include "Arduino.h" -#include "hiduniversal.h" - -HIDUniversal::HIDUniversal(USBHost *p) : -HID(p), -qNextPollTime(0), -pollInterval(0), -bPollEnable(false), -bHasReportId(false) { - Initialize(); - - if(pUsb) - pUsb->RegisterDeviceClass(this); -} - -uint16_t HIDUniversal::GetHidClassDescrLen(uint8_t type, uint8_t num) { - for(uint8_t i = 0, n = 0; i < HID_MAX_HID_CLASS_DESCRIPTORS; i++) { - if(descrInfo[i].bDescrType == type) { - if(n == num) - return descrInfo[i].wDescriptorLength; - n++; - } - } - return 0; -} - -void HIDUniversal::Initialize() { - for(uint8_t i = 0; i < MAX_REPORT_PARSERS; i++) { - rptParsers[i].rptId = 0; - rptParsers[i].rptParser = NULL; - } - for(uint8_t i = 0; i < HID_MAX_HID_CLASS_DESCRIPTORS; i++) { - descrInfo[i].bDescrType = 0; - descrInfo[i].wDescriptorLength = 0; - } - for(uint8_t i = 0; i < maxHidInterfaces; i++) { - hidInterfaces[i].bmInterface = 0; - hidInterfaces[i].bmProtocol = 0; - - for(uint8_t j = 0; j < maxEpPerInterface; j++) - hidInterfaces[i].epIndex[j] = 0; - } - for(uint8_t i = 0; i < totalEndpoints; i++) { - epInfo[i].epAddr = 0; - epInfo[i].maxPktSize = (i) ? 0 : 8; - epInfo[i].epAttribs = 0; - epInfo[i].bmNakPower = (i) ? USB_NAK_NOWAIT : USB_NAK_MAX_POWER; - } - bNumEP = 1; - bNumIface = 0; - bConfNum = 0; - pollInterval = 0; - - ZeroMemory(constBuffLen, prevBuf); -} - -uint32_t HIDUniversal::SetReportParser(uint32_t id, HIDReportParser *prs) { - for(uint8_t i = 0; i < MAX_REPORT_PARSERS; i++) { - if(rptParsers[i].rptId == 0 && rptParsers[i].rptParser == NULL) { - rptParsers[i].rptId = id; - rptParsers[i].rptParser = prs; - return true; - } - } - return false; -} - -HIDReportParser* HIDUniversal::GetReportParser(uint32_t id) { - if(!bHasReportId) - return ((rptParsers[0].rptParser) ? rptParsers[0].rptParser : NULL); - - for(uint8_t i = 0; i < MAX_REPORT_PARSERS; i++) { - if(rptParsers[i].rptId == id) - return rptParsers[i].rptParser; - } - return NULL; -} - -uint8_t HIDUniversal::Init(uint8_t parent, uint8_t port, bool lowspeed) { - const uint8_t constBufSize = sizeof (USB_DEVICE_DESCRIPTOR); - - uint8_t buf[constBufSize]; - USB_DEVICE_DESCRIPTOR * udd = reinterpret_cast(buf); - uint8_t rcode; - UsbDeviceDefinition *p = NULL; - EpInfo *oldep_ptr = NULL; - uint8_t len = 0; - - uint8_t num_of_conf; // number of configurations - //uint8_t num_of_intf; // number of interfaces - - AddressPool &addrPool = pUsb->GetAddressPool(); - - USBTRACE("HU Init\r\n"); - - if(bAddress) - return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE; - - // Get pointer to pseudo device with address 0 assigned - p = addrPool.GetUsbDevicePtr(0); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - if(!p->epinfo) { - USBTRACE("epinfo\r\n"); - return USB_ERROR_EPINFO_IS_NULL; - } - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - - p->lowspeed = lowspeed; - - // Get device descriptor - rcode = pUsb->getDevDescr(0, 0, 8, (uint8_t*)buf); - - if(!rcode) - len = (buf[0] > constBufSize) ? constBufSize : buf[0]; - - if(rcode) { - // Restore p->epinfo - p->epinfo = oldep_ptr; - - goto FailGetDevDescr; - } - - // Restore p->epinfo - p->epinfo = oldep_ptr; - - // Allocate new address according to device class - bAddress = addrPool.AllocAddress(parent, false, port); - - if(!bAddress) - return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - - // Extract Max Packet Size from the device descriptor - epInfo[0].maxPktSize = udd->bMaxPacketSize0; - - // Assign new address to the device - rcode = pUsb->setAddr(0, 0, bAddress); - - if(rcode) { - p->lowspeed = false; - addrPool.FreeAddress(bAddress); - bAddress = 0; - USBTRACE2("setAddr:", rcode); - return rcode; - } - - //delay(2); //per USB 2.0 sect.9.2.6.3 - - USBTRACE2("Addr:", bAddress); - - p->lowspeed = false; - - p = addrPool.GetUsbDevicePtr(bAddress); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - p->lowspeed = lowspeed; - - if(len) - rcode = pUsb->getDevDescr(bAddress, 0, len, (uint8_t*)buf); - - if(rcode) - goto FailGetDevDescr; - - VID = udd->idVendor; // Can be used by classes that inherits this class to check the VID and PID of the connected device - PID = udd->idProduct; - - num_of_conf = udd->bNumConfigurations; - - // Assign epInfo to epinfo pointer - rcode = pUsb->setEpInfoEntry(bAddress, 1, epInfo); - - if(rcode) - goto FailSetDevTblEntry; - - USBTRACE2("NC:", num_of_conf); - - for(uint8_t i = 0; i < num_of_conf; i++) { - //HexDumper HexDump; - ConfigDescParser confDescrParser(this); - - //rcode = pUsb->getConfDescr(bAddress, 0, i, &HexDump); - rcode = pUsb->getConfDescr(bAddress, 0, i, &confDescrParser); - - if(rcode) - goto FailGetConfDescr; - - if(bNumEP > 1) - break; - } // for - - if(bNumEP < 2) - return USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED; - - // Assign epInfo to epinfo pointer - rcode = pUsb->setEpInfoEntry(bAddress, bNumEP, epInfo); - - USBTRACE2("Cnf:", bConfNum); - - // Set Configuration Value - rcode = pUsb->setConf(bAddress, 0, bConfNum); - - if(rcode) - goto FailSetConfDescr; - - for(uint8_t i = 0; i < bNumIface; i++) { - if(hidInterfaces[i].epIndex[epInterruptInIndex] == 0) - continue; - - rcode = SetIdle(hidInterfaces[i].bmInterface, 0, 0); - - if(rcode)/* && rcode != hrSTALL) */ - goto FailSetIdle; - } - - USBTRACE("HU configured\r\n"); - - OnInitSuccessful(); - - bPollEnable = true; - return 0; - -FailGetDevDescr: -#ifdef DEBUG_USB_HOST - NotifyFailGetDevDescr(); - goto Fail; -#endif - -FailSetDevTblEntry: -#ifdef DEBUG_USB_HOST - NotifyFailSetDevTblEntry(); - goto Fail; -#endif - -FailGetConfDescr: -#ifdef DEBUG_USB_HOST - NotifyFailGetConfDescr(); - goto Fail; -#endif - -FailSetConfDescr: -#ifdef DEBUG_USB_HOST - NotifyFailSetConfDescr(); - goto Fail; -#endif - - -FailSetIdle: -#ifdef DEBUG_USB_HOST - USBTRACE("SetIdle:"); -#endif - -#ifdef DEBUG_USB_HOST -Fail: - NotifyFail(rcode); -#endif - Release(); - return rcode; -} - -HIDUniversal::HIDInterface* HIDUniversal::FindInterface(uint8_t iface, uint8_t alt, uint8_t proto) { - for(uint8_t i = 0; i < bNumIface && i < maxHidInterfaces; i++) - if(hidInterfaces[i].bmInterface == iface && hidInterfaces[i].bmAltSet == alt - && hidInterfaces[i].bmProtocol == proto) - return hidInterfaces + i; - return NULL; -} - -void HIDUniversal::EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *pep) { - // If the first configuration satisfies, the others are not concidered. - if(bNumEP > 1 && conf != bConfNum) - return; - - //ErrorMessage(PSTR("\r\nConf.Val"), conf); - //ErrorMessage(PSTR("Iface Num"), iface); - //ErrorMessage(PSTR("Alt.Set"), alt); - - bConfNum = conf; - - uint8_t index = 0; - HIDInterface *piface = FindInterface(iface, alt, proto); - - // Fill in interface structure in case of new interface - if(!piface) { - piface = hidInterfaces + bNumIface; - piface->bmInterface = iface; - piface->bmAltSet = alt; - piface->bmProtocol = proto; - bNumIface++; - } - - if((pep->bmAttributes & 0x03) == 3 && (pep->bEndpointAddress & 0x80) == 0x80) - index = epInterruptInIndex; - else - index = epInterruptOutIndex; - - if(index) { - // Fill in the endpoint info structure - epInfo[bNumEP].epAddr = (pep->bEndpointAddress & 0x0F); - epInfo[bNumEP].maxPktSize = (uint8_t)pep->wMaxPacketSize; - epInfo[bNumEP].epAttribs = 0; - epInfo[bNumEP].bmNakPower = USB_NAK_NOWAIT; - - // Fill in the endpoint index list - piface->epIndex[index] = bNumEP; //(pep->bEndpointAddress & 0x0F); - - if(pollInterval < pep->bInterval) // Set the polling interval as the largest polling interval obtained from endpoints - pollInterval = pep->bInterval; - - bNumEP++; - } - //PrintEndpointDescriptor(pep); -} - -uint32_t HIDUniversal::Release() { - pUsb->GetAddressPool().FreeAddress(bAddress); - - bNumEP = 1; - bAddress = 0; - qNextPollTime = 0; - bPollEnable = false; - return 0; -} - -bool HIDUniversal::BuffersIdentical(uint8_t len, uint8_t *buf1, uint8_t *buf2) { - for(uint8_t i = 0; i < len; i++) - if(buf1[i] != buf2[i]) - return false; - return true; -} - -void HIDUniversal::ZeroMemory(uint8_t len, uint8_t *buf) { - for(uint8_t i = 0; i < len; i++) - buf[i] = 0; -} - -void HIDUniversal::SaveBuffer(uint8_t len, uint8_t *src, uint8_t *dest) { - for(uint8_t i = 0; i < len; i++) - dest[i] = src[i]; -} - -uint32_t HIDUniversal::Poll() { - uint32_t rcode = 0; - - if(!bPollEnable) - return 0; - - if((long)(millis() - qNextPollTime) >= 0L) { - qNextPollTime = millis() + pollInterval; - - uint8_t buf[constBuffLen]; - - for(uint8_t i = 0; i < bNumIface; i++) { - uint8_t index = hidInterfaces[i].epIndex[epInterruptInIndex]; - uint16_t read = (uint8_t)epInfo[index].maxPktSize; - - ZeroMemory(constBuffLen, buf); - - uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[index].epAddr, (uint8_t*)&read, buf); - - if(rcode) { - if(rcode != USB_ERRORFLOW/*hrNAK*/) - USBTRACE3("(hiduniversal.h) Poll:", rcode, 0x81); - return rcode; - } - - if(read > constBuffLen) - read = constBuffLen; - - bool identical = BuffersIdentical(read, buf, prevBuf); - - SaveBuffer(read, buf, prevBuf); - - if(identical) - return 0; -#if 0 - Notify(PSTR("\r\nBuf: "), 0x80); - - for(uint8_t i = 0; i < read; i++) { - D_PrintHex (buf[i], 0x80); - Notify(PSTR(" "), 0x80); - } - - Notify(PSTR("\r\n"), 0x80); -#endif - ParseHIDData(this, bHasReportId, (uint8_t)read, buf); - - HIDReportParser *prs = GetReportParser(((bHasReportId) ? *buf : 0)); - - if(prs) - prs->Parse(this, bHasReportId, (uint8_t)read, buf); - } - } - return rcode; -} diff --git a/legacy/builder/test/libraries/USBHost/src/hiduniversal.h b/legacy/builder/test/libraries/USBHost/src/hiduniversal.h deleted file mode 100644 index 9c033f0ab91..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hiduniversal.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#if !defined(__HIDUNIVERSAL_H__) -#define __HIDUNIVERSAL_H__ - -#include "hid.h" -//#include "hidescriptorparser.h" - -class HIDUniversal : public HID { - - struct ReportParser { - uint8_t rptId; - HIDReportParser *rptParser; - } rptParsers[MAX_REPORT_PARSERS]; - - // HID class specific descriptor type and length info obtained from HID descriptor - HID_CLASS_DESCRIPTOR_LEN_AND_TYPE descrInfo[HID_MAX_HID_CLASS_DESCRIPTORS]; - - // Returns HID class specific descriptor length by its type and order number - uint16_t GetHidClassDescrLen(uint8_t type, uint8_t num); - - struct HIDInterface { - struct { - uint8_t bmInterface : 3; - uint8_t bmAltSet : 3; - uint8_t bmProtocol : 2; - }; - uint8_t epIndex[maxEpPerInterface]; - }; - - uint8_t bConfNum; // configuration number - uint8_t bNumIface; // number of interfaces in the configuration - uint8_t bNumEP; // total number of EP in the configuration - uint32_t qNextPollTime; // next poll time - uint8_t pollInterval; - bool bPollEnable; // poll enable flag - - static const uint16_t constBuffLen = 64; // event buffer length - uint8_t prevBuf[constBuffLen]; // previous event buffer - - void Initialize(); - HIDInterface* FindInterface(uint8_t iface, uint8_t alt, uint8_t proto); - - void ZeroMemory(uint8_t len, uint8_t *buf); - bool BuffersIdentical(uint8_t len, uint8_t *buf1, uint8_t *buf2); - void SaveBuffer(uint8_t len, uint8_t *src, uint8_t *dest); - -protected: - EpInfo epInfo[totalEndpoints]; - HIDInterface hidInterfaces[maxHidInterfaces]; - - bool bHasReportId; - - uint16_t PID, VID; // PID and VID of connected device - - // HID implementation - virtual HIDReportParser* GetReportParser(uint32_t id); - - virtual uint32_t OnInitSuccessful() { - return 0; - }; - - virtual void ParseHIDData(HID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) { - return; - }; - -public: - HIDUniversal(USBHost *p); - - // HID implementation - virtual uint32_t SetReportParser(uint32_t id, HIDReportParser *prs); - - // USBDeviceConfig implementation - virtual uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed); - virtual uint32_t Release(); - virtual uint32_t Poll(); - - virtual uint32_t GetAddress() { - return bAddress; - }; - - virtual uint32_t isReady() { - return bPollEnable; - }; - - // UsbConfigXtracter implementation - virtual void EndpointXtract(uint32_t conf, uint32_t iface, uint32_t alt, uint32_t proto, const USB_ENDPOINT_DESCRIPTOR *ep); -}; - -#endif // __HIDUNIVERSAL_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/hidusagestr.h b/legacy/builder/test/libraries/USBHost/src/hidusagestr.h deleted file mode 100644 index 71e53787399..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/hidusagestr.h +++ /dev/null @@ -1,977 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -#if !defined( __HIDUSAGESTR_H__) -#define __HIDUSAGESTR_H__ - -#include "Usb.h" - -const char pstrSpace [] PROGMEM = " "; -const char pstrCRLF [] PROGMEM = "\r\n"; -const char pstrSingleTab [] PROGMEM = "\t"; -const char pstrDoubleTab [] PROGMEM = "\t\t"; -const char pstrTripleTab [] PROGMEM = "\t\t\t"; - -// Usage Page String Titles -const char pstrUsagePageUndefined [] PROGMEM = "Undef"; -const char pstrUsagePageGenericDesktopControls [] PROGMEM = "Gen Desktop Ctrls"; -const char pstrUsagePageSimulationControls [] PROGMEM = "Simu Ctrls"; -const char pstrUsagePageVRControls [] PROGMEM = "VR Ctrls"; -const char pstrUsagePageSportControls [] PROGMEM = "Sport Ctrls"; -const char pstrUsagePageGameControls [] PROGMEM = "Game Ctrls"; -const char pstrUsagePageGenericDeviceControls [] PROGMEM = "Gen Dev Ctrls"; -const char pstrUsagePageKeyboardKeypad [] PROGMEM = "Kbrd/Keypad"; -const char pstrUsagePageLEDs [] PROGMEM = "LEDs"; -const char pstrUsagePageButton [] PROGMEM = "Button"; -const char pstrUsagePageOrdinal [] PROGMEM = "Ordinal"; -const char pstrUsagePageTelephone [] PROGMEM = "Tel"; -const char pstrUsagePageConsumer [] PROGMEM = "Consumer"; -const char pstrUsagePageDigitizer [] PROGMEM = "Digitizer"; -const char pstrUsagePagePID [] PROGMEM = "PID"; -const char pstrUsagePageUnicode [] PROGMEM = "Unicode"; -const char pstrUsagePageAlphaNumericDisplay [] PROGMEM = "Alpha Num Disp"; -const char pstrUsagePageMedicalInstruments [] PROGMEM = "Medical Instr"; -const char pstrUsagePageMonitor [] PROGMEM = "Monitor"; -const char pstrUsagePagePower [] PROGMEM = "Power"; -const char pstrUsagePageBarCodeScanner [] PROGMEM = "Bar Code Scan"; -const char pstrUsagePageScale [] PROGMEM = "Scale"; -const char pstrUsagePageMSRDevices [] PROGMEM = "Magn Stripe Read Dev"; -const char pstrUsagePagePointOfSale [] PROGMEM = "POS"; -const char pstrUsagePageCameraControl [] PROGMEM = "Cam Ctrl"; -const char pstrUsagePageArcade [] PROGMEM = "Arcade"; -const char pstrUsagePageReserved [] PROGMEM = "Reserved"; -const char pstrUsagePageVendorDefined [] PROGMEM = "Vendor Def"; - -// Generic Desktop Controls Page -const char pstrUsagePointer [] PROGMEM = "Pointer"; -const char pstrUsageMouse [] PROGMEM = "Mouse"; -const char pstrUsageJoystick [] PROGMEM = "Joystick"; -const char pstrUsageGamePad [] PROGMEM = "Game Pad"; -const char pstrUsageKeyboard [] PROGMEM = "Kbrd"; -const char pstrUsageKeypad [] PROGMEM = "Keypad"; -const char pstrUsageMultiAxisController [] PROGMEM = "Multi-axis Ctrl"; -const char pstrUsageTabletPCSystemControls [] PROGMEM = "Tablet PC Sys Ctrls"; -const char pstrUsageX [] PROGMEM = "X"; -const char pstrUsageY [] PROGMEM = "Y"; -const char pstrUsageZ [] PROGMEM = "Z"; -const char pstrUsageRx [] PROGMEM = "Rx"; -const char pstrUsageRy [] PROGMEM = "Ry"; -const char pstrUsageRz [] PROGMEM = "Rz"; -const char pstrUsageSlider [] PROGMEM = "Slider"; -const char pstrUsageDial [] PROGMEM = "Dial"; -const char pstrUsageWheel [] PROGMEM = "Wheel"; -const char pstrUsageHatSwitch [] PROGMEM = "Hat Switch"; -const char pstrUsageCountedBuffer [] PROGMEM = "Counted Buf"; -const char pstrUsageByteCount [] PROGMEM = "Byte Count"; -const char pstrUsageMotionWakeup [] PROGMEM = "Motion Wakeup"; -const char pstrUsageStart [] PROGMEM = "Start"; -const char pstrUsageSelect [] PROGMEM = "Sel"; -const char pstrUsageVx [] PROGMEM = "Vx"; -const char pstrUsageVy [] PROGMEM = "Vy"; -const char pstrUsageVz [] PROGMEM = "Vz"; -const char pstrUsageVbrx [] PROGMEM = "Vbrx"; -const char pstrUsageVbry [] PROGMEM = "Vbry"; -const char pstrUsageVbrz [] PROGMEM = "Vbrz"; -const char pstrUsageVno [] PROGMEM = "Vno"; -const char pstrUsageFeatureNotification [] PROGMEM = "Feature Notif"; -const char pstrUsageResolutionMultiplier [] PROGMEM = "Res Mult"; -const char pstrUsageSystemControl [] PROGMEM = "Sys Ctrl"; -const char pstrUsageSystemPowerDown [] PROGMEM = "Sys Pwr Down"; -const char pstrUsageSystemSleep [] PROGMEM = "Sys Sleep"; -const char pstrUsageSystemWakeup [] PROGMEM = "Sys Wakeup"; -const char pstrUsageSystemContextMenu [] PROGMEM = "Sys Context Menu"; -const char pstrUsageSystemMainMenu [] PROGMEM = "Sys Main Menu"; -const char pstrUsageSystemAppMenu [] PROGMEM = "Sys App Menu"; -const char pstrUsageSystemMenuHelp [] PROGMEM = "Sys Menu Help"; -const char pstrUsageSystemMenuExit [] PROGMEM = "Sys Menu Exit"; -const char pstrUsageSystemMenuSelect [] PROGMEM = "Sys Menu Select"; -const char pstrUsageSystemMenuRight [] PROGMEM = "Sys Menu Right"; -const char pstrUsageSystemMenuLeft [] PROGMEM = "Sys Menu Left"; -const char pstrUsageSystemMenuUp [] PROGMEM = "Sys Menu Up"; -const char pstrUsageSystemMenuDown [] PROGMEM = "Sys Menu Down"; -const char pstrUsageSystemColdRestart [] PROGMEM = "Sys Cold Restart"; -const char pstrUsageSystemWarmRestart [] PROGMEM = "Sys Warm Restart"; -const char pstrUsageDPadUp [] PROGMEM = "D-pad Up"; -const char pstrUsageDPadDown [] PROGMEM = "D-pad Down"; -const char pstrUsageDPadRight [] PROGMEM = "D-pad Right"; -const char pstrUsageDPadLeft [] PROGMEM = "D-pad Left"; -const char pstrUsageSystemDock [] PROGMEM = "Sys Dock"; -const char pstrUsageSystemUndock [] PROGMEM = "Sys Undock"; -const char pstrUsageSystemSetup [] PROGMEM = "Sys Setup"; -const char pstrUsageSystemBreak [] PROGMEM = "Sys Break"; -const char pstrUsageSystemDebuggerBreak [] PROGMEM = "Sys Dbg Brk"; -const char pstrUsageApplicationBreak [] PROGMEM = "App Break"; -const char pstrUsageApplicationDebuggerBreak [] PROGMEM = "App Dbg Brk"; -const char pstrUsageSystemSpeakerMute [] PROGMEM = "Sys Spk Mute"; -const char pstrUsageSystemHibernate [] PROGMEM = "Sys Hiber"; -const char pstrUsageSystemDisplayInvert [] PROGMEM = "Sys Disp Inv"; -const char pstrUsageSystemDisplayInternal [] PROGMEM = "Sys Disp Int"; -const char pstrUsageSystemDisplayExternal [] PROGMEM = "Sys Disp Ext"; -const char pstrUsageSystemDisplayBoth [] PROGMEM = "Sys Disp Both"; -const char pstrUsageSystemDisplayDual [] PROGMEM = "Sys Disp Dual"; -const char pstrUsageSystemDisplayToggleIntExt [] PROGMEM = "Sys Disp Tgl Int/Ext"; -const char pstrUsageSystemDisplaySwapPriSec [] PROGMEM = "Sys Disp Swap Pri/Sec"; -const char pstrUsageSystemDisplayLCDAutoscale [] PROGMEM = "Sys Disp LCD Autoscale"; - -// Simulation Controls Page -const char pstrUsageFlightSimulationDevice [] PROGMEM = "Flight Simu Dev"; -const char pstrUsageAutomobileSimulationDevice [] PROGMEM = "Auto Simu Dev"; -const char pstrUsageTankSimulationDevice [] PROGMEM = "Tank Simu Dev"; -const char pstrUsageSpaceshipSimulationDevice [] PROGMEM = "Space Simu Dev"; -const char pstrUsageSubmarineSimulationDevice [] PROGMEM = "Subm Simu Dev"; -const char pstrUsageSailingSimulationDevice [] PROGMEM = "Sail Simu Dev"; -const char pstrUsageMotocicleSimulationDevice [] PROGMEM = "Moto Simu Dev"; -const char pstrUsageSportsSimulationDevice [] PROGMEM = "Sport Simu Dev"; -const char pstrUsageAirplaneSimulationDevice [] PROGMEM = "Airp Simu Dev"; -const char pstrUsageHelicopterSimulationDevice [] PROGMEM = "Heli Simu Dev"; -const char pstrUsageMagicCarpetSimulationDevice [] PROGMEM = "Magic Carpet Simu Dev"; -const char pstrUsageBicycleSimulationDevice [] PROGMEM = "Bike Simu Dev"; -const char pstrUsageFlightControlStick [] PROGMEM = "Flight Ctrl Stick"; -const char pstrUsageFlightStick [] PROGMEM = "Flight Stick"; -const char pstrUsageCyclicControl [] PROGMEM = "Cyclic Ctrl"; -const char pstrUsageCyclicTrim [] PROGMEM = "Cyclic Trim"; -const char pstrUsageFlightYoke [] PROGMEM = "Flight Yoke"; -const char pstrUsageTrackControl [] PROGMEM = "Track Ctrl"; -const char pstrUsageAileron [] PROGMEM = "Aileron"; -const char pstrUsageAileronTrim [] PROGMEM = "Aileron Trim"; -const char pstrUsageAntiTorqueControl [] PROGMEM = "Anti-Torque Ctrl"; -const char pstrUsageAutopilotEnable [] PROGMEM = "Autopilot Enable"; -const char pstrUsageChaffRelease [] PROGMEM = "Chaff Release"; -const char pstrUsageCollectiveControl [] PROGMEM = "Collective Ctrl"; -const char pstrUsageDiveBrake [] PROGMEM = "Dive Brake"; -const char pstrUsageElectronicCountermeasures [] PROGMEM = "El Countermeasures"; -const char pstrUsageElevator [] PROGMEM = "Elevator"; -const char pstrUsageElevatorTrim [] PROGMEM = "Elevator Trim"; -const char pstrUsageRudder [] PROGMEM = "Rudder"; -const char pstrUsageThrottle [] PROGMEM = "Throttle"; -const char pstrUsageFlightCommunications [] PROGMEM = "Flight Comm"; -const char pstrUsageFlareRelease [] PROGMEM = "Flare Release"; -const char pstrUsageLandingGear [] PROGMEM = "Landing Gear"; -const char pstrUsageToeBrake [] PROGMEM = "Toe Brake"; -const char pstrUsageTrigger [] PROGMEM = "Trigger"; -const char pstrUsageWeaponsArm [] PROGMEM = "Weapons Arm"; -const char pstrUsageWeaponsSelect [] PROGMEM = "Weapons Sel"; -const char pstrUsageWingFlaps [] PROGMEM = "Wing Flaps"; -const char pstrUsageAccelerator [] PROGMEM = "Accel"; -const char pstrUsageBrake [] PROGMEM = "Brake"; -const char pstrUsageClutch [] PROGMEM = "Clutch"; -const char pstrUsageShifter [] PROGMEM = "Shifter"; -const char pstrUsageSteering [] PROGMEM = "Steering"; -const char pstrUsageTurretDirection [] PROGMEM = "Turret Dir"; -const char pstrUsageBarrelElevation [] PROGMEM = "Barrel Ele"; -const char pstrUsageDivePlane [] PROGMEM = "Dive Plane"; -const char pstrUsageBallast [] PROGMEM = "Ballast"; -const char pstrUsageBicycleCrank [] PROGMEM = "Bicycle Crank"; -const char pstrUsageHandleBars [] PROGMEM = "Handle Bars"; -const char pstrUsageFrontBrake [] PROGMEM = "Front Brake"; -const char pstrUsageRearBrake [] PROGMEM = "Rear Brake"; - -// VR Controls Page -const char pstrUsageBelt [] PROGMEM = "Belt"; -const char pstrUsageBodySuit [] PROGMEM = "Body Suit"; -const char pstrUsageFlexor [] PROGMEM = "Flexor"; -const char pstrUsageGlove [] PROGMEM = "Glove"; -const char pstrUsageHeadTracker [] PROGMEM = "Head Track"; -const char pstrUsageHeadMountedDisplay [] PROGMEM = "Head Disp"; -const char pstrUsageHandTracker [] PROGMEM = "Hand Track"; -const char pstrUsageOculometer [] PROGMEM = "Oculometer"; -const char pstrUsageVest [] PROGMEM = "Vest"; -const char pstrUsageAnimatronicDevice [] PROGMEM = "Animat Dev"; -const char pstrUsageStereoEnable [] PROGMEM = "Stereo Enbl"; -const char pstrUsageDisplayEnable [] PROGMEM = "Display Enbl"; - -// Sport Controls Page -const char pstrUsageBaseballBat [] PROGMEM = "Baseball Bat"; -const char pstrUsageGolfClub [] PROGMEM = "Golf Club"; -const char pstrUsageRowingMachine [] PROGMEM = "Rowing Mach"; -const char pstrUsageTreadmill [] PROGMEM = "Treadmill"; -const char pstrUsageOar [] PROGMEM = "Oar"; -const char pstrUsageSlope [] PROGMEM = "Slope"; -const char pstrUsageRate [] PROGMEM = "Rate"; -const char pstrUsageStickSpeed [] PROGMEM = "Stick Speed"; -const char pstrUsageStickFaceAngle [] PROGMEM = "Stick Face Ang"; -const char pstrUsageStickHeelToe [] PROGMEM = "Stick Heel/Toe"; -const char pstrUsageStickFollowThough [] PROGMEM = "Stick Flw Thru"; -const char pstrUsageStickTempo [] PROGMEM = "Stick Tempo"; -const char pstrUsageStickType [] PROGMEM = "Stick Type"; -const char pstrUsageStickHeight [] PROGMEM = "Stick Hght"; -const char pstrUsagePutter [] PROGMEM = "Putter"; -const char pstrUsage1Iron [] PROGMEM = "1 Iron"; -const char pstrUsage2Iron [] PROGMEM = "2 Iron"; -const char pstrUsage3Iron [] PROGMEM = "3 Iron"; -const char pstrUsage4Iron [] PROGMEM = "4 Iron"; -const char pstrUsage5Iron [] PROGMEM = "5 Iron"; -const char pstrUsage6Iron [] PROGMEM = "6 Iron"; -const char pstrUsage7Iron [] PROGMEM = "7 Iron"; -const char pstrUsage8Iron [] PROGMEM = "8 Iron"; -const char pstrUsage9Iron [] PROGMEM = "9 Iron"; -const char pstrUsage10Iron [] PROGMEM = "10 Iron"; -const char pstrUsage11Iron [] PROGMEM = "11 Iron"; -const char pstrUsageSandWedge [] PROGMEM = "Sand Wedge"; -const char pstrUsageLoftWedge [] PROGMEM = "Loft Wedge"; -const char pstrUsagePowerWedge [] PROGMEM = "Pwr Wedge"; -const char pstrUsage1Wood [] PROGMEM = "1 Wood"; -const char pstrUsage3Wood [] PROGMEM = "3 Wood"; -const char pstrUsage5Wood [] PROGMEM = "5 Wood"; -const char pstrUsage7Wood [] PROGMEM = "7 Wood"; -const char pstrUsage9Wood [] PROGMEM = "9 Wood"; - -// Game Controls Page -const char pstrUsage3DGameController [] PROGMEM = "3D Game Ctrl"; -const char pstrUsagePinballDevice [] PROGMEM = "Pinball Dev"; -const char pstrUsageGunDevice [] PROGMEM = "Gun Dev"; -const char pstrUsagePointOfView [] PROGMEM = "POV"; -const char pstrUsageTurnRightLeft [] PROGMEM = "Turn Right Left"; -const char pstrUsagePitchForwardBackward [] PROGMEM = "Pitch Fwd/Back"; -const char pstrUsageRollRightLeft [] PROGMEM = "Roll Right/Left"; -const char pstrUsageMoveRightLeft [] PROGMEM = "Move Right/Left"; -const char pstrUsageMoveForwardBackward [] PROGMEM = "Move Fwd/Back"; -const char pstrUsageMoveUpDown [] PROGMEM = "Move Up/Down"; -const char pstrUsageLeanRightLeft [] PROGMEM = "Lean Right/Left"; -const char pstrUsageLeanForwardBackward [] PROGMEM = "Lean Fwd/Back"; -const char pstrUsageHeightOfPOV [] PROGMEM = "Height of POV"; -const char pstrUsageFlipper [] PROGMEM = "Flipper"; -const char pstrUsageSecondaryFlipper [] PROGMEM = "Second Flipper"; -const char pstrUsageBump [] PROGMEM = "Bump"; -const char pstrUsageNewGame [] PROGMEM = "New Game"; -const char pstrUsageShootBall [] PROGMEM = "Shoot Ball"; -const char pstrUsagePlayer [] PROGMEM = "Player"; -const char pstrUsageGunBolt [] PROGMEM = "Gun Bolt"; -const char pstrUsageGunClip [] PROGMEM = "Gun Clip"; -const char pstrUsageGunSelector [] PROGMEM = "Gun Sel"; -const char pstrUsageGunSingleShot [] PROGMEM = "Gun Sngl Shot"; -const char pstrUsageGunBurst [] PROGMEM = "Gun Burst"; -const char pstrUsageGunAutomatic [] PROGMEM = "Gun Auto"; -const char pstrUsageGunSafety [] PROGMEM = "Gun Safety"; -const char pstrUsageGamepadFireJump [] PROGMEM = "Gamepad Fire/Jump"; -const char pstrUsageGamepadTrigger [] PROGMEM = "Gamepad Trig"; - -// Generic Device Controls Page -const char pstrUsageBatteryStrength [] PROGMEM = "Bat Strength"; -const char pstrUsageWirelessChannel [] PROGMEM = "Wireless Ch"; -const char pstrUsageWirelessID [] PROGMEM = "Wireless ID"; -const char pstrUsageDiscoverWirelessControl [] PROGMEM = "Discover Wireless Ctrl"; -const char pstrUsageSecurityCodeCharEntered [] PROGMEM = "Sec Code Char Entrd"; -const char pstrUsageSecurityCodeCharErased [] PROGMEM = "Sec Code Char Erased"; -const char pstrUsageSecurityCodeCleared [] PROGMEM = "Sec Code Cleared"; - -// LED Page -const char pstrUsageNumLock [] PROGMEM = "Num Lock"; -const char pstrUsageCapsLock [] PROGMEM = "Caps Lock"; -const char pstrUsageScrollLock [] PROGMEM = "Scroll Lock"; -const char pstrUsageCompose [] PROGMEM = "Compose"; -const char pstrUsageKana [] PROGMEM = "Kana"; -const char pstrUsagePower [] PROGMEM = "Pwr"; -const char pstrUsageShift [] PROGMEM = "Shift"; -const char pstrUsageDoNotDisturb [] PROGMEM = "DND"; -const char pstrUsageMute [] PROGMEM = "Mute"; -const char pstrUsageToneEnable [] PROGMEM = "Tone Enbl"; -const char pstrUsageHighCutFilter [] PROGMEM = "High Cut Fltr"; -const char pstrUsageLowCutFilter [] PROGMEM = "Low Cut Fltr"; -const char pstrUsageEqualizerEnable [] PROGMEM = "Eq Enbl"; -const char pstrUsageSoundFieldOn [] PROGMEM = "Sound Field On"; -const char pstrUsageSurroundOn [] PROGMEM = "Surround On"; -const char pstrUsageRepeat [] PROGMEM = "Repeat"; -const char pstrUsageStereo [] PROGMEM = "Stereo"; -const char pstrUsageSamplingRateDetect [] PROGMEM = "Smpl Rate Detect"; -const char pstrUsageSpinning [] PROGMEM = "Spinning"; -const char pstrUsageCAV [] PROGMEM = "CAV"; -const char pstrUsageCLV [] PROGMEM = "CLV"; -const char pstrUsageRecordingFormatDetect [] PROGMEM = "Rec Format Detect"; -const char pstrUsageOffHook [] PROGMEM = "Off Hook"; -const char pstrUsageRing [] PROGMEM = "Ring"; -const char pstrUsageMessageWaiting [] PROGMEM = "Msg Wait"; -const char pstrUsageDataMode [] PROGMEM = "Data Mode"; -const char pstrUsageBatteryOperation [] PROGMEM = "Bat Op"; -const char pstrUsageBatteryOK [] PROGMEM = "Bat OK"; -const char pstrUsageBatteryLow [] PROGMEM = "Bat Low"; -const char pstrUsageSpeaker [] PROGMEM = "Speaker"; -const char pstrUsageHeadSet [] PROGMEM = "Head Set"; -const char pstrUsageHold [] PROGMEM = "Hold"; -const char pstrUsageMicrophone [] PROGMEM = "Mic"; -const char pstrUsageCoverage [] PROGMEM = "Coverage"; -const char pstrUsageNightMode [] PROGMEM = "Night Mode"; -const char pstrUsageSendCalls [] PROGMEM = "Send Calls"; -const char pstrUsageCallPickup [] PROGMEM = "Call Pickup"; -const char pstrUsageConference [] PROGMEM = "Conf"; -const char pstrUsageStandBy [] PROGMEM = "Stand-by"; -const char pstrUsageCameraOn [] PROGMEM = "Cam On"; -const char pstrUsageCameraOff [] PROGMEM = "Cam Off"; -const char pstrUsageOnLine [] PROGMEM = "On-Line"; -const char pstrUsageOffLine [] PROGMEM = "Off-Line"; -const char pstrUsageBusy [] PROGMEM = "Busy"; -const char pstrUsageReady [] PROGMEM = "Ready"; -const char pstrUsagePaperOut [] PROGMEM = "Paper Out"; -const char pstrUsagePaperJam [] PROGMEM = "Paper Jam"; -const char pstrUsageRemote [] PROGMEM = "Remote"; -const char pstrUsageForward [] PROGMEM = "Fwd"; -const char pstrUsageReverse [] PROGMEM = "Rev"; -const char pstrUsageStop [] PROGMEM = "Stop"; -const char pstrUsageRewind [] PROGMEM = "Rewind"; -const char pstrUsageFastForward [] PROGMEM = "Fast Fwd"; -const char pstrUsagePlay [] PROGMEM = "Play"; -const char pstrUsagePause [] PROGMEM = "Pause"; -const char pstrUsageRecord [] PROGMEM = "Rec"; -const char pstrUsageError [] PROGMEM = "Error"; -const char pstrUsageSelectedIndicator [] PROGMEM = "Usage Sel Ind"; -const char pstrUsageInUseIndicator [] PROGMEM = "Usage In Use Ind"; -const char pstrUsageMultiModeIndicator [] PROGMEM = "Usage Multi Mode Ind"; -const char pstrUsageIndicatorOn [] PROGMEM = "Ind On"; -const char pstrUsageIndicatorFlash [] PROGMEM = "Ind Flash"; -const char pstrUsageIndicatorSlowBlink [] PROGMEM = "Ind Slow Blk"; -const char pstrUsageIndicatorFastBlink [] PROGMEM = "Ind Fast Blk"; -const char pstrUsageIndicatorOff [] PROGMEM = "Ind Off"; -const char pstrUsageFlashOnTime [] PROGMEM = "Flash On Time"; -const char pstrUsageSlowBlinkOnTime [] PROGMEM = "Slow Blk On Time"; -const char pstrUsageSlowBlinkOffTime [] PROGMEM = "Slow Blk Off Time"; -const char pstrUsageFastBlinkOnTime [] PROGMEM = "Fast Blk On Time"; -const char pstrUsageFastBlinkOffTime [] PROGMEM = "Fast Blk Off Time"; -const char pstrUsageIndicatorColor [] PROGMEM = "Usage Ind Color"; -const char pstrUsageIndicatorRed [] PROGMEM = "Ind Red"; -const char pstrUsageIndicatorGreen [] PROGMEM = "Ind Green"; -const char pstrUsageIndicatorAmber [] PROGMEM = "Ind Amber"; -const char pstrUsageGenericIndicator [] PROGMEM = "Gen Ind"; -const char pstrUsageSystemSuspend [] PROGMEM = "Sys Suspend"; -const char pstrUsageExternalPowerConnected [] PROGMEM = "Ext Pwr Conn"; - -// Telephony Usage Page -const char pstrUsagePhone [] PROGMEM = "Phone"; -const char pstrUsageAnsweringMachine [] PROGMEM = "Answ Mach"; -const char pstrUsageMessageControls [] PROGMEM = "Msg Ctrls"; -const char pstrUsageHandset [] PROGMEM = "Handset"; -const char pstrUsageHeadset [] PROGMEM = "Headset"; -const char pstrUsageTelephonyKeyPad [] PROGMEM = "Tel Key Pad"; -const char pstrUsageProgrammableButton [] PROGMEM = "Prog Button"; -const char pstrUsageHookSwitch [] PROGMEM = "Hook Sw"; -const char pstrUsageFlash [] PROGMEM = "Flash"; -const char pstrUsageFeature [] PROGMEM = "Feature"; -//const char pstrUsageHold [] PROGMEM = "Hold"; -const char pstrUsageRedial [] PROGMEM = "Redial"; -const char pstrUsageTransfer [] PROGMEM = "Transfer"; -const char pstrUsageDrop [] PROGMEM = "Drop"; -const char pstrUsagePark [] PROGMEM = "Park"; -const char pstrUsageForwardCalls [] PROGMEM = "Fwd Calls"; -const char pstrUsageAlternateFunction [] PROGMEM = "Alt Func"; -const char pstrUsageLine [] PROGMEM = "Line"; -const char pstrUsageSpeakerPhone [] PROGMEM = "Spk Phone"; -//const char pstrUsageConference [] PROGMEM = "Conference"; -const char pstrUsageRingEnable [] PROGMEM = "Ring Enbl"; -const char pstrUsageRingSelect [] PROGMEM = "Ring Sel"; -const char pstrUsagePhoneMute [] PROGMEM = "Phone Mute"; -const char pstrUsageCallerID [] PROGMEM = "Caller ID"; -const char pstrUsageSend [] PROGMEM = "Send"; -const char pstrUsageSpeedDial [] PROGMEM = "Speed Dial"; -const char pstrUsageStoreNumber [] PROGMEM = "Store Num"; -const char pstrUsageRecallNumber [] PROGMEM = "Recall Num"; -const char pstrUsagePhoneDirectory [] PROGMEM = "Phone Dir"; -const char pstrUsageVoiceMail [] PROGMEM = "Voice Mail"; -const char pstrUsageScreenCalls [] PROGMEM = "Screen Calls"; -//const char pstrUsageDoNotDisturb [] PROGMEM = "Do Not Disturb"; -const char pstrUsageMessage [] PROGMEM = "Msg"; -const char pstrUsageAnswerOnOff [] PROGMEM = "Answer On/Off"; -const char pstrUsageInsideDialTone [] PROGMEM = "Inside Dial Tone"; -const char pstrUsageOutsideDialTone [] PROGMEM = "Outside Dial Tone"; -const char pstrUsageInsideRingTone [] PROGMEM = "Inside Ring Tone"; -const char pstrUsageOutsideRingTone [] PROGMEM = "Outside Ring Tone"; -const char pstrUsagePriorityRingTone [] PROGMEM = "Prior Ring Tone"; -const char pstrUsageInsideRingback [] PROGMEM = "Inside Ringback"; -const char pstrUsagePriorityRingback [] PROGMEM = "Priority Ringback"; -const char pstrUsageLineBusyTone [] PROGMEM = "Ln Busy Tone"; -const char pstrUsageReorderTone [] PROGMEM = "Reorder Tone"; -const char pstrUsageCallWaitingTone [] PROGMEM = "Call Wait Tone"; -const char pstrUsageConfirmationTone1 [] PROGMEM = "Cnfrm Tone1"; -const char pstrUsageConfirmationTone2 [] PROGMEM = "Cnfrm Tone2"; -const char pstrUsageTonesOff [] PROGMEM = "Tones Off"; -const char pstrUsageOutsideRingback [] PROGMEM = "Outside Ringback"; -const char pstrUsageRinger [] PROGMEM = "Ringer"; -const char pstrUsagePhoneKey0 [] PROGMEM = "0"; -const char pstrUsagePhoneKey1 [] PROGMEM = "1"; -const char pstrUsagePhoneKey2 [] PROGMEM = "2"; -const char pstrUsagePhoneKey3 [] PROGMEM = "3"; -const char pstrUsagePhoneKey4 [] PROGMEM = "4"; -const char pstrUsagePhoneKey5 [] PROGMEM = "5"; -const char pstrUsagePhoneKey6 [] PROGMEM = "6"; -const char pstrUsagePhoneKey7 [] PROGMEM = "7"; -const char pstrUsagePhoneKey8 [] PROGMEM = "8"; -const char pstrUsagePhoneKey9 [] PROGMEM = "9"; -const char pstrUsagePhoneKeyStar [] PROGMEM = "*"; -const char pstrUsagePhoneKeyPound [] PROGMEM = "#"; -const char pstrUsagePhoneKeyA [] PROGMEM = "A"; -const char pstrUsagePhoneKeyB [] PROGMEM = "B"; -const char pstrUsagePhoneKeyC [] PROGMEM = "C"; -const char pstrUsagePhoneKeyD [] PROGMEM = "D"; - -// Consumer Usage Page -const char pstrUsageConsumerControl [] PROGMEM = "Consumer Ctrl"; -const char pstrUsageNumericKeyPad [] PROGMEM = "Num Key Pad"; -//const char pstrUsageProgrammableButton [] PROGMEM = "Prog Btn"; -//const char pstrUsageMicrophone [] PROGMEM = "Mic"; -const char pstrUsageHeadphone [] PROGMEM = "Headphone"; -const char pstrUsageGraphicEqualizer [] PROGMEM = "Graph Eq"; -const char pstrUsagePlus10 [] PROGMEM = "+10"; -const char pstrUsagePlus100 [] PROGMEM = "+100"; -const char pstrUsageAMPM [] PROGMEM = "AM/PM"; -//const char pstrUsagePower [] PROGMEM = "Pwr"; -const char pstrUsageReset [] PROGMEM = "Reset"; -const char pstrUsageSleep [] PROGMEM = "Sleep"; -const char pstrUsageSleepAfter [] PROGMEM = "Sleep After"; -const char pstrUsageSleepMode [] PROGMEM = "Sleep Mode"; -const char pstrUsageIllumination [] PROGMEM = "Illumin"; -const char pstrUsageFunctionButtons [] PROGMEM = "Func Btns"; -const char pstrUsageMenu [] PROGMEM = "Menu"; -const char pstrUsageMenuPick [] PROGMEM = "Menu Pick"; -const char pstrUsageMenuUp [] PROGMEM = "Menu Up"; -const char pstrUsageMenuDown [] PROGMEM = "Menu Down"; -const char pstrUsageMenuLeft [] PROGMEM = "Menu Left"; -const char pstrUsageMenuRight [] PROGMEM = "Menu Right"; -const char pstrUsageMenuEscape [] PROGMEM = "Menu Esc"; -const char pstrUsageMenuValueIncrease [] PROGMEM = "Menu Val Inc"; -const char pstrUsageMenuValueDecrease [] PROGMEM = "Menu Val Dec"; -const char pstrUsageDataOnScreen [] PROGMEM = "Data On Scr"; -const char pstrUsageClosedCaption [] PROGMEM = "Closed Cptn"; -const char pstrUsageClosedCaptionSelect [] PROGMEM = "Closed Cptn Sel"; -const char pstrUsageVCRTV [] PROGMEM = "VCR/TV"; -const char pstrUsageBroadcastMode [] PROGMEM = "Brdcast Mode"; -const char pstrUsageSnapshot [] PROGMEM = "Snapshot"; -const char pstrUsageStill [] PROGMEM = "Still"; -const char pstrUsageSelection [] PROGMEM = "Sel"; -const char pstrUsageAssignSelection [] PROGMEM = "Assign Sel"; -const char pstrUsageModeStep [] PROGMEM = "Mode Step"; -const char pstrUsageRecallLast [] PROGMEM = "Recall Last"; -const char pstrUsageEnterChannel [] PROGMEM = "Entr Channel"; -const char pstrUsageOrderMovie [] PROGMEM = "Ord Movie"; -const char pstrUsageChannel [] PROGMEM = "Channel"; -const char pstrUsageMediaSelection [] PROGMEM = "Med Sel"; -const char pstrUsageMediaSelectComputer [] PROGMEM = "Med Sel Comp"; -const char pstrUsageMediaSelectTV [] PROGMEM = "Med Sel TV"; -const char pstrUsageMediaSelectWWW [] PROGMEM = "Med Sel WWW"; -const char pstrUsageMediaSelectDVD [] PROGMEM = "Med Sel DVD"; -const char pstrUsageMediaSelectTelephone [] PROGMEM = "Med Sel Tel"; -const char pstrUsageMediaSelectProgramGuide [] PROGMEM = "Med Sel PG"; -const char pstrUsageMediaSelectVideoPhone [] PROGMEM = "Med Sel Vid"; -const char pstrUsageMediaSelectGames [] PROGMEM = "Med Sel Games"; -const char pstrUsageMediaSelectMessages [] PROGMEM = "Med Sel Msg"; -const char pstrUsageMediaSelectCD [] PROGMEM = "Med Sel CD"; -const char pstrUsageMediaSelectVCR [] PROGMEM = "Med Sel VCR"; -const char pstrUsageMediaSelectTuner [] PROGMEM = "Med Sel Tuner"; -const char pstrUsageQuit [] PROGMEM = "Quit"; -const char pstrUsageHelp [] PROGMEM = "Help"; -const char pstrUsageMediaSelectTape [] PROGMEM = "Med Sel Tape"; -const char pstrUsageMediaSelectCable [] PROGMEM = "Med Sel Cbl"; -const char pstrUsageMediaSelectSatellite [] PROGMEM = "Med Sel Sat"; -const char pstrUsageMediaSelectSecurity [] PROGMEM = "Med Sel Secur"; -const char pstrUsageMediaSelectHome [] PROGMEM = "Med Sel Home"; -const char pstrUsageMediaSelectCall [] PROGMEM = "Med Sel Call"; -const char pstrUsageChannelIncrement [] PROGMEM = "Ch Inc"; -const char pstrUsageChannelDecrement [] PROGMEM = "Ch Dec"; -const char pstrUsageMediaSelectSAP [] PROGMEM = "Med Sel SAP"; -const char pstrUsageVCRPlus [] PROGMEM = "VCR+"; -const char pstrUsageOnce [] PROGMEM = "Once"; -const char pstrUsageDaily [] PROGMEM = "Daily"; -const char pstrUsageWeekly [] PROGMEM = "Weekly"; -const char pstrUsageMonthly [] PROGMEM = "Monthly"; -//const char pstrUsagePlay [] PROGMEM = "Play"; -//const char pstrUsagePause [] PROGMEM = "Pause"; -//const char pstrUsageRecord [] PROGMEM = "Rec"; -//const char pstrUsageFastForward [] PROGMEM = "FF"; -//const char pstrUsageRewind [] PROGMEM = "Rewind"; -const char pstrUsageScanNextTrack [] PROGMEM = "Next Track"; -const char pstrUsageScanPreviousTrack [] PROGMEM = "Prev Track"; -//const char pstrUsageStop [] PROGMEM = "Stop"; -const char pstrUsageEject [] PROGMEM = "Eject"; -const char pstrUsageRandomPlay [] PROGMEM = "Random"; -const char pstrUsageSelectDisk [] PROGMEM = "Sel Disk"; -const char pstrUsageEnterDisk [] PROGMEM = "Ent Disk"; -//const char pstrUsageRepeat [] PROGMEM = "Repeat"; -const char pstrUsageTracking [] PROGMEM = "Tracking"; -const char pstrUsageTrackNormal [] PROGMEM = "Trk Norm"; -const char pstrUsageSlowTracking [] PROGMEM = "Slow Trk"; -const char pstrUsageFrameForward [] PROGMEM = "Frm Fwd"; -const char pstrUsageFrameBackwards [] PROGMEM = "Frm Back"; -const char pstrUsageMark [] PROGMEM = "Mark"; -const char pstrUsageClearMark [] PROGMEM = "Clr Mark"; -const char pstrUsageRepeatFromMark [] PROGMEM = "Rpt Mark"; -const char pstrUsageReturnToMark [] PROGMEM = "Ret to Mark"; -const char pstrUsageSearchMarkForward [] PROGMEM = "Search Mark Fwd"; -const char pstrUsageSearchMarkBackwards [] PROGMEM = "Search Mark Back"; -const char pstrUsageCounterReset [] PROGMEM = "Counter Reset"; -const char pstrUsageShowCounter [] PROGMEM = "Show Counter"; -const char pstrUsageTrackingIncrement [] PROGMEM = "Track Inc"; -const char pstrUsageTrackingDecrement [] PROGMEM = "Track Dec"; -const char pstrUsageStopEject [] PROGMEM = "Stop/Eject"; -const char pstrUsagePlayPause [] PROGMEM = "Play/Pause"; -const char pstrUsagePlaySkip [] PROGMEM = "Play/Skip"; -const char pstrUsageVolume [] PROGMEM = "Vol"; -const char pstrUsageBalance [] PROGMEM = "Balance"; -//const char pstrUsageMute [] PROGMEM = "Mute"; -const char pstrUsageBass [] PROGMEM = "Bass"; -const char pstrUsageTreble [] PROGMEM = "Treble"; -const char pstrUsageBassBoost [] PROGMEM = "Bass Boost"; -const char pstrUsageSurroundMode [] PROGMEM = "Surround"; -const char pstrUsageLoudness [] PROGMEM = "Loud"; -const char pstrUsageMPX [] PROGMEM = "MPX"; -const char pstrUsageVolumeIncrement [] PROGMEM = "Vol Inc"; -const char pstrUsageVolumeDecrement [] PROGMEM = "Vol Dec"; -const char pstrUsageSpeedSelect [] PROGMEM = "Speed"; -const char pstrUsagePlaybackSpeed [] PROGMEM = "Play Speed"; -const char pstrUsageStandardPlay [] PROGMEM = "Std Play"; -const char pstrUsageLongPlay [] PROGMEM = "Long Play"; -const char pstrUsageExtendedPlay [] PROGMEM = "Ext Play"; -const char pstrUsageSlow [] PROGMEM = "Slow"; -const char pstrUsageFanEnable [] PROGMEM = "Fan Enbl"; -const char pstrUsageFanSpeed [] PROGMEM = "Fan Speed"; -const char pstrUsageLightEnable [] PROGMEM = "Light Enbl"; -const char pstrUsageLightIlluminationLevel [] PROGMEM = "Light Illum Lev"; -const char pstrUsageClimateControlEnable [] PROGMEM = "Climate Enbl"; -const char pstrUsageRoomTemperature [] PROGMEM = "Room Temp"; -const char pstrUsageSecurityEnable [] PROGMEM = "Secur Enbl"; -const char pstrUsageFireAlarm [] PROGMEM = "Fire Alm"; -const char pstrUsagePoliceAlarm [] PROGMEM = "Police Alm"; -const char pstrUsageProximity [] PROGMEM = "Prox"; -const char pstrUsageMotion [] PROGMEM = "Motion"; -const char pstrUsageDuresAlarm [] PROGMEM = "Dures Alm"; -const char pstrUsageHoldupAlarm [] PROGMEM = "Holdup Alm"; -const char pstrUsageMedicalAlarm [] PROGMEM = "Med Alm"; -const char pstrUsageBalanceRight [] PROGMEM = "Balance Right"; -const char pstrUsageBalanceLeft [] PROGMEM = "Balance Left"; -const char pstrUsageBassIncrement [] PROGMEM = "Bass Inc"; -const char pstrUsageBassDecrement [] PROGMEM = "Bass Dec"; -const char pstrUsageTrebleIncrement [] PROGMEM = "Treble Inc"; -const char pstrUsageTrebleDecrement [] PROGMEM = "Treble Dec"; -const char pstrUsageSpeakerSystem [] PROGMEM = "Spk Sys"; -const char pstrUsageChannelLeft [] PROGMEM = "Ch Left"; -const char pstrUsageChannelRight [] PROGMEM = "Ch Right"; -const char pstrUsageChannelCenter [] PROGMEM = "Ch Center"; -const char pstrUsageChannelFront [] PROGMEM = "Ch Front"; -const char pstrUsageChannelCenterFront [] PROGMEM = "Ch Cntr Front"; -const char pstrUsageChannelSide [] PROGMEM = "Ch Side"; -const char pstrUsageChannelSurround [] PROGMEM = "Ch Surround"; -const char pstrUsageChannelLowFreqEnhancement [] PROGMEM = "Ch Low Freq Enh"; -const char pstrUsageChannelTop [] PROGMEM = "Ch Top"; -const char pstrUsageChannelUnknown [] PROGMEM = "Ch Unk"; -const char pstrUsageSubChannel [] PROGMEM = "Sub-ch"; -const char pstrUsageSubChannelIncrement [] PROGMEM = "Sub-ch Inc"; -const char pstrUsageSubChannelDecrement [] PROGMEM = "Sub-ch Dec"; -const char pstrUsageAlternateAudioIncrement [] PROGMEM = "Alt Aud Inc"; -const char pstrUsageAlternateAudioDecrement [] PROGMEM = "Alt Aud Dec"; -const char pstrUsageApplicationLaunchButtons [] PROGMEM = "App Launch Btns"; -const char pstrUsageALLaunchButtonConfigTool [] PROGMEM = "AL Launch Conf Tl"; -const char pstrUsageALProgrammableButton [] PROGMEM = "AL Pgm Btn"; -const char pstrUsageALConsumerControlConfig [] PROGMEM = "AL Cons Ctrl Cfg"; -const char pstrUsageALWordProcessor [] PROGMEM = "AL Word Proc"; -const char pstrUsageALTextEditor [] PROGMEM = "AL Txt Edtr"; -const char pstrUsageALSpreadsheet [] PROGMEM = "AL Sprdsheet"; -const char pstrUsageALGraphicsEditor [] PROGMEM = "AL Graph Edtr"; -const char pstrUsageALPresentationApp [] PROGMEM = "AL Present App"; -const char pstrUsageALDatabaseApp [] PROGMEM = "AL DB App"; -const char pstrUsageALEmailReader [] PROGMEM = "AL E-mail Rdr"; -const char pstrUsageALNewsreader [] PROGMEM = "AL Newsrdr"; -const char pstrUsageALVoicemail [] PROGMEM = "AL Voicemail"; -const char pstrUsageALContactsAddressBook [] PROGMEM = "AL Addr Book"; -const char pstrUsageALCalendarSchedule [] PROGMEM = "AL Clndr/Schdlr"; -const char pstrUsageALTaskProjectManager [] PROGMEM = "AL Task/Prj Mgr"; -const char pstrUsageALLogJournalTimecard [] PROGMEM = "AL Log/Jrnl/Tmcrd"; -const char pstrUsageALCheckbookFinance [] PROGMEM = "AL Chckbook/Fin"; -const char pstrUsageALCalculator [] PROGMEM = "AL Calc"; -const char pstrUsageALAVCapturePlayback [] PROGMEM = "AL A/V Capt/Play"; -const char pstrUsageALLocalMachineBrowser [] PROGMEM = "AL Loc Mach Brow"; -const char pstrUsageALLANWANBrow [] PROGMEM = "AL LAN/WAN Brow"; -const char pstrUsageALInternetBrowser [] PROGMEM = "AL I-net Brow"; -const char pstrUsageALRemoteNetISPConnect [] PROGMEM = "AL Rem Net Con"; -const char pstrUsageALNetworkConference [] PROGMEM = "AL Net Conf"; -const char pstrUsageALNetworkChat [] PROGMEM = "AL Net Chat"; -const char pstrUsageALTelephonyDialer [] PROGMEM = "AL Tel/Dial"; -const char pstrUsageALLogon [] PROGMEM = "AL Logon"; -const char pstrUsageALLogoff [] PROGMEM = "AL Logoff"; -const char pstrUsageALLogonLogoff [] PROGMEM = "AL Logon/Logoff"; -const char pstrUsageALTermLockScrSav [] PROGMEM = "AL Term Lock/Scr Sav"; -const char pstrUsageALControlPannel [] PROGMEM = "AL Ctrl Pan"; -const char pstrUsageALCommandLineProcessorRun [] PROGMEM = "AL Cmd/Run"; -const char pstrUsageALProcessTaskManager [] PROGMEM = "AL Task Mgr"; -const char pstrUsageALSelectTaskApplication [] PROGMEM = "AL Sel App"; -const char pstrUsageALNextTaskApplication [] PROGMEM = "AL Next App"; -const char pstrUsageALPreviousTaskApplication [] PROGMEM = "AL Prev App"; -const char pstrUsageALPreemptiveHaltTaskApp [] PROGMEM = "AL Prmpt Halt App"; -const char pstrUsageALIntegratedHelpCenter [] PROGMEM = "AL Hlp Cntr"; -const char pstrUsageALDocuments [] PROGMEM = "AL Docs"; -const char pstrUsageALThesaurus [] PROGMEM = "AL Thsrs"; -const char pstrUsageALDictionary [] PROGMEM = "AL Dict"; -const char pstrUsageALDesktop [] PROGMEM = "AL Desktop"; -const char pstrUsageALSpellCheck [] PROGMEM = "AL Spell Chk"; -const char pstrUsageALGrammarCheck [] PROGMEM = "AL Gram Chk"; -const char pstrUsageALWirelessStatus [] PROGMEM = "AL Wireless Sts"; -const char pstrUsageALKeyboardLayout [] PROGMEM = "AL Kbd Layout"; -const char pstrUsageALVirusProtection [] PROGMEM = "AL Vir Protect"; -const char pstrUsageALEncryption [] PROGMEM = "AL Encrypt"; -const char pstrUsageALScreenSaver [] PROGMEM = "AL Scr Sav"; -const char pstrUsageALAlarms [] PROGMEM = "AL Alarms"; -const char pstrUsageALClock [] PROGMEM = "AL Clock"; -const char pstrUsageALFileBrowser [] PROGMEM = "AL File Brow"; -const char pstrUsageALPowerStatus [] PROGMEM = "AL Pwr Sts"; -const char pstrUsageALImageBrowser [] PROGMEM = "AL Img Brow"; -const char pstrUsageALAudioBrowser [] PROGMEM = "AL Aud Brow"; -const char pstrUsageALMovieBrowser [] PROGMEM = "AL Mov Brow"; -const char pstrUsageALDigitalRightsManager [] PROGMEM = "AL Dig Rights Mgr"; -const char pstrUsageALDigitalWallet [] PROGMEM = "AL Dig Wallet"; -const char pstrUsageALInstantMessaging [] PROGMEM = "AL Inst Msg"; -const char pstrUsageALOEMFeaturesBrowser [] PROGMEM = "AL OEM Tips Brow"; -const char pstrUsageALOEMHelp [] PROGMEM = "AL OEM Hlp"; -const char pstrUsageALOnlineCommunity [] PROGMEM = "AL Online Com"; -const char pstrUsageALEntertainmentContentBrow [] PROGMEM = "AL Ent Cont Brow"; -const char pstrUsageALOnlineShoppingBrowser [] PROGMEM = "AL Online Shop Brow"; -const char pstrUsageALSmartCardInfoHelp [] PROGMEM = "AL SmartCard Inf"; -const char pstrUsageALMarketMonitorFinBrowser [] PROGMEM = "AL Market Brow"; -const char pstrUsageALCustomCorpNewsBrowser [] PROGMEM = "AL Cust Corp News Brow"; -const char pstrUsageALOnlineActivityBrowser [] PROGMEM = "AL Online Act Brow"; -const char pstrUsageALResearchSearchBrowser [] PROGMEM = "AL Search Brow"; -const char pstrUsageALAudioPlayer [] PROGMEM = "AL Aud Player"; -const char pstrUsageGenericGUIAppControls [] PROGMEM = "Gen GUI App Ctrl"; -const char pstrUsageACNew [] PROGMEM = "AC New"; -const char pstrUsageACOpen [] PROGMEM = "AC Open"; -const char pstrUsageACClose [] PROGMEM = "AC Close"; -const char pstrUsageACExit [] PROGMEM = "AC Exit"; -const char pstrUsageACMaximize [] PROGMEM = "AC Max"; -const char pstrUsageACMinimize [] PROGMEM = "AC Min"; -const char pstrUsageACSave [] PROGMEM = "AC Save"; -const char pstrUsageACPrint [] PROGMEM = "AC Print"; -const char pstrUsageACProperties [] PROGMEM = "AC Prop"; -const char pstrUsageACUndo [] PROGMEM = "AC Undo"; -const char pstrUsageACCopy [] PROGMEM = "AC Copy"; -const char pstrUsageACCut [] PROGMEM = "AC Cut"; -const char pstrUsageACPaste [] PROGMEM = "AC Paste"; -const char pstrUsageACSelectAll [] PROGMEM = "AC Sel All"; -const char pstrUsageACFind [] PROGMEM = "AC Find"; -const char pstrUsageACFindAndReplace [] PROGMEM = "AC Find/Replace"; -const char pstrUsageACSearch [] PROGMEM = "AC Search"; -const char pstrUsageACGoto [] PROGMEM = "AC Goto"; -const char pstrUsageACHome [] PROGMEM = "AC Home"; -const char pstrUsageACBack [] PROGMEM = "AC Back"; -const char pstrUsageACForward [] PROGMEM = "AC Fwd"; -const char pstrUsageACStop [] PROGMEM = "AC Stop"; -const char pstrUsageACRefresh [] PROGMEM = "AC Refresh"; -const char pstrUsageACPreviousLink [] PROGMEM = "AC Prev Link"; -const char pstrUsageACNextLink [] PROGMEM = "AC Next Link"; -const char pstrUsageACBookmarks [] PROGMEM = "AC Bkmarks"; -const char pstrUsageACHistory [] PROGMEM = "AC Hist"; -const char pstrUsageACSubscriptions [] PROGMEM = "AC Subscr"; -const char pstrUsageACZoomIn [] PROGMEM = "AC Zoom In"; -const char pstrUsageACZoomOut [] PROGMEM = "AC Zoom Out"; -const char pstrUsageACZoom [] PROGMEM = "AC Zoom"; -const char pstrUsageACFullScreenView [] PROGMEM = "AC Full Scr"; -const char pstrUsageACNormalView [] PROGMEM = "AC Norm View"; -const char pstrUsageACViewToggle [] PROGMEM = "AC View Tgl"; -const char pstrUsageACScrollUp [] PROGMEM = "AC Scroll Up"; -const char pstrUsageACScrollDown [] PROGMEM = "AC Scroll Down"; -const char pstrUsageACScroll [] PROGMEM = "AC Scroll"; -const char pstrUsageACPanLeft [] PROGMEM = "AC Pan Left"; -const char pstrUsageACPanRight [] PROGMEM = "AC Pan Right"; -const char pstrUsageACPan [] PROGMEM = "AC Pan"; -const char pstrUsageACNewWindow [] PROGMEM = "AC New Wnd"; -const char pstrUsageACTileHoriz [] PROGMEM = "AC Tile Horiz"; -const char pstrUsageACTileVert [] PROGMEM = "AC Tile Vert"; -const char pstrUsageACFormat [] PROGMEM = "AC Frmt"; -const char pstrUsageACEdit [] PROGMEM = "AC Edit"; -const char pstrUsageACBold [] PROGMEM = "AC Bold"; -const char pstrUsageACItalics [] PROGMEM = "AC Ital"; -const char pstrUsageACUnderline [] PROGMEM = "AC Under"; -const char pstrUsageACStrikethrough [] PROGMEM = "AC Strike"; -const char pstrUsageACSubscript [] PROGMEM = "AC Sub"; -const char pstrUsageACSuperscript [] PROGMEM = "AC Super"; -const char pstrUsageACAllCaps [] PROGMEM = "AC All Caps"; -const char pstrUsageACRotate [] PROGMEM = "AC Rotate"; -const char pstrUsageACResize [] PROGMEM = "AC Resize"; -const char pstrUsageACFlipHorizontal [] PROGMEM = "AC Flp H"; -const char pstrUsageACFlipVertical [] PROGMEM = "AC Flp V"; -const char pstrUsageACMirrorHorizontal [] PROGMEM = "AC Mir H"; -const char pstrUsageACMirrorVertical [] PROGMEM = "AC Mir V"; -const char pstrUsageACFontSelect [] PROGMEM = "AC Fnt Sel"; -const char pstrUsageACFontColor [] PROGMEM = "AC Fnt Clr"; -const char pstrUsageACFontSize [] PROGMEM = "AC Fnt Size"; -const char pstrUsageACJustifyLeft [] PROGMEM = "AC Just Left"; -const char pstrUsageACJustifyCenterH [] PROGMEM = "AC Just Cent H"; -const char pstrUsageACJustifyRight [] PROGMEM = "AC Just Right"; -const char pstrUsageACJustifyBlockH [] PROGMEM = "AC Just Block H"; -const char pstrUsageACJustifyTop [] PROGMEM = "AC Just Top"; -const char pstrUsageACJustifyCenterV [] PROGMEM = "AC Just Cent V"; -const char pstrUsageACJustifyBottom [] PROGMEM = "AC Just Bot"; -const char pstrUsageACJustifyBlockV [] PROGMEM = "AC Just Block V"; -const char pstrUsageACIndentDecrease [] PROGMEM = "AC Indent Dec"; -const char pstrUsageACIndentIncrease [] PROGMEM = "AC Indent Inc"; -const char pstrUsageACNumberedList [] PROGMEM = "AC Num List"; -const char pstrUsageACRestartNumbering [] PROGMEM = "AC Res Num"; -const char pstrUsageACBulletedList [] PROGMEM = "AC Blt List"; -const char pstrUsageACPromote [] PROGMEM = "AC Promote"; -const char pstrUsageACDemote [] PROGMEM = "AC Demote"; -const char pstrUsageACYes [] PROGMEM = "AC Yes"; -const char pstrUsageACNo [] PROGMEM = "AC No"; -const char pstrUsageACCancel [] PROGMEM = "AC Cancel"; -const char pstrUsageACCatalog [] PROGMEM = "AC Ctlg"; -const char pstrUsageACBuyChkout [] PROGMEM = "AC Buy"; -const char pstrUsageACAddToCart [] PROGMEM = "AC Add2Cart"; -const char pstrUsageACExpand [] PROGMEM = "AC Xpnd"; -const char pstrUsageACExpandAll [] PROGMEM = "AC Xpand All"; -const char pstrUsageACCollapse [] PROGMEM = "AC Collapse"; -const char pstrUsageACCollapseAll [] PROGMEM = "AC Collapse All"; -const char pstrUsageACPrintPreview [] PROGMEM = "AC Prn Prevw"; -const char pstrUsageACPasteSpecial [] PROGMEM = "AC Paste Spec"; -const char pstrUsageACInsertMode [] PROGMEM = "AC Ins Mode"; -const char pstrUsageACDelete [] PROGMEM = "AC Del"; -const char pstrUsageACLock [] PROGMEM = "AC Lock"; -const char pstrUsageACUnlock [] PROGMEM = "AC Unlock"; -const char pstrUsageACProtect [] PROGMEM = "AC Prot"; -const char pstrUsageACUnprotect [] PROGMEM = "AC Unprot"; -const char pstrUsageACAttachComment [] PROGMEM = "AC Attach Cmnt"; -const char pstrUsageACDeleteComment [] PROGMEM = "AC Del Cmnt"; -const char pstrUsageACViewComment [] PROGMEM = "AC View Cmnt"; -const char pstrUsageACSelectWord [] PROGMEM = "AC Sel Word"; -const char pstrUsageACSelectSentence [] PROGMEM = "AC Sel Sntc"; -const char pstrUsageACSelectParagraph [] PROGMEM = "AC Sel Para"; -const char pstrUsageACSelectColumn [] PROGMEM = "AC Sel Col"; -const char pstrUsageACSelectRow [] PROGMEM = "AC Sel Row"; -const char pstrUsageACSelectTable [] PROGMEM = "AC Sel Tbl"; -const char pstrUsageACSelectObject [] PROGMEM = "AC Sel Obj"; -const char pstrUsageACRedoRepeat [] PROGMEM = "AC Redo"; -const char pstrUsageACSort [] PROGMEM = "AC Sort"; -const char pstrUsageACSortAscending [] PROGMEM = "AC Sort Asc"; -const char pstrUsageACSortDescending [] PROGMEM = "AC Sort Desc"; -const char pstrUsageACFilter [] PROGMEM = "AC Filt"; -const char pstrUsageACSetClock [] PROGMEM = "AC Set Clk"; -const char pstrUsageACViewClock [] PROGMEM = "AC View Clk"; -const char pstrUsageACSelectTimeZone [] PROGMEM = "AC Sel Time Z"; -const char pstrUsageACEditTimeZone [] PROGMEM = "AC Edt Time Z"; -const char pstrUsageACSetAlarm [] PROGMEM = "AC Set Alm"; -const char pstrUsageACClearAlarm [] PROGMEM = "AC Clr Alm"; -const char pstrUsageACSnoozeAlarm [] PROGMEM = "AC Snz Alm"; -const char pstrUsageACResetAlarm [] PROGMEM = "AC Rst Alm"; -const char pstrUsageACSyncronize [] PROGMEM = "AC Sync"; -const char pstrUsageACSendReceive [] PROGMEM = "AC Snd/Rcv"; -const char pstrUsageACSendTo [] PROGMEM = "AC Snd To"; -const char pstrUsageACReply [] PROGMEM = "AC Reply"; -const char pstrUsageACReplyAll [] PROGMEM = "AC Reply All"; -const char pstrUsageACForwardMessage [] PROGMEM = "AC Fwd Msg"; -const char pstrUsageACSend [] PROGMEM = "AC Snd"; -const char pstrUsageACAttachFile [] PROGMEM = "AC Att File"; -const char pstrUsageACUpload [] PROGMEM = "AC Upld"; -const char pstrUsageACDownload [] PROGMEM = "AC Dnld"; -const char pstrUsageACSetBorders [] PROGMEM = "AC Set Brd"; -const char pstrUsageACInsertRow [] PROGMEM = "AC Ins Row"; -const char pstrUsageACInsertColumn [] PROGMEM = "AC Ins Col"; -const char pstrUsageACInsertFile [] PROGMEM = "AC Ins File"; -const char pstrUsageACInsertPicture [] PROGMEM = "AC Ins Pic"; -const char pstrUsageACInsertObject [] PROGMEM = "AC Ins Obj"; -const char pstrUsageACInsertSymbol [] PROGMEM = "AC Ins Sym"; -const char pstrUsageACSaveAndClose [] PROGMEM = "AC Sav&Cls"; -const char pstrUsageACRename [] PROGMEM = "AC Rename"; -const char pstrUsageACMerge [] PROGMEM = "AC Merge"; -const char pstrUsageACSplit [] PROGMEM = "AC Split"; -const char pstrUsageACDistributeHorizontaly [] PROGMEM = "AC Dist Hor"; -const char pstrUsageACDistributeVerticaly [] PROGMEM = "AC Dist Ver"; - -// Digitaizers -const char pstrUsageDigitizer [] PROGMEM = "Digitizer"; -const char pstrUsagePen [] PROGMEM = "Pen"; -const char pstrUsageLightPen [] PROGMEM = "Light Pen"; -const char pstrUsageTouchScreen [] PROGMEM = "Touch Scr"; -const char pstrUsageTouchPad [] PROGMEM = "Touch Pad"; -const char pstrUsageWhiteBoard [] PROGMEM = "White Brd"; -const char pstrUsageCoordinateMeasuringMachine [] PROGMEM = "Coord Meas Mach"; -const char pstrUsage3DDigitizer [] PROGMEM = "3D Dgtz"; -const char pstrUsageStereoPlotter [] PROGMEM = "Stereo Plot"; -const char pstrUsageArticulatedArm [] PROGMEM = "Art Arm"; -const char pstrUsageArmature [] PROGMEM = "Armature"; -const char pstrUsageMultiplePointDigitizer [] PROGMEM = "Multi Point Dgtz"; -const char pstrUsageFreeSpaceWand [] PROGMEM = "Free Space Wand"; -const char pstrUsageStylus [] PROGMEM = "Stylus"; -const char pstrUsagePuck [] PROGMEM = "Puck"; -const char pstrUsageFinger [] PROGMEM = "Finger"; -const char pstrUsageTipPressure [] PROGMEM = "Tip Press"; -const char pstrUsageBarrelPressure [] PROGMEM = "Brl Press"; -const char pstrUsageInRange [] PROGMEM = "In Range"; -const char pstrUsageTouch [] PROGMEM = "Touch"; -const char pstrUsageUntouch [] PROGMEM = "Untouch"; -const char pstrUsageTap [] PROGMEM = "Tap"; -const char pstrUsageQuality [] PROGMEM = "Qlty"; -const char pstrUsageDataValid [] PROGMEM = "Data Valid"; -const char pstrUsageTransducerIndex [] PROGMEM = "Transducer Ind"; -const char pstrUsageTabletFunctionKeys [] PROGMEM = "Tabl Func Keys"; -const char pstrUsageProgramChangeKeys [] PROGMEM = "Pgm Chng Keys"; -//const char pstrUsageBatteryStrength [] PROGMEM = "Bat Strength"; -const char pstrUsageInvert [] PROGMEM = "Invert"; -const char pstrUsageXTilt [] PROGMEM = "X Tilt"; -const char pstrUsageYTilt [] PROGMEM = "Y Tilt"; -const char pstrUsageAzimuth [] PROGMEM = "Azimuth"; -const char pstrUsageAltitude [] PROGMEM = "Altitude"; -const char pstrUsageTwist [] PROGMEM = "Twist"; -const char pstrUsageTipSwitch [] PROGMEM = "Tip Sw"; -const char pstrUsageSecondaryTipSwitch [] PROGMEM = "Scnd Tip Sw"; -const char pstrUsageBarrelSwitch [] PROGMEM = "Brl Sw"; -const char pstrUsageEraser [] PROGMEM = "Eraser"; -const char pstrUsageTabletPick [] PROGMEM = "Tbl Pick"; - -// Alphanumeric Display Page -const char pstrUsageAlphanumericDisplay [] PROGMEM = "Alphanum Disp"; -const char pstrUsageBitmappedDisplay [] PROGMEM = "Bmp Disp"; -const char pstrUsageDisplayAttributesReport [] PROGMEM = "Disp Attr Rpt"; -const char pstrUsageASCIICharacterSet [] PROGMEM = "ASCII chset"; -const char pstrUsageDataReadBack [] PROGMEM = "Data Rd Back"; -const char pstrUsageFontReadBack [] PROGMEM = "Fnt Rd Back"; -const char pstrUsageDisplayControlReport [] PROGMEM = "Disp Ctrl Rpt"; -const char pstrUsageClearDisplay [] PROGMEM = "Clr Disp"; -//const char pstrUsageDisplayEnable [] PROGMEM = "Disp Enbl"; -const char pstrUsageScreenSaverDelay [] PROGMEM = "Scr Sav Delay"; -const char pstrUsageScreenSaverEnable [] PROGMEM = "Scr Sav Enbl"; -const char pstrUsageVerticalScroll [] PROGMEM = "V Scroll"; -const char pstrUsageHorizontalScroll [] PROGMEM = "H Scroll"; -const char pstrUsageCharacterReport [] PROGMEM = "Char Rpt"; -const char pstrUsageDisplayData [] PROGMEM = "Disp Data"; -const char pstrUsageDisplayStatus [] PROGMEM = "Disp Stat"; -const char pstrUsageStatusNotReady [] PROGMEM = "Stat !Ready"; -const char pstrUsageStatusReady [] PROGMEM = "Stat Ready"; -const char pstrUsageErrorNotALoadableCharacter [] PROGMEM = "Err Not Ld Char"; -const char pstrUsageErrorFotDataCanNotBeRead [] PROGMEM = "Fnt Data Rd Err"; -const char pstrUsageCursorPositionReport [] PROGMEM = "Cur Pos Rpt"; -const char pstrUsageRow [] PROGMEM = "Row"; -const char pstrUsageColumn [] PROGMEM = "Col"; -const char pstrUsageRows [] PROGMEM = "Rows"; -const char pstrUsageColumns [] PROGMEM = "Cols"; -const char pstrUsageCursorPixelPosition [] PROGMEM = "Cur Pix Pos"; -const char pstrUsageCursorMode [] PROGMEM = "Cur Mode"; -const char pstrUsageCursorEnable [] PROGMEM = "Cur Enbl"; -const char pstrUsageCursorBlink [] PROGMEM = "Cur Blnk"; -const char pstrUsageFontReport [] PROGMEM = "Fnt Rpt"; -const char pstrUsageFontData [] PROGMEM = "Fnt Data"; -const char pstrUsageCharacterWidth [] PROGMEM = "Char Wdth"; -const char pstrUsageCharacterHeight [] PROGMEM = "Char Hght"; -const char pstrUsageCharacterSpacingHorizontal [] PROGMEM = "Char Space H"; -const char pstrUsageCharacterSpacingVertical [] PROGMEM = "Char Space V"; -const char pstrUsageUnicodeCharset [] PROGMEM = "Unicode Char"; -const char pstrUsageFont7Segment [] PROGMEM = "Fnt 7-seg"; -const char pstrUsage7SegmentDirectMap [] PROGMEM = "7-seg map"; -const char pstrUsageFont14Segment [] PROGMEM = "Fnt 14-seg"; -const char pstrUsage14SegmentDirectMap [] PROGMEM = "14-seg map"; -const char pstrUsageDisplayBrightness [] PROGMEM = "Disp Bright"; -const char pstrUsageDisplayContrast [] PROGMEM = "Disp Cntrst"; -const char pstrUsageCharacterAttribute [] PROGMEM = "Char Attr"; -const char pstrUsageAttributeReadback [] PROGMEM = "Attr Readbk"; -const char pstrUsageAttributeData [] PROGMEM = "Attr Data"; -const char pstrUsageCharAttributeEnhance [] PROGMEM = "Char Attr Enh"; -const char pstrUsageCharAttributeUnderline [] PROGMEM = "Char Attr Undl"; -const char pstrUsageCharAttributeBlink [] PROGMEM = "Char Attr Blnk"; -const char pstrUsageBitmapSizeX [] PROGMEM = "Bmp Size X"; -const char pstrUsageBitmapSizeY [] PROGMEM = "Bmp Size Y"; -const char pstrUsageBitDepthFormat [] PROGMEM = "Bit Dpth Fmt"; -const char pstrUsageDisplayOrientation [] PROGMEM = "Disp Ornt"; -const char pstrUsagePaletteReport [] PROGMEM = "Pal Rpt"; -const char pstrUsagePaletteDataSize [] PROGMEM = "Pal Data Size"; -const char pstrUsagePaletteDataOffset [] PROGMEM = "Pal Data Off"; -const char pstrUsagePaletteData [] PROGMEM = "Pal Data"; -const char pstrUsageBlitReport [] PROGMEM = "Blit Rpt"; -const char pstrUsageBlitRectangleX1 [] PROGMEM = "Blit Rect X1"; -const char pstrUsageBlitRectangleY1 [] PROGMEM = "Blit Rect Y1"; -const char pstrUsageBlitRectangleX2 [] PROGMEM = "Blit Rect X2"; -const char pstrUsageBlitRectangleY2 [] PROGMEM = "Blit Rect Y2"; -const char pstrUsageBlitData [] PROGMEM = "Blit Data"; -const char pstrUsageSoftButton [] PROGMEM = "Soft Btn"; -const char pstrUsageSoftButtonID [] PROGMEM = "Soft Btn ID"; -const char pstrUsageSoftButtonSide [] PROGMEM = "Soft Btn Side"; -const char pstrUsageSoftButtonOffset1 [] PROGMEM = "Soft Btn Off1"; -const char pstrUsageSoftButtonOffset2 [] PROGMEM = "Soft Btn Off2"; -const char pstrUsageSoftButtonReport [] PROGMEM = "Soft Btn Rpt"; - -// Medical Instrument Page -const char pstrUsageMedicalUltrasound [] PROGMEM = "Med Ultrasnd"; -const char pstrUsageVCRAcquisition [] PROGMEM = "VCR/Acq"; -const char pstrUsageFreezeThaw [] PROGMEM = "Freeze"; -const char pstrUsageClipStore [] PROGMEM = "Clip Store"; -const char pstrUsageUpdate [] PROGMEM = "Update"; -const char pstrUsageNext [] PROGMEM = "Next"; -const char pstrUsageSave [] PROGMEM = "Save"; -const char pstrUsagePrint [] PROGMEM = "Print"; -const char pstrUsageMicrophoneEnable [] PROGMEM = "Mic Enbl"; -const char pstrUsageCine [] PROGMEM = "Cine"; -const char pstrUsageTransmitPower [] PROGMEM = "Trans Pwr"; -//const char pstrUsageVolume [] PROGMEM = "Vol"; -const char pstrUsageFocus [] PROGMEM = "Focus"; -const char pstrUsageDepth [] PROGMEM = "Depth"; -const char pstrUsageSoftStepPrimary [] PROGMEM = "Soft Stp-Pri"; -const char pstrUsageSoftStepSecondary [] PROGMEM = "Soft Stp-Sec"; -const char pstrUsageDepthGainCompensation [] PROGMEM = "Dpth Gain Comp"; -const char pstrUsageZoomSelect [] PROGMEM = "Zoom Sel"; -const char pstrUsageZoomAdjust [] PROGMEM = "Zoom Adj"; -const char pstrUsageSpectralDopplerModeSelect [] PROGMEM = "Spec Dop Mode Sel"; -const char pstrUsageSpectralDopplerModeAdjust [] PROGMEM = "Spec Dop Mode Adj"; -const char pstrUsageColorDopplerModeSelect [] PROGMEM = "Color Dop Mode Sel"; -const char pstrUsageColorDopplerModeAdjust [] PROGMEM = "Color Dop Mode Adj"; -const char pstrUsageMotionModeSelect [] PROGMEM = "Motion Mode Sel"; -const char pstrUsageMotionModeAdjust [] PROGMEM = "Motion Mode Adj"; -const char pstrUsage2DModeSelect [] PROGMEM = "2D Mode Sel"; -const char pstrUsage2DModeAdjust [] PROGMEM = "2D Mode Adj"; -const char pstrUsageSoftControlSelect [] PROGMEM = "Soft Ctrl Sel"; -const char pstrUsageSoftControlAdjust [] PROGMEM = "Soft Ctrl Adj"; - -//extern const char *usagePageTitles0[15]; -//const char *usagePageTitles1[]; -//const char *genDesktopTitles0[]; -//const char *genDesktopTitles1[]; -//const char *genDesktopTitles2[]; -//const char *genDesktopTitles3[]; -//const char *genDesktopTitles4[]; -//const char *simuTitles0[]; -//const char *simuTitles1[]; -//const char *simuTitles2[]; -//const char *vrTitles0[]; -//const char *vrTitles1[]; -//const char *sportsCtrlTitles0[]; -//const char *sportsCtrlTitles1[]; -//const char *sportsCtrlTitles2[]; -//const char *gameTitles0[]; -//const char *gameTitles1[]; -//const char *genDevCtrlTitles[]; -//const char *ledTitles[]; -//const char *telTitles0[]; -//const char *telTitles1[]; -//const char *telTitles2[]; -//const char *telTitles3[]; -//const char *telTitles4[]; -//const char *telTitles5[]; -//const char *consTitles0[]; -//const char *consTitles1[]; -//const char *consTitles2[]; -//const char *consTitles3[]; -//const char *consTitles4[]; -//const char *consTitles5[]; -//const char *consTitles6[]; -//const char *consTitles7[]; -//const char *consTitles8[]; -//const char *consTitles9[]; -//const char *consTitlesA[]; -//const char *consTitlesB[]; -//const char *consTitlesC[]; -//const char *consTitlesD[]; -//const char *consTitlesE[]; -//const char *digitTitles0[]; -//const char *digitTitles1[]; -//const char *digitTitles2[]; -//const char *aplphanumTitles0[]; -//const char *aplphanumTitles1[]; -//const char *aplphanumTitles2[]; -//const char *medInstrTitles0[]; -//const char *medInstrTitles1[]; -//const char *medInstrTitles2[]; -//const char *medInstrTitles3[]; -//const char *medInstrTitles4[]; - -#endif //__HIDUSAGESTR_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/macros.h b/legacy/builder/test/libraries/USBHost/src/macros.h deleted file mode 100644 index 5df3faff8ab..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/macros.h +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#if !defined(_usb_h_) || defined(MACROS_H) -#error "Never include macros.h directly; include Usb.h instead" -#else -#define MACROS_H - -//////////////////////////////////////////////////////////////////////////////// -// HANDY MACROS -//////////////////////////////////////////////////////////////////////////////// - -#define VALUE_BETWEEN(v,l,h) (((v)>(l)) && ((v)<(h))) -#define VALUE_WITHIN(v,l,h) (((v)>=(l)) && ((v)<=(h))) -#define output_pgm_message(wa,fp,mp,el) wa = &mp, fp((char *)/*pgm_read_pointer*/(wa), el) -#define output_if_between(v,l,h,wa,fp,mp,el) if(VALUE_BETWEEN(v,l,h)) output_pgm_message(wa,fp,mp[v-(l+1)],el); - -#define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))) -#ifndef __BYTE_GRABBING_DEFINED__ -#define __BYTE_GRABBING_DEFINED__ 1 -#ifdef BROKEN_OPTIMIZER_LITTLE_ENDIAN -// Note: Use this if your compiler generates horrible assembler! -#define BGRAB0(__usi__) (((uint8_t *)&(__usi__))[0]) -#define BGRAB1(__usi__) (((uint8_t *)&(__usi__))[1]) -#define BGRAB2(__usi__) (((uint8_t *)&(__usi__))[2]) -#define BGRAB3(__usi__) (((uint8_t *)&(__usi__))[3]) -#define BGRAB4(__usi__) (((uint8_t *)&(__usi__))[4]) -#define BGRAB5(__usi__) (((uint8_t *)&(__usi__))[5]) -#define BGRAB6(__usi__) (((uint8_t *)&(__usi__))[6]) -#define BGRAB7(__usi__) (((uint8_t *)&(__usi__))[7]) -#else -// Note: The cast alone to uint8_t is actually enough. -// GCC throws out the "& 0xff", and the size is no different. -// Some compilers need it. -#define BGRAB0(__usi__) ((uint8_t)((__usi__) & 0xff )) -#define BGRAB1(__usi__) ((uint8_t)(((__usi__) >> 8) & 0xff)) -#define BGRAB2(__usi__) ((uint8_t)(((__usi__) >> 16) & 0xff)) -#define BGRAB3(__usi__) ((uint8_t)(((__usi__) >> 24) & 0xff)) -#define BGRAB4(__usi__) ((uint8_t)(((__usi__) >> 32) & 0xff)) -#define BGRAB5(__usi__) ((uint8_t)(((__usi__) >> 40) & 0xff)) -#define BGRAB6(__usi__) ((uint8_t)(((__usi__) >> 48) & 0xff)) -#define BGRAB7(__usi__) ((uint8_t)(((__usi__) >> 56) & 0xff)) -#endif -#define BOVER1(__usi__) ((uint16_t)(__usi__) << 8) -#define BOVER2(__usi__) ((uint32_t)(__usi__) << 16) -#define BOVER3(__usi__) ((uint32_t)(__usi__) << 24) -#define BOVER4(__usi__) ((uint64_t)(__usi__) << 32) -#define BOVER5(__usi__) ((uint64_t)(__usi__) << 40) -#define BOVER6(__usi__) ((uint64_t)(__usi__) << 48) -#define BOVER7(__usi__) ((uint64_t)(__usi__) << 56) - -// These are the smallest and fastest ways I have found so far in pure C/C++. -#define BMAKE16(__usc1__,__usc0__) ((uint16_t)((uint16_t)(__usc0__) | (uint16_t)BOVER1(__usc1__))) -#define BMAKE32(__usc3__,__usc2__,__usc1__,__usc0__) ((uint32_t)((uint32_t)(__usc0__) | (uint32_t)BOVER1(__usc1__) | (uint32_t)BOVER2(__usc2__) | (uint32_t)BOVER3(__usc3__))) -#define BMAKE64(__usc7__,__usc6__,__usc5__,__usc4__,__usc3__,__usc2__,__usc1__,__usc0__) ((uint64_t)((uint64_t)__usc0__ | (uint64_t)BOVER1(__usc1__) | (uint64_t)BOVER2(__usc2__) | (uint64_t)BOVER3(__usc3__) | (uint64_t)BOVER4(__usc4__) | (uint64_t)BOVER5(__usc5__) | (uint64_t)BOVER6(__usc6__) | (uint64_t)BOVER1(__usc7__))) -#endif - -/* - * Debug macros: Strings are stored in progmem (flash) instead of RAM. - */ -#define USBTRACE(s) (Notify(PSTR(s), 0x80)) -#define USBTRACE1(s,l) (Notify(PSTR(s), l)) -#define USBTRACE2(s,r) (Notify(PSTR(s), 0x80), D_PrintHex((r), 0x80), Notify(PSTR("\r\n"), 0x80)) -#define USBTRACE3(s,r,l) (Notify(PSTR(s), l), D_PrintHex((r), l), Notify(PSTR("\r\n"), l)) - - -#endif /* MACROS_H */ - diff --git a/legacy/builder/test/libraries/USBHost/src/message.cpp b/legacy/builder/test/libraries/USBHost/src/message.cpp deleted file mode 100644 index bdcdd18331c..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/message.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#include "Usb.h" -// 0x80 is the default (i.e. trace) to turn off set this global to something lower. -// this allows for 126 other debugging levels. -// TO-DO: Allow assignment to a different serial port by software -int UsbDEBUGlvl = 0x80; - -void E_Notifyc(char c, int lvl) { - if(UsbDEBUGlvl < lvl) return; -#if defined(ARDUINO) && ARDUINO >=100 - USB_HOST_SERIAL.print(c); -#else - USB_HOST_SERIAL.print(c, BYTE); -#endif - //USB_HOST_SERIAL.flush(); -} - -void E_Notify(char const * msg, int lvl) { - if(UsbDEBUGlvl < lvl) return; - if(!msg) return; - char c; - - while((c = pgm_read_byte(msg++))) E_Notifyc(c, lvl); -} - -void E_NotifyStr(char const * msg, int lvl) { - if(UsbDEBUGlvl < lvl) return; - if(!msg) return; - char c; - - while((c = *msg++)) E_Notifyc(c, lvl); -} - -void E_Notify(uint8_t b, int lvl) { - if(UsbDEBUGlvl < lvl) return; -#if defined(ARDUINO) && ARDUINO >=100 - USB_HOST_SERIAL.print(b); -#else - USB_HOST_SERIAL.print(b, DEC); -#endif - //USB_HOST_SERIAL.flush(); -} - -void E_Notify(double d, int lvl) { - if(UsbDEBUGlvl < lvl) return; - USB_HOST_SERIAL.print(d); - //USB_HOST_SERIAL.flush(); -} - -#ifdef DEBUG_USB_HOST - -void NotifyFailGetDevDescr(void) { - Notify(PSTR("\r\ngetDevDescr "), 0x80); -} - -void NotifyFailSetDevTblEntry(void) { - Notify(PSTR("\r\nsetDevTblEn "), 0x80); -} - -void NotifyFailGetConfDescr(void) { - Notify(PSTR("\r\ngetConf "), 0x80); -} - -void NotifyFailSetConfDescr(void) { - Notify(PSTR("\r\nsetConf "), 0x80); -} - -void NotifyFailGetDevDescr(uint8_t reason) { - NotifyFailGetDevDescr(); - NotifyFail(reason); -} - -void NotifyFailSetDevTblEntry(uint8_t reason) { - NotifyFailSetDevTblEntry(); - NotifyFail(reason); - -} - -void NotifyFailGetConfDescr(uint8_t reason) { - NotifyFailGetConfDescr(); - NotifyFail(reason); -} - -void NotifyFailSetConfDescr(uint8_t reason) { - NotifyFailSetConfDescr(); - NotifyFail(reason); -} - -void NotifyFailUnknownDevice(uint16_t VID, uint16_t PID) { - Notify(PSTR("\r\nUnknown Device Connected - VID: "), 0x80); - D_PrintHex (VID, 0x80); - Notify(PSTR(" PID: "), 0x80); - D_PrintHex (PID, 0x80); -} - -void NotifyFail(uint8_t rcode) { - D_PrintHex (rcode, 0x80); - Notify(PSTR("\r\n"), 0x80); -} -#endif diff --git a/legacy/builder/test/libraries/USBHost/src/message.h b/legacy/builder/test/libraries/USBHost/src/message.h deleted file mode 100644 index c26628e7f28..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/message.h +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#if !defined(_usb_h_) || defined(__MESSAGE_H__) -#error "Never include message.h directly; include Usb.h instead" -#else -#define __MESSAGE_H__ - -extern int UsbDEBUGlvl; - -void E_Notify(char const * msg, int lvl); -void E_Notify(uint8_t b, int lvl); -void E_NotifyStr(char const * msg, int lvl); -void E_Notifyc(char c, int lvl); - -#ifdef DEBUG_USB_HOST -#define Notify E_Notify -#define NotifyStr E_NotifyStr -#define Notifyc E_Notifyc -void NotifyFailGetDevDescr(uint8_t reason); -void NotifyFailSetDevTblEntry(uint8_t reason); -void NotifyFailGetConfDescr(uint8_t reason); -void NotifyFailSetConfDescr(uint8_t reason); -void NotifyFailGetDevDescr(void); -void NotifyFailSetDevTblEntry(void); -void NotifyFailGetConfDescr(void); -void NotifyFailSetConfDescr(void); -void NotifyFailUnknownDevice(uint16_t VID, uint16_t PID); -void NotifyFail(uint8_t rcode); -#else -#define Notify(...) ((void)0) -#define NotifyStr(...) ((void)0) -#define Notifyc(...) ((void)0) -#define NotifyFailGetDevDescr(...) ((void)0) -#define NotifyFailSetDevTblEntry(...) ((void)0) -#define NotifyFailGetConfDescr(...) ((void)0) -#define NotifyFailGetDevDescr(...) ((void)0) -#define NotifyFailSetDevTblEntry(...) ((void)0) -#define NotifyFailGetConfDescr(...) ((void)0) -#define NotifyFailSetConfDescr(...) ((void)0) -#define NotifyFailUnknownDevice(...) ((void)0) -#define NotifyFail(...) ((void)0) -#endif - -template -void ErrorMessage(uint8_t level, char const * msg, ERROR_TYPE rcode = 0) { -#ifdef DEBUG_USB_HOST - Notify(msg, level); - Notify(PSTR(": "), level); - D_PrintHex (rcode, level); - Notify(PSTR("\r\n"), level); -#endif -} - -template -void ErrorMessage(char const * msg, ERROR_TYPE rcode = 0) { -#ifdef DEBUG_USB_HOST - Notify(msg, 0x80); - Notify(PSTR(": "), 0x80); - D_PrintHex (rcode, 0x80); - Notify(PSTR("\r\n"), 0x80); -#endif -} - -#endif // __MESSAGE_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/parsetools.cpp b/legacy/builder/test/libraries/USBHost/src/parsetools.cpp deleted file mode 100644 index 00ca9e6427f..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/parsetools.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ -#include "Usb.h" - -bool MultiByteValueParser::Parse(uint8_t **pp, uint32_t *pcntdn) { - if(!pBuf) { - Notify(PSTR("Buffer pointer is NULL!\r\n"), 0x80); - return false; - } - for (; countDown && (*pcntdn); countDown--, (*pcntdn)--, (*pp)++) - pBuf[valueSize - countDown] = (**pp); - - if(countDown) - return false; - - countDown = valueSize; - return true; -} - -bool PTPListParser::Parse(uint8_t **pp, uint32_t *pcntdn, PTP_ARRAY_EL_FUNC pf, const void *me) { - switch(nStage) { - case 0: - pBuf->valueSize = lenSize; - theParser.Initialize(pBuf); - nStage = 1; - - case 1: - if(!theParser.Parse(pp, pcntdn)) - return false; - - arLen = 0; - arLen = (pBuf->valueSize >= 4) ? *((uint32_t*)pBuf->pValue) : (uint32_t)(*((uint16_t*)pBuf->pValue)); - arLenCntdn = arLen; - nStage = 2; - - case 2: - pBuf->valueSize = valSize; - theParser.Initialize(pBuf); - nStage = 3; - - case 3: - for(; arLenCntdn; arLenCntdn--) { - if(!theParser.Parse(pp, pcntdn)) - return false; - - if(pf) - pf(pBuf, (arLen - arLenCntdn), me); - } - - nStage = 0; - } - return true; -} diff --git a/legacy/builder/test/libraries/USBHost/src/parsetools.h b/legacy/builder/test/libraries/USBHost/src/parsetools.h deleted file mode 100644 index d463358913f..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/parsetools.h +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -#if !defined(_usb_h_) || defined(__PARSETOOLS_H__) -#error "Never include parsetools.h directly; include Usb.h instead" -#else -#define __PARSETOOLS_H__ - -#include -//#include "Arduino.h" - -struct MultiValueBuffer { - uint8_t valueSize; - void *pValue; -}; - -class MultiByteValueParser { - uint8_t *pBuf; - uint32_t countDown; - uint32_t valueSize; - -public: - - MultiByteValueParser() : pBuf(NULL), countDown(0), valueSize(0) { - }; - - const uint8_t* GetBuffer() { - return pBuf; - }; - - void Initialize(MultiValueBuffer * const pbuf) { - pBuf = (uint8_t*)pbuf->pValue; - countDown = valueSize = pbuf->valueSize; - }; - - bool Parse(uint8_t **pp, uint32_t *pcntdn); -}; - -class ByteSkipper { - uint8_t *pBuf; - uint32_t nStage; - uint32_t countDown; - -public: - - ByteSkipper() : pBuf(NULL), nStage(0), countDown(0) { - }; - - void Initialize(MultiValueBuffer *pbuf) { - pBuf = (uint8_t*)pbuf->pValue; - countDown = 0; - }; - - bool Skip(uint8_t **pp, uint32_t *pcntdn, uint32_t bytes_to_skip) { - switch(nStage) { - case 0: - countDown = bytes_to_skip; - nStage++; - case 1: - for(; countDown && (*pcntdn); countDown--, (*pp)++, (*pcntdn)--); - - if(!countDown) - nStage = 0; - }; - return (!countDown); - }; -}; - -// Pointer to a callback function triggered for each element of PTP array when used with PTPArrayParser -typedef void (*PTP_ARRAY_EL_FUNC)(const MultiValueBuffer * const p, uint32_t count, const void *me); - -class PTPListParser { -public: - - enum ParseMode { - modeArray, modeRange/*, modeEnum*/ - }; - -private: - uint32_t nStage; - uint32_t enStage; - - uint32_t arLen; - uint32_t arLenCntdn; - - uint32_t lenSize; // size of the array length field in bytes - uint32_t valSize; // size of the array element in bytes - - MultiValueBuffer *pBuf; - - // The only parser for both size and array element parsing - MultiByteValueParser theParser; - - uint32_t /*ParseMode*/ prsMode; - -public: - - PTPListParser() : - nStage(0), - enStage(0), - arLen(0), - arLenCntdn(0), - lenSize(0), - valSize(0), - pBuf(NULL), - prsMode(modeArray) { - }; - - void Initialize(const uint32_t len_size, const uint32_t val_size, MultiValueBuffer * const p, const uint32_t mode = modeArray) { - pBuf = p; - lenSize = len_size; - valSize = val_size; - prsMode = mode; - - if(prsMode == modeRange) { - arLenCntdn = arLen = 3; - nStage = 2; - } else { - arLenCntdn = arLen = 0; - nStage = 0; - } - enStage = 0; - theParser.Initialize(p); - }; - - bool Parse(uint8_t **pp, uint32_t *pcntdn, PTP_ARRAY_EL_FUNC pf, const void *me = NULL); -}; - -#endif // __PARSETOOLS_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/printhex.h b/legacy/builder/test/libraries/USBHost/src/printhex.h deleted file mode 100644 index 369d7e1f7eb..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/printhex.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ - -#if !defined(_usb_h_) || defined(__PRINTHEX_H__) -#error "Never include printhex.h directly; include Usb.h instead" -#else -#define __PRINTHEX_H__ - -void E_Notifyc(char c, int lvl); - -template -void PrintHex(T val, int lvl) { - int num_nibbles = sizeof (T) * 2; - - do { - char v = 48 + (((val >> (num_nibbles - 1) * 4)) & 0x0f); - if(v > 57) v += 7; - E_Notifyc(v, lvl); - } while(--num_nibbles); -} - -template -void PrintBin(T val, int lvl) { - for(T mask = (((T)1) << ((sizeof (T) << 3) - 1)); mask; mask >>= 1) - if(val & mask) - E_Notifyc('1', lvl); - else - E_Notifyc('0', lvl); -} - -template -void SerialPrintHex(T val) { - int num_nibbles = sizeof (T) * 2; - - do { - char v = 48 + (((val >> (num_nibbles - 1) * 4)) & 0x0f); - if(v > 57) v += 7; - USB_HOST_SERIAL.print(v); - } while(--num_nibbles); -} - -template -void PrintHex2(Print *prn, T val) { - T mask = (((T)1) << (((sizeof (T) << 1) - 1) << 2)); - - while(mask > 1) { - if(val < mask) - prn->print("0"); - - mask >>= 4; - } - prn->print((T)val, HEX); -} - -template void D_PrintHex(T val, int lvl) { -#ifdef DEBUG_USB_HOST - PrintHex (val, lvl); -#endif -} - -template -void D_PrintBin(T val, int lvl) { -#ifdef DEBUG_USB_HOST - PrintBin (val, lvl); -#endif -} - - - -#endif // __PRINTHEX_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/sink_parser.h b/legacy/builder/test/libraries/USBHost/src/sink_parser.h deleted file mode 100644 index a23637d2b74..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/sink_parser.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#if !defined(_usb_h_) || defined(__SINK_PARSER_H__) -#error "Never include hexdump.h directly; include Usb.h instead" -#else -#define __SINK_PARSER_H__ - -extern int UsbDEBUGlvl; - -// This parser does absolutely nothing with the data, just swallows it. - -template -class SinkParser : public BASE_CLASS { -public: - - SinkParser() { - }; - - void Initialize() { - }; - - void Parse(const LEN_TYPE len, const uint8_t *pbuf, const OFFSET_TYPE &offset) { - }; -}; - - -#endif // __HEXDUMP_H__ diff --git a/legacy/builder/test/libraries/USBHost/src/usb_ch9.h b/legacy/builder/test/libraries/USBHost/src/usb_ch9.h deleted file mode 100644 index 09dd94b9b46..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/usb_ch9.h +++ /dev/null @@ -1,174 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com -*/ - -#if !defined(_usb_h_) || defined(_ch9_h_) -#error "Never include usb_ch9.h directly; include Usb.h instead" -#else - -/* USB chapter 9 structures */ -#define _ch9_h_ - -#include - -/* Misc.USB constants */ -#define DEV_DESCR_LEN 18 //device descriptor length -#define CONF_DESCR_LEN 9 //configuration descriptor length -#define INTR_DESCR_LEN 9 //interface descriptor length -#define EP_DESCR_LEN 7 //endpoint descriptor length - -/* Standard Device Requests */ - -#define USB_REQUEST_GET_STATUS 0 // Standard Device Request - GET STATUS -#define USB_REQUEST_CLEAR_FEATURE 1 // Standard Device Request - CLEAR FEATURE -#define USB_REQUEST_SET_FEATURE 3 // Standard Device Request - SET FEATURE -#define USB_REQUEST_SET_ADDRESS 5 // Standard Device Request - SET ADDRESS -#define USB_REQUEST_GET_DESCRIPTOR 6 // Standard Device Request - GET DESCRIPTOR -#define USB_REQUEST_SET_DESCRIPTOR 7 // Standard Device Request - SET DESCRIPTOR -#define USB_REQUEST_GET_CONFIGURATION 8 // Standard Device Request - GET CONFIGURATION -#define USB_REQUEST_SET_CONFIGURATION 9 // Standard Device Request - SET CONFIGURATION -#define USB_REQUEST_GET_INTERFACE 10 // Standard Device Request - GET INTERFACE -#define USB_REQUEST_SET_INTERFACE 11 // Standard Device Request - SET INTERFACE -#define USB_REQUEST_SYNCH_FRAME 12 // Standard Device Request - SYNCH FRAME - -#define USB_FEATURE_ENDPOINT_HALT 0 // CLEAR/SET FEATURE - Endpoint Halt -#define USB_FEATURE_DEVICE_REMOTE_WAKEUP 1 // CLEAR/SET FEATURE - Device remote wake-up -#define USB_FEATURE_TEST_MODE 2 // CLEAR/SET FEATURE - Test mode - -/* Setup Data Constants */ - -#define USB_SETUP_HOST_TO_DEVICE 0x00 // Device Request bmRequestType transfer direction - host to device transfer -#define USB_SETUP_DEVICE_TO_HOST 0x80 // Device Request bmRequestType transfer direction - device to host transfer -#define USB_SETUP_TYPE_STANDARD 0x00 // Device Request bmRequestType type - standard -#define USB_SETUP_TYPE_CLASS 0x20 // Device Request bmRequestType type - class -#define USB_SETUP_TYPE_VENDOR 0x40 // Device Request bmRequestType type - vendor -#define USB_SETUP_RECIPIENT_DEVICE 0x00 // Device Request bmRequestType recipient - device -#define USB_SETUP_RECIPIENT_INTERFACE 0x01 // Device Request bmRequestType recipient - interface -#define USB_SETUP_RECIPIENT_ENDPOINT 0x02 // Device Request bmRequestType recipient - endpoint -#define USB_SETUP_RECIPIENT_OTHER 0x03 // Device Request bmRequestType recipient - other - -/* USB descriptors */ - -#define USB_DESCRIPTOR_DEVICE 0x01 // bDescriptorType for a Device Descriptor. -#define USB_DESCRIPTOR_CONFIGURATION 0x02 // bDescriptorType for a Configuration Descriptor. -#define USB_DESCRIPTOR_STRING 0x03 // bDescriptorType for a String Descriptor. -#define USB_DESCRIPTOR_INTERFACE 0x04 // bDescriptorType for an Interface Descriptor. -#define USB_DESCRIPTOR_ENDPOINT 0x05 // bDescriptorType for an Endpoint Descriptor. -#define USB_DESCRIPTOR_DEVICE_QUALIFIER 0x06 // bDescriptorType for a Device Qualifier. -#define USB_DESCRIPTOR_OTHER_SPEED 0x07 // bDescriptorType for a Other Speed Configuration. -#define USB_DESCRIPTOR_INTERFACE_POWER 0x08 // bDescriptorType for Interface Power. -#define USB_DESCRIPTOR_OTG 0x09 // bDescriptorType for an OTG Descriptor. - -#define HID_DESCRIPTOR_HID 0x21 - - - -/* OTG SET FEATURE Constants */ -#define OTG_FEATURE_B_HNP_ENABLE 3 // SET FEATURE OTG - Enable B device to perform HNP -#define OTG_FEATURE_A_HNP_SUPPORT 4 // SET FEATURE OTG - A device supports HNP -#define OTG_FEATURE_A_ALT_HNP_SUPPORT 5 // SET FEATURE OTG - Another port on the A device supports HNP - -/* USB Endpoint Transfer Types */ -#define USB_TRANSFER_TYPE_CONTROL 0x00 // Endpoint is a control endpoint. -#define USB_TRANSFER_TYPE_ISOCHRONOUS 0x01 // Endpoint is an isochronous endpoint. -#define USB_TRANSFER_TYPE_BULK 0x02 // Endpoint is a bulk endpoint. -#define USB_TRANSFER_TYPE_INTERRUPT 0x03 // Endpoint is an interrupt endpoint. -#define bmUSB_TRANSFER_TYPE 0x03 // bit mask to separate transfer type from ISO attributes - - -/* Standard Feature Selectors for CLEAR_FEATURE Requests */ -#define USB_FEATURE_ENDPOINT_STALL 0 // Endpoint recipient -#define USB_FEATURE_DEVICE_REMOTE_WAKEUP 1 // Device recipient -#define USB_FEATURE_TEST_MODE 2 // Device recipient - -_Pragma("pack(1)") - -/* descriptor data structures */ - -/* Device descriptor structure */ -typedef struct { - uint8_t bLength; // Length of this descriptor. - uint8_t bDescriptorType; // DEVICE descriptor type (USB_DESCRIPTOR_DEVICE). - uint16_t bcdUSB; // USB Spec Release Number (BCD). - uint8_t bDeviceClass; // Class code (assigned by the USB-IF). 0xFF-Vendor specific. - uint8_t bDeviceSubClass; // Subclass code (assigned by the USB-IF). - uint8_t bDeviceProtocol; // Protocol code (assigned by the USB-IF). 0xFF-Vendor specific. - uint8_t bMaxPacketSize0; // Maximum packet size for endpoint 0. - uint16_t idVendor; // Vendor ID (assigned by the USB-IF). - uint16_t idProduct; // Product ID (assigned by the manufacturer). - uint16_t bcdDevice; // Device release number (BCD). - uint8_t iManufacturer; // Index of String Descriptor describing the manufacturer. - uint8_t iProduct; // Index of String Descriptor describing the product. - uint8_t iSerialNumber; // Index of String Descriptor with the device's serial number. - uint8_t bNumConfigurations; // Number of possible configurations. -} USB_DEVICE_DESCRIPTOR; - -/* Configuration descriptor structure */ -typedef struct { - uint8_t bLength; // Length of this descriptor. - uint8_t bDescriptorType; // CONFIGURATION descriptor type (USB_DESCRIPTOR_CONFIGURATION). - uint16_t wTotalLength; // Total length of all descriptors for this configuration. - uint8_t bNumInterfaces; // Number of interfaces in this configuration. - uint8_t bConfigurationValue; // Value of this configuration (1 based). - uint8_t iConfiguration; // Index of String Descriptor describing the configuration. - uint8_t bmAttributes; // Configuration characteristics. - uint8_t bMaxPower; // Maximum power consumed by this configuration. -} USB_CONFIGURATION_DESCRIPTOR; - -/* Interface descriptor structure */ -typedef struct { - uint8_t bLength; // Length of this descriptor. - uint8_t bDescriptorType; // INTERFACE descriptor type (USB_DESCRIPTOR_INTERFACE). - uint8_t bInterfaceNumber; // Number of this interface (0 based). - uint8_t bAlternateSetting; // Value of this alternate interface setting. - uint8_t bNumEndpoints; // Number of endpoints in this interface. - uint8_t bInterfaceClass; // Class code (assigned by the USB-IF). 0xFF-Vendor specific. - uint8_t bInterfaceSubClass; // Subclass code (assigned by the USB-IF). - uint8_t bInterfaceProtocol; // Protocol code (assigned by the USB-IF). 0xFF-Vendor specific. - uint8_t iInterface; // Index of String Descriptor describing the interface. -} USB_INTERFACE_DESCRIPTOR; - -/* Endpoint descriptor structure */ -typedef struct { - uint8_t bLength; // Length of this descriptor. - uint8_t bDescriptorType; // ENDPOINT descriptor type (USB_DESCRIPTOR_ENDPOINT). - uint8_t bEndpointAddress; // Endpoint address. Bit 7 indicates direction (0=OUT, 1=IN). - uint8_t bmAttributes; // Endpoint transfer type. - uint16_t wMaxPacketSize; // Maximum packet size. - uint8_t bInterval; // Polling interval in frames. -} USB_ENDPOINT_DESCRIPTOR; - - -/* HID descriptor */ -typedef struct { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t bcdHID; // HID class specification release - uint8_t bCountryCode; - uint8_t bNumDescriptors; // Number of additional class specific descriptors - uint8_t bDescrType; // Type of class descriptor - uint16_t wDescriptorLength; // Total size of the Report descriptor -} USB_HID_DESCRIPTOR; - -typedef struct { - uint8_t bDescrType; // Type of class descriptor - uint16_t wDescriptorLength; // Total size of the Report descriptor -} HID_CLASS_DESCRIPTOR_LEN_AND_TYPE; - -_Pragma("pack()") - -#endif // _ch9_h_ - diff --git a/legacy/builder/test/libraries/USBHost/src/usbhub.cpp b/legacy/builder/test/libraries/USBHost/src/usbhub.cpp deleted file mode 100644 index 55d5bc1f1c4..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/usbhub.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#include "usbhub.h" -#include "delay.h" - -bool USBHub::bResetInitiated = false; - -USBHub::USBHub(USBHost *p) : -pUsb(p), -bAddress(0), -bNbrPorts(0), -//bInitState(0), -qNextPollTime(0), -bPollEnable(false) { - epInfo[0].epAddr = 0; - epInfo[0].maxPktSize = 8; - epInfo[0].epAttribs = 0; - epInfo[0].bmNakPower = USB_NAK_MAX_POWER; - - epInfo[1].epAddr = 1; - epInfo[1].maxPktSize = 8; //kludge - epInfo[1].epAttribs = 0; - epInfo[1].bmNakPower = USB_NAK_NOWAIT; - - if(pUsb) - pUsb->RegisterDeviceClass(this); -} - -uint32_t USBHub::Init(uint32_t parent, uint32_t port, uint32_t lowspeed) { - uint8_t buf[32]; - USB_DEVICE_DESCRIPTOR * udd = reinterpret_cast(buf); - HubDescriptor* hd = reinterpret_cast(buf); - USB_CONFIGURATION_DESCRIPTOR * ucd = reinterpret_cast(buf); - uint32_t rcode; - UsbDeviceDefinition *p = NULL; - EpInfo *oldep_ptr = NULL; - uint32_t len = 0; - uint32_t cd_len = 0; - - //USBTRACE("\r\nHub Init Start "); - //D_PrintHex (bInitState, 0x80); - - AddressPool &addrPool = pUsb->GetAddressPool(); - - //switch (bInitState) { - // case 0: - if(bAddress) - return USB_ERROR_CLASS_INSTANCE_ALREADY_IN_USE; - - // Get pointer to pseudo device with address 0 assigned - p = addrPool.GetUsbDevicePtr(0); - - if(!p) - return USB_ERROR_ADDRESS_NOT_FOUND_IN_POOL; - - if(!p->epinfo) - return USB_ERROR_EPINFO_IS_NULL; - - // Save old pointer to EP_RECORD of address 0 - oldep_ptr = p->epinfo; - - // Temporary assign new pointer to epInfo to p->epinfo in order to avoid toggle inconsistence - p->epinfo = epInfo; - - p->lowspeed = lowspeed; - - // Get device descriptor - rcode = pUsb->getDevDescr(0, 0, 8, (uint8_t*)buf); - - p->lowspeed = false; - - if(!rcode) - len = (buf[0] > 32) ? 32 : buf[0]; - - if(rcode) { - // Restore p->epinfo - p->epinfo = oldep_ptr; - return rcode; - } - - // Extract device class from device descriptor - // If device class is not a hub return - if(udd->bDeviceClass != 0x09) - return USB_DEV_CONFIG_ERROR_DEVICE_NOT_SUPPORTED; - - // Allocate new address according to device class - bAddress = addrPool.AllocAddress(parent, (udd->bDeviceClass == 0x09) ? true : false, port); - - if(!bAddress) - return USB_ERROR_OUT_OF_ADDRESS_SPACE_IN_POOL; - - // Extract Max Packet Size from the device descriptor - epInfo[0].maxPktSize = udd->bMaxPacketSize0; - - // Assign new address to the device - rcode = pUsb->setAddr(0, 0, bAddress); - - if(rcode) { - // Restore p->epinfo - p->epinfo = oldep_ptr; - addrPool.FreeAddress(bAddress); - bAddress = 0; - return rcode; - } - - //USBTRACE2("\r\nHub address: ", bAddress ); - - // Restore p->epinfo - p->epinfo = oldep_ptr; - - if(len) - rcode = pUsb->getDevDescr(bAddress, 0, len, (uint8_t*)buf); - - if(rcode) - goto FailGetDevDescr; - - // Assign epInfo to epinfo pointer - rcode = pUsb->setEpInfoEntry(bAddress, 2, epInfo); - - if(rcode) - goto FailSetDevTblEntry; - - // bInitState = 1; - - // case 1: - // Get hub descriptor - rcode = GetHubDescriptor(0, 8, buf); - - if(rcode) - goto FailGetHubDescr; - - // Save number of ports for future use - bNbrPorts = hd->bNbrPorts; - - // bInitState = 2; - - // case 2: - // Read configuration Descriptor in Order To Obtain Proper Configuration Value - rcode = pUsb->getConfDescr(bAddress, 0, 8, 0, buf); - - if(!rcode) { - cd_len = ucd->wTotalLength; - rcode = pUsb->getConfDescr(bAddress, 0, cd_len, 0, buf); - } - if(rcode) - goto FailGetConfDescr; - - // The following code is of no practical use in real life applications. - // It only intended for the usb protocol sniffer to properly parse hub-class requests. - { - uint8_t buf2[24]; - - rcode = pUsb->getConfDescr(bAddress, 0, buf[0], 0, buf2); - - if(rcode) - goto FailGetConfDescr; - } - - // Set Configuration Value - rcode = pUsb->setConf(bAddress, 0, buf[5]); - - if(rcode) - goto FailSetConfDescr; - - // bInitState = 3; - - // case 3: - // Power on all ports - for(uint32_t j = 1; j <= bNbrPorts; j++) - SetPortFeature(HUB_FEATURE_PORT_POWER, j, 0); //HubPortPowerOn(j); - - pUsb->SetHubPreMask(); - bPollEnable = true; - // bInitState = 0; - //} - //bInitState = 0; - //USBTRACE("...OK\r\n"); - return 0; - - // Oleg, No debugging?? -- xxxajk -FailGetDevDescr: - goto Fail; - -FailSetDevTblEntry: - goto Fail; - -FailGetHubDescr: - goto Fail; - -FailGetConfDescr: - goto Fail; - -FailSetConfDescr: - goto Fail; - -Fail: - USBTRACE("...FAIL\r\n"); - return rcode; -} - -uint32_t USBHub::Release() { - pUsb->GetAddressPool().FreeAddress(bAddress); - - if(bAddress == 0x41) - pUsb->SetHubPreMask(); - - bAddress = 0; - bNbrPorts = 0; - qNextPollTime = 0; - bPollEnable = false; - return 0; -} - -uint32_t USBHub::Poll() { - uint32_t rcode = 0; - - if(!bPollEnable) - return 0; - - if(((long)(millis() - qNextPollTime) >= 0L)) { - rcode = CheckHubStatus(); - qNextPollTime = millis() + 100; - } - return rcode; -} - -uint32_t USBHub::CheckHubStatus() { - uint32_t rcode; - uint8_t buf[8]; - uint32_t read = 1; - - rcode = pUsb->inTransfer(bAddress, 1, (uint8_t*)&read, buf); - - if(rcode) - return rcode; - - //if (buf[0] & 0x01) // Hub Status Change - //{ - // pUsb->PrintHubStatus(addr); - // rcode = GetHubStatus(1, 0, 1, 4, buf); - // if (rcode) - // { - // USB_HOST_SERIAL.print("GetHubStatus Error"); - // USB_HOST_SERIAL.println(rcode, HEX); - // return rcode; - // } - //} - for(uint32_t port = 1, mask = 0x02; port < 8; mask <<= 1, port++) { - if(buf[0] & mask) { - HubEvent evt; - evt.bmEvent = 0; - - rcode = GetPortStatus(port, 4, evt.evtBuff); - - if(rcode) - continue; - - rcode = PortStatusChange(port, evt); - - if(rcode == HUB_ERROR_PORT_HAS_BEEN_RESET) - return 0; - - if(rcode) - return rcode; - } - } // for - - for(uint32_t port = 1; port <= bNbrPorts; port++) { - HubEvent evt; - evt.bmEvent = 0; - - rcode = GetPortStatus(port, 4, evt.evtBuff); - - if(rcode) - continue; - - if((evt.bmStatus & bmHUB_PORT_STATE_CHECK_DISABLED) != bmHUB_PORT_STATE_DISABLED) - continue; - - // Emulate connection event for the port - evt.bmChange |= bmHUB_PORT_STATUS_C_PORT_CONNECTION; - - rcode = PortStatusChange(port, evt); - - if(rcode == HUB_ERROR_PORT_HAS_BEEN_RESET) - return 0; - - if(rcode) - return rcode; - } // for - return 0; -} - -void USBHub::ResetHubPort(uint32_t port) { - HubEvent evt; - evt.bmEvent = 0; - uint8_t rcode; - - ClearPortFeature(HUB_FEATURE_C_PORT_ENABLE, port, 0); - ClearPortFeature(HUB_FEATURE_C_PORT_CONNECTION, port, 0); - SetPortFeature(HUB_FEATURE_PORT_RESET, port, 0); - - - for(int i = 0; i < 3; i++) { - rcode = GetPortStatus(port, 4, evt.evtBuff); - if(rcode) break; // Some kind of error, bail. - if(evt.bmEvent == bmHUB_PORT_EVENT_RESET_COMPLETE || evt.bmEvent == bmHUB_PORT_EVENT_LS_RESET_COMPLETE) { - break; - } - delay(100); // simulate polling. - } - ClearPortFeature(HUB_FEATURE_C_PORT_RESET, port, 0); - ClearPortFeature(HUB_FEATURE_C_PORT_CONNECTION, port, 0); - delay(20); -} - -uint32_t USBHub::PortStatusChange(uint32_t port, HubEvent &evt) { - switch(evt.bmEvent) { - // Device connected event - case bmHUB_PORT_EVENT_CONNECT: - case bmHUB_PORT_EVENT_LS_CONNECT: - if(bResetInitiated) - return 0; - - ClearPortFeature(HUB_FEATURE_C_PORT_ENABLE, port, 0); - ClearPortFeature(HUB_FEATURE_C_PORT_CONNECTION, port, 0); - SetPortFeature(HUB_FEATURE_PORT_RESET, port, 0); - bResetInitiated = true; - return HUB_ERROR_PORT_HAS_BEEN_RESET; - - // Device disconnected event - case bmHUB_PORT_EVENT_DISCONNECT: - ClearPortFeature(HUB_FEATURE_C_PORT_ENABLE, port, 0); - ClearPortFeature(HUB_FEATURE_C_PORT_CONNECTION, port, 0); - bResetInitiated = false; - - UsbDeviceAddress a; - a.devAddress = 0; - a.bmHub = 0; - a.bmParent = bAddress; - a.bmAddress = port; - pUsb->ReleaseDevice(a.devAddress); - return 0; - - // Reset complete event - case bmHUB_PORT_EVENT_RESET_COMPLETE: - case bmHUB_PORT_EVENT_LS_RESET_COMPLETE: - ClearPortFeature(HUB_FEATURE_C_PORT_RESET, port, 0); - ClearPortFeature(HUB_FEATURE_C_PORT_CONNECTION, port, 0); - - delay(20); - - a.devAddress = bAddress; - - pUsb->Configuring(a.bmAddress, port, (evt.bmStatus & bmHUB_PORT_STATUS_PORT_LOW_SPEED)); - bResetInitiated = false; - break; - - } // switch (evt.bmEvent) - return 0; -} - -void PrintHubPortStatus(USBHub *hubptr, uint32_t addr, uint32_t port, uint32_t print_changes) { - uint8_t rcode = 0; - HubEvent evt; - - rcode = hubptr->GetPortStatus(port, 4, evt.evtBuff); - - if(rcode) { - USB_HOST_SERIAL.println("ERROR!"); - return; - } - USB_HOST_SERIAL.print("\r\nPort "); - USB_HOST_SERIAL.println(port, DEC); - - USB_HOST_SERIAL.println("Status"); - USB_HOST_SERIAL.print("CONNECTION:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_CONNECTION) > 0, DEC); - USB_HOST_SERIAL.print("ENABLE:\t\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_ENABLE) > 0, DEC); - USB_HOST_SERIAL.print("SUSPEND:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_SUSPEND) > 0, DEC); - USB_HOST_SERIAL.print("OVER_CURRENT:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_OVER_CURRENT) > 0, DEC); - USB_HOST_SERIAL.print("RESET:\t\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_RESET) > 0, DEC); - USB_HOST_SERIAL.print("POWER:\t\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_POWER) > 0, DEC); - USB_HOST_SERIAL.print("LOW_SPEED:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_LOW_SPEED) > 0, DEC); - USB_HOST_SERIAL.print("HIGH_SPEED:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_HIGH_SPEED) > 0, DEC); - USB_HOST_SERIAL.print("TEST:\t\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_TEST) > 0, DEC); - USB_HOST_SERIAL.print("INDICATOR:\t"); - USB_HOST_SERIAL.println((evt.bmStatus & bmHUB_PORT_STATUS_PORT_INDICATOR) > 0, DEC); - - if(!print_changes) - return; - - USB_HOST_SERIAL.println("\r\nChange"); - USB_HOST_SERIAL.print("CONNECTION:\t"); - USB_HOST_SERIAL.println((evt.bmChange & bmHUB_PORT_STATUS_C_PORT_CONNECTION) > 0, DEC); - USB_HOST_SERIAL.print("ENABLE:\t\t"); - USB_HOST_SERIAL.println((evt.bmChange & bmHUB_PORT_STATUS_C_PORT_ENABLE) > 0, DEC); - USB_HOST_SERIAL.print("SUSPEND:\t"); - USB_HOST_SERIAL.println((evt.bmChange & bmHUB_PORT_STATUS_C_PORT_SUSPEND) > 0, DEC); - USB_HOST_SERIAL.print("OVER_CURRENT:\t"); - USB_HOST_SERIAL.println((evt.bmChange & bmHUB_PORT_STATUS_C_PORT_OVER_CURRENT) > 0, DEC); - USB_HOST_SERIAL.print("RESET:\t\t"); - USB_HOST_SERIAL.println((evt.bmChange & bmHUB_PORT_STATUS_C_PORT_RESET) > 0, DEC); -} diff --git a/legacy/builder/test/libraries/USBHost/src/usbhub.h b/legacy/builder/test/libraries/USBHost/src/usbhub.h deleted file mode 100644 index 6a80a123137..00000000000 --- a/legacy/builder/test/libraries/USBHost/src/usbhub.h +++ /dev/null @@ -1,252 +0,0 @@ -/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved. - -This software may be distributed and modified under the terms of the GNU -General Public License version 2 (GPL2) as published by the Free Software -Foundation and appearing in the file GPL2.TXT included in the packaging of -this file. Please note that GPL2 Section 2[b] requires that all works based -on this software must also be made publicly available under the terms of -the GPL2 ("Copyleft"). - -Contact information -------------------- - -Circuits At Home, LTD -Web : http://www.circuitsathome.com -e-mail : support@circuitsathome.com - */ -#if !defined(__USBHUB_H__) -#define __USBHUB_H__ - -#include "Usb.h" - -#define USB_DESCRIPTOR_HUB 0x09 // Hub descriptor type - -// Hub Requests -#define bmREQ_CLEAR_HUB_FEATURE USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_CLEAR_PORT_FEATURE USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_CLEAR_TT_BUFFER USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_GET_HUB_DESCRIPTOR USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_GET_HUB_STATUS USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_GET_PORT_STATUS USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_RESET_TT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_SET_HUB_DESCRIPTOR USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_SET_HUB_FEATURE USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_DEVICE -#define bmREQ_SET_PORT_FEATURE USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_GET_TT_STATE USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER -#define bmREQ_STOP_TT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_OTHER - -// Hub Class Requests -#define HUB_REQUEST_CLEAR_TT_BUFFER 8 -#define HUB_REQUEST_RESET_TT 9 -#define HUB_REQUEST_GET_TT_STATE 10 -#define HUB_REQUEST_STOP_TT 11 - -// Hub Features -#define HUB_FEATURE_C_HUB_LOCAL_POWER 0 -#define HUB_FEATURE_C_HUB_OVER_CURRENT 1 -#define HUB_FEATURE_PORT_CONNECTION 0 -#define HUB_FEATURE_PORT_ENABLE 1 -#define HUB_FEATURE_PORT_SUSPEND 2 -#define HUB_FEATURE_PORT_OVER_CURRENT 3 -#define HUB_FEATURE_PORT_RESET 4 -#define HUB_FEATURE_PORT_POWER 8 -#define HUB_FEATURE_PORT_LOW_SPEED 9 -#define HUB_FEATURE_C_PORT_CONNECTION 16 -#define HUB_FEATURE_C_PORT_ENABLE 17 -#define HUB_FEATURE_C_PORT_SUSPEND 18 -#define HUB_FEATURE_C_PORT_OVER_CURRENT 19 -#define HUB_FEATURE_C_PORT_RESET 20 -#define HUB_FEATURE_PORT_TEST 21 -#define HUB_FEATURE_PORT_INDICATOR 22 - -// Hub Port Test Modes -#define HUB_PORT_TEST_MODE_J 1 -#define HUB_PORT_TEST_MODE_K 2 -#define HUB_PORT_TEST_MODE_SE0_NAK 3 -#define HUB_PORT_TEST_MODE_PACKET 4 -#define HUB_PORT_TEST_MODE_FORCE_ENABLE 5 - -// Hub Port Indicator Color -#define HUB_PORT_INDICATOR_AUTO 0 -#define HUB_PORT_INDICATOR_AMBER 1 -#define HUB_PORT_INDICATOR_GREEN 2 -#define HUB_PORT_INDICATOR_OFF 3 - -// Hub Port Status Bitmasks -#define bmHUB_PORT_STATUS_PORT_CONNECTION 0x0001 -#define bmHUB_PORT_STATUS_PORT_ENABLE 0x0002 -#define bmHUB_PORT_STATUS_PORT_SUSPEND 0x0004 -#define bmHUB_PORT_STATUS_PORT_OVER_CURRENT 0x0008 -#define bmHUB_PORT_STATUS_PORT_RESET 0x0010 -#define bmHUB_PORT_STATUS_PORT_POWER 0x0100 -#define bmHUB_PORT_STATUS_PORT_LOW_SPEED 0x0200 -#define bmHUB_PORT_STATUS_PORT_HIGH_SPEED 0x0400 -#define bmHUB_PORT_STATUS_PORT_TEST 0x0800 -#define bmHUB_PORT_STATUS_PORT_INDICATOR 0x1000 - -// Hub Port Status Change Bitmasks (used one byte instead of two) -#define bmHUB_PORT_STATUS_C_PORT_CONNECTION 0x0001 -#define bmHUB_PORT_STATUS_C_PORT_ENABLE 0x0002 -#define bmHUB_PORT_STATUS_C_PORT_SUSPEND 0x0004 -#define bmHUB_PORT_STATUS_C_PORT_OVER_CURRENT 0x0008 -#define bmHUB_PORT_STATUS_C_PORT_RESET 0x0010 - -// Hub Status Bitmasks (used one byte instead of two) -#define bmHUB_STATUS_LOCAL_POWER_SOURCE 0x01 -#define bmHUB_STATUS_OVER_CURRENT 0x12 - -// Hub Status Change Bitmasks (used one byte instead of two) -#define bmHUB_STATUS_C_LOCAL_POWER_SOURCE 0x01 -#define bmHUB_STATUS_C_OVER_CURRENT 0x12 - - -// Hub Port Configuring Substates -#define USB_STATE_HUB_PORT_CONFIGURING 0xb0 -#define USB_STATE_HUB_PORT_POWERED_OFF 0xb1 -#define USB_STATE_HUB_PORT_WAIT_FOR_POWER_GOOD 0xb2 -#define USB_STATE_HUB_PORT_DISCONNECTED 0xb3 -#define USB_STATE_HUB_PORT_DISABLED 0xb4 -#define USB_STATE_HUB_PORT_RESETTING 0xb5 -#define USB_STATE_HUB_PORT_ENABLED 0xb6 - -// Additional Error Codes -#define HUB_ERROR_PORT_HAS_BEEN_RESET 0xb1 - -// The bit mask to check for all necessary state bits -#define bmHUB_PORT_STATUS_ALL_MAIN ((0UL | bmHUB_PORT_STATUS_C_PORT_CONNECTION | bmHUB_PORT_STATUS_C_PORT_ENABLE | bmHUB_PORT_STATUS_C_PORT_SUSPEND | bmHUB_PORT_STATUS_C_PORT_RESET) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_ENABLE | bmHUB_PORT_STATUS_PORT_CONNECTION | bmHUB_PORT_STATUS_PORT_SUSPEND) - -// Bit mask to check for DISABLED state in HubEvent::bmStatus field -#define bmHUB_PORT_STATE_CHECK_DISABLED (0x0000 | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_ENABLE | bmHUB_PORT_STATUS_PORT_CONNECTION | bmHUB_PORT_STATUS_PORT_SUSPEND) - -// Hub Port States -#define bmHUB_PORT_STATE_DISABLED (0x0000 | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_CONNECTION) - -// Hub Port Events -#define bmHUB_PORT_EVENT_CONNECT (((0UL | bmHUB_PORT_STATUS_C_PORT_CONNECTION) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_CONNECTION) -#define bmHUB_PORT_EVENT_DISCONNECT (((0UL | bmHUB_PORT_STATUS_C_PORT_CONNECTION) << 16) | bmHUB_PORT_STATUS_PORT_POWER) -#define bmHUB_PORT_EVENT_RESET_COMPLETE (((0UL | bmHUB_PORT_STATUS_C_PORT_RESET) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_ENABLE | bmHUB_PORT_STATUS_PORT_CONNECTION) - -#define bmHUB_PORT_EVENT_LS_CONNECT (((0UL | bmHUB_PORT_STATUS_C_PORT_CONNECTION) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_CONNECTION | bmHUB_PORT_STATUS_PORT_LOW_SPEED) -#define bmHUB_PORT_EVENT_LS_RESET_COMPLETE (((0UL | bmHUB_PORT_STATUS_C_PORT_RESET) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_ENABLE | bmHUB_PORT_STATUS_PORT_CONNECTION | bmHUB_PORT_STATUS_PORT_LOW_SPEED) -#define bmHUB_PORT_EVENT_LS_PORT_ENABLED (((0UL | bmHUB_PORT_STATUS_C_PORT_CONNECTION | bmHUB_PORT_STATUS_C_PORT_ENABLE) << 16) | bmHUB_PORT_STATUS_PORT_POWER | bmHUB_PORT_STATUS_PORT_ENABLE | bmHUB_PORT_STATUS_PORT_CONNECTION | bmHUB_PORT_STATUS_PORT_LOW_SPEED) - -struct HubDescriptor { - uint32_t bDescLength; // descriptor length - uint32_t bDescriptorType; // descriptor type - uint32_t bNbrPorts; // number of ports a hub equiped with - - struct { - uint32_t LogPwrSwitchMode : 2; - uint32_t CompoundDevice : 1; - uint32_t OverCurrentProtectMode : 2; - uint32_t TTThinkTime : 2; - uint32_t PortIndicatorsSupported : 1; - uint32_t Reserved : 24; - } __attribute__((packed)); - - uint32_t bPwrOn2PwrGood; - uint32_t bHubContrCurrent; -} __attribute__((packed)); - -struct HubEvent { - - union { - - struct { - uint32_t bmStatus; // port status bits - uint32_t bmChange; // port status change bits - } __attribute__((packed)); - uint32_t bmEvent; - uint8_t evtBuff[4]; - }; -} __attribute__((packed)); - -class USBHub : USBDeviceConfig { - static bool bResetInitiated; // True when reset is triggered - - USBHost *pUsb; // USB class instance pointer - - EpInfo epInfo[2]; // interrupt endpoint info structure - - uint32_t bAddress; // address - uint32_t bNbrPorts; // number of ports - // uint8_t bInitState; // initialization state variable - uint32_t qNextPollTime; // next poll time - uint32_t bPollEnable; // poll enable flag - - uint32_t CheckHubStatus(); - uint32_t PortStatusChange(uint32_t port, HubEvent &evt); - -public: - USBHub(USBHost *p); - - uint32_t ClearHubFeature(uint32_t fid); - uint32_t ClearPortFeature(uint32_t fid, uint32_t port, uint32_t sel = 0); - uint32_t GetHubDescriptor(uint32_t index, uint32_t nbytes, uint8_t *dataptr); - uint32_t GetHubStatus(uint32_t nbytes, uint8_t* dataptr); - uint32_t GetPortStatus(uint32_t port, uint32_t nbytes, uint8_t* dataptr); - uint32_t SetHubDescriptor(uint32_t port, uint32_t nbytes, uint8_t* dataptr); - uint32_t SetHubFeature(uint32_t fid); - uint32_t SetPortFeature(uint32_t fid, uint32_t port, uint32_t sel = 0); - - void PrintHubStatus(); - - virtual uint32_t Init(uint32_t parent, uint32_t port, uint32_t lowspeed); - virtual uint32_t Release(); - virtual uint32_t Poll(); - virtual void ResetHubPort(uint32_t port); - - virtual uint32_t GetAddress() { - return bAddress; - }; - - virtual uint32_t DEVCLASSOK(uint32_t klass) { - return (klass == 0x09); - } - -}; - -// Clear Hub Feature - -inline uint32_t USBHub::ClearHubFeature(uint32_t fid) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_CLEAR_HUB_FEATURE, USB_REQUEST_CLEAR_FEATURE, fid, 0, 0, 0, 0, NULL, NULL)); -} -// Clear Port Feature - -inline uint32_t USBHub::ClearPortFeature(uint32_t fid, uint32_t port, uint32_t sel) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_CLEAR_PORT_FEATURE, USB_REQUEST_CLEAR_FEATURE, fid, 0, ((0x0000 | port) | (sel << 8)), 0, 0, NULL, NULL)); -} -// Get Hub Descriptor - -inline uint32_t USBHub::GetHubDescriptor(uint32_t index, uint32_t nbytes, uint8_t *dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_GET_HUB_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR, index, 0x29, 0, nbytes, nbytes, dataptr, NULL)); -} -// Get Hub Status - -inline uint32_t USBHub::GetHubStatus(uint32_t nbytes, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_GET_HUB_STATUS, USB_REQUEST_GET_STATUS, 0, 0, 0x0000, nbytes, nbytes, dataptr, NULL)); -} -// Get Port Status - -inline uint32_t USBHub::GetPortStatus(uint32_t port, uint32_t nbytes, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_GET_PORT_STATUS, USB_REQUEST_GET_STATUS, 0, 0, port, nbytes, nbytes, dataptr, NULL)); -} -// Set Hub Descriptor - -inline uint32_t USBHub::SetHubDescriptor(uint32_t port, uint32_t nbytes, uint8_t* dataptr) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_SET_HUB_DESCRIPTOR, USB_REQUEST_SET_DESCRIPTOR, 0, 0, port, nbytes, nbytes, dataptr, NULL)); -} -// Set Hub Feature - -inline uint32_t USBHub::SetHubFeature(uint32_t fid) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_SET_HUB_FEATURE, USB_REQUEST_SET_FEATURE, fid, 0, 0, 0, 0, NULL, NULL)); -} -// Set Port Feature - -inline uint32_t USBHub::SetPortFeature(uint32_t fid, uint32_t port, uint32_t sel) { - return ( pUsb->ctrlReq(bAddress, 0, bmREQ_SET_PORT_FEATURE, USB_REQUEST_SET_FEATURE, fid, 0, (((0x0000 | sel) << 8) | port), 0, 0, NULL, NULL)); -} - -void PrintHubPortStatus(USBHost *usbptr, uint32_t addr, uint32_t port, uint32_t print_changes = false); - -#endif // __USBHUB_H__ diff --git a/legacy/builder/test/libraries/testlib1/testlib1.h b/legacy/builder/test/libraries/testlib1/testlib1.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/testlib2/testlib2.h b/legacy/builder/test/libraries/testlib2/testlib2.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/testlib3/testlib3.h b/legacy/builder/test/libraries/testlib3/testlib3.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/testlib4/testlib4.h b/legacy/builder/test/libraries/testlib4/testlib4.h deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/wronglib/library.properties b/legacy/builder/test/libraries/wronglib/library.properties deleted file mode 100644 index b235c667680..00000000000 --- a/legacy/builder/test/libraries/wronglib/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=wronglib -version=1.0 -author=Arduino -maintainer=Arduino -sentence=sentence -paragraph=paragraph -url=url -architectures=* -category=Other diff --git a/legacy/builder/test/libraries/wronglib/src/.gitkeep b/legacy/builder/test/libraries/wronglib/src/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries/wronglib/utility/.gitkeep b/legacy/builder/test/libraries/wronglib/utility/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/libraries_loader_test.go b/legacy/builder/test/libraries_loader_test.go deleted file mode 100644 index 5866fbcfa98..00000000000 --- a/legacy/builder/test/libraries_loader_test.go +++ /dev/null @@ -1,267 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "path/filepath" - "sort" - "testing" - - "github.com/arduino/arduino-cli/arduino/builder/detector" - "github.com/arduino/arduino-cli/arduino/libraries" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func extractLibraries(libs map[string]libraries.List) []*libraries.Library { - res := []*libraries.Library{} - for _, lib := range libs { - for _, libAlternative := range lib { - res = append(res, libAlternative) - } - } - return res -} - -func TestLoadLibrariesAVR(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "arduino:avr:leonardo") - defer cleanUpBuilderTestContext(t, ctx) - - lm, libsResolver, _, err := detector.LibrariesLoader( - false, nil, - ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs, - ctx.ActualPlatform, ctx.TargetPlatform, - ) - require.NoError(t, err) - - librariesFolders := lm.LibrariesDir - require.Equal(t, 3, len(librariesFolders)) - require.True(t, Abs(t, paths.New("downloaded_libraries")).EquivalentTo(librariesFolders[0].Path)) - require.True(t, Abs(t, paths.New("downloaded_hardware", "arduino", "avr", "libraries")).EquivalentTo(librariesFolders[1].Path)) - require.True(t, Abs(t, paths.New("libraries")).EquivalentTo(librariesFolders[2].Path)) - - libs := extractLibraries(lm.Libraries) - require.Equal(t, 24, len(libs)) - - sort.Sort(ByLibraryName(libs)) - - idx := 0 - - require.Equal(t, "ANewLibrary-master", libs[idx].Name) - - idx++ - require.Equal(t, "Adafruit PN532", libs[idx].Name) - require.True(t, Abs(t, paths.New("downloaded_libraries/Adafruit_PN532")).EquivalentTo(libs[idx].InstallDir)) - require.True(t, Abs(t, paths.New("downloaded_libraries/Adafruit_PN532")).EquivalentTo(libs[idx].SourceDir)) - require.Equal(t, 1, len(libs[idx].Architectures)) - require.Equal(t, constants.LIBRARY_ALL_ARCHS, libs[idx].Architectures[0]) - require.False(t, libs[idx].IsLegacy) - - idx++ - require.Equal(t, "Audio", libs[idx].Name) - - idx++ - require.Equal(t, "Balanduino", libs[idx].Name) - require.True(t, libs[idx].IsLegacy) - - idx++ - bridgeLib := libs[idx] - require.Equal(t, "Bridge", bridgeLib.Name) - require.True(t, Abs(t, paths.New("downloaded_libraries/Bridge")).EquivalentTo(bridgeLib.InstallDir)) - require.True(t, Abs(t, paths.New("downloaded_libraries/Bridge/src")).EquivalentTo(bridgeLib.SourceDir)) - require.Equal(t, 1, len(bridgeLib.Architectures)) - require.Equal(t, constants.LIBRARY_ALL_ARCHS, bridgeLib.Architectures[0]) - require.Equal(t, "Arduino", bridgeLib.Author) - require.Equal(t, "Arduino ", bridgeLib.Maintainer) - - idx++ - require.Equal(t, "CapacitiveSensor", libs[idx].Name) - idx++ - require.Equal(t, "EEPROM", libs[idx].Name) - idx++ - require.Equal(t, "Ethernet", libs[idx].Name) - idx++ - require.Equal(t, "FakeAudio", libs[idx].Name) - idx++ - require.Equal(t, "FastLED", libs[idx].Name) - idx++ - require.Equal(t, "HID", libs[idx].Name) - idx++ - require.Equal(t, "IRremote", libs[idx].Name) - idx++ - require.Equal(t, "Robot IR Remote", libs[idx].Name) - idx++ - require.Equal(t, "SPI", libs[idx].Name) - idx++ - require.Equal(t, "SPI", libs[idx].Name) - idx++ - require.Equal(t, "ShouldNotRecurseWithOldLibs", libs[idx].Name) - idx++ - require.Equal(t, "SoftwareSerial", libs[idx].Name) - idx++ - require.Equal(t, "USBHost", libs[idx].Name) - idx++ - require.Equal(t, "Wire", libs[idx].Name) - - libs = libsResolver.AlternativesFor("Audio.h") - require.Len(t, libs, 2) - sort.Sort(ByLibraryName(libs)) - require.Equal(t, "Audio", libs[0].Name) - require.Equal(t, "FakeAudio", libs[1].Name) - - libs = libsResolver.AlternativesFor("FakeAudio.h") - require.Len(t, libs, 1) - require.Equal(t, "FakeAudio", libs[0].Name) - - libs = libsResolver.AlternativesFor("Adafruit_PN532.h") - require.Len(t, libs, 1) - require.Equal(t, "Adafruit PN532", libs[0].Name) - - libs = libsResolver.AlternativesFor("IRremote.h") - require.Len(t, libs, 1) - require.Equal(t, "IRremote", libs[0].Name) -} - -func TestLoadLibrariesSAM(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "arduino:sam:arduino_due_x_dbg") - defer cleanUpBuilderTestContext(t, ctx) - - lm, libsResolver, _, err := detector.LibrariesLoader( - false, nil, - ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs, - ctx.ActualPlatform, ctx.TargetPlatform, - ) - require.NoError(t, err) - - librariesFolders := lm.LibrariesDir - require.Equal(t, 3, len(librariesFolders)) - require.True(t, Abs(t, paths.New("downloaded_libraries")).EquivalentTo(librariesFolders[0].Path)) - require.True(t, Abs(t, paths.New("downloaded_hardware", "arduino", "sam", "libraries")).EquivalentTo(librariesFolders[1].Path)) - require.True(t, Abs(t, paths.New("libraries")).EquivalentTo(librariesFolders[2].Path)) - - libraries := extractLibraries(lm.Libraries) - require.Equal(t, 22, len(libraries)) - - sort.Sort(ByLibraryName(libraries)) - - idx := 0 - require.Equal(t, "ANewLibrary-master", libraries[idx].Name) - idx++ - require.Equal(t, "Adafruit PN532", libraries[idx].Name) - idx++ - require.Equal(t, "Audio", libraries[idx].Name) - idx++ - require.Equal(t, "Balanduino", libraries[idx].Name) - idx++ - require.Equal(t, "Bridge", libraries[idx].Name) - idx++ - require.Equal(t, "CapacitiveSensor", libraries[idx].Name) - idx++ - require.Equal(t, "Ethernet", libraries[idx].Name) - idx++ - require.Equal(t, "FakeAudio", libraries[idx].Name) - idx++ - require.Equal(t, "FastLED", libraries[idx].Name) - idx++ - require.Equal(t, "HID", libraries[idx].Name) - idx++ - require.Equal(t, "IRremote", libraries[idx].Name) - idx++ - require.Equal(t, "Robot IR Remote", libraries[idx].Name) - idx++ - require.Equal(t, "SPI", libraries[idx].Name) - idx++ - require.Equal(t, "SPI", libraries[idx].Name) - idx++ - require.Equal(t, "ShouldNotRecurseWithOldLibs", libraries[idx].Name) - idx++ - require.Equal(t, "USBHost", libraries[idx].Name) - idx++ - require.Equal(t, "Wire", libraries[idx].Name) - - libs := libsResolver.AlternativesFor("Audio.h") - require.Len(t, libs, 2) - sort.Sort(ByLibraryName(libs)) - require.Equal(t, "Audio", libs[0].Name) - require.Equal(t, "FakeAudio", libs[1].Name) - - libs = libsResolver.AlternativesFor("FakeAudio.h") - require.Len(t, libs, 1) - require.Equal(t, "FakeAudio", libs[0].Name) - - libs = libsResolver.AlternativesFor("IRremote.h") - require.Len(t, libs, 1) - require.Equal(t, "IRremote", libs[0].Name) -} - -func TestLoadLibrariesAVRNoDuplicateLibrariesFolders(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries", filepath.Join("downloaded_hardware", "arduino", "avr", "libraries")), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "arduino:avr:leonardo") - defer cleanUpBuilderTestContext(t, ctx) - - lm, _, _, err := detector.LibrariesLoader( - false, nil, - ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs, - ctx.ActualPlatform, ctx.TargetPlatform, - ) - require.NoError(t, err) - - librariesFolders := lm.LibrariesDir - require.Equal(t, 3, len(librariesFolders)) - require.True(t, Abs(t, paths.New("downloaded_libraries")).EquivalentTo(librariesFolders[0].Path)) - require.True(t, Abs(t, paths.New("downloaded_hardware", "arduino", "avr", "libraries")).EquivalentTo(librariesFolders[1].Path)) - require.True(t, Abs(t, paths.New("libraries")).EquivalentTo(librariesFolders[2].Path)) -} - -func TestLoadLibrariesMyAVRPlatform(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "user_hardware", "downloaded_hardware"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries", filepath.Join("downloaded_hardware", "arduino", "avr", "libraries")), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "my_avr_platform:avr:custom_yun") - defer cleanUpBuilderTestContext(t, ctx) - - lm, _, _, err := detector.LibrariesLoader( - false, nil, - ctx.BuiltInLibrariesDirs, nil, ctx.OtherLibrariesDirs, - ctx.ActualPlatform, ctx.TargetPlatform, - ) - require.NoError(t, err) - - librariesFolders := lm.LibrariesDir - require.Equal(t, 4, len(librariesFolders)) - require.True(t, Abs(t, paths.New("downloaded_libraries")).EquivalentTo(librariesFolders[0].Path)) - require.True(t, Abs(t, paths.New("downloaded_hardware", "arduino", "avr", "libraries")).EquivalentTo(librariesFolders[1].Path)) - require.True(t, Abs(t, paths.New("user_hardware", "my_avr_platform", "avr", "libraries")).EquivalentTo(librariesFolders[2].Path)) - require.True(t, Abs(t, paths.New("libraries")).EquivalentTo(librariesFolders[3].Path)) -} diff --git a/legacy/builder/test/load_previous_build_options_map_test.go b/legacy/builder/test/load_previous_build_options_map_test.go deleted file mode 100644 index 88613fb9034..00000000000 --- a/legacy/builder/test/load_previous_build_options_map_test.go +++ /dev/null @@ -1,51 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" - "github.com/stretchr/testify/require" -) - -func TestLoadPreviousBuildOptionsMap(t *testing.T) { - ctx := &types.Context{} - - buildPath := SetupBuildPath(t, ctx) - defer buildPath.RemoveAll() - - err := buildPath.Join(constants.BUILD_OPTIONS_FILE).WriteFile([]byte("test")) - require.NoError(t, err) - - buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(ctx.BuildPath) - require.NoError(t, err) - - require.Equal(t, "test", buildOptionsJsonPrevious) -} - -func TestLoadPreviousBuildOptionsMapMissingFile(t *testing.T) { - ctx := &types.Context{} - - buildPath := SetupBuildPath(t, ctx) - defer buildPath.RemoveAll() - - buildOptionsJsonPrevious, err := builder.LoadPreviousBuildOptionsMap(ctx.BuildPath) - require.NoError(t, err) - require.Empty(t, buildOptionsJsonPrevious) -} diff --git a/legacy/builder/test/merge_sketch_with_bootloader_test.go b/legacy/builder/test/merge_sketch_with_bootloader_test.go deleted file mode 100644 index f1d9224b840..00000000000 --- a/legacy/builder/test/merge_sketch_with_bootloader_test.go +++ /dev/null @@ -1,230 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "fmt" - "path/filepath" - "strings" - "testing" - - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func TestMergeSketchWithBootloader(t *testing.T) { - ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") - defer cleanUpBuilderTestContext(t, ctx) - - buildPath := ctx.BuildPath - err := buildPath.Join("sketch").MkdirAll() - require.NoError(t, err) - - fakeSketchHex := `:100000000C9434000C9446000C9446000C9446006A -:100010000C9446000C9446000C9446000C94460048 -:100020000C9446000C9446000C9446000C94460038 -:100030000C9446000C9446000C9446000C94460028 -:100040000C9448000C9446000C9446000C94460016 -:100050000C9446000C9446000C9446000C94460008 -:100060000C9446000C94460011241FBECFEFD8E03C -:10007000DEBFCDBF21E0A0E0B1E001C01D92A930FC -:10008000B207E1F70E9492000C94DC000C9400008F -:100090001F920F920FB60F9211242F933F938F93BD -:1000A0009F93AF93BF938091050190910601A0911A -:1000B0000701B09108013091040123E0230F2D378F -:1000C00020F40196A11DB11D05C026E8230F02965C -:1000D000A11DB11D20930401809305019093060199 -:1000E000A0930701B0930801809100019091010154 -:1000F000A0910201B09103010196A11DB11D809351 -:10010000000190930101A0930201B0930301BF91FC -:10011000AF919F918F913F912F910F900FBE0F90B4 -:100120001F901895789484B5826084BD84B58160F1 -:1001300084BD85B5826085BD85B5816085BD8091B2 -:100140006E00816080936E0010928100809181002A -:100150008260809381008091810081608093810022 -:10016000809180008160809380008091B1008460E4 -:100170008093B1008091B00081608093B000809145 -:100180007A00846080937A0080917A008260809304 -:100190007A0080917A00816080937A0080917A0061 -:1001A000806880937A001092C100C0E0D0E0209770 -:0C01B000F1F30E940000FBCFF894FFCF99 -:00000001FF -` - err = buildPath.Join("sketch", "sketch1.ino.hex").WriteFile([]byte(fakeSketchHex)) - require.NoError(t, err) - - builderLogger := logger.New(nil, nil, false, "") - err = builder.MergeSketchWithBootloader( - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildPath, ctx.Builder.Sketch(), ctx.BuildProperties, - builderLogger, - ) - require.NoError(t, err) - - bytes, err := buildPath.Join("sketch", "sketch1.ino.with_bootloader.hex").ReadFile() - require.NoError(t, err) - mergedSketchHex := string(bytes) - - require.Contains(t, mergedSketchHex, ":100000000C9434000C9446000C9446000C9446006A\n") - require.True(t, strings.HasSuffix(mergedSketchHex, ":00000001FF\n")) -} - -func TestMergeSketchWithBootloaderSketchInBuildPath(t *testing.T) { - ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") - defer cleanUpBuilderTestContext(t, ctx) - - buildPath := ctx.BuildPath - err := buildPath.Join("sketch").MkdirAll() - require.NoError(t, err) - - fakeSketchHex := `:100000000C9434000C9446000C9446000C9446006A -:100010000C9446000C9446000C9446000C94460048 -:100020000C9446000C9446000C9446000C94460038 -:100030000C9446000C9446000C9446000C94460028 -:100040000C9448000C9446000C9446000C94460016 -:100050000C9446000C9446000C9446000C94460008 -:100060000C9446000C94460011241FBECFEFD8E03C -:10007000DEBFCDBF21E0A0E0B1E001C01D92A930FC -:10008000B207E1F70E9492000C94DC000C9400008F -:100090001F920F920FB60F9211242F933F938F93BD -:1000A0009F93AF93BF938091050190910601A0911A -:1000B0000701B09108013091040123E0230F2D378F -:1000C00020F40196A11DB11D05C026E8230F02965C -:1000D000A11DB11D20930401809305019093060199 -:1000E000A0930701B0930801809100019091010154 -:1000F000A0910201B09103010196A11DB11D809351 -:10010000000190930101A0930201B0930301BF91FC -:10011000AF919F918F913F912F910F900FBE0F90B4 -:100120001F901895789484B5826084BD84B58160F1 -:1001300084BD85B5826085BD85B5816085BD8091B2 -:100140006E00816080936E0010928100809181002A -:100150008260809381008091810081608093810022 -:10016000809180008160809380008091B1008460E4 -:100170008093B1008091B00081608093B000809145 -:100180007A00846080937A0080917A008260809304 -:100190007A0080917A00816080937A0080917A0061 -:1001A000806880937A001092C100C0E0D0E0209770 -:0C01B000F1F30E940000FBCFF894FFCF99 -:00000001FF -` - err = buildPath.Join("sketch1.ino.hex").WriteFile([]byte(fakeSketchHex)) - require.NoError(t, err) - - builderLogger := logger.New(nil, nil, false, "") - err = builder.MergeSketchWithBootloader( - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildPath, ctx.Builder.Sketch(), ctx.BuildProperties, - builderLogger, - ) - require.NoError(t, err) - - bytes, err := buildPath.Join("sketch1.ino.with_bootloader.hex").ReadFile() - require.NoError(t, err) - mergedSketchHex := string(bytes) - - fmt.Println(string(mergedSketchHex)) - require.Contains(t, mergedSketchHex, ":100000000C9434000C9446000C9446000C9446006A\n") - require.True(t, strings.HasSuffix(mergedSketchHex, ":00000001FF\n")) -} - -func TestMergeSketchWithBootloaderWhenNoBootloaderAvailable(t *testing.T) { - ctx := prepareBuilderTestContext(t, nil, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") - defer cleanUpBuilderTestContext(t, ctx) - - buildPath := ctx.BuildPath - buildProperties := ctx.BuildProperties - buildProperties.Remove(constants.BUILD_PROPERTIES_BOOTLOADER_NOBLINK) - buildProperties.Remove(constants.BUILD_PROPERTIES_BOOTLOADER_FILE) - - builderLogger := logger.New(nil, nil, false, "") - err := builder.MergeSketchWithBootloader( - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildPath, ctx.Builder.Sketch(), ctx.BuildProperties, - builderLogger, - ) - require.NoError(t, err) - - exist, err := buildPath.Join("sketch.ino.with_bootloader.hex").ExistCheck() - require.NoError(t, err) - require.False(t, exist) -} - -func TestMergeSketchWithBootloaderPathIsParameterized(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware", "user_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - } - ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:mymega:cpu=atmega2560") - defer cleanUpBuilderTestContext(t, ctx) - - buildPath := ctx.BuildPath - err := buildPath.Join("sketch").MkdirAll() - require.NoError(t, err) - - fakeSketchHex := `:100000000C9434000C9446000C9446000C9446006A -:100010000C9446000C9446000C9446000C94460048 -:100020000C9446000C9446000C9446000C94460038 -:100030000C9446000C9446000C9446000C94460028 -:100040000C9448000C9446000C9446000C94460016 -:100050000C9446000C9446000C9446000C94460008 -:100060000C9446000C94460011241FBECFEFD8E03C -:10007000DEBFCDBF21E0A0E0B1E001C01D92A930FC -:10008000B207E1F70E9492000C94DC000C9400008F -:100090001F920F920FB60F9211242F933F938F93BD -:1000A0009F93AF93BF938091050190910601A0911A -:1000B0000701B09108013091040123E0230F2D378F -:1000C00020F40196A11DB11D05C026E8230F02965C -:1000D000A11DB11D20930401809305019093060199 -:1000E000A0930701B0930801809100019091010154 -:1000F000A0910201B09103010196A11DB11D809351 -:10010000000190930101A0930201B0930301BF91FC -:10011000AF919F918F913F912F910F900FBE0F90B4 -:100120001F901895789484B5826084BD84B58160F1 -:1001300084BD85B5826085BD85B5816085BD8091B2 -:100140006E00816080936E0010928100809181002A -:100150008260809381008091810081608093810022 -:10016000809180008160809380008091B1008460E4 -:100170008093B1008091B00081608093B000809145 -:100180007A00846080937A0080917A008260809304 -:100190007A0080917A00816080937A0080917A0061 -:1001A000806880937A001092C100C0E0D0E0209770 -:0C01B000F1F30E940000FBCFF894FFCF99 -:00000001FF -` - err = buildPath.Join("sketch", "sketch1.ino.hex").WriteFile([]byte(fakeSketchHex)) - require.NoError(t, err) - - builderLogger := logger.New(nil, nil, false, "") - err = builder.MergeSketchWithBootloader( - ctx.OnlyUpdateCompilationDatabase, - ctx.BuildPath, ctx.Builder.Sketch(), ctx.BuildProperties, - builderLogger, - ) - require.NoError(t, err) - - bytes, err := buildPath.Join("sketch", "sketch1.ino.with_bootloader.hex").ReadFile() - require.NoError(t, err) - mergedSketchHex := string(bytes) - - require.Contains(t, mergedSketchHex, ":100000000C9434000C9446000C9446000C9446006A\n") - require.True(t, strings.HasSuffix(mergedSketchHex, ":00000001FF\n")) -} diff --git a/legacy/builder/test/setup_build_properties_test.go b/legacy/builder/test/setup_build_properties_test.go deleted file mode 100644 index 9b8d7236a31..00000000000 --- a/legacy/builder/test/setup_build_properties_test.go +++ /dev/null @@ -1,154 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "path/filepath" - "testing" - - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" - "github.com/stretchr/testify/require" -) - -func TestSetupBuildProperties(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware", "user_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - } - ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") - defer cleanUpBuilderTestContext(t, ctx) - - buildProperties := ctx.BuildProperties - - require.Equal(t, "ARDUINO", buildProperties.Get("software")) - - require.Equal(t, "uno", buildProperties.Get("_id")) - require.Equal(t, "Arduino/Genuino Uno", buildProperties.Get("name")) - require.Equal(t, "0x2341", buildProperties.Get("vid.0")) - require.Equal(t, "\"{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}\"", buildProperties.Get("recipe.c.o.pattern")) - require.Equal(t, "{path}/etc/avrdude.conf", buildProperties.Get("tools.avrdude.config.path")) - - requireEquivalentPaths(t, buildProperties.Get("runtime.platform.path"), "downloaded_hardware/arduino/avr") - requireEquivalentPaths(t, buildProperties.Get("runtime.hardware.path"), "downloaded_hardware/arduino") - require.Equal(t, "10607", buildProperties.Get("runtime.ide.version")) - require.NotEmpty(t, buildProperties.Get("runtime.os")) - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.arm-none-eabi-gcc.path"), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path"), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avrdude-6.0.1-arduino5.path"), "tools_builtin/avr", "downloaded_tools/avrdude/6.0.1-arduino5") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avrdude.path"), "tools_builtin/avr", "downloaded_tools/avrdude/6.0.1-arduino5") - - bossacPath := buildProperties.Get("runtime.tools.bossac.path") - bossac161Path := buildProperties.Get("runtime.tools.bossac-1.6.1-arduino.path") - bossac15Path := buildProperties.Get("runtime.tools.bossac-1.5-arduino.path") - requireEquivalentPaths(t, bossac161Path, "downloaded_tools/bossac/1.6.1-arduino") - requireEquivalentPaths(t, bossac15Path, "downloaded_tools/bossac/1.5-arduino") - requireEquivalentPaths(t, bossacPath, bossac161Path, bossac15Path) - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avr-gcc.path"), "downloaded_tools/avr-gcc/4.8.1-arduino5", "tools_builtin/avr") - - requireEquivalentPaths(t, buildProperties.Get("build.source.path"), "sketch1") - - require.True(t, buildProperties.ContainsKey("extra.time.utc")) - require.True(t, buildProperties.ContainsKey("extra.time.local")) - require.True(t, buildProperties.ContainsKey("extra.time.zone")) - require.True(t, buildProperties.ContainsKey("extra.time.dst")) -} - -func TestSetupBuildPropertiesWithSomeCustomOverrides(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - CustomBuildProperties: []string{"name=fake name", "tools.avrdude.config.path=non existent path with space and a ="}, - } - ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") - defer cleanUpBuilderTestContext(t, ctx) - customProps, err := properties.LoadFromSlice(ctx.CustomBuildProperties) - require.NoError(t, err) - ctx.BuildProperties.Merge(customProps) - - buildProperties := ctx.BuildProperties - require.Equal(t, "ARDUINO", buildProperties.Get("software")) - require.Equal(t, "uno", buildProperties.Get("_id")) - require.Equal(t, "fake name", buildProperties.Get("name")) - require.Equal(t, "\"{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}\"", buildProperties.Get("recipe.c.o.pattern")) - require.Equal(t, "non existent path with space and a =", buildProperties.Get("tools.avrdude.config.path")) -} - -func TestSetupBuildPropertiesUserHardware(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware", "user_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - } - ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:custom_yun") - defer cleanUpBuilderTestContext(t, ctx) - - buildProperties := ctx.BuildProperties - - require.Equal(t, "ARDUINO", buildProperties.Get("software")) - - require.Equal(t, "custom_yun", buildProperties.Get("_id")) - require.Equal(t, "caterina/Caterina-custom_yun.hex", buildProperties.Get("bootloader.file")) - requireEquivalentPaths(t, buildProperties.Get("runtime.platform.path"), filepath.Join("user_hardware", "my_avr_platform", "avr")) - requireEquivalentPaths(t, buildProperties.Get("runtime.hardware.path"), filepath.Join("user_hardware", "my_avr_platform")) -} - -func TestSetupBuildPropertiesWithMissingPropsFromParentPlatformTxtFiles(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware", "user_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - } - ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:custom_yun") - defer cleanUpBuilderTestContext(t, ctx) - - buildProperties := ctx.BuildProperties - - require.Equal(t, "ARDUINO", buildProperties.Get("software")) - - require.Equal(t, "custom_yun", buildProperties.Get("_id")) - require.Equal(t, "Arduino Yún", buildProperties.Get("name")) - require.Equal(t, "0x2341", buildProperties.Get("vid.0")) - require.Equal(t, "\"{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}\"", buildProperties.Get("recipe.c.o.pattern")) - require.Equal(t, "{path}/etc/avrdude.conf", buildProperties.Get("tools.avrdude.config.path")) - - requireEquivalentPaths(t, buildProperties.Get("runtime.platform.path"), "user_hardware/my_avr_platform/avr") - requireEquivalentPaths(t, buildProperties.Get("runtime.hardware.path"), "user_hardware/my_avr_platform") - require.Equal(t, "10607", buildProperties.Get("runtime.ide.version")) - require.NotEmpty(t, buildProperties.Get("runtime.os")) - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.arm-none-eabi-gcc.path"), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.arm-none-eabi-gcc-4.8.3-2014q1.path"), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.bossac-1.6.1-arduino.path"), "downloaded_tools/bossac/1.6.1-arduino") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.bossac-1.5-arduino.path"), "downloaded_tools/bossac/1.5-arduino") - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.bossac.path"), "downloaded_tools/bossac/1.6.1-arduino", "downloaded_tools/bossac/1.5-arduino") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avrdude.path"), "downloaded_tools/avrdude/6.0.1-arduino5", "tools_builtin/avr") - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avrdude-6.0.1-arduino5.path"), "downloaded_tools/avrdude/6.0.1-arduino5", "tools_builtin/avr") - - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avr-gcc.path"), "downloaded_tools/avr-gcc/4.8.1-arduino5", "tools_builtin/avr") - requireEquivalentPaths(t, buildProperties.Get("runtime.tools.avr-gcc-4.8.1-arduino5.path"), "downloaded_tools/avr-gcc/4.8.1-arduino5", "tools_builtin/avr") - - requireEquivalentPaths(t, buildProperties.Get("build.source.path"), "sketch1") - - require.True(t, buildProperties.ContainsKey("extra.time.utc")) - require.True(t, buildProperties.ContainsKey("extra.time.local")) - require.True(t, buildProperties.ContainsKey("extra.time.zone")) - require.True(t, buildProperties.ContainsKey("extra.time.dst")) -} diff --git a/legacy/builder/test/sketch1/header.h b/legacy/builder/test/sketch1/header.h deleted file mode 100644 index 2e24536f9fb..00000000000 --- a/legacy/builder/test/sketch1/header.h +++ /dev/null @@ -1 +0,0 @@ -#define TRUE FALSE \ No newline at end of file diff --git a/legacy/builder/test/store_build_options_map_test.go b/legacy/builder/test/store_build_options_map_test.go deleted file mode 100644 index c9782e4dc40..00000000000 --- a/legacy/builder/test/store_build_options_map_test.go +++ /dev/null @@ -1,73 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/arduino/sketch" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/arduino/go-properties-orderedmap" - "github.com/stretchr/testify/require" -) - -func TestStoreBuildOptionsMap(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList("hardware"), - BuiltInToolsDirs: paths.NewPathList("tools"), - BuiltInLibrariesDirs: paths.New("built-in libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - FQBN: parseFQBN(t, "my:nice:fqbn"), - CustomBuildProperties: []string{"custom=prop"}, - BuildProperties: properties.NewFromHashmap(map[string]string{"compiler.optimization_flags": "-Os"}), - } - - buildPath := SetupBuildPath(t, ctx) - defer buildPath.RemoveAll() - - buildPropertiesJSON, err := builder.CreateBuildOptionsMap( - ctx.HardwareDirs, ctx.BuiltInToolsDirs, ctx.OtherLibrariesDirs, - ctx.BuiltInLibrariesDirs, &sketch.Sketch{FullPath: paths.New("sketchLocation")}, ctx.CustomBuildProperties, - ctx.FQBN.String(), ctx.BuildProperties.Get("compiler.optimization_flags"), - ) - require.NoError(t, err) - ctx.BuildOptionsJson = buildPropertiesJSON - - err = builder.StoreBuildOptionsMap(ctx.BuildPath, ctx.BuildOptionsJson) - require.NoError(t, err) - - exist, err := buildPath.Join(constants.BUILD_OPTIONS_FILE).ExistCheck() - require.NoError(t, err) - require.True(t, exist) - - bytes, err := buildPath.Join(constants.BUILD_OPTIONS_FILE).ReadFile() - require.NoError(t, err) - - require.Equal(t, `{ - "additionalFiles": "", - "builtInLibrariesFolders": "built-in libraries", - "builtInToolsFolders": "tools", - "compiler.optimization_flags": "-Os", - "customBuildProperties": "custom=prop", - "fqbn": "my:nice:fqbn", - "hardwareFolders": "hardware", - "otherLibrariesFolders": "libraries", - "sketchLocation": "sketchLocation" -}`, string(bytes)) -} diff --git a/legacy/builder/test/tools_builtin/avr/builtin_tools_versions.txt b/legacy/builder/test/tools_builtin/avr/builtin_tools_versions.txt deleted file mode 100644 index a071f413464..00000000000 --- a/legacy/builder/test/tools_builtin/avr/builtin_tools_versions.txt +++ /dev/null @@ -1,2 +0,0 @@ -arduino.avrdude=6.0.1-arduino5 -arduino.avr-gcc=4.8.1-arduino5 diff --git a/legacy/builder/test/tools_loader_test.go b/legacy/builder/test/tools_loader_test.go deleted file mode 100644 index e28f828401d..00000000000 --- a/legacy/builder/test/tools_loader_test.go +++ /dev/null @@ -1,193 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "path/filepath" - "sort" - "testing" - - "github.com/arduino/arduino-cli/arduino/cores" - "github.com/arduino/arduino-cli/arduino/cores/packagemanager" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -type ByToolIDAndVersion []*cores.ToolRelease - -func (s ByToolIDAndVersion) Len() int { - return len(s) -} -func (s ByToolIDAndVersion) Swap(i, j int) { - s[i], s[j] = s[j], s[i] -} -func (s ByToolIDAndVersion) Less(i, j int) bool { - if s[i].Tool.Name != s[j].Tool.Name { - return s[i].Tool.Name < s[j].Tool.Name - } - if !s[i].Version.Equal(s[j].Version) { - return s[i].Version.LessThan(s[j].Version) - } - return s[i].InstallDir.String() < s[j].InstallDir.String() -} - -func requireEquivalentPaths(t *testing.T, actual string, expected ...string) { - if len(expected) == 1 { - actualAbs, err := paths.New(actual).Abs() - require.NoError(t, err) - expectedAbs, err := paths.New(expected[0]).Abs() - require.NoError(t, err) - require.Equal(t, expectedAbs.String(), actualAbs.String()) - } else { - actualAbs, err := paths.New(actual).Abs() - require.NoError(t, err) - expectedAbs := paths.NewPathList(expected...) - require.NoError(t, expectedAbs.ToAbs()) - require.Contains(t, expectedAbs.AsStrings(), actualAbs.String()) - } -} - -func TestLoadTools(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "", skipLibraries) - defer cleanUpBuilderTestContext(t, ctx) - - tools := ctx.PackageManager.GetAllInstalledToolsReleases() - require.Equal(t, 9, len(tools)) - - sort.Sort(ByToolIDAndVersion(tools)) - - idx := 0 - require.Equal(t, ":arduino-preprocessor@0.1.5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/arduino-preprocessor/0.1.5") - idx++ - require.Equal(t, ":arm-none-eabi-gcc@4.8.3-2014q1", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - idx++ - require.Equal(t, ":avr-gcc@4.8.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/avr-gcc/4.8.1-arduino5") - idx++ - require.Equal(t, "arduino:avr-gcc@4.8.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "tools_builtin/avr") - idx++ - require.Equal(t, ":avrdude@6.0.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/avrdude/6.0.1-arduino5") - idx++ - require.Equal(t, "arduino:avrdude@6.0.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "tools_builtin/avr") - idx++ - require.Equal(t, ":bossac@1.5-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/bossac/1.5-arduino") - idx++ - require.Equal(t, ":bossac@1.6.1-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/bossac/1.6.1-arduino") - idx++ - require.Equal(t, ":ctags@5.8-arduino11", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/ctags/5.8-arduino11") -} - -func TestLoadToolsWithBoardManagerFolderStructure(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList("downloaded_board_manager_stuff"), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "", skipLibraries) - defer cleanUpBuilderTestContext(t, ctx) - - tools := ctx.PackageManager.GetAllInstalledToolsReleases() - require.Equal(t, 3, len(tools)) - - sort.Sort(ByToolIDAndVersion(tools)) - - idx := 0 - require.Equal(t, "arduino:CMSIS@4.0.0-atmel", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/arduino/tools/CMSIS/4.0.0-atmel") - idx++ - require.Equal(t, "RFduino:arm-none-eabi-gcc@4.8.3-2014q1", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/RFduino/tools/arm-none-eabi-gcc/4.8.3-2014q1") - idx++ - require.Equal(t, "arduino:openocd@0.9.0-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/arduino/tools/openocd/0.9.0-arduino") -} - -func TestLoadLotsOfTools(t *testing.T) { - ctx := &types.Context{ - HardwareDirs: paths.NewPathList("downloaded_board_manager_stuff"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools", "tools_builtin"), - } - ctx = prepareBuilderTestContext(t, ctx, nil, "", skipLibraries) - defer cleanUpBuilderTestContext(t, ctx) - - tools := ctx.PackageManager.GetAllInstalledToolsReleases() - require.Equal(t, 12, len(tools)) - - sort.Sort(ByToolIDAndVersion(tools)) - - idx := 0 - require.Equal(t, "arduino:CMSIS@4.0.0-atmel", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/arduino/tools/CMSIS/4.0.0-atmel") - idx++ - require.Equal(t, ":arduino-preprocessor@0.1.5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/arduino-preprocessor/0.1.5") - idx++ - require.Equal(t, "RFduino:arm-none-eabi-gcc@4.8.3-2014q1", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/RFduino/tools/arm-none-eabi-gcc/4.8.3-2014q1") - idx++ - require.Equal(t, ":arm-none-eabi-gcc@4.8.3-2014q1", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/arm-none-eabi-gcc/4.8.3-2014q1") - idx++ - require.Equal(t, ":avr-gcc@4.8.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/avr-gcc/4.8.1-arduino5") - idx++ - require.Equal(t, "arduino:avr-gcc@4.8.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "tools_builtin/avr") - idx++ - require.Equal(t, ":avrdude@6.0.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/avrdude/6.0.1-arduino5") - idx++ - require.Equal(t, "arduino:avrdude@6.0.1-arduino5", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "tools_builtin/avr") - idx++ - require.Equal(t, ":bossac@1.5-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/bossac/1.5-arduino") - idx++ - require.Equal(t, ":bossac@1.6.1-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), tools[idx].InstallDir.String(), "downloaded_tools/bossac/1.6.1-arduino") - idx++ - require.Equal(t, ":ctags@5.8-arduino11", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_tools/ctags/5.8-arduino11") - idx++ - require.Equal(t, "arduino:openocd@0.9.0-arduino", tools[idx].String()) - requireEquivalentPaths(t, tools[idx].InstallDir.String(), "downloaded_board_manager_stuff/arduino/tools/openocd/0.9.0-arduino") -} - -func TestAllToolsContextIsPopulated(t *testing.T) { - pmb := packagemanager.NewBuilder(nil, nil, nil, nil, "") - pmb.LoadHardwareFromDirectories(paths.NewPathList("downloaded_board_manager_stuff")) - pmb.LoadToolsFromBundleDirectory(paths.New("downloaded_tools", "tools_builtin")) - pm := pmb.Build() - pme, release := pm.NewExplorer() - defer release() - - ctx := &types.Context{ - PackageManager: pme, - } - - require.NotEmpty(t, ctx.PackageManager.GetAllInstalledToolsReleases()) -} diff --git a/legacy/builder/test/try_build_of_problematic_sketch_test.go b/legacy/builder/test/try_build_of_problematic_sketch_test.go deleted file mode 100644 index ab40de05714..00000000000 --- a/legacy/builder/test/try_build_of_problematic_sketch_test.go +++ /dev/null @@ -1,97 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// Copyright 2015 Matthijs Kooijman -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "path/filepath" - "testing" - - "github.com/arduino/arduino-cli/arduino/builder/preprocessor" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -// This is a sketch that fails to build on purpose -//func TestTryBuild016(t *testing.T) { -// tryBuild(t, paths.New("sketch_that_checks_if_SPI_has_transactions_and_includes_missing_Ethernet", "sketch.ino")) -//} - -func TestTryBuild033(t *testing.T) { - tryBuild(t, paths.New("sketch_that_includes_arduino_h", "sketch_that_includes_arduino_h.ino")) -} - -func TestTryBuild034(t *testing.T) { - tryBuild(t, paths.New("sketch_with_static_asserts", "sketch_with_static_asserts.ino")) -} - -func TestTryBuild035(t *testing.T) { - tryBuild(t, paths.New("sketch_with_enum_class", "sketch_with_enum_class.ino")) -} - -func TestTryBuild036(t *testing.T) { - ctx := makeDefaultContext() - tryBuildWithContext(t, ctx, "arduino:samd:arduino_zero_native", paths.New("sketch_fastleds", "sketch_fastleds.ino")) -} - -func TestTryBuild037(t *testing.T) { - tryBuild(t, paths.New("sketch_with_externC", "sketch_with_externC.ino")) -} - -func TestTryBuild038(t *testing.T) { - tryBuild(t, paths.New("sketch_with_multiline_prototypes", "sketch_with_multiline_prototypes.ino")) -} - -func TestTryBuild039(t *testing.T) { - ctx := makeDefaultContext() - tryBuildWithContext(t, ctx, "arduino:samd:arduino_zero_native", paths.New("sketch12", "sketch12.ino")) -} - -func TestTryBuild040(t *testing.T) { - tryBuild(t, paths.New("sketch_with_externC_multiline", "sketch_with_externC_multiline.ino")) -} - -func TestTryBuild041(t *testing.T) { - tryBuild(t, paths.New("sketch_with_multiline_template", "sketch_with_multiline_template.ino")) -} - -func TestTryBuild042(t *testing.T) { - tryBuild(t, paths.New("sketch_with_fake_function_pointer", "sketch_with_fake_function_pointer.ino")) -} - -func makeDefaultContext() *types.Context { - preprocessor.DebugPreprocessor = true - return &types.Context{ - HardwareDirs: paths.NewPathList(filepath.Join("..", "hardware"), "downloaded_hardware", "downloaded_board_manager_stuff"), - BuiltInToolsDirs: paths.NewPathList("downloaded_tools"), - BuiltInLibrariesDirs: paths.New("downloaded_libraries"), - OtherLibrariesDirs: paths.NewPathList("libraries"), - } -} - -func tryBuild(t *testing.T, sketchLocation *paths.Path) { - tryBuildWithContext(t, makeDefaultContext(), "arduino:avr:leonardo", sketchLocation) -} - -func tryBuildWithContext(t *testing.T, ctx *types.Context, fqbn string, sketchLocation *paths.Path) { - ctx = prepareBuilderTestContext(t, ctx, sketchLocation, fqbn) - defer cleanUpBuilderTestContext(t, ctx) - - err := builder.RunBuilder(ctx) - require.NoError(t, err, "Build error for "+sketchLocation.String()) -} diff --git a/legacy/builder/test/unused_compiled_libraries_remover_test.go b/legacy/builder/test/unused_compiled_libraries_remover_test.go deleted file mode 100644 index 6e7ab70df1b..00000000000 --- a/legacy/builder/test/unused_compiled_libraries_remover_test.go +++ /dev/null @@ -1,108 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/arduino/builder/detector" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/libraries" - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/types" - paths "github.com/arduino/go-paths-helper" - "github.com/stretchr/testify/require" -) - -func TestUnusedCompiledLibrariesRemover(t *testing.T) { - temp, err := paths.MkTempDir("", "test") - require.NoError(t, err) - defer temp.RemoveAll() - - require.NoError(t, temp.Join("SPI").MkdirAll()) - require.NoError(t, temp.Join("Bridge").MkdirAll()) - require.NoError(t, temp.Join("dummy_file").WriteFile([]byte{})) - - ctx := &types.Context{} - ctx.LibrariesBuildPath = temp - ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector( - nil, nil, false, false, logger.New(nil, nil, false, ""), - ) - ctx.SketchLibrariesDetector.AppendImportedLibraries(&libraries.Library{Name: "Bridge"}) - - err = builder.UnusedCompiledLibrariesRemover( - ctx.LibrariesBuildPath, - ctx.SketchLibrariesDetector.ImportedLibraries(), - ) - require.NoError(t, err) - - exist, err := temp.Join("SPI").ExistCheck() - require.NoError(t, err) - require.False(t, exist) - exist, err = temp.Join("Bridge").ExistCheck() - require.NoError(t, err) - require.True(t, exist) - exist, err = temp.Join("dummy_file").ExistCheck() - require.NoError(t, err) - require.True(t, exist) -} - -func TestUnusedCompiledLibrariesRemoverLibDoesNotExist(t *testing.T) { - ctx := &types.Context{} - ctx.LibrariesBuildPath = paths.TempDir().Join("test") - ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector( - nil, nil, false, false, logger.New(nil, nil, false, ""), - ) - ctx.SketchLibrariesDetector.AppendImportedLibraries(&libraries.Library{Name: "Bridge"}) - - err := builder.UnusedCompiledLibrariesRemover( - ctx.LibrariesBuildPath, - ctx.SketchLibrariesDetector.ImportedLibraries(), - ) - require.NoError(t, err) -} - -func TestUnusedCompiledLibrariesRemoverNoUsedLibraries(t *testing.T) { - temp, err := paths.MkTempDir("", "test") - require.NoError(t, err) - defer temp.RemoveAll() - - require.NoError(t, temp.Join("SPI").MkdirAll()) - require.NoError(t, temp.Join("Bridge").MkdirAll()) - require.NoError(t, temp.Join("dummy_file").WriteFile([]byte{})) - - ctx := &types.Context{} - ctx.SketchLibrariesDetector = detector.NewSketchLibrariesDetector( - nil, nil, false, false, logger.New(nil, nil, false, ""), - ) - ctx.LibrariesBuildPath = temp - - err = builder.UnusedCompiledLibrariesRemover( - ctx.LibrariesBuildPath, - ctx.SketchLibrariesDetector.ImportedLibraries(), - ) - require.NoError(t, err) - - exist, err := temp.Join("SPI").ExistCheck() - require.NoError(t, err) - require.False(t, exist) - exist, err = temp.Join("Bridge").ExistCheck() - require.NoError(t, err) - require.False(t, exist) - exist, err = temp.Join("dummy_file").ExistCheck() - require.NoError(t, err) - require.True(t, exist) -} diff --git a/legacy/builder/test/user_hardware/arduino/avr/.gitkeep b/legacy/builder/test/user_hardware/arduino/avr/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/boards.txt b/legacy/builder/test/user_hardware/my_avr_platform/avr/boards.txt deleted file mode 100644 index bf794a46f71..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/boards.txt +++ /dev/null @@ -1,89 +0,0 @@ -menu.cpu=Processor - -custom_yun.name=Arduino Yún -custom_yun.upload.via_ssh=true - -custom_yun.build.core=arduino:arduino -custom_yun.bootloader.tool=arduino:avrdude -custom_yun.upload.tool=arduino:avrdude - -custom_yun.vid.0=0x2341 -custom_yun.pid.0=0x0041 -custom_yun.vid.1=0x2341 -custom_yun.pid.1=0x8041 -custom_yun.upload.protocol=avr109 -custom_yun.upload.maximum_size=28672 -custom_yun.upload.maximum_data_size=2560 -custom_yun.upload.speed=57600 -custom_yun.upload.disable_flushing=true -custom_yun.upload.use_1200bps_touch=true -custom_yun.upload.wait_for_upload_port=true - -custom_yun.bootloader.low_fuses=0xff -custom_yun.bootloader.high_fuses=0xd8 -custom_yun.bootloader.extended_fuses=0xfb -custom_yun.bootloader.file=caterina/Caterina-custom_yun.hex -custom_yun.bootloader.unlock_bits=0x3F -custom_yun.bootloader.lock_bits=0x2F - -custom_yun.build.mcu=atmega32u4 -custom_yun.build.f_cpu=16000000L -custom_yun.build.vid=0x2341 -custom_yun.build.pid=0x8041 -custom_yun.build.usb_product="Arduino My" -custom_yun.build.board=AVR_YUN -custom_yun.build.variant=arduino:yun -custom_yun.build.extra_flags={build.usb_flags} - -mymega.name=Arduino Mega or Mega 2560 - -mymega.vid.0=0x2341 -mymega.pid.0=0x0010 -mymega.vid.1=0x2341 -mymega.pid.1=0x0042 -mymega.vid.2=0x2A03 -mymega.pid.2=0x0010 -mymega.vid.3=0x2A03 -mymega.pid.3=0x0042 - -mymega.upload.tool=avrdude -mymega.upload.maximum_data_size=8192 - -mymega.bootloader.tool=avrdude -mymega.bootloader.low_fuses=0xFF -mymega.bootloader.unlock_bits=0x3F -mymega.bootloader.lock_bits=0x0F - -mymega.build.f_cpu=16000000L -mymega.build.core=arduino -mymega.build.variant=mega - -mymega.menu.cpu.atmega2560=ATmega2560 (Mega 2560) - -mymega.menu.cpu.atmega2560.upload.protocol=wiring -mymega.menu.cpu.atmega2560.upload.maximum_size=253952 -mymega.menu.cpu.atmega2560.upload.speed=115200 - -mymega.menu.cpu.atmega2560.bootloader._folder=stk500v2 -mymega.menu.cpu.atmega2560.bootloader.high_fuses=0xD8 -mymega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD -mymega.menu.cpu.atmega2560.bootloader.file={bootloader._folder}/stk500boot_v2_mega2560.hex - -mymega.menu.cpu.atmega2560.build.mcu=atmega2560 -# Do not define build.board to test autogeneration -#mymega.menu.cpu.atmega2560.build.board=AVR_MYMEGA2560 - -mymega.menu.cpu.atmega1280=ATmega1280 - -mymega.menu.cpu.atmega1280.upload.protocol=arduino -mymega.menu.cpu.atmega1280.upload.maximum_size=126976 -mymega.menu.cpu.atmega1280.upload.speed=57600 - -mymega.menu.cpu.atmega1280.bootloader._folder=atmega -mymega.menu.cpu.atmega1280.bootloader.high_fuses=0xDA -mymega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5 -mymega.menu.cpu.atmega1280.bootloader.file={bootloader._folder}/ATmegaBOOT_168_atmega1280.hex - -mymega.menu.cpu.atmega1280.build.mcu=atmega1280 -# define custom build.board for testing -mymega.menu.cpu.atmega1280.build.board=MYMEGA1280 diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/bootloaders/stk500v2/stk500boot_v2_mega2560.hex b/legacy/builder/test/user_hardware/my_avr_platform/avr/bootloaders/stk500v2/stk500boot_v2_mega2560.hex deleted file mode 100644 index c52e690a102..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/bootloaders/stk500v2/stk500boot_v2_mega2560.hex +++ /dev/null @@ -1,469 +0,0 @@ -:020000023000CC -:10E000000D9489F10D94B2F10D94B2F10D94B2F129 -:10E010000D94B2F10D94B2F10D94B2F10D94B2F1F0 -:10E020000D94B2F10D94B2F10D94B2F10D94B2F1E0 -:10E030000D94B2F10D94B2F10D94B2F10D94B2F1D0 -:10E040000D94B2F10D94B2F10D94B2F10D94B2F1C0 -:10E050000D94B2F10D94B2F10D94B2F10D94B2F1B0 -:10E060000D94B2F10D94B2F10D94B2F10D94B2F1A0 -:10E070000D94B2F10D94B2F10D94B2F10D94B2F190 -:10E080000D94B2F10D94B2F10D94B2F10D94B2F180 -:10E090000D94B2F10D94B2F10D94B2F10D94B2F170 -:10E0A0000D94B2F10D94B2F10D94B2F10D94B2F160 -:10E0B0000D94B2F10D94B2F10D94B2F10D94B2F150 -:10E0C0000D94B2F10D94B2F10D94B2F10D94B2F140 -:10E0D0000D94B2F10D94B2F10D94B2F10D94B2F130 -:10E0E0000D94B2F141546D656761323536300041AF -:10E0F000726475696E6F206578706C6F72657220DE -:10E1000073746B3530305632206279204D4C530099 -:10E11000426F6F746C6F616465723E004875683F52 -:10E1200000436F6D70696C6564206F6E203D200048 -:10E130004350552054797065202020203D20005FF9 -:10E140005F4156525F415243485F5F3D2000415658 -:10E1500052204C696243205665723D20004743437C -:10E160002056657273696F6E203D20004350552024 -:10E1700049442020202020203D20004C6F7720663D -:10E18000757365202020203D20004869676820665F -:10E190007573652020203D200045787420667573D6 -:10E1A00065202020203D20004C6F636B2066757336 -:10E1B000652020203D20004D617220203720323024 -:10E1C000313300312E362E3800342E332E350056A2 -:10E1D00023202020414444522020206F7020636F70 -:10E1E00064652020202020696E73747275637469E1 -:10E1F0006F6E2061646472202020496E74657272B3 -:10E20000757074006E6F20766563746F7200726A49 -:10E210006D702020006A6D70200057686174207056 -:10E220006F72743A00506F7274206E6F7420737541 -:10E2300070706F72746564004D7573742062652030 -:10E2400061206C6574746572002000577269747483 -:10E25000696E672045450052656164696E672045B7 -:10E26000450045452065727220636E743D00504F35 -:10E27000525400303D5A65726F2061646472003FF1 -:10E280003D43505520737461747300403D454550C3 -:10E29000524F4D207465737400423D426C696E6B41 -:10E2A000204C454400453D44756D70204545505215 -:10E2B0004F4D00463D44756D7020464C415348001B -:10E2C000483D48656C70004C3D4C69737420492F83 -:10E2D0004F20506F72747300513D51756974005234 -:10E2E0003D44756D702052414D00563D73686F7707 -:10E2F00020696E7465727275707420566563746FF0 -:10E30000727300593D506F727420626C696E6B00BD -:10E310002A0011241FBECFEFD1E2DEBFCDBF01E046 -:10E320000CBF12E0A0E0B2E0EEE1FDEF03E00BBFB6 -:10E3300002C007900D92A030B107D9F712E0A0E01B -:10E34000B2E001C01D92AE30B107E1F70F9460F367 -:10E350000D948DFE01E20EBF0FEF0DBF11241FBE05 -:10E360000D9460F30D9400F020E030E040ED57E0B4 -:10E3700005C0FA013197F1F72F5F3F4F2817390792 -:10E38000C0F308959C01260F311DC901A0E0B0E043 -:10E390002F5F3F4FABBFFC018791882361F08093D3 -:10E3A000C6008091C00086FFFCCF8091C0008064D1 -:10E3B0008093C000EACF08958DE08093C6008091DD -:10E3C000C00086FFFCCF8091C00080648093C000B5 -:10E3D0008AE08093C6008091C00086FFFCCF8091C8 -:10E3E000C00080648093C00008950F94C2F10F9420 -:10E3F000DCF10895FC019081992359F09093C600B7 -:10E400008091C00086FFFCCF8091C0008064809323 -:10E41000C0003196992379F70895282F982F929567 -:10E420009F70892F805D8A3308F0895F8093C600D2 -:10E430008091C00086FFFCCF8091C00080648093F3 -:10E44000C000822F8F70982F905D9A3308F0995FEB -:10E450009093C6008091C00086FFFCCF8091C000E1 -:10E4600080648093C00008959C01FB01853691056E -:10E470001CF46330710594F0C90164E670E00F94F8 -:10E480002EFE605D7F4F6093C6008091C00086FFC6 -:10E49000FCCF8091C00080648093C0002B30310598 -:10E4A00014F43297B4F0C90164E670E00F942EFEC4 -:10E4B0006AE070E00F942EFE605D7F4F6093C600AF -:10E4C0008091C00086FFFCCF8091C0008064809363 -:10E4D000C000C9016AE070E00F942EFEC0968093E0 -:10E4E000C6008091C00086FFFCCF8091C000806490 -:10E4F0008093C00008951F93182F8EE692EE60E07F -:10E500000F94C2F11093C6008091C00086FFFCCF2B -:10E510008091C00080648093C0000F94DCF11F9153 -:10E5200008952F923F924F925F926F927F928F92B7 -:10E530009F92AF92BF92CF92DF92EF92FF920F9392 -:10E540001F93DF93CF93CDB7DEB762970FB6F894E2 -:10E55000DEBF0FBECDBF382E622ECA01DB015C01CB -:10E560006D01772420E2222E2E010894411C511CBB -:10E570008BC081E0A81680E0B80681E0C80680E084 -:10E58000D80628F0C601AA27BB270F940DF2BB2797 -:10E59000AD2D9C2D8B2D0F940DF28A2D0F940DF225 -:10E5A0002092C6008091C00086FFFCCF8091C00001 -:10E5B00080648093C0009DE29093C6008091C0006B -:10E5C00086FFFCCF8091C00080648093C0002092C1 -:10E5D000C6008091C00086FFFCCF8091C00080649F -:10E5E0008093C00019828601750188249924A1E0D6 -:10E5F0003A1651F03A1620F0B2E03B1661F409C029 -:10E600000BBFF701779007C0C7010F9477FE782EF4 -:10E6100002C0F7017080872D0F940DF22092C60082 -:10E620008091C00086FFFCCF8091C0008064809301 -:10E63000C000872D8052F401EF70F0708F3520F408 -:10E64000E40DF51D708204C0E40DF51D8EE280839B -:10E650000894E11CF11C011D111D0894811C911CE2 -:10E6600090E18916910409F0C2CF80E190E0A0E02A -:10E67000B0E0A80EB91ECA1EDB1E198AC2010F9493 -:10E68000FAF10F94DCF16A94662009F072CF629679 -:10E690000FB6F894DEBF0FBECDBFCF91DF911F91B3 -:10E6A0000F91FF90EF90DF90CF90BF90AF909F9031 -:10E6B0008F907F906F905F904F903F902F90089534 -:10E6C0002F923F924F925F926F927F928F929F9282 -:10E6D000AF92BF92CF92DF92EF92FF920F931F9370 -:10E6E000DF93CF93CDB7DEB7CD53D1400FB6F894BB -:10E6F000DEBF0FBECDBF01E20EBF0FEF0DBF94B75F -:10E70000F894A89514BE80916000886180936000A1 -:10E7100010926000789493FF05C0E0910002F091A0 -:10E7200001021995279A2F9A8091C00082608093E8 -:10E73000C00080E18093C40088E18093C1000000A4 -:10E74000EE24FF24870144E0A42EB12CCC24DD2448 -:10E7500024C0C5010197F1F70894E11CF11C011DCB -:10E76000111D21E2E2162EE4F20620E0020720E06D -:10E77000120718F031E0C32ED12CC801B70127ECE5 -:10E780003BE140E050E00F9441FE611571058105C9 -:10E79000910519F485B1805885B98091C00087FD35 -:10E7A00003C0C114D104A9F2A6014F5F5F4FC25E3E -:10E7B000DE4F59834883CE51D140C25EDE4F8881FF -:10E7C0009981CE51D140019711F00D9410FEC05D9A -:10E7D000DE4F19821882C053D14060E0C15DDE4F28 -:10E7E0001882CF52D14088249924C35DDE4F19820C -:10E7F0001882CD52D140C05EDE4F188219821A8233 -:10E800001B82C052D140CE5CDE4F188219821A8220 -:10E810001B82C253D140EE24FF2487010BBFF701B6 -:10E8200007911691C45CDE4F19830883CC53D14005 -:10E830000D940BFEC25EDE4F28813981CE51D1404E -:10E840002130310509F52091C600C25EDE4F1982E4 -:10E850001882CE51D14022C02F5F3F4F4F4F5F4FA4 -:10E86000213082E138078AE7480780E0580780F0C6 -:10E87000C45CDE4FE881F981CC53D140EF5FFF4F9C -:10E8800019F0EE27FF27099420E030E040E050E047 -:10E890008091C00087FFE0CF2091C600C35DDE4FAE -:10E8A00048815981CD52D1404F5F5F4FC35DDE4FEC -:10E8B00059834883CD52D140213209F063C64A3092 -:10E8C000510508F05FC60894811C911C53E0851621 -:10E8D000910409F059C600E010E018C081E280936D -:10E8E000C6008091C00086FFFCCF8091C00080648C -:10E8F0008093C0002F5F3F4F2931310579F70F9486 -:10E90000DCF10F5F1F4F0530110519F020E030E0FA -:10E91000E5CF10920A0210920B0210920C02109294 -:10E920000D02109206021092070210920802109235 -:10E930000902109202021092030210920402109235 -:10E9400005028FEE90EE60E00F94F5F180E191EE1C -:10E9500060E00F94C2F18091C00087FFFCCF9091DE -:10E96000C600903608F09F759032B8F09093C600BC -:10E970008091C00086FFFCCF8091C00080648093AE -:10E98000C000A0E2A093C6008091C00086FFFCCF2B -:10E990008091C00080648093C000983409F4D7C18E -:10E9A0009934B8F4923409F459C1933458F490333B -:10E9B00019F1903308F4E3C59F33A1F1903409F0C5 -:10E9C000DEC5BDC0953409F470C1963409F0D7C5D1 -:10E9D00098C1923509F42BC2933538F49C3409F46C -:10E9E000F5C1913509F0CBC518C2963509F445C279 -:10E9F000993509F0C4C567C483E792EE62E00F94CD -:10EA0000F5F110920602109207021092080210927D -:10EA1000090210920A0210920B0210920C0210923C -:10EA20000D0213C18FE792EE62E00F94F5F18FEEC5 -:10EA300090EE60E00F94F5F181E291EE60E00F94CA -:10EA4000C2F187EB91EE60E00F94F5F180E391EE77 -:10EA500060E00F94C2F184EE90EE60E00F94F5F167 -:10EA60008FE391EE60E00F94C2F186E090E061E008 -:10EA700070E00F9434F20F94DCF18DE591EE60E0DC -:10EA80000F94C2F189EC91EE60E00F94F5F18EE401 -:10EA900091EE60E00F94C2F183EC91EE60E00F9490 -:10EAA000F5F18CE691EE60E00F94C2F18EE10F94E7 -:10EAB0000DF288E90F940DF281E00F940DF20F949E -:10EAC000DCF18BE791EE60E00F94C2F119E0E0E039 -:10EAD000F0E010935700E4918E2F0F940DF20F94F5 -:10EAE000DCF18AE891EE60E00F94C2F1E3E0F0E03F -:10EAF00010935700E4918E2F0F940DF20F94DCF1D8 -:10EB000089E991EE60E00F94C2F1E2E0F0E0109349 -:10EB10005700E4918E2F0F940DF20F94DCF188EAE8 -:10EB200091EE60E00F94C2F1E1E0F0E01093570045 -:10EB30001491812F0F940DF20F94DCF107CF8BE825 -:10EB400092EE62E00F94F5F18BE492EE60E00F94A8 -:10EB5000F5F10F94DCF100E010E019C0C8016F2D51 -:10EB60000F947FFEFF2031F489E492EE60E00F9471 -:10EB7000C2F10BC0F092C6008091C00086FFFCCFAE -:10EB80008091C00080648093C0000F5F1F4FC80158 -:10EB900081519F41A0E0B0E0ABBFFC01F790BAE229 -:10EBA000FB1621F0E2E000301E07C1F60F94DCF105 -:10EBB0000F94DCF187E592EE60E00F94F5F10F948D -:10EBC000DCF1CC24DD2400E010E01EC0C8010F946D -:10EBD00077FEF82E882331F489E492EE60E00F94FA -:10EBE000C2F10BC08093C6008091C00086FFFCCFAD -:10EBF0008091C00080648093C000FE1419F00894D6 -:10EC0000C11CD11C0F5F1F4FC80181519F41A0E063 -:10EC1000B0E0ABBFFC01E790FAE2EF1621F022E092 -:10EC20000030120799F60F94DCF10F94DCF182E6C4 -:10EC300092EE60E00F94C2F1C60161E070E00F94C3 -:10EC400034F20F94DCF10F94DCF110920202109276 -:10EC50000302109204021092050278CE89E992EE26 -:10EC600062E00F94F5F1279A2F9A16C02F9880E052 -:10EC700090E0E0EDF7E03197F1F7019684369105E9 -:10EC8000C1F72F9A80E090E0E0EDF7E03197F1F7DF -:10EC9000019684369105C1F78091C00087FFE6CFC9 -:10ECA0008091C00087FFFCCF64C485EA92EE62E0E9 -:10ECB0000F94F5F140910202509103026091040219 -:10ECC0007091050281E020E10F9491F2809102029F -:10ECD00090910302A0910402B091050280509F4FD1 -:10ECE000AF4FBF4F8093020290930302A0930402A0 -:10ECF000B093050280509041A040B04008F426CE69 -:10ED0000A4CF83EB92EE62E00F94F5F140910602FE -:10ED100050910702609108027091090280E020E1A1 -:10ED20000F9491F28091060290910702A09108023F -:10ED3000B091090280509F4FAF4FBF4F80930602A2 -:10ED400090930702A0930802B0930902FFCD80ECD4 -:10ED500092EE62E00F94F5F183E792EE60E00F949B -:10ED6000F5F18FE792EE60E00F94F5F18BE892EE0B -:10ED700060E00F94F5F189E992EE60E00F94F5F10F -:10ED800085EA92EE60E00F94F5F183EB92EE60E09D -:10ED90000F94F5F180EC92EE60E00F94F5F187ECC2 -:10EDA00092EE60E00F94F5F188ED92EE60E00F9442 -:10EDB000F5F18FED92EE60E00F94F5F18AEE92EEB0 -:10EDC00060E00F94F5F183E093EEBDCD87EC92EE19 -:10EDD00062E00F94F5F181E40F947BF282E40F94EA -:10EDE0007BF283E40F947BF284E40F947BF285E45E -:10EDF0000F947BF286E40F947BF287E40F947BF20E -:10EE000088E40F947BF28AE40F947BF28BE40F94F6 -:10EE10007BF28CE40F947BF299CD88ED92EE62E068 -:10EE20000F94F5F1772473948824992409C48FED05 -:10EE300092EE62E00F94F5F140910A0250910B02BC -:10EE400060910C0270910D0282E020E10F9491F22A -:10EE500080910A0290910B02A0910C02B0910D02D8 -:10EE600080509F4FAF4FBF4F80930A0290930B0289 -:10EE7000A0930C02B0930D0269CD8AEE92EE62E08F -:10EE80000F94F5F184EE90EE60E00F94F5F18FECC5 -:10EE900091EE60E00F94F5F1662477244301CC5D98 -:10EEA000DE4F19821882C452D140D401C301B695F5 -:10EEB000A79597958795CA5DDE4F88839983AA8326 -:10EEC000BB83C652D140CC5DDE4FA881B981C4520C -:10EED000D1401196CC5DDE4FB983A883C452D14096 -:10EEE000CD0162E070E00F9434F2B0E2B093C6005E -:10EEF0008091C00086FFFCCF8091C0008064809329 -:10EF0000C000EDE2E093C6008091C00086FFFCCF18 -:10EF10008091C00080648093C000F0E2F093C6004E -:10EF20008091C00086FFFCCF8091C00080648093F8 -:10EF3000C000CA5DDE4FE880F9800A811B81C6529D -:10EF4000D140BB27A12F902F8F2D0F940DF2CA5DBA -:10EF5000DE4F8881C652D1400F940DF2B0E2FB2EF5 -:10EF6000F092C6008091C00086FFFCCF8091C00067 -:10EF700080648093C0000DE30093C6008091C000C0 -:10EF800086FFFCCF8091C00080648093C00010E2B7 -:10EF90001093C6008091C00086FFFCCF8091C00016 -:10EFA00080648093C0008BBEF3012791C65DDE4F65 -:10EFB0002883CA52D140A22EBB24CC24DD2408943D -:10EFC000611C711C811C911C8BBEF3018791282E42 -:10EFD0003324442455240894611C711C811C911C09 -:10EFE0008BBEF3013791C55DDE4F3883CB52D140E4 -:10EFF0000894611C711C811C911C8BBEF30147910C -:10F00000C45DDE4F4883CC52D140ADEFEA2EAFEF66 -:10F01000FA2EAFEF0A2FAFEF1A2F6E0C7F1C801E57 -:10F02000911E142D032DF22CEE24EA0CFB1C0C1D5A -:10F030001D1D0F940DF220E22093C6008091C000A8 -:10F0400086FFFCCF8091C00080648093C000C65DC5 -:10F05000DE4F8881CA52D1400F940DF230E23093D6 -:10F06000C6008091C00086FFFCCF8091C000806404 -:10F070008093C000C45DDE4F8881CC52D1400F9494 -:10F080000DF240E24093C6008091C00086FFFCCFA5 -:10F090008091C00080648093C000C55DDE4F888190 -:10F0A000CB52D1400F940DF250E25093C6008091A4 -:10F0B000C00086FFFCCF8091C00080648093C000B8 -:10F0C0008FEFE8168FEFF80680E0080780E018075A -:10F0D00031F484E092EE60E00F94C2F1DFC0D80119 -:10F0E000C7018070907CA070B0708050904CA040A0 -:10F0F000B040D1F52FEF3FE340E050E0E222F322B1 -:10F1000004231523CA5DDE4FA880B980CA80DB8046 -:10F11000C652D140AE0CBF1CC01ED11EAA0CBB1CD7 -:10F12000CC1CDD1C8EE092EE60E00F94C2F1BB2798 -:10F13000A12F902F8F2D0F940DF28E2D0F940DF285 -:10F1400030E23093C6008091C00086FFFCCF8091F2 -:10F15000C00080648093C0004EE34093C60080915D -:10F16000C00086FFFCCF87C08EE09EEFA0E0B0E03D -:10F17000E822F9220A231B239CE0E91694E9F90608 -:10F1800090E0090790E0190709F088C0C45DDE4FE0 -:10F19000A881CC52D140EA2EFF2400E010E0102FCD -:10F1A0000F2DFE2CEE24C55DDE4FB881CB52D14031 -:10F1B000EB0EF11C011D111DD601C501817090706F -:10F1C000A070B070DC0199278827E80EF91E0A1F8D -:10F1D0001B1F20EF30E040E050E0A222B322C42207 -:10F1E000D52241E1AA0CBB1CCC1CDD1C4A95D1F7F1 -:10F1F000EA0CFB1C0C1D1D1D81E090E0A0E0B0E0BE -:10F20000282239224A225B2235E1220C331C441C7D -:10F21000551C3A95D1F7E20CF31C041D151D57013E -:10F220006801AA0CBB1CCC1CDD1C85E192EE60E0E1 -:10F230000F94C2F1C801AA27BB270F940DF2BB2778 -:10F24000A12F902F8F2D0F940DF28E2D0F940DF274 -:10F2500090E29093C6008091C00086FFFCCF809121 -:10F26000C00080648093C000AEE3A093C60080918C -:10F27000C00086FFFCCF8091C00080648093C000F6 -:10F28000C601AA27BB270F940DF2BB27AD2D9C2DDD -:10F290008B2D0F940DF28A2D0F940DF20F94DCF14B -:10F2A000CC5DDE4FE881F981C452D140F99709F471 -:10F2B0004DCBF4E0EF2EF12C012D112D6E0C7F1CA7 -:10F2C000801E911EF2CD83E093EE62E00F94F5F183 -:10F2D0008AE192EE60E00F94C2F18091C00087FF56 -:10F2E000FCCF1091C6001F751093C6008091C0001E -:10F2F00086FFFCCF8091C00080648093C0000F9493 -:10F30000DCF1812F81548A3108F036C1163409F4BA -:10F3100095C0173490F4133409F44EC0143430F40B -:10F320001134F1F0123409F01DC130C0143409F465 -:10F3300059C0153409F016C16BC01A3409F4C4C0A1 -:10F340001B3438F4173409F48FC0183409F00AC19B -:10F35000A1C01B3409F4D2C01C3409F003C1E8C0B9 -:10F360008FEF81B90DC082B1809582B980E090E0C5 -:10F37000E0EDF7E03197F1F70196883C9105C1F790 -:10F380008091C00087FFEFCF12B8EFC08FEF84B934 -:10F390000DC085B1809585B980E090E0E0EDF7E0A3 -:10F3A0003197F1F70196883C9105C1F78091C00033 -:10F3B00087FFEFCF15B8D9C08FEF87B90DC088B1DF -:10F3C000809588B980E090E0E0EDF7E03197F1F7C3 -:10F3D0000196883C9105C1F78091C00087FFEFCF6F -:10F3E00018B8C3C08FEF8AB90DC08BB180958BB9A7 -:10F3F00080E090E0E0EDF7E03197F1F70196883C8E -:10F400009105C1F78091C00087FFEFCF1BB8ADC059 -:10F410008FEF8DB90DC08EB180958EB980E090E0F0 -:10F42000E0EDF7E03197F1F70196883C9105C1F7DF -:10F430008091C00087FFEFCF1EB897C08FEF80BBD1 -:10F440000DC081B3809581BB80E090E0E0EDF7E0F6 -:10F450003197F1F70196883C9105C1F78091C00082 -:10F4600087FFEFCF11BA81C08FEF83BB0DC084B38C -:10F47000809584BB80E090E0E0EDF7E03197F1F714 -:10F480000196883C9105C1F78091C00087FFEFCFBE -:10F4900014BA6BC08FEF809301010FC080910201FD -:10F4A00080958093020180E090E0E0EDF7E03197F5 -:10F4B000F1F70196883C9105C1F78091C00087FF64 -:10F4C000EDCF1092020151C08FEF809304010FC065 -:10F4D0008091050180958093050180E090E0E0ED4A -:10F4E000F7E03197F1F70196883C9105C1F78091DB -:10F4F000C00087FFEDCF1092050137C08FEF8093DA -:10F5000007010FC08091080180958093080180E079 -:10F5100090E0E0EDF7E03197F1F70196883C910536 -:10F52000C1F78091C00087FFEDCF109208011DC088 -:10F530008FEF80930A010FC080910B01809580931B -:10F540000B0180E090E0E0EDF7E03197F1F70196F4 -:10F55000883C9105C1F78091C00087FFEDCF1092E4 -:10F560000B0103C085E292EEEEC98091C00087FFD7 -:10F57000FCCF8091C600EAC988E392EEE4C98CE131 -:10F5800091EEE1C988249924933011F1943028F444 -:10F59000913089F09230B8F408C0953061F195301F -:10F5A000F0F0963009F048C043C02B3109F042C951 -:10F5B00091E06BE13FC96227C15DDE4F2883CF52E6 -:10F5C000D14092E037C9B22FA0E0622793E032C960 -:10F5D000822F90E0A82BB92B622794E02BC92E3004 -:10F5E00009F039C3622795E0C05DDE4F19821882A9 -:10F5F000C053D1401FC9E1E0F0E0EC0FFD1FC05D3A -:10F60000DE4F08811981C053D140E00FF11F2083E4 -:10F610000F5F1F4FC05DDE4F19830883C053D14079 -:10F6200062270A171B0709F005C9D80196E002C92D -:10F63000261709F010C303C0973009F0FBC87724E0 -:10F640009981933109F412C19431C8F4963009F4C8 -:10F65000D8C0973050F4923009F406C1933009F4C1 -:10F660006DC0913009F059C253C0913109F477C08F -:10F67000923108F0BBC0903109F04FC2F5C098310B -:10F6800009F487C0993150F4953109F4EFC09531F0 -:10F6900008F4C6C1963109F040C2C2C19A3109F4DA -:10F6A0006CC09A3108F491C09B3109F45BC09D3164 -:10F6B00009F033C29D81903359F48F81882311F46E -:10F6C0009EE11CC0813011F091E018C098E916C08D -:10F6D000892F807591F0903539F4E0E0F0E089E011 -:10F6E0008093570094910AC0983539F4E3E0F0E034 -:10F6F00089E080935700949101C090E01A821B82A8 -:10F700008D818C831D829E831F8227E030E009C299 -:10F710001A8288E08B8381E48C8386E58D8382E581 -:10F720008E8389E48F8383E5888780E589878FE5E9 -:10F730008A8782E38B872BE030E0F3C18A818139AD -:10F7400041F0823941F0803911F48FE005C080E04A -:10F7500003C082E001C08AE01A828B8344C0772410 -:10F76000739482C08D81882311F48EE12CC0813086 -:10F7700011F081E028C088E926C01A82E1E0F0E0BB -:10F7800089E08093570084918B831C8224E030E0D1 -:10F79000C8C18B81803589F48C81883039F4E2E0EE -:10F7A000F0E089E08093570084910DC0E0E0F0E044 -:10F7B00089E080935700849106C0E3E0F0E089E09F -:10F7C0008093570084911A82DFCF8D81836C99E0FA -:10F7D000E1E0F0E0082E90935700E89507B600FCB2 -:10F7E000FDCF1A821B8223E030E09BC180EC8A832C -:10F7F000CE5CDE4F188219821A821B82C253D1401E -:10F800008EC18A8190E0A0E0B0E0582F44273327D2 -:10F8100022278B8190E0A0E0B0E0DC0199278827C7 -:10F82000282B392B4A2B5B2B8D8190E0A0E0B0E098 -:10F83000282B392B4A2B5B2B8C8190E0A0E0B0E089 -:10F84000BA2FA92F982F8827282B392B4A2B5B2BCF -:10F85000220F331F441F551FC05EDE4F288339839C -:10F860004A835B83C052D1401A8259C13A81C95C34 -:10F87000DE4F3883C753D140CA5CDE4F1882C6536F -:10F88000D1408B81C82EDD24CA5CDE4F488159816E -:10F89000C653D140C42AD52A933109F082C0CE5C28 -:10F8A000DE4F88819981AA81BB81C253D1408050AB -:10F8B000904CA340B04030F583E0CE5CDE4FE88052 -:10F8C000F9800A811B81C253D140F70100935B008C -:10F8D00080935700E89507B600FCFDCFCE5CDE4F65 -:10F8E000088119812A813B81C253D14000501F4FAA -:10F8F0002F4F3F4FCE5CDE4F088319832A833B8313 -:10F90000C253D140C05EDE4F488159816A817B81FC -:10F91000C052D140DE011B9631E08C9111962C91A2 -:10F9200011971296C75CDE4F2883C953D140C85C3B -:10F93000DE4F1882C853D14090E0C85CDE4FE881AA -:10F94000F981C853D1408E2B9F2B0C01FA01609393 -:10F950005B0030935700E89511244E5F5F4F6F4F67 -:10F960007F4F0EEFE02E0FEFF02ECE0CDF1CC114F8 -:10F97000D10499F685E0C05EDE4F088119812A81A5 -:10F980003B81C052D140F80120935B008093570027 -:10F99000E89507B600FCFDCF81E180935700E8951C -:10F9A00035C0C05EDE4F88819981AA81BB81C0527B -:10F9B000D140B695A795979587957C018601ABE0D8 -:10F9C000AA2EB12CAC0EBD1E0BC0D5016D915D01F0 -:10F9D000C7010F947FFE0894E11CF11C01501040F8 -:10F9E0000115110591F7A60160E070E0440F551F65 -:10F9F000661F771FC05EDE4FE880F9800A811B8199 -:10FA0000C052D1404E0D5F1D601F711F1A82C05E33 -:10FA1000DE4F488359836A837B83C052D1407FC0C5 -:10FA2000FA80C55CDE4FF882CB53D140C65CDE4F16 -:10FA30001882CA53D1408B81C82EDD24C65CDE4FAC -:10FA400008811981CA53D140C02AD12A1A828981DA -:10FA5000BE016D5F7F4F843121F59601C05EDE4FA0 -:10FA6000E880F9800A811B81C052D1400BBFF701A9 -:10FA700087919691DB018C9311969C936E5F7F4FDB -:10FA8000D801C7010296A11DB11DC05EDE4F88835B -:10FA90009983AA83BB83C052D14022503040F1F6F3 -:10FAA00036C0C05EDE4F288139814A815B81C052F9 -:10FAB000D1400894C108D108760100E010E0089414 -:10FAC000C11CD11C0894E11CF11C011D111DE20E8A -:10FAD000F31E041F151F21BDBB27A52F942F832FB5 -:10FAE00082BD2F5F3F4F4F4F5F4FF89A80B5DB01CC -:10FAF0008D93BD012E153F054007510761F7C05E8C -:10FB0000DE4F288339834A835B83C052D1409601FC -:10FB10002D5F3F4FFB01108204C080EC8A8322E0FE -:10FB200030E08BE18093C6008091C00086FFFCCF5F -:10FB30008091C00080648093C000C15DDE4FF88179 -:10FB4000CF52D140F093C6008091C00086FFFCCF19 -:10FB50008091C00080648093C000432F3093C60022 -:10FB60008091C00086FFFCCF8091C00080648093AC -:10FB7000C000922F2093C6008091C00086FFFCCF6A -:10FB80008091C00080648093C0008EE08093C600A6 -:10FB90008091C00086FFFCCF8091C000806480937C -:10FBA000C00065E1C15DDE4FE880CF52D1406E25D7 -:10FBB00069276427FE01319610C090819093C6009A -:10FBC0008091C00086FFFCCF31968091C000806498 -:10FBD0008093C0006927215030402115310569F715 -:10FBE0006093C6008091C00086FFFCCF8091C0006A -:10FBF00080648093C00085B1805885B9772081F4F6 -:10FC0000C15DDE4F0881CF52D1400F5FC15DDE4F35 -:10FC10000883CF52D14090E0A0E0B0E00D941AF4F8 -:10FC200027982F9880E090E020ED37E0F901319798 -:10FC3000F1F7019684369105C9F700008091C00064 -:10FC40008D7F8093C00081E180935700E895EE2777 -:10FC5000FF270994FFCF90E00D941AF497FB092E2B -:10FC600007260AD077FD04D02ED006D000201AF443 -:10FC7000709561957F4F0895F6F7909581959F4F08 -:10FC80000895A1E21A2EAA1BBB1BFD010DC0AA1FDD -:10FC9000BB1FEE1FFF1FA217B307E407F50720F0F5 -:10FCA000A21BB30BE40BF50B661F771F881F991F70 -:10FCB0001A9469F760957095809590959B01AC01B9 -:10FCC000BD01CF010895AA1BBB1B51E107C0AA1FAC -:10FCD000BB1FA617B70710F0A61BB70B881F991FED -:10FCE0005A95A9F780959095BC01CD010895F99991 -:10FCF000FECF92BD81BDF89A992780B50895262F31 -:10FD0000F999FECF1FBA92BD81BD20BD0FB6F89400 -:0EFD1000FA9AF99A0FBE01960895F894FFCF63 -:040000033000E000E9 -:00000001FF diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/SPI.cpp b/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/SPI.cpp deleted file mode 100644 index af14e07b12f..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/SPI.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2010 by Cristian Maglie - * Copyright (c) 2014 by Paul Stoffregen (Transaction API) - * Copyright (c) 2014 by Matthijs Kooijman (SPISettings AVR) - * Copyright (c) 2014 by Andrew J. Kroll (atomicity fixes) - * SPI Master library for arduino. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#include "SPI.h" - -SPIClass SPI; - -uint8_t SPIClass::initialized = 0; -uint8_t SPIClass::interruptMode = 0; -uint8_t SPIClass::interruptMask = 0; -uint8_t SPIClass::interruptSave = 0; -#ifdef SPI_TRANSACTION_MISMATCH_LED -uint8_t SPIClass::inTransactionFlag = 0; -#endif - -void SPIClass::begin() -{ - uint8_t sreg = SREG; - noInterrupts(); // Protect from a scheduler and prevent transactionBegin - if (!initialized) { - // Set SS to high so a connected chip will be "deselected" by default - uint8_t port = digitalPinToPort(SS); - uint8_t bit = digitalPinToBitMask(SS); - volatile uint8_t *reg = portModeRegister(port); - - // if the SS pin is not already configured as an output - // then set it high (to enable the internal pull-up resistor) - if(!(*reg & bit)){ - digitalWrite(SS, HIGH); - } - - // When the SS pin is set as OUTPUT, it can be used as - // a general purpose output port (it doesn't influence - // SPI operations). - pinMode(SS, OUTPUT); - - // Warning: if the SS pin ever becomes a LOW INPUT then SPI - // automatically switches to Slave, so the data direction of - // the SS pin MUST be kept as OUTPUT. - SPCR |= _BV(MSTR); - SPCR |= _BV(SPE); - - // Set direction register for SCK and MOSI pin. - // MISO pin automatically overrides to INPUT. - // By doing this AFTER enabling SPI, we avoid accidentally - // clocking in a single bit since the lines go directly - // from "input" to SPI control. - // http://code.google.com/p/arduino/issues/detail?id=888 - pinMode(SCK, OUTPUT); - pinMode(MOSI, OUTPUT); - } - initialized++; // reference count - SREG = sreg; -} - -void SPIClass::end() { - uint8_t sreg = SREG; - noInterrupts(); // Protect from a scheduler and prevent transactionBegin - // Decrease the reference counter - if (initialized) - initialized--; - // If there are no more references disable SPI - if (!initialized) { - SPCR &= ~_BV(SPE); - interruptMode = 0; - #ifdef SPI_TRANSACTION_MISMATCH_LED - inTransactionFlag = 0; - #endif - } - SREG = sreg; -} - -// mapping of interrupt numbers to bits within SPI_AVR_EIMSK -#if defined(__AVR_ATmega32U4__) - #define SPI_INT0_MASK (1< - * Copyright (c) 2014 by Paul Stoffregen (Transaction API) - * Copyright (c) 2014 by Matthijs Kooijman (SPISettings AVR) - * Copyright (c) 2014 by Andrew J. Kroll (atomicity fixes) - * SPI Master library for arduino. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#ifndef _SPI_H_INCLUDED -#define _SPI_H_INCLUDED - -#include - -// SPI_HAS_TRANSACTION means SPI has beginTransaction(), endTransaction(), -// usingInterrupt(), and SPISetting(clock, bitOrder, dataMode) -#define SPI_HAS_TRANSACTION 1 - -// SPI_HAS_NOTUSINGINTERRUPT means that SPI has notUsingInterrupt() method -#define SPI_HAS_NOTUSINGINTERRUPT 1 - -// SPI_ATOMIC_VERSION means that SPI has atomicity fixes and what version. -// This way when there is a bug fix you can check this define to alert users -// of your code if it uses better version of this library. -// This also implies everything that SPI_HAS_TRANSACTION as documented above is -// available too. -#define SPI_ATOMIC_VERSION 1 - -// Uncomment this line to add detection of mismatched begin/end transactions. -// A mismatch occurs if other libraries fail to use SPI.endTransaction() for -// each SPI.beginTransaction(). Connect an LED to this pin. The LED will turn -// on if any mismatch is ever detected. -//#define SPI_TRANSACTION_MISMATCH_LED 5 - -#ifndef LSBFIRST -#define LSBFIRST 0 -#endif -#ifndef MSBFIRST -#define MSBFIRST 1 -#endif - -#define SPI_CLOCK_DIV4 0x00 -#define SPI_CLOCK_DIV16 0x01 -#define SPI_CLOCK_DIV64 0x02 -#define SPI_CLOCK_DIV128 0x03 -#define SPI_CLOCK_DIV2 0x04 -#define SPI_CLOCK_DIV8 0x05 -#define SPI_CLOCK_DIV32 0x06 - -#define SPI_MODE0 0x00 -#define SPI_MODE1 0x04 -#define SPI_MODE2 0x08 -#define SPI_MODE3 0x0C - -#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR -#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR -#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR - -// define SPI_AVR_EIMSK for AVR boards with external interrupt pins -#if defined(EIMSK) - #define SPI_AVR_EIMSK EIMSK -#elif defined(GICR) - #define SPI_AVR_EIMSK GICR -#elif defined(GIMSK) - #define SPI_AVR_EIMSK GIMSK -#endif - -class SPISettings { -public: - SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) { - if (__builtin_constant_p(clock)) { - init_AlwaysInline(clock, bitOrder, dataMode); - } else { - init_MightInline(clock, bitOrder, dataMode); - } - } - SPISettings() { - init_AlwaysInline(4000000, MSBFIRST, SPI_MODE0); - } -private: - void init_MightInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) { - init_AlwaysInline(clock, bitOrder, dataMode); - } - void init_AlwaysInline(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) - __attribute__((__always_inline__)) { - // Clock settings are defined as follows. Note that this shows SPI2X - // inverted, so the bits form increasing numbers. Also note that - // fosc/64 appears twice - // SPR1 SPR0 ~SPI2X Freq - // 0 0 0 fosc/2 - // 0 0 1 fosc/4 - // 0 1 0 fosc/8 - // 0 1 1 fosc/16 - // 1 0 0 fosc/32 - // 1 0 1 fosc/64 - // 1 1 0 fosc/64 - // 1 1 1 fosc/128 - - // We find the fastest clock that is less than or equal to the - // given clock rate. The clock divider that results in clock_setting - // is 2 ^^ (clock_div + 1). If nothing is slow enough, we'll use the - // slowest (128 == 2 ^^ 7, so clock_div = 6). - uint8_t clockDiv; - - // When the clock is known at compiletime, use this if-then-else - // cascade, which the compiler knows how to completely optimize - // away. When clock is not known, use a loop instead, which generates - // shorter code. - if (__builtin_constant_p(clock)) { - if (clock >= F_CPU / 2) { - clockDiv = 0; - } else if (clock >= F_CPU / 4) { - clockDiv = 1; - } else if (clock >= F_CPU / 8) { - clockDiv = 2; - } else if (clock >= F_CPU / 16) { - clockDiv = 3; - } else if (clock >= F_CPU / 32) { - clockDiv = 4; - } else if (clock >= F_CPU / 64) { - clockDiv = 5; - } else { - clockDiv = 6; - } - } else { - uint32_t clockSetting = F_CPU / 2; - clockDiv = 0; - while (clockDiv < 6 && clock < clockSetting) { - clockSetting /= 2; - clockDiv++; - } - } - - // Compensate for the duplicate fosc/64 - if (clockDiv == 6) - clockDiv = 7; - - // Invert the SPI2X bit - clockDiv ^= 0x1; - - // Pack into the SPISettings class - spcr = _BV(SPE) | _BV(MSTR) | ((bitOrder == LSBFIRST) ? _BV(DORD) : 0) | - (dataMode & SPI_MODE_MASK) | ((clockDiv >> 1) & SPI_CLOCK_MASK); - spsr = clockDiv & SPI_2XCLOCK_MASK; - } - uint8_t spcr; - uint8_t spsr; - friend class SPIClass; -}; - - -class SPIClass { -public: - // Initialize the SPI library - static void begin(); - - // If SPI is used from within an interrupt, this function registers - // that interrupt with the SPI library, so beginTransaction() can - // prevent conflicts. The input interruptNumber is the number used - // with attachInterrupt. If SPI is used from a different interrupt - // (eg, a timer), interruptNumber should be 255. - static void usingInterrupt(uint8_t interruptNumber); - // And this does the opposite. - static void notUsingInterrupt(uint8_t interruptNumber); - // Note: the usingInterrupt and notUsingInterrupt functions should - // not to be called from ISR context or inside a transaction. - // For details see: - // https://github.com/arduino/Arduino/pull/2381 - // https://github.com/arduino/Arduino/pull/2449 - - // Before using SPI.transfer() or asserting chip select pins, - // this function is used to gain exclusive access to the SPI bus - // and configure the correct settings. - inline static void beginTransaction(SPISettings settings) { - if (interruptMode > 0) { - uint8_t sreg = SREG; - noInterrupts(); - - #ifdef SPI_AVR_EIMSK - if (interruptMode == 1) { - interruptSave = SPI_AVR_EIMSK; - SPI_AVR_EIMSK &= ~interruptMask; - SREG = sreg; - } else - #endif - { - interruptSave = sreg; - } - } - - #ifdef SPI_TRANSACTION_MISMATCH_LED - if (inTransactionFlag) { - pinMode(SPI_TRANSACTION_MISMATCH_LED, OUTPUT); - digitalWrite(SPI_TRANSACTION_MISMATCH_LED, HIGH); - } - inTransactionFlag = 1; - #endif - - SPCR = settings.spcr; - SPSR = settings.spsr; - } - - // Write to the SPI bus (MOSI pin) and also receive (MISO pin) - inline static uint8_t transfer(uint8_t data) { - SPDR = data; - /* - * The following NOP introduces a small delay that can prevent the wait - * loop form iterating when running at the maximum speed. This gives - * about 10% more speed, even if it seems counter-intuitive. At lower - * speeds it is unnoticed. - */ - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; // wait - return SPDR; - } - inline static uint16_t transfer16(uint16_t data) { - union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } in, out; - in.val = data; - if (!(SPCR & _BV(DORD))) { - SPDR = in.msb; - asm volatile("nop"); // See transfer(uint8_t) function - while (!(SPSR & _BV(SPIF))) ; - out.msb = SPDR; - SPDR = in.lsb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.lsb = SPDR; - } else { - SPDR = in.lsb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.lsb = SPDR; - SPDR = in.msb; - asm volatile("nop"); - while (!(SPSR & _BV(SPIF))) ; - out.msb = SPDR; - } - return out.val; - } - inline static void transfer(void *buf, size_t count) { - if (count == 0) return; - uint8_t *p = (uint8_t *)buf; - SPDR = *p; - while (--count > 0) { - uint8_t out = *(p + 1); - while (!(SPSR & _BV(SPIF))) ; - uint8_t in = SPDR; - SPDR = out; - *p++ = in; - } - while (!(SPSR & _BV(SPIF))) ; - *p = SPDR; - } - // After performing a group of transfers and releasing the chip select - // signal, this function allows others to access the SPI bus - inline static void endTransaction(void) { - #ifdef SPI_TRANSACTION_MISMATCH_LED - if (!inTransactionFlag) { - pinMode(SPI_TRANSACTION_MISMATCH_LED, OUTPUT); - digitalWrite(SPI_TRANSACTION_MISMATCH_LED, HIGH); - } - inTransactionFlag = 0; - #endif - - if (interruptMode > 0) { - #ifdef SPI_AVR_EIMSK - uint8_t sreg = SREG; - #endif - noInterrupts(); - #ifdef SPI_AVR_EIMSK - if (interruptMode == 1) { - SPI_AVR_EIMSK = interruptSave; - SREG = sreg; - } else - #endif - { - SREG = interruptSave; - } - } - } - - // Disable the SPI bus - static void end(); - - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setBitOrder(uint8_t bitOrder) { - if (bitOrder == LSBFIRST) SPCR |= _BV(DORD); - else SPCR &= ~(_BV(DORD)); - } - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setDataMode(uint8_t dataMode) { - SPCR = (SPCR & ~SPI_MODE_MASK) | dataMode; - } - // This function is deprecated. New applications should use - // beginTransaction() to configure SPI settings. - inline static void setClockDivider(uint8_t clockDiv) { - SPCR = (SPCR & ~SPI_CLOCK_MASK) | (clockDiv & SPI_CLOCK_MASK); - SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | ((clockDiv >> 2) & SPI_2XCLOCK_MASK); - } - // These undocumented functions should not be used. SPI.transfer() - // polls the hardware flag which is automatically cleared as the - // AVR responds to SPI's interrupt - inline static void attachInterrupt() { SPCR |= _BV(SPIE); } - inline static void detachInterrupt() { SPCR &= ~_BV(SPIE); } - -private: - static uint8_t initialized; - static uint8_t interruptMode; // 0=none, 1=mask, 2=global - static uint8_t interruptMask; // which interrupts to mask - static uint8_t interruptSave; // temp storage, to restore state - #ifdef SPI_TRANSACTION_MISMATCH_LED - static uint8_t inTransactionFlag; - #endif -}; - -extern SPIClass SPI; - -#endif diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino b/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino deleted file mode 100644 index 8104fcbc252..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/BarometricPressureSensor/BarometricPressureSensor.ino +++ /dev/null @@ -1,143 +0,0 @@ -/* - SCP1000 Barometric Pressure Sensor Display - - Shows the output of a Barometric Pressure Sensor on a - Uses the SPI library. For details on the sensor, see: - http://www.sparkfun.com/commerce/product_info.php?products_id=8161 - http://www.vti.fi/en/support/obsolete_products/pressure_sensors/ - - This sketch adapted from Nathan Seidle's SCP1000 example for PIC: - http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip - - Circuit: - SCP1000 sensor attached to pins 6, 7, 10 - 13: - DRDY: pin 6 - CSB: pin 7 - MOSI: pin 11 - MISO: pin 12 - SCK: pin 13 - - created 31 July 2010 - modified 14 August 2010 - by Tom Igoe - */ - -// the sensor communicates using SPI, so include the library: -#include - -//Sensor's memory register addresses: -const int PRESSURE = 0x1F; //3 most significant bits of pressure -const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure -const int TEMPERATURE = 0x21; //16 bit temperature reading -const byte READ = 0b11111100; // SCP1000's read command -const byte WRITE = 0b00000010; // SCP1000's write command - -// pins used for the connection with the sensor -// the other you need are controlled by the SPI library): -const int dataReadyPin = 6; -const int chipSelectPin = 7; - -void setup() { - Serial.begin(9600); - - // start the SPI library: - SPI.begin(); - - // initalize the data ready and chip select pins: - pinMode(dataReadyPin, INPUT); - pinMode(chipSelectPin, OUTPUT); - - //Configure SCP1000 for low noise configuration: - writeRegister(0x02, 0x2D); - writeRegister(0x01, 0x03); - writeRegister(0x03, 0x02); - // give the sensor time to set up: - delay(100); -} - -void loop() { - //Select High Resolution Mode - writeRegister(0x03, 0x0A); - - // don't do anything until the data ready pin is high: - if (digitalRead(dataReadyPin) == HIGH) { - //Read the temperature data - int tempData = readRegister(0x21, 2); - - // convert the temperature to celsius and display it: - float realTemp = (float)tempData / 20.0; - Serial.print("Temp[C]="); - Serial.print(realTemp); - - - //Read the pressure data highest 3 bits: - byte pressure_data_high = readRegister(0x1F, 1); - pressure_data_high &= 0b00000111; //you only needs bits 2 to 0 - - //Read the pressure data lower 16 bits: - unsigned int pressure_data_low = readRegister(0x20, 2); - //combine the two parts into one 19-bit number: - long pressure = ((pressure_data_high << 16) | pressure_data_low) / 4; - - // display the temperature: - Serial.println("\tPressure [Pa]=" + String(pressure)); - } -} - -//Read from or write to register from the SCP1000: -unsigned int readRegister(byte thisRegister, int bytesToRead ) { - byte inByte = 0; // incoming byte from the SPI - unsigned int result = 0; // result to return - Serial.print(thisRegister, BIN); - Serial.print("\t"); - // SCP1000 expects the register name in the upper 6 bits - // of the byte. So shift the bits left by two bits: - thisRegister = thisRegister << 2; - // now combine the address and the command into one byte - byte dataToSend = thisRegister & READ; - Serial.println(thisRegister, BIN); - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - // send the device the register you want to read: - SPI.transfer(dataToSend); - // send a value of 0 to read the first byte returned: - result = SPI.transfer(0x00); - // decrement the number of bytes left to read: - bytesToRead--; - // if you still have another byte to read: - if (bytesToRead > 0) { - // shift the first byte left, then get the second byte: - result = result << 8; - inByte = SPI.transfer(0x00); - // combine the byte you just got with the previous one: - result = result | inByte; - // decrement the number of bytes left to read: - bytesToRead--; - } - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); - // return the result: - return(result); -} - - -//Sends a write command to SCP1000 - -void writeRegister(byte thisRegister, byte thisValue) { - - // SCP1000 expects the register address in the upper 6 bits - // of the byte. So shift the bits left by two bits: - thisRegister = thisRegister << 2; - // now combine the register address and the command into one byte: - byte dataToSend = thisRegister | WRITE; - - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - - SPI.transfer(dataToSend); //Send register location - SPI.transfer(thisValue); //Send value to record into register - - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); -} - diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.ino b/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.ino deleted file mode 100644 index b135a74f4ed..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/examples/DigitalPotControl/DigitalPotControl.ino +++ /dev/null @@ -1,71 +0,0 @@ -/* - Digital Pot Control - - This example controls an Analog Devices AD5206 digital potentiometer. - The AD5206 has 6 potentiometer channels. Each channel's pins are labeled - A - connect this to voltage - W - this is the pot's wiper, which changes when you set it - B - connect this to ground. - - The AD5206 is SPI-compatible,and to command it, you send two bytes, - one with the channel number (0 - 5) and one with the resistance value for the - channel (0 - 255). - - The circuit: - * All A pins of AD5206 connected to +5V - * All B pins of AD5206 connected to ground - * An LED and a 220-ohm resisor in series connected from each W pin to ground - * CS - to digital pin 10 (SS pin) - * SDI - to digital pin 11 (MOSI pin) - * CLK - to digital pin 13 (SCK pin) - - created 10 Aug 2010 - by Tom Igoe - - Thanks to Heather Dewey-Hagborg for the original tutorial, 2005 - -*/ - - -// inslude the SPI library: -#include - - -// set pin 10 as the slave select for the digital pot: -const int slaveSelectPin = 10; - -void setup() { - // set the slaveSelectPin as an output: - pinMode (slaveSelectPin, OUTPUT); - // initialize SPI: - SPI.begin(); -} - -void loop() { - // go through the six channels of the digital pot: - for (int channel = 0; channel < 6; channel++) { - // change the resistance on this channel from min to max: - for (int level = 0; level < 255; level++) { - digitalPotWrite(channel, level); - delay(10); - } - // wait a second at the top: - delay(100); - // change the resistance on this channel from max to min: - for (int level = 0; level < 255; level++) { - digitalPotWrite(channel, 255 - level); - delay(10); - } - } - -} - -void digitalPotWrite(int address, int value) { - // take the SS pin low to select the chip: - digitalWrite(slaveSelectPin, LOW); - // send in the address and value via SPI: - SPI.transfer(address); - SPI.transfer(value); - // take the SS pin high to de-select the chip: - digitalWrite(slaveSelectPin, HIGH); -} diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/keywords.txt b/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/keywords.txt deleted file mode 100644 index fa7616581aa..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/keywords.txt +++ /dev/null @@ -1,36 +0,0 @@ -####################################### -# Syntax Coloring Map SPI -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -SPI KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### -begin KEYWORD2 -end KEYWORD2 -transfer KEYWORD2 -setBitOrder KEYWORD2 -setDataMode KEYWORD2 -setClockDivider KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### -SPI_CLOCK_DIV4 LITERAL1 -SPI_CLOCK_DIV16 LITERAL1 -SPI_CLOCK_DIV64 LITERAL1 -SPI_CLOCK_DIV128 LITERAL1 -SPI_CLOCK_DIV2 LITERAL1 -SPI_CLOCK_DIV8 LITERAL1 -SPI_CLOCK_DIV32 LITERAL1 -SPI_CLOCK_DIV64 LITERAL1 -SPI_MODE0 LITERAL1 -SPI_MODE1 LITERAL1 -SPI_MODE2 LITERAL1 -SPI_MODE3 LITERAL1 \ No newline at end of file diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/library.properties b/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/library.properties deleted file mode 100644 index 07af8696109..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/library.properties +++ /dev/null @@ -1,10 +0,0 @@ -name=SPI -version=1.0 -author=Arduino -maintainer=Arduino -sentence=Enables the communication with devices that use the Serial Peripheral Interface (SPI) Bus. For all Arduino boards, BUT Arduino DUE. -paragraph= -url=http://arduino.cc/en/Reference/SPI -architectures=avr -types=Arduino - diff --git a/legacy/builder/test/user_hardware/my_avr_platform/avr/platform.txt b/legacy/builder/test/user_hardware/my_avr_platform/avr/platform.txt deleted file mode 100644 index cc0be0a0c5f..00000000000 --- a/legacy/builder/test/user_hardware/my_avr_platform/avr/platform.txt +++ /dev/null @@ -1,9 +0,0 @@ - -# Arduino AVR Core and platform. -# ------------------------------ - -# For more info: -# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification - -name=My AVR Boards -version=9.9.9 \ No newline at end of file diff --git a/legacy/builder/test/user_hardware/my_symlinked_avr_platform b/legacy/builder/test/user_hardware/my_symlinked_avr_platform deleted file mode 120000 index 8f67ba7ea89..00000000000 --- a/legacy/builder/test/user_hardware/my_symlinked_avr_platform +++ /dev/null @@ -1 +0,0 @@ -my_avr_platform \ No newline at end of file diff --git a/legacy/builder/test/wipeout_build_path_if_build_options_changed_test.go b/legacy/builder/test/wipeout_build_path_if_build_options_changed_test.go deleted file mode 100644 index 7df448e9b54..00000000000 --- a/legacy/builder/test/wipeout_build_path_if_build_options_changed_test.go +++ /dev/null @@ -1,89 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package test - -import ( - "testing" - - "github.com/arduino/arduino-cli/legacy/builder" - "github.com/arduino/arduino-cli/legacy/builder/types" - "github.com/stretchr/testify/require" -) - -func TestWipeoutBuildPathIfBuildOptionsChanged(t *testing.T) { - ctx := &types.Context{} - - buildPath := SetupBuildPath(t, ctx) - defer buildPath.RemoveAll() - - ctx.BuildOptionsJsonPrevious = "{ \"old\":\"old\" }" - ctx.BuildOptionsJson = "{ \"new\":\"new\" }" - - buildPath.Join("should_be_deleted.txt").Truncate() - - _, err := builder.WipeoutBuildPathIfBuildOptionsChanged( - ctx.Clean, - ctx.BuildPath, - ctx.BuildOptionsJson, - ctx.BuildOptionsJsonPrevious, - ctx.BuildProperties, - ) - require.NoError(t, err) - - exist, err := buildPath.ExistCheck() - require.NoError(t, err) - require.True(t, exist) - - files, err := buildPath.ReadDir() - require.NoError(t, err) - require.Equal(t, 0, len(files)) - - exist, err = buildPath.Join("should_be_deleted.txt").ExistCheck() - require.NoError(t, err) - require.False(t, exist) -} - -func TestWipeoutBuildPathIfBuildOptionsChangedNoPreviousBuildOptions(t *testing.T) { - ctx := &types.Context{} - - buildPath := SetupBuildPath(t, ctx) - defer buildPath.RemoveAll() - - ctx.BuildOptionsJson = "{ \"new\":\"new\" }" - - require.NoError(t, buildPath.Join("should_not_be_deleted.txt").Truncate()) - - _, err := builder.WipeoutBuildPathIfBuildOptionsChanged( - ctx.Clean, - ctx.BuildPath, - ctx.BuildOptionsJson, - ctx.BuildOptionsJsonPrevious, - ctx.BuildProperties, - ) - require.NoError(t, err) - - exist, err := buildPath.ExistCheck() - require.NoError(t, err) - require.True(t, exist) - - files, err := buildPath.ReadDir() - require.NoError(t, err) - require.Equal(t, 1, len(files)) - - exist, err = buildPath.Join("should_not_be_deleted.txt").ExistCheck() - require.NoError(t, err) - require.True(t, exist) -} diff --git a/legacy/builder/types/context.go b/legacy/builder/types/context.go deleted file mode 100644 index 61eff082d7a..00000000000 --- a/legacy/builder/types/context.go +++ /dev/null @@ -1,99 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package types - -import ( - "github.com/arduino/arduino-cli/arduino/builder" - "github.com/arduino/arduino-cli/arduino/builder/compilation" - "github.com/arduino/arduino-cli/arduino/builder/detector" - "github.com/arduino/arduino-cli/arduino/builder/logger" - "github.com/arduino/arduino-cli/arduino/builder/progress" - "github.com/arduino/arduino-cli/arduino/builder/sizer" - "github.com/arduino/arduino-cli/arduino/cores" - "github.com/arduino/arduino-cli/arduino/cores/packagemanager" - rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1" - paths "github.com/arduino/go-paths-helper" - properties "github.com/arduino/go-properties-orderedmap" -) - -// Context structure -type Context struct { - Builder *builder.Builder - SketchLibrariesDetector *detector.SketchLibrariesDetector - BuilderLogger *logger.BuilderLogger - - // Build options - HardwareDirs paths.PathList - BuiltInToolsDirs paths.PathList - BuiltInLibrariesDirs *paths.Path - OtherLibrariesDirs paths.PathList - FQBN *cores.FQBN - Clean bool - - // Build options are serialized here - BuildOptionsJson string - BuildOptionsJsonPrevious string - - PackageManager *packagemanager.Explorer - RequiredTools []*cores.ToolRelease - TargetBoard *cores.Board - TargetPackage *cores.Package - TargetPlatform *cores.PlatformRelease - ActualPlatform *cores.PlatformRelease - - BuildProperties *properties.Map - BuildPath *paths.Path - SketchBuildPath *paths.Path - CoreBuildPath *paths.Path - CoreArchiveFilePath *paths.Path - CoreObjectsFiles paths.PathList - LibrariesBuildPath *paths.Path - LibrariesObjectFiles paths.PathList - SketchObjectFiles paths.PathList - - // C++ Parsing - LineOffset int - - // Dry run, only create progress map - Progress progress.Struct - // Send progress events to this callback - ProgressCB rpc.TaskProgressCB - - // Custom build properties defined by user (line by line as "key=value" pairs) - CustomBuildProperties []string - - // Sizer results - ExecutableSectionsSize sizer.ExecutablesFileSections - - // Compilation Database to build/update - CompilationDatabase *compilation.Database - // Set to true to skip build and produce only Compilation Database - OnlyUpdateCompilationDatabase bool - - // Source code overrides (filename -> content map). - // The provided source data is used instead of reading it from disk. - // The keys of the map are paths relative to sketch folder. - SourceOverride map[string]string -} - -func (ctx *Context) PushProgress() { - if ctx.ProgressCB != nil { - ctx.ProgressCB(&rpc.TaskProgress{ - Percent: ctx.Progress.Progress, - Completed: ctx.Progress.Progress >= 100.0, - }) - } -} diff --git a/legacy/builder/types/types.go b/legacy/builder/types/types.go deleted file mode 100644 index 8678fd2fe51..00000000000 --- a/legacy/builder/types/types.go +++ /dev/null @@ -1,26 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package types - -type Command interface { - Run(ctx *Context) error -} - -type BareCommand func(ctx *Context) error - -func (cmd BareCommand) Run(ctx *Context) error { - return cmd(ctx) -} diff --git a/legacy/builder/unused_compiled_libraries_remover.go b/legacy/builder/unused_compiled_libraries_remover.go deleted file mode 100644 index cea88bd9db6..00000000000 --- a/legacy/builder/unused_compiled_libraries_remover.go +++ /dev/null @@ -1,55 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "github.com/arduino/arduino-cli/arduino/libraries" - "github.com/arduino/go-paths-helper" - "github.com/pkg/errors" - "golang.org/x/exp/slices" -) - -func UnusedCompiledLibrariesRemover(librariesBuildPath *paths.Path, importedLibraries libraries.List) error { - if librariesBuildPath.NotExist() { - return nil - } - - files, err := librariesBuildPath.ReadDir() - if err != nil { - return errors.WithStack(err) - } - - libraryNames := toLibraryNames(importedLibraries) - for _, file := range files { - if file.IsDir() { - if !slices.Contains(libraryNames, file.Base()) { - if err := file.RemoveAll(); err != nil { - return errors.WithStack(err) - } - } - } - } - - return nil -} - -func toLibraryNames(libraries []*libraries.Library) []string { - libraryNames := []string{} - for _, library := range libraries { - libraryNames = append(libraryNames, library.Name) - } - return libraryNames -} diff --git a/legacy/builder/warn_about_arch_incompatible_libraries.go b/legacy/builder/warn_about_arch_incompatible_libraries.go deleted file mode 100644 index ea7392560bc..00000000000 --- a/legacy/builder/warn_about_arch_incompatible_libraries.go +++ /dev/null @@ -1,45 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "strings" - - "github.com/arduino/arduino-cli/arduino/cores" - "github.com/arduino/arduino-cli/arduino/libraries" -) - -func WarnAboutArchIncompatibleLibraries( - targetPlatform *cores.PlatformRelease, - overrides string, - importedLibraries libraries.List, - printInfoFn func(string), -) { - archs := []string{targetPlatform.Platform.Architecture} - if overrides != "" { - archs = append(archs, strings.Split(overrides, ",")...) - } - - for _, importedLibrary := range importedLibraries { - if !importedLibrary.SupportsAnyArchitectureIn(archs...) { - printInfoFn( - tr("WARNING: library %[1]s claims to run on %[2]s architecture(s) and may be incompatible with your current board which runs on %[3]s architecture(s).", - importedLibrary.Name, - strings.Join(importedLibrary.Architectures, ", "), - strings.Join(archs, ", "))) - } - } -} diff --git a/legacy/builder/wipeout_build_path_if_build_options_changed.go b/legacy/builder/wipeout_build_path_if_build_options_changed.go deleted file mode 100644 index 108664978ca..00000000000 --- a/legacy/builder/wipeout_build_path_if_build_options_changed.go +++ /dev/null @@ -1,94 +0,0 @@ -// This file is part of arduino-cli. -// -// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -// -// This software is released under the GNU General Public License version 3, -// which covers the main part of arduino-cli. -// The terms of this license can be found at: -// https://www.gnu.org/licenses/gpl-3.0.en.html -// -// You can be released from the requirements of the above licenses by purchasing -// a commercial license. Buying such a license is mandatory if you want to -// modify or otherwise use the software for commercial activities involving the -// Arduino software without disclosing the source code of your own applications. -// To purchase a commercial license, send an email to license@arduino.cc. - -package builder - -import ( - "encoding/json" - "path/filepath" - - "github.com/arduino/arduino-cli/arduino/builder/utils" - "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/go-paths-helper" - properties "github.com/arduino/go-properties-orderedmap" - "github.com/pkg/errors" -) - -func WipeoutBuildPathIfBuildOptionsChanged( - clean bool, - buildPath *paths.Path, - buildOptionsJson, buildOptionsJsonPrevious string, - buildProperties *properties.Map, -) (string, error) { - if clean { - return "", doCleanup(buildPath) - } - if buildOptionsJsonPrevious == "" { - return "", nil - } - - var opts *properties.Map - if err := json.Unmarshal([]byte(buildOptionsJson), &opts); err != nil || opts == nil { - panic(constants.BUILD_OPTIONS_FILE + " is invalid") - } - - var prevOpts *properties.Map - if err := json.Unmarshal([]byte(buildOptionsJsonPrevious), &prevOpts); err != nil || prevOpts == nil { - return tr("%[1]s invalid, rebuilding all", constants.BUILD_OPTIONS_FILE), doCleanup(buildPath) - } - - // If SketchLocation path is different but filename is the same, consider it equal - if filepath.Base(opts.Get("sketchLocation")) == filepath.Base(prevOpts.Get("sketchLocation")) { - opts.Remove("sketchLocation") - prevOpts.Remove("sketchLocation") - } - - // If options are not changed check if core has - if opts.Equals(prevOpts) { - // check if any of the files contained in the core folders has changed - // since the json was generated - like platform.txt or similar - // if so, trigger a "safety" wipe - targetCoreFolder := buildProperties.GetPath("runtime.platform.path") - coreFolder := buildProperties.GetPath("build.core.path") - realCoreFolder := coreFolder.Parent().Parent() - jsonPath := buildPath.Join(constants.BUILD_OPTIONS_FILE) - coreUnchanged, _ := utils.DirContentIsOlderThan(realCoreFolder, jsonPath, ".txt") - if coreUnchanged && targetCoreFolder != nil && !realCoreFolder.EqualsTo(targetCoreFolder) { - coreUnchanged, _ = utils.DirContentIsOlderThan(targetCoreFolder, jsonPath, ".txt") - } - if coreUnchanged { - return "", nil - } - } - - return "", doCleanup(buildPath) -} - -func doCleanup(buildPath *paths.Path) error { - // FIXME: this should go outside legacy and behind a `logrus` call so users can - // control when this should be printed. - // logger.Println(constants.LOG_LEVEL_INFO, constants.MSG_BUILD_OPTIONS_CHANGED + constants.MSG_REBUILD_ALL) - - if files, err := buildPath.ReadDir(); err != nil { - return errors.WithMessage(err, tr("cleaning build path")) - } else { - for _, file := range files { - if err := file.RemoveAll(); err != nil { - return errors.WithMessage(err, tr("cleaning build path")) - } - } - } - return nil -} diff --git a/poetry.lock b/poetry.lock index feb4d566a9f..4c84995240f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -58,13 +58,13 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.34" +version = "3.1.35" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.34-py3-none-any.whl", hash = "sha256:5d3802b98a3bae1c2b8ae0e1ff2e4aa16bcdf02c145da34d092324f599f01395"}, - {file = "GitPython-3.1.34.tar.gz", hash = "sha256:85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd"}, + {file = "GitPython-3.1.35-py3-none-any.whl", hash = "sha256:c19b4292d7a1d3c0f653858db273ff8a6614100d1eb1528b014ec97286193c09"}, + {file = "GitPython-3.1.35.tar.gz", hash = "sha256:9cbefbd1789a5fe9bcf621bb34d3f441f3a90c8461d377f84eda73e721d9b06b"}, ] [package.dependencies] @@ -499,4 +499,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "2.0" python-versions = ">=3.8, !=3.9.7, <4" -content-hash = "81f6e99d806827e43f16cea94ac92869a8602041d99039b8e62cc69df46796fe" +content-hash = "11feb324d950054585f5714f0710ba0ad95280b238ae5c5e3d75da5363a30fea" diff --git a/pyproject.toml b/pyproject.toml index f0961f5a90d..eef18424a76 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,5 +11,5 @@ python = ">=3.8, !=3.9.7, <4" mkdocs = "^1.2.1" mkdocs-material = "^7.1.8" mdx-truly-sane-lists = "^1.2" -GitPython = "^3.1.34" +GitPython = "^3.1.35" mike = "^1.0.1" diff --git a/rpc/cc/arduino/cli/commands/v1/core.pb.go b/rpc/cc/arduino/cli/commands/v1/core.pb.go index b02ce998be1..42871130dae 100644 --- a/rpc/cc/arduino/cli/commands/v1/core.pb.go +++ b/rpc/cc/arduino/cli/commands/v1/core.pb.go @@ -54,6 +54,9 @@ type PlatformInstallRequest struct { // Set to true to skip installation if a different version of the platform // is already installed. NoOverwrite bool `protobuf:"varint,6,opt,name=no_overwrite,json=noOverwrite,proto3" json:"no_overwrite,omitempty"` + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms when performing platform upgrades + SkipPreUninstall bool `protobuf:"varint,7,opt,name=skip_pre_uninstall,json=skipPreUninstall,proto3" json:"skip_pre_uninstall,omitempty"` } func (x *PlatformInstallRequest) Reset() { @@ -130,6 +133,13 @@ func (x *PlatformInstallRequest) GetNoOverwrite() bool { return false } +func (x *PlatformInstallRequest) GetSkipPreUninstall() bool { + if x != nil { + return x.SkipPreUninstall + } + return false +} + type PlatformInstallResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -358,6 +368,9 @@ type PlatformUninstallRequest struct { PlatformPackage string `protobuf:"bytes,2,opt,name=platform_package,json=platformPackage,proto3" json:"platform_package,omitempty"` // Architecture name of the platform (e.g., `avr`). Architecture string `protobuf:"bytes,3,opt,name=architecture,proto3" json:"architecture,omitempty"` + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms + SkipPreUninstall bool `protobuf:"varint,4,opt,name=skip_pre_uninstall,json=skipPreUninstall,proto3" json:"skip_pre_uninstall,omitempty"` } func (x *PlatformUninstallRequest) Reset() { @@ -413,6 +426,13 @@ func (x *PlatformUninstallRequest) GetArchitecture() string { return "" } +func (x *PlatformUninstallRequest) GetSkipPreUninstall() bool { + if x != nil { + return x.SkipPreUninstall + } + return false +} + type PlatformUninstallResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -515,6 +535,9 @@ type PlatformUpgradeRequest struct { // Set to true to not run (eventual) post install scripts for trusted // platforms SkipPostInstall bool `protobuf:"varint,4,opt,name=skip_post_install,json=skipPostInstall,proto3" json:"skip_post_install,omitempty"` + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms when performing platform upgrades + SkipPreUninstall bool `protobuf:"varint,5,opt,name=skip_pre_uninstall,json=skipPreUninstall,proto3" json:"skip_pre_uninstall,omitempty"` } func (x *PlatformUpgradeRequest) Reset() { @@ -577,6 +600,13 @@ func (x *PlatformUpgradeRequest) GetSkipPostInstall() bool { return false } +func (x *PlatformUpgradeRequest) GetSkipPreUninstall() bool { + if x != nil { + return x.SkipPreUninstall + } + return false +} + type PlatformUpgradeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -884,7 +914,7 @@ var file_cc_arduino_cli_commands_v1_core_proto_rawDesc = []byte{ 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x27, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x02, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc0, 0x02, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, @@ -902,40 +932,24 @@ var file_cc_arduino_cli_commands_v1_core_proto_rawDesc = []byte{ 0x6b, 0x69, 0x70, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x6f, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc4, - 0x01, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, + 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x75, 0x6e, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, + 0x6b, 0x69, 0x70, 0x50, 0x72, 0x65, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x22, + 0xb2, 0x01, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, - 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0xab, 0x01, 0x0a, 0x18, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc4, 0x01, 0x0a, + 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, @@ -944,82 +958,107 @@ var file_cc_arduino_cli_commands_v1_core_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6a, 0x0a, 0x19, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x41, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd5, 0x01, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x6b, 0x69, - 0x70, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x22, 0xf4, 0x01, 0x0a, - 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x63, 0x2e, - 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x18, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x48, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x18, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x70, 0x72, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x72, 0x65, 0x55, 0x6e, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x22, 0x6a, 0x0a, 0x19, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x55, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, - 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x67, 0x73, - 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x63, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, - 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, + 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x74, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x83, 0x02, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x11, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x6f, 0x73, + 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x6b, 0x69, 0x70, 0x50, 0x72, 0x65, 0x55, 0x6e, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x22, 0xf4, 0x01, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, - 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x6d, 0x0a, 0x14, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, - 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, - 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x72, 0x70, 0x63, - 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0d, + 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0c, 0x74, + 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9d, 0x01, + 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, 0x61, + 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x72, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x6c, + 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x63, 0x0a, + 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x63, 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, + 0x63, 0x2e, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x22, 0x6d, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, + 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x63, 0x2e, + 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x52, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x72, 0x64, 0x75, 0x69, + 0x6e, 0x6f, 0x2d, 0x63, 0x6c, 0x69, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x63, 0x2f, 0x61, 0x72, + 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/rpc/cc/arduino/cli/commands/v1/core.proto b/rpc/cc/arduino/cli/commands/v1/core.proto index d52251f470a..70ec4d46886 100644 --- a/rpc/cc/arduino/cli/commands/v1/core.proto +++ b/rpc/cc/arduino/cli/commands/v1/core.proto @@ -36,6 +36,9 @@ message PlatformInstallRequest { // Set to true to skip installation if a different version of the platform // is already installed. bool no_overwrite = 6; + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms when performing platform upgrades + bool skip_pre_uninstall = 7; } message PlatformInstallResponse { @@ -69,6 +72,9 @@ message PlatformUninstallRequest { string platform_package = 2; // Architecture name of the platform (e.g., `avr`). string architecture = 3; + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms + bool skip_pre_uninstall = 4; } message PlatformUninstallResponse { @@ -90,6 +96,9 @@ message PlatformUpgradeRequest { // Set to true to not run (eventual) post install scripts for trusted // platforms bool skip_post_install = 4; + // Set to true to not run (eventual) pre uninstall scripts for trusted + // platforms when performing platform upgrades + bool skip_pre_uninstall = 5; } message PlatformUpgradeResponse {