Android-DFU-Library/documentation/javadoc/no/nordicsemi/android/dfu/HexInputStream.html

474 lines
18 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_65) on Fri Feb 06 16:26:04 CET 2015 -->
<title>HexInputStream</title>
<meta name="date" content="2015-02-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="HexInputStream";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../no/nordicsemi/android/dfu/DfuSettingsConstants.html" title="interface in no.nordicsemi.android.dfu"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../no/nordicsemi/android/dfu/R.html" title="class in no.nordicsemi.android.dfu"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?no/nordicsemi/android/dfu/HexInputStream.html" target="_top">Frames</a></li>
<li><a href="HexInputStream.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_java.io.FilterInputStream">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">no.nordicsemi.android.dfu</div>
<h2 title="Class HexInputStream" class="title">Class HexInputStream</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.io.InputStream</li>
<li>
<ul class="inheritance">
<li>java.io.FilterInputStream</li>
<li>
<ul class="inheritance">
<li>no.nordicsemi.android.dfu.HexInputStream</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Closeable, java.lang.AutoCloseable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">HexInputStream</span>
extends java.io.FilterInputStream</pre>
<div class="block">Reads the binary content from the HEX file using IntelHex standard: http://www.interlog.com/~speff/usefulinfo/Hexfrmt.pdf
Truncates the HEX file from all meta data and returns only the BIN content.
<p>
In nRF51 chips memory a SoftDevice starts at address 0x1000. From 0x0000 to 0x1000 there is MBR sector (since SoftDevice 7.0.0) which should not be transmitted using DFU. Therefore this class skips
all data from addresses below 0x1000.
</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_java.io.FilterInputStream">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;java.io.FilterInputStream</h3>
<code>in</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#HexInputStream(byte[],%20int)">HexInputStream</a></strong>(byte[]&nbsp;data,
int&nbsp;mbrSize)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#HexInputStream(java.io.InputStream,%20int)">HexInputStream</a></strong>(java.io.InputStream&nbsp;in,
int&nbsp;mbrSize)</code>
<div class="block">Creates the HEX Input Stream.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#available()">available</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#read()">read</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#read(byte[])">read</a></strong>(byte[]&nbsp;buffer)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#read(byte[],%20int,%20int)">read</a></strong>(byte[]&nbsp;buffer,
int&nbsp;offset,
int&nbsp;count)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#readPacket(byte[])">readPacket</a></strong>(byte[]&nbsp;buffer)</code>
<div class="block">Fills the buffer with next bytes from the stream.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#reset()">reset</a></strong>()</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#sizeInBytes()">sizeInBytes</a></strong>()</code>
<div class="block">Returns the total number of bytes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#sizeInPackets(int)">sizeInPackets</a></strong>(int&nbsp;packetSize)</code>
<div class="block">Returns the total number of packets with given size that are needed to get all available data</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.io.FilterInputStream">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.io.FilterInputStream</h3>
<code>close, mark, markSupported, skip</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="HexInputStream(java.io.InputStream, int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HexInputStream</h4>
<pre>protected&nbsp;HexInputStream(java.io.InputStream&nbsp;in,
int&nbsp;mbrSize)
throws <a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a>,
java.io.IOException</pre>
<div class="block">Creates the HEX Input Stream. The constructor calculates the size of the BIN content which is available through <a href="../../../../no/nordicsemi/android/dfu/HexInputStream.html#sizeInBytes()"><code>sizeInBytes()</code></a>. If HEX file is invalid then the bin size is 0.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>in</code> - the input stream to read from</dd><dd><code>mbrSize</code> - The MBR (Master Boot Record) size in bytes. Data with addresses below than number will be trimmed and not transferred to DFU target.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a></code> - if HEX file is invalid. F.e. there is no semicolon (':') on the beginning of each line.</dd>
<dd><code>java.io.IOException</code> - if the stream is closed or another IOException occurs.</dd></dl>
</li>
</ul>
<a name="HexInputStream(byte[], int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HexInputStream</h4>
<pre>protected&nbsp;HexInputStream(byte[]&nbsp;data,
int&nbsp;mbrSize)
throws <a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a>,
java.io.IOException</pre>
<dl><dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a></code></dd>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="available()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>available</h4>
<pre>public&nbsp;int&nbsp;available()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>available</code>&nbsp;in class&nbsp;<code>java.io.FilterInputStream</code></dd>
</dl>
</li>
</ul>
<a name="readPacket(byte[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readPacket</h4>
<pre>public&nbsp;int&nbsp;readPacket(byte[]&nbsp;buffer)
throws <a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a>,
java.io.IOException</pre>
<div class="block">Fills the buffer with next bytes from the stream.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the size of the buffer</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dd><code><a href="../../../../no/nordicsemi/android/dfu/exception/HexFileValidationException.html" title="class in no.nordicsemi.android.dfu.exception">HexFileValidationException</a></code></dd></dl>
</li>
</ul>
<a name="read()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>read</h4>
<pre>public&nbsp;int&nbsp;read()
throws java.io.IOException</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>read</code>&nbsp;in class&nbsp;<code>java.io.FilterInputStream</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
<a name="read(byte[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>read</h4>
<pre>public&nbsp;int&nbsp;read(byte[]&nbsp;buffer)
throws java.io.IOException</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>read</code>&nbsp;in class&nbsp;<code>java.io.FilterInputStream</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
<a name="read(byte[], int, int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>read</h4>
<pre>public&nbsp;int&nbsp;read(byte[]&nbsp;buffer,
int&nbsp;offset,
int&nbsp;count)
throws java.io.IOException</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>read</code>&nbsp;in class&nbsp;<code>java.io.FilterInputStream</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
<a name="sizeInBytes()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sizeInBytes</h4>
<pre>public&nbsp;int&nbsp;sizeInBytes()</pre>
<div class="block">Returns the total number of bytes.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>total number of bytes available</dd></dl>
</li>
</ul>
<a name="sizeInPackets(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sizeInPackets</h4>
<pre>public&nbsp;int&nbsp;sizeInPackets(int&nbsp;packetSize)
throws java.io.IOException</pre>
<div class="block">Returns the total number of packets with given size that are needed to get all available data</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>packetSize</code> - the maximum packet size</dd>
<dt><span class="strong">Returns:</span></dt><dd>the number of packets needed to get all the content</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
<a name="reset()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>reset</h4>
<pre>public&nbsp;void&nbsp;reset()
throws java.io.IOException</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code>reset</code>&nbsp;in class&nbsp;<code>java.io.FilterInputStream</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../no/nordicsemi/android/dfu/DfuSettingsConstants.html" title="interface in no.nordicsemi.android.dfu"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../no/nordicsemi/android/dfu/R.html" title="class in no.nordicsemi.android.dfu"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?no/nordicsemi/android/dfu/HexInputStream.html" target="_top">Frames</a></li>
<li><a href="HexInputStream.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_java.io.FilterInputStream">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>