SimTX API/Packets/StartMonitor
Appearance
| Frame | ClientFrame, field 31
|
|---|---|
| Member | start_monitor
|
| Direction | Client → server |
| Session | Control, moderation |
| Roles | ROLE_CONTROL (authenticated), ROLE_MODERATION.
|
| Permission | Control: the transmitter must belong to the account. Moderation: monitor.any.
|
| Answered by | MonitorAck, then MonitorBlock frames, or Error |
| Defined in | control.proto
|
StartMonitor asks the server to stream the signal of a transmitter back to the client, so that an operator can hear what they are sending. The stream is the transmitter's complex baseband after the modulator and amplifier model, before the antenna and propagation.
Definition
message StartMonitor { bytes session_id = 1; int64 request_id = 2; }
Fields
| # | Field | Type | Description |
|---|---|---|---|
| 1 | session_id |
bytes |
16-byte session id of the transmitter to monitor. |
| 2 | request_id |
int64 |
Nonzero; echoed in the MonitorAck or Error. |
Rules
- On a control session, the transmitter must belong to the same account as the control session. An anonymous control session cannot monitor anything. Authenticated control sessions need a
controlticket, which the account service issues only to credentials withcatalog.publish. - On a moderation session, any transmitter may be monitored with
monitor.any. - Take
session_idfrom the transmitter's own SessionStatus, or from aLiveSession.session_idin the StationList. - Success: MonitorAck with
active = true, then MonitorBlock frames. Failure: Error withNOT_FOUND(no live transmitter with that id) orFORBIDDEN(not yours). - Not a heavy request. The stream starts with the newest samples; there is no backlog.
Examples
Complete frames, including the varint length prefix, from the protocol's golden test vectors (protocol/simtx/v25/testdata/frames.json).
start_monitor (client to server, 24 bytes):
17 frame length 23
FA 01 14 start_monitor (StartMonitor), 20 bytes
0A 10 AA AA AA AA … session_id = aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee
10 2C request_id = 44
monitor_ack_started (server to client, 26 bytes):
19 frame length 25
D2 02 16 monitor_ack (MonitorAck), 22 bytes
08 2C request_id = 44
12 10 AA AA AA AA … session_id = aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee
18 01 active = true