Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > 2bcfde21a73ffa0573b5ca7b311a2f76 > files > 40

bladerf-doc-2018.12-0.rc3.1.mga7.noarch.rpm

<!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"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>libbladeRF: Low-level flash routines</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="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">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.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="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libbladeRF
   &#160;<span id="projectnumber">1.7.2</span>
   </div>
   <div id="projectbrief">Nuand bladeRF library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="modules.html"><span>API&#160;Sections</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="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.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- 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="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Low-level flash routines</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<p>These routines provide the ability to manipulate the device's SPI flash. Most users will find no reason to use these, as higher-level functions perform flash accesses under the hood.</p>
<p>These routines are not recommended for use other than testing, development, and significant customization of the bladeRF platform (which would require firmware and libbladeRF changes).</p>
<p>Use of these functions requires an understanding of the underlying SPI flash device, and the bladeRF's flash memory map. Be sure to review the following page and the associated flash datasheet before using these functions: <a href="https://github.com/nuand/bladeRF/wiki/FX3-Firmware#spi-flash-layout">https://github.com/nuand/bladeRF/wiki/FX3-Firmware#spi-flash-layout</a></p>
<p>These functions are thread-safe. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga82ec56856cb4351a428e6786e5b2212e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga82ec56856cb4351a428e6786e5b2212e">BLADERF_FLASH_TOTAL_SIZE</a>&#160;&#160;&#160;(4 * 1024 * 1024)</td></tr>
<tr class="separator:ga82ec56856cb4351a428e6786e5b2212e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga925a4e113b232589adc4a85be91404e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga925a4e113b232589adc4a85be91404e5">BLADERF_FLASH_PAGE_SIZE</a>&#160;&#160;&#160;256</td></tr>
<tr class="separator:ga925a4e113b232589adc4a85be91404e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8d9d91b7e863f5ea3755dc8884d0dee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gae8d9d91b7e863f5ea3755dc8884d0dee">BLADERF_FLASH_EB_SIZE</a>&#160;&#160;&#160;(64 * 1024)</td></tr>
<tr class="separator:gae8d9d91b7e863f5ea3755dc8884d0dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2fbf6219347ff865d1136e6e1c9abf02"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga2fbf6219347ff865d1136e6e1c9abf02">BLADERF_FLASH_NUM_PAGES</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga82ec56856cb4351a428e6786e5b2212e">BLADERF_FLASH_TOTAL_SIZE</a> / <a class="el" href="group___f_n___f_l_a_s_h.html#ga925a4e113b232589adc4a85be91404e5">BLADERF_FLASH_PAGE_SIZE</a>)</td></tr>
<tr class="separator:ga2fbf6219347ff865d1136e6e1c9abf02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9619af013777dd88c1ed1164c38a0688"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga9619af013777dd88c1ed1164c38a0688">BLADERF_FLASH_NUM_EBS</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga82ec56856cb4351a428e6786e5b2212e">BLADERF_FLASH_TOTAL_SIZE</a> / <a class="el" href="group___f_n___f_l_a_s_h.html#gae8d9d91b7e863f5ea3755dc8884d0dee">BLADERF_FLASH_EB_SIZE</a>)</td></tr>
<tr class="separator:ga9619af013777dd88c1ed1164c38a0688"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad5c1163d1e08f144a5efc355e42ec36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(bytes)&#160;&#160;&#160;((bytes) / <a class="el" href="group___f_n___f_l_a_s_h.html#ga925a4e113b232589adc4a85be91404e5">BLADERF_FLASH_PAGE_SIZE</a>)</td></tr>
<tr class="separator:gaad5c1163d1e08f144a5efc355e42ec36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3567c294cb55b958087578fa87fc5680"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(bytes)&#160;&#160;&#160;((bytes) / <a class="el" href="group___f_n___f_l_a_s_h.html#gae8d9d91b7e863f5ea3755dc8884d0dee">BLADERF_FLASH_EB_SIZE</a>)</td></tr>
<tr class="separator:ga3567c294cb55b958087578fa87fc5680"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga55abbf8ce669cd75d47846e5689151fe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga55abbf8ce669cd75d47846e5689151fe">BLADERF_FLASH_ADDR_FIRMWARE</a>&#160;&#160;&#160;0x00000000</td></tr>
<tr class="separator:ga55abbf8ce669cd75d47846e5689151fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06fb129d71594fe8a78b68d3fef157c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga06fb129d71594fe8a78b68d3fef157c3">BLADERF_FLASH_PAGE_FIRMWARE</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga55abbf8ce669cd75d47846e5689151fe">BLADERF_FLASH_ADDR_FIRMWARE</a>))</td></tr>
<tr class="separator:ga06fb129d71594fe8a78b68d3fef157c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga921e4adbcb5c3fe7b08e25e58e242c24"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga921e4adbcb5c3fe7b08e25e58e242c24">BLADERF_FLASH_EB_FIRMWARE</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga55abbf8ce669cd75d47846e5689151fe">BLADERF_FLASH_ADDR_FIRMWARE</a>))</td></tr>
<tr class="separator:ga921e4adbcb5c3fe7b08e25e58e242c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga49dbc1db73ae43ffd1a64ae9b9029172"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga49dbc1db73ae43ffd1a64ae9b9029172">BLADERF_FLASH_BYTE_LEN_FIRMWARE</a>&#160;&#160;&#160;0x00030000</td></tr>
<tr class="separator:ga49dbc1db73ae43ffd1a64ae9b9029172"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga18059d66f07a1b06a83f2a37a92e97e3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga18059d66f07a1b06a83f2a37a92e97e3">BLADERF_FLASH_PAGE_LEN_FIRMWARE</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga49dbc1db73ae43ffd1a64ae9b9029172">BLADERF_FLASH_BYTE_LEN_FIRMWARE</a>))</td></tr>
<tr class="separator:ga18059d66f07a1b06a83f2a37a92e97e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacaf5886ec506a7e91b27da10f634a3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gacaf5886ec506a7e91b27da10f634a3e2">BLADERF_FLASH_EB_LEN_FIRMWARE</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga49dbc1db73ae43ffd1a64ae9b9029172">BLADERF_FLASH_BYTE_LEN_FIRMWARE</a>))</td></tr>
<tr class="separator:gacaf5886ec506a7e91b27da10f634a3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4339a488338e28b40974dc3782c0d813"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga4339a488338e28b40974dc3782c0d813">BLADERF_FLASH_ADDR_CAL</a>&#160;&#160;&#160;0x00030000</td></tr>
<tr class="separator:ga4339a488338e28b40974dc3782c0d813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad114691df12a3ccf35acc3c9beed351e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gad114691df12a3ccf35acc3c9beed351e">BLADERF_FLASH_PAGE_CAL</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga4339a488338e28b40974dc3782c0d813">BLADERF_FLASH_ADDR_CAL</a>))</td></tr>
<tr class="separator:gad114691df12a3ccf35acc3c9beed351e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2c8d5a3cbdfab27b9c5de5c83b0d445"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaf2c8d5a3cbdfab27b9c5de5c83b0d445">BLADERF_FLASH_EB_CAL</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga4339a488338e28b40974dc3782c0d813">BLADERF_FLASH_ADDR_CAL</a>))</td></tr>
<tr class="separator:gaf2c8d5a3cbdfab27b9c5de5c83b0d445"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2443be9b3a5d6091ee237be3d099156"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gab2443be9b3a5d6091ee237be3d099156">BLADERF_FLASH_BYTE_LEN_CAL</a>&#160;&#160;&#160;0x100</td></tr>
<tr class="separator:gab2443be9b3a5d6091ee237be3d099156"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2d24496c1c9bc85eb549fc0dfdb69c8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaa2d24496c1c9bc85eb549fc0dfdb69c8">BLADERF_FLASH_PAGE_LEN_CAL</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(FLASH_BYTE_LEN_CAL))</td></tr>
<tr class="separator:gaa2d24496c1c9bc85eb549fc0dfdb69c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb0500cf801028602b90ac563944de5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gabb0500cf801028602b90ac563944de5b">BLADERF_FLASH_EB_LEN_CAL</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:gabb0500cf801028602b90ac563944de5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf434509f5d1e0bef74440a55e414a2f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gadf434509f5d1e0bef74440a55e414a2f">BLADERF_FLASH_ADDR_FPGA</a>&#160;&#160;&#160;0x00040000</td></tr>
<tr class="separator:gadf434509f5d1e0bef74440a55e414a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada0d9c9efbd690ce6bf7f4ba8a2f9690"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gada0d9c9efbd690ce6bf7f4ba8a2f9690">BLADERF_FLASH_PAGE_FPGA</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gadf434509f5d1e0bef74440a55e414a2f">BLADERF_FLASH_ADDR_FPGA</a>))</td></tr>
<tr class="separator:gada0d9c9efbd690ce6bf7f4ba8a2f9690"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1772f5882610c33ed0eed85a749297d9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga1772f5882610c33ed0eed85a749297d9">BLADERF_FLASH_EB_FPGA</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gadf434509f5d1e0bef74440a55e414a2f">BLADERF_FLASH_ADDR_FPGA</a>))</td></tr>
<tr class="separator:ga1772f5882610c33ed0eed85a749297d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa480d00a5dea24fc124a39b546b4599d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaa480d00a5dea24fc124a39b546b4599d">BLADERF_FLASH_BYTE_LEN_FPGA</a>&#160;&#160;&#160;0x00370000</td></tr>
<tr class="separator:gaa480d00a5dea24fc124a39b546b4599d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa11f97991a61cae67f324b8b9867eaf7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaa11f97991a61cae67f324b8b9867eaf7">BLADERF_FLASH_EB_LEN_FPGA</a>&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gaa480d00a5dea24fc124a39b546b4599d">BLADERF_FLASH_BYTE_LEN_FPGA</a>))</td></tr>
<tr class="separator:gaa11f97991a61cae67f324b8b9867eaf7"><td class="memSeparator" colspan="2">&#160;</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:gaaa0d8fa6125b2f1b0315e1eb78feabb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#gaaa0d8fa6125b2f1b0315e1eb78feabb8">bladerf_erase_flash</a> (struct bladerf *dev, uint32_t erase_block, uint32_t count)</td></tr>
<tr class="separator:gaaa0d8fa6125b2f1b0315e1eb78feabb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65589d09713484de98fd85028cbdf4b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga65589d09713484de98fd85028cbdf4b4">bladerf_read_flash</a> (struct bladerf *dev, uint8_t *buf, uint32_t page, uint32_t count)</td></tr>
<tr class="separator:ga65589d09713484de98fd85028cbdf4b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3754151795e505d88c6bbdcb503148c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___f_n___f_l_a_s_h.html#ga3754151795e505d88c6bbdcb503148c9">bladerf_write_flash</a> (struct bladerf *dev, const uint8_t *buf, uint32_t page, uint32_t count)</td></tr>
<tr class="separator:ga3754151795e505d88c6bbdcb503148c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga4339a488338e28b40974dc3782c0d813"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_ADDR_CAL&#160;&#160;&#160;0x00030000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Byte address of calibration data region </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04262">4262</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga55abbf8ce669cd75d47846e5689151fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_ADDR_FIRMWARE&#160;&#160;&#160;0x00000000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Byte address of FX3 firmware </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04239">4239</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gadf434509f5d1e0bef74440a55e414a2f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_ADDR_FPGA&#160;&#160;&#160;0x00040000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Byte address of of the autoloaded FPGA and associated metadata. The first page is allocated for metadata, and the FPGA bitstream resides in the following pages. </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04290">4290</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gab2443be9b3a5d6091ee237be3d099156"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_BYTE_LEN_CAL&#160;&#160;&#160;0x100</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of calibration data, in bytes </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04271">4271</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga49dbc1db73ae43ffd1a64ae9b9029172"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_BYTE_LEN_FIRMWARE&#160;&#160;&#160;0x00030000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of firmware region of flash, in bytes </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04250">4250</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gaa480d00a5dea24fc124a39b546b4599d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_BYTE_LEN_FPGA&#160;&#160;&#160;0x00370000</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of entire FPGA region, including both metadata and bitstream. </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04301">4301</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gaf2c8d5a3cbdfab27b9c5de5c83b0d445"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_CAL&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga4339a488338e28b40974dc3782c0d813">BLADERF_FLASH_ADDR_CAL</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash erase block where calibration data starts </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04268">4268</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga921e4adbcb5c3fe7b08e25e58e242c24"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_FIRMWARE&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga55abbf8ce669cd75d47846e5689151fe">BLADERF_FLASH_ADDR_FIRMWARE</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash erase block where FX3 firmware starts </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04246">4246</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga1772f5882610c33ed0eed85a749297d9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_FPGA&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gadf434509f5d1e0bef74440a55e414a2f">BLADERF_FLASH_ADDR_FPGA</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash erase block where FPGA metadata and bitstream start </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04297">4297</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gabb0500cf801028602b90ac563944de5b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_LEN_CAL&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of calibration data, in erase blocks. This is a special case, as the entire remainder of the erase block is reserved for future calibration data use. When updating calibration data, the whole block will be erased, even though the current firmware only uses one page of it. </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04282">4282</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gacaf5886ec506a7e91b27da10f634a3e2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_LEN_FIRMWARE&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga49dbc1db73ae43ffd1a64ae9b9029172">BLADERF_FLASH_BYTE_LEN_FIRMWARE</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of firmware region of flash, in erase blocks </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04257">4257</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gaa11f97991a61cae67f324b8b9867eaf7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_LEN_FPGA&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga3567c294cb55b958087578fa87fc5680">BLADERF_FLASH_TO_EB</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gaa480d00a5dea24fc124a39b546b4599d">BLADERF_FLASH_BYTE_LEN_FPGA</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of entire FPGA region, in units of erase blocks </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04304">4304</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gae8d9d91b7e863f5ea3755dc8884d0dee"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_EB_SIZE&#160;&#160;&#160;(64 * 1024)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>SPI flash 64KiB erase block size, in bytes </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04218">4218</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga9619af013777dd88c1ed1164c38a0688"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_NUM_EBS&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga82ec56856cb4351a428e6786e5b2212e">BLADERF_FLASH_TOTAL_SIZE</a> / <a class="el" href="group___f_n___f_l_a_s_h.html#gae8d9d91b7e863f5ea3755dc8884d0dee">BLADERF_FLASH_EB_SIZE</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the SPI flash, in 64KiB erase blocks </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04225">4225</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga2fbf6219347ff865d1136e6e1c9abf02"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_NUM_PAGES&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#ga82ec56856cb4351a428e6786e5b2212e">BLADERF_FLASH_TOTAL_SIZE</a> / <a class="el" href="group___f_n___f_l_a_s_h.html#ga925a4e113b232589adc4a85be91404e5">BLADERF_FLASH_PAGE_SIZE</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the SPI flash, in pages </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04221">4221</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gad114691df12a3ccf35acc3c9beed351e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_CAL&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga4339a488338e28b40974dc3782c0d813">BLADERF_FLASH_ADDR_CAL</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash page where calibration data starts </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04265">4265</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga06fb129d71594fe8a78b68d3fef157c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_FIRMWARE&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga55abbf8ce669cd75d47846e5689151fe">BLADERF_FLASH_ADDR_FIRMWARE</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash page where FX3 firmware starts </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04242">4242</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gada0d9c9efbd690ce6bf7f4ba8a2f9690"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_FPGA&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#gadf434509f5d1e0bef74440a55e414a2f">BLADERF_FLASH_ADDR_FPGA</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Flash page where FPGA metadata and bitstream start </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04293">4293</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gaa2d24496c1c9bc85eb549fc0dfdb69c8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_LEN_CAL&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(FLASH_BYTE_LEN_CAL))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of calibration data, in pages </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04274">4274</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga18059d66f07a1b06a83f2a37a92e97e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_LEN_FIRMWARE&#160;&#160;&#160;(<a class="el" href="group___f_n___f_l_a_s_h.html#gaad5c1163d1e08f144a5efc355e42ec36">BLADERF_FLASH_TO_PAGES</a>(<a class="el" href="group___f_n___f_l_a_s_h.html#ga49dbc1db73ae43ffd1a64ae9b9029172">BLADERF_FLASH_BYTE_LEN_FIRMWARE</a>))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Length of firmware region of flash, in pages </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04253">4253</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga925a4e113b232589adc4a85be91404e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_PAGE_SIZE&#160;&#160;&#160;256</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>SPI flash page size, in bytes </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04215">4215</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga3567c294cb55b958087578fa87fc5680"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_TO_EB</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bytes</td><td>)</td>
          <td>&#160;&#160;&#160;((bytes) / <a class="el" href="group___f_n___f_l_a_s_h.html#gae8d9d91b7e863f5ea3755dc8884d0dee">BLADERF_FLASH_EB_SIZE</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert byte addresses to units of flash erase blocks </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04234">4234</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="gaad5c1163d1e08f144a5efc355e42ec36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_TO_PAGES</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">bytes</td><td>)</td>
          <td>&#160;&#160;&#160;((bytes) / <a class="el" href="group___f_n___f_l_a_s_h.html#ga925a4e113b232589adc4a85be91404e5">BLADERF_FLASH_PAGE_SIZE</a>)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convert byte addresses to units of flash pages </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04231">4231</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga82ec56856cb4351a428e6786e5b2212e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BLADERF_FLASH_TOTAL_SIZE&#160;&#160;&#160;(4 * 1024 * 1024)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Total size of bladeRF SPI flash, in bytes </p>

<p>Definition at line <a class="el" href="libblade_r_f_8h_source.html#l04212">4212</a> of file <a class="el" href="libblade_r_f_8h_source.html">libbladeRF.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gaaa0d8fa6125b2f1b0315e1eb78feabb8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a> bladerf_erase_flash </td>
          <td>(</td>
          <td class="paramtype">struct bladerf *&#160;</td>
          <td class="paramname"><em>dev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>erase_block</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Erase regions of the bladeRF's SPI flash</p>
<p>This function operates in units of 64KiB erase blocks</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dev</td><td>Device handle </td></tr>
    <tr><td class="paramname">erase_block</td><td>Erase block to start erasing at </td></tr>
    <tr><td class="paramname">count</td><td>Number of blocks to erase.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or BLADERF_ERR_INVAL on an invalid <code>erase_block</code> or <code>count</code> value, or a value from <a class="el" href="group___r_e_t_c_o_d_e_s.html">Error codes</a> list on other failures </dd></dl>

</div>
</div>
<a class="anchor" id="ga65589d09713484de98fd85028cbdf4b4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a> bladerf_read_flash </td>
          <td>(</td>
          <td class="paramtype">struct bladerf *&#160;</td>
          <td class="paramname"><em>dev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>page</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Read data from the bladeRF's SPI flash</p>
<p>This function operates in units of 256-byte pages.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dev</td><td>Device handle </td></tr>
    <tr><td class="paramname">buf</td><td>Buffer to read data into. Must be <code>count</code> * BLADERF_FLASH_PAGE_SIZE bytes or larger.</td></tr>
    <tr><td class="paramname">page</td><td>Page to begin reading from </td></tr>
    <tr><td class="paramname">count</td><td>Number of pages to read</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or BLADERF_ERR_INVAL on an invalid <code>page</code> or <code>count</code> value, or a value from <a class="el" href="group___r_e_t_c_o_d_e_s.html">Error codes</a> list on other failures. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3754151795e505d88c6bbdcb503148c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="libblade_r_f_8h.html#a5e3652cae8b48c1ad174f0b06bbd06d0">API_EXPORT</a> int <a class="el" href="libblade_r_f_8h.html#a66285a1fe575693f5f275b212891222e">CALL_CONV</a> bladerf_write_flash </td>
          <td>(</td>
          <td class="paramtype">struct bladerf *&#160;</td>
          <td class="paramname"><em>dev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>page</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Write data to the bladeRF's SPI flash device</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dev</td><td>Device handle </td></tr>
    <tr><td class="paramname">buf</td><td>Data to write to flash</td></tr>
    <tr><td class="paramname">page</td><td>Page to begin writing at </td></tr>
    <tr><td class="paramname">count</td><td>Number of pages to write</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, or BLADERF_ERR_INVAL on an invalid <code>page</code> or <code>count</code> value, or a value from <a class="el" href="group___r_e_t_c_o_d_e_s.html">Error codes</a> list on other failures. </dd></dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jun 29 2016 16:51:01 for libbladeRF by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>