gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
docs/api/laptop__io_8h.html
1 <!-- HTML header for doxygen 1.8.14-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="cache-control" content="max-age=86400"/>
6 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
7 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
8 <meta name="generator" content="Doxygen 1.9.2"/>
9 <meta name="viewport" content="width=device-width, initial-scale=1"/>
10 <title>GBDK 2020 Docs: gbdk-lib/include/duck/laptop_io.h File Reference</title>
11 <link href="tabs.css" rel="stylesheet" type="text/css"/>
12 <script type="text/javascript" src="jquery.js"></script>
13 <script type="text/javascript" src="dynsections.js"></script>
14 <link href="navtree.css" rel="stylesheet" type="text/css"/>
15 <script type="text/javascript" src="resize.js"></script>
16 <script type="text/javascript" src="navtreedata.js"></script>
17 <script type="text/javascript" src="navtree.js"></script>
18 <link href="search/search.css" rel="stylesheet" type="text/css"/>
19 <script type="text/javascript" src="search/searchdata.js"></script>
20 <script type="text/javascript" src="search/search.js"></script>
21 <link href="doxygen.css" rel="stylesheet" type="text/css" />
22 <link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
23 <link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
24 <link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
25 <!-- BEGIN: doxygen-awesome-css -->
26 <script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
27 <script type="text/javascript">
28 DoxygenAwesomeDarkModeToggle.init()
29 </script>
30 <script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
31 <script type="text/javascript">
32 DoxygenAwesomeParagraphLink.init()
33 </script>
34 <!-- END: doxygen-awesome-css -->
35 </head>
36 <body>
37 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
38 <div id="titlearea">
39 <table cellspacing="0" cellpadding="0">
40 <tbody>
41 <tr style="height: 56px;">
42 <td id="projectalign" style="padding-left: 0.5em;">
43 <div id="projectname">GBDK 2020 Docs
44  <span id="projectnumber">4.5.0</span>
45 </div>
46 <div id="projectbrief">API Documentation for GBDK 2020</div>
47 </td>
48 </tr>
49 </tbody>
50 </table>
51 </div>
52 <!-- end header part -->
53 <!-- Generated by Doxygen 1.9.2 -->
54 <script type="text/javascript">
55 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
56 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
57 /* @license-end */
58 </script>
59 <script type="text/javascript" src="menudata.js"></script>
60 <script type="text/javascript" src="menu.js"></script>
61 <script type="text/javascript">
62 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
63 $(function() {
64 initMenu('',true,false,'search.php','Search');
65 $(document).ready(function() { init_search(); });
66 });
67 /* @license-end */
68 </script>
69 <div id="main-nav"></div>
70 </div><!-- top -->
71 <div id="side-nav" class="ui-resizable side-nav-resizable">
72 <div id="nav-tree">
73 <div id="nav-tree-contents">
74 <div id="nav-sync" class="sync"></div>
75 </div>
76 </div>
77 <div id="splitbar" style="-moz-user-select:none;"
78 class="ui-resizable-handle">
79 </div>
80 </div>
81 <script type="text/javascript">
82 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
83 $(document).ready(function(){initNavTree('laptop__io_8h.html',''); initResizable(); });
84 /* @license-end */
85 </script>
86 <div id="doc-content">
87 <!-- window showing the filter options -->
88 <div id="MSearchSelectWindow"
89 onmouseover="return searchBox.OnSearchSelectShow()"
90 onmouseout="return searchBox.OnSearchSelectHide()"
91 onkeydown="return searchBox.OnSearchSelectKey(event)">
92 </div>
93
94 <!-- iframe showing the search results (closed by default) -->
95 <div id="MSearchResultsWindow">
96 <iframe src="javascript:void(0)" frameborder="0"
97 name="MSearchResults" id="MSearchResults">
98 </iframe>
99 </div>
100
101 <div class="header">
102 <div class="summary">
103 <a href="#define-members">Macros</a> |
104 <a href="#func-members">Functions</a> |
105 <a href="#var-members">Variables</a> </div>
106 <div class="headertitle"><div class="title">laptop_io.h File Reference</div></div>
107 </div><!--header-->
108 <div class="contents">
109 <div class="textblock"><code>#include <<a class="el" href="platform_8h_source.html">gbdk/platform.h</a>></code><br />
110 <code>#include <<a class="el" href="stdint_8h_source.html">stdint.h</a>></code><br />
111 <code>#include <<a class="el" href="stdbool_8h_source.html">stdbool.h</a>></code><br />
112 </div>
113 <p><a href="laptop__io_8h_source.html">Go to the source code of this file.</a></p>
114 <table class="memberdecls">
115 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
116 Macros</h2></td></tr>
117 <tr class="memitem:_MEGADUCK_LAPTOP_IO_H"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#_MEGADUCK_LAPTOP_IO_H">_MEGADUCK_LAPTOP_IO_H</a></td></tr>
118 <tr class="separator:_MEGADUCK_LAPTOP_IO_H"><td class="memSeparator" colspan="2"> </td></tr>
119 <tr class="memitem:DUCK_IO_CMD_INIT_START"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_INIT_START">DUCK_IO_CMD_INIT_START</a>   0x00u</td></tr>
120 <tr class="separator:DUCK_IO_CMD_INIT_START"><td class="memSeparator" colspan="2"> </td></tr>
121 <tr class="memitem:DUCK_IO_CMD_GET_KEYS"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_GET_KEYS">DUCK_IO_CMD_GET_KEYS</a>   0x00u</td></tr>
122 <tr class="separator:DUCK_IO_CMD_GET_KEYS"><td class="memSeparator" colspan="2"> </td></tr>
123 <tr class="memitem:DUCK_IO_CMD_DONE_OR_OK"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_DONE_OR_OK">DUCK_IO_CMD_DONE_OR_OK</a>   0x01u</td></tr>
124 <tr class="separator:DUCK_IO_CMD_DONE_OR_OK"><td class="memSeparator" colspan="2"> </td></tr>
125 <tr class="memitem:DUCK_IO_CMD_ABORT_OR_FAIL"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_ABORT_OR_FAIL">DUCK_IO_CMD_ABORT_OR_FAIL</a>   0x04u</td></tr>
126 <tr class="separator:DUCK_IO_CMD_ABORT_OR_FAIL"><td class="memSeparator" colspan="2"> </td></tr>
127 <tr class="memitem:DUCK_IO_CMD_PLAY_SPEECH"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_PLAY_SPEECH">DUCK_IO_CMD_PLAY_SPEECH</a>   0x05u</td></tr>
128 <tr class="separator:DUCK_IO_CMD_PLAY_SPEECH"><td class="memSeparator" colspan="2"> </td></tr>
129 <tr class="memitem:DUCK_IO_CMD_RUN_CART_IN_SLOT"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_RUN_CART_IN_SLOT">DUCK_IO_CMD_RUN_CART_IN_SLOT</a>   0x08u</td></tr>
130 <tr class="separator:DUCK_IO_CMD_RUN_CART_IN_SLOT"><td class="memSeparator" colspan="2"> </td></tr>
131 <tr class="memitem:DUCK_IO_CMD_PRINT_INIT_EXT_IO"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_PRINT_INIT_EXT_IO">DUCK_IO_CMD_PRINT_INIT_EXT_IO</a>   0x09u</td></tr>
132 <tr class="separator:DUCK_IO_CMD_PRINT_INIT_EXT_IO"><td class="memSeparator" colspan="2"> </td></tr>
133 <tr class="memitem:DUCK_IO_CMD_SET_RTC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_SET_RTC">DUCK_IO_CMD_SET_RTC</a>   0x0Bu</td></tr>
134 <tr class="separator:DUCK_IO_CMD_SET_RTC"><td class="memSeparator" colspan="2"> </td></tr>
135 <tr class="memitem:DUCK_IO_CMD_GET_RTC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_GET_RTC">DUCK_IO_CMD_GET_RTC</a>   0x0Cu</td></tr>
136 <tr class="separator:DUCK_IO_CMD_GET_RTC"><td class="memSeparator" colspan="2"> </td></tr>
137 <tr class="memitem:DUCK_IO_CMD_PRINT_SEND_BYTES"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_PRINT_SEND_BYTES">DUCK_IO_CMD_PRINT_SEND_BYTES</a>   0x11u</td></tr>
138 <tr class="separator:DUCK_IO_CMD_PRINT_SEND_BYTES"><td class="memSeparator" colspan="2"> </td></tr>
139 <tr class="memitem:DUCK_IO_REPLY_BOOT_UNSET"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_BOOT_UNSET">DUCK_IO_REPLY_BOOT_UNSET</a>   0x00u</td></tr>
140 <tr class="separator:DUCK_IO_REPLY_BOOT_UNSET"><td class="memSeparator" colspan="2"> </td></tr>
141 <tr class="memitem:DUCK_IO_REPLY_BOOT_FAIL"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_BOOT_FAIL">DUCK_IO_REPLY_BOOT_FAIL</a>   0x01u</td></tr>
142 <tr class="separator:DUCK_IO_REPLY_BOOT_FAIL"><td class="memSeparator" colspan="2"> </td></tr>
143 <tr class="memitem:DUCK_IO_REPLY_BUFFER_XFER_OK"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_BUFFER_XFER_OK">DUCK_IO_REPLY_BUFFER_XFER_OK</a>   0x01u</td></tr>
144 <tr class="separator:DUCK_IO_REPLY_BUFFER_XFER_OK"><td class="memSeparator" colspan="2"> </td></tr>
145 <tr class="memitem:DUCK_IO_REPLY_SEND_BUFFER_OK"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_SEND_BUFFER_OK">DUCK_IO_REPLY_SEND_BUFFER_OK</a>   0x03u</td></tr>
146 <tr class="separator:DUCK_IO_REPLY_SEND_BUFFER_OK"><td class="memSeparator" colspan="2"> </td></tr>
147 <tr class="memitem:DUCK_IO_REPLY_BOOT_OK"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_BOOT_OK">DUCK_IO_REPLY_BOOT_OK</a>   0x01u</td></tr>
148 <tr class="separator:DUCK_IO_REPLY_BOOT_OK"><td class="memSeparator" colspan="2"> </td></tr>
149 <tr class="memitem:DUCK_IO_LEN_KBD_GET"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_KBD_GET">DUCK_IO_LEN_KBD_GET</a>   2u</td></tr>
150 <tr class="separator:DUCK_IO_LEN_KBD_GET"><td class="memSeparator" colspan="2"> </td></tr>
151 <tr class="memitem:DUCK_IO_LEN_RTC_GET"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_RTC_GET">DUCK_IO_LEN_RTC_GET</a>   8u</td></tr>
152 <tr class="separator:DUCK_IO_LEN_RTC_GET"><td class="memSeparator" colspan="2"> </td></tr>
153 <tr class="memitem:DUCK_IO_LEN_RTC_SET"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_RTC_SET">DUCK_IO_LEN_RTC_SET</a>   8u</td></tr>
154 <tr class="separator:DUCK_IO_LEN_RTC_SET"><td class="memSeparator" colspan="2"> </td></tr>
155 <tr class="memitem:DUCK_IO_LEN_PLAY_SPEECH"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_PLAY_SPEECH">DUCK_IO_LEN_PLAY_SPEECH</a>   1u</td></tr>
156 <tr class="separator:DUCK_IO_LEN_PLAY_SPEECH"><td class="memSeparator" colspan="2"> </td></tr>
157 <tr class="memitem:DUCK_IO_REPLY_NO_CART_IN_SLOT"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_REPLY_NO_CART_IN_SLOT">DUCK_IO_REPLY_NO_CART_IN_SLOT</a>   06u</td></tr>
158 <tr class="separator:DUCK_IO_REPLY_NO_CART_IN_SLOT"><td class="memSeparator" colspan="2"> </td></tr>
159 <tr class="memitem:DUCK_IO_LEN_RX_MAX"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_RX_MAX">DUCK_IO_LEN_RX_MAX</a>   14u</td></tr>
160 <tr class="separator:DUCK_IO_LEN_RX_MAX"><td class="memSeparator" colspan="2"> </td></tr>
161 <tr class="memitem:DUCK_IO_LEN_TX_MAX"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_TX_MAX">DUCK_IO_LEN_TX_MAX</a>   14u</td></tr>
162 <tr class="separator:DUCK_IO_LEN_TX_MAX"><td class="memSeparator" colspan="2"> </td></tr>
163 <tr class="memitem:DUCK_IO_TIMEOUT_2_MSEC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_TIMEOUT_2_MSEC">DUCK_IO_TIMEOUT_2_MSEC</a>   2u</td></tr>
164 <tr class="separator:DUCK_IO_TIMEOUT_2_MSEC"><td class="memSeparator" colspan="2"> </td></tr>
165 <tr class="memitem:DUCK_IO_TIMEOUT_100_MSEC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_TIMEOUT_100_MSEC">DUCK_IO_TIMEOUT_100_MSEC</a>   100u</td></tr>
166 <tr class="separator:DUCK_IO_TIMEOUT_100_MSEC"><td class="memSeparator" colspan="2"> </td></tr>
167 <tr class="memitem:DUCK_IO_TIMEOUT_200_MSEC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_TIMEOUT_200_MSEC">DUCK_IO_TIMEOUT_200_MSEC</a>   200u</td></tr>
168 <tr class="separator:DUCK_IO_TIMEOUT_200_MSEC"><td class="memSeparator" colspan="2"> </td></tr>
169 <tr class="memitem:DUCK_IO_SPEECH_CMD_MIN"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_SPEECH_CMD_MIN">DUCK_IO_SPEECH_CMD_MIN</a>   1</td></tr>
170 <tr class="separator:DUCK_IO_SPEECH_CMD_MIN"><td class="memSeparator" colspan="2"> </td></tr>
171 <tr class="memitem:DUCK_IO_SPEECH_CMD_MAX"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_SPEECH_CMD_MAX">DUCK_IO_SPEECH_CMD_MAX</a>   6</td></tr>
172 <tr class="separator:DUCK_IO_SPEECH_CMD_MAX"><td class="memSeparator" colspan="2"> </td></tr>
173 <tr class="memitem:DUCK_IO_RTC_YEAR"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_YEAR">DUCK_IO_RTC_YEAR</a>   0u</td></tr>
174 <tr class="separator:DUCK_IO_RTC_YEAR"><td class="memSeparator" colspan="2"> </td></tr>
175 <tr class="memitem:DUCK_IO_RTC_MON"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_MON">DUCK_IO_RTC_MON</a>   1u</td></tr>
176 <tr class="separator:DUCK_IO_RTC_MON"><td class="memSeparator" colspan="2"> </td></tr>
177 <tr class="memitem:DUCK_IO_RTC_DAY"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_DAY">DUCK_IO_RTC_DAY</a>   2u</td></tr>
178 <tr class="separator:DUCK_IO_RTC_DAY"><td class="memSeparator" colspan="2"> </td></tr>
179 <tr class="memitem:DUCK_IO_RTC_WEEKDAY"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_WEEKDAY">DUCK_IO_RTC_WEEKDAY</a>   3u</td></tr>
180 <tr class="separator:DUCK_IO_RTC_WEEKDAY"><td class="memSeparator" colspan="2"> </td></tr>
181 <tr class="memitem:DUCK_IO_RTC_AMPM"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_AMPM">DUCK_IO_RTC_AMPM</a>   4u</td></tr>
182 <tr class="separator:DUCK_IO_RTC_AMPM"><td class="memSeparator" colspan="2"> </td></tr>
183 <tr class="memitem:DUCK_IO_RTC_HOUR"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_HOUR">DUCK_IO_RTC_HOUR</a>   5u</td></tr>
184 <tr class="separator:DUCK_IO_RTC_HOUR"><td class="memSeparator" colspan="2"> </td></tr>
185 <tr class="memitem:DUCK_IO_RTC_MIN"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_MIN">DUCK_IO_RTC_MIN</a>   6u</td></tr>
186 <tr class="separator:DUCK_IO_RTC_MIN"><td class="memSeparator" colspan="2"> </td></tr>
187 <tr class="memitem:DUCK_IO_RTC_SEC"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_RTC_SEC">DUCK_IO_RTC_SEC</a>   7u</td></tr>
188 <tr class="separator:DUCK_IO_RTC_SEC"><td class="memSeparator" colspan="2"> </td></tr>
189 <tr class="memitem:DUCK_IO_KBD_FLAGS"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_KBD_FLAGS">DUCK_IO_KBD_FLAGS</a>   0u</td></tr>
190 <tr class="separator:DUCK_IO_KBD_FLAGS"><td class="memSeparator" colspan="2"> </td></tr>
191 <tr class="memitem:DUCK_IO_KBD_KEYCODE"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_KBD_KEYCODE">DUCK_IO_KBD_KEYCODE</a>   1u</td></tr>
192 <tr class="separator:DUCK_IO_KBD_KEYCODE"><td class="memSeparator" colspan="2"> </td></tr>
193 <tr class="memitem:DUCK_IO_PRINTER_FAIL"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_FAIL">DUCK_IO_PRINTER_FAIL</a>   0x00u</td></tr>
194 <tr class="separator:DUCK_IO_PRINTER_FAIL"><td class="memSeparator" colspan="2"> </td></tr>
195 <tr class="memitem:DUCK_IO_PRINTER_TYPE_2_PASS"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_2_PASS">DUCK_IO_PRINTER_TYPE_2_PASS</a>   0x01u</td></tr>
196 <tr class="separator:DUCK_IO_PRINTER_TYPE_2_PASS"><td class="memSeparator" colspan="2"> </td></tr>
197 <tr class="memitem:DUCK_IO_PRINTER_TYPE_1_PASS"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_1_PASS">DUCK_IO_PRINTER_TYPE_1_PASS</a>   0x02u</td></tr>
198 <tr class="separator:DUCK_IO_PRINTER_TYPE_1_PASS"><td class="memSeparator" colspan="2"> </td></tr>
199 <tr class="memitem:DUCK_IO_PRINTER_MAYBE_BUSY"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_MAYBE_BUSY">DUCK_IO_PRINTER_MAYBE_BUSY</a>   0x03u</td></tr>
200 <tr class="separator:DUCK_IO_PRINTER_MAYBE_BUSY"><td class="memSeparator" colspan="2"> </td></tr>
201 </table><table class="memberdecls">
202 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
203 Functions</h2></td></tr>
204 <tr class="memitem:duck_io_send_byte"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_send_byte">duck_io_send_byte</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> tx_byte)</td></tr>
205 <tr class="separator:duck_io_send_byte"><td class="memSeparator" colspan="2"> </td></tr>
206 <tr class="memitem:duck_io_read_byte_no_timeout"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_read_byte_no_timeout">duck_io_read_byte_no_timeout</a> (void)</td></tr>
207 <tr class="separator:duck_io_read_byte_no_timeout"><td class="memSeparator" colspan="2"> </td></tr>
208 <tr class="memitem:duck_io_enable_read_byte"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_enable_read_byte">duck_io_enable_read_byte</a> (void)</td></tr>
209 <tr class="separator:duck_io_enable_read_byte"><td class="memSeparator" colspan="2"> </td></tr>
210 <tr class="memitem:duck_io_laptop_init"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_laptop_init">duck_io_laptop_init</a> (void)</td></tr>
211 <tr class="separator:duck_io_laptop_init"><td class="memSeparator" colspan="2"> </td></tr>
212 <tr class="memitem:duck_io_printer_last_status"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_printer_last_status">duck_io_printer_last_status</a> (void)</td></tr>
213 <tr class="separator:duck_io_printer_last_status"><td class="memSeparator" colspan="2"> </td></tr>
214 <tr class="memitem:duck_io_printer_query"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_printer_query">duck_io_printer_query</a> (void)</td></tr>
215 <tr class="separator:duck_io_printer_query"><td class="memSeparator" colspan="2"> </td></tr>
216 <tr class="memitem:duck_io_read_byte_with_msecs_tim"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_read_byte_with_msecs_tim">duck_io_read_byte_with_msecs_timeout</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> timeout_len_ms)</td></tr>
217 <tr class="separator:duck_io_read_byte_with_msecs_tim"><td class="memSeparator" colspan="2"> </td></tr>
218 <tr class="memitem:duck_io_send_byte_and_check_ack_"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_send_byte_and_check_ack_">duck_io_send_byte_and_check_ack_msecs_timeout</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> tx_byte, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> timeout_len_ms, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> expected_reply)</td></tr>
219 <tr class="separator:duck_io_send_byte_and_check_ack_"><td class="memSeparator" colspan="2"> </td></tr>
220 <tr class="memitem:duck_io_send_cmd_and_buffer"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_send_cmd_and_buffer">duck_io_send_cmd_and_buffer</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> io_cmd)</td></tr>
221 <tr class="separator:duck_io_send_cmd_and_buffer"><td class="memSeparator" colspan="2"> </td></tr>
222 <tr class="memitem:duck_io_send_cmd_and_receive_buf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_send_cmd_and_receive_buf">duck_io_send_cmd_and_receive_buffer</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> io_cmd)</td></tr>
223 <tr class="separator:duck_io_send_cmd_and_receive_buf"><td class="memSeparator" colspan="2"> </td></tr>
224 </table><table class="memberdecls">
225 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
226 Variables</h2></td></tr>
227 <tr class="memitem:duck_io_rx_byte_done"><td class="memItemLeft" align="right" valign="top">volatile <a class="el" href="stdbool_8h.html#bool">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_rx_byte_done">duck_io_rx_byte_done</a></td></tr>
228 <tr class="separator:duck_io_rx_byte_done"><td class="memSeparator" colspan="2"> </td></tr>
229 <tr class="memitem:duck_io_rx_byte"><td class="memItemLeft" align="right" valign="top">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_rx_byte">duck_io_rx_byte</a></td></tr>
230 <tr class="separator:duck_io_rx_byte"><td class="memSeparator" colspan="2"> </td></tr>
231 <tr class="memitem:duck_io_rx_buf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_rx_buf">duck_io_rx_buf</a> [<a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_RX_MAX">DUCK_IO_LEN_RX_MAX</a>]</td></tr>
232 <tr class="separator:duck_io_rx_buf"><td class="memSeparator" colspan="2"> </td></tr>
233 <tr class="memitem:duck_io_rx_buf_len"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_rx_buf_len">duck_io_rx_buf_len</a></td></tr>
234 <tr class="separator:duck_io_rx_buf_len"><td class="memSeparator" colspan="2"> </td></tr>
235 <tr class="memitem:duck_io_tx_buf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_tx_buf">duck_io_tx_buf</a> [<a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_TX_MAX">DUCK_IO_LEN_TX_MAX</a>]</td></tr>
236 <tr class="separator:duck_io_tx_buf"><td class="memSeparator" colspan="2"> </td></tr>
237 <tr class="memitem:duck_io_tx_buf_len"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="laptop__io_8h.html#duck_io_tx_buf_len">duck_io_tx_buf_len</a></td></tr>
238 <tr class="separator:duck_io_tx_buf_len"><td class="memSeparator" colspan="2"> </td></tr>
239 </table>
240 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
241 <div class="textblock"><p ><a class="anchor" id="megaduck_laptop_io_docs"></a></p>
242 <h1><a class="anchor" id="autotoc_md309"></a>
243 MegaDuck Laptop Peripheral IO support</h1>
244 <p >The MegaDuck Laptop models (Spanish and German) have several built-in hardware peripherals which are attached via a controller that is communicated with using the serial link port.</p>
245 <dl class="section note"><dt>Note</dt><dd>Using the duck_io_* functions referenced from this header file will cause the duck_io_ serial interrupt handler to be automatically installed.</dd></dl>
246 <p>To use any functions here, <a class="el" href="laptop__io_8h.html#duck_io_laptop_init">duck_io_laptop_init()</a> must be called first (just once).</p>
247 <p >For the present time all of the serial operations are blocking, they do not return until completed. </p>
248 </div><h2 class="groupheader">Macro Definition Documentation</h2>
249 <a id="_MEGADUCK_LAPTOP_IO_H" name="_MEGADUCK_LAPTOP_IO_H"></a>
250 <h2 class="memtitle"><span class="permalink"><a href="#_MEGADUCK_LAPTOP_IO_H">◆ </a></span>_MEGADUCK_LAPTOP_IO_H</h2>
251
252 <div class="memitem">
253 <div class="memproto">
254 <table class="memname">
255 <tr>
256 <td class="memname">#define _MEGADUCK_LAPTOP_IO_H</td>
257 </tr>
258 </table>
259 </div><div class="memdoc">
260
261 </div>
262 </div>
263 <a id="DUCK_IO_CMD_INIT_START" name="DUCK_IO_CMD_INIT_START"></a>
264 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_INIT_START">◆ </a></span>DUCK_IO_CMD_INIT_START</h2>
265
266 <div class="memitem">
267 <div class="memproto">
268 <table class="memname">
269 <tr>
270 <td class="memname">#define DUCK_IO_CMD_INIT_START   0x00u</td>
271 </tr>
272 </table>
273 </div><div class="memdoc">
274 <p >Command to request starting the hardware init counter sequence process </p>
275
276 </div>
277 </div>
278 <a id="DUCK_IO_CMD_GET_KEYS" name="DUCK_IO_CMD_GET_KEYS"></a>
279 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_GET_KEYS">◆ </a></span>DUCK_IO_CMD_GET_KEYS</h2>
280
281 <div class="memitem">
282 <div class="memproto">
283 <table class="memname">
284 <tr>
285 <td class="memname">#define DUCK_IO_CMD_GET_KEYS   0x00u</td>
286 </tr>
287 </table>
288 </div><div class="memdoc">
289 <p >Command to get hardware keyboard data by receiving a multi-byte packet </p>
290
291 </div>
292 </div>
293 <a id="DUCK_IO_CMD_DONE_OR_OK" name="DUCK_IO_CMD_DONE_OR_OK"></a>
294 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_DONE_OR_OK">◆ </a></span>DUCK_IO_CMD_DONE_OR_OK</h2>
295
296 <div class="memitem">
297 <div class="memproto">
298 <table class="memname">
299 <tr>
300 <td class="memname">#define DUCK_IO_CMD_DONE_OR_OK   0x01u</td>
301 </tr>
302 </table>
303 </div><div class="memdoc">
304
305 </div>
306 </div>
307 <a id="DUCK_IO_CMD_ABORT_OR_FAIL" name="DUCK_IO_CMD_ABORT_OR_FAIL"></a>
308 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_ABORT_OR_FAIL">◆ </a></span>DUCK_IO_CMD_ABORT_OR_FAIL</h2>
309
310 <div class="memitem">
311 <div class="memproto">
312 <table class="memname">
313 <tr>
314 <td class="memname">#define DUCK_IO_CMD_ABORT_OR_FAIL   0x04u</td>
315 </tr>
316 </table>
317 </div><div class="memdoc">
318
319 </div>
320 </div>
321 <a id="DUCK_IO_CMD_PLAY_SPEECH" name="DUCK_IO_CMD_PLAY_SPEECH"></a>
322 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_PLAY_SPEECH">◆ </a></span>DUCK_IO_CMD_PLAY_SPEECH</h2>
323
324 <div class="memitem">
325 <div class="memproto">
326 <table class="memname">
327 <tr>
328 <td class="memname">#define DUCK_IO_CMD_PLAY_SPEECH   0x05u</td>
329 </tr>
330 </table>
331 </div><div class="memdoc">
332
333 </div>
334 </div>
335 <a id="DUCK_IO_CMD_RUN_CART_IN_SLOT" name="DUCK_IO_CMD_RUN_CART_IN_SLOT"></a>
336 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_RUN_CART_IN_SLOT">◆ </a></span>DUCK_IO_CMD_RUN_CART_IN_SLOT</h2>
337
338 <div class="memitem">
339 <div class="memproto">
340 <table class="memname">
341 <tr>
342 <td class="memname">#define DUCK_IO_CMD_RUN_CART_IN_SLOT   0x08u</td>
343 </tr>
344 </table>
345 </div><div class="memdoc">
346
347 </div>
348 </div>
349 <a id="DUCK_IO_CMD_PRINT_INIT_EXT_IO" name="DUCK_IO_CMD_PRINT_INIT_EXT_IO"></a>
350 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_PRINT_INIT_EXT_IO">◆ </a></span>DUCK_IO_CMD_PRINT_INIT_EXT_IO</h2>
351
352 <div class="memitem">
353 <div class="memproto">
354 <table class="memname">
355 <tr>
356 <td class="memname">#define DUCK_IO_CMD_PRINT_INIT_EXT_IO   0x09u</td>
357 </tr>
358 </table>
359 </div><div class="memdoc">
360 <p >Command to init the printer and return status + model type </p>
361
362 </div>
363 </div>
364 <a id="DUCK_IO_CMD_SET_RTC" name="DUCK_IO_CMD_SET_RTC"></a>
365 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_SET_RTC">◆ </a></span>DUCK_IO_CMD_SET_RTC</h2>
366
367 <div class="memitem">
368 <div class="memproto">
369 <table class="memname">
370 <tr>
371 <td class="memname">#define DUCK_IO_CMD_SET_RTC   0x0Bu</td>
372 </tr>
373 </table>
374 </div><div class="memdoc">
375 <p >Command to set hardware RTC by sending a multi-byte packet </p>
376
377 </div>
378 </div>
379 <a id="DUCK_IO_CMD_GET_RTC" name="DUCK_IO_CMD_GET_RTC"></a>
380 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_GET_RTC">◆ </a></span>DUCK_IO_CMD_GET_RTC</h2>
381
382 <div class="memitem">
383 <div class="memproto">
384 <table class="memname">
385 <tr>
386 <td class="memname">#define DUCK_IO_CMD_GET_RTC   0x0Cu</td>
387 </tr>
388 </table>
389 </div><div class="memdoc">
390 <p >Command to get hardware RTC by receiving a a multi-byte packet </p>
391
392 </div>
393 </div>
394 <a id="DUCK_IO_CMD_PRINT_SEND_BYTES" name="DUCK_IO_CMD_PRINT_SEND_BYTES"></a>
395 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_CMD_PRINT_SEND_BYTES">◆ </a></span>DUCK_IO_CMD_PRINT_SEND_BYTES</h2>
396
397 <div class="memitem">
398 <div class="memproto">
399 <table class="memname">
400 <tr>
401 <td class="memname">#define DUCK_IO_CMD_PRINT_SEND_BYTES   0x11u</td>
402 </tr>
403 </table>
404 </div><div class="memdoc">
405 <p >Send printer data </p>
406
407 </div>
408 </div>
409 <a id="DUCK_IO_REPLY_BOOT_UNSET" name="DUCK_IO_REPLY_BOOT_UNSET"></a>
410 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_BOOT_UNSET">◆ </a></span>DUCK_IO_REPLY_BOOT_UNSET</h2>
411
412 <div class="memitem">
413 <div class="memproto">
414 <table class="memname">
415 <tr>
416 <td class="memname">#define DUCK_IO_REPLY_BOOT_UNSET   0x00u</td>
417 </tr>
418 </table>
419 </div><div class="memdoc">
420
421 </div>
422 </div>
423 <a id="DUCK_IO_REPLY_BOOT_FAIL" name="DUCK_IO_REPLY_BOOT_FAIL"></a>
424 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_BOOT_FAIL">◆ </a></span>DUCK_IO_REPLY_BOOT_FAIL</h2>
425
426 <div class="memitem">
427 <div class="memproto">
428 <table class="memname">
429 <tr>
430 <td class="memname">#define DUCK_IO_REPLY_BOOT_FAIL   0x01u</td>
431 </tr>
432 </table>
433 </div><div class="memdoc">
434
435 </div>
436 </div>
437 <a id="DUCK_IO_REPLY_BUFFER_XFER_OK" name="DUCK_IO_REPLY_BUFFER_XFER_OK"></a>
438 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_BUFFER_XFER_OK">◆ </a></span>DUCK_IO_REPLY_BUFFER_XFER_OK</h2>
439
440 <div class="memitem">
441 <div class="memproto">
442 <table class="memname">
443 <tr>
444 <td class="memname">#define DUCK_IO_REPLY_BUFFER_XFER_OK   0x01u</td>
445 </tr>
446 </table>
447 </div><div class="memdoc">
448
449 </div>
450 </div>
451 <a id="DUCK_IO_REPLY_SEND_BUFFER_OK" name="DUCK_IO_REPLY_SEND_BUFFER_OK"></a>
452 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_SEND_BUFFER_OK">◆ </a></span>DUCK_IO_REPLY_SEND_BUFFER_OK</h2>
453
454 <div class="memitem">
455 <div class="memproto">
456 <table class="memname">
457 <tr>
458 <td class="memname">#define DUCK_IO_REPLY_SEND_BUFFER_OK   0x03u</td>
459 </tr>
460 </table>
461 </div><div class="memdoc">
462
463 </div>
464 </div>
465 <a id="DUCK_IO_REPLY_BOOT_OK" name="DUCK_IO_REPLY_BOOT_OK"></a>
466 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_BOOT_OK">◆ </a></span>DUCK_IO_REPLY_BOOT_OK</h2>
467
468 <div class="memitem">
469 <div class="memproto">
470 <table class="memname">
471 <tr>
472 <td class="memname">#define DUCK_IO_REPLY_BOOT_OK   0x01u</td>
473 </tr>
474 </table>
475 </div><div class="memdoc">
476
477 </div>
478 </div>
479 <a id="DUCK_IO_LEN_KBD_GET" name="DUCK_IO_LEN_KBD_GET"></a>
480 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_KBD_GET">◆ </a></span>DUCK_IO_LEN_KBD_GET</h2>
481
482 <div class="memitem">
483 <div class="memproto">
484 <table class="memname">
485 <tr>
486 <td class="memname">#define DUCK_IO_LEN_KBD_GET   2u</td>
487 </tr>
488 </table>
489 </div><div class="memdoc">
490 <p >Get Keyboard key payload size: 2 bytes Payload (excludes 1 length header byte, 1 byte Checksum) </p>
491
492 </div>
493 </div>
494 <a id="DUCK_IO_LEN_RTC_GET" name="DUCK_IO_LEN_RTC_GET"></a>
495 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_RTC_GET">◆ </a></span>DUCK_IO_LEN_RTC_GET</h2>
496
497 <div class="memitem">
498 <div class="memproto">
499 <table class="memname">
500 <tr>
501 <td class="memname">#define DUCK_IO_LEN_RTC_GET   8u</td>
502 </tr>
503 </table>
504 </div><div class="memdoc">
505 <p >Get RTC payload size: 8 bytes Payload (excludes 1 length header byte, 1 byte Checksum) </p>
506
507 </div>
508 </div>
509 <a id="DUCK_IO_LEN_RTC_SET" name="DUCK_IO_LEN_RTC_SET"></a>
510 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_RTC_SET">◆ </a></span>DUCK_IO_LEN_RTC_SET</h2>
511
512 <div class="memitem">
513 <div class="memproto">
514 <table class="memname">
515 <tr>
516 <td class="memname">#define DUCK_IO_LEN_RTC_SET   8u</td>
517 </tr>
518 </table>
519 </div><div class="memdoc">
520 <p >Set RTC payload size: 8 bytes Payload (excludes 1 length header byte, 1 byte Checksum) </p>
521
522 </div>
523 </div>
524 <a id="DUCK_IO_LEN_PLAY_SPEECH" name="DUCK_IO_LEN_PLAY_SPEECH"></a>
525 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_PLAY_SPEECH">◆ </a></span>DUCK_IO_LEN_PLAY_SPEECH</h2>
526
527 <div class="memitem">
528 <div class="memproto">
529 <table class="memname">
530 <tr>
531 <td class="memname">#define DUCK_IO_LEN_PLAY_SPEECH   1u</td>
532 </tr>
533 </table>
534 </div><div class="memdoc">
535 <p >Play Speech payload size: 1 byte Payload (excludes 1 length header byte, 1 byte Checksum) </p>
536
537 </div>
538 </div>
539 <a id="DUCK_IO_REPLY_NO_CART_IN_SLOT" name="DUCK_IO_REPLY_NO_CART_IN_SLOT"></a>
540 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_REPLY_NO_CART_IN_SLOT">◆ </a></span>DUCK_IO_REPLY_NO_CART_IN_SLOT</h2>
541
542 <div class="memitem">
543 <div class="memproto">
544 <table class="memname">
545 <tr>
546 <td class="memname">#define DUCK_IO_REPLY_NO_CART_IN_SLOT   06u</td>
547 </tr>
548 </table>
549 </div><div class="memdoc">
550
551 </div>
552 </div>
553 <a id="DUCK_IO_LEN_RX_MAX" name="DUCK_IO_LEN_RX_MAX"></a>
554 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_RX_MAX">◆ </a></span>DUCK_IO_LEN_RX_MAX</h2>
555
556 <div class="memitem">
557 <div class="memproto">
558 <table class="memname">
559 <tr>
560 <td class="memname">#define DUCK_IO_LEN_RX_MAX   14u</td>
561 </tr>
562 </table>
563 </div><div class="memdoc">
564
565 </div>
566 </div>
567 <a id="DUCK_IO_LEN_TX_MAX" name="DUCK_IO_LEN_TX_MAX"></a>
568 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_LEN_TX_MAX">◆ </a></span>DUCK_IO_LEN_TX_MAX</h2>
569
570 <div class="memitem">
571 <div class="memproto">
572 <table class="memname">
573 <tr>
574 <td class="memname">#define DUCK_IO_LEN_TX_MAX   14u</td>
575 </tr>
576 </table>
577 </div><div class="memdoc">
578
579 </div>
580 </div>
581 <a id="DUCK_IO_TIMEOUT_2_MSEC" name="DUCK_IO_TIMEOUT_2_MSEC"></a>
582 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_TIMEOUT_2_MSEC">◆ </a></span>DUCK_IO_TIMEOUT_2_MSEC</h2>
583
584 <div class="memitem">
585 <div class="memproto">
586 <table class="memname">
587 <tr>
588 <td class="memname">#define DUCK_IO_TIMEOUT_2_MSEC   2u</td>
589 </tr>
590 </table>
591 </div><div class="memdoc">
592
593 </div>
594 </div>
595 <a id="DUCK_IO_TIMEOUT_100_MSEC" name="DUCK_IO_TIMEOUT_100_MSEC"></a>
596 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_TIMEOUT_100_MSEC">◆ </a></span>DUCK_IO_TIMEOUT_100_MSEC</h2>
597
598 <div class="memitem">
599 <div class="memproto">
600 <table class="memname">
601 <tr>
602 <td class="memname">#define DUCK_IO_TIMEOUT_100_MSEC   100u</td>
603 </tr>
604 </table>
605 </div><div class="memdoc">
606
607 </div>
608 </div>
609 <a id="DUCK_IO_TIMEOUT_200_MSEC" name="DUCK_IO_TIMEOUT_200_MSEC"></a>
610 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_TIMEOUT_200_MSEC">◆ </a></span>DUCK_IO_TIMEOUT_200_MSEC</h2>
611
612 <div class="memitem">
613 <div class="memproto">
614 <table class="memname">
615 <tr>
616 <td class="memname">#define DUCK_IO_TIMEOUT_200_MSEC   200u</td>
617 </tr>
618 </table>
619 </div><div class="memdoc">
620
621 </div>
622 </div>
623 <a id="DUCK_IO_SPEECH_CMD_MIN" name="DUCK_IO_SPEECH_CMD_MIN"></a>
624 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_SPEECH_CMD_MIN">◆ </a></span>DUCK_IO_SPEECH_CMD_MIN</h2>
625
626 <div class="memitem">
627 <div class="memproto">
628 <table class="memname">
629 <tr>
630 <td class="memname">#define DUCK_IO_SPEECH_CMD_MIN   1</td>
631 </tr>
632 </table>
633 </div><div class="memdoc">
634
635 </div>
636 </div>
637 <a id="DUCK_IO_SPEECH_CMD_MAX" name="DUCK_IO_SPEECH_CMD_MAX"></a>
638 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_SPEECH_CMD_MAX">◆ </a></span>DUCK_IO_SPEECH_CMD_MAX</h2>
639
640 <div class="memitem">
641 <div class="memproto">
642 <table class="memname">
643 <tr>
644 <td class="memname">#define DUCK_IO_SPEECH_CMD_MAX   6</td>
645 </tr>
646 </table>
647 </div><div class="memdoc">
648
649 </div>
650 </div>
651 <a id="DUCK_IO_RTC_YEAR" name="DUCK_IO_RTC_YEAR"></a>
652 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_YEAR">◆ </a></span>DUCK_IO_RTC_YEAR</h2>
653
654 <div class="memitem">
655 <div class="memproto">
656 <table class="memname">
657 <tr>
658 <td class="memname">#define DUCK_IO_RTC_YEAR   0u</td>
659 </tr>
660 </table>
661 </div><div class="memdoc">
662
663 </div>
664 </div>
665 <a id="DUCK_IO_RTC_MON" name="DUCK_IO_RTC_MON"></a>
666 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_MON">◆ </a></span>DUCK_IO_RTC_MON</h2>
667
668 <div class="memitem">
669 <div class="memproto">
670 <table class="memname">
671 <tr>
672 <td class="memname">#define DUCK_IO_RTC_MON   1u</td>
673 </tr>
674 </table>
675 </div><div class="memdoc">
676
677 </div>
678 </div>
679 <a id="DUCK_IO_RTC_DAY" name="DUCK_IO_RTC_DAY"></a>
680 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_DAY">◆ </a></span>DUCK_IO_RTC_DAY</h2>
681
682 <div class="memitem">
683 <div class="memproto">
684 <table class="memname">
685 <tr>
686 <td class="memname">#define DUCK_IO_RTC_DAY   2u</td>
687 </tr>
688 </table>
689 </div><div class="memdoc">
690
691 </div>
692 </div>
693 <a id="DUCK_IO_RTC_WEEKDAY" name="DUCK_IO_RTC_WEEKDAY"></a>
694 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_WEEKDAY">◆ </a></span>DUCK_IO_RTC_WEEKDAY</h2>
695
696 <div class="memitem">
697 <div class="memproto">
698 <table class="memname">
699 <tr>
700 <td class="memname">#define DUCK_IO_RTC_WEEKDAY   3u</td>
701 </tr>
702 </table>
703 </div><div class="memdoc">
704
705 </div>
706 </div>
707 <a id="DUCK_IO_RTC_AMPM" name="DUCK_IO_RTC_AMPM"></a>
708 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_AMPM">◆ </a></span>DUCK_IO_RTC_AMPM</h2>
709
710 <div class="memitem">
711 <div class="memproto">
712 <table class="memname">
713 <tr>
714 <td class="memname">#define DUCK_IO_RTC_AMPM   4u</td>
715 </tr>
716 </table>
717 </div><div class="memdoc">
718
719 </div>
720 </div>
721 <a id="DUCK_IO_RTC_HOUR" name="DUCK_IO_RTC_HOUR"></a>
722 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_HOUR">◆ </a></span>DUCK_IO_RTC_HOUR</h2>
723
724 <div class="memitem">
725 <div class="memproto">
726 <table class="memname">
727 <tr>
728 <td class="memname">#define DUCK_IO_RTC_HOUR   5u</td>
729 </tr>
730 </table>
731 </div><div class="memdoc">
732
733 </div>
734 </div>
735 <a id="DUCK_IO_RTC_MIN" name="DUCK_IO_RTC_MIN"></a>
736 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_MIN">◆ </a></span>DUCK_IO_RTC_MIN</h2>
737
738 <div class="memitem">
739 <div class="memproto">
740 <table class="memname">
741 <tr>
742 <td class="memname">#define DUCK_IO_RTC_MIN   6u</td>
743 </tr>
744 </table>
745 </div><div class="memdoc">
746
747 </div>
748 </div>
749 <a id="DUCK_IO_RTC_SEC" name="DUCK_IO_RTC_SEC"></a>
750 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_RTC_SEC">◆ </a></span>DUCK_IO_RTC_SEC</h2>
751
752 <div class="memitem">
753 <div class="memproto">
754 <table class="memname">
755 <tr>
756 <td class="memname">#define DUCK_IO_RTC_SEC   7u</td>
757 </tr>
758 </table>
759 </div><div class="memdoc">
760
761 </div>
762 </div>
763 <a id="DUCK_IO_KBD_FLAGS" name="DUCK_IO_KBD_FLAGS"></a>
764 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_KBD_FLAGS">◆ </a></span>DUCK_IO_KBD_FLAGS</h2>
765
766 <div class="memitem">
767 <div class="memproto">
768 <table class="memname">
769 <tr>
770 <td class="memname">#define DUCK_IO_KBD_FLAGS   0u</td>
771 </tr>
772 </table>
773 </div><div class="memdoc">
774
775 </div>
776 </div>
777 <a id="DUCK_IO_KBD_KEYCODE" name="DUCK_IO_KBD_KEYCODE"></a>
778 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_KBD_KEYCODE">◆ </a></span>DUCK_IO_KBD_KEYCODE</h2>
779
780 <div class="memitem">
781 <div class="memproto">
782 <table class="memname">
783 <tr>
784 <td class="memname">#define DUCK_IO_KBD_KEYCODE   1u</td>
785 </tr>
786 </table>
787 </div><div class="memdoc">
788
789 </div>
790 </div>
791 <a id="DUCK_IO_PRINTER_FAIL" name="DUCK_IO_PRINTER_FAIL"></a>
792 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_PRINTER_FAIL">◆ </a></span>DUCK_IO_PRINTER_FAIL</h2>
793
794 <div class="memitem">
795 <div class="memproto">
796 <table class="memname">
797 <tr>
798 <td class="memname">#define DUCK_IO_PRINTER_FAIL   0x00u</td>
799 </tr>
800 </table>
801 </div><div class="memdoc">
802
803 </div>
804 </div>
805 <a id="DUCK_IO_PRINTER_TYPE_2_PASS" name="DUCK_IO_PRINTER_TYPE_2_PASS"></a>
806 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_PRINTER_TYPE_2_PASS">◆ </a></span>DUCK_IO_PRINTER_TYPE_2_PASS</h2>
807
808 <div class="memitem">
809 <div class="memproto">
810 <table class="memname">
811 <tr>
812 <td class="memname">#define DUCK_IO_PRINTER_TYPE_2_PASS   0x01u</td>
813 </tr>
814 </table>
815 </div><div class="memdoc">
816
817 </div>
818 </div>
819 <a id="DUCK_IO_PRINTER_TYPE_1_PASS" name="DUCK_IO_PRINTER_TYPE_1_PASS"></a>
820 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_PRINTER_TYPE_1_PASS">◆ </a></span>DUCK_IO_PRINTER_TYPE_1_PASS</h2>
821
822 <div class="memitem">
823 <div class="memproto">
824 <table class="memname">
825 <tr>
826 <td class="memname">#define DUCK_IO_PRINTER_TYPE_1_PASS   0x02u</td>
827 </tr>
828 </table>
829 </div><div class="memdoc">
830
831 </div>
832 </div>
833 <a id="DUCK_IO_PRINTER_MAYBE_BUSY" name="DUCK_IO_PRINTER_MAYBE_BUSY"></a>
834 <h2 class="memtitle"><span class="permalink"><a href="#DUCK_IO_PRINTER_MAYBE_BUSY">◆ </a></span>DUCK_IO_PRINTER_MAYBE_BUSY</h2>
835
836 <div class="memitem">
837 <div class="memproto">
838 <table class="memname">
839 <tr>
840 <td class="memname">#define DUCK_IO_PRINTER_MAYBE_BUSY   0x03u</td>
841 </tr>
842 </table>
843 </div><div class="memdoc">
844
845 </div>
846 </div>
847 <h2 class="groupheader">Function Documentation</h2>
848 <a id="duck_io_send_byte" name="duck_io_send_byte"></a>
849 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_send_byte">◆ </a></span>duck_io_send_byte()</h2>
850
851 <div class="memitem">
852 <div class="memproto">
853 <table class="memname">
854 <tr>
855 <td class="memname">void duck_io_send_byte </td>
856 <td>(</td>
857 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
858 <td class="paramname"><em>tx_byte</em></td><td>)</td>
859 <td></td>
860 </tr>
861 </table>
862 </div><div class="memdoc">
863 <p >Sends a byte over serial to the MegaDuck laptop peripheral</p>
864 <dl class="params"><dt>Parameters</dt><dd>
865 <table class="params">
866 <tr><td class="paramname">tx_byte</td><td>Byte to send </td></tr>
867 </table>
868 </dd>
869 </dl>
870
871 </div>
872 </div>
873 <a id="duck_io_read_byte_no_timeout" name="duck_io_read_byte_no_timeout"></a>
874 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_read_byte_no_timeout">◆ </a></span>duck_io_read_byte_no_timeout()</h2>
875
876 <div class="memitem">
877 <div class="memproto">
878 <table class="memname">
879 <tr>
880 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_read_byte_no_timeout </td>
881 <td>(</td>
882 <td class="paramtype">void </td>
883 <td class="paramname"></td><td>)</td>
884 <td></td>
885 </tr>
886 </table>
887 </div><div class="memdoc">
888 <p >Reads a byte over serial from the MegaDuck laptop peripheral with NO timeout</p>
889 <p >Returns: the received byte</p>
890 <p >If there is no reply then it will hang forever </p>
891
892 </div>
893 </div>
894 <a id="duck_io_enable_read_byte" name="duck_io_enable_read_byte"></a>
895 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_enable_read_byte">◆ </a></span>duck_io_enable_read_byte()</h2>
896
897 <div class="memitem">
898 <div class="memproto">
899 <table class="memname">
900 <tr>
901 <td class="memname">void duck_io_enable_read_byte </td>
902 <td>(</td>
903 <td class="paramtype">void </td>
904 <td class="paramname"></td><td>)</td>
905 <td></td>
906 </tr>
907 </table>
908 </div><div class="memdoc">
909 <p >Prepares to receive serial data from the MegaDuck laptop peripheral</p>
910 <ul>
911 <li>Sets serial IO to external clock and enables ready state. </li>
912 <li>Turns on Serial interrupt, clears any pending interrupts and then turns interrupts on (state of <a class="el" href="gb_2hardware_8h.html#IE_REG">IE_REG</a> should be preserved before calling this and then restored at the end of the serial communication being performed). </li>
913 </ul>
914
915 </div>
916 </div>
917 <a id="duck_io_laptop_init" name="duck_io_laptop_init"></a>
918 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_laptop_init">◆ </a></span>duck_io_laptop_init()</h2>
919
920 <div class="memitem">
921 <div class="memproto">
922 <table class="memname">
923 <tr>
924 <td class="memname"><a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_laptop_init </td>
925 <td>(</td>
926 <td class="paramtype">void </td>
927 <td class="paramname"></td><td>)</td>
928 <td></td>
929 </tr>
930 </table>
931 </div><div class="memdoc">
932 <p >Performs init sequence over serial with the MegaDuck laptop peripheral</p>
933 <p >Returns <code>true</code> if successful, otherwise <code>false</code></p>
934 <p >Needs to be done <em>just once</em> any time system is powered on or a cartridge is booted.</p>
935 <p >Sends count up sequence + some commands, then waits for a matching count down sequence in reverse. </p>
936
937 </div>
938 </div>
939 <a id="duck_io_printer_last_status" name="duck_io_printer_last_status"></a>
940 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_printer_last_status">◆ </a></span>duck_io_printer_last_status()</h2>
941
942 <div class="memitem">
943 <div class="memproto">
944 <table class="memname">
945 <tr>
946 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_printer_last_status </td>
947 <td>(</td>
948 <td class="paramtype">void </td>
949 <td class="paramname"></td><td>)</td>
950 <td></td>
951 </tr>
952 </table>
953 </div><div class="memdoc">
954 <p >Returns status of MegaDuck Printer as last detected by <a class="el" href="laptop__io_8h.html#duck_io_laptop_init">duck_io_laptop_init()</a> or <a class="el" href="laptop__io_8h.html#duck_io_printer_query">duck_io_printer_query()</a></p>
955 <p >Should be called immediately before trying to print</p>
956 <p >Returned unsigned 8 bit value will have Printer Type and Status in bits 1..0</p>
957 <p >The resulting value will be cached and used for any subsequent <a class="el" href="laptop__io_8h.html#duck_io_printer_last_status">duck_io_printer_last_status()</a> calls.</p>
958 <p ><a class="el" href="laptop__io_8h.html#duck_io_laptop_init">duck_io_laptop_init()</a> must be called first </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_FAIL">DUCK_IO_PRINTER_FAIL</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_2_PASS">DUCK_IO_PRINTER_TYPE_2_PASS</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_1_PASS">DUCK_IO_PRINTER_TYPE_1_PASS</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_MAYBE_BUSY">DUCK_IO_PRINTER_MAYBE_BUSY</a> <br />
959 </dd></dl>
960
961 </div>
962 </div>
963 <a id="duck_io_printer_query" name="duck_io_printer_query"></a>
964 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_printer_query">◆ </a></span>duck_io_printer_query()</h2>
965
966 <div class="memitem">
967 <div class="memproto">
968 <table class="memname">
969 <tr>
970 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_printer_query </td>
971 <td>(</td>
972 <td class="paramtype">void </td>
973 <td class="paramname"></td><td>)</td>
974 <td></td>
975 </tr>
976 </table>
977 </div><div class="memdoc">
978 <p >Performs a 3 x printer query serial command and returns raw system printer reply</p>
979 <p >Should be called immediately before trying to print</p>
980 <p >Returned unsigned 8 bit value will have Printer Type and Status in bits 1..0</p>
981 <p >The resulting value will be cached and used for any subsequent <a class="el" href="laptop__io_8h.html#duck_io_printer_last_status">duck_io_printer_last_status()</a> calls.</p>
982 <p ><a class="el" href="laptop__io_8h.html#duck_io_laptop_init">duck_io_laptop_init()</a> must be called first </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="laptop__io_8h.html#duck_io_printer_last_status">duck_io_printer_last_status()</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_FAIL">DUCK_IO_PRINTER_FAIL</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_2_PASS">DUCK_IO_PRINTER_TYPE_2_PASS</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_TYPE_1_PASS">DUCK_IO_PRINTER_TYPE_1_PASS</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_PRINTER_MAYBE_BUSY">DUCK_IO_PRINTER_MAYBE_BUSY</a> <br />
983 </dd></dl>
984
985 </div>
986 </div>
987 <a id="duck_io_read_byte_with_msecs_tim" name="duck_io_read_byte_with_msecs_tim"></a>
988 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_read_byte_with_msecs_tim">◆ </a></span>duck_io_read_byte_with_msecs_timeout()</h2>
989
990 <div class="memitem">
991 <div class="memproto">
992 <table class="memname">
993 <tr>
994 <td class="memname"><a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_read_byte_with_msecs_timeout </td>
995 <td>(</td>
996 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
997 <td class="paramname"><em>timeout_len_ms</em></td><td>)</td>
998 <td></td>
999 </tr>
1000 </table>
1001 </div><div class="memdoc">
1002 <p >Waits to receive a byte over serial from the MegaDuck laptop peripheral with a timeout</p>
1003 <dl class="params"><dt>Parameters</dt><dd>
1004 <table class="params">
1005 <tr><td class="paramname">timeout_len_ms</td><td>Unit size is in msec (100 is about ~ 103 msec or 6.14 frames)</td></tr>
1006 </table>
1007 </dd>
1008 </dl>
1009 <p>Returns: </p><ul>
1010 <li><code>true</code>: Success, received byte will be in <code>duck_io_rx_byte</code> global </li>
1011 <li><code>false</code>: Read timed out with no reply </li>
1012 </ul>
1013
1014 </div>
1015 </div>
1016 <a id="duck_io_send_byte_and_check_ack_" name="duck_io_send_byte_and_check_ack_"></a>
1017 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_send_byte_and_check_ack_">◆ </a></span>duck_io_send_byte_and_check_ack_msecs_timeout()</h2>
1018
1019 <div class="memitem">
1020 <div class="memproto">
1021 <table class="memname">
1022 <tr>
1023 <td class="memname"><a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_send_byte_and_check_ack_msecs_timeout </td>
1024 <td>(</td>
1025 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
1026 <td class="paramname"><em>tx_byte</em>, </td>
1027 </tr>
1028 <tr>
1029 <td class="paramkey"></td>
1030 <td></td>
1031 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
1032 <td class="paramname"><em>timeout_len_ms</em>, </td>
1033 </tr>
1034 <tr>
1035 <td class="paramkey"></td>
1036 <td></td>
1037 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
1038 <td class="paramname"><em>expected_reply</em> </td>
1039 </tr>
1040 <tr>
1041 <td></td>
1042 <td>)</td>
1043 <td></td><td></td>
1044 </tr>
1045 </table>
1046 </div><div class="memdoc">
1047 <p >Sends a byte over over serial to the MegaDuck laptop peripheral and waits for a reply with a timeout</p>
1048 <dl class="params"><dt>Parameters</dt><dd>
1049 <table class="params">
1050 <tr><td class="paramname">tx_byte</td><td>Byte to send </td></tr>
1051 <tr><td class="paramname">timeout_len_ms</td><td>Unit size is in msec (100 is about ~ 103 msec or 6.14 frames) </td></tr>
1052 <tr><td class="paramname">expected_reply</td><td>The expected value of the reply byte</td></tr>
1053 </table>
1054 </dd>
1055 </dl>
1056 <p>Returns: </p><ul>
1057 <li><code>true</code>: Success </li>
1058 <li><code>false</code>: if timed out or reply byte didn't match expected value </li>
1059 </ul>
1060
1061 </div>
1062 </div>
1063 <a id="duck_io_send_cmd_and_buffer" name="duck_io_send_cmd_and_buffer"></a>
1064 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_send_cmd_and_buffer">◆ </a></span>duck_io_send_cmd_and_buffer()</h2>
1065
1066 <div class="memitem">
1067 <div class="memproto">
1068 <table class="memname">
1069 <tr>
1070 <td class="memname"><a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_send_cmd_and_buffer </td>
1071 <td>(</td>
1072 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
1073 <td class="paramname"><em>io_cmd</em></td><td>)</td>
1074 <td></td>
1075 </tr>
1076 </table>
1077 </div><div class="memdoc">
1078 <p >Sends a command and a multi-byte buffer over serial to the MegaDuck laptop peripheral</p>
1079 <dl class="params"><dt>Parameters</dt><dd>
1080 <table class="params">
1081 <tr><td class="paramname">io_cmd</td><td>Command byte to send</td></tr>
1082 </table>
1083 </dd>
1084 </dl>
1085 <p>The data should be pre-loaded into these globals: </p><ul>
1086 <li><a class="el" href="laptop__io_8h.html#duck_io_tx_buf">duck_io_tx_buf</a> : Buffer with data to send </li>
1087 <li><a class="el" href="laptop__io_8h.html#duck_io_tx_buf_len">duck_io_tx_buf_len</a> : Number of bytes to send</li>
1088 </ul>
1089 <p>Returns: <code>true</code> if succeeded</p>
1090 <dl class="section see"><dt>See also</dt><dd><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_GET_KEYS">DUCK_IO_CMD_GET_KEYS</a>, <a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_SET_RTC">DUCK_IO_CMD_SET_RTC</a> </dd></dl>
1091
1092 </div>
1093 </div>
1094 <a id="duck_io_send_cmd_and_receive_buf" name="duck_io_send_cmd_and_receive_buf"></a>
1095 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_send_cmd_and_receive_buf">◆ </a></span>duck_io_send_cmd_and_receive_buffer()</h2>
1096
1097 <div class="memitem">
1098 <div class="memproto">
1099 <table class="memname">
1100 <tr>
1101 <td class="memname"><a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_send_cmd_and_receive_buffer </td>
1102 <td>(</td>
1103 <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> </td>
1104 <td class="paramname"><em>io_cmd</em></td><td>)</td>
1105 <td></td>
1106 </tr>
1107 </table>
1108 </div><div class="memdoc">
1109 <p >Sends a command and then receives a multi-byte buffer over serial from the MegaDuck laptop peripheral</p>
1110 <dl class="params"><dt>Parameters</dt><dd>
1111 <table class="params">
1112 <tr><td class="paramname">io_cmd</td><td>Command byte to send</td></tr>
1113 </table>
1114 </dd>
1115 </dl>
1116 <p>If successful, the received data and length will be in these globals: </p><ul>
1117 <li><a class="el" href="laptop__io_8h.html#duck_io_rx_buf">duck_io_rx_buf</a> : Buffer with received data </li>
1118 <li><a class="el" href="laptop__io_8h.html#duck_io_rx_buf_len">duck_io_rx_buf_len</a> : Number of bytes received</li>
1119 </ul>
1120 <p>Returns: <code>true</code> if succeeded, <code>false</code> if failed (could be no reply, failed checksum, etc)</p>
1121 <dl class="section see"><dt>See also</dt><dd><a class="el" href="laptop__io_8h.html#DUCK_IO_CMD_GET_RTC">DUCK_IO_CMD_GET_RTC</a> </dd></dl>
1122
1123 </div>
1124 </div>
1125 <h2 class="groupheader">Variable Documentation</h2>
1126 <a id="duck_io_rx_byte_done" name="duck_io_rx_byte_done"></a>
1127 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_rx_byte_done">◆ </a></span>duck_io_rx_byte_done</h2>
1128
1129 <div class="memitem">
1130 <div class="memproto">
1131 <table class="mlabels">
1132 <tr>
1133 <td class="mlabels-left">
1134 <table class="memname">
1135 <tr>
1136 <td class="memname">volatile <a class="el" href="stdbool_8h.html#bool">bool</a> duck_io_rx_byte_done</td>
1137 </tr>
1138 </table>
1139 </td>
1140 <td class="mlabels-right">
1141 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1142 </tr>
1143 </table>
1144 </div><div class="memdoc">
1145
1146 </div>
1147 </div>
1148 <a id="duck_io_rx_byte" name="duck_io_rx_byte"></a>
1149 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_rx_byte">◆ </a></span>duck_io_rx_byte</h2>
1150
1151 <div class="memitem">
1152 <div class="memproto">
1153 <table class="mlabels">
1154 <tr>
1155 <td class="mlabels-left">
1156 <table class="memname">
1157 <tr>
1158 <td class="memname">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_rx_byte</td>
1159 </tr>
1160 </table>
1161 </td>
1162 <td class="mlabels-right">
1163 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1164 </tr>
1165 </table>
1166 </div><div class="memdoc">
1167
1168 </div>
1169 </div>
1170 <a id="duck_io_rx_buf" name="duck_io_rx_buf"></a>
1171 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_rx_buf">◆ </a></span>duck_io_rx_buf</h2>
1172
1173 <div class="memitem">
1174 <div class="memproto">
1175 <table class="mlabels">
1176 <tr>
1177 <td class="mlabels-left">
1178 <table class="memname">
1179 <tr>
1180 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_rx_buf[<a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_RX_MAX">DUCK_IO_LEN_RX_MAX</a>]</td>
1181 </tr>
1182 </table>
1183 </td>
1184 <td class="mlabels-right">
1185 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1186 </tr>
1187 </table>
1188 </div><div class="memdoc">
1189
1190 </div>
1191 </div>
1192 <a id="duck_io_rx_buf_len" name="duck_io_rx_buf_len"></a>
1193 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_rx_buf_len">◆ </a></span>duck_io_rx_buf_len</h2>
1194
1195 <div class="memitem">
1196 <div class="memproto">
1197 <table class="mlabels">
1198 <tr>
1199 <td class="mlabels-left">
1200 <table class="memname">
1201 <tr>
1202 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_rx_buf_len</td>
1203 </tr>
1204 </table>
1205 </td>
1206 <td class="mlabels-right">
1207 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1208 </tr>
1209 </table>
1210 </div><div class="memdoc">
1211
1212 </div>
1213 </div>
1214 <a id="duck_io_tx_buf" name="duck_io_tx_buf"></a>
1215 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_tx_buf">◆ </a></span>duck_io_tx_buf</h2>
1216
1217 <div class="memitem">
1218 <div class="memproto">
1219 <table class="mlabels">
1220 <tr>
1221 <td class="mlabels-left">
1222 <table class="memname">
1223 <tr>
1224 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_tx_buf[<a class="el" href="laptop__io_8h.html#DUCK_IO_LEN_TX_MAX">DUCK_IO_LEN_TX_MAX</a>]</td>
1225 </tr>
1226 </table>
1227 </td>
1228 <td class="mlabels-right">
1229 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1230 </tr>
1231 </table>
1232 </div><div class="memdoc">
1233
1234 </div>
1235 </div>
1236 <a id="duck_io_tx_buf_len" name="duck_io_tx_buf_len"></a>
1237 <h2 class="memtitle"><span class="permalink"><a href="#duck_io_tx_buf_len">◆ </a></span>duck_io_tx_buf_len</h2>
1238
1239 <div class="memitem">
1240 <div class="memproto">
1241 <table class="mlabels">
1242 <tr>
1243 <td class="mlabels-left">
1244 <table class="memname">
1245 <tr>
1246 <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> duck_io_tx_buf_len</td>
1247 </tr>
1248 </table>
1249 </td>
1250 <td class="mlabels-right">
1251 <span class="mlabels"><span class="mlabel">extern</span></span> </td>
1252 </tr>
1253 </table>
1254 </div><div class="memdoc">
1255
1256 </div>
1257 </div>
1258 </div><!-- contents -->
1259 </div><!-- doc-content -->
1260 <!-- start footer part -->
1261 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1262 <ul>
1263 <li class="navelem"><a class="el" href="dir_8bd3092e915ccc8a773a74e0a10d4d15.html">gbdk-lib</a></li><li class="navelem"><a class="el" href="dir_a9f896cff747ba031115e41245385c17.html">include</a></li><li class="navelem"><a class="el" href="dir_0a499b1b991479a5f341a18a1dd374d9.html">duck</a></li><li class="navelem"><a class="el" href="laptop__io_8h.html">laptop_io.h</a></li>
1264 <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
1265 </ul>
1266 </div>
1267 </body>
1268 </html>
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.