rtic/1/api/embedded_hal/timer/trait.CountDown.html
2024-12-06 13:35:18 +00:00

50 lines
No EOL
8.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A count down timer"><title>CountDown in embedded_hal::timer - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-b0742ba02757f159.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="embedded_hal" data-themes="" data-resource-suffix="" data-rustdoc-version="1.83.0 (90b35a623 2024-11-26)" data-channel="1.83.0" data-search-js="search-f0d225181b97f9a4.js" data-settings-js="settings-805db61a62df4bd2.js" ><script src="../../static.files/storage-1d39b6787ed640ff.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-f070b9041d14864c.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-0111fcff984fae8f.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../embedded_hal/index.html">embedded_<wbr>hal</a><span class="version">0.2.7</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Count<wbr>Down</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#contract" title="Contract">Contract</a></li><li><a href="#examples" title="Examples">Examples</a></li></ul><h3><a href="#required-associated-types">Required Associated Types</a></h3><ul class="block"><li><a href="#associatedtype.Time" title="Time">Time</a></li></ul><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.start" title="start">start</a></li><li><a href="#tymethod.wait" title="wait">wait</a></li></ul><h3><a href="#object-safety">Object Safety</a></h3><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In embedded_<wbr>hal::<wbr>timer</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../index.html">embedded_hal</a>::<wbr><a href="index.html">timer</a></span><h1>Trait <span class="trait">CountDown</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/embedded_hal/timer.rs.html#60-78">source</a> </span></div><pre class="rust item-decl"><code>pub trait CountDown {
type <a href="#associatedtype.Time" class="associatedtype">Time</a>;
// Required methods
fn <a href="#tymethod.start" class="fn">start</a>&lt;T&gt;(&amp;mut self, count: T)
<span class="where">where T: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.CountDown.html#associatedtype.Time" title="type embedded_hal::timer::CountDown::Time">Time</a>&gt;</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.wait" class="fn">wait</a>(&amp;mut self) -&gt; Result&lt;<a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.unit.html">()</a>, <a class="enum" href="../../void/enum.Void.html" title="enum void::Void">Void</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A count down timer</p>
<h2 id="contract"><a class="doc-anchor" href="#contract">§</a>Contract</h2>
<ul>
<li><code>self.start(count); block!(self.wait());</code> MUST block for AT LEAST the time specified by
<code>count</code>.</li>
</ul>
<p><em>Note</em> that the implementer doesnt necessarily have to be a <em>downcounting</em> timer; it could also
be an <em>upcounting</em> timer as long as the above contract is upheld.</p>
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2>
<p>You can use this timer to create delays</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">extern crate </span>embedded_hal <span class="kw">as </span>hal;
<span class="attr">#[macro_use(block)]
</span><span class="kw">extern crate </span>nb;
<span class="kw">use </span>hal::prelude::<span class="kw-2">*</span>;
<span class="kw">fn </span>main() {
<span class="kw">let </span><span class="kw-2">mut </span>led: Led = {
<span class="comment">// ..
</span>};
<span class="kw">let </span><span class="kw-2">mut </span>timer: Timer6 = {
<span class="comment">// ..
</span>};
Led.on();
timer.start(<span class="number">1</span>.s());
<span class="macro">block!</span>(timer.wait()); <span class="comment">// blocks for 1 second
</span>Led.off();
}
</code></pre></div>
</div></details><h2 id="required-associated-types" class="section-header">Required Associated Types<a href="#required-associated-types" class="anchor">§</a></h2><div class="methods"><details class="toggle" open><summary><section id="associatedtype.Time" class="method"><a class="src rightside" href="../../src/embedded_hal/timer.rs.html#62">source</a><h4 class="code-header">type <a href="#associatedtype.Time" class="associatedtype">Time</a></h4></section></summary><div class="docblock"><p>The unit of time used by this timer</p>
</div></details></div><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.start" class="method"><a class="src rightside" href="../../src/embedded_hal/timer.rs.html#65-67">source</a><h4 class="code-header">fn <a href="#tymethod.start" class="fn">start</a>&lt;T&gt;(&amp;mut self, count: T)<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.83.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Self::<a class="associatedtype" href="trait.CountDown.html#associatedtype.Time" title="type embedded_hal::timer::CountDown::Time">Time</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Starts a new count down</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.wait" class="method"><a class="src rightside" href="../../src/embedded_hal/timer.rs.html#77">source</a><h4 class="code-header">fn <a href="#tymethod.wait" class="fn">wait</a>(&amp;mut self) -&gt; Result&lt;<a class="primitive" href="https://doc.rust-lang.org/1.83.0/core/primitive.unit.html">()</a>, <a class="enum" href="../../void/enum.Void.html" title="enum void::Void">Void</a>&gt;</h4></section></summary><div class="docblock"><p>Non-blockingly “waits” until the count down finishes</p>
<h5 id="contract-1"><a class="doc-anchor" href="#contract-1">§</a>Contract</h5>
<ul>
<li>If <code>Self: Periodic</code>, the timer will start a new count down right after the last one
finishes.</li>
<li>Otherwise the behavior of calling <code>wait</code> after the last call returned <code>Ok</code> is UNSPECIFIED.
Implementers are suggested to panic on this scenario to signal a programmer error.</li>
</ul>
</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.83.0/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/embedded_hal/timer/trait.CountDown.js" async></script></section></div></main></body></html>