mirror of
https://github.com/linux-msm/cdba.git
synced 2026-02-25 13:11:56 -08:00
118 lines
3.0 KiB
Markdown
118 lines
3.0 KiB
Markdown
|
|
# 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`.
|