This commit is contained in:
2025-07-05 17:25:58 -04:00
parent 84c8aabaca
commit 5c535c4968
10 changed files with 54 additions and 61 deletions

View File

@@ -25,7 +25,7 @@ When used with communication protocols like ESP-NOW, this struct is **encoded**
**decoded** on the receiving end to control hardware. **decoded** on the receiving end to control hardware.
Struct Walkthrough Struct Walkthrough
^^^^^^^^^^^^^^^^^^ ------------------
*x_axis* and *y_axis* fields capture analog input from a joystick, determining direction and speed. *x_axis* and *y_axis* fields capture analog input from a joystick, determining direction and speed.
*nav_bttn* represents a joystick push-button. *nav_bttn* represents a joystick push-button.
@@ -36,7 +36,7 @@ Struct Walkthrough
This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots. This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.
Why Use __attribute((packed))? Why Use __attribute((packed))?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ESP-NOW uses fixed-size data packets (up to 250 bytes). The *__attribute__((packed))* removes compiler-added padding for precise byte alignment. ESP-NOW uses fixed-size data packets (up to 250 bytes). The *__attribute__((packed))* removes compiler-added padding for precise byte alignment.

View File

@@ -61,9 +61,8 @@ Its intended to be sent from a transmitting device (like a remote control or
<p><em>led</em> allows the transmitter to toggle an onboard LED and is used for status indication (e.g. pairing, battery warning, etc).</p> <p><em>led</em> allows the transmitter to toggle an onboard LED and is used for status indication (e.g. pairing, battery warning, etc).</p>
<p><em>motor1_rpm_pwm</em> to <em>motor4_rpm_pwm</em> provide individual PWM signals to four DC motors. <p><em>motor1_rpm_pwm</em> to <em>motor4_rpm_pwm</em> provide individual PWM signals to four DC motors.
This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.</p> This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.</p>
</section>
<section id="why-use-attribute-packed"> <section id="why-use-attribute-packed">
<h2>Why Use __attribute((packed))?<a class="headerlink" href="#why-use-attribute-packed" title="Link to this heading"></a></h2> <h3>Why Use __attribute((packed))?<a class="headerlink" href="#why-use-attribute-packed" title="Link to this heading"></a></h3>
<p>ESP-NOW uses fixed-size data packets (up to 250 bytes). The <em>__attribute__((packed))</em> removes compiler-added padding for precise byte alignment.</p> <p>ESP-NOW uses fixed-size data packets (up to 250 bytes). The <em>__attribute__((packed))</em> removes compiler-added padding for precise byte alignment.</p>
<p>As <em>packed</em> attribute tells the compiler not to add any padding between fields in memory, this makes the struct:</p> <p>As <em>packed</em> attribute tells the compiler not to add any padding between fields in memory, this makes the struct:</p>
<blockquote> <blockquote>
@@ -75,6 +74,7 @@ This enables fine-grained speed control, supports differential drive configurati
</div></blockquote> </div></blockquote>
<p>This ensures the receiver interprets the exact byte layout you expect, minimizing bandwidth and maximizing compatibility across platforms.</p> <p>This ensures the receiver interprets the exact byte layout you expect, minimizing bandwidth and maximizing compatibility across platforms.</p>
</section> </section>
</section>
</section> </section>
@@ -108,7 +108,6 @@ This enables fine-grained speed control, supports differential drive configurati
<li class="toctree-l1"><a class="reference internal" href="overview.html">HOW DOES IT WORK?</a></li> <li class="toctree-l1"><a class="reference internal" href="overview.html">HOW DOES IT WORK?</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">DATA STRUCT</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">DATA STRUCT</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#struct-walkthrough">Struct Walkthrough</a></li> <li class="toctree-l2"><a class="reference internal" href="#struct-walkthrough">Struct Walkthrough</a></li>
<li class="toctree-l2"><a class="reference internal" href="#why-use-attribute-packed">Why Use __attribute((packed))?</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="transmitter.html">TRANSMITTER</a></li> <li class="toctree-l1"><a class="reference internal" href="transmitter.html">TRANSMITTER</a></li>

View File

@@ -46,7 +46,6 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="data.html">DATA STRUCT</a><ul> <li class="toctree-l1"><a class="reference internal" href="data.html">DATA STRUCT</a><ul>
<li class="toctree-l2"><a class="reference internal" href="data.html#struct-walkthrough">Struct Walkthrough</a></li> <li class="toctree-l2"><a class="reference internal" href="data.html#struct-walkthrough">Struct Walkthrough</a></li>
<li class="toctree-l2"><a class="reference internal" href="data.html#why-use-attribute-packed">Why Use __attribute((packed))?</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="transmitter.html">TRANSMITTER</a><ul> <li class="toctree-l1"><a class="reference internal" href="transmitter.html">TRANSMITTER</a><ul>

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. # This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 73c850fc9da2302c95bfd56436e2cb64 config: c7af3d195780d92aa8671f9064b2c06a
tags: 62a1e7829a13fc7881b6498c52484ec0 tags: 62a1e7829a13fc7881b6498c52484ec0

View File

@@ -97,11 +97,6 @@
Struct Walkthrough Struct Walkthrough
</a> </a>
</li> </li>
<li class="toctree-l2">
<a class="reference internal" href="#why-use-attribute-packed">
Why Use __attribute((packed))?
</a>
</li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"> <li class="toctree-l1">
@@ -693,14 +688,13 @@ It&rsquo;s intended to be sent from a transmitting device (like a remote control
provide individual PWM signals to four DC motors. provide individual PWM signals to four DC motors.
This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots. This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.
</p> </p>
</section>
<section id="why-use-attribute-packed"> <section id="why-use-attribute-packed">
<h3> <h4>
Why Use __attribute((packed))? Why Use __attribute((packed))?
<a class="headerlink" href="#why-use-attribute-packed" title="Link to this heading"> <a class="headerlink" href="#why-use-attribute-packed" title="Link to this heading">
&para; &para;
</a> </a>
</h3> </h4>
<p> <p>
ESP-NOW uses fixed-size data packets (up to 250 bytes). The ESP-NOW uses fixed-size data packets (up to 250 bytes). The
<em> <em>
@@ -741,6 +735,7 @@ This enables fine-grained speed control, supports differential drive configurati
</p> </p>
</section> </section>
</section> </section>
</section>
<span id="document-transmitter"> <span id="document-transmitter">
</span> </span>
<section id="transmitter"> <section id="transmitter">

View File

@@ -25,7 +25,7 @@ When used with communication protocols like ESP-NOW, this struct is **encoded**
**decoded** on the receiving end to control hardware. **decoded** on the receiving end to control hardware.
Struct Walkthrough Struct Walkthrough
^^^^^^^^^^^^^^^^^^ ------------------
*x_axis* and *y_axis* fields capture analog input from a joystick, determining direction and speed. *x_axis* and *y_axis* fields capture analog input from a joystick, determining direction and speed.
*nav_bttn* represents a joystick push-button. *nav_bttn* represents a joystick push-button.
@@ -36,7 +36,7 @@ Struct Walkthrough
This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots. This enables fine-grained speed control, supports differential drive configurations, and even allows for maneuvering in multi-directional platforms like omni-wheel robots.
Why Use __attribute((packed))? Why Use __attribute((packed))?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ESP-NOW uses fixed-size data packets (up to 250 bytes). The *__attribute__((packed))* removes compiler-added padding for precise byte alignment. ESP-NOW uses fixed-size data packets (up to 250 bytes). The *__attribute__((packed))* removes compiler-added padding for precise byte alignment.