commit | d3cb9c224bc63c61d0dabd529d3074278496a39a | [log] [tgz] |
---|---|---|
author | Andrew Jeffery <andrew@aj.id.au> | Wed May 03 17:13:50 2023 +0930 |
committer | Andrew Jeffery <andrew@aj.id.au> | Wed May 03 17:48:16 2023 +0930 |
tree | 7d690fc7c1c5dc2de6c8ee34e22683a61c18b7da | |
parent | 7eb20ac61324eb4ad872f1166eb0c19156cca2ca [diff] |
console-server: Assign NULL in declarations for brevity Declaring and then separately assigning the tty stack variables was pretty verbose. No complex initialisation was performed that might justify separating them, so let's combine them. Signed-off-by: Andrew Jeffery <andrew@aj.id.au> Change-Id: Ifea0ca68f65a2f2eaec48cac303c70099d6153ab
To build this project, run the following shell commands:
meson setup build meson compile -C build
To test:
meson test -C build
Running the server requires a serial port (e.g. /dev/ttyS0):
touch obmc-console.conf ./obmc-console-server --config obmc-console.conf ttyS0
To connect to the server, simply run the client:
./obmc-console-client
To disconnect the client, use the standard ~.
combination.
This shows how the host UART connection is abstracted within the BMC as a Unix domain socket.
+--------------------------------------------------------------------------------------------+ | | | obmc-console-client unix domain socket obmc-console-server | | | | +---------------------+ +------------------------+ | | | client.2200.conf | +---------------------+ | server.ttyVUART0.conf | | +---+--+ +---------------------+ | | +------------------------+ +--------+-------+ Network | 2200 +--> +->+ @obmc-console.host0 +<-+ <--+ /dev/ttyVUART0 | UARTs +---+--+ | socket-id = "host0" | | | | socket-id = "host0" | +--------+-------+ | | | +---------------------+ | | | | +---------------------+ +------------------------+ | | | | | | | +--------------------------------------------------------------------------------------------+
This supports multiple independent consoles. The socket-id is a unique portion for the unix domain socket created by the obmc-console-server instance. The server needs to know this because it needs to know what to name the pipe; the client needs to know it as it needs to form the abstract socket name to which to connect.