libctru/ptmsysm_8h_source.html
2024-11-03 20:36:34 +00:00

255 lines
46 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libctru: include/3ds/services/ptmsysm.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libctru
&#160;<span id="projectnumber">v2.4.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_d475325f6a9fe3bfc3a495c72a9e475e.html">3ds</a></li><li class="navelem"><a class="el" href="dir_0e005207343684f6967052d1f51a7e66.html">services</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ptmsysm.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="ptmsysm_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * @file ptmsysm.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * @brief PTMSYSM service.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="types_8h.html">3ds/types.h</a>&gt;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">/// PDN wake events and MCU interrupts to select, combined with those of other processes</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="structPtmWakeEvents.html"> 10</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structPtmWakeEvents.html">PtmWakeEvents</a> {</div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="structPtmWakeEvents.html#a1bc8802f07edfb5e8735dc67b9dcedd4"> 11</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structPtmWakeEvents.html#a1bc8802f07edfb5e8735dc67b9dcedd4">pdn_wake_events</a>; <span class="comment">///&lt; Written to PDN_WAKE_EVENTS. Don&#39;t select bit26 (MCU), PTM will do it automatically.</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="structPtmWakeEvents.html#a6204f98da6304879d009a27831f7b331"> 12</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structPtmWakeEvents.html#a6204f98da6304879d009a27831f7b331">mcu_interupt_mask</a>; <span class="comment">///&lt; MCU interrupts to check when a MCU wake event happens.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;} <a class="code" href="structPtmWakeEvents.html">PtmWakeEvents</a>;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="structPtmSleepConfig.html"> 15</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="structPtmSleepConfig.html#a8b391873e05ee461742cba162a5aadaa"> 16</a></span>&#160; <a class="code" href="structPtmWakeEvents.html">PtmWakeEvents</a> <a class="code" href="structPtmSleepConfig.html#a8b391873e05ee461742cba162a5aadaa">exit_sleep_events</a>; <span class="comment">///&lt; Wake events for which the system should fully wake up.</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="structPtmSleepConfig.html#a042b2b0abb77442cc5352c7b0f09436f"> 17</a></span>&#160; <a class="code" href="structPtmWakeEvents.html">PtmWakeEvents</a> <a class="code" href="structPtmSleepConfig.html#a042b2b0abb77442cc5352c7b0f09436f">continue_sleep_events</a>; <span class="comment">///&lt; Wake events for which the system should return to sleep.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;} <a class="code" href="structPtmSleepConfig.html">PtmSleepConfig</a>;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">enum</span> {</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="comment">// Sleep FSM notification IDs</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6490f366258c14eb20fa74f9f666dc9d"> 22</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6490f366258c14eb20fa74f9f666dc9d">PTMNOTIFID_SLEEP_REQUESTED</a> = 0x101, <span class="comment">///&lt; @ref PTMSYSM_RequestSleep has been called (ack = 3)</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260aed7fc1734e7eef6708878d774ba09a26"> 23</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260aed7fc1734e7eef6708878d774ba09a26">PTMNOTIFID_SLEEP_DENIED</a> = 0x102, <span class="comment">///&lt; The sleep request has been denied by @ref PTMSYSM_ReplyToSleepQuery(true) (no ack required).</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a91a4c4b264043242d2592c0c6d74d842"> 24</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a91a4c4b264043242d2592c0c6d74d842">PTMNOTIFID_SLEEP_ALLOWED</a> = 0x103, <span class="comment">///&lt; The sleep request has been allowed by @ref PTMSYSM_ReplyToSleepQuery(false) (ack = 1).</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6f65fae1c0eb882a248329ef0782ed15"> 25</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6f65fae1c0eb882a248329ef0782ed15">PTMNOTIFID_GOING_TO_SLEEP</a> = 0x104, <span class="comment">///&lt; All processes not having &quot;RunnableOnSleep&quot; have been paused &amp; the system is about to go to sleep (ack = 0).</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a5df69cbc1093d8405f4fcdd64516e03d"> 26</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a5df69cbc1093d8405f4fcdd64516e03d">PTMNOTIFID_FULLY_WAKING_UP</a> = 0x105, <span class="comment">///&lt; The system has been woken up, and the paused processes are about to be unpaused (ack = 1).</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a133ae28ac9e50cdbf71c2fa6d5acb526"> 27</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a133ae28ac9e50cdbf71c2fa6d5acb526">PTMNOTIFID_FULLY_AWAKE</a> = 0x106, <span class="comment">///&lt; The system is fully awake (no ack required).</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a086a20094e0175f65299818a2a717906"> 28</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a086a20094e0175f65299818a2a717906">PTMNOTIFID_HALF_AWAKE</a> = 0x107, <span class="comment">///&lt; The system has been woken up but is about to go to sleep again (ack = 2).</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a73e5e7474c1539db28de7cb6feda6be4"> 30</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a73e5e7474c1539db28de7cb6feda6be4">PTMNOTIFID_SHUTDOWN</a> = 0x108, <span class="comment">///&lt; The system is about to power off or reboot.</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8fec2ba82ed5cda60d6e68583b20f986"> 32</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8fec2ba82ed5cda60d6e68583b20f986">PTMNOTIFID_BATTERY_VERY_LOW</a> = 0x211, <span class="comment">///&lt; The battery level has reached 5% or below.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8ea039dbda684f986481156d5ad5f982"> 33</a></span>&#160; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8ea039dbda684f986481156d5ad5f982">PTMNOTIFID_BATTERY_LOW</a> = 0x212, <span class="comment">///&lt; The battery level has reached 10% or below.</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;};</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/// See @ref PTMSYSM_NotifySleepPreparationComplete. Corresponds to the number of potentially remaning notifs. until sleep/wakeup.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#acf6fa1e0bd96df1a0f9ad97508787991"> 37</a></span>&#160;<span class="comment"></span><span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> <a class="code" href="ptmsysm_8h.html#acf6fa1e0bd96df1a0f9ad97508787991">ptmSysmGetNotificationAckValue</a>(<a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <span class="keywordtype">id</span>)</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> values[] = { 3, -1, 1, 0, 0, -1, 2 };</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (id &lt; PTMNOTIFID_SLEEP_REQUESTED || id &gt; <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a086a20094e0175f65299818a2a717906">PTMNOTIFID_HALF_AWAKE</a>)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> values[<span class="keywordtype">id</span> - <a class="code" href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6490f366258c14eb20fa74f9f666dc9d">PTMNOTIFID_SLEEP_REQUESTED</a>];</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/// Initializes ptm:sysm.</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a18359abfe6fcd1708769ef2dae98ed50"> 46</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a18359abfe6fcd1708769ef2dae98ed50">ptmSysmInit</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">/// Exits ptm:sysm.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ae8300d0f183d7b958550da5bea974274"> 49</a></span>&#160;<span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="ptmsysm_8h.html#ae8300d0f183d7b958550da5bea974274">ptmSysmExit</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * @brief Gets a pointer to the current ptm:sysm session handle.</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * @return A pointer to the current ptm:sysm session handle.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ada6971fd9650be6cd008ba792e129bf0"> 55</a></span>&#160;<a class="code" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> *<a class="code" href="ptmsysm_8h.html#ada6971fd9650be6cd008ba792e129bf0">ptmSysmGetSessionHandle</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">/// Requests to enter sleep mode.</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ae5501c04a329a37b24189034808eb9cd"> 58</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#ae5501c04a329a37b24189034808eb9cd">PTMSYSM_RequestSleep</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * @brief Accepts or denies the incoming sleep mode request.</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * @param deny Whether or not to deny the sleep request.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * @note If deny = false, this is equivalent to calling @ref PTMSYSM_NotifySleepPreparationComplete(3)</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a8b268a8d3c3aa23dcf2c7980f0a0dedd"> 65</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a8b268a8d3c3aa23dcf2c7980f0a0dedd">PTMSYSM_ReplyToSleepQuery</a>(<span class="keywordtype">bool</span> deny);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * @brief Acknowledges the current sleep notification and advance the internal sleep mode FSM. All subscribers must reply.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * @param ackValue Use @ref ptmSysmGetNotificationAckValue</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * @note @ref PTMNOTIFID_SLEEP_DENIED and @ref PTMNOTIFID_FULLY_AWAKE don&#39;t require this.</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#aa265103791deeeca53f91be474925725"> 72</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#aa265103791deeeca53f91be474925725">PTMSYSM_NotifySleepPreparationComplete</a>(<a class="code" href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a> ackValue);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * @brief Sets the wake events (two sets: when to fully wake up and when to return to sleep).</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * @param sleepConfig Pointer to the two sets of wake events.</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * @note Can only be called just before acknowledging @ref PTMNOTIFID_GOING_TO_SLEEP or @ref PTMNOTIFID_HALF_AWAKE.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#aecfca4fd6f9d473493516de461deba18"> 79</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#aecfca4fd6f9d473493516de461deba18">PTMSYSM_SetWakeEvents</a>(<span class="keyword">const</span> <a class="code" href="structPtmSleepConfig.html">PtmSleepConfig</a> *sleepConfig);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * @brief Gets the wake reason (only the first applicable wake event is taken into account).</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * @param sleepConfig Pointer to the two sets of wake events. Only the relevant set will be filled.</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a69ae143e353519db8711e63eb8980c8c"> 85</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a69ae143e353519db8711e63eb8980c8c">PTMSYSM_GetWakeReason</a>(<a class="code" href="structPtmSleepConfig.html">PtmSleepConfig</a> *outSleepConfig);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">/// Cancels the &quot;half-awake&quot; state and fully wakes up the 3DS after some delay.</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a4e3b9fb2cb0a7576948f273b8391ac45"> 88</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a4e3b9fb2cb0a7576948f273b8391ac45">PTMSYSM_Awaken</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * @brief Sets the user time by updating the user time offset.</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * @param msY2k The number of milliseconds since 01/01/2000.</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a5311117e22d63ad0d84a3a1fef16525a"> 94</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a5311117e22d63ad0d84a3a1fef16525a">PTMSYSM_SetUserTime</a>(<a class="code" href="types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a> msY2k);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/// Invalidates the &quot;system time&quot; (cfg block 0x30002)</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#aea12e1fa8dfc2ecfe236f2e24d4de0dd"> 97</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#aea12e1fa8dfc2ecfe236f2e24d4de0dd">PTMSYSM_InvalidateSystemTime</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * @brief Reads the time and date coming from the RTC and converts the result.</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * @param[out] outMsY2k The pointer to write the number of milliseconds since 01/01/2000 to.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a81fb540478a7ab024ed5bc725da32f7a"> 103</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a81fb540478a7ab024ed5bc725da32f7a">PTMSYSM_GetRtcTime</a>(<a class="code" href="types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a> *outMsY2k);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * @brief Writes the time and date coming to the RTC, after conversion.</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * @param msY2k The number of milliseconds since 01/01/2000.</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a13318734305af44a7aa5152c2e6f3fcc"> 109</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a13318734305af44a7aa5152c2e6f3fcc">PTMSYSM_SetRtcTime</a>(<a class="code" href="types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a> msY2k);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * @brief Checks whether the system is a New 3DS.</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * @param[out] out Pointer to write the New 3DS flag to.</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a841675f8618d5ad7f8fecc66625bb187"> 115</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a841675f8618d5ad7f8fecc66625bb187">PTMSYSM_CheckNew3DS</a>(<span class="keywordtype">bool</span> *out);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * @brief Configures the New 3DS&#39; CPU clock speed and L2 cache.</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * @param value Bit0: enable higher clock, Bit1: enable L2 cache.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#ae3a437bfd0de05fbc5ba9a460d148430"> 121</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#ae3a437bfd0de05fbc5ba9a460d148430">PTMSYSM_ConfigureNew3DSCPU</a>(<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> value);</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * @brief Trigger a hardware system shutdown via the MCU.</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * @param timeout: timeout passed to PMApp:ShutdownAsync (PrepareForReboot).</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a79e300f7b08e04795fdba69d03892b6c"> 127</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a79e300f7b08e04795fdba69d03892b6c">PTMSYSM_ShutdownAsync</a>(<a class="code" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * @brief Trigger a hardware system reboot via the MCU.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * @param timeout: timeout passed to PMApp:ShutdownAsync (PrepareForReboot).</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="ptmsysm_8h.html#a036f533b3bbbc4ef2e60bdf9a00f52f1"> 133</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="ptmsysm_8h.html#a036f533b3bbbc4ef2e60bdf9a00f52f1">PTMSYSM_RebootAsync</a>(<a class="code" href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> timeout);</div>
<div class="ttc" id="aptmsysm_8h_html_a036f533b3bbbc4ef2e60bdf9a00f52f1"><div class="ttname"><a href="ptmsysm_8h.html#a036f533b3bbbc4ef2e60bdf9a00f52f1">PTMSYSM_RebootAsync</a></div><div class="ttdeci">Result PTMSYSM_RebootAsync(u64 timeout)</div><div class="ttdoc">Trigger a hardware system reboot via the MCU.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a13318734305af44a7aa5152c2e6f3fcc"><div class="ttname"><a href="ptmsysm_8h.html#a13318734305af44a7aa5152c2e6f3fcc">PTMSYSM_SetRtcTime</a></div><div class="ttdeci">Result PTMSYSM_SetRtcTime(s64 msY2k)</div><div class="ttdoc">Writes the time and date coming to the RTC, after conversion.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a18359abfe6fcd1708769ef2dae98ed50"><div class="ttname"><a href="ptmsysm_8h.html#a18359abfe6fcd1708769ef2dae98ed50">ptmSysmInit</a></div><div class="ttdeci">Result ptmSysmInit(void)</div><div class="ttdoc">Initializes ptm:sysm.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a4e3b9fb2cb0a7576948f273b8391ac45"><div class="ttname"><a href="ptmsysm_8h.html#a4e3b9fb2cb0a7576948f273b8391ac45">PTMSYSM_Awaken</a></div><div class="ttdeci">Result PTMSYSM_Awaken(void)</div><div class="ttdoc">Cancels the &quot;half-awake&quot; state and fully wakes up the 3DS after some delay.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a5311117e22d63ad0d84a3a1fef16525a"><div class="ttname"><a href="ptmsysm_8h.html#a5311117e22d63ad0d84a3a1fef16525a">PTMSYSM_SetUserTime</a></div><div class="ttdeci">Result PTMSYSM_SetUserTime(s64 msY2k)</div><div class="ttdoc">Sets the user time by updating the user time offset.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a69ae143e353519db8711e63eb8980c8c"><div class="ttname"><a href="ptmsysm_8h.html#a69ae143e353519db8711e63eb8980c8c">PTMSYSM_GetWakeReason</a></div><div class="ttdeci">Result PTMSYSM_GetWakeReason(PtmSleepConfig *outSleepConfig)</div><div class="ttdoc">Gets the wake reason (only the first applicable wake event is taken into account).</div></div>
<div class="ttc" id="aptmsysm_8h_html_a79e300f7b08e04795fdba69d03892b6c"><div class="ttname"><a href="ptmsysm_8h.html#a79e300f7b08e04795fdba69d03892b6c">PTMSYSM_ShutdownAsync</a></div><div class="ttdeci">Result PTMSYSM_ShutdownAsync(u64 timeout)</div><div class="ttdoc">Trigger a hardware system shutdown via the MCU.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a81fb540478a7ab024ed5bc725da32f7a"><div class="ttname"><a href="ptmsysm_8h.html#a81fb540478a7ab024ed5bc725da32f7a">PTMSYSM_GetRtcTime</a></div><div class="ttdeci">Result PTMSYSM_GetRtcTime(s64 *outMsY2k)</div><div class="ttdoc">Reads the time and date coming from the RTC and converts the result.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a841675f8618d5ad7f8fecc66625bb187"><div class="ttname"><a href="ptmsysm_8h.html#a841675f8618d5ad7f8fecc66625bb187">PTMSYSM_CheckNew3DS</a></div><div class="ttdeci">Result PTMSYSM_CheckNew3DS(bool *out)</div><div class="ttdoc">Checks whether the system is a New 3DS.</div></div>
<div class="ttc" id="aptmsysm_8h_html_a8b268a8d3c3aa23dcf2c7980f0a0dedd"><div class="ttname"><a href="ptmsysm_8h.html#a8b268a8d3c3aa23dcf2c7980f0a0dedd">PTMSYSM_ReplyToSleepQuery</a></div><div class="ttdeci">Result PTMSYSM_ReplyToSleepQuery(bool deny)</div><div class="ttdoc">Accepts or denies the incoming sleep mode request.</div></div>
<div class="ttc" id="aptmsysm_8h_html_aa265103791deeeca53f91be474925725"><div class="ttname"><a href="ptmsysm_8h.html#aa265103791deeeca53f91be474925725">PTMSYSM_NotifySleepPreparationComplete</a></div><div class="ttdeci">Result PTMSYSM_NotifySleepPreparationComplete(s32 ackValue)</div><div class="ttdoc">Acknowledges the current sleep notification and advance the internal sleep mode FSM.</div></div>
<div class="ttc" id="aptmsysm_8h_html_acf6fa1e0bd96df1a0f9ad97508787991"><div class="ttname"><a href="ptmsysm_8h.html#acf6fa1e0bd96df1a0f9ad97508787991">ptmSysmGetNotificationAckValue</a></div><div class="ttdeci">static s32 ptmSysmGetNotificationAckValue(u32 id)</div><div class="ttdoc">See PTMSYSM_NotifySleepPreparationComplete. Corresponds to the number of potentially remaning notifs....</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:37</div></div>
<div class="ttc" id="aptmsysm_8h_html_ada6971fd9650be6cd008ba792e129bf0"><div class="ttname"><a href="ptmsysm_8h.html#ada6971fd9650be6cd008ba792e129bf0">ptmSysmGetSessionHandle</a></div><div class="ttdeci">Handle * ptmSysmGetSessionHandle(void)</div><div class="ttdoc">Gets a pointer to the current ptm:sysm session handle.</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a086a20094e0175f65299818a2a717906"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a086a20094e0175f65299818a2a717906">PTMNOTIFID_HALF_AWAKE</a></div><div class="ttdeci">@ PTMNOTIFID_HALF_AWAKE</div><div class="ttdoc">The system has been woken up but is about to go to sleep again (ack = 2).</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:28</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a133ae28ac9e50cdbf71c2fa6d5acb526"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a133ae28ac9e50cdbf71c2fa6d5acb526">PTMNOTIFID_FULLY_AWAKE</a></div><div class="ttdeci">@ PTMNOTIFID_FULLY_AWAKE</div><div class="ttdoc">The system is fully awake (no ack required).</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:27</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a5df69cbc1093d8405f4fcdd64516e03d"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a5df69cbc1093d8405f4fcdd64516e03d">PTMNOTIFID_FULLY_WAKING_UP</a></div><div class="ttdeci">@ PTMNOTIFID_FULLY_WAKING_UP</div><div class="ttdoc">The system has been woken up, and the paused processes are about to be unpaused (ack = 1).</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:26</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a6490f366258c14eb20fa74f9f666dc9d"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6490f366258c14eb20fa74f9f666dc9d">PTMNOTIFID_SLEEP_REQUESTED</a></div><div class="ttdeci">@ PTMNOTIFID_SLEEP_REQUESTED</div><div class="ttdoc">PTMSYSM_RequestSleep has been called (ack = 3)</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:22</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a6f65fae1c0eb882a248329ef0782ed15"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a6f65fae1c0eb882a248329ef0782ed15">PTMNOTIFID_GOING_TO_SLEEP</a></div><div class="ttdeci">@ PTMNOTIFID_GOING_TO_SLEEP</div><div class="ttdoc">All processes not having &quot;RunnableOnSleep&quot; have been paused &amp; the system is about to go to sleep (ack...</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:25</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a73e5e7474c1539db28de7cb6feda6be4"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a73e5e7474c1539db28de7cb6feda6be4">PTMNOTIFID_SHUTDOWN</a></div><div class="ttdeci">@ PTMNOTIFID_SHUTDOWN</div><div class="ttdoc">The system is about to power off or reboot.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:30</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a8ea039dbda684f986481156d5ad5f982"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8ea039dbda684f986481156d5ad5f982">PTMNOTIFID_BATTERY_LOW</a></div><div class="ttdeci">@ PTMNOTIFID_BATTERY_LOW</div><div class="ttdoc">The battery level has reached 10% or below.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:33</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a8fec2ba82ed5cda60d6e68583b20f986"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a8fec2ba82ed5cda60d6e68583b20f986">PTMNOTIFID_BATTERY_VERY_LOW</a></div><div class="ttdeci">@ PTMNOTIFID_BATTERY_VERY_LOW</div><div class="ttdoc">The battery level has reached 5% or below.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:32</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260a91a4c4b264043242d2592c0c6d74d842"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260a91a4c4b264043242d2592c0c6d74d842">PTMNOTIFID_SLEEP_ALLOWED</a></div><div class="ttdeci">@ PTMNOTIFID_SLEEP_ALLOWED</div><div class="ttdoc">The sleep request has been allowed by PTMSYSM_ReplyToSleepQuery(false) (ack = 1).</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:24</div></div>
<div class="ttc" id="aptmsysm_8h_html_ade9ca5088d171ad20b4c237f1c2d6260aed7fc1734e7eef6708878d774ba09a26"><div class="ttname"><a href="ptmsysm_8h.html#ade9ca5088d171ad20b4c237f1c2d6260aed7fc1734e7eef6708878d774ba09a26">PTMNOTIFID_SLEEP_DENIED</a></div><div class="ttdeci">@ PTMNOTIFID_SLEEP_DENIED</div><div class="ttdoc">The sleep request has been denied by PTMSYSM_ReplyToSleepQuery(true) (no ack required).</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:23</div></div>
<div class="ttc" id="aptmsysm_8h_html_ae3a437bfd0de05fbc5ba9a460d148430"><div class="ttname"><a href="ptmsysm_8h.html#ae3a437bfd0de05fbc5ba9a460d148430">PTMSYSM_ConfigureNew3DSCPU</a></div><div class="ttdeci">Result PTMSYSM_ConfigureNew3DSCPU(u8 value)</div><div class="ttdoc">Configures the New 3DS' CPU clock speed and L2 cache.</div></div>
<div class="ttc" id="aptmsysm_8h_html_ae5501c04a329a37b24189034808eb9cd"><div class="ttname"><a href="ptmsysm_8h.html#ae5501c04a329a37b24189034808eb9cd">PTMSYSM_RequestSleep</a></div><div class="ttdeci">Result PTMSYSM_RequestSleep(void)</div><div class="ttdoc">Requests to enter sleep mode.</div></div>
<div class="ttc" id="aptmsysm_8h_html_ae8300d0f183d7b958550da5bea974274"><div class="ttname"><a href="ptmsysm_8h.html#ae8300d0f183d7b958550da5bea974274">ptmSysmExit</a></div><div class="ttdeci">void ptmSysmExit(void)</div><div class="ttdoc">Exits ptm:sysm.</div></div>
<div class="ttc" id="aptmsysm_8h_html_aea12e1fa8dfc2ecfe236f2e24d4de0dd"><div class="ttname"><a href="ptmsysm_8h.html#aea12e1fa8dfc2ecfe236f2e24d4de0dd">PTMSYSM_InvalidateSystemTime</a></div><div class="ttdeci">Result PTMSYSM_InvalidateSystemTime(void)</div><div class="ttdoc">Invalidates the &quot;system time&quot; (cfg block 0x30002)</div></div>
<div class="ttc" id="aptmsysm_8h_html_aecfca4fd6f9d473493516de461deba18"><div class="ttname"><a href="ptmsysm_8h.html#aecfca4fd6f9d473493516de461deba18">PTMSYSM_SetWakeEvents</a></div><div class="ttdeci">Result PTMSYSM_SetWakeEvents(const PtmSleepConfig *sleepConfig)</div><div class="ttdoc">Sets the wake events (two sets: when to fully wake up and when to return to sleep).</div></div>
<div class="ttc" id="astructPtmSleepConfig_html"><div class="ttname"><a href="structPtmSleepConfig.html">PtmSleepConfig</a></div><div class="ttdef"><b>Definition:</b> ptmsysm.h:15</div></div>
<div class="ttc" id="astructPtmSleepConfig_html_a042b2b0abb77442cc5352c7b0f09436f"><div class="ttname"><a href="structPtmSleepConfig.html#a042b2b0abb77442cc5352c7b0f09436f">PtmSleepConfig::continue_sleep_events</a></div><div class="ttdeci">PtmWakeEvents continue_sleep_events</div><div class="ttdoc">Wake events for which the system should return to sleep.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:17</div></div>
<div class="ttc" id="astructPtmSleepConfig_html_a8b391873e05ee461742cba162a5aadaa"><div class="ttname"><a href="structPtmSleepConfig.html#a8b391873e05ee461742cba162a5aadaa">PtmSleepConfig::exit_sleep_events</a></div><div class="ttdeci">PtmWakeEvents exit_sleep_events</div><div class="ttdoc">Wake events for which the system should fully wake up.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:16</div></div>
<div class="ttc" id="astructPtmWakeEvents_html"><div class="ttname"><a href="structPtmWakeEvents.html">PtmWakeEvents</a></div><div class="ttdoc">PDN wake events and MCU interrupts to select, combined with those of other processes.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:10</div></div>
<div class="ttc" id="astructPtmWakeEvents_html_a1bc8802f07edfb5e8735dc67b9dcedd4"><div class="ttname"><a href="structPtmWakeEvents.html#a1bc8802f07edfb5e8735dc67b9dcedd4">PtmWakeEvents::pdn_wake_events</a></div><div class="ttdeci">u32 pdn_wake_events</div><div class="ttdoc">Written to PDN_WAKE_EVENTS. Don't select bit26 (MCU), PTM will do it automatically.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:11</div></div>
<div class="ttc" id="astructPtmWakeEvents_html_a6204f98da6304879d009a27831f7b331"><div class="ttname"><a href="structPtmWakeEvents.html#a6204f98da6304879d009a27831f7b331">PtmWakeEvents::mcu_interupt_mask</a></div><div class="ttdeci">u32 mcu_interupt_mask</div><div class="ttdoc">MCU interrupts to check when a MCU wake event happens.</div><div class="ttdef"><b>Definition:</b> ptmsysm.h:12</div></div>
<div class="ttc" id="atypes_8h_html"><div class="ttname"><a href="types_8h.html">types.h</a></div><div class="ttdoc">Various system types.</div></div>
<div class="ttc" id="atypes_8h_html_a350c6fc928e3bdc6c6486268ac8fb269"><div class="ttname"><a href="types_8h.html#a350c6fc928e3bdc6c6486268ac8fb269">s64</a></div><div class="ttdeci">int64_t s64</div><div class="ttdoc">64-bit signed integer</div><div class="ttdef"><b>Definition:</b> types.h:29</div></div>
<div class="ttc" id="atypes_8h_html_a3f7e2bcbb0b4c338f3c4f6c937cd4234"><div class="ttname"><a href="types_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a></div><div class="ttdeci">uint64_t u64</div><div class="ttdoc">64-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:24</div></div>
<div class="ttc" id="atypes_8h_html_a92c50087ca0e64fa93fc59402c55f8ca"><div class="ttname"><a href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a></div><div class="ttdeci">uint8_t u8</div><div class="ttdoc">would be nice if newlib had this already</div><div class="ttdef"><b>Definition:</b> types.h:21</div></div>
<div class="ttc" id="atypes_8h_html_ab6d744c6b5de129f12937e482dc674fb"><div class="ttname"><a href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a></div><div class="ttdeci">u32 Handle</div><div class="ttdoc">Resource handle.</div><div class="ttdef"><b>Definition:</b> types.h:41</div></div>
<div class="ttc" id="atypes_8h_html_ac830bf5a4f2cf8273f61ab99a46cf163"><div class="ttname"><a href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a></div><div class="ttdeci">s32 Result</div><div class="ttdoc">Function result.</div><div class="ttdef"><b>Definition:</b> types.h:42</div></div>
<div class="ttc" id="atypes_8h_html_ae9b1af5c037e57a98884758875d3a7c4"><div class="ttname"><a href="types_8h.html#ae9b1af5c037e57a98884758875d3a7c4">s32</a></div><div class="ttdeci">int32_t s32</div><div class="ttdoc">32-bit signed integer</div><div class="ttdef"><b>Definition:</b> types.h:28</div></div>
<div class="ttc" id="atypes_8h_html_afaa62991928fb9fb18ff0db62a040aba"><div class="ttname"><a href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a></div><div class="ttdeci">uint32_t u32</div><div class="ttdoc">32-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>