upload

package
v0.0.0-...-2d6395d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 2, 2024 License: AGPL-3.0 Imports: 11 Imported by: 3

README

Package upload

import "github.com/arduino/arduino-create-agent/upload"

Package upload allows to upload sketches into a board connected to the computer It can do it via serial port

Usage for a serial upload

Make sure that you have a compiled sketch somewhere on your disk

commandline = ``"/usr/bin/avrdude" "-C/usr/bin/avrdude.conf" -v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D "-Uflash:w:./sketch.hex:i"``
err := upload.Serial("/dev/ttyACM0", commandline, upload.Extra{}, nil)

note that the commandline contains the path of the sketch (sketch.hex)

Resolving commandlines

If you happen to have an unresolved commandline (full of {} parameters) you can resolve it

 t := tools.Tools{}
 commandline = upload.Resolve("/dev/ttyACM0", "arduino:avr:leonardo", "./sketch.hex", commandline, upload.Extra{}, t)

t must implement the locater interface (the Tools package does!)

Logging If you're interested in the output of the commands, you can implement the logger interface. Here's an example:

 logger := logrus.New()
 logger.Level = logrus.DebugLevel
 upload.Serial("/dev/ttyACM0", commandline, upload.Extra{}, logger)

Variables

var Busy = false

Busy tells wether the upload is doing something

Functions

func Kill()

Kill stops any upload process as soon as possible

func Resolve(port, board, file, commandline string, extra Extra, t Locater) (string, error)

Resolve replaces some symbols in the commandline with the appropriate values it can return an error when looking a variable in the Locater

func Serial(port, commandline string, extra Extra, l Logger) error

Serial performs a serial upload

Types

type Extra struct {
    Use1200bpsTouch   bool   `json:"use_1200bps_touch"`
    WaitForUploadPort bool   `json:"wait_for_upload_port"`
    Network           bool   `json:"network"`
}

Extra contains some options used during the upload

type Locater interface {
    GetLocation(command string) (string, error)
}

Locater can return the location of a tool in the system

type Logger interface {
    Debug(args ...interface{})
    Info(args ...interface{})
}

Logger is an interface implemented by most loggers (like logrus)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Kill

func Kill()

Kill stops any upload process as soon as possible

func PartiallyResolve

func PartiallyResolve(board, file, platformPath, commandline string, extra Extra, t Locater) (string, error)

PartiallyResolve replaces some symbols in the commandline with the appropriate values it can return an error when looking a variable in the Locater

func Serial

func Serial(port, commandline string, extra Extra, l Logger) error

Serial performs a serial upload

Types

type Extra

type Extra struct {
	Use1200bpsTouch   bool `json:"use_1200bps_touch"`
	WaitForUploadPort bool `json:"wait_for_upload_port"`
	Network           bool `json:"network"`
}

Extra contains some options used during the upload

type Locater

type Locater interface {
	GetLocation(command string) (string, error)
}

Locater can return the location of a tool in the system

type Logger

type Logger interface {
	Debug(args ...interface{})
	Info(args ...interface{})
}

Logger is an interface implemented by most loggers (like logrus)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL