Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Rust serial controller interface for dm-playground

License

Notifications You must be signed in to change notification settings

spacestation13/dm-playground_controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

101 Commits

Repository files navigation

dm-playground_controller

Basic rust controller application communicating over serial for dm-playground.

Protocol is uni-directional in the way commands are issued. The client always issues command and the server responds with either:

  • HELLO\0 (On startup)
  • \nOK\0
  • \nERR\0

Strings and binary data must always be base64 encoded.

Only UTF-8 is supported.

For commands, spaces should be used to seperate arguments.

For responses, line breaks should be used as seperator when possible for response data

Commands

Poll

Command

poll

Response

( \n)*OK

typ: (STR) Type of the poll event

data: (ANY) Data associated with the poll event

Example

> poll
< stdout 12345 Q29tcGlsaW5nLi4uCkNvbXBpbGVkIQ==
< pidexit 12345 0
< unzip L3RtcC9kbS1wbGF5Z3JvdW5kL2J5b25kLTUxMy4xMjQ1Lw==
< OK

Signal

Command

signal

pid: (INT) PID of the process to signal

signal: (INT) signal to send

Response

OK

Example

> signal 12345 7
< OK

Run

Command

run

path: (B64_STR) Path of the executable

args: (B64_STR) Arguments to run the executable with. Arguments are seperated with \0

env: (B64_STR) Environment variables to pass to the executable in the following format: VAR1=VAL1;VAR2=VAL2;. Take care to escape \;, \= and \\ properly.

Response


OK

pid: (INT) process ID of the created process

Example

> run L3RtcC9kbS1wbGF5Z3JvdW5kL2J5b25kLTUxMy4xMjQ1L2Jpbi9EcmVhbU1h a2Vy L21udC9ob3N0L2NvZGUvMjUuZG1l UEFUSD0vYmluO0hUVFBfUFJPWFk9bG9jYWxob3N0Ojg4ODg7REVWPTE=
< 12345
< OK

Poll Events

Exit
Format

pidexit

pid: (NUM) Process ID of the subprocess that exit

exitCode: (NUM) exit code of the subprocess that exit. 0-255: Exited via exit(), exit code is exitCode 256: Exit code or signal could not be determined 257-inf: Exited by being kill()'d. Signal is (exitCode - 256)

Example

pidexit 12345 127


Stdout
Format

stdout

pid: (NUM) Process ID of the subprocess that output on stdout

chunk: (B64) Base64 encoded data that was output

Example

stdout 12345 Q29tcGlsbGluZy4uLi5cbkNvbXBpbGVkIQ==


Stderr
Format

stderr

pid: (NUM) Process ID of the subprocess that output on stderr

chunk: (B64) Base64 encoded data that was output

Example

stdout 12345 V2FybmluZzogYnJ1aCBtb21lbnQ=

About

Rust serial controller interface for dm-playground

Topics

Resources

Readme

License

MIT license

Stars

Watchers

Forks

Contributors