466 lines
27 KiB
HTML
466 lines
27 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
|
|
<title>sd-reader: MMC/SD/SDHC card raw access</title>
|
|
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
|
|
|
|
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div! -->
|
|
|
|
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
|
|
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">sd-reader
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
|
|
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Generated by Doxygen 1.7.6.1 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Data Structures</a> |
|
|
<a href="#groups">Modules</a> |
|
|
<a href="#files">Files</a> |
|
|
<a href="#define-members">Defines</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">MMC/SD/SDHC card raw access</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>This module implements read and write access to MMC, SD and SDHC cards.
|
|
<a href="#details">More...</a></p>
|
|
<table class="memberdecls">
|
|
<tr><td colspan="2"><h2><a name="nested-classes"></a>
|
|
Data Structures</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structsd__raw__info.html">sd_raw_info</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">This struct is used by <a class="el" href="group__sd__raw.html#ga97c54e82834f87bcdd38e79822fe5a79" title="Reads informational data from the card.">sd_raw_get_info()</a> to return manufacturing and status information of the card. <a href="structsd__raw__info.html#details">More...</a><br/></td></tr>
|
|
<tr><td colspan="2"><h2><a name="groups"></a>
|
|
Modules</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw__config.html">MMC/SD configuration</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Preprocessor defines to configure the MMC/SD support. </p>
|
|
<br/></td></tr>
|
|
<tr><td colspan="2"><h2><a name="files"></a>
|
|
Files</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="sd__raw_8c.html">sd_raw.c</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>MMC/SD/SDHC raw access implementation (license: GPLv2 or LGPLv2.1) </p>
|
|
<br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="sd__raw_8h.html">sd_raw.h</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>MMC/SD/SDHC raw access header (license: GPLv2 or LGPLv2.1) </p>
|
|
<br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="sd__raw__config_8h.html">sd_raw_config.h</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>MMC/SD support configuration (license: GPLv2 or LGPLv2.1) </p>
|
|
<br/></td></tr>
|
|
<tr><td colspan="2"><h2><a name="define-members"></a>
|
|
Defines</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2507a78d61385c9dbc1d06b8a03ef58a"></a><!-- doxytag: member="sd_raw::SD_RAW_FORMAT_HARDDISK" ref="ga2507a78d61385c9dbc1d06b8a03ef58a" args="" -->
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga2507a78d61385c9dbc1d06b8a03ef58a">SD_RAW_FORMAT_HARDDISK</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">The card's layout is harddisk-like, which means it contains a master boot record with a partition table. <br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4caede5500f4d1035ceb9951a831c224"></a><!-- doxytag: member="sd_raw::SD_RAW_FORMAT_SUPERFLOPPY" ref="ga4caede5500f4d1035ceb9951a831c224" args="" -->
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga4caede5500f4d1035ceb9951a831c224">SD_RAW_FORMAT_SUPERFLOPPY</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">The card contains a single filesystem and no partition table. <br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad070d05f762410f57870549a0fcd5f43"></a><!-- doxytag: member="sd_raw::SD_RAW_FORMAT_UNIVERSAL" ref="gad070d05f762410f57870549a0fcd5f43" args="" -->
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#gad070d05f762410f57870549a0fcd5f43">SD_RAW_FORMAT_UNIVERSAL</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">The card's layout follows the Universal File Format. <br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7e87231437f32335a25930ec1b85a9c9"></a><!-- doxytag: member="sd_raw::SD_RAW_FORMAT_UNKNOWN" ref="ga7e87231437f32335a25930ec1b85a9c9" args="" -->
|
|
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga7e87231437f32335a25930ec1b85a9c9">SD_RAW_FORMAT_UNKNOWN</a></td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">The card's layout is unknown. <br/></td></tr>
|
|
<tr><td colspan="2"><h2><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga82e8599b2679451e491484fb0b19bfd5">sd_raw_init</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes memory card communication. <a href="#ga82e8599b2679451e491484fb0b19bfd5"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga5e227f25ad4a18466e7cdd9ecdfce8ab">sd_raw_available</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks wether a memory card is located in the slot. <a href="#ga5e227f25ad4a18466e7cdd9ecdfce8ab"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga55f311428473cd5b85cf8f24ffba121b">sd_raw_locked</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks wether the memory card is locked for write access. <a href="#ga55f311428473cd5b85cf8f24ffba121b"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga3da1870e406622511379a66370cdc774">sd_raw_read</a> (offset_t offset, uint8_t *buffer, uintptr_t length)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads raw data from the card. <a href="#ga3da1870e406622511379a66370cdc774"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#gaf7eb53b23a8a91aaae785379da1527c9">sd_raw_read_interval</a> (offset_t offset, uint8_t *buffer, uintptr_t interval, uintptr_t length, sd_raw_read_interval_handler_t callback, void *p)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Continuously reads units of <code>interval</code> bytes and calls a callback function. <a href="#gaf7eb53b23a8a91aaae785379da1527c9"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577">sd_raw_write</a> (offset_t offset, const uint8_t *buffer, uintptr_t length)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes raw data to the card. <a href="#ga0e46673759c1aa9ba492c8d123a3c577"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga7c60c1314055991e0812b659fe4e6c68">sd_raw_write_interval</a> (offset_t offset, uint8_t *buffer, uintptr_t length, sd_raw_write_interval_handler_t callback, void *p)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a continuous data stream obtained from a callback function. <a href="#ga7c60c1314055991e0812b659fe4e6c68"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#gad4d9ff40a7ea50c65cfa47927b35b735">sd_raw_sync</a> ()</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes the write buffer's content to the card. <a href="#gad4d9ff40a7ea50c65cfa47927b35b735"></a><br/></td></tr>
|
|
<tr><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sd__raw.html#ga97c54e82834f87bcdd38e79822fe5a79">sd_raw_get_info</a> (struct <a class="el" href="structsd__raw__info.html">sd_raw_info</a> *info)</td></tr>
|
|
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads informational data from the card. <a href="#ga97c54e82834f87bcdd38e79822fe5a79"></a><br/></td></tr>
|
|
</table>
|
|
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
|
|
<p>This module implements read and write access to MMC, SD and SDHC cards. </p>
|
|
<p>It serves as a low-level driver for the higher level modules such as partition and file system access. </p>
|
|
<hr/><h2>Function Documentation</h2>
|
|
<a class="anchor" id="ga5e227f25ad4a18466e7cdd9ecdfce8ab"></a><!-- doxytag: member="sd_raw.c::sd_raw_available" ref="ga5e227f25ad4a18466e7cdd9ecdfce8ab" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga5e227f25ad4a18466e7cdd9ecdfce8ab">sd_raw_available</a> </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Checks wether a memory card is located in the slot. </p>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if the card is available, 0 if it is not. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga97c54e82834f87bcdd38e79822fe5a79"></a><!-- doxytag: member="sd_raw.c::sd_raw_get_info" ref="ga97c54e82834f87bcdd38e79822fe5a79" args="(struct sd_raw_info *info)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga97c54e82834f87bcdd38e79822fe5a79">sd_raw_get_info</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="structsd__raw__info.html">sd_raw_info</a> * </td>
|
|
<td class="paramname"><em>info</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Reads informational data from the card. </p>
|
|
<p>This function reads and returns the card's registers containing manufacturing and status information.</p>
|
|
<dl class="note"><dt><b>Note:</b></dt><dd>: The information retrieved by this function is not required in any way to operate on the card, but it might be nice to display some of the data to the user.</dd></dl>
|
|
<dl class="params"><dt><b>Parameters:</b></dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>A pointer to the structure into which to save the information. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga82e8599b2679451e491484fb0b19bfd5"></a><!-- doxytag: member="sd_raw.c::sd_raw_init" ref="ga82e8599b2679451e491484fb0b19bfd5" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga82e8599b2679451e491484fb0b19bfd5">sd_raw_init</a> </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Initializes memory card communication. </p>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga55f311428473cd5b85cf8f24ffba121b"></a><!-- doxytag: member="sd_raw.c::sd_raw_locked" ref="ga55f311428473cd5b85cf8f24ffba121b" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga55f311428473cd5b85cf8f24ffba121b">sd_raw_locked</a> </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Checks wether the memory card is locked for write access. </p>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if the card is locked, 0 if it is not. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga3da1870e406622511379a66370cdc774"></a><!-- doxytag: member="sd_raw.c::sd_raw_read" ref="ga3da1870e406622511379a66370cdc774" args="(offset_t offset, uint8_t *buffer, uintptr_t length)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga3da1870e406622511379a66370cdc774">sd_raw_read</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype">offset_t </td>
|
|
<td class="paramname"><em>offset</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uintptr_t </td>
|
|
<td class="paramname"><em>length</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Reads raw data from the card. </p>
|
|
<dl class="params"><dt><b>Parameters:</b></dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>The offset from which to read. </td></tr>
|
|
<tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>The buffer into which to write the data. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The number of bytes to read. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success. </dd></dl>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__sd__raw.html#gaf7eb53b23a8a91aaae785379da1527c9" title="Continuously reads units of interval bytes and calls a callback function.">sd_raw_read_interval</a>, <a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577" title="Writes raw data to the card.">sd_raw_write</a>, <a class="el" href="group__sd__raw.html#ga7c60c1314055991e0812b659fe4e6c68" title="Writes a continuous data stream obtained from a callback function.">sd_raw_write_interval</a> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gaf7eb53b23a8a91aaae785379da1527c9"></a><!-- doxytag: member="sd_raw.c::sd_raw_read_interval" ref="gaf7eb53b23a8a91aaae785379da1527c9" args="(offset_t offset, uint8_t *buffer, uintptr_t interval, uintptr_t length, sd_raw_read_interval_handler_t callback, void *p)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#gaf7eb53b23a8a91aaae785379da1527c9">sd_raw_read_interval</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype">offset_t </td>
|
|
<td class="paramname"><em>offset</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uintptr_t </td>
|
|
<td class="paramname"><em>interval</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uintptr_t </td>
|
|
<td class="paramname"><em>length</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">sd_raw_read_interval_handler_t </td>
|
|
<td class="paramname"><em>callback</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"><em>p</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Continuously reads units of <code>interval</code> bytes and calls a callback function. </p>
|
|
<p>This function starts reading at the specified offset. Every <code>interval</code> bytes, it calls the callback function with the associated data buffer.</p>
|
|
<p>By returning zero, the callback may stop reading.</p>
|
|
<dl class="note"><dt><b>Note:</b></dt><dd>Within the callback function, you can not start another read or write operation. </dd>
|
|
<dd>
|
|
This function only works if the following conditions are met:<ul>
|
|
<li>(offset - (offset % 512)) % interval == 0</li>
|
|
<li>length % interval == 0</li>
|
|
</ul>
|
|
</dd></dl>
|
|
<dl class="params"><dt><b>Parameters:</b></dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Offset from which to start reading. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>Pointer to a buffer which is at least interval bytes in size. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">interval</td><td>Number of bytes to read before calling the callback function. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Number of bytes to read altogether. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The function to call every interval bytes. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>An opaque pointer directly passed to the callback function. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success </dd></dl>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__sd__raw.html#ga7c60c1314055991e0812b659fe4e6c68" title="Writes a continuous data stream obtained from a callback function.">sd_raw_write_interval</a>, <a class="el" href="group__sd__raw.html#ga3da1870e406622511379a66370cdc774" title="Reads raw data from the card.">sd_raw_read</a>, <a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577" title="Writes raw data to the card.">sd_raw_write</a> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="gad4d9ff40a7ea50c65cfa47927b35b735"></a><!-- doxytag: member="sd_raw.c::sd_raw_sync" ref="gad4d9ff40a7ea50c65cfa47927b35b735" args="()" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#gad4d9ff40a7ea50c65cfa47927b35b735">sd_raw_sync</a> </td>
|
|
<td>(</td>
|
|
<td class="paramname"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Writes the write buffer's content to the card. </p>
|
|
<dl class="note"><dt><b>Note:</b></dt><dd>When write buffering is enabled, you should call this function before disconnecting the card to ensure all remaining data has been written.</dd></dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success. </dd></dl>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577" title="Writes raw data to the card.">sd_raw_write</a> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga0e46673759c1aa9ba492c8d123a3c577"></a><!-- doxytag: member="sd_raw.c::sd_raw_write" ref="ga0e46673759c1aa9ba492c8d123a3c577" args="(offset_t offset, const uint8_t *buffer, uintptr_t length)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577">sd_raw_write</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype">offset_t </td>
|
|
<td class="paramname"><em>offset</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const uint8_t * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uintptr_t </td>
|
|
<td class="paramname"><em>length</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Writes raw data to the card. </p>
|
|
<dl class="note"><dt><b>Note:</b></dt><dd>If write buffering is enabled, you might have to call <a class="el" href="group__sd__raw.html#gad4d9ff40a7ea50c65cfa47927b35b735" title="Writes the write buffer's content to the card.">sd_raw_sync()</a> before disconnecting the card to ensure all remaining data has been written.</dd></dl>
|
|
<dl class="params"><dt><b>Parameters:</b></dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>The offset where to start writing. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>The buffer containing the data to be written. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The number of bytes to write. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success. </dd></dl>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__sd__raw.html#ga7c60c1314055991e0812b659fe4e6c68" title="Writes a continuous data stream obtained from a callback function.">sd_raw_write_interval</a>, <a class="el" href="group__sd__raw.html#ga3da1870e406622511379a66370cdc774" title="Reads raw data from the card.">sd_raw_read</a>, <a class="el" href="group__sd__raw.html#gaf7eb53b23a8a91aaae785379da1527c9" title="Continuously reads units of interval bytes and calls a callback function.">sd_raw_read_interval</a> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a class="anchor" id="ga7c60c1314055991e0812b659fe4e6c68"></a><!-- doxytag: member="sd_raw.c::sd_raw_write_interval" ref="ga7c60c1314055991e0812b659fe4e6c68" args="(offset_t offset, uint8_t *buffer, uintptr_t length, sd_raw_write_interval_handler_t callback, void *p)" -->
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">uint8_t <a class="el" href="group__sd__raw.html#ga7c60c1314055991e0812b659fe4e6c68">sd_raw_write_interval</a> </td>
|
|
<td>(</td>
|
|
<td class="paramtype">offset_t </td>
|
|
<td class="paramname"><em>offset</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uint8_t * </td>
|
|
<td class="paramname"><em>buffer</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">uintptr_t </td>
|
|
<td class="paramname"><em>length</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">sd_raw_write_interval_handler_t </td>
|
|
<td class="paramname"><em>callback</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">void * </td>
|
|
<td class="paramname"><em>p</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="memdoc">
|
|
|
|
<p>Writes a continuous data stream obtained from a callback function. </p>
|
|
<p>This function starts writing at the specified offset. To obtain the next bytes to write, it calls the callback function. The callback fills the provided data buffer and returns the number of bytes it has put into the buffer.</p>
|
|
<p>By returning zero, the callback may stop writing.</p>
|
|
<dl class="params"><dt><b>Parameters:</b></dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">offset</td><td>Offset where to start writing. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>Pointer to a buffer which is used for the callback function. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Number of bytes to write in total. May be zero for endless writes. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The function used to obtain the bytes to write. </td></tr>
|
|
<tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>An opaque pointer directly passed to the callback function. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on failure, 1 on success </dd></dl>
|
|
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__sd__raw.html#gaf7eb53b23a8a91aaae785379da1527c9" title="Continuously reads units of interval bytes and calls a callback function.">sd_raw_read_interval</a>, <a class="el" href="group__sd__raw.html#ga0e46673759c1aa9ba492c8d123a3c577" title="Writes raw data to the card.">sd_raw_write</a>, <a class="el" href="group__sd__raw.html#ga3da1870e406622511379a66370cdc774" title="Reads raw data from the card.">sd_raw_read</a> </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
|
|
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Tue Jun 12 2012 20:06:45 for sd-reader by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.7.6.1
|
|
</small></address>
|
|
|
|
</body>
|
|
</html>
|