Loading files
c02386ffcThis 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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.11.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Metal Detector: C:/Users/Viktor/Desktop/labaratorni/Projects/Metal_Detector/software/Program/Display/Src/display.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>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.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>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</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 id="projectrow">
<td id="projectalign">
<div id="projectname">Metal Detector
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.11.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</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:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function(){initNavTree('display_8c.html',''); initResizable(true); });
/* @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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle"><div class="title">display.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation file for display and touch handling.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include "<a class="el" href="display_8h_source.html">display.h</a>"</code><br />
<code>#include "lvgl.h"</code><br />
<code>#include "spi.h"</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:afbe578816bd478cc769bdfb145470cce" id="r_afbe578816bd478cc769bdfb145470cce"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#afbe578816bd478cc769bdfb145470cce">dp_lvgl_flush</a> (lv_display_t *disp, const lv_area_t *area, uint8_t *px_map)</td></tr>
<tr class="memdesc:afbe578816bd478cc769bdfb145470cce"><td class="mdescLeft"> </td><td class="mdescRight">Flush the display buffer to the ILI9341 display. <br /></td></tr>
<tr class="separator:afbe578816bd478cc769bdfb145470cce"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a8e6da58720f3166a9e54682dee03357c" id="r_a8e6da58720f3166a9e54682dee03357c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a8e6da58720f3166a9e54682dee03357c">dp_lvgl_read</a> (lv_indev_t *<a class="el" href="#aab69b4392bb39ede3b0ce5e97ea5617c">indev</a>, lv_indev_data_t *data)</td></tr>
<tr class="memdesc:a8e6da58720f3166a9e54682dee03357c"><td class="mdescLeft"> </td><td class="mdescRight">Read touch input data from the XPT2046 touchscreen. <br /></td></tr>
<tr class="separator:a8e6da58720f3166a9e54682dee03357c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ac1dfc4e48c9318bef032dd7c65372f21" id="r_ac1dfc4e48c9318bef032dd7c65372f21"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac1dfc4e48c9318bef032dd7c65372f21">dp_init</a> (void)</td></tr>
<tr class="memdesc:ac1dfc4e48c9318bef032dd7c65372f21"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the display and touchscreen. <br /></td></tr>
<tr class="separator:ac1dfc4e48c9318bef032dd7c65372f21"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a682eafa855b5a2fded71d75e827122d3" id="r_a682eafa855b5a2fded71d75e827122d3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a682eafa855b5a2fded71d75e827122d3">dp_lvgl_init</a> (void)</td></tr>
<tr class="memdesc:a682eafa855b5a2fded71d75e827122d3"><td class="mdescLeft"> </td><td class="mdescRight">Initialize LVGL and set up the display buffer and input device. <br /></td></tr>
<tr class="separator:a682eafa855b5a2fded71d75e827122d3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:afcbe8a27d4870ce155a3ba3b6f1155cb" id="r_afcbe8a27d4870ce155a3ba3b6f1155cb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#afcbe8a27d4870ce155a3ba3b6f1155cb">ILI9341_FillWindowCmpltCallBack</a> (void)</td></tr>
<tr class="memdesc:afcbe8a27d4870ce155a3ba3b6f1155cb"><td class="mdescLeft"> </td><td class="mdescRight">Callback function for ILI9341 fill window complete. <br /></td></tr>
<tr class="separator:afcbe8a27d4870ce155a3ba3b6f1155cb"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a94cee89137dc23941cca5f855cc1140c" id="r_a94cee89137dc23941cca5f855cc1140c"><td class="memItemLeft" align="right" valign="top">lv_display_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="#a94cee89137dc23941cca5f855cc1140c">display</a></td></tr>
<tr class="separator:a94cee89137dc23941cca5f855cc1140c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aab69b4392bb39ede3b0ce5e97ea5617c" id="r_aab69b4392bb39ede3b0ce5e97ea5617c"><td class="memItemLeft" align="right" valign="top">lv_indev_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="#aab69b4392bb39ede3b0ce5e97ea5617c">indev</a></td></tr>
<tr class="separator:aab69b4392bb39ede3b0ce5e97ea5617c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a1b38c8a7fc4b8447f9694941b2fe7698" id="r_a1b38c8a7fc4b8447f9694941b2fe7698"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_x_p_t2046_handle__t.html">XPT2046Handle_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a1b38c8a7fc4b8447f9694941b2fe7698">xpt2046Handle</a></td></tr>
<tr class="separator:a1b38c8a7fc4b8447f9694941b2fe7698"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:af05b437ec963adb184588f800fea1d50" id="r_af05b437ec963adb184588f800fea1d50"><td class="memItemLeft" align="right" valign="top">SPI_HandleTypeDef * </td><td class="memItemRight" valign="bottom"><a class="el" href="#af05b437ec963adb184588f800fea1d50">ili9341_spi</a> = &hspi1</td></tr>
<tr class="separator:af05b437ec963adb184588f800fea1d50"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab7bb0ab5c787b9b92c57aec4b3b84e9c" id="r_ab7bb0ab5c787b9b92c57aec4b3b84e9c"><td class="memItemLeft" align="right" valign="top">SPI_HandleTypeDef * </td><td class="memItemRight" valign="bottom"><a class="el" href="#ab7bb0ab5c787b9b92c57aec4b3b84e9c">xpt2046_spi</a> = &hspi3</td></tr>
<tr class="separator:ab7bb0ab5c787b9b92c57aec4b3b84e9c"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation file for display and touch handling. </p>
<p>This file contains the implementation for initializing and managing the display and touch input for the system. It includes functions for setting up the LVGL display buffer, flushing display data, and reading touch input from the XPT2046 touch screen controller. The file also includes a callback function for the ILI9341 display driver to indicate when a window fill operation is complete.</p>
<p>Created on: Jul 5, 2024 Author: Viktor </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ac1dfc4e48c9318bef032dd7c65372f21" name="ac1dfc4e48c9318bef032dd7c65372f21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1dfc4e48c9318bef032dd7c65372f21">◆ </a></span>dp_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dp_init </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the display and touchscreen. </p>
<p>This function initializes the ILI9341 display and the XPT2046 touchscreen, including setting calibration values for the touchscreen. </p>
</div>
</div>
<a id="afbe578816bd478cc769bdfb145470cce" name="afbe578816bd478cc769bdfb145470cce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbe578816bd478cc769bdfb145470cce">◆ </a></span>dp_lvgl_flush()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void dp_lvgl_flush </td>
<td>(</td>
<td class="paramtype">lv_display_t *</td> <td class="paramname"><span class="paramname"><em>disp</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const lv_area_t *</td> <td class="paramname"><span class="paramname"><em>area</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *</td> <td class="paramname"><span class="paramname"><em>px_map</em></span> )</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>Flush the display buffer to the ILI9341 display. </p>
<p>This function is called by LVGL to update the display area. It sets the window area on the ILI9341 and then starts the DMA transfer.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">disp</td><td>Pointer to the display structure. </td></tr>
<tr><td class="paramname">area</td><td>Pointer to the area to be updated. </td></tr>
<tr><td class="paramname">px_map</td><td>Pointer to the pixel map containing the buffer data. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a682eafa855b5a2fded71d75e827122d3" name="a682eafa855b5a2fded71d75e827122d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a682eafa855b5a2fded71d75e827122d3">◆ </a></span>dp_lvgl_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dp_lvgl_init </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize LVGL and set up the display buffer and input device. </p>
<p>This function initializes LVGL, creates a display and input device, sets up the display buffer, and assigns callback functions for display flushing and input reading. </p>
</div>
</div>
<a id="a8e6da58720f3166a9e54682dee03357c" name="a8e6da58720f3166a9e54682dee03357c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e6da58720f3166a9e54682dee03357c">◆ </a></span>dp_lvgl_read()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void dp_lvgl_read </td>
<td>(</td>
<td class="paramtype">lv_indev_t *</td> <td class="paramname"><span class="paramname"><em>indev</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">lv_indev_data_t *</td> <td class="paramname"><span class="paramname"><em>data</em></span> )</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>Read touch input data from the XPT2046 touchscreen. </p>
<p>This function is called by LVGL to get touch input data from the XPT2046 touchscreen. It checks if the screen is pressed and reads the coordinates if it is.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">indev</td><td>Pointer to the input device structure. </td></tr>
<tr><td class="paramname">data</td><td>Pointer to the data structure where the touch input will be stored. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afcbe8a27d4870ce155a3ba3b6f1155cb" name="afcbe8a27d4870ce155a3ba3b6f1155cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afcbe8a27d4870ce155a3ba3b6f1155cb">◆ </a></span>ILI9341_FillWindowCmpltCallBack()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ILI9341_FillWindowCmpltCallBack </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Callback function for ILI9341 fill window complete. </p>
<p>Weak callback function for window fill completion.</p>
<p>This function is called when the DMA transfer to fill the window on the ILI9341 display is complete. It signals LVGL that the flush operation is done and the display is ready for the next update. </p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a94cee89137dc23941cca5f855cc1140c" name="a94cee89137dc23941cca5f855cc1140c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94cee89137dc23941cca5f855cc1140c">◆ </a></span>display</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">lv_display_t* display</td>
</tr>
</table>
</div><div class="memdoc">
<p>Pointer to the LVGL display object </p>
</div>
</div>
<a id="af05b437ec963adb184588f800fea1d50" name="af05b437ec963adb184588f800fea1d50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af05b437ec963adb184588f800fea1d50">◆ </a></span>ili9341_spi</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">SPI_HandleTypeDef* ili9341_spi = &hspi1</td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI handle for the ILI9341 display </p>
</div>
</div>
<a id="aab69b4392bb39ede3b0ce5e97ea5617c" name="aab69b4392bb39ede3b0ce5e97ea5617c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab69b4392bb39ede3b0ce5e97ea5617c">◆ </a></span>indev</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">lv_indev_t* indev</td>
</tr>
</table>
</div><div class="memdoc">
<p>Pointer to the LVGL input device object </p>
</div>
</div>
<a id="ab7bb0ab5c787b9b92c57aec4b3b84e9c" name="ab7bb0ab5c787b9b92c57aec4b3b84e9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7bb0ab5c787b9b92c57aec4b3b84e9c">◆ </a></span>xpt2046_spi</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">SPI_HandleTypeDef* xpt2046_spi = &hspi3</td>
</tr>
</table>
</div><div class="memdoc">
<p>SPI handle for the XPT2046 touch screen </p>
</div>
</div>
<a id="a1b38c8a7fc4b8447f9694941b2fe7698" name="a1b38c8a7fc4b8447f9694941b2fe7698"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b38c8a7fc4b8447f9694941b2fe7698">◆ </a></span>xpt2046Handle</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="struct_x_p_t2046_handle__t.html">XPT2046Handle_t</a> xpt2046Handle</td>
</tr>
</table>
</div><div class="memdoc">
<p>Handle for the XPT2046 touch screen controller </p>
</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_24817a301ba3256d5cc3ff5fb28dbe0b.html">Display</a></li><li class="navelem"><a class="el" href="dir_bd0f8823100e88f56087202c553e40bd.html">Src</a></li><li class="navelem"><a class="el" href="display_8c.html">display.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
</ul>
</div>
</body>
</html>