]> Git Repo - pico-vscode.git/blob - web/docs/group__alarm.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__alarm.html
1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5         <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6         <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7         <meta name="generator" content="Doxygen 1.9.4"/>
8         <meta name="viewport" content="width=device-width, initial-scale=1"/>
9         <title>Raspberry Pi Pico SDK: alarm</title>
10         <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11         <script type="text/javascript" src="jquery.js"></script>
12         <script type="text/javascript" src="dynsections.js"></script>
13         <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17         <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20     <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21         <link href="doxygen.css" rel="stylesheet" type="text/css" />
22         <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
46                 <div class="navigation-footer">
47                         <img src="logo-mobile.svg" alt="Raspberry Pi">
48                         <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__alarm.html',''); initResizable(); });
87 /* @license-end */
88 </script>
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92      onmouseover="return searchBox.OnSearchSelectShow()"
93      onmouseout="return searchBox.OnSearchSelectHide()"
94      onkeydown="return searchBox.OnSearchSelectKey(event)">
95 </div>
96
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0" 
100         name="MSearchResults" id="MSearchResults">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#define-members">Macros</a> &#124;
107 <a href="#typedef-members">Typedefs</a> &#124;
108 <a href="#func-members">Functions</a>  </div>
109   <div class="headertitle"><div class="title">alarm<div class="ingroups"><a class="el" href="group__high__level.html">High Level APIs</a> &raquo; <a class="el" href="group__pico__time.html">pico_time</a></div></div></div>
110 </div><!--header-->
111 <div class="contents">
112
113 <p>Alarm functions for scheduling future execution.  
114 <a href="#details">More...</a></p>
115 <table class="memberdecls">
116 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
117 Macros</h2></td></tr>
118 <tr class="memitem:ga72314cafa18f7b2f90f9200be136ca27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga72314cafa18f7b2f90f9200be136ca27">PICO_TIME_DEFAULT_ALARM_POOL_DISABLED</a>&#160;&#160;&#160;0</td></tr>
119 <tr class="memdesc:ga72314cafa18f7b2f90f9200be136ca27"><td class="mdescLeft">&#160;</td><td class="mdescRight">If 1 then the default alarm pool is disabled (so no timer_alarm is claimed for the pool)  <a href="group__alarm.html#ga72314cafa18f7b2f90f9200be136ca27">More...</a><br /></td></tr>
120 <tr class="separator:ga72314cafa18f7b2f90f9200be136ca27"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <tr class="memitem:ga40b4a03bf9e967d4e7170d20c5c9fb15"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga40b4a03bf9e967d4e7170d20c5c9fb15">PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM</a>&#160;&#160;&#160;3</td></tr>
122 <tr class="memdesc:ga40b4a03bf9e967d4e7170d20c5c9fb15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects which timer_alarm is used for the default alarm pool.  <a href="group__alarm.html#ga40b4a03bf9e967d4e7170d20c5c9fb15">More...</a><br /></td></tr>
123 <tr class="separator:ga40b4a03bf9e967d4e7170d20c5c9fb15"><td class="memSeparator" colspan="2">&#160;</td></tr>
124 <tr class="memitem:ga4bb3180aa64f3c9af8c521ec1b22bdb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga4bb3180aa64f3c9af8c521ec1b22bdb2">PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS</a>&#160;&#160;&#160;16</td></tr>
125 <tr class="memdesc:ga4bb3180aa64f3c9af8c521ec1b22bdb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the maximum number of concurrent timers in the default alarm pool.  <a href="group__alarm.html#ga4bb3180aa64f3c9af8c521ec1b22bdb2">More...</a><br /></td></tr>
126 <tr class="separator:ga4bb3180aa64f3c9af8c521ec1b22bdb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
127 </table><table class="memberdecls">
128 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
129 Typedefs</h2></td></tr>
130 <tr class="memitem:gaa593548569c182a0d65d2e06a9c3493b"><td class="memItemLeft" align="right" valign="top">typedef int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a></td></tr>
131 <tr class="memdesc:gaa593548569c182a0d65d2e06a9c3493b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The identifier for an alarm.  <a href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">More...</a><br /></td></tr>
132 <tr class="separator:gaa593548569c182a0d65d2e06a9c3493b"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:gade88ed45e9b59ad39d91f17c8709c16a"><td class="memItemLeft" align="right" valign="top">typedef int64_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>) (<a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> id, void *user_data)</td></tr>
134 <tr class="memdesc:gade88ed45e9b59ad39d91f17c8709c16a"><td class="mdescLeft">&#160;</td><td class="mdescRight">User alarm callback.  <a href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">More...</a><br /></td></tr>
135 <tr class="separator:gade88ed45e9b59ad39d91f17c8709c16a"><td class="memSeparator" colspan="2">&#160;</td></tr>
136 </table><table class="memberdecls">
137 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
138 Functions</h2></td></tr>
139 <tr class="memitem:gab363026fa15b43405538eb087ee7cfa9"><td class="memItemLeft" align="right" valign="top"><a id="gab363026fa15b43405538eb087ee7cfa9" name="gab363026fa15b43405538eb087ee7cfa9"></a>
140 void&#160;</td><td class="memItemRight" valign="bottom"><b>alarm_pool_init_default</b> (void)</td></tr>
141 <tr class="memdesc:gab363026fa15b43405538eb087ee7cfa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create the default alarm pool (if not already created or disabled) <br /></td></tr>
142 <tr class="separator:gab363026fa15b43405538eb087ee7cfa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:ga5092ceb879289c0a597a389f34b4815e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e">alarm_pool_get_default</a> (void)</td></tr>
144 <tr class="memdesc:ga5092ceb879289c0a597a389f34b4815e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default alarm pool used when alarms are added without specifying an alarm pool, and also used by the SDK to support lower power sleeps and timeouts.  <a href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e">More...</a><br /></td></tr>
145 <tr class="separator:ga5092ceb879289c0a597a389f34b4815e"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:ga185db8b4e54a13d19fca6e5d2761bae6"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga185db8b4e54a13d19fca6e5d2761bae6">alarm_pool_create</a> (uint timer_alarm_num, uint max_timers)</td></tr>
147 <tr class="memdesc:ga185db8b4e54a13d19fca6e5d2761bae6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an alarm pool.  <a href="group__alarm.html#ga185db8b4e54a13d19fca6e5d2761bae6">More...</a><br /></td></tr>
148 <tr class="separator:ga185db8b4e54a13d19fca6e5d2761bae6"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 <tr class="memitem:ga722973ee82ee4cffb438dc478471d138"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga722973ee82ee4cffb438dc478471d138">alarm_pool_create_with_unused_hardware_alarm</a> (uint max_timers)</td></tr>
150 <tr class="memdesc:ga722973ee82ee4cffb438dc478471d138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an alarm pool, claiming an used timer_alarm to back it.  <a href="group__alarm.html#ga722973ee82ee4cffb438dc478471d138">More...</a><br /></td></tr>
151 <tr class="separator:ga722973ee82ee4cffb438dc478471d138"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:gaeb9321260fecc29b551d5e6ceffccc99"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gaeb9321260fecc29b551d5e6ceffccc99">alarm_pool_timer_alarm_num</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool)</td></tr>
153 <tr class="memdesc:gaeb9321260fecc29b551d5e6ceffccc99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the timer alarm used by an alarm pool.  <a href="group__alarm.html#gaeb9321260fecc29b551d5e6ceffccc99">More...</a><br /></td></tr>
154 <tr class="separator:gaeb9321260fecc29b551d5e6ceffccc99"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:ga4918e03a3ddd5c328d65bd014d26856b"><td class="memItemLeft" align="right" valign="top">uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga4918e03a3ddd5c328d65bd014d26856b">alarm_pool_core_num</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool)</td></tr>
156 <tr class="memdesc:ga4918e03a3ddd5c328d65bd014d26856b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the core number the alarm pool was initialized on (and hence callbacks are called on)  <a href="group__alarm.html#ga4918e03a3ddd5c328d65bd014d26856b">More...</a><br /></td></tr>
157 <tr class="separator:ga4918e03a3ddd5c328d65bd014d26856b"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:gae7536c4d34088a2d19b2da92b87cbb4e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gae7536c4d34088a2d19b2da92b87cbb4e">alarm_pool_destroy</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool)</td></tr>
159 <tr class="memdesc:gae7536c4d34088a2d19b2da92b87cbb4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy the alarm pool, cancelling all alarms and freeing up the underlying timer_alarm.  <a href="group__alarm.html#gae7536c4d34088a2d19b2da92b87cbb4e">More...</a><br /></td></tr>
160 <tr class="separator:gae7536c4d34088a2d19b2da92b87cbb4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:gab75446a927e4e870ad27fde145a88019"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gab75446a927e4e870ad27fde145a88019">alarm_pool_add_alarm_at</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> time, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
162 <tr class="memdesc:gab75446a927e4e870ad27fde145a88019"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called at a specific time.  <a href="group__alarm.html#gab75446a927e4e870ad27fde145a88019">More...</a><br /></td></tr>
163 <tr class="separator:gab75446a927e4e870ad27fde145a88019"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:ga72bfc8c2dd5bf334cd68af2e349a1b37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga72bfc8c2dd5bf334cd68af2e349a1b37">alarm_pool_add_alarm_at_force_in_context</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> time, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data)</td></tr>
165 <tr class="memdesc:ga72bfc8c2dd5bf334cd68af2e349a1b37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called at or after a specific time.  <a href="group__alarm.html#ga72bfc8c2dd5bf334cd68af2e349a1b37">More...</a><br /></td></tr>
166 <tr class="separator:ga72bfc8c2dd5bf334cd68af2e349a1b37"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:ga0d00072e81de2d54fa690dc4b4bfe408"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga0d00072e81de2d54fa690dc4b4bfe408">alarm_pool_add_alarm_in_us</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, uint64_t us, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
168 <tr class="memdesc:ga0d00072e81de2d54fa690dc4b4bfe408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called after a delay specified in microseconds.  <a href="group__alarm.html#ga0d00072e81de2d54fa690dc4b4bfe408">More...</a><br /></td></tr>
169 <tr class="separator:ga0d00072e81de2d54fa690dc4b4bfe408"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 <tr class="memitem:ga6e32765c525683f216fc42bd1984e239"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga6e32765c525683f216fc42bd1984e239">alarm_pool_add_alarm_in_ms</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, uint32_t ms, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
171 <tr class="memdesc:ga6e32765c525683f216fc42bd1984e239"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called after a delay specified in milliseconds.  <a href="group__alarm.html#ga6e32765c525683f216fc42bd1984e239">More...</a><br /></td></tr>
172 <tr class="separator:ga6e32765c525683f216fc42bd1984e239"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:ga342ebecd5ebc1a39f1da0bac81069712"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga342ebecd5ebc1a39f1da0bac81069712">alarm_pool_remaining_alarm_time_us</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
174 <tr class="memdesc:ga342ebecd5ebc1a39f1da0bac81069712"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the time remaining before the next trigger of an alarm.  <a href="group__alarm.html#ga342ebecd5ebc1a39f1da0bac81069712">More...</a><br /></td></tr>
175 <tr class="separator:ga342ebecd5ebc1a39f1da0bac81069712"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:ga3a9a4343aa9efe22e4324dc82ad2f3ec"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga3a9a4343aa9efe22e4324dc82ad2f3ec">alarm_pool_remaining_alarm_time_ms</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
177 <tr class="memdesc:ga3a9a4343aa9efe22e4324dc82ad2f3ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the time remaining before the next trigger of an alarm.  <a href="group__alarm.html#ga3a9a4343aa9efe22e4324dc82ad2f3ec">More...</a><br /></td></tr>
178 <tr class="separator:ga3a9a4343aa9efe22e4324dc82ad2f3ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 <tr class="memitem:ga02cc23b4a3109fb8c2d57e24981f2932"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga02cc23b4a3109fb8c2d57e24981f2932">alarm_pool_cancel_alarm</a> (<a class="el" href="structalarm__pool.html">alarm_pool_t</a> *pool, <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
180 <tr class="memdesc:ga02cc23b4a3109fb8c2d57e24981f2932"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel an alarm.  <a href="group__alarm.html#ga02cc23b4a3109fb8c2d57e24981f2932">More...</a><br /></td></tr>
181 <tr class="separator:ga02cc23b4a3109fb8c2d57e24981f2932"><td class="memSeparator" colspan="2">&#160;</td></tr>
182 <tr class="memitem:gae98ddd58a2c1d142eb6db7882512ce8d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gae98ddd58a2c1d142eb6db7882512ce8d">add_alarm_at</a> (<a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> time, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
183 <tr class="memdesc:gae98ddd58a2c1d142eb6db7882512ce8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called at a specific time.  <a href="group__alarm.html#gae98ddd58a2c1d142eb6db7882512ce8d">More...</a><br /></td></tr>
184 <tr class="separator:gae98ddd58a2c1d142eb6db7882512ce8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
185 <tr class="memitem:ga69b4481d9d9a906caefb31c54a048575"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga69b4481d9d9a906caefb31c54a048575">add_alarm_in_us</a> (uint64_t us, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
186 <tr class="memdesc:ga69b4481d9d9a906caefb31c54a048575"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called after a delay specified in microseconds.  <a href="group__alarm.html#ga69b4481d9d9a906caefb31c54a048575">More...</a><br /></td></tr>
187 <tr class="separator:ga69b4481d9d9a906caefb31c54a048575"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <tr class="memitem:ga8bb045ab597f773d7d5fdfea5db94f69"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga8bb045ab597f773d7d5fdfea5db94f69">add_alarm_in_ms</a> (uint32_t ms, <a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a> callback, void *user_data, bool fire_if_past)</td></tr>
189 <tr class="memdesc:ga8bb045ab597f773d7d5fdfea5db94f69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add an alarm callback to be called after a delay specified in milliseconds.  <a href="group__alarm.html#ga8bb045ab597f773d7d5fdfea5db94f69">More...</a><br /></td></tr>
190 <tr class="separator:ga8bb045ab597f773d7d5fdfea5db94f69"><td class="memSeparator" colspan="2">&#160;</td></tr>
191 <tr class="memitem:gae99f63dc25fe5c3a0d78d9fb90308b1b"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#gae99f63dc25fe5c3a0d78d9fb90308b1b">cancel_alarm</a> (<a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
192 <tr class="memdesc:gae99f63dc25fe5c3a0d78d9fb90308b1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel an alarm from the default alarm pool.  <a href="group__alarm.html#gae99f63dc25fe5c3a0d78d9fb90308b1b">More...</a><br /></td></tr>
193 <tr class="separator:gae99f63dc25fe5c3a0d78d9fb90308b1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
194 <tr class="memitem:ga549331a1b34938eb9f9dae03712a714c"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga549331a1b34938eb9f9dae03712a714c">remaining_alarm_time_us</a> (<a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
195 <tr class="memdesc:ga549331a1b34938eb9f9dae03712a714c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the time remaining before the next trigger of an alarm.  <a href="group__alarm.html#ga549331a1b34938eb9f9dae03712a714c">More...</a><br /></td></tr>
196 <tr class="separator:ga549331a1b34938eb9f9dae03712a714c"><td class="memSeparator" colspan="2">&#160;</td></tr>
197 <tr class="memitem:ga61affbec7fedd98582b1df8b5ca3fe3b"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__alarm.html#ga61affbec7fedd98582b1df8b5ca3fe3b">remaining_alarm_time_ms</a> (<a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_id)</td></tr>
198 <tr class="memdesc:ga61affbec7fedd98582b1df8b5ca3fe3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the time remaining before the next trigger of an alarm.  <a href="group__alarm.html#ga61affbec7fedd98582b1df8b5ca3fe3b">More...</a><br /></td></tr>
199 <tr class="separator:ga61affbec7fedd98582b1df8b5ca3fe3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
200 </table>
201 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
202 <p >Alarm functions for scheduling future execution. </p>
203 <p >Alarms are added to alarm pools, which may hold a certain fixed number of active alarms. Each alarm pool utilizes one of four underlying timer_alarms, thus you may have up to four alarm pools. An alarm pool calls (except when the callback would happen before or during being set) the callback on the core from which the alarm pool was created. Callbacks are called from the timer_alarm IRQ handler, so care must be taken in their implementation.</p>
204 <p >A default pool is created the core specified by PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM on core 0, and may be used by the method variants that take no alarm pool parameter.</p>
205 <dl class="section see"><dt>See also</dt><dd>struct <a class="el" href="structalarm__pool.html">alarm_pool</a> </dd>
206 <dd>
207 <a class="el" href="group__hardware__timer.html" title="Low-level hardware timer API.">hardware_timer</a> </dd></dl>
208 <h2 class="groupheader">Macro Definition Documentation</h2>
209 <a id="ga72314cafa18f7b2f90f9200be136ca27" name="ga72314cafa18f7b2f90f9200be136ca27"></a>
210 <h2 class="memtitle"><span class="permalink"><a href="#ga72314cafa18f7b2f90f9200be136ca27">&#9670;&nbsp;</a></span>PICO_TIME_DEFAULT_ALARM_POOL_DISABLED</h2>
211
212 <div class="memitem">
213 <div class="memproto">
214       <table class="memname">
215         <tr>
216           <td class="memname">#define PICO_TIME_DEFAULT_ALARM_POOL_DISABLED&#160;&#160;&#160;0</td>
217         </tr>
218       </table>
219 </div><div class="memdoc">
220
221 <p>If 1 then the default alarm pool is disabled (so no timer_alarm is claimed for the pool) </p>
222 <dl class="section note"><dt>Note</dt><dd>Setting to 1 may cause some code not to compile as default timer pool related methods are removed</dd>
223 <dd>
224 When the default alarm pool is disabled, <em>sleep_</em> methods and timeouts are no longer lower powered (they become <em>busy_wait_</em>)</dd></dl>
225 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga40b4a03bf9e967d4e7170d20c5c9fb15" title="Selects which timer_alarm is used for the default alarm pool.">PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM</a> </dd>
226 <dd>
227 <a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e" title="The default alarm pool used when alarms are added without specifying an alarm pool,...">alarm_pool_get_default()</a> </dd></dl>
228
229 </div>
230 </div>
231 <a id="ga40b4a03bf9e967d4e7170d20c5c9fb15" name="ga40b4a03bf9e967d4e7170d20c5c9fb15"></a>
232 <h2 class="memtitle"><span class="permalink"><a href="#ga40b4a03bf9e967d4e7170d20c5c9fb15">&#9670;&nbsp;</a></span>PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM</h2>
233
234 <div class="memitem">
235 <div class="memproto">
236       <table class="memname">
237         <tr>
238           <td class="memname">#define PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM&#160;&#160;&#160;3</td>
239         </tr>
240       </table>
241 </div><div class="memdoc">
242
243 <p>Selects which timer_alarm is used for the default alarm pool. </p>
244 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e" title="The default alarm pool used when alarms are added without specifying an alarm pool,...">alarm_pool_get_default()</a> </dd></dl>
245
246 </div>
247 </div>
248 <a id="ga4bb3180aa64f3c9af8c521ec1b22bdb2" name="ga4bb3180aa64f3c9af8c521ec1b22bdb2"></a>
249 <h2 class="memtitle"><span class="permalink"><a href="#ga4bb3180aa64f3c9af8c521ec1b22bdb2">&#9670;&nbsp;</a></span>PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS</h2>
250
251 <div class="memitem">
252 <div class="memproto">
253       <table class="memname">
254         <tr>
255           <td class="memname">#define PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS&#160;&#160;&#160;16</td>
256         </tr>
257       </table>
258 </div><div class="memdoc">
259
260 <p>Selects the maximum number of concurrent timers in the default alarm pool. </p>
261 <dl class="section note"><dt>Note</dt><dd>For implementation reasons this is limited to PICO_PHEAP_MAX_ENTRIES which defaults to 255 </dd></dl>
262 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga40b4a03bf9e967d4e7170d20c5c9fb15" title="Selects which timer_alarm is used for the default alarm pool.">PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM</a> </dd>
263 <dd>
264 <a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e" title="The default alarm pool used when alarms are added without specifying an alarm pool,...">alarm_pool_get_default()</a> </dd></dl>
265
266 </div>
267 </div>
268 <h2 class="groupheader">Typedef Documentation</h2>
269 <a id="gade88ed45e9b59ad39d91f17c8709c16a" name="gade88ed45e9b59ad39d91f17c8709c16a"></a>
270 <h2 class="memtitle"><span class="permalink"><a href="#gade88ed45e9b59ad39d91f17c8709c16a">&#9670;&nbsp;</a></span>alarm_callback_t</h2>
271
272 <div class="memitem">
273 <div class="memproto">
274       <table class="memname">
275         <tr>
276           <td class="memname">typedef int64_t(* alarm_callback_t) (<a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> id, void *user_data)</td>
277         </tr>
278       </table>
279 </div><div class="memdoc">
280
281 <p>User alarm callback. </p>
282 <dl class="params"><dt>Parameters</dt><dd>
283   <table class="params">
284     <tr><td class="paramname">id</td><td>the alarm_id as returned when the alarm was added </td></tr>
285     <tr><td class="paramname">user_data</td><td>the user data passed when the alarm was added </td></tr>
286   </table>
287   </dd>
288 </dl>
289 <dl class="section return"><dt>Returns</dt><dd>&lt;0 to reschedule the same alarm this many us from the time the alarm was previously scheduled to fire </dd>
290 <dd>
291 &gt;0 to reschedule the same alarm this many us from the time this method returns </dd>
292 <dd>
293 0 to not reschedule the alarm </dd></dl>
294
295 </div>
296 </div>
297 <a id="gaa593548569c182a0d65d2e06a9c3493b" name="gaa593548569c182a0d65d2e06a9c3493b"></a>
298 <h2 class="memtitle"><span class="permalink"><a href="#gaa593548569c182a0d65d2e06a9c3493b">&#9670;&nbsp;</a></span>alarm_id_t</h2>
299
300 <div class="memitem">
301 <div class="memproto">
302       <table class="memname">
303         <tr>
304           <td class="memname">typedef int32_t <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a></td>
305         </tr>
306       </table>
307 </div><div class="memdoc">
308
309 <p>The identifier for an alarm. </p>
310 <dl class="section note"><dt>Note</dt><dd>this identifier is signed because &lt;0 is used as an error condition when creating alarms</dd>
311 <dd>
312 alarm ids may be reused, however for convenience the implementation makes an attempt to defer reusing as long as possible. You should certainly expect it to be hundreds of ids before one is reused, although in most cases it is more. Nonetheless care must still be taken when cancelling alarms or other functionality based on alarms when the alarm may have expired, as eventually the alarm id may be reused for another alarm.</dd></dl>
313 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__base.html#gaddcb20bc9a61ceff479aa87369a862aa" title="Common return codes from pico_sdk methods that return a status.">pico_error_codes</a> </dd></dl>
314
315 </div>
316 </div>
317 <h2 class="groupheader">Function Documentation</h2>
318 <a id="gae98ddd58a2c1d142eb6db7882512ce8d" name="gae98ddd58a2c1d142eb6db7882512ce8d"></a>
319 <h2 class="memtitle"><span class="permalink"><a href="#gae98ddd58a2c1d142eb6db7882512ce8d">&#9670;&nbsp;</a></span>add_alarm_at()</h2>
320
321 <div class="memitem">
322 <div class="memproto">
323 <table class="mlabels">
324   <tr>
325   <td class="mlabels-left">
326       <table class="memname">
327         <tr>
328           <td class="memname">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> add_alarm_at </td>
329           <td>(</td>
330           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
331           <td class="paramname"><em>time</em>, </td>
332         </tr>
333         <tr>
334           <td class="paramkey"></td>
335           <td></td>
336           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
337           <td class="paramname"><em>callback</em>, </td>
338         </tr>
339         <tr>
340           <td class="paramkey"></td>
341           <td></td>
342           <td class="paramtype">void *&#160;</td>
343           <td class="paramname"><em>user_data</em>, </td>
344         </tr>
345         <tr>
346           <td class="paramkey"></td>
347           <td></td>
348           <td class="paramtype">bool&#160;</td>
349           <td class="paramname"><em>fire_if_past</em>&#160;</td>
350         </tr>
351         <tr>
352           <td></td>
353           <td>)</td>
354           <td></td><td></td>
355         </tr>
356       </table>
357   </td>
358   <td class="mlabels-right">
359 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
360   </tr>
361 </table>
362 </div><div class="memdoc">
363
364 <p>Add an alarm callback to be called at a specific time. </p>
365 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
366 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
367 <dl class="params"><dt>Parameters</dt><dd>
368   <table class="params">
369     <tr><td class="paramname">time</td><td>the timestamp when (after which) the callback should fire </td></tr>
370     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
371     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
372     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls before or during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
373   </table>
374   </dd>
375 </dl>
376 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id </dd>
377 <dd>
378 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
379 <dd>
380 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
381
382 </div>
383 </div>
384 <a id="ga8bb045ab597f773d7d5fdfea5db94f69" name="ga8bb045ab597f773d7d5fdfea5db94f69"></a>
385 <h2 class="memtitle"><span class="permalink"><a href="#ga8bb045ab597f773d7d5fdfea5db94f69">&#9670;&nbsp;</a></span>add_alarm_in_ms()</h2>
386
387 <div class="memitem">
388 <div class="memproto">
389 <table class="mlabels">
390   <tr>
391   <td class="mlabels-left">
392       <table class="memname">
393         <tr>
394           <td class="memname">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> add_alarm_in_ms </td>
395           <td>(</td>
396           <td class="paramtype">uint32_t&#160;</td>
397           <td class="paramname"><em>ms</em>, </td>
398         </tr>
399         <tr>
400           <td class="paramkey"></td>
401           <td></td>
402           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
403           <td class="paramname"><em>callback</em>, </td>
404         </tr>
405         <tr>
406           <td class="paramkey"></td>
407           <td></td>
408           <td class="paramtype">void *&#160;</td>
409           <td class="paramname"><em>user_data</em>, </td>
410         </tr>
411         <tr>
412           <td class="paramkey"></td>
413           <td></td>
414           <td class="paramtype">bool&#160;</td>
415           <td class="paramname"><em>fire_if_past</em>&#160;</td>
416         </tr>
417         <tr>
418           <td></td>
419           <td>)</td>
420           <td></td><td></td>
421         </tr>
422       </table>
423   </td>
424   <td class="mlabels-right">
425 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
426   </tr>
427 </table>
428 </div><div class="memdoc">
429
430 <p>Add an alarm callback to be called after a delay specified in milliseconds. </p>
431 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
432 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
433 <dl class="params"><dt>Parameters</dt><dd>
434   <table class="params">
435     <tr><td class="paramname">ms</td><td>the delay (from now) in milliseconds when (after which) the callback should fire </td></tr>
436     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
437     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
438     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
439   </table>
440   </dd>
441 </dl>
442 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id </dd>
443 <dd>
444 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
445 <dd>
446 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
447
448 </div>
449 </div>
450 <a id="ga69b4481d9d9a906caefb31c54a048575" name="ga69b4481d9d9a906caefb31c54a048575"></a>
451 <h2 class="memtitle"><span class="permalink"><a href="#ga69b4481d9d9a906caefb31c54a048575">&#9670;&nbsp;</a></span>add_alarm_in_us()</h2>
452
453 <div class="memitem">
454 <div class="memproto">
455 <table class="mlabels">
456   <tr>
457   <td class="mlabels-left">
458       <table class="memname">
459         <tr>
460           <td class="memname">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> add_alarm_in_us </td>
461           <td>(</td>
462           <td class="paramtype">uint64_t&#160;</td>
463           <td class="paramname"><em>us</em>, </td>
464         </tr>
465         <tr>
466           <td class="paramkey"></td>
467           <td></td>
468           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
469           <td class="paramname"><em>callback</em>, </td>
470         </tr>
471         <tr>
472           <td class="paramkey"></td>
473           <td></td>
474           <td class="paramtype">void *&#160;</td>
475           <td class="paramname"><em>user_data</em>, </td>
476         </tr>
477         <tr>
478           <td class="paramkey"></td>
479           <td></td>
480           <td class="paramtype">bool&#160;</td>
481           <td class="paramname"><em>fire_if_past</em>&#160;</td>
482         </tr>
483         <tr>
484           <td></td>
485           <td>)</td>
486           <td></td><td></td>
487         </tr>
488       </table>
489   </td>
490   <td class="mlabels-right">
491 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
492   </tr>
493 </table>
494 </div><div class="memdoc">
495
496 <p>Add an alarm callback to be called after a delay specified in microseconds. </p>
497 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
498 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
499 <dl class="params"><dt>Parameters</dt><dd>
500   <table class="params">
501     <tr><td class="paramname">us</td><td>the delay (from now) in microseconds when (after which) the callback should fire </td></tr>
502     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
503     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
504     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
505   </table>
506   </dd>
507 </dl>
508 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id </dd>
509 <dd>
510 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
511 <dd>
512 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
513
514 </div>
515 </div>
516 <a id="gab75446a927e4e870ad27fde145a88019" name="gab75446a927e4e870ad27fde145a88019"></a>
517 <h2 class="memtitle"><span class="permalink"><a href="#gab75446a927e4e870ad27fde145a88019">&#9670;&nbsp;</a></span>alarm_pool_add_alarm_at()</h2>
518
519 <div class="memitem">
520 <div class="memproto">
521       <table class="memname">
522         <tr>
523           <td class="memname"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_pool_add_alarm_at </td>
524           <td>(</td>
525           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
526           <td class="paramname"><em>pool</em>, </td>
527         </tr>
528         <tr>
529           <td class="paramkey"></td>
530           <td></td>
531           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
532           <td class="paramname"><em>time</em>, </td>
533         </tr>
534         <tr>
535           <td class="paramkey"></td>
536           <td></td>
537           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
538           <td class="paramname"><em>callback</em>, </td>
539         </tr>
540         <tr>
541           <td class="paramkey"></td>
542           <td></td>
543           <td class="paramtype">void *&#160;</td>
544           <td class="paramname"><em>user_data</em>, </td>
545         </tr>
546         <tr>
547           <td class="paramkey"></td>
548           <td></td>
549           <td class="paramtype">bool&#160;</td>
550           <td class="paramname"><em>fire_if_past</em>&#160;</td>
551         </tr>
552         <tr>
553           <td></td>
554           <td>)</td>
555           <td></td><td></td>
556         </tr>
557       </table>
558 </div><div class="memdoc">
559
560 <p>Add an alarm callback to be called at a specific time. </p>
561 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core the alarm pool was created on. If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
562 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
563 <dl class="params"><dt>Parameters</dt><dd>
564   <table class="params">
565     <tr><td class="paramname">pool</td><td>the alarm pool to use for scheduling the callback (this determines which timer_alarm is used, and which core calls the callback) </td></tr>
566     <tr><td class="paramname">time</td><td>the timestamp when (after which) the callback should fire </td></tr>
567     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
568     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
569     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls before or during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
570   </table>
571   </dd>
572 </dl>
573 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id for an active (at the time of return) alarm </dd>
574 <dd>
575 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
576 <dd>
577 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
578
579 </div>
580 </div>
581 <a id="ga72bfc8c2dd5bf334cd68af2e349a1b37" name="ga72bfc8c2dd5bf334cd68af2e349a1b37"></a>
582 <h2 class="memtitle"><span class="permalink"><a href="#ga72bfc8c2dd5bf334cd68af2e349a1b37">&#9670;&nbsp;</a></span>alarm_pool_add_alarm_at_force_in_context()</h2>
583
584 <div class="memitem">
585 <div class="memproto">
586       <table class="memname">
587         <tr>
588           <td class="memname"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_pool_add_alarm_at_force_in_context </td>
589           <td>(</td>
590           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
591           <td class="paramname"><em>pool</em>, </td>
592         </tr>
593         <tr>
594           <td class="paramkey"></td>
595           <td></td>
596           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
597           <td class="paramname"><em>time</em>, </td>
598         </tr>
599         <tr>
600           <td class="paramkey"></td>
601           <td></td>
602           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
603           <td class="paramname"><em>callback</em>, </td>
604         </tr>
605         <tr>
606           <td class="paramkey"></td>
607           <td></td>
608           <td class="paramtype">void *&#160;</td>
609           <td class="paramname"><em>user_data</em>&#160;</td>
610         </tr>
611         <tr>
612           <td></td>
613           <td>)</td>
614           <td></td><td></td>
615         </tr>
616       </table>
617 </div><div class="memdoc">
618
619 <p>Add an alarm callback to be called at or after a specific time. </p>
620 <p >The callback is called as soon as possible after the time specified from an IRQ handler on the core the alarm pool was created on. Unlike <a class="el" href="group__alarm.html#gab75446a927e4e870ad27fde145a88019">alarm_pool_add_alarm_at</a>, this method guarantees to call the callback from that core even if the time is during this method call or in the past.</p>
621 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
622 <dl class="params"><dt>Parameters</dt><dd>
623   <table class="params">
624     <tr><td class="paramname">pool</td><td>the alarm pool to use for scheduling the callback (this determines which timer_alarm is used, and which core calls the callback) </td></tr>
625     <tr><td class="paramname">time</td><td>the timestamp when (after which) the callback should fire </td></tr>
626     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
627     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
628   </table>
629   </dd>
630 </dl>
631 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id for an active (at the time of return) alarm </dd>
632 <dd>
633 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
634
635 </div>
636 </div>
637 <a id="ga6e32765c525683f216fc42bd1984e239" name="ga6e32765c525683f216fc42bd1984e239"></a>
638 <h2 class="memtitle"><span class="permalink"><a href="#ga6e32765c525683f216fc42bd1984e239">&#9670;&nbsp;</a></span>alarm_pool_add_alarm_in_ms()</h2>
639
640 <div class="memitem">
641 <div class="memproto">
642 <table class="mlabels">
643   <tr>
644   <td class="mlabels-left">
645       <table class="memname">
646         <tr>
647           <td class="memname">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_pool_add_alarm_in_ms </td>
648           <td>(</td>
649           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
650           <td class="paramname"><em>pool</em>, </td>
651         </tr>
652         <tr>
653           <td class="paramkey"></td>
654           <td></td>
655           <td class="paramtype">uint32_t&#160;</td>
656           <td class="paramname"><em>ms</em>, </td>
657         </tr>
658         <tr>
659           <td class="paramkey"></td>
660           <td></td>
661           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
662           <td class="paramname"><em>callback</em>, </td>
663         </tr>
664         <tr>
665           <td class="paramkey"></td>
666           <td></td>
667           <td class="paramtype">void *&#160;</td>
668           <td class="paramname"><em>user_data</em>, </td>
669         </tr>
670         <tr>
671           <td class="paramkey"></td>
672           <td></td>
673           <td class="paramtype">bool&#160;</td>
674           <td class="paramname"><em>fire_if_past</em>&#160;</td>
675         </tr>
676         <tr>
677           <td></td>
678           <td>)</td>
679           <td></td><td></td>
680         </tr>
681       </table>
682   </td>
683   <td class="mlabels-right">
684 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
685   </tr>
686 </table>
687 </div><div class="memdoc">
688
689 <p>Add an alarm callback to be called after a delay specified in milliseconds. </p>
690 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core the alarm pool was created on. If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
691 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
692 <dl class="params"><dt>Parameters</dt><dd>
693   <table class="params">
694     <tr><td class="paramname">pool</td><td>the alarm pool to use for scheduling the callback (this determines which timer_alarm is used, and which core calls the callback) </td></tr>
695     <tr><td class="paramname">ms</td><td>the delay (from now) in milliseconds when (after which) the callback should fire </td></tr>
696     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
697     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
698     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls before or during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
699   </table>
700   </dd>
701 </dl>
702 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id </dd>
703 <dd>
704 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
705 <dd>
706 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
707
708 </div>
709 </div>
710 <a id="ga0d00072e81de2d54fa690dc4b4bfe408" name="ga0d00072e81de2d54fa690dc4b4bfe408"></a>
711 <h2 class="memtitle"><span class="permalink"><a href="#ga0d00072e81de2d54fa690dc4b4bfe408">&#9670;&nbsp;</a></span>alarm_pool_add_alarm_in_us()</h2>
712
713 <div class="memitem">
714 <div class="memproto">
715 <table class="mlabels">
716   <tr>
717   <td class="mlabels-left">
718       <table class="memname">
719         <tr>
720           <td class="memname">static <a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> alarm_pool_add_alarm_in_us </td>
721           <td>(</td>
722           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
723           <td class="paramname"><em>pool</em>, </td>
724         </tr>
725         <tr>
726           <td class="paramkey"></td>
727           <td></td>
728           <td class="paramtype">uint64_t&#160;</td>
729           <td class="paramname"><em>us</em>, </td>
730         </tr>
731         <tr>
732           <td class="paramkey"></td>
733           <td></td>
734           <td class="paramtype"><a class="el" href="group__alarm.html#gade88ed45e9b59ad39d91f17c8709c16a">alarm_callback_t</a>&#160;</td>
735           <td class="paramname"><em>callback</em>, </td>
736         </tr>
737         <tr>
738           <td class="paramkey"></td>
739           <td></td>
740           <td class="paramtype">void *&#160;</td>
741           <td class="paramname"><em>user_data</em>, </td>
742         </tr>
743         <tr>
744           <td class="paramkey"></td>
745           <td></td>
746           <td class="paramtype">bool&#160;</td>
747           <td class="paramname"><em>fire_if_past</em>&#160;</td>
748         </tr>
749         <tr>
750           <td></td>
751           <td>)</td>
752           <td></td><td></td>
753         </tr>
754       </table>
755   </td>
756   <td class="mlabels-right">
757 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
758   </tr>
759 </table>
760 </div><div class="memdoc">
761
762 <p>Add an alarm callback to be called after a delay specified in microseconds. </p>
763 <p >Generally the callback is called as soon as possible after the time specified from an IRQ handler on the core the alarm pool was created on. If the callback is in the past or happens before the alarm setup could be completed, then this method will optionally call the callback itself and then return a return code to indicate that the target time has passed.</p>
764 <dl class="section note"><dt>Note</dt><dd>It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core.</dd></dl>
765 <dl class="params"><dt>Parameters</dt><dd>
766   <table class="params">
767     <tr><td class="paramname">pool</td><td>the alarm pool to use for scheduling the callback (this determines which timer_alarm is used, and which core calls the callback) </td></tr>
768     <tr><td class="paramname">us</td><td>the delay (from now) in microseconds when (after which) the callback should fire </td></tr>
769     <tr><td class="paramname">callback</td><td>the callback function </td></tr>
770     <tr><td class="paramname">user_data</td><td>user data to pass to the callback function </td></tr>
771     <tr><td class="paramname">fire_if_past</td><td>if true, and the alarm time falls during this call before the alarm can be set, then the callback should be called during (by) this function instead </td></tr>
772   </table>
773   </dd>
774 </dl>
775 <dl class="section return"><dt>Returns</dt><dd>&gt;0 the alarm id </dd>
776 <dd>
777 0 if the alarm time passed before or during the call and fire_if_past was false </dd>
778 <dd>
779 &lt;0 if there were no alarm slots available, or other error occurred </dd></dl>
780
781 </div>
782 </div>
783 <a id="ga02cc23b4a3109fb8c2d57e24981f2932" name="ga02cc23b4a3109fb8c2d57e24981f2932"></a>
784 <h2 class="memtitle"><span class="permalink"><a href="#ga02cc23b4a3109fb8c2d57e24981f2932">&#9670;&nbsp;</a></span>alarm_pool_cancel_alarm()</h2>
785
786 <div class="memitem">
787 <div class="memproto">
788       <table class="memname">
789         <tr>
790           <td class="memname">bool alarm_pool_cancel_alarm </td>
791           <td>(</td>
792           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
793           <td class="paramname"><em>pool</em>, </td>
794         </tr>
795         <tr>
796           <td class="paramkey"></td>
797           <td></td>
798           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
799           <td class="paramname"><em>alarm_id</em>&#160;</td>
800         </tr>
801         <tr>
802           <td></td>
803           <td>)</td>
804           <td></td><td></td>
805         </tr>
806       </table>
807 </div><div class="memdoc">
808
809 <p>Cancel an alarm. </p>
810 <dl class="params"><dt>Parameters</dt><dd>
811   <table class="params">
812     <tr><td class="paramname">pool</td><td>the <a class="el" href="structalarm__pool.html">alarm_pool</a> containing the alarm </td></tr>
813     <tr><td class="paramname">alarm_id</td><td>the alarm </td></tr>
814   </table>
815   </dd>
816 </dl>
817 <dl class="section return"><dt>Returns</dt><dd>true if the alarm was cancelled, false if it didn't exist </dd></dl>
818 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b" title="The identifier for an alarm.">alarm_id_t</a> for a note on reuse of IDs </dd></dl>
819
820 </div>
821 </div>
822 <a id="ga4918e03a3ddd5c328d65bd014d26856b" name="ga4918e03a3ddd5c328d65bd014d26856b"></a>
823 <h2 class="memtitle"><span class="permalink"><a href="#ga4918e03a3ddd5c328d65bd014d26856b">&#9670;&nbsp;</a></span>alarm_pool_core_num()</h2>
824
825 <div class="memitem">
826 <div class="memproto">
827       <table class="memname">
828         <tr>
829           <td class="memname">uint alarm_pool_core_num </td>
830           <td>(</td>
831           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
832           <td class="paramname"><em>pool</em></td><td>)</td>
833           <td></td>
834         </tr>
835       </table>
836 </div><div class="memdoc">
837
838 <p>Return the core number the alarm pool was initialized on (and hence callbacks are called on) </p>
839 <dl class="params"><dt>Parameters</dt><dd>
840   <table class="params">
841     <tr><td class="paramname">pool</td><td>the pool </td></tr>
842   </table>
843   </dd>
844 </dl>
845 <dl class="section return"><dt>Returns</dt><dd>the core used by the pool </dd></dl>
846
847 </div>
848 </div>
849 <a id="ga185db8b4e54a13d19fca6e5d2761bae6" name="ga185db8b4e54a13d19fca6e5d2761bae6"></a>
850 <h2 class="memtitle"><span class="permalink"><a href="#ga185db8b4e54a13d19fca6e5d2761bae6">&#9670;&nbsp;</a></span>alarm_pool_create()</h2>
851
852 <div class="memitem">
853 <div class="memproto">
854 <table class="mlabels">
855   <tr>
856   <td class="mlabels-left">
857       <table class="memname">
858         <tr>
859           <td class="memname">static <a class="el" href="structalarm__pool.html">alarm_pool_t</a> * alarm_pool_create </td>
860           <td>(</td>
861           <td class="paramtype">uint&#160;</td>
862           <td class="paramname"><em>timer_alarm_num</em>, </td>
863         </tr>
864         <tr>
865           <td class="paramkey"></td>
866           <td></td>
867           <td class="paramtype">uint&#160;</td>
868           <td class="paramname"><em>max_timers</em>&#160;</td>
869         </tr>
870         <tr>
871           <td></td>
872           <td>)</td>
873           <td></td><td></td>
874         </tr>
875       </table>
876   </td>
877   <td class="mlabels-right">
878 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
879   </tr>
880 </table>
881 </div><div class="memdoc">
882
883 <p>Create an alarm pool. </p>
884 <p >The alarm pool will call callbacks from an alarm IRQ Handler on the core of this function is called from.</p>
885 <p >In many situations there is never any need for anything other than the default alarm pool, however you might want to create another if you want alarm callbacks on core 1 or require alarm pools of different priority (IRQ priority based preemption of callbacks)</p>
886 <dl class="section note"><dt>Note</dt><dd>This method will hard assert if the timer_alarm is already claimed.</dd></dl>
887 <dl class="params"><dt>Parameters</dt><dd>
888   <table class="params">
889     <tr><td class="paramname">timer_alarm_num</td><td>the timer_alarm to use to back this pool </td></tr>
890     <tr><td class="paramname">max_timers</td><td>the maximum number of timers </td></tr>
891   </table>
892   </dd>
893 </dl>
894 <dl class="section note"><dt>Note</dt><dd>For implementation reasons this is limited to PICO_PHEAP_MAX_ENTRIES which defaults to 255 </dd></dl>
895 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e" title="The default alarm pool used when alarms are added without specifying an alarm pool,...">alarm_pool_get_default()</a> </dd>
896 <dd>
897 hardware_claiming </dd></dl>
898
899 </div>
900 </div>
901 <a id="ga722973ee82ee4cffb438dc478471d138" name="ga722973ee82ee4cffb438dc478471d138"></a>
902 <h2 class="memtitle"><span class="permalink"><a href="#ga722973ee82ee4cffb438dc478471d138">&#9670;&nbsp;</a></span>alarm_pool_create_with_unused_hardware_alarm()</h2>
903
904 <div class="memitem">
905 <div class="memproto">
906 <table class="mlabels">
907   <tr>
908   <td class="mlabels-left">
909       <table class="memname">
910         <tr>
911           <td class="memname">static <a class="el" href="structalarm__pool.html">alarm_pool_t</a> * alarm_pool_create_with_unused_hardware_alarm </td>
912           <td>(</td>
913           <td class="paramtype">uint&#160;</td>
914           <td class="paramname"><em>max_timers</em></td><td>)</td>
915           <td></td>
916         </tr>
917       </table>
918   </td>
919   <td class="mlabels-right">
920 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
921   </tr>
922 </table>
923 </div><div class="memdoc">
924
925 <p>Create an alarm pool, claiming an used timer_alarm to back it. </p>
926 <p >The alarm pool will call callbacks from an alarm IRQ Handler on the core of this function is called from.</p>
927 <p >In many situations there is never any need for anything other than the default alarm pool, however you might want to create another if you want alarm callbacks on core 1 or require alarm pools of different priority (IRQ priority based preemption of callbacks)</p>
928 <dl class="section note"><dt>Note</dt><dd>This method will hard assert if the there is no free hardware to claim.</dd></dl>
929 <dl class="params"><dt>Parameters</dt><dd>
930   <table class="params">
931     <tr><td class="paramname">max_timers</td><td>the maximum number of timers </td></tr>
932   </table>
933   </dd>
934 </dl>
935 <dl class="section note"><dt>Note</dt><dd>For implementation reasons this is limited to PICO_PHEAP_MAX_ENTRIES which defaults to 255 </dd></dl>
936 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga5092ceb879289c0a597a389f34b4815e" title="The default alarm pool used when alarms are added without specifying an alarm pool,...">alarm_pool_get_default()</a> </dd>
937 <dd>
938 hardware_claiming </dd></dl>
939
940 </div>
941 </div>
942 <a id="gae7536c4d34088a2d19b2da92b87cbb4e" name="gae7536c4d34088a2d19b2da92b87cbb4e"></a>
943 <h2 class="memtitle"><span class="permalink"><a href="#gae7536c4d34088a2d19b2da92b87cbb4e">&#9670;&nbsp;</a></span>alarm_pool_destroy()</h2>
944
945 <div class="memitem">
946 <div class="memproto">
947       <table class="memname">
948         <tr>
949           <td class="memname">void alarm_pool_destroy </td>
950           <td>(</td>
951           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
952           <td class="paramname"><em>pool</em></td><td>)</td>
953           <td></td>
954         </tr>
955       </table>
956 </div><div class="memdoc">
957
958 <p>Destroy the alarm pool, cancelling all alarms and freeing up the underlying timer_alarm. </p>
959 <dl class="params"><dt>Parameters</dt><dd>
960   <table class="params">
961     <tr><td class="paramname">pool</td><td>the pool </td></tr>
962   </table>
963   </dd>
964 </dl>
965
966 </div>
967 </div>
968 <a id="ga5092ceb879289c0a597a389f34b4815e" name="ga5092ceb879289c0a597a389f34b4815e"></a>
969 <h2 class="memtitle"><span class="permalink"><a href="#ga5092ceb879289c0a597a389f34b4815e">&#9670;&nbsp;</a></span>alarm_pool_get_default()</h2>
970
971 <div class="memitem">
972 <div class="memproto">
973       <table class="memname">
974         <tr>
975           <td class="memname"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> * alarm_pool_get_default </td>
976           <td>(</td>
977           <td class="paramtype">void&#160;</td>
978           <td class="paramname"></td><td>)</td>
979           <td></td>
980         </tr>
981       </table>
982 </div><div class="memdoc">
983
984 <p>The default alarm pool used when alarms are added without specifying an alarm pool, and also used by the SDK to support lower power sleeps and timeouts. </p>
985 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#ga40b4a03bf9e967d4e7170d20c5c9fb15" title="Selects which timer_alarm is used for the default alarm pool.">PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM</a> </dd></dl>
986
987 </div>
988 </div>
989 <a id="ga3a9a4343aa9efe22e4324dc82ad2f3ec" name="ga3a9a4343aa9efe22e4324dc82ad2f3ec"></a>
990 <h2 class="memtitle"><span class="permalink"><a href="#ga3a9a4343aa9efe22e4324dc82ad2f3ec">&#9670;&nbsp;</a></span>alarm_pool_remaining_alarm_time_ms()</h2>
991
992 <div class="memitem">
993 <div class="memproto">
994       <table class="memname">
995         <tr>
996           <td class="memname">int32_t alarm_pool_remaining_alarm_time_ms </td>
997           <td>(</td>
998           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
999           <td class="paramname"><em>pool</em>, </td>
1000         </tr>
1001         <tr>
1002           <td class="paramkey"></td>
1003           <td></td>
1004           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
1005           <td class="paramname"><em>alarm_id</em>&#160;</td>
1006         </tr>
1007         <tr>
1008           <td></td>
1009           <td>)</td>
1010           <td></td><td></td>
1011         </tr>
1012       </table>
1013 </div><div class="memdoc">
1014
1015 <p>Return the time remaining before the next trigger of an alarm. </p>
1016 <dl class="params"><dt>Parameters</dt><dd>
1017   <table class="params">
1018     <tr><td class="paramname">pool</td><td>the <a class="el" href="structalarm__pool.html">alarm_pool</a> containing the alarm </td></tr>
1019     <tr><td class="paramname">alarm_id</td><td>the alarm</td></tr>
1020   </table>
1021   </dd>
1022 </dl>
1023 <dl class="section return"><dt>Returns</dt><dd>&gt;=0 the number of microseconds before the next trigger (INT32_MAX if the number of ms is higher than can be represented0 </dd>
1024 <dd>
1025 &lt;0 if either the given alarm is not in progress or it has passed </dd></dl>
1026
1027 </div>
1028 </div>
1029 <a id="ga342ebecd5ebc1a39f1da0bac81069712" name="ga342ebecd5ebc1a39f1da0bac81069712"></a>
1030 <h2 class="memtitle"><span class="permalink"><a href="#ga342ebecd5ebc1a39f1da0bac81069712">&#9670;&nbsp;</a></span>alarm_pool_remaining_alarm_time_us()</h2>
1031
1032 <div class="memitem">
1033 <div class="memproto">
1034       <table class="memname">
1035         <tr>
1036           <td class="memname">int64_t alarm_pool_remaining_alarm_time_us </td>
1037           <td>(</td>
1038           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
1039           <td class="paramname"><em>pool</em>, </td>
1040         </tr>
1041         <tr>
1042           <td class="paramkey"></td>
1043           <td></td>
1044           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
1045           <td class="paramname"><em>alarm_id</em>&#160;</td>
1046         </tr>
1047         <tr>
1048           <td></td>
1049           <td>)</td>
1050           <td></td><td></td>
1051         </tr>
1052       </table>
1053 </div><div class="memdoc">
1054
1055 <p>Return the time remaining before the next trigger of an alarm. </p>
1056 <dl class="params"><dt>Parameters</dt><dd>
1057   <table class="params">
1058     <tr><td class="paramname">pool</td><td>the <a class="el" href="structalarm__pool.html">alarm_pool</a> containing the alarm </td></tr>
1059     <tr><td class="paramname">alarm_id</td><td>the alarm</td></tr>
1060   </table>
1061   </dd>
1062 </dl>
1063 <dl class="section return"><dt>Returns</dt><dd>&gt;=0 the number of microseconds before the next trigger </dd>
1064 <dd>
1065 &lt;0 if either the given alarm is not in progress or it has passed </dd></dl>
1066
1067 </div>
1068 </div>
1069 <a id="gaeb9321260fecc29b551d5e6ceffccc99" name="gaeb9321260fecc29b551d5e6ceffccc99"></a>
1070 <h2 class="memtitle"><span class="permalink"><a href="#gaeb9321260fecc29b551d5e6ceffccc99">&#9670;&nbsp;</a></span>alarm_pool_timer_alarm_num()</h2>
1071
1072 <div class="memitem">
1073 <div class="memproto">
1074       <table class="memname">
1075         <tr>
1076           <td class="memname">uint alarm_pool_timer_alarm_num </td>
1077           <td>(</td>
1078           <td class="paramtype"><a class="el" href="structalarm__pool.html">alarm_pool_t</a> *&#160;</td>
1079           <td class="paramname"><em>pool</em></td><td>)</td>
1080           <td></td>
1081         </tr>
1082       </table>
1083 </div><div class="memdoc">
1084
1085 <p>Return the timer alarm used by an alarm pool. </p>
1086 <dl class="params"><dt>Parameters</dt><dd>
1087   <table class="params">
1088     <tr><td class="paramname">pool</td><td>the pool </td></tr>
1089   </table>
1090   </dd>
1091 </dl>
1092 <dl class="section return"><dt>Returns</dt><dd>the timer_alarm used by the pool </dd></dl>
1093
1094 </div>
1095 </div>
1096 <a id="gae99f63dc25fe5c3a0d78d9fb90308b1b" name="gae99f63dc25fe5c3a0d78d9fb90308b1b"></a>
1097 <h2 class="memtitle"><span class="permalink"><a href="#gae99f63dc25fe5c3a0d78d9fb90308b1b">&#9670;&nbsp;</a></span>cancel_alarm()</h2>
1098
1099 <div class="memitem">
1100 <div class="memproto">
1101 <table class="mlabels">
1102   <tr>
1103   <td class="mlabels-left">
1104       <table class="memname">
1105         <tr>
1106           <td class="memname">static bool cancel_alarm </td>
1107           <td>(</td>
1108           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
1109           <td class="paramname"><em>alarm_id</em></td><td>)</td>
1110           <td></td>
1111         </tr>
1112       </table>
1113   </td>
1114   <td class="mlabels-right">
1115 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1116   </tr>
1117 </table>
1118 </div><div class="memdoc">
1119
1120 <p>Cancel an alarm from the default alarm pool. </p>
1121 <dl class="params"><dt>Parameters</dt><dd>
1122   <table class="params">
1123     <tr><td class="paramname">alarm_id</td><td>the alarm </td></tr>
1124   </table>
1125   </dd>
1126 </dl>
1127 <dl class="section return"><dt>Returns</dt><dd>true if the alarm was cancelled, false if it didn't exist </dd></dl>
1128 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b" title="The identifier for an alarm.">alarm_id_t</a> for a note on reuse of IDs </dd></dl>
1129
1130 </div>
1131 </div>
1132 <a id="ga61affbec7fedd98582b1df8b5ca3fe3b" name="ga61affbec7fedd98582b1df8b5ca3fe3b"></a>
1133 <h2 class="memtitle"><span class="permalink"><a href="#ga61affbec7fedd98582b1df8b5ca3fe3b">&#9670;&nbsp;</a></span>remaining_alarm_time_ms()</h2>
1134
1135 <div class="memitem">
1136 <div class="memproto">
1137       <table class="memname">
1138         <tr>
1139           <td class="memname">int32_t remaining_alarm_time_ms </td>
1140           <td>(</td>
1141           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
1142           <td class="paramname"><em>alarm_id</em></td><td>)</td>
1143           <td></td>
1144         </tr>
1145       </table>
1146 </div><div class="memdoc">
1147
1148 <p>Return the time remaining before the next trigger of an alarm. </p>
1149 <dl class="params"><dt>Parameters</dt><dd>
1150   <table class="params">
1151     <tr><td class="paramname">alarm_id</td><td>the alarm</td></tr>
1152   </table>
1153   </dd>
1154 </dl>
1155 <dl class="section return"><dt>Returns</dt><dd>&gt;=0 the number of microseconds before the next trigger (INT32_MAX if the number of ms is higher than can be represented0 </dd>
1156 <dd>
1157 &lt;0 if either the given alarm is not in progress or it has passed </dd></dl>
1158
1159 </div>
1160 </div>
1161 <a id="ga549331a1b34938eb9f9dae03712a714c" name="ga549331a1b34938eb9f9dae03712a714c"></a>
1162 <h2 class="memtitle"><span class="permalink"><a href="#ga549331a1b34938eb9f9dae03712a714c">&#9670;&nbsp;</a></span>remaining_alarm_time_us()</h2>
1163
1164 <div class="memitem">
1165 <div class="memproto">
1166       <table class="memname">
1167         <tr>
1168           <td class="memname">int64_t remaining_alarm_time_us </td>
1169           <td>(</td>
1170           <td class="paramtype"><a class="el" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a>&#160;</td>
1171           <td class="paramname"><em>alarm_id</em></td><td>)</td>
1172           <td></td>
1173         </tr>
1174       </table>
1175 </div><div class="memdoc">
1176
1177 <p>Return the time remaining before the next trigger of an alarm. </p>
1178 <dl class="params"><dt>Parameters</dt><dd>
1179   <table class="params">
1180     <tr><td class="paramname">pool</td><td>the <a class="el" href="structalarm__pool.html">alarm_pool</a> containing the alarm </td></tr>
1181     <tr><td class="paramname">alarm_id</td><td>the alarm</td></tr>
1182   </table>
1183   </dd>
1184 </dl>
1185 <dl class="section return"><dt>Returns</dt><dd>&gt;=0 the number of microseconds before the next trigger </dd>
1186 <dd>
1187 &lt;0 if either the given alarm is not in progress or it has passed </dd></dl>
1188
1189 </div>
1190 </div>
1191 </div><!-- contents -->
1192 </div><!-- doc-content -->
1193
1194         <script src="main.js"></script>
1195 </body>
1196 </html>
This page took 0.104637 seconds and 4 git commands to generate.