view rvinterf/include/localsock.h @ 995:74024eb17e04

fc-loadtool help: improve language regarding 16 MiB flash chips In FC project history, 16 MiB flash originally meant Pirelli DP-L10. Then we got FCDEV3B with the same flash (our own design), but now we are discovering more Calypso devices that used such large flash, both late Calypso era (Sony Ericsson K2x0) as well as much earlier ones (FIC FLUID devices.txt file with 2004 dates, Leonardo+ rev 5). Hence we need to migrate to more generic or neutral language in associated documentation, without giving elevated status to specific examples that drove our early project history.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 03 Dec 2023 21:11:12 +0000
parents ca6e969be6ee
children
line wrap: on
line source

/*
 * This header defines and describes (through comments) the local UNIX domain
 * socket interface implemented between rvinterf and its clients like fc-tmsh.
 *
 * The UNIX domain sockets used for this ad hoc interface are of the
 * SOCK_STREAM kind, but the true nature of the communication is message-based.
 * We use the same trick that is used for DNS over TCP: every message in each
 * direction is preceded by a 2-byte length.  This length is sent MSB first
 * just like in DNS over TCP.  The limit on the size of these messages
 * (for sizing buffers etc) needs to be the larger of MAX_PKT_TO_TARGET and
 * MAX_PKT_FROM_TARGET plus 1, and currently equals:
 */

#define	LOCALSOCK_MAX_MSG	1601

/*
 * Each message in the client->rvinterf direction (can be seen as command)
 * begins (after the length) with an opcode byte as follows:
 */

#define	CLI2RVI_WANT_RVTRACE		0x00
#define	CLI2RVI_WANT_MUXPROTO		0x01
#define	CLI2RVI_PKT_TO_TARGET		0x02
#define	CLI2RVI_RAWBYTES_TO_TARGET	0x03
#define	CLI2RVI_RESET_PACKET_RX		0x04
#define	CLI2RVI_DROP_MUXPROTO		0x05

/*
 * The first two commands (CLI2RVI_WANT_RVTRACE and CLI2RVI_WANT_MUXPROTO)
 * are the means by which client programs inform rvinterf that they are
 * interested in receiving copies of certain packets coming from the target.
 *
 * The CLI2RVI_WANT_RVTRACE opcode needs to be followed by a USEID mask value
 * and a USEID match value, both in the network byte order, i.e., MSB first,
 * for a total message length of 9 bytes.  For every RV trace message received
 * from the target, rvinterf will iterate through all active clients to see who
 * is interested: if the received USEID ANDed with the mask equals the match
 * value, the message will be forwarded to that client.
 *
 * The CLI2RVI_WANT_MUXPROTO opcode needs to be followed by one byte
 * identifying the RVTMUX protocol of interest, i.e., the first byte of the
 * packets exchanged between the host and the target, e.g., 0x12 for L1 traces
 * as defined in pktmux.h, for a total message length of 2 bytes.
 *
 * The CLI2RVI_RESET_PACKET_RX opcode resets the "interests" previously set
 * with CLI2RVI_WANT_RVTRACE and/or CLI2RVI_WANT_MUXPROTO.  It is a "blanket"
 * reset; the command message consists of just the opcode.  The
 * CLI2RVI_DROP_MUXPROTO command is more specific and undoes the effect of a
 * previous CLI2RVI_WANT_MUXPROTO; it needs to be followed by one byte
 * identifying the RVTMUX protocol in question, just like CLI2RVI_WANT_MUXPROTO.
 *
 * The last two commands (CLI2RVI_PKT_TO_TARGET and CLI2RVI_RAWBYTES_TO_TARGET)
 * cause data payload to be sent to the target serial port.  Payload following
 * CLI2RVI_PKT_TO_TARGET (must not exceed MAX_PKT_TO_TARGET) is sent with the
 * proper packet encapsulation per TI; bytes following
 * CLI2RVI_RAWBYTES_TO_TARGET are sent raw.
 */

/*
 * Each message in the rvinterf->client direction begins (after the length)
 * with a message type byte as follows:
 */

#define	RVI2CLI_PKT_FROM_TARGET		0x00
#define	RVI2CLI_LOCAL_CMD_RESP		0x01

/*
 * Messages beginning with RVI2CLI_PKT_FROM_TARGET are packets received
 * from the target GSM device; the byte following this type code is the
 * first byte of the packet from the target, e.g., 0x11 for RV traces or
 * 0x12 for L1 traces.  Rvinterf will only start sending these messages
 * to a client after that client has expressed interest in receiving
 * target->host packets of a particular type.
 *
 * Messages beginning with RVI2CLI_LOCAL_CMD_RESP are generated locally
 * by rvinterf itself as responses to commands, currently as responses to
 * CLI2RVI_WANT_{RVTRACE,MUXPROTO}.  The byte following the
 * RVT2CLI_LOCAL_CMD_RESP type code is ASCII '+' or ASCII '-', indicating
 * success or error, respectively.  Any remaining bytes form a message
 * for the user.
 */