This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/nuttx-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 6ce00d8f08 Publishing web: 31ab6eb45e7903daced4cf8f07660e86e8a79bb7
docs: f47ff76589811abfc8534ca3303b7b50f99a2001
6ce00d8f08 is described below
commit 6ce00d8f086f5fa8f9e9b5045f35a07dc36a8e9b
Author: Tomasz 'CeDeROM' CEDRO <[email protected]>
AuthorDate: Wed Jan 14 00:37:38 2026 +0000
Publishing web: 31ab6eb45e7903daced4cf8f07660e86e8a79bb7 docs:
f47ff76589811abfc8534ca3303b7b50f99a2001
---
content/docs/10.0.0/index.html | 2 +-
content/docs/10.0.1/index.html | 2 +-
content/docs/10.1.0/index.html | 2 +-
content/docs/10.2.0/index.html | 2 +-
content/docs/10.3.0/index.html | 2 +-
content/docs/11.0.0/index.html | 2 +-
content/docs/12.0.0/index.html | 2 +-
content/docs/12.0.0/searchindex.js | 2 +-
content/docs/12.1.0/index.html | 2 +-
content/docs/12.1.0/searchindex.js | 2 +-
content/docs/12.10.0/index.html | 2 +-
content/docs/12.10.0/searchindex.js | 2 +-
content/docs/12.11.0/guides/fully_linked_elf.html | 2 +-
.../docs/12.11.0/guides/partially_linked_elf.html | 2 +-
content/docs/12.11.0/index.html | 2 +-
content/docs/12.11.0/searchindex.js | 2 +-
content/docs/12.12.0/guides/fully_linked_elf.html | 2 +-
.../docs/12.12.0/guides/partially_linked_elf.html | 2 +-
content/docs/12.12.0/index.html | 2 +-
content/docs/12.12.0/searchindex.js | 2 +-
content/docs/12.2.0/index.html | 2 +-
content/docs/12.2.0/searchindex.js | 2 +-
content/docs/12.2.1/index.html | 2 +-
content/docs/12.2.1/searchindex.js | 2 +-
content/docs/12.3.0/index.html | 2 +-
content/docs/12.3.0/searchindex.js | 2 +-
content/docs/12.4.0/index.html | 2 +-
content/docs/12.4.0/searchindex.js | 2 +-
content/docs/12.5.0/index.html | 2 +-
content/docs/12.5.0/searchindex.js | 2 +-
content/docs/12.5.1/index.html | 2 +-
content/docs/12.5.1/searchindex.js | 2 +-
content/docs/12.6.0/index.html | 2 +-
content/docs/12.6.0/searchindex.js | 2 +-
content/docs/12.7.0/index.html | 2 +-
content/docs/12.7.0/searchindex.js | 2 +-
content/docs/12.8.0/index.html | 2 +-
content/docs/12.8.0/searchindex.js | 2 +-
content/docs/12.9.0/index.html | 2 +-
content/docs/12.9.0/searchindex.js | 2 +-
.../components/drivers/special/ioexpander.rst.txt | 256 ++++++++++++++++--
.../latest/_sources/reference/os/nuttx.rst.txt | 10 -
.../_sources/reference/os/time_clock.rst.txt | 59 +----
.../latest/components/drivers/special/index.html | 15 +-
.../components/drivers/special/ioexpander.html | 292 +++++++++++++++++++--
content/docs/latest/genindex.html | 34 ++-
content/docs/latest/guides/fully_linked_elf.html | 2 +-
.../docs/latest/guides/partially_linked_elf.html | 2 +-
content/docs/latest/index.html | 2 +-
content/docs/latest/objects.inv | Bin 180350 -> 180617 bytes
content/docs/latest/reference/os/nuttx.html | 11 -
content/docs/latest/reference/os/time_clock.html | 79 +-----
content/docs/latest/searchindex.js | 2 +-
content/feed.xml | 4 +-
54 files changed, 617 insertions(+), 231 deletions(-)
diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index 7a97cd8144..13b82ff934 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -207,7 +207,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller
environments, the primary governing standards in NuttX are Posix and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:16</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index ea72a28397..b31241f1f4 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -249,7 +249,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller
environments, the primary governing standards in NuttX are Posix and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:16</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index e091065b8b..6a6e4bfe92 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -249,7 +249,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html
index 0e9b7cd142..49b8928362 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:15</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html
index cf2183fb2b..49b8928362 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/11.0.0/index.html b/content/docs/11.0.0/index.html
index cf2183fb2b..49b8928362 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -250,7 +250,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<div class="section" id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline">¶</a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:17</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.0.0/index.html b/content/docs/12.0.0/index.html
index cf0cf7016f..24c6f660d5 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -175,7 +175,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.0.0/searchindex.js
b/content/docs/12.0.0/searchindex.js
index f684766cb3..63259044ad 100644
--- a/content/docs/12.0.0/searchindex.js
+++ b/content/docs/12.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
[...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
[...]
\ No newline at end of file
diff --git a/content/docs/12.1.0/index.html b/content/docs/12.1.0/index.html
index 99ff2077ef..5dea88e017 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -175,7 +175,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this headline"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:16</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.1.0/searchindex.js
b/content/docs/12.1.0/searchindex.js
index f311de12ad..37f58c74e6 100644
--- a/content/docs/12.1.0/searchindex.js
+++ b/content/docs/12.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
[...]
\ No newline at end of file
+Search.setIndex({docnames:["applications/index","applications/nsh/builtin","applications/nsh/commands","applications/nsh/config","applications/nsh/customizing","applications/nsh/index","applications/nsh/installation","applications/nsh/login","applications/nsh/nsh","components/binfmt","components/drivers/block/index","components/drivers/character/analog","components/drivers/character/can","components/drivers/character/foc","components/drivers/character/index","components/drivers/character
[...]
\ No newline at end of file
diff --git a/content/docs/12.10.0/index.html b/content/docs/12.10.0/index.html
index 94f9f94475..af555d1887 100644
--- a/content/docs/12.10.0/index.html
+++ b/content/docs/12.10.0/index.html
@@ -187,7 +187,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:28</p>
+<p>Last Updated: 14 January 26 at 00:29</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.10.0/searchindex.js
b/content/docs/12.10.0/searchindex.js
index e67d23b18f..3796bcd938 100644
--- a/content/docs/12.10.0/searchindex.js
+++ b/content/docs/12.10.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3",
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example",
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52",
"_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3",
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example",
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-nrf52",
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.11.0/guides/fully_linked_elf.html
b/content/docs/12.11.0/guides/fully_linked_elf.html
index bb7e10d003..d1d3eceb5f 100644
--- a/content/docs/12.11.0/guides/fully_linked_elf.html
+++ b/content/docs/12.11.0/guides/fully_linked_elf.html
@@ -479,7 +479,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="84b692f0-d89c-499e-a554-b29d209e6206"
name="84b692f0-d89c-499e-a554-b29d209e6206" type="checkbox"><label
class="sphinx_collapse__label" for="84b692f0-d89c-499e-a554-b29d209e6206"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="430128ef-c77c-4245-ae57-0cffa7a71c34"
name="430128ef-c77c-4245-ae57-0cffa7a71c34" type="checkbox"><label
class="sphinx_collapse__label" for="430128ef-c77c-4245-ae57-0cffa7a71c34"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/12.11.0/guides/partially_linked_elf.html
b/content/docs/12.11.0/guides/partially_linked_elf.html
index 09a49b91d5..9de04280b2 100644
--- a/content/docs/12.11.0/guides/partially_linked_elf.html
+++ b/content/docs/12.11.0/guides/partially_linked_elf.html
@@ -505,7 +505,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="8ecb91e8-4de2-4e38-8877-640076a4b051"
name="8ecb91e8-4de2-4e38-8877-640076a4b051" type="checkbox"><label
class="sphinx_collapse__label" for="8ecb91e8-4de2-4e38-8877-640076a4b051"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="ab4af277-11d5-4806-801a-0c2bb61e0c5a"
name="ab4af277-11d5-4806-801a-0c2bb61e0c5a" type="checkbox"><label
class="sphinx_collapse__label" for="ab4af277-11d5-4806-801a-0c2bb61e0c5a"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/12.11.0/index.html b/content/docs/12.11.0/index.html
index d23bd03dc8..6bc69b2d52 100644
--- a/content/docs/12.11.0/index.html
+++ b/content/docs/12.11.0/index.html
@@ -189,7 +189,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:29</p>
+<p>Last Updated: 14 January 26 at 00:31</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.11.0/searchindex.js
b/content/docs/12.11.0/searchindex.js
index 7beff360b5..621c4aa4df 100644
--- a/content/docs/12.11.0/searchindex.js
+++ b/content/docs/12.11.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3",
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example",
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-imx95",
"_tags/ [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at90usb", "_tags/chip-atmega", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3",
"_tags/chip-esp32wroom32", "_tags/chip-esp32wrover32", "_tags/chip-example",
"_tags/chip-fpga", "_tags/chip-imx8", "_tags/chip-imx93", "_tags/chip-imx95",
"_tags/ [...]
\ No newline at end of file
diff --git a/content/docs/12.12.0/guides/fully_linked_elf.html
b/content/docs/12.12.0/guides/fully_linked_elf.html
index fa70ba27a2..c9f0c4d4a6 100644
--- a/content/docs/12.12.0/guides/fully_linked_elf.html
+++ b/content/docs/12.12.0/guides/fully_linked_elf.html
@@ -479,7 +479,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="d2c559ea-6999-4e3a-8161-892ddcc96f10"
name="d2c559ea-6999-4e3a-8161-892ddcc96f10" type="checkbox"><label
class="sphinx_collapse__label" for="d2c559ea-6999-4e3a-8161-892ddcc96f10"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="0c832845-b6cc-4eaa-8454-9c72f88f7927"
name="0c832845-b6cc-4eaa-8454-9c72f88f7927" type="checkbox"><label
class="sphinx_collapse__label" for="0c832845-b6cc-4eaa-8454-9c72f88f7927"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/12.12.0/guides/partially_linked_elf.html
b/content/docs/12.12.0/guides/partially_linked_elf.html
index ec53aac801..b9d6084d4c 100644
--- a/content/docs/12.12.0/guides/partially_linked_elf.html
+++ b/content/docs/12.12.0/guides/partially_linked_elf.html
@@ -505,7 +505,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="8b36f5cb-bab8-40c1-8aaa-3e2122051424"
name="8b36f5cb-bab8-40c1-8aaa-3e2122051424" type="checkbox"><label
class="sphinx_collapse__label" for="8b36f5cb-bab8-40c1-8aaa-3e2122051424"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d"
name="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d" type="checkbox"><label
class="sphinx_collapse__label" for="b3cf0aa7-b080-42e6-a1f7-c1df1962ea0d"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/12.12.0/index.html b/content/docs/12.12.0/index.html
index 2f44fee6a4..48f4b9c53b 100644
--- a/content/docs/12.12.0/index.html
+++ b/content/docs/12.12.0/index.html
@@ -189,7 +189,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:31</p>
+<p>Last Updated: 14 January 26 at 00:32</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.12.0/searchindex.js
b/content/docs/12.12.0/searchindex.js
index ead85919b0..fb7840f4cb 100644
--- a/content/docs/12.12.0/searchindex.js
+++ b/content/docs/12.12.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32a1s",
"_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/chip-esp32s3", "_tags/ch
[...]
\ No newline at end of file
diff --git a/content/docs/12.2.0/index.html b/content/docs/12.2.0/index.html
index 02a676bb1c..4925e11c67 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.2.0/searchindex.js
b/content/docs/12.2.0/searchindex.js
index 0a18797010..61c5e54264 100644
--- a/content/docs/12.2.0/searchindex.js
+++ b/content/docs/12.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.2.1/index.html b/content/docs/12.2.1/index.html
index 02a676bb1c..4925e11c67 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:18</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.2.1/searchindex.js
b/content/docs/12.2.1/searchindex.js
index 7328310bdb..1283e56ec7 100644
--- a/content/docs/12.2.1/searchindex.js
+++ b/content/docs/12.2.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.3.0/index.html b/content/docs/12.3.0/index.html
index 6b74862c80..8c0b7adc20 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -176,7 +176,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:17</p>
+<p>Last Updated: 14 January 26 at 00:19</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.3.0/searchindex.js
b/content/docs/12.3.0/searchindex.js
index 0262a10625..6eebe53cb9 100644
--- a/content/docs/12.3.0/searchindex.js
+++ b/content/docs/12.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.4.0/index.html b/content/docs/12.4.0/index.html
index aac1a113bf..b7688ca343 100644
--- a/content/docs/12.4.0/index.html
+++ b/content/docs/12.4.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:18</p>
+<p>Last Updated: 14 January 26 at 00:19</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.4.0/searchindex.js
b/content/docs/12.4.0/searchindex.js
index 1190d6461f..3a5f2fbd75 100644
--- a/content/docs/12.4.0/searchindex.js
+++ b/content/docs/12.4.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.0/index.html b/content/docs/12.5.0/index.html
index 19e7c3b425..5861db39ac 100644
--- a/content/docs/12.5.0/index.html
+++ b/content/docs/12.5.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:19</p>
+<p>Last Updated: 14 January 26 at 00:20</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.5.0/searchindex.js
b/content/docs/12.5.0/searchindex.js
index 19229eacb8..d5d0819c63 100644
--- a/content/docs/12.5.0/searchindex.js
+++ b/content/docs/12.5.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.1/index.html b/content/docs/12.5.1/index.html
index 19934ec779..d1788a5a6d 100644
--- a/content/docs/12.5.1/index.html
+++ b/content/docs/12.5.1/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:20</p>
+<p>Last Updated: 14 January 26 at 00:21</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.5.1/searchindex.js
b/content/docs/12.5.1/searchindex.js
index 76bfd47c34..4d01649220 100644
--- a/content/docs/12.5.1/searchindex.js
+++ b/content/docs/12.5.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.6.0/index.html b/content/docs/12.6.0/index.html
index d3cc5a6f49..f1dbec579f 100644
--- a/content/docs/12.6.0/index.html
+++ b/content/docs/12.6.0/index.html
@@ -184,7 +184,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:22</p>
+<p>Last Updated: 14 January 26 at 00:23</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.6.0/searchindex.js
b/content/docs/12.6.0/searchindex.js
index 3547e9184b..c3236628ce 100644
--- a/content/docs/12.6.0/searchindex.js
+++ b/content/docs/12.6.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.7.0/index.html b/content/docs/12.7.0/index.html
index 8ad951653f..54788cb3fd 100644
--- a/content/docs/12.7.0/index.html
+++ b/content/docs/12.7.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:23</p>
+<p>Last Updated: 14 January 26 at 00:24</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.7.0/searchindex.js
b/content/docs/12.7.0/searchindex.js
index a417ac57f7..f0a03f1873 100644
--- a/content/docs/12.7.0/searchindex.js
+++ b/content/docs/12.7.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.8.0/index.html b/content/docs/12.8.0/index.html
index 6d0a33e62a..8910e6e3e8 100644
--- a/content/docs/12.8.0/index.html
+++ b/content/docs/12.8.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:24</p>
+<p>Last Updated: 14 January 26 at 00:26</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.8.0/searchindex.js
b/content/docs/12.8.0/searchindex.js
index d09b356387..6106d6fecb 100644
--- a/content/docs/12.8.0/searchindex.js
+++ b/content/docs/12.8.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
diff --git a/content/docs/12.9.0/index.html b/content/docs/12.9.0/index.html
index 2aeb67829a..647a1bd044 100644
--- a/content/docs/12.9.0/index.html
+++ b/content/docs/12.9.0/index.html
@@ -183,7 +183,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:26</p>
+<p>Last Updated: 14 January 26 at 00:27</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.9.0/searchindex.js
b/content/docs/12.9.0/searchindex.js
index b36566485f..8021f01315 100644
--- a/content/docs/12.9.0/searchindex.js
+++ b/content/docs/12.9.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/cyclictest/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/cyclictest/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/b [...]
\ No newline at end of file
diff --git
a/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
b/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
index 5a2f5134dd..f52f019df4 100644
--- a/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
+++ b/content/docs/latest/_sources/components/drivers/special/ioexpander.rst.txt
@@ -2,29 +2,37 @@
IO Expander Device Drivers
==========================
-- ``include/nuttx/ioexpander/ioexpander.h`` and
``include/nuttx/ioexpander/gpio.h``.
- All structures and APIs needed to work with ioexpander drivers are provided
in
- this header file.
+The IO Expander subsystem is defined in the following headers:
-- ``struct ioexpander_ops_s``. Each ioexpand device driver must implement
- an instance of ``struct ioexpander_ops_s``. That structure defines a
- call table with the methods, and we also provide macros to help access
methods.
+- ``include/nuttx/ioexpander/ioexpander.h`` — defines the public IO expander
+ interface: macros, types, and helper access macros used by drivers and
+ consumers.
+- ``include/nuttx/ioexpander/gpio.h`` — provides the "gpio lower half"
+ helper that allows registering an IO expander pin as a standard GPIO
+ character device (see ``gpio_lower_half`` and ``gpio_lower_half_byname``).
-- we also provide method ``gpio_lower_half`` to make ioexpander compatible
with normal gpio.
+Each IO expander driver must implement an instance of ``struct
+ioexpander_ops_s``. That structure defines the lower-half call table and
+the operations a driver must provide; the public header also includes
+helper macros that dispatch to the lower-half operations table.
-- **Binding ioexpander Drivers**. ioexpander drivers are not normally directly
- accessed by user code, we should always get lower level drivers, for
example I2C,
- and map extended gpio feature same asa normal gpio. See for example,
- ``int nrf52_sx1509_initialize(void)``
- in ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c``. In general, the binding
- sequence is:
+The helper ``gpio_lower_half`` can be used to register individual expander
+pins as standard GPIO devices so that upper-half GPIO consumers can access
+expander pins through the common GPIO character driver.
- #. Get an instance of ``struct i2c_master_s`` from the
- hardware-specific I2C device driver, and
- #. Provide that instance and configurations to the ioexpander
initialization method
- to get the ``struct ioexpander_dev_s`` ioe device instance.
- #. Then use ioe device instance to do ioexpander operations, or use
``gpio_lower_half``
- to make ioexpand compatible with normal gpio.
+**Binding IO expander drivers**
+
+IO expander drivers are usually bound by board-specific code rather than
+accessed directly from application code. For I2C- or SPI-connected
+expanders the typical sequence is:
+
+#. Obtain the bus instance (for example, a ``struct i2c_master_s *``) from
+ the hardware-specific bus driver.
+#. Call the expander driver's initialization routine with the bus instance
+ and device-specific configuration; the init routine returns a
+ ``struct ioexpander_dev_s *`` instance.
+#. Use the returned ``ioe`` instance directly, or register individual
+ expander pins with the upper-half GPIO driver via ``gpio_lower_half``.
- **Examples**: ``drivers/ioexpander/pca9555.c``,
@@ -33,3 +41,213 @@ IO Expander Device Drivers
``drivers/ioexpander/ioe_rpmsg.c``,
``boards/sim/sim/sim/src/sim_ioexpander.c``,
``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` etc.
+
+Further details
+===============
+
+Header files
+------------
+
+The relevant header files are:
+
+- ``include/nuttx/ioexpander/ioexpander.h`` — defines macros, types and access
+ macros used to interact with IO expanders.
+- ``include/nuttx/ioexpander/gpio.h`` — provides the "gpio lower half" helper
+ that allows registering an IO expander pin as a standard GPIO device.
+
+Overview of key macros and options
+----------------------------------
+
+The following is a concise reference of the important macros defined in the
+header. These are the options you will typically use through
``IOEXP_SETOPTION``
+and the various access macros. The primary preprocessor definitions are
+listed below (C syntax):
+
+.. code-block:: c
+
+ /* Direction definitions */
+ #define IOEXPANDER_DIRECTION_IN 0 /* float */
+ #define IOEXPANDER_DIRECTION_IN_PULLUP 1
+ #define IOEXPANDER_DIRECTION_IN_PULLDOWN 2
+ #define IOEXPANDER_DIRECTION_OUT 3 /* push-pull */
+ #define IOEXPANDER_DIRECTION_OUT_OPENDRAIN 4
+ #define IOEXPANDER_DIRECTION_OUT_LED 5 /* LED output */
+
+ /* Pinset mask helpers */
+ #define IOEXPANDER_PINMASK (((ioe_pinset_t)1 << CONFIG_IOEXPANDER_NPINS) -
1)
+ #define PINSET_ALL (~((ioe_pinset_t)0))
+
+ /* Common option values (used with IOEXP_SETOPTION) */
+ /* Invert (active level) */
+ #define IOEXPANDER_OPTION_INVERT 1
+ #define IOEXPANDER_VAL_NORMAL 0 /* normal polarity */
+ #define IOEXPANDER_VAL_INVERT 1 /* inverted polarity */
+
+ /* Interrupt configuration (level/edge and high/low/rising/falling/both) */
+ #define IOEXPANDER_OPTION_INTCFG 2
+ #define IOEXPANDER_VAL_DISABLE 0 /* 0000 disable interrupts */
+ #define IOEXPANDER_VAL_LEVEL 1 /* xx01: level triggered */
+ #define IOEXPANDER_VAL_EDGE 2 /* xx10: edge triggered */
+ #define IOEXPANDER_VAL_HIGH 5 /* 0101: high level */
+ #define IOEXPANDER_VAL_LOW 9 /* 1001: low level */
+ #define IOEXPANDER_VAL_RISING 6 /* 0110: rising edge */
+ #define IOEXPANDER_VAL_FALLING 10 /* 1010: falling edge */
+ #define IOEXPANDER_VAL_BOTH 14 /* 1110: both edges */
+
+ /* LED configuration */
+ #define IOEXPANDER_OPTION_LEDCFG 3 /* assign an LED number to a pin */
+
+ /* Non-generic (driver-specific) option */
+ #define IOEXPANDER_OPTION_NONGENERIC 4 /* pass driver-specific struct */
+
+ /* Wakeup configuration (configure pin as SoC wake-up source) */
+ #define IOEXPANDER_OPTION_WAKEUPCFG 5
+ #define IOEXPANDER_WAKEUP_DISABLE 0
+ #define IOEXPANDER_WAKEUP_ENABLE 1
+
+ /* Debounce and interrupt mask (recent additions) */
+ #define IOEXPANDER_OPTION_SETDEBOUNCE 6 /* configure debounce */
+ #define IOEXPANDER_DEBOUNCE_DISABLE 0
+ #define IOEXPANDER_DEBOUNCE_ENABLE 1
+
+ #define IOEXPANDER_OPTION_SETMASK 7 /* control interrupt masking */
+ #define IOEXPANDER_MASK_DISABLE 0 /* unmask (enable) interrupts */
+ #define IOEXPANDER_MASK_ENABLE 1 /* mask (suppress) interrupts */
+
+Access macros (API)
+-------------------
+
+The header exposes a set of helper macros that dispatch to the underlying
+driver operations table (``struct ioexpander_ops_s``):
+
+.. c:macro:: IOEXP_SETDIRECTION(dev, pin, dir)
+
+ Set a pin direction (input, output, open-drain, LED, pull-up/down).
+ Returns 0 on success or a negative errno on failure.
+
+.. c:macro:: IOEXP_SETOPTION(dev, pin, opt, val)
+
+ Generic option setting interface used to configure the options listed
+ above. Note that ``val`` is a ``void *``; drivers may accept an integer
+ casted to a pointer or a pointer to a driver-specific structure.
+
+ Examples::
+
+ /* Invert pin polarity */
+ IOEXP_SETOPTION(dev, 3, IOEXPANDER_OPTION_INVERT,
+ (FAR void *)IOEXPANDER_VAL_INVERT);
+
+ /* Enable debounce on pin 2 */
+ IOEXP_SETOPTION(dev, 2, IOEXPANDER_OPTION_SETDEBOUNCE,
+ (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+ /* Mask interrupts for pin 5 */
+ IOEXP_SETOPTION(dev, 5, IOEXPANDER_OPTION_SETMASK,
+ (FAR void *)IOEXPANDER_MASK_ENABLE);
+
+.. c:macro:: IOEXP_WRITEPIN(dev, pin, val)
+
+ Set the pin level. Returns 0 on success or a negative errno on error.
+
+.. c:macro:: IOEXP_READPIN(dev, pin, valptr)
+
+ Read the actual physical pin level. The value is returned via ``valptr``.
+
+.. c:macro:: IOEXP_READBUF(dev, pin, valptr)
+
+ Read the buffered/register value cached by the expander.
+
+ - ``IOEXP_WRITEPIN`` sets the pin level (TRUE typically means high).
+ Drivers handle polarity inversion if configured.
+ - ``IOEXP_READPIN`` reads the actual physical pin level.
+ - ``IOEXP_READBUF`` reads the buffered/register value cached by the
+ expander.
+
+Multi-pin operations
+--------------------
+
+When ``CONFIG_IOEXPANDER_MULTIPIN`` is enabled, batch operations are
+available that may be more efficient than repeated single-pin calls:
+
+- ``IOEXP_MULTIWRITEPIN(dev, pins, vals, count)``
+- ``IOEXP_MULTIREADPIN(dev, pins, vals, count)``
+- ``IOEXP_MULTIREADBUF(dev, pins, vals, count)``
+
+Interrupts and callbacks
+------------------------
+
+If ``CONFIG_IOEXPANDER_INT_ENABLE`` is enabled the header defines the
+callback type and attach/detach helper macros. The callback signature
+is::
+
+ typedef CODE int (*ioe_callback_t)(FAR struct ioexpander_dev_s *dev,
+ ioe_pinset_t pinset,
FAR void *arg);
+
+The callback is invoked when events occur for the monitored pinset. The
+attach/detach helpers are provided as macros that dispatch to the lower-half
+driver when ``CONFIG_IOEXPANDER_INT_ENABLE`` is enabled:
+
+.. c:macro:: IOEP_ATTACH(dev, pinset, callback, arg)
+
+ Attach and enable a pin interrupt callback. Returns a non-NULL opaque
+ handle on success. ``pinset`` selects which pin(s) will generate the
+ callback; ``callback`` is a function of type ``ioe_callback_t`` and
+ ``arg`` is passed through to the callback.
+
+.. c:macro:: IOEP_DETACH(dev, handle)
+
+ Detach and disable a previously attached callback referenced by ``handle``.
+
+Note: when ``CONFIG_IOEXPANDER_NPINS`` > 64, ``ioe_pinset_t`` represents a
+single interrupt pin number rather than a bitmask.
+
+Driver interface (lower-half)
+-----------------------------
+
+Each IO expander driver must implement the operations table
+``struct ioexpander_ops_s``. At minimum the driver should provide:
+
+- ``ioe_direction``
+- ``ioe_option``
+- ``ioe_writepin``
+- ``ioe_readpin``
+- ``ioe_readbuf``
+
+Optional multi-pin and interrupt attach/detach methods should be provided
+when the corresponding configuration options are enabled.
+
+Binding to the upper layer (gpio_lower_half)
+--------------------------------------------
+
+Applications normally do not access IO expander drivers directly. Typical
+binding steps are:
+
+1. Obtain the bus instance (for example, ``struct i2c_master_s *``) from
+ the hardware-specific bus driver.
+2. Call the expander driver's initialization routine with the bus instance
+ and device configuration to obtain a ``struct ioexpander_dev_s *``.
+3. Use the returned ``ioe`` instance directly, or register individual
+ expander pins as standard GPIO devices via ``gpio_lower_half`` or
+ ``gpio_lower_half_byname``.
+
+Example (pseudocode)::
+
+ /* Get the I2C bus */
+ struct i2c_master_s *i2c = up_i2cinitialize(0);
+
+ /* Initialize the expander (driver-specific init) */
+ struct ioexpander_dev_s *ioe = pca9555_initialize(i2c, CONFIG_PCA9555_ADDR);
+
+ /* Configure pin 0 as input with pull-up and enable debounce */
+ IOEXP_SETDIRECTION(ioe, 0, IOEXPANDER_DIRECTION_IN_PULLUP);
+ IOEXP_SETOPTION(ioe, 0, IOEXPANDER_OPTION_SETDEBOUNCE,
+ (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+Examples and references
+-----------------------
+
+See the following drivers and board examples for concrete usage:
+
+- ``drivers/ioexpander/pca9555.c`` — I2C IO expander implementation.
+- ``drivers/ioexpander/ioe_rpmsg.c`` — RPMSG-based IO expander.
+- ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` — binding example.
diff --git a/content/docs/latest/_sources/reference/os/nuttx.rst.txt
b/content/docs/latest/_sources/reference/os/nuttx.rst.txt
index 9e38497342..04c8b60643 100644
--- a/content/docs/latest/_sources/reference/os/nuttx.rst.txt
+++ b/content/docs/latest/_sources/reference/os/nuttx.rst.txt
@@ -22,16 +22,6 @@ OS List Management APIs
periodically -- the calling interval must be
``CONFIG_USEC_PER_TICK``.
-.. c:function:: void nxsched_tick_expiration(void)
-
- Description: if ``CONFIG_SCHED_TICKLESS`` is defined, then this
- function is provided by the RTOS base code and called from
- platform-specific code when the interval timer used to implemented
- the tick-less OS expires.
-
- **Assumptions**: Base code implementation assumes that this
- function is called from interrupt handling logic with interrupts disabled.
-
.. c:function:: void irq_dispatch(int irq, FAR void *context)
This function must be called from the
diff --git a/content/docs/latest/_sources/reference/os/time_clock.rst.txt
b/content/docs/latest/_sources/reference/os/time_clock.rst.txt
index c679ea949b..f178f98075 100644
--- a/content/docs/latest/_sources/reference/os/time_clock.rst.txt
+++ b/content/docs/latest/_sources/reference/os/time_clock.rst.txt
@@ -372,7 +372,7 @@ In addition to these imported interfaces, the RTOS will
export the
following interfaces for use by the platform-specific interval
timer implementation:
-- ``nxsched_tick_expiration()``: called by the platform-specific logic when
the interval time expires.
+- ``nxsched_process_timer()``: called by the platform-specific logic when the
interval time expires.
.. c:function:: void archname_timer_initialize(void)
@@ -410,7 +410,7 @@ timer implementation:
Cancel the alarm and return the time of cancellation of the alarm.
These two steps need to be as nearly atomic as possible.
- ``nxsched_tick_expiration()`` will not be called unless the alarm
+ ``nxsched_process_timer()`` will not be called unless the alarm
is restarted with ``up_alarm_start()``. If, as a race condition,
the alarm has already expired when this function is called, then
time returned is the current time.
@@ -427,13 +427,13 @@ timer implementation:
.. c:function:: int up_alarm_start(FAR const struct timespec *ts)
- Start the alarm. ``nxsched_tick_expiration()`` will be called
+ Start the alarm. ``nxsched_process_timer()`` will be called
when the alarm occurs (unless ``up_alarm_cancel`` is called to
stop it).
:param ts: The time in the future at the alarm is expected to
occur. When the alarm occurs the timer logic will call
- ``nxsched_tick_expiration()``.
+ ``nxsched_process_timer()``.
:return: Zero (OK) on success; a negated errno value on failure.
@@ -445,11 +445,11 @@ timer implementation:
Cancel the interval timer and return the time remaining on the
timer. These two steps need to be as nearly atomic as possible.
-``nxsched_tick_expiration()`` will not be called unless the timer
+``nxsched_process_timer()`` will not be called unless the timer
is restarted with ``up_timer_start()``. If, as a race condition,
the timer has already expired when this function is called, then
that pending interrupt must be cleared so that
-``nxsched_tick_expiration()`` is not called spuriously and the
+``nxsched_process_timer()`` is not called spuriously and the
remaining time of zero should be returned.
:param ts: Location to return the remaining time. Zero should be
@@ -463,12 +463,12 @@ disabled internally to assure non-reentrancy.
.. c:function:: int up_timer_start(FAR const struct timespec *ts)
-Start the interval timer. ``nxsched_tick_expiration()`` will be
+Start the interval timer. ``nxsched_process_timer()`` will be
called at the completion of the timeout (unless
``up_timer_cancel()`` is called to stop the timing).
:param ts: Provides the time interval until
- ``nxsched_tick_expiration()`` is called.
+ ``nxsched_process_timer()`` is called.
:return: Zero (OK) on success; a negated errno value on failure.
@@ -564,41 +564,6 @@ or ``kill()`` to communicate with NuttX tasks.
context of the timer interrupt handler and is subject to all ISR
restrictions.
-.. c:function:: int wd_restart(FAR struct wdog_s *wdog, clock_t delay)
-
- This function restarts the specified watchdog timer using the same
- function and argument that were specified in the previous wd_start()
- call, but with a new delay value. It can be used when the user wants
- to restart the same watchdog with a different timeout value, or to
- refresh (feed) an existing watchdog before it expires.
-
- :param wdog: Pointer to the watchdog timer to restart
- :param delay: Delay count in clock ticks
-
- **NOTE**: The parameter must be of type ``wdparm_t``.
-
- :return: Zero (``OK``) is returned on success; a negated ``errno`` value
- is return to indicate the nature of any failure.
-
-.. c:function:: int wd_restart_next(FAR struct wdog_s *wdog, clock_t delay)
-
- This function restarts the specified watchdog timer using a new delay
- value, but schedules the next expiration based on the previous
- expiration time (wdog->expired + delay). This allows the watchdog to
- maintain a consistent periodic interval even if there is some delay in
- handling the expiration callback.
-
- It can be used when the user wants to restart a watchdog for a different
- purpose or continue periodic timing based on the previous timeout point.
-
- :param wdog: Pointer to the watchdog timer to restart
- :param delay: Delay count in clock ticks
-
- **NOTE**: The parameter must be of type ``wdparm_t``.
-
- :return: Zero (``OK``) is returned on success; a negated ``errno`` value
- is return to indicate the nature of any failure.
-
.. c:function:: int wd_cancel(FAR struct wdog_s *wdog)
This function cancels a currently running
@@ -745,12 +710,15 @@ that returns immediately without waiting for the timer to
stop executing.
**POSIX Compatibility:** This is a NON-POSIX interface.
-.. c:function:: int hrtimer_start(FAR hrtimer_t *hrtimer, uint64_t ns, \
+.. c:function:: int hrtimer_start(FAR hrtimer_t *hrtimer, \
+ hrtimer_entry_t func, \
+ uint64_t expired, \
enum hrtimer_mode_e mode)
This function starts a high-resolution timer in absolute or relative mode.
:param hrtimer: Timer instance to cancel
+ :param func: Expiration callback function
:param ns: Timer expiration in nanoseconds (absolute or relative)
:param mode: HRTIMER_MODE_ABS or HRTIMER_MODE_REL
@@ -758,7 +726,8 @@ that returns immediately without waiting for the timer to
stop executing.
**POSIX Compatibility:** This is a NON-POSIX interface.
-.. c:type:: uint64_t (*hrtimer_cb)(FAR hrtimer_t *hrtimer, uint64_t expired)
+.. c:type:: uint64_t (*hrtimer_entry_t)(FAR hrtimer_t *hrtimer, \
+ uint64_t expired)
**High-resolution Timer Callback**: when a hrtimer expires,
the callback function with this type is called.
diff --git a/content/docs/latest/components/drivers/special/index.html
b/content/docs/latest/components/drivers/special/index.html
index d803827235..c91b53f171 100644
--- a/content/docs/latest/components/drivers/special/index.html
+++ b/content/docs/latest/components/drivers/special/index.html
@@ -308,7 +308,20 @@ and thus expose them to applications.</p>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="i3c.html">I3C
Device Drivers</a></li>
-<li class="toctree-l1"><a class="reference internal" href="ioexpander.html">IO
Expander Device Drivers</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ioexpander.html">IO
Expander Device Drivers</a><ul>
+<li class="toctree-l2"><a class="reference internal"
href="ioexpander.html#further-details">Further details</a><ul>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#header-files">Header files</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#overview-of-key-macros-and-options">Overview of key
macros and options</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#access-macros-api">Access macros (API)</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#multi-pin-operations">Multi-pin operations</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#interrupts-and-callbacks">Interrupts and
callbacks</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#driver-interface-lower-half">Driver interface
(lower-half)</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#binding-to-the-upper-layer-gpio-lower-half">Binding to
the upper layer (gpio_lower_half)</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="ioexpander.html#examples-and-references">Examples and references</a></li>
+</ul>
+</li>
+</ul>
+</li>
<li class="toctree-l1"><a class="reference internal" href="lcd.html">LCD
Character Drivers</a><ul>
<li class="toctree-l2"><a class="reference internal"
href="lcd.html#binding">Binding</a><ul>
<li class="toctree-l3"><a class="reference internal"
href="lcd.html#generic-lcd-character-driver">Generic LCD Character
Driver</a></li>
diff --git a/content/docs/latest/components/drivers/special/ioexpander.html
b/content/docs/latest/components/drivers/special/ioexpander.html
index 7db4b3edf5..362f3598d5 100644
--- a/content/docs/latest/components/drivers/special/ioexpander.html
+++ b/content/docs/latest/components/drivers/special/ioexpander.html
@@ -150,7 +150,10 @@
<li class="toctree-l4"><a class="reference internal"
href="i2c.html#i2c-bit-bang-driver">I2C Bit-Bang Driver</a></li>
<li class="toctree-l4"><a class="reference internal"
href="i2c.html#i2c-slave-device-drivers">I2C Slave Device Drivers</a></li>
<li class="toctree-l4"><a class="reference internal" href="i3c.html">I3C
Device Drivers</a></li>
-<li class="toctree-l4 current"><a class="current reference internal"
href="#">IO Expander Device Drivers</a></li>
+<li class="toctree-l4 current"><a class="current reference internal"
href="#">IO Expander Device Drivers</a><ul>
+<li class="toctree-l5"><a class="reference internal"
href="#further-details">Further details</a></li>
+</ul>
+</li>
<li class="toctree-l4"><a class="reference internal" href="lcd.html">LCD
Character Drivers</a></li>
<li class="toctree-l4"><a class="reference internal"
href="mtd/index.html">Memory Technology Device Drivers</a></li>
<li class="toctree-l4"><a class="reference internal"
href="regmap.html">drivers/regmap</a></li>
@@ -248,29 +251,42 @@
<section id="io-expander-device-drivers">
<h1>IO Expander Device Drivers<a class="headerlink"
href="#io-expander-device-drivers" title="Permalink to this heading"></a></h1>
+<p>The IO Expander subsystem is defined in the following headers:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> and <code
class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/gpio.h</span></code>.
-All structures and APIs needed to work with ioexpander drivers are provided in
-this header file.</p></li>
-<li><p><code class="docutils literal notranslate"><span
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>.
Each ioexpand device driver must implement
-an instance of <code class="docutils literal notranslate"><span
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>.
That structure defines a
-call table with the methods, and we also provide macros to help access
methods.</p></li>
-<li><p>we also provide method <code class="docutils literal notranslate"><span
class="pre">gpio_lower_half</span></code> to make ioexpander compatible with
normal gpio.</p></li>
-<li><p><strong>Binding ioexpander Drivers</strong>. ioexpander drivers are not
normally directly
-accessed by user code, we should always get lower level drivers, for example
I2C,
-and map extended gpio feature same asa normal gpio. See for example,
-<code class="docutils literal notranslate"><span class="pre">int</span> <span
class="pre">nrf52_sx1509_initialize(void)</span></code>
-in <code class="docutils literal notranslate"><span
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code>. In
general, the binding
-sequence is:</p>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> — defines the
public IO expander</dt><dd><p>interface: macros, types, and helper access
macros used by drivers and
+consumers.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/gpio.h</span></code> — provides the “gpio
lower half”</dt><dd><p>helper that allows registering an IO expander pin as a
standard GPIO
+character device (see <code class="docutils literal notranslate"><span
class="pre">gpio_lower_half</span></code> and <code class="docutils literal
notranslate"><span class="pre">gpio_lower_half_byname</span></code>).</p>
+</dd>
+</dl>
+</li>
+</ul>
+<p>Each IO expander driver must implement an instance of <code class="docutils
literal notranslate"><span class="pre">struct</span>
+<span class="pre">ioexpander_ops_s</span></code>. That structure defines the
lower-half call table and
+the operations a driver must provide; the public header also includes
+helper macros that dispatch to the lower-half operations table.</p>
+<p>The helper <code class="docutils literal notranslate"><span
class="pre">gpio_lower_half</span></code> can be used to register individual
expander
+pins as standard GPIO devices so that upper-half GPIO consumers can access
+expander pins through the common GPIO character driver.</p>
+<p><strong>Binding IO expander drivers</strong></p>
+<p>IO expander drivers are usually bound by board-specific code rather than
+accessed directly from application code. For I2C- or SPI-connected
+expanders the typical sequence is:</p>
<ol class="arabic simple">
-<li><p>Get an instance of <code class="docutils literal notranslate"><span
class="pre">struct</span> <span class="pre">i2c_master_s</span></code> from the
-hardware-specific I2C device driver, and</p></li>
-<li><p>Provide that instance and configurations to the ioexpander
initialization method
-to get the <code class="docutils literal notranslate"><span
class="pre">struct</span> <span class="pre">ioexpander_dev_s</span></code> ioe
device instance.</p></li>
-<li><p>Then use ioe device instance to do ioexpander operations, or use <code
class="docutils literal notranslate"><span
class="pre">gpio_lower_half</span></code>
-to make ioexpand compatible with normal gpio.</p></li>
+<li><p>Obtain the bus instance (for example, a <code class="docutils literal
notranslate"><span class="pre">struct</span> <span
class="pre">i2c_master_s</span> <span class="pre">*</span></code>) from
+the hardware-specific bus driver.</p></li>
+<li><p>Call the expander driver’s initialization routine with the bus instance
+and device-specific configuration; the init routine returns a
+<code class="docutils literal notranslate"><span class="pre">struct</span>
<span class="pre">ioexpander_dev_s</span> <span class="pre">*</span></code>
instance.</p></li>
+<li><p>Use the returned <code class="docutils literal notranslate"><span
class="pre">ioe</span></code> instance directly, or register individual
+expander pins with the upper-half GPIO driver via <code class="docutils
literal notranslate"><span class="pre">gpio_lower_half</span></code>.</p></li>
</ol>
-</li>
+<ul class="simple">
<li><p><strong>Examples</strong>: <code class="docutils literal
notranslate"><span class="pre">drivers/ioexpander/pca9555.c</span></code>,
<code class="docutils literal notranslate"><span
class="pre">drivers/input/aw86225.c</span></code>,
<code class="docutils literal notranslate"><span
class="pre">drivers/analog/lmp92001.c</span></code>,
@@ -278,6 +294,240 @@ to make ioexpand compatible with normal gpio.</p></li>
<code class="docutils literal notranslate"><span
class="pre">boards/sim/sim/sim/src/sim_ioexpander.c</span></code>,
<code class="docutils literal notranslate"><span
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code>
etc.</p></li>
</ul>
+<section id="further-details">
+<h2>Further details<a class="headerlink" href="#further-details"
title="Permalink to this heading"></a></h2>
+<section id="header-files">
+<h3>Header files<a class="headerlink" href="#header-files" title="Permalink to
this heading"></a></h3>
+<p>The relevant header files are:</p>
+<ul class="simple">
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/ioexpander.h</span></code> — defines
macros, types and access</dt><dd><p>macros used to interact with IO
expanders.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt><code class="docutils literal notranslate"><span
class="pre">include/nuttx/ioexpander/gpio.h</span></code> — provides the “gpio
lower half” helper</dt><dd><p>that allows registering an IO expander pin as a
standard GPIO device.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</section>
+<section id="overview-of-key-macros-and-options">
+<h3>Overview of key macros and options<a class="headerlink"
href="#overview-of-key-macros-and-options" title="Permalink to this
heading"></a></h3>
+<p>The following is a concise reference of the important macros defined in the
+header. These are the options you will typically use through <code
class="docutils literal notranslate"><span
class="pre">IOEXP_SETOPTION</span></code>
+and the various access macros. The primary preprocessor definitions are
+listed below (C syntax):</p>
+<div class="highlight-c notranslate"><div
class="highlight"><pre><span></span><span class="cm">/* Direction definitions
*/</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN 0 </span><span
class="cm">/* float */</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN_PULLUP 1</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_IN_PULLDOWN 2</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT 3 </span><span
class="cm">/* push-pull */</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT_OPENDRAIN 4</span>
+<span class="cp">#define IOEXPANDER_DIRECTION_OUT_LED 5 </span><span
class="cm">/* LED output */</span>
+
+<span class="cm">/* Pinset mask helpers */</span>
+<span class="cp">#define IOEXPANDER_PINMASK (((ioe_pinset_t)1 <<
CONFIG_IOEXPANDER_NPINS) - 1)</span>
+<span class="cp">#define PINSET_ALL (~((ioe_pinset_t)0))</span>
+
+<span class="cm">/* Common option values (used with IOEXP_SETOPTION) */</span>
+<span class="cm">/* Invert (active level) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_INVERT 1</span>
+<span class="cp">#define IOEXPANDER_VAL_NORMAL 0 </span><span
class="cm">/* normal polarity */</span>
+<span class="cp">#define IOEXPANDER_VAL_INVERT 1 </span><span
class="cm">/* inverted polarity */</span>
+
+<span class="cm">/* Interrupt configuration (level/edge and
high/low/rising/falling/both) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_INTCFG 2</span>
+<span class="cp">#define IOEXPANDER_VAL_DISABLE 0 </span><span
class="cm">/* 0000 disable interrupts */</span>
+<span class="cp">#define IOEXPANDER_VAL_LEVEL 1 </span><span
class="cm">/* xx01: level triggered */</span>
+<span class="cp">#define IOEXPANDER_VAL_EDGE 2 </span><span
class="cm">/* xx10: edge triggered */</span>
+<span class="cp">#define IOEXPANDER_VAL_HIGH 5 </span><span
class="cm">/* 0101: high level */</span>
+<span class="cp">#define IOEXPANDER_VAL_LOW 9 </span><span
class="cm">/* 1001: low level */</span>
+<span class="cp">#define IOEXPANDER_VAL_RISING 6 </span><span
class="cm">/* 0110: rising edge */</span>
+<span class="cp">#define IOEXPANDER_VAL_FALLING 10 </span><span
class="cm">/* 1010: falling edge */</span>
+<span class="cp">#define IOEXPANDER_VAL_BOTH 14 </span><span
class="cm">/* 1110: both edges */</span>
+
+<span class="cm">/* LED configuration */</span>
+<span class="cp">#define IOEXPANDER_OPTION_LEDCFG 3 </span><span
class="cm">/* assign an LED number to a pin */</span>
+
+<span class="cm">/* Non-generic (driver-specific) option */</span>
+<span class="cp">#define IOEXPANDER_OPTION_NONGENERIC 4 </span><span
class="cm">/* pass driver-specific struct */</span>
+
+<span class="cm">/* Wakeup configuration (configure pin as SoC wake-up source)
*/</span>
+<span class="cp">#define IOEXPANDER_OPTION_WAKEUPCFG 5</span>
+<span class="cp">#define IOEXPANDER_WAKEUP_DISABLE 0</span>
+<span class="cp">#define IOEXPANDER_WAKEUP_ENABLE 1</span>
+
+<span class="cm">/* Debounce and interrupt mask (recent additions) */</span>
+<span class="cp">#define IOEXPANDER_OPTION_SETDEBOUNCE 6 </span><span
class="cm">/* configure debounce */</span>
+<span class="cp">#define IOEXPANDER_DEBOUNCE_DISABLE 0</span>
+<span class="cp">#define IOEXPANDER_DEBOUNCE_ENABLE 1</span>
+
+<span class="cp">#define IOEXPANDER_OPTION_SETMASK 7 </span><span
class="cm">/* control interrupt masking */</span>
+<span class="cp">#define IOEXPANDER_MASK_DISABLE 0 </span><span
class="cm">/* unmask (enable) interrupts */</span>
+<span class="cp">#define IOEXPANDER_MASK_ENABLE 1 </span><span
class="cm">/* mask (suppress) interrupts */</span>
+</pre></div>
+</div>
+</section>
+<section id="access-macros-api">
+<h3>Access macros (API)<a class="headerlink" href="#access-macros-api"
title="Permalink to this heading"></a></h3>
+<p>The header exposes a set of helper macros that dispatch to the underlying
+driver operations table (<code class="docutils literal notranslate"><span
class="pre">struct</span> <span class="pre">ioexpander_ops_s</span></code>):</p>
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_SETDIRECTION">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEXP_SETDIRECTION</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span
class="pre">dir</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEXP_SETDIRECTION" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Set a pin direction (input, output, open-drain, LED, pull-up/down).
+Returns 0 on success or a negative errno on failure.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_SETOPTION">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEXP_SETOPTION</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span
class="pre">opt</span></span>, <span class="n"><span
class="pre">val</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEXP_SETOPTION" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Generic option setting interface used to configure the options listed
+above. Note that <code class="docutils literal notranslate"><span
class="pre">val</span></code> is a <code class="docutils literal
notranslate"><span class="pre">void</span> <span class="pre">*</span></code>;
drivers may accept an integer
+casted to a pointer or a pointer to a driver-specific structure.</p>
+<p>Examples:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>/* Invert pin polarity */
+IOEXP_SETOPTION(dev, 3, IOEXPANDER_OPTION_INVERT,
+ (FAR void *)IOEXPANDER_VAL_INVERT);
+
+/* Enable debounce on pin 2 */
+IOEXP_SETOPTION(dev, 2, IOEXPANDER_OPTION_SETDEBOUNCE,
+ (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+
+/* Mask interrupts for pin 5 */
+IOEXP_SETOPTION(dev, 5, IOEXPANDER_OPTION_SETMASK,
+ (FAR void *)IOEXPANDER_MASK_ENABLE);
+</pre></div>
+</div>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_WRITEPIN">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEXP_WRITEPIN</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span
class="pre">val</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEXP_WRITEPIN" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Set the pin level. Returns 0 on success or a negative errno on
error.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_READPIN">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEXP_READPIN</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span
class="pre">valptr</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEXP_READPIN" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Read the actual physical pin level. The value is returned via <code
class="docutils literal notranslate"><span class="pre">valptr</span></code>.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEXP_READBUF">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEXP_READBUF</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pin</span></span>, <span class="n"><span
class="pre">valptr</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEXP_READBUF" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Read the buffered/register value cached by the expander.</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_WRITEPIN</span></code> sets the pin level (TRUE typically
means high).
+Drivers handle polarity inversion if configured.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_READPIN</span></code> reads the actual physical pin
level.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_READBUF</span></code> reads the buffered/register value
cached by the
+expander.</p></li>
+</ul>
+</dd></dl>
+
+</section>
+<section id="multi-pin-operations">
+<h3>Multi-pin operations<a class="headerlink" href="#multi-pin-operations"
title="Permalink to this heading"></a></h3>
+<p>When <code class="docutils literal notranslate"><span
class="pre">CONFIG_IOEXPANDER_MULTIPIN</span></code> is enabled, batch
operations are
+available that may be more efficient than repeated single-pin calls:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_MULTIWRITEPIN(dev,</span> <span class="pre">pins,</span>
<span class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_MULTIREADPIN(dev,</span> <span class="pre">pins,</span> <span
class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">IOEXP_MULTIREADBUF(dev,</span> <span class="pre">pins,</span> <span
class="pre">vals,</span> <span class="pre">count)</span></code></p></li>
+</ul>
+</section>
+<section id="interrupts-and-callbacks">
+<h3>Interrupts and callbacks<a class="headerlink"
href="#interrupts-and-callbacks" title="Permalink to this heading"></a></h3>
+<p>If <code class="docutils literal notranslate"><span
class="pre">CONFIG_IOEXPANDER_INT_ENABLE</span></code> is enabled the header
defines the
+callback type and attach/detach helper macros. The callback signature
+is:</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>typedef CODE int (*ioe_callback_t)(FAR
struct ioexpander_dev_s *dev,
+ ioe_pinset_t pinset, FAR
void *arg);
+</pre></div>
+</div>
+<p>The callback is invoked when events occur for the monitored pinset. The
+attach/detach helpers are provided as macros that dispatch to the lower-half
+driver when <code class="docutils literal notranslate"><span
class="pre">CONFIG_IOEXPANDER_INT_ENABLE</span></code> is enabled:</p>
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEP_ATTACH">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEP_ATTACH</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">pinset</span></span>, <span class="n"><span
class="pre">callback</span></span>, <span class="n"><span
class="pre">arg</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.IOEP_ATTACH" title="Permalink to this
definition"></a><br /></dt>
+<dd><p>Attach and enable a pin interrupt callback. Returns a non-NULL opaque
+handle on success. <code class="docutils literal notranslate"><span
class="pre">pinset</span></code> selects which pin(s) will generate the
+callback; <code class="docutils literal notranslate"><span
class="pre">callback</span></code> is a function of type <code class="docutils
literal notranslate"><span class="pre">ioe_callback_t</span></code> and
+<code class="docutils literal notranslate"><span class="pre">arg</span></code>
is passed through to the callback.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.IOEP_DETACH">
+<span class="sig-name descname"><span class="n"><span
class="pre">IOEP_DETACH</span></span></span><span
class="sig-paren">(</span><span class="n"><span class="pre">dev</span></span>,
<span class="n"><span class="pre">handle</span></span><span
class="sig-paren">)</span><a class="headerlink" href="#c.IOEP_DETACH"
title="Permalink to this definition"></a><br /></dt>
+<dd><p>Detach and disable a previously attached callback referenced by <code
class="docutils literal notranslate"><span class="pre">handle</span></code>.</p>
+</dd></dl>
+
+<p>Note: when <code class="docutils literal notranslate"><span
class="pre">CONFIG_IOEXPANDER_NPINS</span></code> > 64, <code
class="docutils literal notranslate"><span
class="pre">ioe_pinset_t</span></code> represents a
+single interrupt pin number rather than a bitmask.</p>
+</section>
+<section id="driver-interface-lower-half">
+<h3>Driver interface (lower-half)<a class="headerlink"
href="#driver-interface-lower-half" title="Permalink to this heading"></a></h3>
+<p>Each IO expander driver must implement the operations table
+<code class="docutils literal notranslate"><span class="pre">struct</span>
<span class="pre">ioexpander_ops_s</span></code>. At minimum the driver should
provide:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">ioe_direction</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">ioe_option</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">ioe_writepin</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">ioe_readpin</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">ioe_readbuf</span></code></p></li>
+</ul>
+<p>Optional multi-pin and interrupt attach/detach methods should be provided
+when the corresponding configuration options are enabled.</p>
+</section>
+<section id="binding-to-the-upper-layer-gpio-lower-half">
+<h3>Binding to the upper layer (gpio_lower_half)<a class="headerlink"
href="#binding-to-the-upper-layer-gpio-lower-half" title="Permalink to this
heading"></a></h3>
+<p>Applications normally do not access IO expander drivers directly. Typical
+binding steps are:</p>
+<ol class="arabic simple">
+<li><dl class="simple">
+<dt>Obtain the bus instance (for example, <code class="docutils literal
notranslate"><span class="pre">struct</span> <span
class="pre">i2c_master_s</span> <span class="pre">*</span></code>)
from</dt><dd><p>the hardware-specific bus driver.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Call the expander driver’s initialization routine with the bus
instance</dt><dd><p>and device configuration to obtain a <code class="docutils
literal notranslate"><span class="pre">struct</span> <span
class="pre">ioexpander_dev_s</span> <span class="pre">*</span></code>.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="simple">
+<dt>Use the returned <code class="docutils literal notranslate"><span
class="pre">ioe</span></code> instance directly, or register
individual</dt><dd><p>expander pins as standard GPIO devices via <code
class="docutils literal notranslate"><span
class="pre">gpio_lower_half</span></code> or
+<code class="docutils literal notranslate"><span
class="pre">gpio_lower_half_byname</span></code>.</p>
+</dd>
+</dl>
+</li>
+</ol>
+<p>Example (pseudocode):</p>
+<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>/* Get the I2C bus */
+struct i2c_master_s *i2c = up_i2cinitialize(0);
+
+/* Initialize the expander (driver-specific init) */
+struct ioexpander_dev_s *ioe = pca9555_initialize(i2c, CONFIG_PCA9555_ADDR);
+
+/* Configure pin 0 as input with pull-up and enable debounce */
+IOEXP_SETDIRECTION(ioe, 0, IOEXPANDER_DIRECTION_IN_PULLUP);
+IOEXP_SETOPTION(ioe, 0, IOEXPANDER_OPTION_SETDEBOUNCE,
+ (FAR void *)IOEXPANDER_DEBOUNCE_ENABLE);
+</pre></div>
+</div>
+</section>
+<section id="examples-and-references">
+<h3>Examples and references<a class="headerlink"
href="#examples-and-references" title="Permalink to this heading"></a></h3>
+<p>See the following drivers and board examples for concrete usage:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span
class="pre">drivers/ioexpander/pca9555.c</span></code> — I2C IO expander
implementation.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">drivers/ioexpander/ioe_rpmsg.c</span></code> — RPMSG-based IO
expander.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">boards/arm/nrf52/thingy52/src/nrf52_sx1509.c</span></code> —
binding example.</p></li>
+</ul>
+</section>
+</section>
</section>
diff --git a/content/docs/latest/genindex.html
b/content/docs/latest/genindex.html
index 47da59947d..d9d5f9c651 100644
--- a/content/docs/latest/genindex.html
+++ b/content/docs/latest/genindex.html
@@ -595,7 +595,7 @@
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
- <li><a href="reference/os/time_clock.html#c.hrtimer_cb">hrtimer_cb (C
type)</a>
+ <li><a
href="reference/os/time_clock.html#c.hrtimer_entry_t">hrtimer_entry_t (C
type)</a>
</li>
<li><a href="reference/os/time_clock.html#c.hrtimer_init">hrtimer_init
(C function)</a>
</li>
@@ -653,8 +653,6 @@
</li>
<li><a href="reference/os/iob.html#c.iob_dump">iob_dump (C function)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="reference/os/iob.html#c.iob_free">iob_free (C function)</a>
</li>
<li><a href="reference/os/iob.html#c.iob_free_chain">iob_free_chain (C
function)</a>
@@ -663,6 +661,8 @@
</li>
<li><a
href="reference/os/iob.html#c.iob_free_queue_qentry">iob_free_queue_qentry (C
function)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a
href="reference/os/iob.html#c.iob_get_queue_size">iob_get_queue_size (C
function)</a>
</li>
<li><a href="reference/os/iob.html#c.iob_initialize">iob_initialize (C
function)</a>
@@ -688,6 +688,20 @@
<li><a href="glossary.html#term-IOCTL"><strong>IOCTL</strong></a>
</li>
<li><a href="components/filesystem/index.html#c.ioctl">ioctl (C
function)</a>, <a href="reference/user/10_filesystem.html#c.ioctl">[1]</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEP_ATTACH">IOEP_ATTACH (C
macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEP_DETACH">IOEP_DETACH (C
macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEXP_READBUF">IOEXP_READBUF
(C macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEXP_READPIN">IOEXP_READPIN
(C macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEXP_SETDIRECTION">IOEXP_SETDIRECTION
(C macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEXP_SETOPTION">IOEXP_SETOPTION
(C macro)</a>
+</li>
+ <li><a
href="components/drivers/special/ioexpander.html#c.IOEXP_WRITEPIN">IOEXP_WRITEPIN
(C macro)</a>
</li>
<li><a href="glossary.html#term-IoT"><strong>IoT</strong></a>
</li>
@@ -1086,11 +1100,11 @@
<li><a href="components/nxgraphics/nx.html#c.nx_kbdchin">nx_kbdchin (C
function)</a>
</li>
<li><a href="components/nxgraphics/nx.html#c.nx_kbdin">nx_kbdin (C
function)</a>
-</li>
- <li><a href="components/nxgraphics/nx.html#c.nx_lower">nx_lower (C
function)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="components/nxgraphics/nx.html#c.nx_lower">nx_lower (C
function)</a>
+</li>
<li><a href="components/nxgraphics/nx.html#c.nx_modal">nx_modal (C
function)</a>
</li>
<li><a href="components/nxgraphics/nx.html#c.nx_mousein">nx_mousein (C
function)</a>
@@ -1270,8 +1284,6 @@
<li><a
href="reference/os/nuttx.html#c.nxsched_process_timer">nxsched_process_timer (C
function)</a>
</li>
<li><a href="reference/os/sleep.html#c.nxsched_sleep">nxsched_sleep (C
function)</a>
-</li>
- <li><a
href="reference/os/nuttx.html#c.nxsched_tick_expiration">nxsched_tick_expiration
(C function)</a>
</li>
<li><a
href="reference/os/sleep.html#c.nxsched_ticksleep">nxsched_ticksleep (C
function)</a>
</li>
@@ -2136,10 +2148,6 @@
<li><a href="reference/os/time_clock.html#c.wd_cancel">wd_cancel (C
function)</a>
</li>
<li><a href="reference/os/time_clock.html#c.wd_gettime">wd_gettime (C
function)</a>
-</li>
- <li><a href="reference/os/time_clock.html#c.wd_restart">wd_restart (C
function)</a>
-</li>
- <li><a
href="reference/os/time_clock.html#c.wd_restart_next">wd_restart_next (C
function)</a>
</li>
<li><a href="reference/os/time_clock.html#c.wd_start">wd_start (C
function)</a>
</li>
@@ -2149,10 +2157,10 @@
</li>
<li><a
href="components/drivers/character/timers/watchdog.html#c.WDIOC_CAPTURE">WDIOC_CAPTURE
(C macro)</a>
</li>
- </ul></td>
- <td style="width: 33%; vertical-align: top;"><ul>
<li><a
href="components/drivers/character/timers/watchdog.html#c.WDIOC_GETSTATUS">WDIOC_GETSTATUS
(C macro)</a>
</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
<li><a
href="components/drivers/character/timers/watchdog.html#c.WDIOC_KEEPALIVE">WDIOC_KEEPALIVE
(C macro)</a>
</li>
<li><a
href="components/drivers/character/timers/watchdog.html#c.WDIOC_SETTIMEOUT">WDIOC_SETTIMEOUT
(C macro)</a>
diff --git a/content/docs/latest/guides/fully_linked_elf.html
b/content/docs/latest/guides/fully_linked_elf.html
index 7b91b32530..8a870be192 100644
--- a/content/docs/latest/guides/fully_linked_elf.html
+++ b/content/docs/latest/guides/fully_linked_elf.html
@@ -482,7 +482,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="adfee87c-0960-4d45-aa46-40f4a2ec0826"
name="adfee87c-0960-4d45-aa46-40f4a2ec0826" type="checkbox"><label
class="sphinx_collapse__label" for="adfee87c-0960-4d45-aa46-40f4a2ec0826"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="79b9ff92-53f3-4b1c-b796-61fe7ae12359"
name="79b9ff92-53f3-4b1c-b796-61fe7ae12359" type="checkbox"><label
class="sphinx_collapse__label" for="79b9ff92-53f3-4b1c-b796-61fe7ae12359"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/latest/guides/partially_linked_elf.html
b/content/docs/latest/guides/partially_linked_elf.html
index 215504f0ce..8959265987 100644
--- a/content/docs/latest/guides/partially_linked_elf.html
+++ b/content/docs/latest/guides/partially_linked_elf.html
@@ -508,7 +508,7 @@ NuttX package: <code class="docutils literal
notranslate"><span class="pre">nutt
<div
class="admonition-here-is-an-alternative-minimal-and-possibly-outdated-version
admonition">
<p class="admonition-title">Here is an alternative minimal (and possibly
outdated) version</p>
<div class="sphinx_collapse docutils">
-<input class="sphinx_collapse__input"
id="50df57df-e074-4295-8a2e-e286d337fe1e"
name="50df57df-e074-4295-8a2e-e286d337fe1e" type="checkbox"><label
class="sphinx_collapse__label" for="50df57df-e074-4295-8a2e-e286d337fe1e"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
+<input class="sphinx_collapse__input"
id="2e4458a3-ff35-47ea-9832-2b1505000edb"
name="2e4458a3-ff35-47ea-9832-2b1505000edb" type="checkbox"><label
class="sphinx_collapse__label" for="2e4458a3-ff35-47ea-9832-2b1505000edb"><i
class="sphinx_collapse__icon"></i>Show content:</label><div
class="sphinx_collapse__content docutils">
<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>SECTIONS
{
.text 0x00000000 :
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index f72ef61e21..275cf84c6b 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -191,7 +191,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 13 January 26 at 00:33</p>
+<p>Last Updated: 14 January 26 at 00:34</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index b334592619..a1032d1eb5 100644
Binary files a/content/docs/latest/objects.inv and
b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/reference/os/nuttx.html
b/content/docs/latest/reference/os/nuttx.html
index eef2b9fab0..b278e73331 100644
--- a/content/docs/latest/reference/os/nuttx.html
+++ b/content/docs/latest/reference/os/nuttx.html
@@ -224,17 +224,6 @@ periodically – the calling interval must be
<code class="docutils literal notranslate"><span
class="pre">CONFIG_USEC_PER_TICK</span></code>.</p>
</dd></dl>
-<dl class="c function">
-<dt class="sig sig-object c" id="c.nxsched_tick_expiration">
-<span class="kt"><span class="pre">void</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">nxsched_tick_expiration</span></span></span><span
class="sig-paren">(</span><span class="kt"><span
class="pre">void</span></span><span class="sig-paren">)</span><a
class="headerlink" href="#c.nxsched_tick_expiration" title="Permalink to this
definition"></a><br /></dt>
-<dd><p>Description: if <code class="docutils literal notranslate"><span
class="pre">CONFIG_SCHED_TICKLESS</span></code> is defined, then this
-function is provided by the RTOS base code and called from
-platform-specific code when the interval timer used to implemented
-the tick-less OS expires.</p>
-<p><strong>Assumptions</strong>: Base code implementation assumes that this
-function is called from interrupt handling logic with interrupts disabled.</p>
-</dd></dl>
-
<dl class="c function">
<dt class="sig sig-object c" id="c.irq_dispatch">
<span class="kt"><span class="pre">void</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">irq_dispatch</span></span></span><span
class="sig-paren">(</span><span class="kt"><span
class="pre">int</span></span><span class="w"> </span><span class="n"><span
class="pre">irq</span></span>, <span class="pre">FAR</span><span class="w">
</span><span class="kt"><span class="pre">void</span></span><span class="w">
</span><span class="p"><span clas [...]
diff --git a/content/docs/latest/reference/os/time_clock.html
b/content/docs/latest/reference/os/time_clock.html
index 21f5c8e053..00623555fc 100644
--- a/content/docs/latest/reference/os/time_clock.html
+++ b/content/docs/latest/reference/os/time_clock.html
@@ -562,7 +562,7 @@ and a free-running counter with the same timer!</p>
following interfaces for use by the platform-specific interval
timer implementation:</p>
<ul class="simple">
-<li><p><code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code>: called by the
platform-specific logic when the interval time expires.</p></li>
+<li><p><code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code>: called by the
platform-specific logic when the interval time expires.</p></li>
</ul>
<dl class="c function">
<dt class="sig sig-object c" id="c.archname_timer_initialize">
@@ -612,7 +612,7 @@ order to assure atomic register operations.</p>
<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">up_alarm_cancel</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="k"><span class="pre">struct</span></span><span class="w">
</span><a class="reference internal" href="../user/structures.html#c.timespec"
title="timespec"><span class="n"><span
class="pre">timespec</span></span></a><sp [...]
<dd><p>Cancel the alarm and return the time of cancellation of the alarm.
These two steps need to be as nearly atomic as possible.
-<code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> will not be called unless
the alarm
+<code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> will not be called unless the
alarm
is restarted with <code class="docutils literal notranslate"><span
class="pre">up_alarm_start()</span></code>. If, as a race condition,
the alarm has already expired when this function is called, then
time returned is the current time.</p>
@@ -636,7 +636,7 @@ internally to assure non-reentrancy.</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.up_alarm_start">
<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">up_alarm_start</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="k"><span class="pre">const</span></span><span class="w">
</span><span class="k"><span class="pre">struct</span></span><span class="w">
</span><a class="reference internal" href="../user/structures.html#c.timespec"
titl [...]
-<dd><p>Start the alarm. <code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> will be called
+<dd><p>Start the alarm. <code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> will be called
when the alarm occurs (unless <code class="docutils literal notranslate"><span
class="pre">up_alarm_cancel</span></code> is called to
stop it).</p>
<dl class="field-list simple">
@@ -644,7 +644,7 @@ stop it).</p>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ts</strong> – The time in the future at the alarm is expected to
occur. When the alarm occurs the timer logic will call
-<code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code>.</p></li>
+<code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code>.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
@@ -663,11 +663,11 @@ disabled internally to assure non-reentrancy.</p>
<p>Cancel the interval timer and return the time remaining on the
timer. These two steps need to be as nearly atomic as possible.
-<code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> will not be called unless
the timer
+<code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> will not be called unless the
timer
is restarted with <code class="docutils literal notranslate"><span
class="pre">up_timer_start()</span></code>. If, as a race condition,
the timer has already expired when this function is called, then
that pending interrupt must be cleared so that
-<code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> is not called spuriously
and the
+<code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> is not called spuriously and
the
remaining time of zero should be returned.</p>
<dl class="field-list simple">
<dt class="field-odd">param ts<span class="colon">:</span></dt>
@@ -686,13 +686,13 @@ disabled internally to assure non-reentrancy.</p>
<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">up_timer_start</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="k"><span class="pre">const</span></span><span class="w">
</span><span class="k"><span class="pre">struct</span></span><span class="w">
</span><a class="reference internal" href="../user/structures.html#c.timespec"
titl [...]
<dd></dd></dl>
-<p>Start the interval timer. <code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> will be
+<p>Start the interval timer. <code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> will be
called at the completion of the timeout (unless
<code class="docutils literal notranslate"><span
class="pre">up_timer_cancel()</span></code> is called to stop the timing).</p>
<dl class="field-list simple">
<dt class="field-odd">param ts<span class="colon">:</span></dt>
<dd class="field-odd"><p>Provides the time interval until
-<code class="docutils literal notranslate"><span
class="pre">nxsched_tick_expiration()</span></code> is called.</p>
+<code class="docutils literal notranslate"><span
class="pre">nxsched_process_timer()</span></code> is called.</p>
</dd>
<dt class="field-even">return<span class="colon">:</span></dt>
<dd class="field-even"><p>Zero (OK) on success; a negated errno value on
failure.</p>
@@ -716,8 +716,8 @@ or <code class="docutils literal notranslate"><span
class="pre">kill()</span></c
<ul class="simple">
<li><p><a class="reference internal" href="#c.wd_start" title="wd_start"><code
class="xref c c-func docutils literal notranslate"><span
class="pre">wd_start()</span></code></a></p></li>
<li><p><a class="reference internal" href="#c.wd_start_next"
title="wd_start_next"><code class="xref c c-func docutils literal
notranslate"><span class="pre">wd_start_next()</span></code></a></p></li>
-<li><p><a class="reference internal" href="#c.wd_restart"
title="wd_restart"><code class="xref c c-func docutils literal
notranslate"><span class="pre">wd_restart()</span></code></a></p></li>
-<li><p><a class="reference internal" href="#c.wd_restart_next"
title="wd_restart_next"><code class="xref c c-func docutils literal
notranslate"><span class="pre">wd_restart_next()</span></code></a></p></li>
+<li><p><code class="xref c c-func docutils literal notranslate"><span
class="pre">wd_restart()</span></code></p></li>
+<li><p><code class="xref c c-func docutils literal notranslate"><span
class="pre">wd_restart_next()</span></code></p></li>
<li><p><a class="reference internal" href="#c.wd_cancel"
title="wd_cancel"><code class="xref c c-func docutils literal
notranslate"><span class="pre">wd_cancel()</span></code></a></p></li>
<li><p><a class="reference internal" href="#c.wd_gettime"
title="wd_gettime"><code class="xref c c-func docutils literal
notranslate"><span class="pre">wd_gettime()</span></code></a></p></li>
<li><p>Watchdog Timer Callback</p></li>
@@ -801,58 +801,6 @@ context of the timer interrupt handler and is subject to
all ISR
restrictions.</p>
</dd></dl>
-<dl class="c function">
-<dt class="sig sig-object c" id="c.wd_restart">
-<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">wd_restart</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="k"><span class="pre">struct</span></span><span class="w">
</span><span class="n"><span class="pre">wdog_s</span></span><span class="w">
</span><span class="p"><span class="pre">*</span></span><span class="n"><span
class="p [...]
-<dd><p>This function restarts the specified watchdog timer using the same
-function and argument that were specified in the previous wd_start()
-call, but with a new delay value. It can be used when the user wants
-to restart the same watchdog with a different timeout value, or to
-refresh (feed) an existing watchdog before it expires.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters<span class="colon">:</span></dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>wdog</strong> – Pointer to the watchdog timer to
restart</p></li>
-<li><p><strong>delay</strong> – Delay count in clock ticks</p></li>
-</ul>
-</dd>
-</dl>
-<p><strong>NOTE</strong>: The parameter must be of type <code class="docutils
literal notranslate"><span class="pre">wdparm_t</span></code>.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Returns<span class="colon">:</span></dt>
-<dd class="field-odd"><p>Zero (<code class="docutils literal
notranslate"><span class="pre">OK</span></code>) is returned on success; a
negated <code class="docutils literal notranslate"><span
class="pre">errno</span></code> value
-is return to indicate the nature of any failure.</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="c function">
-<dt class="sig sig-object c" id="c.wd_restart_next">
-<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">wd_restart_next</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="k"><span class="pre">struct</span></span><span class="w">
</span><span class="n"><span class="pre">wdog_s</span></span><span class="w">
</span><span class="p"><span class="pre">*</span></span><span class="n"><span
cla [...]
-<dd><p>This function restarts the specified watchdog timer using a new delay
-value, but schedules the next expiration based on the previous
-expiration time (wdog->expired + delay). This allows the watchdog to
-maintain a consistent periodic interval even if there is some delay in
-handling the expiration callback.</p>
-<p>It can be used when the user wants to restart a watchdog for a different
-purpose or continue periodic timing based on the previous timeout point.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters<span class="colon">:</span></dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>wdog</strong> – Pointer to the watchdog timer to
restart</p></li>
-<li><p><strong>delay</strong> – Delay count in clock ticks</p></li>
-</ul>
-</dd>
-</dl>
-<p><strong>NOTE</strong>: The parameter must be of type <code class="docutils
literal notranslate"><span class="pre">wdparm_t</span></code>.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Returns<span class="colon">:</span></dt>
-<dd class="field-odd"><p>Zero (<code class="docutils literal
notranslate"><span class="pre">OK</span></code>) is returned on success; a
negated <code class="docutils literal notranslate"><span
class="pre">errno</span></code> value
-is return to indicate the nature of any failure.</p>
-</dd>
-</dl>
-</dd></dl>
-
<dl class="c function">
<dt class="sig sig-object c" id="c.wd_cancel">
<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">wd_cancel</span></span></span><span class="sig-paren">(</span><span
class="pre">FAR</span><span class="w"> </span><span class="k"><span
class="pre">struct</span></span><span class="w"> </span><span class="n"><span
class="pre">wdog_s</span></span><span class="w"> </span><span class="p"><span
class="pre">*</span></span><span class="n"><span class="pr [...]
@@ -1024,12 +972,13 @@ transitioned to HRTIMER_STATE_INACTIVE.</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.hrtimer_start">
-<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">hrtimer_start</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="n"><span class="pre">hrtimer_t</span></span><span
class="w"> </span><span class="p"><span class="pre">*</span></span><span
class="n"><span class="pre">hrtimer</span></span>, <span class="n"><span
class="pre">uint64_t</s [...]
+<span class="kt"><span class="pre">int</span></span><span class="w">
</span><span class="sig-name descname"><span class="n"><span
class="pre">hrtimer_start</span></span></span><span
class="sig-paren">(</span><span class="pre">FAR</span><span class="w">
</span><span class="n"><span class="pre">hrtimer_t</span></span><span
class="w"> </span><span class="p"><span class="pre">*</span></span><span
class="n"><span class="pre">hrtimer</span></span>, <a class="reference
internal" href="#c.hrtime [...]
<dd><p>This function starts a high-resolution timer in absolute or relative
mode.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>hrtimer</strong> – Timer instance to cancel</p></li>
+<li><p><strong>func</strong> – Expiration callback function</p></li>
<li><p><strong>ns</strong> – Timer expiration in nanoseconds (absolute or
relative)</p></li>
<li><p><strong>mode</strong> – HRTIMER_MODE_ABS or HRTIMER_MODE_REL</p></li>
</ul>
@@ -1042,8 +991,8 @@ transitioned to HRTIMER_STATE_INACTIVE.</p>
</dd></dl>
<dl class="c type">
-<dt class="sig sig-object c" id="c.hrtimer_cb">
-<span class="k"><span class="pre">typedef</span></span><span class="w">
</span><span class="n"><span class="pre">uint64_t</span></span><span class="w">
</span><span class="p"><span class="pre">(</span></span><span class="p"><span
class="pre">*</span></span><span class="sig-name descname"><span
class="n"><span class="pre">hrtimer_cb</span></span></span><span
class="p"><span class="pre">)</span></span><span class="p"><span
class="pre">(</span></span><span class="pre">FAR</span><span class= [...]
+<dt class="sig sig-object c" id="c.hrtimer_entry_t">
+<span class="k"><span class="pre">typedef</span></span><span class="w">
</span><span class="n"><span class="pre">uint64_t</span></span><span class="w">
</span><span class="p"><span class="pre">(</span></span><span class="p"><span
class="pre">*</span></span><span class="sig-name descname"><span
class="n"><span class="pre">hrtimer_entry_t</span></span></span><span
class="p"><span class="pre">)</span></span><span class="p"><span
class="pre">(</span></span><span class="pre">FAR</span><span c [...]
<dd><p><strong>High-resolution Timer Callback</strong>: when a hrtimer expires,
the callback function with this type is called.</p>
</dd></dl>
diff --git a/content/docs/latest/searchindex.js
b/content/docs/latest/searchindex.js
index 59d2e41aec..49edc4f6dc 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3",
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/c
[...]
\ No newline at end of file
+Search.setIndex({"docnames": ["_tags/arch-arm64", "_tags/arch-avr",
"_tags/arch-example", "_tags/arch-renesas", "_tags/arch-risc-v",
"_tags/arch-riscv", "_tags/arch-sim", "_tags/chip-a527", "_tags/chip-a64",
"_tags/chip-at32uc3", "_tags/chip-at90usb", "_tags/chip-atmega",
"_tags/chip-atmega128", "_tags/chip-atmega1284p", "_tags/chip-atmega2560",
"_tags/chip-bcm2711", "_tags/chip-esp32", "_tags/chip-esp32-c3",
"_tags/chip-esp32a1s", "_tags/chip-esp32picod4", "_tags/chip-esp32s2", "_tags/c
[...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index a014fb13b6..6a87e18f2b 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
<description></description>
<link>/</link>
<atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
- <pubDate>Tue, 13 Jan 2026 00:36:13 +0000</pubDate>
- <lastBuildDate>Tue, 13 Jan 2026 00:36:13 +0000</lastBuildDate>
+ <pubDate>Wed, 14 Jan 2026 00:37:16 +0000</pubDate>
+ <lastBuildDate>Wed, 14 Jan 2026 00:37:16 +0000</lastBuildDate>
<generator>Jekyll v4.4.1</generator>
<item>