public class ArchiveInputStream
extends java.util.zip.ZipInputStream
Reads the firmware files from the a ZIP file. The ZIP file must be either created using the nrf utility tool, available together with Master Control Panel v3.8.0+, or follow the backward compatibility syntax: must contain only files with names: application.hex/bin, softdevice.hex/dat or bootloader.hex/bin, optionally also application.dat and/or system.dat with init packets.
The ArchiveInputStream will read only files with types specified by types parameter of the constructor.
Modifier and Type | Field and Description |
---|---|
static int |
CENATT |
static int |
CENATX |
static int |
CENCOM |
static int |
CENCRC |
static int |
CENDSK |
static int |
CENEXT |
static int |
CENFLG |
static int |
CENHDR |
static int |
CENHOW |
static int |
CENLEN |
static int |
CENNAM |
static int |
CENOFF |
static long |
CENSIG |
static int |
CENSIZ |
static int |
CENTIM |
static int |
CENVEM |
static int |
CENVER |
static int |
ENDCOM |
static int |
ENDHDR |
static int |
ENDOFF |
static long |
ENDSIG |
static int |
ENDSIZ |
static int |
ENDSUB |
static int |
ENDTOT |
static int |
EXTCRC |
static int |
EXTHDR |
static int |
EXTLEN |
static long |
EXTSIG |
static int |
EXTSIZ |
static int |
LOCCRC |
static int |
LOCEXT |
static int |
LOCFLG |
static int |
LOCHDR |
static int |
LOCHOW |
static int |
LOCLEN |
static int |
LOCNAM |
static long |
LOCSIG |
static int |
LOCSIZ |
static int |
LOCTIM |
static int |
LOCVER |
Constructor and Description |
---|
ArchiveInputStream(java.io.InputStream stream,
int mbrSize,
int types)
The ArchiveInputStream read HEX or BIN files from the Zip stream.
|
Modifier and Type | Method and Description |
---|---|
int |
applicationImageSize()
Returns the total size of the Application firmware.
|
int |
available() |
int |
bootloaderImageSize()
Returns the total size of the Bootloader firmware.
|
void |
close() |
byte[] |
getApplicationInit()
Returns the content of the init file for the Application or
null if no application file in the ZIP, or the DAT file is not provided. |
int |
getContentType()
Returns the content type based on the content of the ZIP file.
|
Manifest |
getManifest()
Returns the manifest object if it was specified in the ZIP file.
|
byte[] |
getSystemInit()
Returns the content of the init file for SoftDevice and/or Bootloader.
|
int |
read(byte[] buffer) |
int |
setContentType(int type)
Truncates the current content type.
|
int |
softDeviceImageSize()
Returns the total size of the SoftDevice firmware.
|
closeEntry, createZipEntry, getNextEntry, read, skip
public static final long LOCSIG
public static final long EXTSIG
public static final long CENSIG
public static final long ENDSIG
public static final int LOCHDR
public static final int EXTHDR
public static final int CENHDR
public static final int ENDHDR
public static final int LOCVER
public static final int LOCFLG
public static final int LOCHOW
public static final int LOCTIM
public static final int LOCCRC
public static final int LOCSIZ
public static final int LOCLEN
public static final int LOCNAM
public static final int LOCEXT
public static final int EXTCRC
public static final int EXTSIZ
public static final int EXTLEN
public static final int CENVEM
public static final int CENVER
public static final int CENFLG
public static final int CENHOW
public static final int CENTIM
public static final int CENCRC
public static final int CENSIZ
public static final int CENLEN
public static final int CENNAM
public static final int CENEXT
public static final int CENCOM
public static final int CENDSK
public static final int CENATT
public static final int CENATX
public static final int CENOFF
public static final int ENDSUB
public static final int ENDTOT
public static final int ENDSIZ
public static final int ENDOFF
public static final int ENDCOM
public ArchiveInputStream(java.io.InputStream stream, int mbrSize, int types) throws java.io.IOException
The ArchiveInputStream read HEX or BIN files from the Zip stream. It may skip some of them, depending on the value of the types parameter.
This is useful if the DFU service wants to send the Soft Device and Bootloader only, and then the Application in the following connection, despite
the ZIP file contains all 3 HEX/BIN files.
When types is equal to DfuBaseService.TYPE_AUTO
all present files are read.
Use bit combination of the following types:
stream
- the Zip Input StreammbrSize
- The size of the MRB segment (Master Boot Record) on the device. The parser will cut data from addresses below that number from all HEX files.types
- File types that are to be read from the ZIP. Use DfuBaseService.TYPE_APPLICATION
etc.java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.util.zip.ZipInputStream
java.io.IOException
public int read(byte[] buffer) throws java.io.IOException
read
in class java.io.FilterInputStream
java.io.IOException
public Manifest getManifest()
public int getContentType()
setContentType(int)
.TYPE_SOFT_DEVICE
, TYPE_BOOTLOADER
and TYPE_APPLICATION
public int setContentType(int type)
type
- the new typepublic int available()
available
in class java.util.zip.ZipInputStream
public int softDeviceImageSize()
public int bootloaderImageSize()
public int applicationImageSize()
public byte[] getSystemInit()
null
if there is no SoftDevice nor Bootloader in the ZIP or the DAT file is not present there.public byte[] getApplicationInit()
null
if no application file in the ZIP, or the DAT file is not provided.