Skip to main content

Manual

sl version: 1.11

Use sl --readme > manual.md to generate this manual if your sl version is different.


Welcome to the sl command line/cloud tool. sl is used to develop, debug, deploy, and share applications, OS packages and data for Stratify OS.

Workspaces and Login#

The sl command line tool operates in a workspace, or simply the current working directory. It automatically creates workspace files when they don't exist. Because sl is a cloud tool, it requires you to login. The first time you run sl in a new workspace, it will launch the browser and ask you to login. Once you create an account using the Stratify web application, you can copy an sl login command and execute it in the terminal. This will create an sl_credentials.json file in the workspace. The command sl cloud.logout will remove the credentials from the workspace.

Switches

Switches can be passed with any command. All switches are processed before any commands regardless of the order.

help shows help information. Usage: sl --help[=<group>][.<command>]

offline operate in offline mode (not all features are available)

listen run as an HTTP server using JSON requests

webpath path to an HTTP site to serve

update checks for updates to sl and downloads the latest version without making it effective. To make the latest version effective, you need to execute slu to replace the downloaded version with the new version. Usage: sl --update

debug shows low level debugging. Example: sl os.ping --debug=10

shortcuts shows the shortcuts available in the workspace. Example: sl --shortcuts

version shows version information for sl. Example: sl --version

initialize Initializes the current directory as an sl workspace. Example: sl --initialize

shortcut saves the commands as a shortcut. Example: sl term.run --save=runTerminal

readme prints the entire readme document. Example: sl --readme

verbose sets the verbose level. Usage: sl --verbose=<fatal|error|warning|info|message|debug>

vanilla disables color and other formatting options in the output. Example: sl debug.trace --vanilla

json prints output in JSON format. Example: sl --version --json

archivehistory archives the workspace history. The history is automatically archived from time to time. Example: sl --archivehistory

codefences add code fences to structured output

report save a report of the program output to your cloud account (implies --vanilla

graph create a call graph of the execution of the sl program

copy make a copy of sl called slc (useful for rebuilding and installing from source)

Commands

Grammar#

Each sl command consists of a group and command written <group>.<command>[:<arguments>]. Each group has a long name and a short name. The long and short names are expressed in this manual as long name|short name (e.g, connection|conn). The following commands are equivalent.

sl connection.pingsl conn.ping

Arguments are command specific and listed as <argument>=<value>. Multiple arguments are separated by commas. Use single quotes around a <value> that includes commas or spaces.

sl application.install:path=HelloWorld,run=true,terminal=truesl filesystem.list:path=device@/home,recursive=true

For arguments with type bool, the value can be omitted and will be set to true if the argument is present. If a bool argument is omitted, it is assigned a default value which is specific to the argument and command (details for each argument are below). To specify a bool argument as false, it must be explicit: recursive=false. Multiple commands sent on a single invocation of sl are separated by spaces and executed from left to right.

sl terminal.run:while=HelloWorld application.run:path=HelloWorld,args='--version' os.reset

Output#

The output is in YAML format. The top level is an array with each command passed being an element in the array. Most commands output properly formatted YAML, but some options may interfere. For example, if the terminal is enabled to print to the standard output, the YAML formatting will break down. Also, --verbose levels of message and debug may also break the formatting.

# connection.ping
## output- usb@/20A0/41D5/01/0000000068004892E01ED1207F80F5B0:        - name: StratifyToolbox        - serialNumber: 0000000068004892E01ED1207F80F5B0        - hardwareId: 00000007        - projectId:         - bspVersion: 0.3        - sosVersion: 3.12.0d        - cpuArchitecture: v7em_f5dh        - cpuFrequency: 480000000        - applicationSignature: 0        - bspGitHash: ebb7b90        - sosGitHash: 870f968        - mcuGitHash: b691e52- result: success

Exit Code#

If all commands complete successfully, the exit code is 0. If a command fails, the exit code is 1. This allows the use of the bash operators && and || to conditionally execute another command.

# reset if HelloWorld fails to installsl cloud.install:name=HelloWorld || sl os.reset# If the OS installs successfully, copy the README filesl os.install:path=Toolbox && slfilesystem.copy:source=host@README.md,dest=device@/app/flash/README.md

Help#

All of the information in this manual is also available from the command line using the --help switch. For example:, sl --help=application.install will provide the relevant information for the application.install command.

sl --help # general help informationsl --help=application # list of commands available to the application groupsl --help=app # list of commands available to the application groupsl --help=application.install # details for the application install commandsl --help=app.install # same as above using short name

Reference#


application|app

application|app.install#

Usage:

sl application.install:[authenticated=<bool>]    [,build=<string>]    [,clean=<bool>]    [,description=<string>]    [,destination=<string>]    [,external=<bool>]    [,externalcode=<bool>]    [,externaldata=<bool>]    [,force=<bool>]    [,kill=<bool>]    ,path=<string>    [,ram=<bool>]    [,ramsize=<int>]    [,run=<bool>]    [,startup=<bool>]    [,suffix=<string>]    [,terminal=<bool>]    [,tightlycoupled=<bool>]    [,tightlycoupledcode=<bool>]    [,tightlycoupleddata=<bool>]    

Help with this command:

sl --help=application.install

Description#

The application.install command installs an application that was built on the host computer to a connected device.

arguments#

arguments#

  • shortcut: args
  • description: specifies arguments to pass to the application (use with run).
  • example: application.install:path=<path>,arguments=<none>
  • required: false
  • type: string
  • default: <none>

authenticated#

  • shortcut: auth
  • description: install the application with the authenticated flag set.
  • example: application.install:path=<path>,authenticated=false
  • required: false
  • type: bool
  • default: false

build#

  • shortcut: target
  • description: is usually set torelease or debug.
  • example: application.install:path=<path>,build=release
  • required: false
  • type: string
  • default: release

clean#

  • description: other copies of the app are deleted before installation.
  • example: application.install:path=<path>,clean=true
  • required: false
  • type: bool
  • default: true

destination#

  • shortcut: dest
  • description: installation destination.
  • example: application.install:path=<path>,destination=<auto>
  • required: false
  • type: string
  • default: <auto>

external#

  • shortcut: ext
  • description: install the code and data in external RAM (ignored if ram is false).
  • example: application.install:path=<path>,external=<false>
  • required: false
  • type: bool
  • default: <false>

externalcode#

  • description: install the code in external memory.
  • example: application.install:path=<path>,externalcode=false
  • required: false
  • type: bool
  • default: false

externaldata#

  • description: install the data in external RAM.
  • example: application.install:path=<path>,externaldata=false
  • required: false
  • type: bool
  • default: false

force#

  • description: install over a currently running application without killing first.
  • example: application.install:path=<path>,force=false
  • required: false
  • type: bool
  • default: false

kill#

  • description: kill the application before installing, otherwise installation is aborted if the application is running.
  • example: application.install:path=<path>,kill=true
  • required: false
  • type: bool
  • default: true

path#

  • shortcut: p
  • description: the relative path to the application project folder on the host computer.
  • example: application.install:path=<path>
  • required: true
  • type: string

ram#

  • description: install the code in RAM rather than flash (cant be used with startup`).
  • example: application.install:path=<path>,ram=<auto>
  • required: false
  • type: bool
  • default: <auto>

ramsize#

  • shortcut: datasize
  • description: amount of RAM in bytes to use for data memory (default is to use value specified by the developer).
  • example: application.install:path=<path>,ramsize=<default>
  • required: false
  • type: int
  • default: <default>

run#

  • description: application is run after it has been installed.
  • example: application.install:path=<path>,run=false
  • required: false
  • type: bool
  • default: false

startup#

  • description: install the program so that it runs when the OS starts up (cant be used with ram`).
  • example: application.install:path=<path>,startup=false
  • required: false
  • type: bool
  • default: false

suffix#

  • description: suffix to be appended to the application name (for creating multiple copies of the same application).
  • example: application.install:path=<path>,suffix=<none>
  • required: false
  • type: string
  • default: <none>

terminal#

  • shortcut: term
  • description: run the terminal while the application is running (used with run).
  • example: application.install:path=<path>,terminal=false
  • required: false
  • type: bool
  • default: false

tightlycoupled#

  • shortcut: tc
  • description: install the code and data in tightly coupled RAM (ignored if ram is false).
  • example: application.install:path=<path>,tightlycoupled=<false>
  • required: false
  • type: bool
  • default: <false>

tightlycoupledcode#

  • shortcut: tcc
  • description: install the code in tightly coupled memory.
  • example: application.install:path=<path>,tightlycoupledcode=false
  • required: false
  • type: bool
  • default: false

tightlycoupleddata#

  • shortcut: tcd
  • description: install the data in tightly coupled RAM.
  • example: application.install:path=<path>,tightlycoupleddata=false
  • required: false
  • type: bool
  • default: false

application|app.run#

Usage:

sl application.run:[description=<string>]    ,path=<string>    [,terminal=<bool>]    

Help with this command:

sl --help=application.run

Description#

The application.run command runs an application on a connected device.

arguments#

arguments#

  • shortcut: args
  • description: arguments to pass to the application.
  • example: application.run:path=<path>,arguments=<none>
  • required: false
  • type: string
  • default: <none>

path#

  • shortcut: p
  • description: the path to the application to execute (if just a name is provided, /app is searched for a match).
  • example: application.run:path=<path>
  • required: true
  • type: string

terminal#

  • shortcut: term
  • description: the terminal will run while the application runs.
  • example: application.run:path=<path>,terminal=false
  • required: false
  • type: bool
  • default: false

application|app.publish#

Usage:

sl application.publish:[description=<string>]    [,dryrun=<bool>]    [,fork=<bool>]    [,header=<bool>]    [,path=<string>]    [,roll=<bool>]    

Help with this command:

sl --help=application.publish

Description#

The application.publish command publishes a version of the application to the Stratify Cloud. The first time app.publish is used on a project the cloud provisions an ID which needs to be built into the application before app.publish is called again with the changes specified.

arguments#

changes#

  • description: deprecated.
  • required: false
  • type: string
  • default: <none>

dryrun#

  • description: list what will be uploaded without uploading.
  • required: false
  • type: bool
  • default: false

fork#

  • description: forks off of an existing application. This should be true if another user already published this application.
  • required: false
  • type: bool
  • default: false

header#

  • description: publish the project settings to the sl_config.h header file.
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: path to the application that will be published. If not provided, all application projects in the workspace are published.
  • required: false
  • type: string
  • default: <all>

roll#

  • description: rolls the version number.
  • required: false
  • type: bool
  • default: false

application|app.set#

Usage:

sl application.set:[description=<string>]    ,key=<string>    ,path=<string>    ,value=<string>    

Help with this command:

sl --help=application.set

Description#

The application.set command The application.set command sets the key to the specified value.

arguments#

add#

  • description: the key will be added if it doesn`t exist.
  • example: application.set:key=,path=,value=,add=false
  • required: false
  • type: bool
  • default: false

key#

  • shortcut: k
  • description: key for the value to be set.
  • example: application.set:key=,path=,value=
  • required: true
  • type: string

path#

  • shortcut: p
  • description: path to the application or OS package.
  • example: application.set:key=,path=,value=
  • required: true
  • type: string

value#

  • shortcut: v
  • description: value to assign to key.
  • example: application.set:key=,path=,value=
  • required: true
  • type: string

application|app.clean#

Usage:

sl application.clean:[path=<string>]    

Help with this command:

sl --help=application.clean

Description#

The application.clean command deletes all applications from the specified location.

arguments#

path#

  • shortcut: p
  • description: path to clean (default is /app/flash and /app/ram).
  • required: false
  • type: string
  • default: </ app / ram and / app / flash>

application|app.ping#

Usage:

sl application.ping:path=<string>    

Help with this command:

sl --help=application.ping

Description#

The application.ping command gets information about an application from the device.

arguments#

path#

  • shortcut: p
  • description: path to the application to ping or a folder containing applications.
  • example: application.ping:path=<path>
  • required: true
  • type: string

application|app.profile#

Usage:

sl application.profile:[compile=<bool>]    [,configure=<bool>]    [,datapath=<string>]    [,description=<string>]    [,dryrun=<bool>]    [,name=<string>]    ,path=<string>    [,report=<bool>]    [,run=<bool>]    [,synchronize=<bool>]    

Help with this command:

sl --help=application.profile

Description#

The application.profile command creates testing sub-projects and manages code coverage using gcov.

arguments#

build#

  • shortcut: target
  • description: is usually set torelease or debug.
  • example: application.profile:path=<path>,build=release
  • required: false
  • type: string
  • default: release

compile#

  • description: build the test applications (false if report is true).
  • example: application.profile:path=<path>,compile=true
  • required: false
  • type: bool
  • default: true

configure#

  • description: configure the test suite using the sl_test_settings.json file (false if report is true).
  • example: application.profile:path=<path>,configure=true
  • required: false
  • type: bool
  • default: true

datapath#

  • description: clean out test coverage files.
  • example: application.profile:path=<path>,datapath=<default>
  • required: false
  • type: string
  • default: <default>

dryrun#

  • description: just show what actions would be performed.
  • example: application.profile:path=<path>,dryrun=false
  • required: false
  • type: bool
  • default: false

name#

  • description: operate only on the specified test.
  • example: application.profile:path=<path>,name=<all>
  • required: false
  • type: string
  • default: <all>

path#

  • shortcut: p
  • description: path to the application to profile.
  • example: application.profile:path=<path>
  • required: true
  • type: string

report#

  • description: parse the gcov output into a test report (false if configure, compile, or run is true).
  • example: application.profile:path=<path>,report=false
  • required: false
  • type: bool
  • default: false

run#

  • description: run the test applications (false if report is true).
  • example: application.profile:path=<path>,run=true
  • required: false
  • type: bool
  • default: true

synchronize#

  • shortcut: sync
  • description: synchronize the test data on the device to the source tree and run gcov to create intermediate coverage files.
  • example: application.profile:path=<path>,synchronize=true
  • required: false
  • type: bool
  • default: true

benchmark|bench

benchmark|bench.test#

Usage:

sl benchmark.test:[external=<bool>]    [,externalcode=<bool>]    [,externaldata=<bool>]    ,identifier=<string>    [,ram=<bool>]    [,team=<string>]    [,tightlycoupled=<bool>]    [,tightlycoupledcode=<bool>]    [,tightlycoupleddata=<bool>]    

Help with this command:

sl --help=benchmark.test

Description#

The benchmark.test command executes a benchmark test and reports the results to the cloud for the connected device.

arguments#

external#

  • shortcut: ext
  • description: install the code and data in external RAM (ignored if ram is false).
  • example: benchmark.test:identifier=<id>,external=<false>
  • required: false
  • type: bool
  • default: <false>

externalcode#

  • description: install the code in external memory.
  • example: benchmark.test:identifier=<id>,externalcode=false
  • required: false
  • type: bool
  • default: false

externaldata#

  • description: install the data in external RAM.
  • example: benchmark.test:identifier=<id>,externaldata=false
  • required: false
  • type: bool
  • default: false

identifier#

  • shortcut: id
  • description: cloud ID of the bench test to install and run.
  • example: benchmark.test:identifier=<id>
  • required: true
  • type: string

ram#

  • description: install the code in RAM rather than flash (cant be used with startup`).
  • example: benchmark.test:identifier=<id>,ram=<auto>
  • required: false
  • type: bool
  • default: <auto>

team#

  • description: the team ID of the project to install (default is to install a public project).
  • example: benchmark.test:identifier=<id>,team=<public>
  • required: false
  • type: string
  • default: <public>

tightlycoupled#

  • shortcut: tc
  • description: install the code and data in tightly coupled RAM (ignored if ram is false).
  • example: benchmark.test:identifier=<id>,tightlycoupled=<false>
  • required: false
  • type: bool
  • default: <false>

tightlycoupledcode#

  • shortcut: tcc
  • description: install the code in tightly coupled memory.
  • example: benchmark.test:identifier=<id>,tightlycoupledcode=false
  • required: false
  • type: bool
  • default: false

tightlycoupleddata#

  • shortcut: tcd
  • description: install the data in tightly coupled RAM.
  • example: benchmark.test:identifier=<id>,tightlycoupleddata=false
  • required: false
  • type: bool
  • default: false

cloud

cloud.login#

Usage:

sl cloud.login:[email=<string>]    [,local=<bool>]    [,password=<string>]    [,token=<string>]    [,uid=<string>]    

Help with this command:

sl --help=cloud.login

Description#

The cloud.login command logs in to the Stratify cloud using an email/password or uid/token combination.

arguments#

email#

  • description: the email address to use when logging in.
  • required: false
  • type: string
  • default: <none>

local#

  • description: saves the credentials in the local workspace rather than globally.
  • required: false
  • type: bool
  • default: false

password#

  • description: the password for the associated email address.
  • required: false
  • type: string
  • default: <none>

token#

  • description: the cloud token for authentication.
  • required: false
  • type: string
  • default: <none>

uid#

  • description: the user ID when using a cloud token to login.
  • required: false
  • type: string
  • default: <none>

cloud.logout#

Usage:

sl cloud.logout

Help with this command:

sl --help=cloud.logout

Description#

The cloud.logout command removes the login credentials from their source (either global or within the workspace).

cloud.refresh#

Usage:

sl cloud.refresh

Help with this command:

sl --help=cloud.refresh

Description#

The cloud.refresh command refreshes the workspace login. This will happen automatically if the current login has expired.

cloud.install#

Usage:

sl cloud.install:[architecture=<string>]    [,build=<string>]    [,clean=<bool>]    [,compiler=<bool>]    [,delay=<int>]    [,description=<string>]    [,destination=<string>]    [,directories=<string>]    [,dryrun=<bool>]    [,external=<bool>]    [,identifier=<string>]    [,key=<bool>]    [,os=<bool>]    [,ram=<bool>]    [,rekey=<bool>]    [,retry=<int>]    [,startup=<bool>]    [,suffix=<string>]    [,synchronize=<bool>]    [,team=<string>]    [,tightlycoupled=<bool>]    [,update=<bool>]    [,url=<string>]    [,version=<string>]    [,version=<string>]    

Help with this command:

sl --help=cloud.install

Description#

The cloud.install command installs an application or OS package from the cloud on to a connected device.

arguments#

application#

  • shortcut: app
  • description: check for os updates of the attached device (installed apps may be lost).
  • required: false
  • type: bool
  • default: false

architecture#

  • shortcut: arch
  • description: architecture to install (required for applications being saved to local host).
  • required: false
  • type: string
  • default: <auto>

build#

  • shortcut: target
  • description: build name to install.
  • required: false
  • type: string
  • default: release

clean#

  • description: other copies of the application are deleted before installation.
  • required: false
  • type: bool
  • default: true

compiler#

  • description: install the compiler.
  • required: false
  • type: bool
  • default: false

delay#

  • description: number of milliseconds to delay between reconnect tries.
  • required: false
  • type: int
  • default: 500

destination#

  • shortcut: dest
  • description: install location for applications or specify a host path to save as a local file.
  • required: false
  • type: string
  • default: </ app>

directories#

  • description: /home.
  • required: false
  • type: string
  • default: <'app/flash

dryrun#

  • description: download but don`t extract the compiler.
  • required: false
  • type: bool
  • default: false

external#

  • shortcut: ext
  • description: install the code and data in external RAM (ignored if ram is false).
  • required: false
  • type: bool
  • default: false

identifier#

  • shortcut: id
  • description: cloud ID to download and install.
  • required: false
  • type: string
  • default: <id>

key#

  • description: insert a random key in the binary if there is room in the image for a secret key (only works for OS projects). If the thing already has a key it will be preserved.
  • required: false
  • type: bool
  • default: false

os#

  • description: check for os updates of the attached device (installed apps may be lost).
  • required: false
  • type: bool
  • default: false

ram#

  • description: install the application in ram (no effect if the id is an OS package).
  • required: false
  • type: bool
  • default: false

rekey#

  • description: insert a new random key in the binary. If a key already exists it will be replaced.
  • required: false
  • type: bool
  • default: false

retry#

  • description: number of times to try to connect or reconnect when installing an OS package.
  • required: false
  • type: int
  • default: 50

startup#

  • description: an installed application will run at startup if supported on the target filesystem.
  • required: false
  • type: bool
  • default: false

suffix#

  • description: suffix appended to the name of the target destination (for creating multiple copies of the same application).
  • required: false
  • type: string
  • default: <none>

synchronize#

  • shortcut: sync
  • description: synchronize the installation with the cloud.
  • required: false
  • type: bool
  • default: true

team#

  • description: the team ID of the project to install (default is to install a public project).
  • required: false
  • type: string
  • default: <public>

tightlycoupled#

  • shortcut: tc
  • description: install the code and data in tightly coupled RAM (ignored if ram is false).
  • required: false
  • type: bool
  • default: false

update#

  • description: check for os and app updates of the attached device.
  • required: false
  • type: bool
  • default: false

url#

  • description: uRL to an exported application or OS package.
  • required: false
  • type: string
  • default: <none>

version#

  • description: specify the compiler version to install.
  • required: false
  • type: string
  • default: <latest>

version#

  • shortcut: v
  • description: version to install (default is latest).
  • required: false
  • type: string
  • default: <latest>

cloud.ping#

Usage:

sl cloud.ping:[description=<string>]    [,identifier=<string>]    [,url=<string>]    

Help with this command:

sl --help=cloud.ping

Description#

The cloud.ping command gets the most recent information for the project ID from the cloud.

arguments#

build#

  • shortcut: target
  • description: build id (default is to ping the project).
  • required: false
  • type: string
  • default: <none>

identifier#

  • shortcut: id
  • description: the ID of the project to ping.
  • required: false
  • type: string
  • default: <none>

url#

  • description: the url of the project to ping.
  • required: false
  • type: string
  • default: <none>

cloud.sync#

Usage:

sl cloud.sync:[description=<string>]    [,path=<string>]    

Help with this command:

sl --help=cloud.sync

Description#

The cloud.sync command synchronizes datum items stored on the device to the cloud.

arguments#

clean#

  • description: whether or not to delete the log file.
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: the path to a JSON file that includes datum objects to sync with the cloud.
  • required: false
  • type: string
  • default: <auto>

cloud.connect#

Usage:

sl cloud.connect:job=<string>    [,permissions=<string>]    [,report=<boolean>]    [,team=<string>]    [,timeout=<integer>]    

Help with this command:

sl --help=cloud.connect

Description#

The cloud.connect command connects the workspace to an active job server. Commans will be posted to the job id while the job server is active.

arguments#

job#

  • shortcut: id
  • description: the job id to connect to. A job server can be created using sl cloud.listen:job. Use sl cloud.connect:job=none to disconnect.
  • example: cloud.connect:job=<job id>
  • required: true
  • type: string

permissions#

  • description: specify the permissions for any reports that are created.
  • example: cloud.connect:job=<job id>,permissions=<auto>
  • required: false
  • type: string
  • default: <auto>

report#

  • description: create a report for each set of commands that is executed.
  • example: cloud.connect:job=<job id>,report=false
  • required: false
  • type: boolean
  • default: false

team#

  • description: specify the team that owns the report (default is none).
  • example: cloud.connect:job=<job id>,team=<none>
  • required: false
  • type: string
  • default: <none>

timeout#

  • description: timeout in seconds to allow for the job execution.
  • example: cloud.connect:job=<job id>,timeout=<indefinite>
  • required: false
  • type: integer
  • default: <indefinite>

cloud.listen#

Usage:

sl cloud.connect:[job=<string>]    [,permissions=<string>]    [,team=<string>]    [,timeout=<integer>]    

Help with this command:

sl --help=cloud.connect

Description#

The cloud.connect command connects the workspace to an active job server. Commans will be posted to the job id while the job server is active.

arguments#

job#

  • shortcut: id
  • description: the job id to connect to. Post jobs to the server using sl cloud.connect:job=<job_id>.
  • required: false
  • type: string
  • default: <auto>

permissions#

  • description: specify the permissions for the job server.
  • required: false
  • type: string
  • default: private

team#

  • description: team that has access to the job server.
  • required: false
  • type: string
  • default: <none>

timeout#

  • description: set the timeout in seconds to stop listening.
  • required: false
  • type: integer
  • default: <none>

cloud.remove#

Usage:

sl cloud.remove:[description=<string>]    [,identifier=<string>]    [,path=<string>]    

Help with this command:

sl --help=cloud.remove

Description#

The cloud.remove command removes the project and/or build specified.

arguments#

build#

  • description: build id to remove (if not specified all builds and the project are removed).
  • required: false
  • type: string
  • default: <none>

identifier#

  • shortcut: id
  • description: the ID of the project to remove.
  • required: false
  • type: string
  • default: <from project>

path#

  • description: path to the local project being modified (providing this keeps the local settings sync`d).
  • required: false
  • type: string
  • default: <none>

connection|conn

connection|conn.list#

Usage:

sl connection.list:[driver=<string>]    

Help with this command:

sl --help=connection.list

Description#

The connection.list command lists the serial devices that are available as potential Stratify OS devices.

arguments#

driver#

  • description: driver to use such as a serial or usb driver.
  • required: false
  • type: string
  • default: <all>

connection|conn.ping#

Usage:

sl connection.ping:[driver=<string>]    [,path=<string>]    

Help with this command:

sl --help=connection.ping

Description#

The connection.ping command queries each serial port to see if a Stratify OS device is available. It can be used with 'blacklist' to prevent the workspace from trying to connect to unresponsive ports.

arguments#

driver#

  • description: specifies either a serial or usb driver.
  • required: false
  • type: string
  • default: <all>

path#

  • shortcut: p
  • description: pings the device on the specified path (such as COM4 or /dev/cu.usbmodem14333301).
  • required: false
  • type: string
  • default: <all>

connection|conn.connect#

Usage:

sl connection.connect:[delay=<int>]    [,description=<string>]    [,legacy=<bool>]    [,parity=<string>]    [,path=<string>]    [,retry=<int>]    [,save=<bool>]    [,stopbits=<int>]    

Help with this command:

sl --help=connection.connect

Description#

The connection.connect command The connection.connect command will connect to a specific device. The connection will be made automatically if this command is not used but if there is more than one device attached, the automatic connection will make an arbitrary choice on which device to connect to.

arguments#

baudrate#

  • shortcut: br
  • description: baudrate to use for serial connections.
  • required: false
  • type: int
  • default: <460800>

delay#

  • shortcut: d
  • description: number of milliseconds to wait between reconnect attempts.
  • required: false
  • type: int
  • default: 500

legacy#

  • description: use the legacy protocol.
  • required: false
  • type: bool
  • default: false

parity#

  • description: use for serial connections as odd or even or none (only applicable if UART is used).
  • required: false
  • type: string
  • default: <none>

path#

  • shortcut: p
  • description: connects to the specified device using the host device file path.
  • required: false
  • type: string
  • default: <auto>

retry#

  • shortcut: r
  • description: number of times to retry connecting.
  • required: false
  • type: int
  • default: 5

save#

  • description: saves the serial settings as the defaults for the workspace (save with no serial options to restore defaults).
  • required: false
  • type: bool
  • default: false

stopbits#

  • shortcut: sb
  • description: stop bits to use for serial connections as 1 or 2 (only applicable if UART is used).
  • required: false
  • type: int
  • default: <1>

debug|dbug

debug|dbug.trace#

Usage:

sl debug.trace:[duration=<int>]    [,enabled=<bool>]    [,period=<int>]    

Help with this command:

sl --help=debug.trace

Description#

The debug.trace command causes sl to monitor the trace output of the system and display any messages in the terminal.

arguments#

duration#

  • description: duration of time in seconds to run the debug trace.
  • required: false
  • type: int
  • default: <indefinite>

enabled#

  • description: monitor the system debug trace output.
  • required: false
  • type: bool
  • default: true

period#

  • description: sample period in milliseconds of the debug tracing buffer.
  • required: false
  • type: int
  • default: 100

debug|dbug.analyze#

Usage:

sl debug.analyze:[description=<string>]    [,fault=<string>]    [,os=<string>]    

Help with this command:

sl --help=debug.analyze

Description#

The debug.analyze command parses fault messages emitted by the system.

arguments#

application#

  • shortcut: app
  • description: path to the application elf file.
  • required: false
  • type: string
  • default: <none>

fault#

  • description: specific fault to analyze received over the serial debug port.
  • required: false
  • type: string
  • default: <none>

os#

  • description: path to the OS elf file.
  • required: false
  • type: string
  • default: <none>

filesystem|fs

filesystem|fs.list#

Usage:

sl filesystem.list:[details=<bool>]    [,hide=<bool>]    ,path=<string>    [,recursive=<bool>]    

Help with this command:

sl --help=filesystem.list

Description#

The filesystem.list command lists the contents of a directory on the connected device or the local host.

arguments#

details#

  • description: show details of each directory entry.
  • example: filesystem.list:path=<path>,details=true
  • required: false
  • type: bool
  • default: true

hide#

  • description: show hidden files.
  • example: filesystem.list:path=<path>,hide=true
  • required: false
  • type: bool
  • default: true

path#

  • shortcut: p
  • description: path to the target folder.
  • example: filesystem.list:path=<path>
  • required: true
  • type: string

recursive#

  • shortcut: r
  • description: recursively list files in directories.
  • example: filesystem.list:path=<path>,recursive=false
  • required: false
  • type: bool
  • default: false

filesystem|fs.mkdir#

Usage:

sl filesystem.mkdir:[mode=<string>]    ,path=<string>    

Help with this command:

sl --help=filesystem.mkdir

Description#

The filesystem.mkdir command creates a directory on the connected device. This command will only work if the filesystem supports directory creation.

arguments#

mode#

  • description: permissions in octal representation of the mode (default is 0777).
  • example: filesystem.mkdir:path=<path>,mode=0777
  • required: false
  • type: string
  • default: 0777

path#

  • shortcut: p
  • description: path to create.
  • example: filesystem.mkdir:path=<path>
  • required: true
  • type: string

filesystem|fs.remove#

Usage:

sl filesystem.remove:[description=<string>]    ,path=<string>    [,recursive=<bool>]    

Help with this command:

sl --help=filesystem.remove

Description#

The filesystem.remove command The filesystem.remove command removes a file or directory from the connected device.

arguments#

all#

  • description: removes all the files in the specified directory (but not the directory).
  • example: filesystem.remove:path=<path>,all=false
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: path to the file to remove.
  • example: filesystem.remove:path=<path>
  • required: true
  • type: string

recursive#

  • shortcut: r
  • description: removes the directory recursively.
  • example: filesystem.remove:path=<path>,recursive=false
  • required: false
  • type: bool
  • default: false

filesystem|fs.copy#

Usage:

sl filesystem.copy:destination=<string>    [,hidden=<bool>]    [,overwrite=<bool>]    [,recursive=<bool>]    [,remove=<bool>]    ,source=<string>    [,timestamp=<bool>]    

Help with this command:

sl --help=filesystem.copy

Description#

The filesystem.copy command copies files to/from the connected device to/from the host computer. Paths prefixed with host@ are on the host computer while paths prefixed with device@ are on the connected device.

arguments#

destination#

  • shortcut: dest
  • description: destination path. If the source is a directory, the destination should be a directory as well.
  • example: filesystem.copy:destination=<destination>,source=<source>
  • required: true
  • type: string

hidden#

  • description: copy hidden files (files that start with .).
  • example: filesystem.copy:destination=<destination>,source=<source>,hidden=false
  • required: false
  • type: bool
  • default: false

overwrite#

  • shortcut: o
  • description: destination will be overwritten withouth warning.
  • example: filesystem.copy:destination=<destination>,source=<source>,overwrite=true
  • required: false
  • type: bool
  • default: true

recursive#

  • shortcut: r
  • description: copy recursively.
  • example: filesystem.copy:destination=<destination>,source=<source>,recursive=false
  • required: false
  • type: bool
  • default: false

remove#

  • description: remove the source (only if it is on a device) after it is copied.
  • example: filesystem.copy:destination=<destination>,source=<source>,remove=false
  • required: false
  • type: bool
  • default: false

source#

  • shortcut: path
  • description: path to the source file to copy. If the source is a directory, all files in the directory are copied.
  • example: filesystem.copy:destination=<destination>,source=<source>
  • required: true
  • type: string

timestamp#

  • shortcut: ts
  • description: add a unique timestamp string to the destination path.
  • example: filesystem.copy:destination=<destination>,source=<source>,timestamp=false
  • required: false
  • type: bool
  • default: false

filesystem|fs.format#

Usage:

sl filesystem.format:path=<string>    

Help with this command:

sl --help=filesystem.format

Description#

The filesystem.format command formats the filesystem on the device.

arguments#

path#

  • shortcut: p
  • description: path to the filesystem to format.
  • example: filesystem.format:path=<path>
  • required: true
  • type: string

filesystem|fs.write#

Usage:

sl filesystem.write:[blank=<int>]    [,delay=<int>]    [,description=<string>]    ,destination=<string>    [,location=<int>]    [,pagesize=<int>]    [,readwrite=<bool>]    [,size=<int>]    [,source=<string>]    [,text=<string>]    

Help with this command:

sl --help=filesystem.write

Description#

The filesystem.write command writes to a file (or device) on the device. The file will be opened, written, then closed.

arguments#

append#

  • shortcut: a
  • description: destination file is opened for appending.
  • example: filesystem.write:destination=<destination>,append=false
  • required: false
  • type: bool
  • default: false

blank#

  • description: value of a blank byte. If the entire page is blank on the source, it will be skipped. This is useful when programming flash memory.
  • example: filesystem.write:destination=<destination>,blank=<none>
  • required: false
  • type: int
  • default: <none>

delay#

  • description: number of milliseconds to delay between chunk writes.
  • example: filesystem.write:destination=<destination>,delay=0
  • required: false
  • type: int
  • default: 0

destination#

  • shortcut: dest
  • description: destination path of the device file (or device) which will be written.
  • example: filesystem.write:destination=<destination>
  • required: true
  • type: string

location#

  • shortcut: loc
  • description: location in the destination file to start writing.
  • example: filesystem.write:destination=<destination>,location=0
  • required: false
  • type: int
  • default: 0

pagesize#

  • description: chunk size for reading the source and writing the destination.
  • example: filesystem.write:destination=<destination>,pagesize=512
  • required: false
  • type: int
  • default: 512

readwrite#

  • shortcut: rw
  • description: destination file is opened for in read/write mode (default is write only).
  • example: filesystem.write:destination=<destination>,readwrite=false
  • required: false
  • type: bool
  • default: false

size#

  • shortcut: s
  • description: maximum number of bytes to write to the destination file (default is write all available bytes).
  • example: filesystem.write:destination=<destination>,size=<all>
  • required: false
  • type: int
  • default: <all>

source#

  • shortcut: path
  • description: path to the host file which will be written o the device`s file (or device).
  • example: filesystem.write:destination=<destination>,source=<source>
  • required: false
  • type: string
  • default: <source>

text#

  • shortcut: string
  • description: if source is not provided, use this to write a string directly to the destination.
  • example: filesystem.write:destination=<destination>,text=<none>
  • required: false
  • type: string
  • default: <none>

filesystem|fs.read#

Usage:

sl filesystem.read:[blob=<bool>]    [,description=<string>]    [,destination=<string>]    [,location=<int>]    [,pagesize=<int>]    [,readwrite=<bool>]    [,size=<int>]    ,source=<string>    

Help with this command:

sl --help=filesystem.read

Description#

The filesystem.read command reads from a file (or device). The file will be opened, read, then closed. The most common way this command is used is for reading for the target device's device filesystem (such as /dev/drive0). A block device (on the target device) can be read and written to a file on the host.

arguments#

append#

  • shortcut: a
  • description: destination file is opened for appending.
  • example: filesystem.read:source=<source>,append=false
  • required: false
  • type: bool
  • default: false

blob#

  • shortcut: binary
  • description: if a destination is not provided, and blob is true, the data will print as a binary blob. If blob is not specified, the output will either be a blob or text depending on the content.
  • example: filesystem.read:source=<source>,blob=<auto>
  • required: false
  • type: bool
  • default: <auto>

destination#

  • shortcut: dest
  • description: destination path to the device or file where the data will be written.
  • example: filesystem.read:source=<source>,destination=<binary blob>
  • required: false
  • type: string
  • default: <binary blob>

location#

  • shortcut: loc
  • description: location in the source file to start reading.
  • example: filesystem.read:source=<source>,location=0
  • required: false
  • type: int
  • default: 0

pagesize#

  • shortcut: chunk
  • description: chunk size for reading the source and writing the destination.
  • example: filesystem.read:source=<source>,pagesize=512
  • required: false
  • type: int
  • default: 512

readwrite#

  • shortcut: rw
  • description: destination file is opened for in read/write mode (default is read only).
  • example: filesystem.read:source=<source>,readwrite=false
  • required: false
  • type: bool
  • default: false

size#

  • shortcut: s
  • description: maximum number of bytes to read from the source file (default is read all).
  • example: filesystem.read:source=<source>,size=<all>
  • required: false
  • type: int
  • default: <all>

source#

  • shortcut: path
  • description: path to the device or file which will be read.
  • example: filesystem.read:source=<source>
  • required: true
  • type: string

filesystem|fs.verify#

Usage:

sl filesystem.verify:destination=<string>    [,location=<int>]    [,pagesize=<int>]    [,size=<int>]    ,source=<string>    

Help with this command:

sl --help=filesystem.verify

Description#

The filesystem.verify command verifies the source and destination files are equivalent.

arguments#

destination#

  • shortcut: dest
  • description: destination path to the device or file where the data will be written.
  • example: filesystem.verify:destination=<destination>,source=<source>
  • required: true
  • type: string

location#

  • shortcut: loc
  • description: location in the source file to start reading.
  • example: filesystem.verify:destination=<destination>,source=<source>,location=0
  • required: false
  • type: int
  • default: 0

pagesize#

  • shortcut: chunk
  • description: chunk size for reading the source and writing the destination.
  • example: filesystem.verify:destination=<destination>,source=<source>,pagesize=512
  • required: false
  • type: int
  • default: 512

size#

  • shortcut: s
  • description: maximum number of bytes to read from the source file (default is read all).
  • example: filesystem.verify:destination=<destination>,source=<source>,size=<all>
  • required: false
  • type: int
  • default: <all>

source#

  • shortcut: path
  • description: path to the device or file which will be read.
  • example: filesystem.verify:destination=<destination>,source=<source>
  • required: true
  • type: string

filesystem|fs.validate#

Usage:

sl filesystem.validate:[key=<string>]    ,path=<string>    [,value=<string>]    

Help with this command:

sl --help=filesystem.validate

Description#

The filesystem.validate command validates the contents of the file based on the suffix.

arguments#

key#

  • shortcut: k
  • description: key to validate (must begin with /.
  • example: filesystem.validate:path=<path>,key=<none>
  • required: false
  • type: string
  • default: <none>

path#

  • shortcut: p
  • description: path to check for an existing file.
  • example: filesystem.validate:path=<path>
  • required: true
  • type: string

value#

  • shortcut: v
  • description: expected value of key.
  • example: filesystem.validate:path=<path>,value=<none>
  • required: false
  • type: string
  • default: <none>

filesystem|fs.exists#

Usage:

sl filesystem.exists:path=<string>    

Help with this command:

sl --help=filesystem.exists

Description#

The filesystem.exists command checks if the specified file or directory exists.

arguments#

path#

  • shortcut: p
  • description: path to check for an existing file or directory.
  • example: filesystem.exists:path=<path>
  • required: true
  • type: string

filesystem|fs.download#

Usage:

sl filesystem.download:destination=<string>    [,overwrite=<bool>]    ,url=<string>    

Help with this command:

sl --help=filesystem.download

Description#

The filesystem.download command downloads a file from the internet.

arguments#

destination#

  • shortcut: dest
  • description: file path destination (can be on the host or a connected device).
  • example: filesystem.download:destination=<destination>,url=<url>
  • required: true
  • type: string

overwrite#

  • description: overwrite the file if it exists.
  • example: filesystem.download:destination=<destination>,url=<url>,overwrite=true
  • required: false
  • type: bool
  • default: true

url#

  • description: uRL to download.
  • example: filesystem.download:destination=<destination>,url=<url>
  • required: true
  • type: string

filesystem|fs.execute#

Usage:

sl filesystem.execute:[description=<string>]    [,directory=<string>]    

Help with this command:

sl --help=filesystem.execute

Description#

The filesystem.execute command executes a system command.

arguments#

command#

  • shortcut: cmd
  • description: command to execute.
  • example: filesystem.execute:command=<command>
  • required: true
  • type: string

directory#

  • shortcut: dir
  • description: the working directory (requires cmake).
  • example: filesystem.execute:command=<command>,directory=<current>
  • required: false
  • type: string
  • default: <current>

filesystem|fs.archive#

Usage:

sl filesystem.archive:destination=<string>    [,filter=<string>]    ,source=<string>    

Help with this command:

sl --help=filesystem.archive

Description#

The filesystem.archive command creates a self extracting archive (must have 7z available on the path).

arguments#

destination#

  • shortcut: dest
  • description: path to a directory to archive.
  • example: filesystem.archive:destination=<path>,source=<path>
  • required: true
  • type: string

filter#

  • shortcut: filt
  • description: ? separated elements that if matched will be excluded.
  • example: filesystem.archive:destination=<path>,source=<path>,filter=<none>
  • required: false
  • type: string
  • default: <none>

source#

  • shortcut: path
  • description: path to a directory to archive.
  • example: filesystem.archive:destination=<path>,source=<path>
  • required: true
  • type: string

os|system

os|system.install#

Usage:

sl os.install:[delay=<int>]    [,description=<string>]    [,destination=<string>]    [,hash=<bool>]    [,key=<bool>]    [,path=<string>]    [,reconnect=<bool>]    [,rekey=<bool>]    [,retry=<int>]    [,secretkey=<string>]    [,synchronize=<bool>]    [,verify=<bool>]    

Help with this command:

sl --help=os.install

Description#

The os.install command installs an OS package on a connected device that has been built on the host computer. If no path is specified, the workspace is searched for an OS package that matches the connected device.

arguments#

build#

  • shortcut: target
  • description: the build name which is usually release or debug.
  • required: false
  • type: string
  • default: release

delay#

  • description: the number of milliseconds to wait between reconnect retries (used with reconnect and retry).
  • required: false
  • type: int
  • default: 500

destination#

  • shortcut: dest
  • description: write the image to this path rather than to the device.
  • required: false
  • type: string
  • default: <device>

hash#

  • description: install the image with a SHA256 hash appended to the end of the binary.
  • required: false
  • type: bool
  • default: false

key#

  • description: install the image with a secret key inserted in the binary.
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: the path to the OS project folder.
  • required: false
  • type: string
  • default: <auto>

reconnect#

  • description: reconnect to the device after the OS package is installed.
  • required: false
  • type: bool
  • default: true

rekey#

  • description: overwrite any existing key that exists in the cloud.
  • required: false
  • type: bool
  • default: false

retry#

  • description: the number of times to retry reconnecting after install (used with reconnect, and delay).
  • required: false
  • type: int
  • default: 50

secretkey#

  • description: the secret key to insert (use with key).
  • required: false
  • type: string
  • default: <auto>

synchronize#

  • shortcut: sync
  • description: synchronize the installation with the cloud.
  • required: false
  • type: bool
  • default: false

verify#

  • description: verify the OS image after it is installed.
  • required: false
  • type: bool
  • default: false

os|system.invokebootloader#

Usage:

sl os.invokebootloader:[description=<string>]    [,reconnect=<bool>]    [,retry=<int>]    

Help with this command:

sl --help=os.invokebootloader

Description#

The os.invokebootloader command sends a software bootloader invocation request to the connected device.

arguments#

delay#

  • description: the number of milliseconds to wait between reconnect attempts.
  • required: false
  • type: int
  • default: 500

reconnect#

  • description: reconnect to the device after invoking the bootloader.
  • required: false
  • type: bool
  • default: false

retry#

  • description: the number of times to retry connecting after the request.
  • required: false
  • type: int
  • default: 5

os|system.reset#

Usage:

sl os.reset:[delay=<int>]    [,description=<string>]    [,reconnect=<bool>]    [,retry=<int>]    

Help with this command:

sl --help=os.reset

Description#

The os.reset command resets the connected device.

arguments#

bootloader#

  • shortcut: boot
  • description: reset to bootloader (if available on the device).
  • required: false
  • type: bool
  • default: false

delay#

  • description: the number of milliseconds to wait between reconnect attempts.os.reset:reconnect=true,delay=2000.
  • required: false
  • type: int
  • default: 500

reconnect#

  • description: reconnects to the device after the reset.
  • required: false
  • type: bool
  • default: false

retry#

  • description: the number of times to retry connecting.
  • required: false
  • type: int
  • default: 5

os|system.publish#

Usage:

sl os.publish:[description=<string>]    [,dryrun=<bool>]    [,fork=<bool>]    [,header=<bool>]    [,path=<string>]    [,roll=<bool>]    [,team=<string>]    

Help with this command:

sl --help=os.publish

Description#

The os.publish command publishes an OS package to the Stratify cloud. The initial call to os.publish will acquire an ID that needs to be built into the binary. Subsequent calls to os.publish will publish the build.

arguments#

changes#

  • description: deprecated.
  • required: false
  • type: string
  • default: <none>

dryrun#

  • description: list what will be uploaded without uploading.
  • required: false
  • type: bool
  • default: false

fork#

  • description: creates a new ID owned by the current user.
  • required: false
  • type: bool
  • default: false

header#

  • description: publish the project settings to the sl_config.h header file.
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: the path to the OS package to publish. All OS packages in the workspace are published if path isn`t provided.
  • required: false
  • type: string
  • default: <all>

roll#

  • description: rolls the version number.
  • required: false
  • type: bool
  • default: false

team#

  • description: team for publishing the project. This is only needed on the initial publishing. If not present, the project settings will be checked for a team. If no team is specified or in the project settings, project will be published as a public project.
  • required: false
  • type: string
  • default: <public>

os|system.set#

Usage:

sl os.set:[description=<string>]    ,key=<string>    ,path=<string>    ,value=<string>    

Help with this command:

sl --help=os.set

Description#

The os.set command The os.set command sets the key to the specified value.

arguments#

add#

  • description: the key will be added if it doesn`t exist.
  • example: os.set:key=,path=,value=,add=false
  • required: false
  • type: bool
  • default: false

key#

  • shortcut: k
  • description: key for the value to be set.
  • example: os.set:key=,path=,value=
  • required: true
  • type: string

path#

  • shortcut: p
  • description: path to the application or OS package.
  • example: os.set:key=,path=,value=
  • required: true
  • type: string

value#

  • shortcut: v
  • description: value to assign to key.
  • example: os.set:key=,path=,value=
  • required: true
  • type: string

os|system.configure#

Usage:

sl os.configure:[time=<bool>]    

Help with this command:

sl --help=os.configure

Description#

The os.configure command configures the clock on a connected device

arguments#

time#

  • description: synchronize the time of the device to the time of the host.
  • required: false
  • type: bool
  • default: false

os|system.ping#

Usage:

sl os.ping:[description=<string>]    [,key=<bool>]    

Help with this command:

sl --help=os.ping

Description#

The os.ping command collects and displays information from the connected device.

arguments#

bootloader#

  • shortcut: boot
  • description: if target is not a bootloader, the command will fail.
  • required: false
  • type: bool
  • default: false

key#

  • description: fetch and display the secret key (must be authenticated).
  • required: false
  • type: bool
  • default: false

os|system.authenticate#

Usage:

sl os.authenticate:[key=<string>]    

Help with this command:

sl --help=os.authenticate

Description#

The os.authenticate command authenticates the connection to the device so secure apps can be installed or the secret key can be retrieved.

arguments#

key#

  • description: the secret key to use for authentication. If no key is provided, the key will be fetched for the connected thing. You must have team permissions to access the thing.
  • required: false
  • type: string
  • default: <auto>

hardware|hw

hardware|hw.ping#

Usage:

sl hardware.ping:[hardware=<string>]    

Help with this command:

sl --help=hardware.ping

Description#

The hardware.ping command pings the information about the user.

arguments#

hardware#

  • shortcut: id
  • description: id to ping.
  • required: false
  • type: string
  • default: <current>

hardware|hw.publish#

Usage:

sl hardware.publish:path=<string>    

Help with this command:

sl --help=hardware.publish

Description#

The hardware.publish command publish a hardware description document.

arguments#

path#

  • shortcut: p
  • description: path to the JSON file that describes the hardware.
  • example: hardware.publish:path=<path to json file>
  • required: true
  • type: string

settings|sett

settings|sett.list#

Usage:

sl settings.list:[global=<bool>]    [,key=<string>]    

Help with this command:

sl --help=settings.list

Description#

The settings.list command lists workspace settings.

arguments#

global#

  • shortcut: g
  • description: list values from global settings.
  • required: false
  • type: bool
  • default: false

key#

  • shortcut: k
  • description: list only the values under the key.
  • required: false
  • type: string
  • default: <all>

settings|sett.set#

Usage:

sl settings.set:[description=<string>]    [,global=<bool>]    ,key=<string>    ,value=<string>    

Help with this command:

sl --help=settings.set

Description#

The settings.set command The settings.set command sets the key to the specified value.

arguments#

add#

  • description: the key will be added if it doesn`t exist.
  • example: settings.set:key=,value=,add=false
  • required: false
  • type: bool
  • default: false

global#

  • shortcut: g
  • description: set the key in global settings.
  • example: settings.set:key=,value=,global=false
  • required: false
  • type: bool
  • default: false

key#

  • shortcut: k
  • description: key for the value to be set.
  • example: settings.set:key=,value=
  • required: true
  • type: string

value#

  • shortcut: v
  • description: value to assign to key.
  • example: settings.set:key=,value=
  • required: true
  • type: string

report

report.publish#

Usage:

sl report.publish:[dryrun=<bool>]    ,path=<string>    [,permissions=<string>]    [,project=<string>]    [,tags=<string>]    [,team=<string>]    [,thing=<string>]    

Help with this command:

sl --help=report.publish

Description#

The report.publish command publishes the report (markdown file) specified by the path to either the user (default) or the team if specified.

arguments#

dryrun#

  • description: list what will be uploaded without uploading.
  • example: report.publish:path=<markdown file path>,dryrun=false
  • required: false
  • type: bool
  • default: false

path#

  • shortcut: p
  • description: path to the report (markdown file) to publish.
  • example: report.publish:path=<markdown file path>
  • required: true
  • type: string

permissions#

  • description: project associated with the report.
  • example: report.publish:path=<markdown file path>,permissions=public
  • required: false
  • type: string
  • default: public

project#

  • description: project associated with the report.
  • example: report.publish:path=<markdown file path>,project=<none>
  • required: false
  • type: string
  • default: <none>

tags#

  • description: tags for the report (use ? to separate values).
  • example: report.publish:path=<markdown file path>,tags=<none>
  • required: false
  • type: string
  • default: <none>

team#

  • description: team ID for the report (if not specified, report is published publicly to the user account.
  • example: report.publish:path=<markdown file path>,team=<none>
  • required: false
  • type: string
  • default: <none>

thing#

  • description: thing associated with the report.
  • example: report.publish:path=<markdown file path>,thing=<none>
  • required: false
  • type: string
  • default: <none>

report.list#

Usage:

sl report.publish:[dryrun=<bool>]    [,project=<string>]    [,tags=<string>]    [,team=<string>]    [,thing=<string>]    

Help with this command:

sl --help=report.publish

Description#

The report.publish command lists the reports.

arguments#

dryrun#

  • description: list what will be uploaded without uploading.
  • required: false
  • type: bool
  • default: false

project#

  • description: list reports associated with project specified.
  • required: false
  • type: string
  • default: <none>

tags#

  • description: list the reports that match the specified tags.
  • required: false
  • type: string
  • default: <none>

team#

  • description: list reports for the specified team.
  • required: false
  • type: string
  • default: <none>

thing#

  • description: list reports associated with thing specified.
  • required: false
  • type: string
  • default: <none>

report.remove#

Usage:

sl report.publish:[dryrun=<bool>]    ,id=<string>    [,team=<string>]    

Help with this command:

sl --help=report.publish

Description#

The report.publish command deletes a report.

arguments#

dryrun#

  • description: list the report to be deleted without deleting.
  • example: report.publish:id=<reportId>,dryrun=false
  • required: false
  • type: bool
  • default: false

id#

  • description: report id to be deleted.
  • example: report.publish:id=<reportId>
  • required: true
  • type: string

team#

  • description: team associated with the report.
  • example: report.publish:id=<reportId>,team=<none>
  • required: false
  • type: string
  • default: <none>

report.ping#

Usage:

sl report.ping:[display=<bool>]    [,encode=<bool>]    ,identifier=<string>    

Help with this command:

sl --help=report.ping

Description#

The report.ping command pings a report.

arguments#

display#

  • description: display the contents of the report.
  • example: report.ping:identifier=<reportId>,display=false
  • required: false
  • type: bool
  • default: false

encode#

  • description: display as base64 encoded (allows content to be parsed in output).
  • example: report.ping:identifier=<reportId>,encode=false
  • required: false
  • type: bool
  • default: false

identifier#

  • shortcut: id
  • description: report id to be deleted.
  • example: report.ping:identifier=<reportId>
  • required: true
  • type: string

report.parse#

Usage:

sl report.parse:[destination=<string>]    [,display=<bool>]    [,encode=<bool>]    [,permissions=<string>]    [,publish=<bool>]    ,source=<string>    [,team=<string>]    

Help with this command:

sl --help=report.parse

Description#

The report.parse command parses a txt stream and generates a markdown report.

arguments#

destination#

  • shortcut: dest
  • description: save the parsed output to a file.
  • example: report.parse:source=<path to txt file>,destination=<none>
  • required: false
  • type: string
  • default: <none>

display#

  • description: display the contents of the report.
  • example: report.parse:source=<path to txt file>,display=false
  • required: false
  • type: bool
  • default: false

encode#

  • description: display as base64 encoded (allows content to be parsed in output).
  • example: report.parse:source=<path to txt file>,encode=false
  • required: false
  • type: bool
  • default: false

permissions#

  • description: permisssions if publishing a new report.
  • example: report.parse:source=<path to txt file>,permissions=public
  • required: false
  • type: string
  • default: public

publish#

  • description: publish the output as a new report.
  • example: report.parse:source=<path to txt file>,publish=false
  • required: false
  • type: bool
  • default: false

source#

  • shortcut: path
  • description: path to plain text file that will be parsed.
  • example: report.parse:source=<path to txt file>
  • required: true
  • type: string

team#

  • description: team if publishing with private permissions.
  • example: report.parse:source=<path to txt file>,team=<none>
  • required: false
  • type: string
  • default: <none>

report.download#

Usage:

sl report.ping:[destination=<string>]    ,identifier=<string>    

Help with this command:

sl --help=report.ping

Description#

The report.ping command pings a report.

arguments#

destination#

  • shortcut: dest
  • description: path to the destination file.
  • example: report.ping:identifier=<reportId>,destination=<name of report.md>
  • required: false
  • type: string
  • default: <name of report.md>

identifier#

  • shortcut: id
  • description: report id to be deleted.
  • example: report.ping:identifier=<reportId>
  • required: true
  • type: string

thing

thing.ping#

Usage:

sl thing.insert:[identifier=<string>]    

Help with this command:

sl --help=thing.insert

Description#

The thing.insert command pings the information for the specified thing.

arguments#

identifier#

  • shortcut: id
  • description: id (serial number) to ping.
  • required: false
  • type: string
  • default: <none>

task

task.list#

Usage:

sl task.list:[id=<int>]    [,name=<string>]    [,pid=<int>]    

Help with this command:

sl --help=task.list

Description#

The task.list command lists the currently active tasks (threads and processes).

arguments#

id#

  • shortcut: tid
  • description: task ID to filter (will show a max of one entry).
  • required: false
  • type: int
  • default: <all>

name#

  • description: application name to filter tasks (or use pid). Use ? to separate list items.
  • required: false
  • type: string
  • default: <all>

pid#

  • description: process id used to filter tasks (or use name).
  • required: false
  • type: int
  • default: <all>

task.signal#

Usage:

sl task.signal:[id=<int>]    [,name=<string>]    [,pid=<int>]    ,signal=<int>    [,value=<int>]    

Help with this command:

sl --help=task.signal

Description#

The task.signal command sends a POSIX style signal to the process running on the connected device.

arguments#

id#

  • shortcut: tid
  • description: thread ID to receive the signal. If specified, pthread_kill() is used instead of kill().
  • example: task.signal:signal=<signal>,id=<any>
  • required: false
  • type: int
  • default: <any>

name#

  • shortcut: n
  • description: application name to receive the signal (or use pid).
  • example: task.signal:signal=<signal>,name=<any>
  • required: false
  • type: string
  • default: <any>

pid#

  • description: process ID target for the signal (or use name). If specified kill() is used rather than pthread_kill().
  • example: task.signal:signal=<signal>,pid=<any>
  • required: false
  • type: int
  • default: <any>

signal#

  • shortcut: s
  • description: signal to send which can be KILL, INT, STOP, ALARM, TERM, BUS, QUIT, and CONTINUE.
  • example: task.signal:signal=<signal>
  • required: true
  • type: int

value#

  • shortcut: v
  • description: optional signal value that can be sent with the associated signal number.
  • example: task.signal:signal=<signal>,value=<none>
  • required: false
  • type: int
  • default: <none>

task.analyze#

Usage:

sl task.analyze:[duration=<string>]    [,name=<string>]    [,period=<int>]    

Help with this command:

sl --help=task.analyze

Description#

The task.analyze command samples the state of the threads/processes running in the system and print a report when the applciation exits.

arguments#

duration#

  • shortcut: d
  • description: number of seconds to monitor (default is while the terminal is running).
  • required: false
  • type: string
  • default: <indefinite>

name#

  • shortcut: n
  • description: application name (or path to the project) to monitor (default is to monitor all threads/processes). Use ? to do multiple names.
  • required: false
  • type: string
  • default: <all>

period#

  • shortcut: p
  • description: period in milliseconds to sample task activity.
  • required: false
  • type: int
  • default: 100

terminal|term

terminal|term.run#

Usage:

sl terminal.run:[description=<string>]    [,display=<bool>]    [,duration=<int>]    [,log=<string>]    [,period=<int>]    [,timestamp=<bool>]    [,while=<string>]    

Help with this command:

sl --help=terminal.run

Description#

The terminal.run command reads/writes the stdio of the connected device and display it on the host computer terminal. The terminal will run until ^C is pushed.

arguments#

append#

  • shortcut: a
  • description: append data to the log file.
  • required: false
  • type: bool
  • default: false

display#

  • shortcut: d
  • description: display the terminal data on the host terminal output (set to false and use log to just log to a file).
  • required: false
  • type: bool
  • default: true

duration#

  • description: duration in seconds to run the terminal.
  • required: false
  • type: int
  • default: <indefinite>

log#

  • shortcut: l
  • description: path to a file where the terminal data will be written.
  • required: false
  • type: string
  • default: <filename>

period#

  • description: polling duration in milliseconds. Polling the terminal requires CPU processing on the connected device. Use a larger value here to limit, the device processing time spent on servicing this command.
  • required: false
  • type: int
  • default: 10

timestamp#

  • shortcut: ts
  • description: prefix the log file with a unique timestamp.
  • required: false
  • type: bool
  • default: <false>

while#

  • shortcut: w
  • description: application name to watch. The terminal will stop when the application terminates.
  • required: false
  • type: string
  • default: ``

terminal|term.listen#

terminal|term.connect#

user

user.ping#

Usage:

sl user.ping:[identifier=<string>]    

Help with this command:

sl --help=user.ping

Description#

The user.ping command pings the information about the user.

arguments#

identifier#

  • shortcut: id
  • description: id to ping.
  • required: false
  • type: string
  • default: <current>

team

team.ping#

Usage:

sl team.ping:team=<string>    [,user=<string>]    

Help with this command:

sl --help=team.ping

Description#

The team.ping command pings information for the specified team.

arguments#

team#

  • shortcut: id
  • description: id to ping.
  • example: team.ping:team=<team id>
  • required: true
  • type: string

user#

  • description: list details about a user on the team.
  • example: team.ping:team=<team id>,user=<none>
  • required: false
  • type: string
  • default: <none>

team.add#

Usage:

sl team.add:[create=<bool>]    [,description=<string>]    [,read=<bool>]    [,remove=<bool>]    ,team=<string>    ,user=<string>    [,write=<bool>]    

Help with this command:

sl --help=team.add

Description#

The team.add command add a user to a team.

arguments#

admin#

  • description: set user admin permissions.
  • example: team.add:team=<team id>,user=<user id>,admin=false
  • required: false
  • type: bool
  • default: false

create#

  • description: set user create permissions.
  • example: team.add:team=<team id>,user=<user id>,create=false
  • required: false
  • type: bool
  • default: false

read#

  • description: set user read permissions.
  • example: team.add:team=<team id>,user=<user id>,read=true
  • required: false
  • type: bool
  • default: true

remove#

  • description: set user remove permissions.
  • example: team.add:team=<team id>,user=<user id>,remove=false
  • required: false
  • type: bool
  • default: false

team#

  • shortcut: id
  • description: team id for user to update.
  • example: team.add:team=<team id>,user=<user id>
  • required: true
  • type: string

user#

  • description: user to add.
  • example: team.add:team=<team id>,user=<user id>
  • required: true
  • type: string

write#

  • description: set user write permissions.
  • example: team.add:team=<team id>,user=<user id>,write=false
  • required: false
  • type: bool
  • default: false

team.update#

Usage:

sl team.update:[create=<bool>]    [,description=<string>]    [,dryrun=<bool>]    [,read=<bool>]    [,remove=<bool>]    ,team=<string>    ,user=<string>    [,write=<bool>]    

Help with this command:

sl --help=team.update

Description#

The team.update command update a user on the team

arguments#

admin#

  • description: set user admin permissions.
  • example: team.update:team=<team id>,user=<user id>,admin=<no change>
  • required: false
  • type: bool
  • default: <no change>

create#

  • description: set user create permissions.
  • example: team.update:team=<team id>,user=<user id>,create=<no change>
  • required: false
  • type: bool
  • default: <no change>

dryrun#

  • description: show changes to be made without making them.
  • example: team.update:team=<team id>,user=<user id>,dryrun=false
  • required: false
  • type: bool
  • default: false

read#

  • description: set user read permissions.
  • example: team.update:team=<team id>,user=<user id>,read=<no change>
  • required: false
  • type: bool
  • default: <no change>

remove#

  • description: set user remove permissions.
  • example: team.update:team=<team id>,user=<user id>,remove=<no change>
  • required: false
  • type: bool
  • default: <no change>

team#

  • shortcut: id
  • description: team id for user to update.
  • example: team.update:team=<team id>,user=<user id>
  • required: true
  • type: string

user#

  • description: user to update.
  • example: team.update:team=<team id>,user=<user id>
  • required: true
  • type: string

write#

  • description: set user write permissions.
  • example: team.update:team=<team id>,user=<user id>,write=<no change>
  • required: false
  • type: bool
  • default: <no change>

team.create#

Usage:

sl team.create:name=<string>    [,permissions=<string>]    [,user=<string>]    

Help with this command:

sl --help=team.create

Description#

The team.create command creates a new team (you must be a pro user to create team).

arguments#

name#

  • description: the name of the team.
  • example: team.create:name=<none>
  • required: true
  • type: string

permissions#

  • description: permissions for viewing the team.
  • example: team.create:name=<none>,permissions=private
  • required: false
  • type: string
  • default: private

user#

  • description: iD of the owning user.
  • example: team.create:name=<none>,user=<current>
  • required: false
  • type: string
  • default: <current>

ux

ux.process#

Usage:

sl ux.process:[source=<string>]    

Help with this command:

sl --help=ux.process

Description#

The ux.process command process a ux json package.

arguments#

source#

  • shortcut: path
  • description: path to the ux_settings.json file.
  • required: false
  • type: string
  • default: <none>

ux.show#

Usage:

sl ux.show:[canvas=<integer>]    [,description=<string>]    [,destination=<string>]    [,details=<bool>]    ,source=<string>    

Help with this command:

sl --help=ux.show

Description#

The ux.show command shows icons and fonts.

arguments#

bpp#

  • description: bits per pixel.
  • example: ux.show:source=<source path>,bpp=1
  • required: false
  • type: integer
  • default: 1

canvas#

  • description: canvas size.
  • example: ux.show:source=<source path>,canvas=64
  • required: false
  • type: integer
  • default: 64

destination#

  • shortcut: dest
  • description: destination file/directory.
  • example: ux.show:source=<source path>,destination=<none>
  • required: false
  • type: string
  • default: <none>

details#

  • description: display asset details.
  • example: ux.show:source=<source path>,details=false
  • required: false
  • type: bool
  • default: false

source#

  • shortcut: path
  • description: source file/directory to convert.
  • example: ux.show:source=<source path>
  • required: true
  • type: string

ux.clean#

Usage:

sl ux.clean:[identifier=<string>]    

Help with this command:

sl --help=ux.clean

Description#

The ux.clean command cleanup extra ux files.

arguments#

identifier#

  • shortcut: id
  • description: id (serial number) to ping.
  • required: false
  • type: string
  • default: <none>

ux.convert#

Usage:

sl ux.convert:[characters=<string>]    [,description=<string>]    [,destination=<string>]    [,icon=<bool>]    [,map=<bool>]    [,size=<integer>]    [,source=<string>]    [,theme=<bool>]    

Help with this command:

sl --help=ux.convert

Description#

The ux.convert command convert between ux file formats.

arguments#

bpp#

  • description: bits per pixel.
  • required: false
  • type: integer
  • default: 1

characters#

  • description: characters to include in the font.
  • required: false
  • type: string
  • default: <ascii>

destination#

  • shortcut: dest
  • description: destination file/directory.
  • required: false
  • type: string
  • default: <none>

icon#

  • description: input svg file is an icon.
  • required: false
  • type: bool
  • default: false

map#

  • description: generate a map file for the output.
  • required: false
  • type: bool
  • default: false

size#

  • description: point size.
  • required: false
  • type: integer
  • default: 16

source#

  • shortcut: path
  • description: source file/directory to convert.
  • required: false
  • type: string
  • default: <none>

theme#

  • description: json file is a theme file.
  • required: false
  • type: bool
  • default: false

ux.bundle#

Usage:

sl ux.bundle:[description=<string>]    [,destination=<string>]    [,owner=<string>]    ,source=<string>    

Help with this command:

sl --help=ux.bundle

Description#

The ux.bundle command create a binary blob of assets.

arguments#

access#

  • description: use a read-only combo (default is 0444).
  • example: ux.bundle:source=<none>,access=0444
  • required: false
  • type: string
  • default: 0444

destination#

  • shortcut: dest
  • description: destination file/directory.
  • example: ux.bundle:source=<none>,destination=<none>
  • required: false
  • type: string
  • default: <none>

owner#

  • description: specify user or root.
  • example: ux.bundle:source=<none>,owner=root
  • required: false
  • type: string
  • default: root

source#

  • shortcut: path
  • description: source file/directory to convert.
  • example: ux.bundle:source=<none>
  • required: true
  • type: string

mcu

mcu.process#

Usage:

sl mcu.process:[description=<string>]    [,destination=<string>]    [,source=<string>]    

Help with this command:

sl --help=mcu.process

Description#

The mcu.process command process mcu configuration data.

arguments#

architecture#

  • shortcut: arch
  • description: architecture to process.
  • example: mcu.process:architecture=<stm32>
  • required: true
  • type: string

destination#

  • shortcut: dest
  • description: path to destination output folder.
  • example: mcu.process:architecture=<stm32>,destination=<none>
  • required: false
  • type: string
  • default: <none>

source#

  • shortcut: path
  • description: path to input file.
  • example: mcu.process:architecture=<stm32>,source=<none>
  • required: false
  • type: string
  • default: <none>

mcu.bundle#

Usage:

sl mcu.bundle:[description=<string>]    [,destination=<string>]    [,owner=<string>]    ,source=<string>    

Help with this command:

sl --help=mcu.bundle

Description#

The mcu.bundle command create a binary blob of assets.

arguments#

access#

  • description: use a read-only combo (default is 0444).
  • example: mcu.bundle:source=<none>,access=0444
  • required: false
  • type: string
  • default: 0444

destination#

  • shortcut: dest
  • description: destination file/directory.
  • example: mcu.bundle:source=<none>,destination=<none>
  • required: false
  • type: string
  • default: <none>

owner#

  • description: specify user or root.
  • example: mcu.bundle:source=<none>,owner=root
  • required: false
  • type: string
  • default: root

source#

  • shortcut: path
  • description: source file/directory to convert.
  • example: mcu.bundle:source=<none>
  • required: true
  • type: string