<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API%2FPackets%2FSessionStatus</id>
	<title>SimTX API/Packets/SessionStatus - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=SimTX_API%2FPackets%2FSessionStatus"/>
	<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/SessionStatus&amp;action=history"/>
	<updated>2026-11-04T20:58:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Packets/SessionStatus&amp;diff=2427&amp;oldid=prev</id>
		<title>Clanker: Remove development history and server internals</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/SessionStatus&amp;diff=2427&amp;oldid=prev"/>
		<updated>2026-10-24T17:16:37Z</updated>

		<summary type="html">&lt;p&gt;Remove development history and server internals&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:16, 24 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| file = session.proto&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| file = session.proto&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;SessionStatus&#039;&#039;&#039; is the server&#039;s account of a receiver or transmitter session: once when the start is accepted (&amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt;), on every change the session survives (&amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt;), and when it is refused or stopped (&amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; are the only refusal and kick signal for receivers and transmitters alike&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; v24&#039;s TxReject and TxKick are gone&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;SessionStatus&#039;&#039;&#039; is the server&#039;s account of a receiver or transmitter session: once when the start is accepted (&amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt;), on every change the session survives (&amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt;), and when it is refused or stopped (&amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; are the only refusal and kick signal for receivers and transmitters alike.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The page [[SimTX API/Session status|Session status]] describes the life cycle in detail.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The page [[SimTX API/Session status|Session status]] describes the life cycle in detail.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l96&quot;&gt;Line 96:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 96:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; describe the session as the server now runs it. &amp;lt;code&amp;gt;frequency_hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; are always the current values.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; describe the session as the server now runs it. &amp;lt;code&amp;gt;frequency_hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; are always the current values.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;station&amp;lt;/code&amp;gt; is set on every &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; of a station-bound session. On &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; it is set only when the station changed (&amp;lt;code&amp;gt;STATION_EDIT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ORBIT_CHANGE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEORBIT_SCHEDULED&amp;lt;/code&amp;gt;) and then replaces the client&amp;#039;s copy as a whole. Unset means unchanged.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;station&amp;lt;/code&amp;gt; is set on every &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; of a station-bound session. On &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; it is set only when the station changed (&amp;lt;code&amp;gt;STATION_EDIT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ORBIT_CHANGE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEORBIT_SCHEDULED&amp;lt;/code&amp;gt;) and then replaces the client&amp;#039;s copy as a whole. Unset means unchanged.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Servers send station changes as &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; only to clients whose hello carried &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; ≥ 1. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Older &lt;/del&gt;clients get &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; instead.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Servers send station changes as &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; only to clients whose hello carried &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; ≥ 1. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Other &lt;/ins&gt;clients get &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; instead.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; carry &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt;; the connection closes after them.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; carry &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt;; the connection closes after them.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Statuses arrive in order on one connection. A client that does not know an &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; applies the snapshot fields.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Statuses arrive in order on one connection. A client that does not know an &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; applies the snapshot fields.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Examples ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Complete frames, including the varint length prefix&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, from the protocol&#039;s golden test vectors (&amp;lt;code&amp;gt;protocol/simtx/v25/testdata/frames.json&amp;lt;/code&amp;gt;)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Complete frames, including the varint length prefix.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_bound_satellite&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 373 bytes):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_bound_satellite&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 373 bytes):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key simtxwiki:diff:1.41:old-2303:rev-2427:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Packets/SessionStatus&amp;diff=2303&amp;oldid=prev</id>
		<title>Clanker: Protocol v25 reference</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Packets/SessionStatus&amp;diff=2303&amp;oldid=prev"/>
		<updated>2026-10-24T16:27:54Z</updated>

		<summary type="html">&lt;p&gt;Protocol v25 reference&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{SimTX API navigation}}&lt;br /&gt;
{{SimTX packet&lt;br /&gt;
| name = SessionStatus&lt;br /&gt;
| frame = ServerFrame&lt;br /&gt;
| field = 10&lt;br /&gt;
| member = session_status&lt;br /&gt;
| direction = s2c&lt;br /&gt;
| session = [[SimTX API/Receiver session|Receiver]], [[SimTX API/Transmitter session|transmitter]]&lt;br /&gt;
| roles = &amp;lt;code&amp;gt;ROLE_RECEIVER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ROLE_TX_AUDIO&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ROLE_TX_GENERATED&amp;lt;/code&amp;gt;.&lt;br /&gt;
| permission = None&lt;br /&gt;
| answers = [[SimTX API/Packets/ReceiverStart|ReceiverStart]], [[SimTX API/Packets/TransmitterStart|TransmitterStart]], [[SimTX API/Packets/AntennaPointingUpdate|AntennaPointingUpdate]], [[SimTX API/Packets/ReceiverRetune|ReceiverRetune]]&lt;br /&gt;
| group = session&lt;br /&gt;
| file = session.proto&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SessionStatus&amp;#039;&amp;#039;&amp;#039; is the server&amp;#039;s account of a receiver or transmitter session: once when the start is accepted (&amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt;), on every change the session survives (&amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt;), and when it is refused or stopped (&amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; are the only refusal and kick signal for receivers and transmitters alike; v24&amp;#039;s TxReject and TxKick are gone.&lt;br /&gt;
&lt;br /&gt;
The page [[SimTX API/Session status|Session status]] describes the life cycle in detail.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;protobuf&amp;quot;&amp;gt;&lt;br /&gt;
message SessionStatus {&lt;br /&gt;
  SessionState state = 1;&lt;br /&gt;
  string reason = 2;&lt;br /&gt;
  ErrorCode code = 3;&lt;br /&gt;
  bytes session_id = 4;          // per-connection id (the transmission id for TX)&lt;br /&gt;
  BoundStation station = 5;      // unset for ad-hoc sessions&lt;br /&gt;
  double frequency_hz = 6;&lt;br /&gt;
  Tracking tracking = 7;&lt;br /&gt;
  AntennaPointing pointing = 8;&lt;br /&gt;
  int64 request_id = 9;          // echoes AntennaPointingUpdate / ReceiverRetune request_id&lt;br /&gt;
  UpdateReason update_reason = 10;  // UPDATED only&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fields ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! # !! Field !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;state&amp;lt;/code&amp;gt; || [[SimTX API/Data types#SessionState|SessionState]] || Required; never &amp;lt;code&amp;gt;UNSPECIFIED&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;string&amp;lt;/code&amp;gt; || Human-readable reason. Set on &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; || [[SimTX API/Data types#ErrorCode|ErrorCode]] || Set on &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;UNSPECIFIED&amp;lt;/code&amp;gt; on an &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; session that simply ended.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;lt;code&amp;gt;session_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;bytes&amp;lt;/code&amp;gt; || 16-byte per-connection session id. For a transmitter, the transmission id. Identifies the session in station lists, health reports and own-transmitter monitoring.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;lt;code&amp;gt;station&amp;lt;/code&amp;gt; || [[SimTX API/Data types#BoundStation|BoundStation]] || The resolved station of a station-bound session. Always set on &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt;; on &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; set only when the station changed, and then it replaces the client&amp;#039;s copy as a whole. Unset for ad-hoc sessions.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || &amp;lt;code&amp;gt;frequency_hz&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; || Current frequency in Hz: receiver centre frequency or transmitter carrier.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; || [[SimTX API/Data types#Tracking|Tracking]] || Current tracking. Unset: none.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; || [[SimTX API/Data types#AntennaPointing|AntennaPointing]] || Current antenna pointing. Unset: none.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || &amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;int64&amp;lt;/code&amp;gt; || Echoes the &amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt; of the [[SimTX API/Packets/AntennaPointingUpdate|AntennaPointingUpdate]] or [[SimTX API/Packets/ReceiverRetune|ReceiverRetune]] this status confirms. 0 otherwise.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; || [[SimTX API/Data types#UpdateReason|UpdateReason]] || &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; only: the most significant cause.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== States ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &amp;lt;code&amp;gt;SESSION_STATE_UNSPECIFIED&amp;lt;/code&amp;gt; || Never sent. Decoders refuse it.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;SESSION_STATE_BOUND&amp;lt;/code&amp;gt; || Start accepted. &amp;lt;code&amp;gt;TxQueue&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;TxAccept&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;IqStreamDescriptor&amp;lt;/code&amp;gt; follow.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;SESSION_STATE_REJECTED&amp;lt;/code&amp;gt; || Start refused. &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt; say why; the connection closes.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;SESSION_STATE_ENDED&amp;lt;/code&amp;gt; || Ended by the server: kick, ban, station deleted, reentry, access revoked. The connection closes.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;lt;code&amp;gt;SESSION_STATE_UPDATED&amp;lt;/code&amp;gt; || The session keeps running with a changed state; see &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Update reasons ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value !! Name !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &amp;lt;code&amp;gt;UPDATE_REASON_UNSPECIFIED&amp;lt;/code&amp;gt; || Not an &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; status. On an &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; status: apply the snapshot fields.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;UPDATE_REASON_POINTING&amp;lt;/code&amp;gt; || This session&amp;#039;s [[SimTX API/Packets/AntennaPointingUpdate|AntennaPointingUpdate]] was applied (&amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;UPDATE_REASON_TRACKING&amp;lt;/code&amp;gt; || The server changed tracking, for example because the target was deleted or reentered.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || &amp;lt;code&amp;gt;UPDATE_REASON_STATION_EDIT&amp;lt;/code&amp;gt; || The station, its antenna or its rig was edited; revisions are bumped.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || &amp;lt;code&amp;gt;UPDATE_REASON_ORBIT_CHANGE&amp;lt;/code&amp;gt; || The bound satellite&amp;#039;s elements or attitude changed.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || &amp;lt;code&amp;gt;UPDATE_REASON_DEORBIT_SCHEDULED&amp;lt;/code&amp;gt; || The bound satellite fired its deorbit burn; &amp;lt;code&amp;gt;station.core.deorbit&amp;lt;/code&amp;gt; says when it reenters.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || &amp;lt;code&amp;gt;UPDATE_REASON_RETUNE&amp;lt;/code&amp;gt; || This session&amp;#039;s [[SimTX API/Packets/ReceiverRetune|ReceiverRetune]] took effect (&amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
* &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; is sent exactly once, before [[SimTX API/Packets/IqStreamDescriptor|IqStreamDescriptor]] or [[SimTX API/Packets/TxQueue|TxQueue]] / [[SimTX API/Packets/TxAccept|TxAccept]]. Keep &amp;lt;code&amp;gt;session_id&amp;lt;/code&amp;gt;: it identifies the session in station lists, health reports and own-transmitter monitoring.&lt;br /&gt;
* &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; describe the session as the server now runs it. &amp;lt;code&amp;gt;frequency_hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; are always the current values.&lt;br /&gt;
* &amp;lt;code&amp;gt;station&amp;lt;/code&amp;gt; is set on every &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; of a station-bound session. On &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; it is set only when the station changed (&amp;lt;code&amp;gt;STATION_EDIT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ORBIT_CHANGE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEORBIT_SCHEDULED&amp;lt;/code&amp;gt;) and then replaces the client&amp;#039;s copy as a whole. Unset means unchanged.&lt;br /&gt;
* Servers send station changes as &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; only to clients whose hello carried &amp;lt;code&amp;gt;protocol_revision&amp;lt;/code&amp;gt; ≥ 1. Older clients get &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ENDED&amp;lt;/code&amp;gt; carry &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;reason&amp;lt;/code&amp;gt;; the connection closes after them.&lt;br /&gt;
* Statuses arrive in order on one connection. A client that does not know an &amp;lt;code&amp;gt;update_reason&amp;lt;/code&amp;gt; applies the snapshot fields.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Complete frames, including the varint length prefix, from the protocol&amp;#039;s golden test vectors (&amp;lt;code&amp;gt;protocol/simtx/v25/testdata/frames.json&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_bound_satellite&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 373 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
F3 02                                           frame length 371&lt;br /&gt;
52 F0 02                                        session_status (SessionStatus), 368 bytes&lt;br /&gt;
  08 01                                         state = 1 (SESSION_STATE_BOUND)&lt;br /&gt;
  22 10 AA AA AA AA …                           session_id = aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee&lt;br /&gt;
  2A 8E 02                                      station (BoundStation), 270 bytes&lt;br /&gt;
    0A A8 01                                    core (StationCore), 168 bytes&lt;br /&gt;
      0A 10 99 99 99 99 …                       station_id = 99999999-8888-4777-8666-555555555555&lt;br /&gt;
      10 03                                     revision = 3&lt;br /&gt;
      18 02                                     kind = 2 (STATION_KIND_SATELLITE)&lt;br /&gt;
      22 08 53 69 6D 53 61 74 2D 31             name = &amp;quot;SimSat-1&amp;quot;&lt;br /&gt;
      2A 05 53 53 41 54 31                      callsign = &amp;quot;SSAT1&amp;quot;&lt;br /&gt;
      32 08 6F 70 65 72 61 74 6F 72             owner_handle = &amp;quot;operator&amp;quot;&lt;br /&gt;
      38 01                                     visibility = 1 (STATION_VISIBILITY_PUBLIC)&lt;br /&gt;
      42 1B                                     location (GeoPoint), 27 bytes&lt;br /&gt;
        09 00 00 00 00 00 00 24 40              latitude_deg = 10.0&lt;br /&gt;
        11 00 00 00 00 00 00 34 40              longitude_deg = 20.0&lt;br /&gt;
        19 00 00 00 00 E0 C8 20 41              altitude_meters = 550000.0&lt;br /&gt;
      4A 49                                     orbit (OrbitalElements), 73 bytes&lt;br /&gt;
        0A 0B 73 69 6D 74 78 2D 6A 32 2D 76 31  model = &amp;quot;simtx-j2-v1&amp;quot;&lt;br /&gt;
        10 C0 BB F2 D6 06                       epoch_seconds = 1792843200&lt;br /&gt;
        21 00 00 00 00 00 09 BB 40              semi_major_axis_km = 6921.0&lt;br /&gt;
        29 FC A9 F1 D2 4D 62 50 3F              eccentricity = 0.001&lt;br /&gt;
        31 66 66 66 66 66 66 58 40              inclination_deg = 97.6&lt;br /&gt;
        39 00 00 00 00 00 00 5E 40              raan_deg = 120.0&lt;br /&gt;
        41 00 00 00 00 00 80 56 40              argument_of_perigee_deg = 90.0&lt;br /&gt;
        49 00 00 00 00 00 00 24 40              mean_anomaly_deg = 10.0&lt;br /&gt;
      52 0B                                     attitude (Attitude), 11 bytes&lt;br /&gt;
        1A 09                                   spin (Spin), 9 bytes&lt;br /&gt;
          11 00 00 00 00 00 00 00 40            rate_rpm = 2.0&lt;br /&gt;
    12 10 99 99 99 99 …                         antenna_id = 99999999-8888-4777-8666-444444444444&lt;br /&gt;
    18 01                                       antenna_revision = 1&lt;br /&gt;
    35 00 00 A0 40                              pa_cap_watts = 5&lt;br /&gt;
    3A 48                                       antenna (AntennaConfig), 72 bytes&lt;br /&gt;
      0A 06 44 49 50 4F 4C 45                   type = &amp;quot;DIPOLE&amp;quot;&lt;br /&gt;
      15 00 00 20 41                            height_meters = 10&lt;br /&gt;
      1D 00 00 34 42                            azimuth_deg = 45&lt;br /&gt;
      25 00 00 80 3F                            feedline_loss_db = 1&lt;br /&gt;
      2D 9A 99 21 41                            wire_length_meters = 10.1&lt;br /&gt;
      3A 2A                                     pointing (AntennaPointing), 42 bytes&lt;br /&gt;
        08 02                                   mount = 2 (ANTENNA_MOUNT_AZEL)&lt;br /&gt;
        10 01                                   mode = 1 (POINTING_MODE_TRACK)&lt;br /&gt;
        1D 00 00 34 43                          azimuth_deg = 180&lt;br /&gt;
        25 00 00 F0 41                          elevation_deg = 30&lt;br /&gt;
        2A 10 11 11 11 11 …                     target_station_id = 11111111-2222-4333-8444-555555555555&lt;br /&gt;
        35 00 00 C0 40                          azimuth_rate_deg_per_sec = 6&lt;br /&gt;
        3D 00 00 40 40                          elevation_rate_deg_per_sec = 3&lt;br /&gt;
  31 00 00 00 60 19 EF B9 41                    frequency_hz = 435100000.0&lt;br /&gt;
  3A 14                                         tracking (Tracking), 20 bytes&lt;br /&gt;
    0A 10 11 11 11 11 …                         target_station_id = 11111111-2222-4333-8444-555555555555&lt;br /&gt;
    10 01                                       point_antenna = true&lt;br /&gt;
  42 2A                                         pointing (AntennaPointing), 42 bytes&lt;br /&gt;
    08 02                                       mount = 2 (ANTENNA_MOUNT_AZEL)&lt;br /&gt;
    10 01                                       mode = 1 (POINTING_MODE_TRACK)&lt;br /&gt;
    1D 00 00 34 43                              azimuth_deg = 180&lt;br /&gt;
    25 00 00 F0 41                              elevation_deg = 30&lt;br /&gt;
    2A 10 11 11 11 11 …                         target_station_id = 11111111-2222-4333-8444-555555555555&lt;br /&gt;
    35 00 00 C0 40                              azimuth_rate_deg_per_sec = 6&lt;br /&gt;
    3D 00 00 40 40                              elevation_rate_deg_per_sec = 3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_rejected&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 51 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
32                                 frame length 50&lt;br /&gt;
52 30                              session_status (SessionStatus), 48 bytes&lt;br /&gt;
  08 02                            state = 2 (SESSION_STATE_REJECTED)&lt;br /&gt;
  12 2A 47 61 6D 65 20 74 69 63 …  reason = &amp;quot;Game ticket was minted for another station&amp;quot;&lt;br /&gt;
  18 03                            code = 3 (ERROR_CODE_FORBIDDEN)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_rejected_station_required&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 56 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
37                                 frame length 55&lt;br /&gt;
52 35                              session_status (SessionStatus), 53 bytes&lt;br /&gt;
  08 02                            state = 2 (SESSION_STATE_REJECTED)&lt;br /&gt;
  12 2F 41 64 2D 68 6F 63 20 74 …  reason = &amp;quot;Ad-hoc transmitters are disabled on this server&amp;quot;&lt;br /&gt;
  18 09                            code = 9 (ERROR_CODE_STATION_REQUIRED)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_ended_kicked&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 46 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
2D                                 frame length 45&lt;br /&gt;
52 2B                              session_status (SessionStatus), 43 bytes&lt;br /&gt;
  08 03                            state = 3 (SESSION_STATE_ENDED)&lt;br /&gt;
  12 15 4B 69 63 6B 65 64 20 62 …  reason = &amp;quot;Kicked by a moderator&amp;quot;&lt;br /&gt;
  22 10 AA AA AA AA …              session_id = aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_updated_pointing&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 104 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
67                            frame length 103&lt;br /&gt;
52 65                         session_status (SessionStatus), 101 bytes&lt;br /&gt;
  08 04                       state = 4 (SESSION_STATE_UPDATED)&lt;br /&gt;
  22 10 AA AA AA AA …         session_id = aaaaaaaa-bbbb-4ccc-8ddd-ffffffffffff&lt;br /&gt;
  31 00 00 00 60 19 EF B9 41  frequency_hz = 435100000.0&lt;br /&gt;
  3A 16                       tracking (Tracking), 22 bytes&lt;br /&gt;
    0A 10 99 99 99 99 …       target_station_id = 99999999-8888-4777-8666-555555555555&lt;br /&gt;
    10 01                     point_antenna = true&lt;br /&gt;
    18 01                     doppler_correct = true&lt;br /&gt;
  42 2A                       pointing (AntennaPointing), 42 bytes&lt;br /&gt;
    08 02                     mount = 2 (ANTENNA_MOUNT_AZEL)&lt;br /&gt;
    10 01                     mode = 1 (POINTING_MODE_TRACK)&lt;br /&gt;
    1D 00 00 34 43            azimuth_deg = 180&lt;br /&gt;
    25 00 00 F0 41            elevation_deg = 30&lt;br /&gt;
    2A 10 11 11 11 11 …       target_station_id = 11111111-2222-4333-8444-555555555555&lt;br /&gt;
    35 00 00 C0 40            azimuth_rate_deg_per_sec = 6&lt;br /&gt;
    3D 00 00 40 40            elevation_rate_deg_per_sec = 3&lt;br /&gt;
  48 1F                       request_id = 31&lt;br /&gt;
  50 01                       update_reason = 1 (UPDATE_REASON_POINTING)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_updated_retune&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 36 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
23                            frame length 35&lt;br /&gt;
52 21                         session_status (SessionStatus), 33 bytes&lt;br /&gt;
  08 04                       state = 4 (SESSION_STATE_UPDATED)&lt;br /&gt;
  22 10 AA AA AA AA …         session_id = aaaaaaaa-bbbb-4ccc-8ddd-ffffffffffff&lt;br /&gt;
  31 00 00 00 00 12 D8 6A 41  frequency_hz = 14074000.0&lt;br /&gt;
  48 29                       request_id = 41&lt;br /&gt;
  50 06                       update_reason = 6 (UPDATE_REASON_RETUNE)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_updated_station_edit&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 209 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
CF 01                                frame length 207&lt;br /&gt;
52 CC 01                             session_status (SessionStatus), 204 bytes&lt;br /&gt;
  08 04                              state = 4 (SESSION_STATE_UPDATED)&lt;br /&gt;
  22 10 AA AA AA AA …                session_id = aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee&lt;br /&gt;
  2A A1 01                           station (BoundStation), 161 bytes&lt;br /&gt;
    0A 4E                            core (StationCore), 78 bytes&lt;br /&gt;
      0A 10 11 11 11 11 …            station_id = 11111111-2222-4333-8444-555555555555&lt;br /&gt;
      10 05                          revision = 5&lt;br /&gt;
      18 01                          kind = 1 (STATION_KIND_GROUND)&lt;br /&gt;
      22 08 42 75 64 61 70 65 73 74  name = &amp;quot;Budapest&amp;quot;&lt;br /&gt;
      2A 05 48 41 35 47 53           callsign = &amp;quot;HA5GS&amp;quot;&lt;br /&gt;
      32 08 6F 70 65 72 61 74 6F 72  owner_handle = &amp;quot;operator&amp;quot;&lt;br /&gt;
      42 1B                          location (GeoPoint), 27 bytes&lt;br /&gt;
        09 00 00 00 00 00 C0 47 40   latitude_deg = 47.5&lt;br /&gt;
        11 00 00 00 00 00 00 33 40   longitude_deg = 19.0&lt;br /&gt;
        19 00 00 00 00 00 00 5E 40   altitude_meters = 120.0&lt;br /&gt;
    12 10 11 11 11 11 …              antenna_id = 11111111-2222-4333-8444-666666666666&lt;br /&gt;
    18 02                            antenna_revision = 2&lt;br /&gt;
    22 10 11 11 11 11 …              rig_id = 11111111-2222-4333-8444-777777777777&lt;br /&gt;
    28 03                            rig_revision = 3&lt;br /&gt;
    35 00 00 C8 42                   pa_cap_watts = 100&lt;br /&gt;
    3A 22                            antenna (AntennaConfig), 34 bytes&lt;br /&gt;
      0A 08 59 41 47 49 5F 33 45 4C  type = &amp;quot;YAGI_3EL&amp;quot;&lt;br /&gt;
      15 00 00 60 41                 height_meters = 14&lt;br /&gt;
      1D 00 00 87 43                 azimuth_deg = 270&lt;br /&gt;
      25 00 00 00 3F                 feedline_loss_db = 0.5&lt;br /&gt;
      3A 07                          pointing (AntennaPointing), 7 bytes&lt;br /&gt;
        08 01                        mount = 1 (ANTENNA_MOUNT_AZ)&lt;br /&gt;
        1D 00 00 87 43               azimuth_deg = 270&lt;br /&gt;
  31 00 00 00 00 12 D8 6A 41         frequency_hz = 14074000.0&lt;br /&gt;
  42 07                              pointing (AntennaPointing), 7 bytes&lt;br /&gt;
    08 01                            mount = 1 (ANTENNA_MOUNT_AZ)&lt;br /&gt;
    1D 00 00 87 43                   azimuth_deg = 270&lt;br /&gt;
  50 03                              update_reason = 3 (UPDATE_REASON_STATION_EDIT)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;session_status_updated_deorbit_scheduled&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (server to client, 301 bytes):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
AB 02                                           frame length 299&lt;br /&gt;
52 A8 02                                        session_status (SessionStatus), 296 bytes&lt;br /&gt;
  08 04                                         state = 4 (SESSION_STATE_UPDATED)&lt;br /&gt;
  22 10 AA AA AA AA …                           session_id = aaaaaaaa-bbbb-4ccc-8ddd-ffffffffffff&lt;br /&gt;
  2A 86 02                                      station (BoundStation), 262 bytes&lt;br /&gt;
    0A CC 01                                    core (StationCore), 204 bytes&lt;br /&gt;
      0A 10 99 99 99 99 …                       station_id = 99999999-8888-4777-8666-555555555555&lt;br /&gt;
      10 04                                     revision = 4&lt;br /&gt;
      18 02                                     kind = 2 (STATION_KIND_SATELLITE)&lt;br /&gt;
      22 08 53 69 6D 53 61 74 2D 31             name = &amp;quot;SimSat-1&amp;quot;&lt;br /&gt;
      2A 05 53 53 41 54 31                      callsign = &amp;quot;SSAT1&amp;quot;&lt;br /&gt;
      32 08 6F 70 65 72 61 74 6F 72             owner_handle = &amp;quot;operator&amp;quot;&lt;br /&gt;
      38 01                                     visibility = 1 (STATION_VISIBILITY_PUBLIC)&lt;br /&gt;
      42 1B                                     location (GeoPoint), 27 bytes&lt;br /&gt;
        09 00 00 00 00 00 00 29 C0              latitude_deg = -12.5&lt;br /&gt;
        11 00 00 00 00 00 80 40 40              longitude_deg = 33.0&lt;br /&gt;
        19 00 00 00 00 40 06 19 41              altitude_meters = 410000.0&lt;br /&gt;
      4A 49                                     orbit (OrbitalElements), 73 bytes&lt;br /&gt;
        0A 0B 73 69 6D 74 78 2D 6A 32 2D 76 31  model = &amp;quot;simtx-j2-v1&amp;quot;&lt;br /&gt;
        10 D0 D7 F2 D6 06                       epoch_seconds = 1792846800&lt;br /&gt;
        21 00 00 00 00 00 23 BA 40              semi_major_axis_km = 6691.0&lt;br /&gt;
        29 22 FD F6 75 E0 9C 91 3F              eccentricity = 0.0172&lt;br /&gt;
        31 66 66 66 66 66 66 58 40              inclination_deg = 97.6&lt;br /&gt;
        39 00 00 00 00 00 00 5E 40              raan_deg = 120.0&lt;br /&gt;
        41 00 00 00 00 00 80 56 40              argument_of_perigee_deg = 90.0&lt;br /&gt;
        49 00 00 00 00 00 00 69 40              mean_anomaly_deg = 200.0&lt;br /&gt;
      52 02                                     attitude (Attitude), 2 bytes&lt;br /&gt;
        0A 00                                   nadir (Nadir), 0 bytes&lt;br /&gt;
      5A 2B                                     deorbit (Deorbit), 43 bytes&lt;br /&gt;
        08 80 C9 FC EF 96 34                    burn_at_ms = 1792846800000&lt;br /&gt;
        10 90 C6 94 F1 96 34                    reentry_at_ms = 1792849290000&lt;br /&gt;
        1A 12                                   reentry_point (GeoPoint), 18 bytes&lt;br /&gt;
          09 00 00 00 00 00 20 43 C0            latitude_deg = -38.25&lt;br /&gt;
          11 00 00 00 00 00 70 62 40            longitude_deg = 147.5&lt;br /&gt;
        21 00 00 00 00 00 E0 4E 40              delta_v_mps = 61.75&lt;br /&gt;
    12 10 99 99 99 99 …                         antenna_id = 99999999-8888-4777-8666-444444444444&lt;br /&gt;
    18 01                                       antenna_revision = 1&lt;br /&gt;
    35 00 00 A0 40                              pa_cap_watts = 5&lt;br /&gt;
    3A 1C                                       antenna (AntennaConfig), 28 bytes&lt;br /&gt;
      0A 06 44 49 50 4F 4C 45                   type = &amp;quot;DIPOLE&amp;quot;&lt;br /&gt;
      15 00 00 20 41                            height_meters = 10&lt;br /&gt;
      1D 00 00 34 42                            azimuth_deg = 45&lt;br /&gt;
      25 00 00 80 3F                            feedline_loss_db = 1&lt;br /&gt;
      2D 9A 99 21 41                            wire_length_meters = 10.1&lt;br /&gt;
  31 00 00 00 60 19 EF B9 41                    frequency_hz = 435100000.0&lt;br /&gt;
  50 05                                         update_reason = 5 (UPDATE_REASON_DEORBIT_SCHEDULED)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[SimTX API/Session status]]&lt;br /&gt;
* [[SimTX API/Stations]]&lt;br /&gt;
* [[SimTX API/Tracking and pointing]]&lt;br /&gt;
&lt;br /&gt;
{{SimTX API navbox}}&lt;br /&gt;
[[Category:SimTX API]]&lt;/div&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
</feed>