Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
a61c4d726This file is pinned to the selected release. Download the original to open it in your design tool.
<!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.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DIY Logging Volt/Ampmeter: STM32F103C8T6_powermeter-interface/Drivers/RTT/SEGGER_RTT_printf.c File Reference</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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">DIY Logging Volt/Ampmeter
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<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&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('SEGGER__RTT__printf_8c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<a href="#define-members">Macros</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">SEGGER_RTT_printf.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include "<a class="el" href="SEGGER__RTT_8h_source.html">SEGGER_RTT.h</a>"</code><br />
<code>#include "<a class="el" href="SEGGER__RTT__Conf_8h_source.html">SEGGER_RTT_Conf.h</a>"</code><br />
<code>#include <stdlib.h></code><br />
<code>#include <stdarg.h></code><br />
</div>
<p><a href="SEGGER__RTT__printf_8c_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a4eeb979e266bc20c1b01fd6e597c2912"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>   (1u << 0)</td></tr>
<tr class="separator:a4eeb979e266bc20c1b01fd6e597c2912"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:acccd380b32c202ab9aac750aae8a62ab"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>   (1u << 1)</td></tr>
<tr class="separator:acccd380b32c202ab9aac750aae8a62ab"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a53c542240e13bbbd1fa306f58b18a86f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>   (1u << 2)</td></tr>
<tr class="separator:a53c542240e13bbbd1fa306f58b18a86f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad778ec441def4e07c9f153470d9b3aaa"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#ad778ec441def4e07c9f153470d9b3aaa">FORMAT_FLAG_ALTERNATE</a>   (1u << 3)</td></tr>
<tr class="separator:ad778ec441def4e07c9f153470d9b3aaa"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a946fe9d784f16b58f192682d4708b28a"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a> (<a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> *p, char c)</td></tr>
<tr class="separator:a946fe9d784f16b58f192682d4708b28a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aadf842d5880650ed055cde1624c06d5a"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a> (<a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> *pBufferDesc, unsigned v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags)</td></tr>
<tr class="separator:aadf842d5880650ed055cde1624c06d5a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a381d5912e509ba85b307f6a3ae604871"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#a381d5912e509ba85b307f6a3ae604871">_PrintInt</a> (<a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> *pBufferDesc, int v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags)</td></tr>
<tr class="separator:a381d5912e509ba85b307f6a3ae604871"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af3b81398913b7f7df425208067caab38"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#af3b81398913b7f7df425208067caab38">SEGGER_RTT_vprintf</a> (unsigned BufferIndex, const char *sFormat, va_list *pParamList)</td></tr>
<tr class="separator:af3b81398913b7f7df425208067caab38"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a442758fd24cb811b92e67782f215bf5a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="SEGGER__RTT__printf_8c.html#a442758fd24cb811b92e67782f215bf5a">SEGGER_RTT_printf</a> (unsigned BufferIndex, const char *sFormat,...)</td></tr>
<tr class="separator:a442758fd24cb811b92e67782f215bf5a"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ad778ec441def4e07c9f153470d9b3aaa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad778ec441def4e07c9f153470d9b3aaa">◆ </a></span>FORMAT_FLAG_ALTERNATE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FORMAT_FLAG_ALTERNATE   (1u << 3)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00071">71</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
</div>
</div>
<a id="a4eeb979e266bc20c1b01fd6e597c2912"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4eeb979e266bc20c1b01fd6e597c2912">◆ </a></span>FORMAT_FLAG_LEFT_JUSTIFY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FORMAT_FLAG_LEFT_JUSTIFY   (1u << 0)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00068">68</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
</div>
</div>
<a id="acccd380b32c202ab9aac750aae8a62ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acccd380b32c202ab9aac750aae8a62ab">◆ </a></span>FORMAT_FLAG_PAD_ZERO</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FORMAT_FLAG_PAD_ZERO   (1u << 1)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00069">69</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
</div>
</div>
<a id="a53c542240e13bbbd1fa306f58b18a86f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53c542240e13bbbd1fa306f58b18a86f">◆ </a></span>FORMAT_FLAG_PRINT_SIGN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FORMAT_FLAG_PRINT_SIGN   (1u << 2)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00070">70</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a381d5912e509ba85b307f6a3ae604871"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a381d5912e509ba85b307f6a3ae604871">◆ </a></span>_PrintInt()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void _PrintInt </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> * </td>
<td class="paramname"><em>pBufferDesc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>Base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>NumDigits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>FieldWidth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>FormatFlags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00222">222</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">unsigned</span> Width;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">int</span> Number;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  Number = (v < 0) ? -v : v;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Get actual field width</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  Width = 1u;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">while</span> (Number >= (<span class="keywordtype">int</span>)Base) {</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  Number = (Number / (int)Base);</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  Width++;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (NumDigits > Width) {</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  Width = NumDigits;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span> ((FieldWidth > 0u) && ((v < 0) || ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>) == <a class="code" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>))) {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  FieldWidth--;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// Print leading spaces if necessary</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> ((((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>) == 0u) || (NumDigits != 0u)) && ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>) == 0u)) {</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">while</span> ((FieldWidth != 0u) && (Width < FieldWidth)) {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  FieldWidth--;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, <span class="charliteral">' '</span>);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> < 0) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  }</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Print sign if necessary</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0) {</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (v < 0) {</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  v = -v;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, <span class="charliteral">'-'</span>);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>) == <a class="code" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>) {</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, <span class="charliteral">'+'</span>);</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0) {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// Print leading zeros if necessary</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>) == <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>) && ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>) == 0u) && (NumDigits == 0u)) {</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">while</span> ((FieldWidth != 0u) && (Width < FieldWidth)) {</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  FieldWidth--;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, <span class="charliteral">'0'</span>);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> < 0) {</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0) {</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// Print number without sign</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a>(pBufferDesc, (<span class="keywordtype">unsigned</span>)v, Base, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aadf842d5880650ed055cde1624c06d5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadf842d5880650ed055cde1624c06d5a">◆ </a></span>_PrintUnsigned()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void _PrintUnsigned </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> * </td>
<td class="paramname"><em>pBufferDesc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>Base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>NumDigits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>FieldWidth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>FormatFlags</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00132">132</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _aV2C[16] = {<span class="charliteral">'0'</span>, <span class="charliteral">'1'</span>, <span class="charliteral">'2'</span>, <span class="charliteral">'3'</span>, <span class="charliteral">'4'</span>, <span class="charliteral">'5'</span>, <span class="charliteral">'6'</span>, <span class="charliteral">'7'</span>, <span class="charliteral">'8'</span>, <span class="charliteral">'9'</span>, <span class="charliteral">'A'</span>, <span class="charliteral">'B'</span>, <span class="charliteral">'C'</span>, <span class="charliteral">'D'</span>, <span class="charliteral">'E'</span>, <span class="charliteral">'F'</span> };</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">unsigned</span> Div;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">unsigned</span> Digit;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">unsigned</span> Number;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">unsigned</span> Width;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">char</span> c;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  Number = v;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  Digit = 1u;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// Get actual field width</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  Width = 1u;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">while</span> (Number >= Base) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  Number = (Number / Base);</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  Width++;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (NumDigits > Width) {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  Width = NumDigits;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Print leading chars if necessary</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>) == 0u) {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>) == <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>) && (NumDigits == 0u)) {</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  c = <span class="charliteral">'0'</span>;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  c = <span class="charliteral">' '</span>;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">while</span> ((FieldWidth != 0u) && (Width < FieldWidth)) {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  FieldWidth--;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, c);</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> < 0) {</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0) {</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Compute Digit.</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Loop until Digit has the value of the highest digit required.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// Example: If the output is 345 (Base 10), loop 2 times until Digit is 100.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">while</span> (1) {</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (NumDigits > 1u) { <span class="comment">// User specified a min number of digits to print? => Make sure we loop at least that often, before checking anything else (> 1 check avoids problems with NumDigits being signed / unsigned)</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  NumDigits--;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  Div = v / Digit;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (Div < Base) { <span class="comment">// Is our divider big enough to extract the highest digit from value? => Done</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  Digit *= Base;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Output digits</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  Div = v / Digit;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  v -= Div * Digit;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, _aV2C[Div]);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> < 0) {</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  Digit /= Base;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">while</span> (Digit);</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// Print trailing spaces if necessary</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> ((FormatFlags & <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>) == <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>) {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (FieldWidth != 0u) {</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">while</span> ((FieldWidth != 0u) && (Width < FieldWidth)) {</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  FieldWidth--;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(pBufferDesc, <span class="charliteral">' '</span>);</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (pBufferDesc-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> < 0) {</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a946fe9d784f16b58f192682d4708b28a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a946fe9d784f16b58f192682d4708b28a">◆ </a></span>_StoreChar()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void _StoreChar </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> * </td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char </td>
<td class="paramname"><em>c</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00107">107</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">unsigned</span> Cnt;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  Cnt = p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> ((Cnt + 1u) <= p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a26ff82b7970c500bb29f098cf49dd065">BufferSize</a>) {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  *(p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#ab8724b23ebf34566d69eb6ed4a0b374e">pBuffer</a> + Cnt) = c;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a> = Cnt + 1u;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a>++;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// Write part of string, when the buffer is full</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a> == p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a26ff82b7970c500bb29f098cf49dd065">BufferSize</a>) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (<a class="code" href="SEGGER__RTT_8c.html#a491a86b2cc2d8cd9a475710624f17cc6">SEGGER_RTT_Write</a>(p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a843108780297879b7b99e4b31fc98463">RTTBufferIndex</a>, p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#ab8724b23ebf34566d69eb6ed4a0b374e">pBuffer</a>, p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a>) != p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a>) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> = -1;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  p-><a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a> = 0u;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a442758fd24cb811b92e67782f215bf5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a442758fd24cb811b92e67782f215bf5a">◆ </a></span>SEGGER_RTT_printf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int SEGGER_RTT_printf </td>
<td>(</td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>BufferIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sFormat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>...</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00491">491</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  {</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordtype">int</span> r;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  va_list ParamList;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  </div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  va_start(ParamList, sFormat);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  r = <a class="code" href="SEGGER__RTT__printf_8c.html#af3b81398913b7f7df425208067caab38">SEGGER_RTT_vprintf</a>(BufferIndex, sFormat, &ParamList);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  va_end(ParamList);</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> r;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="af3b81398913b7f7df425208067caab38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3b81398913b7f7df425208067caab38">◆ </a></span>SEGGER_RTT_vprintf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int SEGGER_RTT_vprintf </td>
<td>(</td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>BufferIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sFormat</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">va_list * </td>
<td class="paramname"><em>pParamList</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="SEGGER__RTT__printf_8c_source.html#l00317">317</a> of file <a class="el" href="SEGGER__RTT__printf_8c_source.html">SEGGER_RTT_printf.c</a>.</p>
<div class="fragment"><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordtype">char</span> c;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a> BufferDesc;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordtype">int</span> v;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">unsigned</span> NumDigits;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordtype">unsigned</span> FormatFlags;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordtype">unsigned</span> FieldWidth;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordtype">char</span> acBuffer[<a class="code" href="SEGGER__RTT__Conf_8h.html#a077a1988b454a012aeafa0f7f0a63c95">SEGGER_RTT_PRINTF_BUFFER_SIZE</a>];</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  </div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#ab8724b23ebf34566d69eb6ed4a0b374e">pBuffer</a> = acBuffer;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a26ff82b7970c500bb29f098cf49dd065">BufferSize</a> = <a class="code" href="SEGGER__RTT__Conf_8h.html#a077a1988b454a012aeafa0f7f0a63c95">SEGGER_RTT_PRINTF_BUFFER_SIZE</a>;</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a> = 0u;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a843108780297879b7b99e4b31fc98463">RTTBufferIndex</a> = BufferIndex;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> = 0;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  </div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  c = *sFormat;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  sFormat++;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (c == 0u) {</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'%'</span>) {</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// Filter out flags</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  FormatFlags = 0u;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  v = 1;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  c = *sFormat;</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">switch</span> (c) {</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>: FormatFlags |= <a class="code" href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a>; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>: FormatFlags |= <a class="code" href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a>; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>: FormatFlags |= <a class="code" href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a>; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">case</span> <span class="charliteral">'#'</span>: FormatFlags |= <a class="code" href="SEGGER__RTT__printf_8c.html#ad778ec441def4e07c9f153470d9b3aaa">FORMAT_FLAG_ALTERNATE</a>; sFormat++; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">default</span>: v = 0; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  } <span class="keywordflow">while</span> (v);</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">// filter out field with</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  FieldWidth = 0u;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  c = *sFormat;</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span> ((c < <span class="charliteral">'0'</span>) || (c > <span class="charliteral">'9'</span>)) {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  sFormat++;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  FieldWidth = (FieldWidth * 10u) + ((<span class="keywordtype">unsigned</span>)c - <span class="charliteral">'0'</span>);</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// Filter out precision (number of digits to display)</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  NumDigits = 0u;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  c = *sFormat;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'.'</span>) {</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  sFormat++;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  c = *sFormat;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span> ((c < <span class="charliteral">'0'</span>) || (c > <span class="charliteral">'9'</span>)) {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  sFormat++;</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  NumDigits = NumDigits * 10u + ((unsigned)c - <span class="charliteral">'0'</span>);</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// Filter out length modifier</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  c = *sFormat;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span> ((c == <span class="charliteral">'l'</span>) || (c == <span class="charliteral">'h'</span>)) {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  sFormat++;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  c = *sFormat;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  } <span class="keywordflow">while</span> (1);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// Handle specifiers</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">switch</span> (c) {</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">case</span> <span class="charliteral">'c'</span>: {</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordtype">char</span> c0;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  c0 = (char)v;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(&BufferDesc, c0);</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">case</span> <span class="charliteral">'d'</span>:</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a381d5912e509ba85b307f6a3ae604871">_PrintInt</a>(&BufferDesc, v, 10u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">case</span> <span class="charliteral">'u'</span>:</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a>(&BufferDesc, (<span class="keywordtype">unsigned</span>)v, 10u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> <span class="charliteral">'x'</span>:</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">case</span> <span class="charliteral">'X'</span>:</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a>(&BufferDesc, (<span class="keywordtype">unsigned</span>)v, 16u, NumDigits, FieldWidth, FormatFlags);</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">case</span> <span class="charliteral">'s'</span>:</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> * s = va_arg(*pParamList, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  c = *s;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  s++;</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'\0'</span>) {</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(&BufferDesc, c);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  } <span class="keywordflow">while</span> (BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0);</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  }</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">case</span> <span class="charliteral">'p'</span>:</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  v = va_arg(*pParamList, <span class="keywordtype">int</span>);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a>(&BufferDesc, (<span class="keywordtype">unsigned</span>)v, 16u, 8u, 8u, 0u);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">case</span> <span class="charliteral">'%'</span>:</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(&BufferDesc, <span class="charliteral">'%'</span>);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  sFormat++;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <a class="code" href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a>(&BufferDesc, c);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  } <span class="keywordflow">while</span> (BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> >= 0);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  </div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> > 0) {</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// Write remaining data, if any</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">//</span></div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span> (BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a> != 0u) {</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="SEGGER__RTT_8c.html#a491a86b2cc2d8cd9a475710624f17cc6">SEGGER_RTT_Write</a>(BufferIndex, acBuffer, BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a>);</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a> += (int)BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">Cnt</a>;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">return</span> BufferDesc.<a class="code" href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">ReturnValue</a>;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> }</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_a53c542240e13bbbd1fa306f58b18a86f"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#a53c542240e13bbbd1fa306f58b18a86f">FORMAT_FLAG_PRINT_SIGN</a></div><div class="ttdeci">#define FORMAT_FLAG_PRINT_SIGN</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00070">SEGGER_RTT_printf.c:70</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_a381d5912e509ba85b307f6a3ae604871"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#a381d5912e509ba85b307f6a3ae604871">_PrintInt</a></div><div class="ttdeci">static void _PrintInt(SEGGER_RTT_PRINTF_DESC *pBufferDesc, int v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags)</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00222">SEGGER_RTT_printf.c:222</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_a946fe9d784f16b58f192682d4708b28a"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#a946fe9d784f16b58f192682d4708b28a">_StoreChar</a></div><div class="ttdeci">static void _StoreChar(SEGGER_RTT_PRINTF_DESC *p, char c)</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00107">SEGGER_RTT_printf.c:107</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html_a843108780297879b7b99e4b31fc98463"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html#a843108780297879b7b99e4b31fc98463">SEGGER_RTT_PRINTF_DESC::RTTBufferIndex</a></div><div class="ttdeci">unsigned RTTBufferIndex</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00092">SEGGER_RTT_printf.c:92</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_a4eeb979e266bc20c1b01fd6e597c2912"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#a4eeb979e266bc20c1b01fd6e597c2912">FORMAT_FLAG_LEFT_JUSTIFY</a></div><div class="ttdeci">#define FORMAT_FLAG_LEFT_JUSTIFY</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00068">SEGGER_RTT_printf.c:68</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html_a65faff93dba548785741e95b5bd4e5b7"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html#a65faff93dba548785741e95b5bd4e5b7">SEGGER_RTT_PRINTF_DESC::Cnt</a></div><div class="ttdeci">unsigned Cnt</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00088">SEGGER_RTT_printf.c:88</a></div></div>
<div class="ttc" id="aSEGGER__RTT__Conf_8h_html_a077a1988b454a012aeafa0f7f0a63c95"><div class="ttname"><a href="SEGGER__RTT__Conf_8h.html#a077a1988b454a012aeafa0f7f0a63c95">SEGGER_RTT_PRINTF_BUFFER_SIZE</a></div><div class="ttdeci">#define SEGGER_RTT_PRINTF_BUFFER_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__Conf_8h_source.html#l00098">SEGGER_RTT_Conf.h:98</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html">SEGGER_RTT_PRINTF_DESC</a></div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00080">SEGGER_RTT_printf.c:80</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_ad778ec441def4e07c9f153470d9b3aaa"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#ad778ec441def4e07c9f153470d9b3aaa">FORMAT_FLAG_ALTERNATE</a></div><div class="ttdeci">#define FORMAT_FLAG_ALTERNATE</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00071">SEGGER_RTT_printf.c:71</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_acccd380b32c202ab9aac750aae8a62ab"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#acccd380b32c202ab9aac750aae8a62ab">FORMAT_FLAG_PAD_ZERO</a></div><div class="ttdeci">#define FORMAT_FLAG_PAD_ZERO</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00069">SEGGER_RTT_printf.c:69</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_af3b81398913b7f7df425208067caab38"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#af3b81398913b7f7df425208067caab38">SEGGER_RTT_vprintf</a></div><div class="ttdeci">int SEGGER_RTT_vprintf(unsigned BufferIndex, const char *sFormat, va_list *pParamList)</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00317">SEGGER_RTT_printf.c:317</a></div></div>
<div class="ttc" id="aSEGGER__RTT_8c_html_a491a86b2cc2d8cd9a475710624f17cc6"><div class="ttname"><a href="SEGGER__RTT_8c.html#a491a86b2cc2d8cd9a475710624f17cc6">SEGGER_RTT_Write</a></div><div class="ttdeci">unsigned SEGGER_RTT_Write(unsigned BufferIndex, const void *pBuffer, unsigned NumBytes)</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT_8c_source.html#l01185">SEGGER_RTT.c:1185</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html_a26ff82b7970c500bb29f098cf49dd065"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html#a26ff82b7970c500bb29f098cf49dd065">SEGGER_RTT_PRINTF_DESC::BufferSize</a></div><div class="ttdeci">unsigned BufferSize</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00087">SEGGER_RTT_printf.c:87</a></div></div>
<div class="ttc" id="aSEGGER__RTT__printf_8c_html_aadf842d5880650ed055cde1624c06d5a"><div class="ttname"><a href="SEGGER__RTT__printf_8c.html#aadf842d5880650ed055cde1624c06d5a">_PrintUnsigned</a></div><div class="ttdeci">static void _PrintUnsigned(SEGGER_RTT_PRINTF_DESC *pBufferDesc, unsigned v, unsigned Base, unsigned NumDigits, unsigned FieldWidth, unsigned FormatFlags)</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00132">SEGGER_RTT_printf.c:132</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html_ab8724b23ebf34566d69eb6ed4a0b374e"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html#ab8724b23ebf34566d69eb6ed4a0b374e">SEGGER_RTT_PRINTF_DESC::pBuffer</a></div><div class="ttdeci">char * pBuffer</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00086">SEGGER_RTT_printf.c:86</a></div></div>
<div class="ttc" id="astructSEGGER__RTT__PRINTF__DESC_html_a04a163688303b84088292b87423845ec"><div class="ttname"><a href="structSEGGER__RTT__PRINTF__DESC.html#a04a163688303b84088292b87423845ec">SEGGER_RTT_PRINTF_DESC::ReturnValue</a></div><div class="ttdeci">int ReturnValue</div><div class="ttdef"><b>Definition:</b> <a href="SEGGER__RTT__printf_8c_source.html#l00090">SEGGER_RTT_printf.c:90</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_4e5f16ccb0512908371dae1ef268cc7e.html">STM32F103C8T6_powermeter-interface</a></li><li class="navelem"><a class="el" href="dir_4a957a805603a308ca7ef702854b01cc.html">Drivers</a></li><li class="navelem"><a class="el" href="dir_2f93a1c982b4b342d3e3419801723bd0.html">RTT</a></li><li class="navelem"><a class="el" href="SEGGER__RTT__printf_8c.html">SEGGER_RTT_printf.c</a></li>
<li class="footer">Generated on Mon Dec 13 2021 16:18:49 for DIY Logging Volt/Ampmeter by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>