-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f4e95f6
commit 672eeb8
Showing
1 changed file
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# CDBA protocol description | ||
|
||
## General stuff: | ||
|
||
### cdba operates over ssh | ||
|
||
### Client: | ||
* `~/.ssh/config` is effectively the 'real' config on the client side | ||
* The connection is established by executing: | ||
```sh | ||
# serverbinaryname defaults to 'cdba-server' | ||
/usr/bin/ssh user@server serverbinaryname | ||
``` | ||
* ssh `stdout` receives `messages` and the client is expected to handle them instantly after receiving, until `EOF` | ||
* ssh `stderr` receives `status updates` (blue text) and the client is expected to handle them instantly after receiving, until `EOF` | ||
|
||
### Server: | ||
* The server enumerates all of the connected devices, based on a configuration file | ||
* Client messages are received over `stdin` | ||
* Messages are sent to the clients over `stdout`, until the connection is closed (or drops) | ||
* The server opens a tty to the serial port on the device and forwards the output via `MSG_CONSOLE` | ||
|
||
## Supported messages | ||
`C - client | S - server` | ||
|
||
|
||
### 1 - MSG_SELECT_BOARD [C -> S] | ||
> ```data = string board name | len = sizeof(data) ``` | ||
> | ||
> Select the board to operate on. | ||
> | ||
> Return [**S**]: Echo the command back with `len = 0`. | ||
### 2 - MSG_CONSOLE [C <-> S] | ||
> ```data = string_buffer | len = sizeof(data) ``` | ||
> Send TTY I/O. | ||
> | ||
> Return [**C**/**S**]: Echo the command back with `len = sizeof(buf), data = buf`. | ||
### 3 - MSG_HARDRESET | ||
`<unused>` | ||
|
||
### 4 - MSG_POWER_ON [C -> S] | ||
> ```len = 0``` | ||
> | ||
> Power on the board. | ||
> | ||
> Return [**S**]: Echo the command back with `len = 0`. | ||
### 5 - MSG_POWER_OFF [C -> S] | ||
> ```len = 0``` | ||
> | ||
> Power off the board. | ||
> | ||
> Return [**S**]: Echo the command back with `len = 0`. | ||
### 6 - MSG_FASTBOOT_PRESENT [S -> C] | ||
> ```data = 0 / 1 | len = 1 ``` | ||
> | ||
> Signal that the device is available over fastboot and ready to receive further commands. | ||
> Return [**C**]: MSG_FASTBOOT_DOWNLOAD or MSG_FASTBOOT_CONTINUE with `len = 0`. | ||
### 7 - MSG_FASTBOOT_DOWNLOAD [C -> S] | ||
> ```data = binary_chunk | len = sizeof(data)``` | ||
> | ||
> Send binary data for fastboot. | ||
> | ||
> Return [**S**]: Echo the command back with `len = 0`. | ||
### 8 - MSG_FASTBOOT_BOOT | ||
`<unused>` | ||
|
||
### 9 - MSG_STATUS_UPDATE [C -> S] | ||
> TODO: json | ||
> | ||
>Return: | ||
### 10 - MSG_VBUS_ON [C -> S] | ||
> Enable USB VBUS going to the board. | ||
> | ||
> Return [**S**]: None | ||
### 11 - MSG_VBUS_OFF [C -> S] | ||
> Disable USB VBUS going to the board. | ||
> | ||
> Return [**S**]: None | ||
### 12 - MSG_FASTBOOT_REBOOT | ||
`<unused>` | ||
|
||
### 13 - MSG_SEND_BREAK [C -> S] | ||
> ```len = 0``` | ||
> | ||
> Send a tcsendbreak to the board. | ||
> | ||
> Return [**S**]: None | ||
### 14 - MSG_LIST_DEVICES [C - > S] | ||
> ```len = 0``` | ||
> | ||
> List the available boards. | ||
> | ||
> Return [**S**]: Echo the command back NUM_DEVICES times with `len = sizeof(buf), data = buf`. Once done, echo the command back with `len = 0`. | ||
### 15 - MSG_BOARD_INFO [C -> S] | ||
> ```data = string board name | len = sizeof(data) ``` | ||
> | ||
> Get the board description. | ||
> | ||
> Return [**S**]: Echo the command back with `len = sizeof(buf), data = buf`. | ||
### 16 - MSG_FASTBOOT_CONTINUE [C -> S] | ||
> ```len = 0``` | ||
> | ||
> Send `fastboot continue` to the board. | ||
> | ||
> Return [**S**]: Echo the command back with `len = 0`. |