Skip to content

Latest commit

 

History

History

upload

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

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)