ESP32-WROVER-KIT-LCD-DRIVER/Doxygen/html/_driver_8c.html

733 lines
39 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ESP32-WROVER-KIT-LCD-DRIVER: components/lcd/src/Driver.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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">ESP32-WROVER-KIT-LCD-DRIVER
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</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&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('_driver_8c.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Driver.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>write the Framebuffer
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="_driver_8h_source.html">Driver.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for Driver.c:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c__incl.png" border="0" usemap="#acomponents_2lcd_2src_2_driver_8c" alt=""/></div>
<map name="components_2lcd_2src_2_driver_8c" id="acomponents_2lcd_2src_2_driver_8c">
<area shape="rect" title="write the Framebuffer" alt="" coords="337,5,473,47"/>
<area shape="rect" href="_driver_8h.html" title=" " alt="" coords="372,95,439,121"/>
<area shape="rect" title=" " alt="" coords="5,169,67,196"/>
<area shape="rect" title=" " alt="" coords="91,169,155,196"/>
<area shape="rect" title=" " alt="" coords="179,169,245,196"/>
<area shape="rect" title=" " alt="" coords="269,169,401,196"/>
<area shape="rect" title=" " alt="" coords="425,169,529,196"/>
<area shape="rect" title=" " alt="" coords="554,169,646,196"/>
<area shape="rect" title=" " alt="" coords="671,169,815,196"/>
<area shape="rect" title=" " alt="" coords="839,169,945,196"/>
</map>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:acfaa6e6c39d79e04fadf512cf9ca3944"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#acfaa6e6c39d79e04fadf512cf9ca3944">vDriver_GetId</a> (void)</td></tr>
<tr class="memdesc:acfaa6e6c39d79e04fadf512cf9ca3944"><td class="mdescLeft">&#160;</td><td class="mdescRight">get LCD driver chip id <a href="_driver_8c.html#acfaa6e6c39d79e04fadf512cf9ca3944">More...</a><br /></td></tr>
<tr class="separator:acfaa6e6c39d79e04fadf512cf9ca3944"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d6cd2f0685caf993fd7455dd100dd7c"><td class="memItemLeft" align="right" valign="top">static esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a3d6cd2f0685caf993fd7455dd100dd7c">iDriver_sendLineFinish</a> (void)</td></tr>
<tr class="memdesc:a3d6cd2f0685caf993fd7455dd100dd7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">send finish after line <a href="_driver_8c.html#a3d6cd2f0685caf993fd7455dd100dd7c">More...</a><br /></td></tr>
<tr class="separator:a3d6cd2f0685caf993fd7455dd100dd7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2d5a9bae2c3a62f89e2cc83cc36a61e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#ae2d5a9bae2c3a62f89e2cc83cc36a61e">vDriver_spiPreTransferCallback</a> (spi_transaction_t *t)</td></tr>
<tr class="memdesc:ae2d5a9bae2c3a62f89e2cc83cc36a61e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pre Transfer Callback. <a href="_driver_8c.html#ae2d5a9bae2c3a62f89e2cc83cc36a61e">More...</a><br /></td></tr>
<tr class="separator:ae2d5a9bae2c3a62f89e2cc83cc36a61e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce4cd1bae3e49f2d06a880446db54d4"><td class="memItemLeft" align="right" valign="top">esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a3ce4cd1bae3e49f2d06a880446db54d4">iDriver_sendCmd</a> (const uint8_t u8Cmd)</td></tr>
<tr class="memdesc:a3ce4cd1bae3e49f2d06a880446db54d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a command to the LCD. <a href="_driver_8c.html#a3ce4cd1bae3e49f2d06a880446db54d4">More...</a><br /></td></tr>
<tr class="separator:a3ce4cd1bae3e49f2d06a880446db54d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab611c2d5911c284b757197882ea227be"><td class="memItemLeft" align="right" valign="top">static esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#ab611c2d5911c284b757197882ea227be">iDriver_sendLines</a> (uint16_t u16Ypos, uint16_t *pu16Linedata)</td></tr>
<tr class="memdesc:ab611c2d5911c284b757197882ea227be"><td class="mdescLeft">&#160;</td><td class="mdescRight">send line to lcd chip <a href="_driver_8c.html#ab611c2d5911c284b757197882ea227be">More...</a><br /></td></tr>
<tr class="separator:ab611c2d5911c284b757197882ea227be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a066209485105862c60c5f9393caa48be"><td class="memItemLeft" align="right" valign="top">esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a066209485105862c60c5f9393caa48be">iDriver_SendData</a> (const uint8_t *pu8Data, uint16_t u16Len)</td></tr>
<tr class="memdesc:a066209485105862c60c5f9393caa48be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send data to the LCD. <a href="_driver_8c.html#a066209485105862c60c5f9393caa48be">More...</a><br /></td></tr>
<tr class="separator:a066209485105862c60c5f9393caa48be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce1541687c13e00a1cc1d4d7ff564aa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a3ce1541687c13e00a1cc1d4d7ff564aa">vDriver_getFramenufferPerLine</a> (uint16_t *pu16Dest, uint16_t u16Line, uint16_t u16Linect, uint16_t ***<a class="el" href="_l_c_d_8c.html#a1cf4497f1e3b602bc54e6f42ea73d9ed">pu16Framebuffer</a>)</td></tr>
<tr class="memdesc:a3ce1541687c13e00a1cc1d4d7ff564aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the pixel data for a set of lines (with implied line size of 320) <a href="_driver_8c.html#a3ce1541687c13e00a1cc1d4d7ff564aa">More...</a><br /></td></tr>
<tr class="separator:a3ce1541687c13e00a1cc1d4d7ff564aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb1369972e80eb05d5e831cbc7cf3d4f"><td class="memItemLeft" align="right" valign="top">esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f">vDriver_init</a> (void)</td></tr>
<tr class="memdesc:adb1369972e80eb05d5e831cbc7cf3d4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the driver. <a href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f">More...</a><br /></td></tr>
<tr class="separator:adb1369972e80eb05d5e831cbc7cf3d4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62a79453d5cfaf0693a21714162f22d4"><td class="memItemLeft" align="right" valign="top">esp_err_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a62a79453d5cfaf0693a21714162f22d4">iDriver_writeFramebuffer</a> (uint16_t ***<a class="el" href="_l_c_d_8c.html#a1cf4497f1e3b602bc54e6f42ea73d9ed">pu16Framebuffer</a>)</td></tr>
<tr class="memdesc:a62a79453d5cfaf0693a21714162f22d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">write framebuffer to LCD via SPI <a href="_driver_8c.html#a62a79453d5cfaf0693a21714162f22d4">More...</a><br /></td></tr>
<tr class="separator:a62a79453d5cfaf0693a21714162f22d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:af04b0de520c6e42f039c5edf47b13dc2"><td class="memItemLeft" align="right" valign="top">spi_device_handle_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#af04b0de520c6e42f039c5edf47b13dc2">spi</a></td></tr>
<tr class="separator:af04b0de520c6e42f039c5edf47b13dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9afae6881efba341049aa70a18412c92"><td class="memItemLeft" align="right" valign="top">uint16_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a9afae6881efba341049aa70a18412c92">lines</a> [2]</td></tr>
<tr class="separator:a9afae6881efba341049aa70a18412c92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cf1d2efd4835b68210776d5c130abd8"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a0cf1d2efd4835b68210776d5c130abd8">sending_line</a> =-1</td></tr>
<tr class="separator:a0cf1d2efd4835b68210776d5c130abd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac797ff8a3dcc46966bb645519d99c822"><td class="memItemLeft" align="right" valign="top">int16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#ac797ff8a3dcc46966bb645519d99c822">calc_line</a> =0</td></tr>
<tr class="separator:ac797ff8a3dcc46966bb645519d99c822"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16670a27e1bd7092e32c99bb10c912ee"><td class="memItemLeft" align="right" valign="top">static DRAM_ATTR const <a class="el" href="structlcd__init__cmd__t.html">lcd_init_cmd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a16670a27e1bd7092e32c99bb10c912ee">st_init_cmds</a> []</td></tr>
<tr class="separator:a16670a27e1bd7092e32c99bb10c912ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa4436d527ed2c7be6421f98e864938"><td class="memItemLeft" align="right" valign="top">static DRAM_ATTR const <a class="el" href="structlcd__init__cmd__t.html">lcd_init_cmd_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_driver_8c.html#a6aa4436d527ed2c7be6421f98e864938">ili_init_cmds</a> []</td></tr>
<tr class="separator:a6aa4436d527ed2c7be6421f98e864938"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>write the Framebuffer </p>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section version"><dt>Version</dt><dd>V1.0 </dd></dl>
<dl class="section date"><dt>Date</dt><dd>03.11.2020</dd></dl>
<p>This code used SPI to write data to the LCD driver like ILI9341 or ST7789V. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a3ce4cd1bae3e49f2d06a880446db54d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce4cd1bae3e49f2d06a880446db54d4">&#9670;&nbsp;</a></span>iDriver_sendCmd()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">esp_err_t iDriver_sendCmd </td>
<td>(</td>
<td class="paramtype">const uint8_t&#160;</td>
<td class="paramname"><em>u8Cmd</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a command to the LCD. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">const</td><td>uint8_t u8Cmd </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020</dd></dl>
<p>Send a command to the LCD. Uses spi_device_polling_transmit, which waits until the transfer is complete.</p>
<p>Since command transactions are usually small, they are handled in polling mode for higher speed. The overhead of interrupt transactions is more than just waiting for the transaction to complete. </p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a3ce4cd1bae3e49f2d06a880446db54d4_icgraph.png" border="0" usemap="#a_driver_8c_a3ce4cd1bae3e49f2d06a880446db54d4_icgraph" alt=""/></div>
<map name="_driver_8c_a3ce4cd1bae3e49f2d06a880446db54d4_icgraph" id="a_driver_8c_a3ce4cd1bae3e49f2d06a880446db54d4_icgraph">
<area shape="rect" title="Send a command to the LCD." alt="" coords="415,31,537,57"/>
<area shape="rect" href="_driver_8c.html#acfaa6e6c39d79e04fadf512cf9ca3944" title="get LCD driver chip id" alt="" coords="264,5,367,32"/>
<area shape="rect" href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f" title="Initialize the driver." alt="" coords="129,31,216,57"/>
<area shape="rect" href="_l_c_d_8c.html#a4d0719889f64bf0c82dd5adc3a26adf3" title="init" alt="" coords="5,31,81,57"/>
</map>
</div>
</div>
</div>
<a id="a066209485105862c60c5f9393caa48be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a066209485105862c60c5f9393caa48be">&#9670;&nbsp;</a></span>iDriver_SendData()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">esp_err_t iDriver_SendData </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>pu8Data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>u16Len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send data to the LCD. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">const</td><td>uint8_t *pu8Data </td></tr>
<tr><td class="paramname">uint16_t</td><td>u16Len </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020</dd></dl>
<p>Send data to the LCD. Uses spi_device_polling_transmit, which waits until the transfer is complete.</p>
<p>Since data transactions are usually small, they are handled in polling mode for higher speed. The overhead of interrupt transactions is more than just waiting for the transaction to complete. </p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a066209485105862c60c5f9393caa48be_icgraph.png" border="0" usemap="#a_driver_8c_a066209485105862c60c5f9393caa48be_icgraph" alt=""/></div>
<map name="_driver_8c_a066209485105862c60c5f9393caa48be_icgraph" id="a_driver_8c_a066209485105862c60c5f9393caa48be_icgraph">
<area shape="rect" title="Send data to the LCD." alt="" coords="264,5,388,32"/>
<area shape="rect" href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f" title="Initialize the driver." alt="" coords="129,5,216,32"/>
<area shape="rect" href="_l_c_d_8c.html#a4d0719889f64bf0c82dd5adc3a26adf3" title="init" alt="" coords="5,5,81,32"/>
</map>
</div>
</div>
</div>
<a id="a3d6cd2f0685caf993fd7455dd100dd7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d6cd2f0685caf993fd7455dd100dd7c">&#9670;&nbsp;</a></span>iDriver_sendLineFinish()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static esp_err_t iDriver_sendLineFinish </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></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>send finish after line </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">void</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020 </dd></dl>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a3d6cd2f0685caf993fd7455dd100dd7c_icgraph.png" border="0" usemap="#a_driver_8c_a3d6cd2f0685caf993fd7455dd100dd7c_icgraph" alt=""/></div>
<map name="_driver_8c_a3d6cd2f0685caf993fd7455dd100dd7c_icgraph" id="a_driver_8c_a3d6cd2f0685caf993fd7455dd100dd7c_icgraph">
<area shape="rect" title="send finish after line" alt="" coords="423,31,576,57"/>
<area shape="rect" href="_driver_8c.html#a62a79453d5cfaf0693a21714162f22d4" title="write framebuffer to LCD via SPI" alt="" coords="211,31,375,57"/>
<area shape="rect" href="_l_c_d_8c.html#a95f7c4fb0d7de1cb623b52031aad3fe8" title="clear complete framebuffer with a color" alt="" coords="5,5,163,32"/>
<area shape="rect" href="_l_c_d_8c.html#a305dd37530a1617090bbc448e2e40d26" title="write string/text into framebuffer" alt="" coords="23,56,145,83"/>
</map>
</div>
</div>
</div>
<a id="ab611c2d5911c284b757197882ea227be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab611c2d5911c284b757197882ea227be">&#9670;&nbsp;</a></span>iDriver_sendLines()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static esp_err_t iDriver_sendLines </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>u16Ypos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>pu16Linedata</em>&#160;</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>send line to lcd chip </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">uint16_t</td><td>u16Ypos </td></tr>
<tr><td class="paramname">uint16_t</td><td>*pu16Linedata </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020</dd></dl>
<p>To send a set of lines we have to send a command, 2 data bytes, another command, 2 more data bytes and another command before sending the line data itself; a total of 6 transactions. (We can't put all of this in just one transaction because the D/C line needs to be toggled in the middle.) This routine queues these commands up as interrupt transactions so they get sent faster (compared to calling spi_device_transmit several times), and at the mean while the lines for next transactions can get calculated. </p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_ab611c2d5911c284b757197882ea227be_icgraph.png" border="0" usemap="#a_driver_8c_ab611c2d5911c284b757197882ea227be_icgraph" alt=""/></div>
<map name="_driver_8c_ab611c2d5911c284b757197882ea227be_icgraph" id="a_driver_8c_ab611c2d5911c284b757197882ea227be_icgraph">
<area shape="rect" title="send line to lcd chip" alt="" coords="423,31,548,57"/>
<area shape="rect" href="_driver_8c.html#a62a79453d5cfaf0693a21714162f22d4" title="write framebuffer to LCD via SPI" alt="" coords="211,31,375,57"/>
<area shape="rect" href="_l_c_d_8c.html#a95f7c4fb0d7de1cb623b52031aad3fe8" title="clear complete framebuffer with a color" alt="" coords="5,5,163,32"/>
<area shape="rect" href="_l_c_d_8c.html#a305dd37530a1617090bbc448e2e40d26" title="write string/text into framebuffer" alt="" coords="23,56,145,83"/>
</map>
</div>
</div>
</div>
<a id="a62a79453d5cfaf0693a21714162f22d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62a79453d5cfaf0693a21714162f22d4">&#9670;&nbsp;</a></span>iDriver_writeFramebuffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">esp_err_t iDriver_writeFramebuffer </td>
<td>(</td>
<td class="paramtype">uint16_t ***&#160;</td>
<td class="paramname"><em>pu16Framebuffer</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>write framebuffer to LCD via SPI </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">uint16_t</td><td>***pu16Framebuffer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020 </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a62a79453d5cfaf0693a21714162f22d4_cgraph.png" border="0" usemap="#a_driver_8c_a62a79453d5cfaf0693a21714162f22d4_cgraph" alt=""/></div>
<map name="_driver_8c_a62a79453d5cfaf0693a21714162f22d4_cgraph" id="a_driver_8c_a62a79453d5cfaf0693a21714162f22d4_cgraph">
<area shape="rect" title="write framebuffer to LCD via SPI" alt="" coords="5,56,169,83"/>
<area shape="rect" href="_driver_8c.html#a3d6cd2f0685caf993fd7455dd100dd7c" title="send finish after line" alt="" coords="241,5,395,32"/>
<area shape="rect" href="_driver_8c.html#ab611c2d5911c284b757197882ea227be" title="send line to lcd chip" alt="" coords="255,56,381,83"/>
<area shape="rect" href="_driver_8c.html#a3ce1541687c13e00a1cc1d4d7ff564aa" title="Get the pixel data for a set of lines (with implied line size of 320)" alt="" coords="217,107,419,133"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a62a79453d5cfaf0693a21714162f22d4_icgraph.png" border="0" usemap="#a_driver_8c_a62a79453d5cfaf0693a21714162f22d4_icgraph" alt=""/></div>
<map name="_driver_8c_a62a79453d5cfaf0693a21714162f22d4_icgraph" id="a_driver_8c_a62a79453d5cfaf0693a21714162f22d4_icgraph">
<area shape="rect" title="write framebuffer to LCD via SPI" alt="" coords="211,31,375,57"/>
<area shape="rect" href="_l_c_d_8c.html#a95f7c4fb0d7de1cb623b52031aad3fe8" title="clear complete framebuffer with a color" alt="" coords="5,5,163,32"/>
<area shape="rect" href="_l_c_d_8c.html#a305dd37530a1617090bbc448e2e40d26" title="write string/text into framebuffer" alt="" coords="23,56,145,83"/>
</map>
</div>
</div>
</div>
<a id="a3ce1541687c13e00a1cc1d4d7ff564aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce1541687c13e00a1cc1d4d7ff564aa">&#9670;&nbsp;</a></span>vDriver_getFramenufferPerLine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vDriver_getFramenufferPerLine </td>
<td>(</td>
<td class="paramtype">uint16_t *&#160;</td>
<td class="paramname"><em>pu16Dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>u16Line</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>u16Linect</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t ***&#160;</td>
<td class="paramname"><em>pu16Framebuffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the pixel data for a set of lines (with implied line size of 320) </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">uint16_t</td><td>*pu16Dest </td></tr>
<tr><td class="paramname">uint16_t</td><td>u16Line </td></tr>
<tr><td class="paramname">uint16_t</td><td>u16Linect </td></tr>
<tr><td class="paramname">uint16_t</td><td>***pu16Framebuffer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020 </dd></dl>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_a3ce1541687c13e00a1cc1d4d7ff564aa_icgraph.png" border="0" usemap="#a_driver_8c_a3ce1541687c13e00a1cc1d4d7ff564aa_icgraph" alt=""/></div>
<map name="_driver_8c_a3ce1541687c13e00a1cc1d4d7ff564aa_icgraph" id="a_driver_8c_a3ce1541687c13e00a1cc1d4d7ff564aa_icgraph">
<area shape="rect" title="Get the pixel data for a set of lines (with implied line size of 320)" alt="" coords="423,31,624,57"/>
<area shape="rect" href="_driver_8c.html#a62a79453d5cfaf0693a21714162f22d4" title="write framebuffer to LCD via SPI" alt="" coords="211,31,375,57"/>
<area shape="rect" href="_l_c_d_8c.html#a95f7c4fb0d7de1cb623b52031aad3fe8" title="clear complete framebuffer with a color" alt="" coords="5,5,163,32"/>
<area shape="rect" href="_l_c_d_8c.html#a305dd37530a1617090bbc448e2e40d26" title="write string/text into framebuffer" alt="" coords="23,56,145,83"/>
</map>
</div>
</div>
</div>
<a id="acfaa6e6c39d79e04fadf512cf9ca3944"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfaa6e6c39d79e04fadf512cf9ca3944">&#9670;&nbsp;</a></span>vDriver_GetId()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t vDriver_GetId </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>get LCD driver chip id </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">void</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>uint32_t </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020 </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_cgraph.png" border="0" usemap="#a_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_cgraph" alt=""/></div>
<map name="_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_cgraph" id="a_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_cgraph">
<area shape="rect" title="get LCD driver chip id" alt="" coords="5,5,108,32"/>
<area shape="rect" href="_driver_8c.html#a3ce4cd1bae3e49f2d06a880446db54d4" title="Send a command to the LCD." alt="" coords="156,5,279,32"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_icgraph.png" border="0" usemap="#a_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_icgraph" alt=""/></div>
<map name="_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_icgraph" id="a_driver_8c_acfaa6e6c39d79e04fadf512cf9ca3944_icgraph">
<area shape="rect" title="get LCD driver chip id" alt="" coords="264,5,367,32"/>
<area shape="rect" href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f" title="Initialize the driver." alt="" coords="129,5,216,32"/>
<area shape="rect" href="_l_c_d_8c.html#a4d0719889f64bf0c82dd5adc3a26adf3" title="init" alt="" coords="5,5,81,32"/>
</map>
</div>
</div>
</div>
<a id="adb1369972e80eb05d5e831cbc7cf3d4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb1369972e80eb05d5e831cbc7cf3d4f">&#9670;&nbsp;</a></span>vDriver_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">esp_err_t vDriver_init </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the driver. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">void</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>esp error code </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020 </dd></dl>
<p>Enable backlight</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_cgraph.png" border="0" usemap="#a_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_cgraph" alt=""/></div>
<map name="_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_cgraph" id="a_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_cgraph">
<area shape="rect" title="Initialize the driver." alt="" coords="5,54,92,81"/>
<area shape="rect" href="_driver_8c.html#a3ce4cd1bae3e49f2d06a880446db54d4" title="Send a command to the LCD." alt="" coords="393,29,516,56"/>
<area shape="rect" href="_driver_8c.html#a066209485105862c60c5f9393caa48be" title="Send data to the LCD." alt="" coords="181,29,305,56"/>
<area shape="rect" href="_driver_8c.html#acfaa6e6c39d79e04fadf512cf9ca3944" title="get LCD driver chip id" alt="" coords="191,80,294,106"/>
<area shape="rect" href="_driver_8c.html#ae2d5a9bae2c3a62f89e2cc83cc36a61e" title="Pre Transfer Callback." alt="" coords="140,130,345,157"/>
</map>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_icgraph.png" border="0" usemap="#a_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_icgraph" alt=""/></div>
<map name="_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_icgraph" id="a_driver_8c_adb1369972e80eb05d5e831cbc7cf3d4f_icgraph">
<area shape="rect" title="Initialize the driver." alt="" coords="129,5,216,32"/>
<area shape="rect" href="_l_c_d_8c.html#a4d0719889f64bf0c82dd5adc3a26adf3" title="init" alt="" coords="5,5,81,32"/>
</map>
</div>
</div>
</div>
<a id="ae2d5a9bae2c3a62f89e2cc83cc36a61e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2d5a9bae2c3a62f89e2cc83cc36a61e">&#9670;&nbsp;</a></span>vDriver_spiPreTransferCallback()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vDriver_spiPreTransferCallback </td>
<td>(</td>
<td class="paramtype">spi_transaction_t *&#160;</td>
<td class="paramname"><em>t</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Pre Transfer Callback. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">spi_transaction_t</td><td>*t </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Hendrik Schutter </dd></dl>
<dl class="section date"><dt>Date</dt><dd>3.11.2020</dd></dl>
<p>This function is called (in irq context!) just before a transmission starts. It will set the D/C line to the value indicated in the user field. </p>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="_driver_8c_ae2d5a9bae2c3a62f89e2cc83cc36a61e_icgraph.png" border="0" usemap="#a_driver_8c_ae2d5a9bae2c3a62f89e2cc83cc36a61e_icgraph" alt=""/></div>
<map name="_driver_8c_ae2d5a9bae2c3a62f89e2cc83cc36a61e_icgraph" id="a_driver_8c_ae2d5a9bae2c3a62f89e2cc83cc36a61e_icgraph">
<area shape="rect" title="Pre Transfer Callback." alt="" coords="264,5,469,32"/>
<area shape="rect" href="_driver_8c.html#adb1369972e80eb05d5e831cbc7cf3d4f" title="Initialize the driver." alt="" coords="129,5,216,32"/>
<area shape="rect" href="_l_c_d_8c.html#a4d0719889f64bf0c82dd5adc3a26adf3" title="init" alt="" coords="5,5,81,32"/>
</map>
</div>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ac797ff8a3dcc46966bb645519d99c822"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac797ff8a3dcc46966bb645519d99c822">&#9670;&nbsp;</a></span>calc_line</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t calc_line =0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6aa4436d527ed2c7be6421f98e864938"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6aa4436d527ed2c7be6421f98e864938">&#9670;&nbsp;</a></span>ili_init_cmds</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DRAM_ATTR const <a class="el" href="structlcd__init__cmd__t.html">lcd_init_cmd_t</a> ili_init_cmds[]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9afae6881efba341049aa70a18412c92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9afae6881efba341049aa70a18412c92">&#9670;&nbsp;</a></span>lines</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t* lines[2]</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0cf1d2efd4835b68210776d5c130abd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cf1d2efd4835b68210776d5c130abd8">&#9670;&nbsp;</a></span>sending_line</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int16_t sending_line =-1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="af04b0de520c6e42f039c5edf47b13dc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af04b0de520c6e42f039c5edf47b13dc2">&#9670;&nbsp;</a></span>spi</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">spi_device_handle_t spi</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a16670a27e1bd7092e32c99bb10c912ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16670a27e1bd7092e32c99bb10c912ee">&#9670;&nbsp;</a></span>st_init_cmds</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DRAM_ATTR const <a class="el" href="structlcd__init__cmd__t.html">lcd_init_cmd_t</a> st_init_cmds[]</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_409f97388efe006bc3438b95e9edef48.html">components</a></li><li class="navelem"><a class="el" href="dir_8c3047c3b01c62334c9cb3295fc1c68f.html">lcd</a></li><li class="navelem"><a class="el" href="dir_ebe1f644ef55b16f77392e0c42ad8294.html">src</a></li><li class="navelem"><a class="el" href="_driver_8c.html">Driver.c</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>