<?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%2FTracking_and_pointing</id>
	<title>SimTX API/Tracking and pointing - 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%2FTracking_and_pointing"/>
	<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Tracking_and_pointing&amp;action=history"/>
	<updated>2026-11-04T22:43:48Z</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/Tracking_and_pointing&amp;diff=2393&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/Tracking_and_pointing&amp;diff=2393&amp;oldid=prev"/>
		<updated>2026-10-24T17:14:28Z</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:14, 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-l38&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&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;   // Simulation time at which the rotator began slewing toward this target (point_antenna only; both 0 =&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;   // Simulation time at which the rotator began slewing toward this target (point_antenna only; both 0 =&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;   // not known). Servers set it in SessionStatus; with the antenna&amp;#039;s slew rate it gives the rotator position.&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;   // not known). Servers set it in SessionStatus; with the antenna&amp;#039;s slew rate it gives the rotator position.&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;   // Ignored in a client&#039;s start or AntennaPointingUpdate&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, except in a start that a SimTX gateway replays&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;   // Ignored in a client&#039;s start or AntennaPointingUpdate.&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  // when it moves a session to another server, so the moved session keeps its slew&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;   int64 since_epoch_seconds = 4;&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;   int64 since_epoch_seconds = 4;&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;   int32 since_nanos = 5;&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;   int32 since_nanos = 5;&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-l52&quot;&gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&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;== Start pointing ==&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;== Start pointing ==&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;A start can say where the antenna points at the beginning of the session with &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;, an [[SimTX API/Data types#AntennaAim|AntennaAim]] (&amp;lt;code&amp;gt;ReceiverStart.aim&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TransmitterStart.aim&amp;lt;/code&amp;gt;). &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It is meant for a &lt;/del&gt;client &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;that reconnects and wants &lt;/del&gt;the antenna &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to stay &lt;/del&gt;where the user left it&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, instead of swinging back from the stored heading&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;A start can say where the antenna points at the beginning of the session with &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;, an [[SimTX API/Data types#AntennaAim|AntennaAim]] (&amp;lt;code&amp;gt;ReceiverStart.aim&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TransmitterStart.aim&amp;lt;/code&amp;gt;). &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A reconnecting &lt;/ins&gt;client &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uses it to keep &lt;/ins&gt;the antenna where the user left it.&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;* Unset: the antenna starts at its stored heading.&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;* Unset: the antenna starts at its stored heading.&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;FIXED&amp;lt;/code&amp;gt; mount: ignored. &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount: the elevation is ignored.&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;FIXED&amp;lt;/code&amp;gt; mount: ignored. &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount: the elevation is ignored.&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-l87&quot;&gt;Line 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 86:&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;Transmitters:&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;doppler_correct&amp;lt;/code&amp;gt;, the carrier is pre-corrected for the uplink Doppler at emission time, so the signal arrives on frequency at the satellite.&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;Transmitters:&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;doppler_correct&amp;lt;/code&amp;gt;, the carrier is pre-corrected for the uplink Doppler at emission time, so the signal arrives on frequency at the satellite.&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; 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;The correction is geometric. The small ionospheric Doppler (below about 2 Hz at 70 cm) remains&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, as it does with real tracking software&lt;/del&gt;. Doppler shifts of moving stations are always simulated, whether or not a session corrects for them.&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;The correction is geometric. The small ionospheric Doppler (below about 2 Hz at 70 cm) remains. Doppler shifts of moving stations are always simulated, whether or not a session corrects for 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;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;{{SimTX API navbox}}&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;{{SimTX API navbox}}&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;[[Category:SimTX API]]&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;[[Category:SimTX API]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Tracking_and_pointing&amp;diff=2350&amp;oldid=prev</id>
		<title>Clanker: Reconcile with the frozen v25 schema</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=SimTX_API/Tracking_and_pointing&amp;diff=2350&amp;oldid=prev"/>
		<updated>2026-10-24T16:52:24Z</updated>

		<summary type="html">&lt;p&gt;Reconcile with the frozen v25 schema&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 16:52, 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-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&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;== Default pointing ==&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;== Default pointing ==&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;A steerable antenna stores a default [[SimTX API/Data types#AntennaPointing|AntennaPointing]]: a mode, an azimuth and elevation, a target station for &amp;lt;code&amp;gt;TRACK&amp;lt;/code&amp;gt; mode, and rotator slew rates. A session bound to the antenna starts with that pointing; [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports it in &amp;lt;code&amp;gt;station.antenna.pointing&amp;lt;/code&amp;gt;, and the pointing in effect in &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;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;A steerable antenna stores a default [[SimTX API/Data types#AntennaPointing|AntennaPointing]]: a mode, an azimuth and elevation, a target station for &amp;lt;code&amp;gt;TRACK&amp;lt;/code&amp;gt; mode, and rotator slew rates. A session bound to the antenna starts with that pointing&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, unless its start carries an &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;&lt;/ins&gt;; [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports it in &amp;lt;code&amp;gt;station.antenna.pointing&amp;lt;/code&amp;gt;, and the pointing in effect in &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt;.&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;{| class=&amp;quot;wikitable&amp;quot;&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;{| class=&amp;quot;wikitable&amp;quot;&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-l52&quot;&gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&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;== Start pointing ==&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;== Start pointing ==&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;A start can say where the antenna points at the beginning of the session with &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;, an [[SimTX API/Data types#AntennaAim|AntennaAim]] (&amp;lt;code&amp;gt;ReceiverStart.aim&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TransmitterStart.aim&amp;lt;/code&amp;gt;). It is meant for a client that reconnects and wants the antenna to stay where the user left it, instead of &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;returning to &lt;/del&gt;the stored heading.&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;A start can say where the antenna points at the beginning of the session with &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;, an [[SimTX API/Data types#AntennaAim|AntennaAim]] (&amp;lt;code&amp;gt;ReceiverStart.aim&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TransmitterStart.aim&amp;lt;/code&amp;gt;). It is meant for a client that reconnects and wants the antenna to stay where the user left it, instead of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;swinging back from &lt;/ins&gt;the stored heading.&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;* Unset: the antenna starts at its stored heading.&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;* Unset: the antenna starts at its stored heading.&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;FIXED&amp;lt;/code&amp;gt; mount: ignored. &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount: the elevation is ignored.&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;FIXED&amp;lt;/code&amp;gt; mount: ignored. &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount: the elevation is ignored.&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;* With &amp;lt;code&amp;gt;tracking.point_antenna&amp;lt;/code&amp;gt;: the aim is the rotator&#039;s position at the start, and the rotator slews from there towards the target &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;at its slew rate&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;* With &amp;lt;code&amp;gt;tracking.point_antenna&amp;lt;/code&amp;gt;: the aim is the rotator&#039;s position at the start, and the rotator slews from there towards the target&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/ins&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;* The values are checked like an AntennaPointingUpdate: finite numbers, elevation −90 to 90; the azimuth is normalised to 0 to 360.&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Otherwise the session binds already pointed there, without a turn&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;* The values are checked like an AntennaPointingUpdate: finite numbers, elevation −90 to 90; the azimuth is normalised to 0 to 360&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Out-of-range values refuse the start with [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;REJECTED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INVALID_REQUEST&amp;lt;/code&amp;gt;&lt;/ins&gt;.&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; 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;The &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; of [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports the pointing in effect&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. While a rotator follows a target, the server also reports in &amp;lt;code&amp;gt;tracking.since_epoch_seconds&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;since_nanos&amp;lt;/code&amp;gt; when it began slewing towards it, which together with the slew rate gives the rotator&#039;s position&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;The &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; of [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports the pointing in effect.&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;== Changing pointing on air ==&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;== Changing pointing on air ==&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-l70&quot;&gt;Line 70:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&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;== Rotators ==&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;== Rotators ==&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Rotators move &lt;/del&gt;at finite speed, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so a tracking antenna lags a fast satellite:&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The rotator of a steerable antenna turns &lt;/ins&gt;at finite speed&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The simulation uses its actual heading&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;not the commanded one.&lt;/ins&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Slew rates&lt;/del&gt;&#039;&#039;&#039; come from the antenna&#039;s pointing. 0 selects the defaults: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6 °/s in azimuth and 4 &lt;/del&gt;°/s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in elevation &lt;/del&gt;for &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AZEL&lt;/del&gt;&amp;lt;/code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, 3 &lt;/del&gt;°/s in azimuth for &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AZ&lt;/del&gt;&amp;lt;/code&amp;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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Rates&lt;/ins&gt;&#039;&#039;&#039; come from the antenna&#039;s pointing&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, each axis on its own&lt;/ins&gt;. 0 selects the defaults: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;3 &lt;/ins&gt;°/s for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AZ&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mount; 6 &lt;/ins&gt;°/s in azimuth &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and 4 °/s in elevation &lt;/ins&gt;for &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an &lt;/ins&gt;&amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AZEL&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mount&lt;/ins&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Range&lt;/del&gt;:&#039;&#039;&#039; azimuth 0 to 360° with the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;end &lt;/del&gt;stop at north&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;; elevation &lt;/del&gt;0 to 90°&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, or 0 to 180° on mounts that can flip over the zenith&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stops&lt;/ins&gt;:&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;azimuth &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stays within &lt;/ins&gt;0 to 360°&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;with the stop at north&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. A turn never crosses north, so a turn from 350° to 10° goes the long way round. Elevation is &lt;/ins&gt;0 to 90°.&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Trajectory&lt;/del&gt;:&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for each pass &lt;/del&gt;the rotator &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;starts &lt;/del&gt;from &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;its park position (&lt;/del&gt;the pointing&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s azimuth and elevation) 60 seconds before acquisition&lt;/del&gt;, or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;when tracking was switched on&lt;/del&gt;, and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;steps every 0.25 s towards &lt;/del&gt;the target&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s true direction &lt;/del&gt;within its rate limits. The azimuth &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;unwrap&lt;/del&gt;, and &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;whether &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;flip&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;are chosen for &lt;/del&gt;the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;whole pass in advance&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;so &lt;/del&gt;the rotator &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;never runs into its end stop mid-pass&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Fixed headings&lt;/ins&gt;:&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an [[SimTX API/Packets/AntennaPointingUpdate|AntennaPointingUpdate]] with &amp;lt;code&amp;gt;POINTING_MODE_FIXED&amp;lt;/code&amp;gt; turns &lt;/ins&gt;the rotator from &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wherever it is at that moment: parked, mid-turn or mid-track. [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; reports &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;commanded heading in &amp;lt;code&amp;gt;&lt;/ins&gt;pointing&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; at once; a client that draws the rotator animates the turn from the rates. Repeating the current heading does not restart the turn.&lt;/ins&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;Lag:&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;on &lt;/del&gt;a 500 km overhead pass a 6 °/s rotator falls up to 16° behind just after closest approach &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(32° at &lt;/del&gt;3 °/s&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;); a pass with a 30° maximum elevation is tracked &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;within 0.01°&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Tracking:&lt;/ins&gt;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039; a session that starts with &amp;lt;code&amp;gt;point_antenna&amp;lt;/code&amp;gt;&lt;/ins&gt;, or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;switches to &amp;lt;code&amp;gt;POINTING_MODE_TRACK&amp;lt;/code&amp;gt; or to a new target, starts slewing at that moment from where the rotator is&lt;/ins&gt;, and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;then follows &lt;/ins&gt;the target within its rate limits. The azimuth &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and elevation of a &amp;lt;code&amp;gt;TRACK&amp;lt;/code&amp;gt; request are ignored.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Slew start:&#039;&#039;&#039; while a rotator follows a target&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;tracking.since_epoch_seconds&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;since_nanos&amp;lt;/code&amp;gt; in SessionStatus &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; give the simulation time at which it began slewing towards the target. With the rates they give the rotator&#039;s position for display. Clients leave these fields unset in their own requests; servers ignore them there.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;Paths:&#039;&#039;&#039; the actual heading applies &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;every propagation path: HF skywave and groundwave, VHF and UHF terrestrial paths&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Earth-space links and the sky-noise beam. While &lt;/ins&gt;the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rotator turns&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the server re-plans the link about once a second until &lt;/ins&gt;the rotator &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;arrives&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;Lag:&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a tracking rotator lags a fast satellite. On &lt;/ins&gt;a 500 km overhead pass a 6 °/s rotator falls up to 16° behind just after closest approach&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and a &lt;/ins&gt;3 °/s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rotator up &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;32°&lt;/ins&gt;.&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; 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;The pointing error reduces the antenna gain towards the target &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;exactly &lt;/del&gt;as the antenna pattern says&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, which is what a real station experiences&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;The pointing error reduces the antenna gain towards the target as the antenna pattern says.&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;== Doppler correction ==&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;== Doppler correction ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=SimTX_API/Tracking_and_pointing&amp;diff=2280&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/Tracking_and_pointing&amp;diff=2280&amp;oldid=prev"/>
		<updated>2026-10-24T16:26:39Z</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;
Station antennas can be steerable: an antenna on an azimuth or azimuth-elevation rotator can be pointed at a fixed direction or made to follow a moving target, usually a satellite. Independently, a session can correct its frequency for the target&amp;#039;s Doppler shift. This page describes both. They need a [[SimTX API/Stations|station-bound]] session and a server that advertises the feature &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Mounts ==&lt;br /&gt;
Each antenna of a station has a mount, stored with the antenna in the account service:&lt;br /&gt;
&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;ANTENNA_MOUNT_FIXED&amp;lt;/code&amp;gt; || No rotator. The default.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;ANTENNA_MOUNT_AZ&amp;lt;/code&amp;gt; || Azimuth rotator. Elevation stays at the pointing&amp;#039;s elevation.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;lt;code&amp;gt;ANTENNA_MOUNT_AZEL&amp;lt;/code&amp;gt; || Azimuth and elevation rotator.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;FIXED&amp;lt;/code&amp;gt; antenna radiates where its type and &amp;lt;code&amp;gt;azimuth_deg&amp;lt;/code&amp;gt; put it, over the ground, as in [[Antenna System]]. Steerable antennas (&amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AZEL&amp;lt;/code&amp;gt;) are solved in free space, rotated to their current pointing, and given a ground reflection for their height. The circularly polarised types &amp;lt;code&amp;gt;CROSSED_YAGI&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;HELIX&amp;lt;/code&amp;gt; are meant for steerable ground stations.&lt;br /&gt;
&lt;br /&gt;
== Default pointing ==&lt;br /&gt;
A steerable antenna stores a default [[SimTX API/Data types#AntennaPointing|AntennaPointing]]: a mode, an azimuth and elevation, a target station for &amp;lt;code&amp;gt;TRACK&amp;lt;/code&amp;gt; mode, and rotator slew rates. A session bound to the antenna starts with that pointing; [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports it in &amp;lt;code&amp;gt;station.antenna.pointing&amp;lt;/code&amp;gt;, and the pointing in effect in &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt;.&lt;br /&gt;
&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;POINTING_MODE_FIXED&amp;lt;/code&amp;gt; || Hold the given azimuth and elevation. The default.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;lt;code&amp;gt;POINTING_MODE_TRACK&amp;lt;/code&amp;gt; || Follow a target station.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Tracking ==&lt;br /&gt;
[[SimTX API/Data types#Tracking|Tracking]] says what a session follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;protobuf&amp;quot;&amp;gt;&lt;br /&gt;
message Tracking {&lt;br /&gt;
  bytes target_station_id = 1;&lt;br /&gt;
  bool point_antenna = 2;     // drive the antenna&amp;#039;s rotator toward the target&lt;br /&gt;
  bool doppler_correct = 3;   // RX: shift tuning by the target&amp;#039;s Doppler; TX: pre-correct so it arrives on frequency&lt;br /&gt;
  // Simulation time at which the rotator began slewing toward this target (point_antenna only; both 0 =&lt;br /&gt;
  // not known). Servers set it in SessionStatus; with the antenna&amp;#039;s slew rate it gives the rotator position.&lt;br /&gt;
  // Ignored in a client&amp;#039;s start or AntennaPointingUpdate, except in a start that a SimTX gateway replays&lt;br /&gt;
  // when it moves a session to another server, so the moved session keeps its slew.&lt;br /&gt;
  int64 since_epoch_seconds = 4;&lt;br /&gt;
  int32 since_nanos = 5;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;target_station_id&amp;lt;/code&amp;gt;: the station to follow, usually a satellite from the satellite catalog.&lt;br /&gt;
* &amp;lt;code&amp;gt;point_antenna&amp;lt;/code&amp;gt;: drive the antenna&amp;#039;s rotator towards the target. Needs an &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;AZEL&amp;lt;/code&amp;gt; mount.&lt;br /&gt;
* &amp;lt;code&amp;gt;doppler_correct&amp;lt;/code&amp;gt;: correct the session&amp;#039;s frequency for the target&amp;#039;s Doppler shift.&lt;br /&gt;
&lt;br /&gt;
Set &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; in [[SimTX API/Packets/ReceiverStart|ReceiverStart]] or [[SimTX API/Packets/TransmitterStart|TransmitterStart]] to follow a target from the start.&lt;br /&gt;
&lt;br /&gt;
== Start pointing ==&lt;br /&gt;
A start can say where the antenna points at the beginning of the session with &amp;lt;code&amp;gt;aim&amp;lt;/code&amp;gt;, an [[SimTX API/Data types#AntennaAim|AntennaAim]] (&amp;lt;code&amp;gt;ReceiverStart.aim&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TransmitterStart.aim&amp;lt;/code&amp;gt;). It is meant for a client that reconnects and wants the antenna to stay where the user left it, instead of returning to the stored heading.&lt;br /&gt;
* Unset: the antenna starts at its stored heading.&lt;br /&gt;
* &amp;lt;code&amp;gt;FIXED&amp;lt;/code&amp;gt; mount: ignored. &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount: the elevation is ignored.&lt;br /&gt;
* With &amp;lt;code&amp;gt;tracking.point_antenna&amp;lt;/code&amp;gt;: the aim is the rotator&amp;#039;s position at the start, and the rotator slews from there towards the target at its slew rate.&lt;br /&gt;
* The values are checked like an AntennaPointingUpdate: finite numbers, elevation −90 to 90; the azimuth is normalised to 0 to 360.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; of [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;BOUND&amp;lt;/code&amp;gt; reports the pointing in effect. While a rotator follows a target, the server also reports in &amp;lt;code&amp;gt;tracking.since_epoch_seconds&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;since_nanos&amp;lt;/code&amp;gt; when it began slewing towards it, which together with the slew rate gives the rotator&amp;#039;s position.&lt;br /&gt;
&lt;br /&gt;
== Changing pointing on air ==&lt;br /&gt;
[[SimTX API/Packets/AntennaPointingUpdate|AntennaPointingUpdate]] changes the pointing or tracking of a running session without reconnecting:&lt;br /&gt;
* &amp;lt;code&amp;gt;mode = POINTING_MODE_FIXED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;azimuth_deg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;elevation_deg&amp;lt;/code&amp;gt; points the antenna at a fixed direction. An &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt; mount keeps its elevation.&lt;br /&gt;
* &amp;lt;code&amp;gt;mode = POINTING_MODE_TRACK&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt; follows a target.&lt;br /&gt;
&lt;br /&gt;
The server confirms with [[SimTX API/Packets/SessionStatus|SessionStatus]] &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;update_reason = UPDATE_REASON_POINTING&amp;lt;/code&amp;gt;, the request&amp;#039;s &amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt;, and the new &amp;lt;code&amp;gt;pointing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tracking&amp;lt;/code&amp;gt;. A session that is ad hoc or whose antenna has a &amp;lt;code&amp;gt;FIXED&amp;lt;/code&amp;gt; mount gets [[SimTX API/Packets/Error|Error]] &amp;lt;code&amp;gt;INVALID_REQUEST&amp;lt;/code&amp;gt; (&amp;#039;&amp;#039;Antenna pointing needs a station-bound session with a steerable mount&amp;#039;&amp;#039;) with the same &amp;lt;code&amp;gt;request_id&amp;lt;/code&amp;gt;, and continues unchanged.&lt;br /&gt;
&lt;br /&gt;
The update applies to this session only; the antenna&amp;#039;s stored default is not changed. When a tracked target disappears, for example because a satellite reentered, the server changes the tracking itself and sends &amp;lt;code&amp;gt;UPDATED&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;UPDATE_REASON_TRACKING&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Rotators ==&lt;br /&gt;
Rotators move at finite speed, so a tracking antenna lags a fast satellite:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Slew rates&amp;#039;&amp;#039;&amp;#039; come from the antenna&amp;#039;s pointing. 0 selects the defaults: 6 °/s in azimuth and 4 °/s in elevation for &amp;lt;code&amp;gt;AZEL&amp;lt;/code&amp;gt;, 3 °/s in azimuth for &amp;lt;code&amp;gt;AZ&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Range:&amp;#039;&amp;#039;&amp;#039; azimuth 0 to 360° with the end stop at north; elevation 0 to 90°, or 0 to 180° on mounts that can flip over the zenith.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trajectory:&amp;#039;&amp;#039;&amp;#039; for each pass the rotator starts from its park position (the pointing&amp;#039;s azimuth and elevation) 60 seconds before acquisition, or when tracking was switched on, and steps every 0.25 s towards the target&amp;#039;s true direction within its rate limits. The azimuth unwrap, and whether to flip, are chosen for the whole pass in advance, so the rotator never runs into its end stop mid-pass.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lag:&amp;#039;&amp;#039;&amp;#039; on a 500 km overhead pass a 6 °/s rotator falls up to 16° behind just after closest approach (32° at 3 °/s); a pass with a 30° maximum elevation is tracked to within 0.01°.&lt;br /&gt;
&lt;br /&gt;
The pointing error reduces the antenna gain towards the target exactly as the antenna pattern says, which is what a real station experiences.&lt;br /&gt;
&lt;br /&gt;
== Doppler correction ==&lt;br /&gt;
A satellite&amp;#039;s signal is shifted by up to a few kilohertz at VHF and UHF during a pass, depending on its speed towards or away from the station.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Receivers:&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;doppler_correct&amp;lt;/code&amp;gt;, the receiver&amp;#039;s tuning is shifted by the target&amp;#039;s downlink Doppler at the receiver&amp;#039;s centre frequency, so the satellite&amp;#039;s signal stays at a fixed offset in the IQ passband.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transmitters:&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;doppler_correct&amp;lt;/code&amp;gt;, the carrier is pre-corrected for the uplink Doppler at emission time, so the signal arrives on frequency at the satellite.&lt;br /&gt;
&lt;br /&gt;
The correction is geometric. The small ionospheric Doppler (below about 2 Hz at 70 cm) remains, as it does with real tracking software. Doppler shifts of moving stations are always simulated, whether or not a session corrects for them.&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>