Example usage for java.nio ByteOrder BIG_ENDIAN

List of usage examples for java.nio ByteOrder BIG_ENDIAN

Introduction

In this page you can find the example usage for java.nio ByteOrder BIG_ENDIAN.

Prototype

ByteOrder BIG_ENDIAN

To view the source code for java.nio ByteOrder BIG_ENDIAN.

Click Source Link

Document

This constant represents big endian.

Usage

From source file:xbird.util.nio.RemoteMemoryMappedFile.java

private int[] recvResponse(final ReadableByteChannel channel, final ByteBuffer buf, final int dstlen)
        throws IOException {
    buf.clear();//  ww w .j a va2 s . co  m
    // set endian optimized for this machine
    final boolean isBufBigEndian = (buf.order() == ByteOrder.BIG_ENDIAN);
    if (_bigEndian != isBufBigEndian) {
        buf.order(_bigEndian ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN);
    }
    NIOUtils.readFully(channel, buf, _pageSize);
    buf.flip();
    IntBuffer ibuf = buf.asIntBuffer();
    int[] dst = new int[dstlen];
    ibuf.get(dst);
    return dst;
}

From source file:org.openspaces.memcached.protocol.binary.MemcachedBinaryResponseEncoder.java

private ChannelBuffer cork(int opaque, int totalCapacity) {
    if (corkedBuffers.containsKey(opaque)) {
        ChannelBuffer corkedResponse = corkedBuffers.get(opaque);
        ChannelBuffer oldBuffer = corkedResponse;
        corkedResponse = ChannelBuffers.buffer(ByteOrder.BIG_ENDIAN, totalCapacity + corkedResponse.capacity());
        corkedResponse.writeBytes(oldBuffer);
        oldBuffer.clear();//from  www  .j  ava  2  s. c om

        corkedBuffers.remove(opaque);
        corkedBuffers.put(opaque, corkedResponse);
        return corkedResponse;
    }
    ChannelBuffer buffer = ChannelBuffers.buffer(ByteOrder.BIG_ENDIAN, totalCapacity);
    corkedBuffers.put(opaque, buffer);
    return buffer;
}

From source file:ffx.xray.MTZFilter.java

/**
 * {@inheritDoc}/*from w w w  .  ja va  2 s  . c o  m*/
 */
@Override
public boolean readFile(File mtzFile, ReflectionList reflectionlist, DiffractionRefinementData refinementdata,
        CompositeConfiguration properties) {
    int nread, nignore, nres, nfriedel, ncut;
    ByteOrder b = ByteOrder.nativeOrder();
    FileInputStream fis;
    DataInputStream dis;
    boolean transpose = false;

    StringBuilder sb = new StringBuilder();
    //sb.append(String.format("\n Opening %s\n", mtzFile.getName()));
    try {
        fis = new FileInputStream(mtzFile);
        dis = new DataInputStream(fis);

        byte headeroffset[] = new byte[4];
        byte bytes[] = new byte[80];
        int offset = 0;

        // eat "MTZ" title
        dis.read(bytes, offset, 4);
        String mtzstr = new String(bytes);

        // header offset
        dis.read(headeroffset, offset, 4);

        // machine stamp
        dis.read(bytes, offset, 4);
        ByteBuffer bb = ByteBuffer.wrap(bytes);
        int stamp = bb.order(ByteOrder.BIG_ENDIAN).getInt();
        String stampstr = Integer.toHexString(stamp);
        switch (stampstr.charAt(0)) {
        case '1':
        case '3':
            if (b.equals(ByteOrder.LITTLE_ENDIAN)) {
                b = ByteOrder.BIG_ENDIAN;
            }
            break;
        case '4':
            if (b.equals(ByteOrder.BIG_ENDIAN)) {
                b = ByteOrder.LITTLE_ENDIAN;
            }
            break;
        }

        bb = ByteBuffer.wrap(headeroffset);
        int headeroffseti = bb.order(b).getInt();

        // skip to header and parse
        dis.skipBytes((headeroffseti - 4) * 4);

        for (Boolean parsing = true; parsing; dis.read(bytes, offset, 80)) {
            mtzstr = new String(bytes);
            parsing = parseHeader(mtzstr);
        }

        // column identifiers
        foString = sigfoString = rfreeString = null;
        if (properties != null) {
            foString = properties.getString("fostring", null);
            sigfoString = properties.getString("sigfostring", null);
            rfreeString = properties.getString("rfreestring", null);
        }
        h = k = l = fo = sigfo = rfree = -1;
        fplus = sigfplus = fminus = sigfminus = rfreeplus = rfreeminus = -1;
        boolean print = true;
        parseColumns(print);

        if (h < 0 || k < 0 || l < 0) {
            String message = "Fatal error in MTZ file - no H K L indexes?\n";
            logger.log(Level.SEVERE, message);
            return false;
        }

        // reopen to start at beginning
        fis = new FileInputStream(mtzFile);
        dis = new DataInputStream(fis);

        // skip initial header
        dis.skipBytes(80);

        // check if HKLs need to be transposed or not
        float data[] = new float[nColumns];
        HKL mate = new HKL();
        int nposignore = 0;
        int ntransignore = 0;
        int nzero = 0;
        int none = 0;
        for (int i = 0; i < nReflections; i++) {
            for (int j = 0; j < nColumns; j++) {
                dis.read(bytes, offset, 4);
                bb = ByteBuffer.wrap(bytes);
                data[j] = bb.order(b).getFloat();
            }
            int ih = (int) data[h];
            int ik = (int) data[k];
            int il = (int) data[l];
            boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, false);
            HKL hklpos = reflectionlist.getHKL(mate);
            if (hklpos == null) {
                nposignore++;
            }

            friedel = reflectionlist.findSymHKL(ih, ik, il, mate, true);
            HKL hkltrans = reflectionlist.getHKL(mate);
            if (hkltrans == null) {
                ntransignore++;
            }
            if (rfree > 0) {
                if (((int) data[rfree]) == 0) {
                    nzero++;
                } else if (((int) data[rfree]) == 1) {
                    none++;
                }
            }
            if (rfreeplus > 0) {
                if (((int) data[rfreeplus]) == 0) {
                    nzero++;
                } else if (((int) data[rfreeplus]) == 1) {
                    none++;
                }
            }
            if (rfreeminus > 0) {
                if (((int) data[rfreeminus]) == 0) {
                    nzero++;
                } else if (((int) data[rfreeminus]) == 1) {
                    none++;
                }
            }
        }
        if (nposignore > ntransignore) {
            transpose = true;
        }

        if (none > (nzero * 2) && refinementdata.rfreeflag < 0) {
            refinementdata.setFreeRFlag(0);
            sb.append(String.format(" Setting R free flag to %d based on MTZ file data.\n",
                    refinementdata.rfreeflag));
        } else if (nzero > (none * 2) && refinementdata.rfreeflag < 0) {
            refinementdata.setFreeRFlag(1);
            sb.append(String.format(" Setting R free flag to %d based on MTZ file data.\n",
                    refinementdata.rfreeflag));
        } else if (refinementdata.rfreeflag < 0) {
            refinementdata.setFreeRFlag(0);
            sb.append(String.format(" Setting R free flag to MTZ default: %d\n", refinementdata.rfreeflag));
        }

        // reopen to start at beginning
        fis = new FileInputStream(mtzFile);
        dis = new DataInputStream(fis);

        // skip initial header
        dis.skipBytes(80);

        // read in data
        double anofsigf[][] = new double[refinementdata.n][4];
        for (int i = 0; i < refinementdata.n; i++) {
            anofsigf[i][0] = anofsigf[i][1] = anofsigf[i][2] = anofsigf[i][3] = Double.NaN;
        }
        nread = nignore = nres = nfriedel = ncut = 0;
        for (int i = 0; i < nReflections; i++) {
            for (int j = 0; j < nColumns; j++) {
                dis.read(bytes, offset, 4);
                bb = ByteBuffer.wrap(bytes);
                data[j] = bb.order(b).getFloat();
            }
            int ih = (int) data[h];
            int ik = (int) data[k];
            int il = (int) data[l];
            boolean friedel = reflectionlist.findSymHKL(ih, ik, il, mate, transpose);
            HKL hkl = reflectionlist.getHKL(mate);

            if (hkl != null) {
                if (fo > 0 && sigfo > 0) {
                    if (refinementdata.fsigfcutoff > 0.0) {
                        if ((data[fo] / data[sigfo]) < refinementdata.fsigfcutoff) {
                            ncut++;
                            continue;
                        }
                    }
                    if (friedel) {
                        anofsigf[hkl.index()][2] = data[fo];
                        anofsigf[hkl.index()][3] = data[sigfo];
                        nfriedel++;
                    } else {
                        anofsigf[hkl.index()][0] = data[fo];
                        anofsigf[hkl.index()][1] = data[sigfo];
                    }
                } else {
                    if (fplus > 0 && sigfplus > 0) {
                        if (refinementdata.fsigfcutoff > 0.0) {
                            if ((data[fplus] / data[sigfplus]) < refinementdata.fsigfcutoff) {
                                ncut++;
                                continue;
                            }
                        }
                        anofsigf[hkl.index()][0] = data[fplus];
                        anofsigf[hkl.index()][1] = data[sigfplus];
                    }
                    if (fminus > 0 && sigfminus > 0) {
                        if (refinementdata.fsigfcutoff > 0.0) {
                            if ((data[fminus] / data[sigfminus]) < refinementdata.fsigfcutoff) {
                                ncut++;
                                continue;
                            }
                        }
                        anofsigf[hkl.index()][2] = data[fminus];
                        anofsigf[hkl.index()][3] = data[sigfminus];
                    }
                }
                if (rfree > 0) {
                    refinementdata.setFreeR(hkl.index(), (int) data[rfree]);
                } else {
                    if (rfreeplus > 0 && rfreeminus > 0) {
                        // not sure what the correct thing to do here is?
                        refinementdata.setFreeR(hkl.index(), (int) data[rfreeplus]);
                    } else if (rfreeplus > 0) {
                        refinementdata.setFreeR(hkl.index(), (int) data[rfreeplus]);
                    } else if (rfreeminus > 0) {
                        refinementdata.setFreeR(hkl.index(), (int) data[rfreeminus]);
                    }
                }
                nread++;
            } else {
                HKL tmp = new HKL(ih, ik, il);
                if (!reflectionlist.resolution
                        .inInverseResSqRange(Crystal.invressq(reflectionlist.crystal, tmp))) {
                    nres++;
                } else {
                    nignore++;
                }
            }
        }

        // set up fsigf from F+ and F-
        refinementdata.generate_fsigf_from_anofsigf(anofsigf);

        sb.append(String.format(" MTZ file type (machine stamp): %s\n", stampstr));
        sb.append(String.format(" HKL data is %s\n", transpose ? "transposed" : "not transposed"));
        sb.append(String.format(" HKL read in:                             %d\n", nread));
        sb.append(String.format(" HKL read as friedel mates:               %d\n", nfriedel));
        sb.append(String.format(" HKL NOT read in (too high resolution):   %d\n", nres));
        sb.append(String.format(" HKL NOT read in (not in internal list?): %d\n", nignore));
        sb.append(String.format(" HKL NOT read in (F/sigF cutoff):         %d\n", ncut));
        sb.append(
                String.format(" HKL in internal list:                    %d\n", reflectionlist.hkllist.size()));
        if (logger.isLoggable(Level.INFO)) {
            logger.info(sb.toString());
        }

        if (rfree < 0 && rfreeplus < 0 && rfreeminus < 0) {
            refinementdata.generateRFree();
        }
    } catch (EOFException eof) {
        System.out.println("EOF reached ");
        return false;
    } catch (IOException ioe) {
        System.out.println("IO Exception: " + ioe.getMessage());
        return false;
    }

    return true;
}

From source file:com.yobidrive.diskmap.buckets.BucketTableManager.java

private void initializeBucketTableFromLastCommittedBucketFile() throws BucketTableManagerException {
    FileInputStream tableStream = null;
    FileChannel fileChannel = null;
    try {/*from  w w w  .j  a  v a2s.c om*/
        File latestCommittedFile = getLatestCommitedFile();
        if (latestCommittedFile != null) {
            tableStream = new FileInputStream(latestCommittedFile);
            fileChannel = tableStream.getChannel();
            ByteBuffer buffer = ByteBuffer.allocate(HEADERSIZE);
            fileChannel.position(0L);
            int read = fileChannel.read(buffer);
            if (read < HEADERSIZE) {
                fileChannel.close();
                throw new BucketTableManagerException(
                        "Wrong bucket table header size: " + read + "/" + HEADERSIZE);
            }
            // Check content of header. Start with Big Endian (default for Java)
            buffer.rewind();
            byteOrder = ByteOrder.BIG_ENDIAN;
            buffer.order(byteOrder);
            int magic = buffer.getInt();
            if (magic == MAGICSTART_BADENDIAN) {
                byteOrder = ByteOrder.LITTLE_ENDIAN;
                buffer.order(byteOrder);
            } else if (magic != MAGICSTART) {
                fileChannel.close();
                throw new BucketTableManagerException("Bad header in bucket table file");
            }
            // Read number of buckets
            long headerMapSize = buffer.getLong();
            // Read checkPoint
            NeedlePointer includedCheckpoint = new NeedlePointer();
            includedCheckpoint.getNeedlePointerFromBuffer(buffer);
            // Read second magic number
            magic = buffer.getInt();
            if (magic != MAGICEND) {
                fileChannel.close();
                throw new BucketTableManagerException("Bad header in bucket table file");
            }
            // Check number of buckets against requested map size
            if (headerMapSize != mapSize) {
                // Map size does not match
                fileChannel.close();
                throw new BucketTableManagerException(
                        "Requested map size " + mapSize + " does not match header map size " + headerMapSize);
            }
            // Sets initial checkpoint
            bucketTable.setInitialCheckPoint(includedCheckpoint);
            // Now reads all entries
            logger.info("Hot start: loading buckets...");
            for (int i = 0; i < nbBuffers; i++) {
                bucketTable.prepareBufferForReading(i);
                read = fileChannel.read(bucketTable.getBuffer(i));
                if (read < bucketTable.getBuffer(i).limit())
                    throw new BucketTableManagerException("Incomplete bucket table file "
                            + latestCommittedFile.getName() + ", expected " + mapSize + HEADERSIZE);
                //else
                //   logger.info("Hot start: loaded "+(i+1)*entriesPerBuffer+" buckets"+((i<(nbBuffers-1))?"...":"")) ;
            }
            // Checks second magic marker
            buffer = ByteBuffer.allocate(NeedleLogInfo.INFOSIZE);
            buffer.rewind();
            buffer.limit(INTSIZE);
            if (fileChannel.read(buffer) < INTSIZE)
                throw new BucketTableManagerException(
                        "Incomplete bucket table file, missing secong magic number "
                                + latestCommittedFile.getName());
            buffer.rewind();
            magic = buffer.getInt();
            if (magic != MAGICSTART) {
                fileChannel.close();
                throw new BucketTableManagerException("Bad header in bucket table file");
            }
            // Now reads clean counters
            while (true) {
                buffer.rewind();
                buffer.limit(NeedleLogInfo.INFOSIZE);
                read = fileChannel.read(buffer);
                if (read > 0 && read < NeedleLogInfo.INFOSIZE)
                    throw new BucketTableManagerException("Incomplete bucket table file, log info too short "
                            + latestCommittedFile.getName() + ", expected " + mapSize + HEADERSIZE);
                if (read <= 0)
                    break;
                else {
                    NeedleLogInfo nli = new NeedleLogInfo(useAverage);
                    buffer.rewind();
                    nli.getNeedleLogInfo(buffer);
                    logInfoPerLogNumber.put(new Integer(nli.getNeedleFileNumber()), nli);
                }
            }
            logger.info("Hot start: loaded " + (nbBuffers * entriesPerBuffer) + " buckets");

        } else {
            // Empty file
            bucketTable.setInitialCheckPoint(new NeedlePointer());
            bucketTable.format();
        }
    } catch (IOException ie) {
        throw new BucketTableManagerException("Failed initializing bucket table", ie);
    } catch (BufferUnderflowException bue) {
        throw new BucketTableManagerException("Bucket table too short", bue);
    } finally {
        if (fileChannel != null) {
            try {
                fileChannel.close();
            } catch (IOException ex) {
                throw new BucketTableManagerException("Error while closing file channel", ex);
            }
        }
    }
}

From source file:au.org.ala.layers.grid.GridCacheBuilder.java

static void nextRowOfFloats(float[] row, String datatype, boolean byteOrderLSB, int ncols, RandomAccessFile raf,
        byte[] b, float noDataValue) throws IOException {
    int size = 4;
    if (datatype.charAt(0) == 'U') {
        size = 1;//w  w  w  .  ja  v a  2  s.  c o m
    } else if (datatype.charAt(0) == 'B') {
        size = 1;
    } else if (datatype.charAt(0) == 'S') {
        size = 2;
    } else if (datatype.charAt(0) == 'I') {
        size = 4;
    } else if (datatype.charAt(0) == 'L') {
        size = 8;
    } else if (datatype.charAt(0) == 'F') {
        size = 4;
    } else if (datatype.charAt(0) == 'D') {
        size = 8;
    }

    raf.read(b, 0, size * ncols);
    ByteBuffer bb = ByteBuffer.wrap(b);
    if (byteOrderLSB) {
        bb.order(ByteOrder.LITTLE_ENDIAN);
    } else {
        bb.order(ByteOrder.BIG_ENDIAN);
    }

    int i;
    int length = ncols;
    if (datatype.charAt(0) == 'U') {
        for (i = 0; i < length; i++) {
            float ret = bb.get();
            if (ret < 0) {
                ret += 256;
            }
            row[i] = ret;
        }
    } else if (datatype.charAt(0) == 'B') {

        for (i = 0; i < length; i++) {
            row[i] = (float) bb.get();
        }
    } else if (datatype.charAt(0) == 'S') {
        for (i = 0; i < length; i++) {
            row[i] = (float) bb.getShort();
        }
    } else if (datatype.charAt(0) == 'I') {
        for (i = 0; i < length; i++) {
            row[i] = (float) bb.getInt();
        }
    } else if (datatype.charAt(0) == 'L') {
        for (i = 0; i < length; i++) {
            row[i] = (float) bb.getLong();
        }
    } else if (datatype.charAt(0) == 'F') {
        for (i = 0; i < length; i++) {
            row[i] = (float) bb.getFloat();
        }
    } else if (datatype.charAt(0) == 'D') {
        for (i = 0; i < length; i++) {
            row[i] = (float) bb.getDouble();
        }
    } else {
        logger.info("UNKNOWN TYPE: " + datatype);
    }

    for (i = 0; i < length; i++) {
        if (row[i] == noDataValue) {
            row[i] = Float.NaN;
        }
    }
}

From source file:ffx.xray.parsers.MTZFilter.java

/**
 * {@inheritDoc}/*from www .jav  a 2s . co m*/
 */
@Override
public boolean readFile(File mtzFile, ReflectionList reflectionList, DiffractionRefinementData refinementData,
        CompositeConfiguration properties) {
    int nRead, nIgnore, nRes, nFriedel, nCut;
    ByteOrder byteOrder = ByteOrder.nativeOrder();
    FileInputStream fileInputStream;
    DataInputStream dataInputStream;
    boolean transpose = false;

    StringBuilder sb = new StringBuilder();
    try {
        fileInputStream = new FileInputStream(mtzFile);
        dataInputStream = new DataInputStream(fileInputStream);

        byte headerOffset[] = new byte[4];
        byte bytes[] = new byte[80];
        int offset = 0;

        // Eat "MTZ" title.
        dataInputStream.read(bytes, offset, 4);
        String mtzstr = null;

        // Header offset.
        dataInputStream.read(headerOffset, offset, 4);

        // Machine stamp.
        dataInputStream.read(bytes, offset, 4);
        ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
        int stamp = byteBuffer.order(ByteOrder.BIG_ENDIAN).getInt();
        String stampString = Integer.toHexString(stamp);
        switch (stampString.charAt(0)) {
        case '1':
        case '3':
            if (byteOrder.equals(ByteOrder.LITTLE_ENDIAN)) {
                byteOrder = ByteOrder.BIG_ENDIAN;
            }
            break;
        case '4':
            if (byteOrder.equals(ByteOrder.BIG_ENDIAN)) {
                byteOrder = ByteOrder.LITTLE_ENDIAN;
            }
            break;
        }

        byteBuffer = ByteBuffer.wrap(headerOffset);
        int headerOffsetI = byteBuffer.order(byteOrder).getInt();

        // skip to header and parse
        dataInputStream.skipBytes((headerOffsetI - 4) * 4);

        for (Boolean parsing = true; parsing; dataInputStream.read(bytes, offset, 80)) {
            mtzstr = new String(bytes);
            parsing = parseHeader(mtzstr);
        }

        // column identifiers
        foString = sigFoString = rFreeString = null;
        if (properties != null) {
            foString = properties.getString("fostring", null);
            sigFoString = properties.getString("sigfostring", null);
            rFreeString = properties.getString("rfreestring", null);
        }
        h = k = l = fo = sigFo = rFree = -1;
        fPlus = sigFPlus = fMinus = sigFMinus = rFreePlus = rFreeMinus = -1;
        boolean print = true;
        parseColumns(print);

        if (h < 0 || k < 0 || l < 0) {
            String message = "Fatal error in MTZ file - no H K L indexes?\n";
            logger.log(Level.SEVERE, message);
            return false;
        }

        // Reopen to start at beginning.
        fileInputStream = new FileInputStream(mtzFile);
        dataInputStream = new DataInputStream(fileInputStream);

        // Skip initial header.
        dataInputStream.skipBytes(80);

        // Check if HKLs need to be transposed or not.
        float data[] = new float[nColumns];
        HKL mate = new HKL();
        int nPosIgnore = 0;
        int nTransIgnore = 0;
        int nZero = 0;
        int none = 0;
        for (int i = 0; i < nReflections; i++) {
            for (int j = 0; j < nColumns; j++) {
                dataInputStream.read(bytes, offset, 4);
                byteBuffer = ByteBuffer.wrap(bytes);
                data[j] = byteBuffer.order(byteOrder).getFloat();
            }
            int ih = (int) data[h];
            int ik = (int) data[k];
            int il = (int) data[l];
            boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, false);
            HKL hklpos = reflectionList.getHKL(mate);
            if (hklpos == null) {
                nPosIgnore++;
            }

            friedel = reflectionList.findSymHKL(ih, ik, il, mate, true);
            HKL hkltrans = reflectionList.getHKL(mate);
            if (hkltrans == null) {
                nTransIgnore++;
            }
            if (rFree > 0) {
                if (((int) data[rFree]) == 0) {
                    nZero++;
                } else if (((int) data[rFree]) == 1) {
                    none++;
                }
            }
            if (rFreePlus > 0) {
                if (((int) data[rFreePlus]) == 0) {
                    nZero++;
                } else if (((int) data[rFreePlus]) == 1) {
                    none++;
                }
            }
            if (rFreeMinus > 0) {
                if (((int) data[rFreeMinus]) == 0) {
                    nZero++;
                } else if (((int) data[rFreeMinus]) == 1) {
                    none++;
                }
            }
        }
        if (nPosIgnore > nTransIgnore) {
            transpose = true;
        }

        if (none > (nZero * 2) && refinementData.rfreeflag < 0) {
            refinementData.setFreeRFlag(0);
            sb.append(format(" Setting R free flag to %d based on MTZ file data.\n", refinementData.rfreeflag));
        } else if (nZero > (none * 2) && refinementData.rfreeflag < 0) {
            refinementData.setFreeRFlag(1);
            sb.append(format(" Setting R free flag to %d based on MTZ file data.\n", refinementData.rfreeflag));
        } else if (refinementData.rfreeflag < 0) {
            refinementData.setFreeRFlag(0);
            sb.append(format(" Setting R free flag to MTZ default: %d\n", refinementData.rfreeflag));
        }

        // reopen to start at beginning
        fileInputStream = new FileInputStream(mtzFile);
        dataInputStream = new DataInputStream(fileInputStream);

        // skip initial header
        dataInputStream.skipBytes(80);

        // read in data
        double anofSigF[][] = new double[refinementData.n][4];
        for (int i = 0; i < refinementData.n; i++) {
            anofSigF[i][0] = anofSigF[i][1] = anofSigF[i][2] = anofSigF[i][3] = Double.NaN;
        }
        nRead = nIgnore = nRes = nFriedel = nCut = 0;
        for (int i = 0; i < nReflections; i++) {
            for (int j = 0; j < nColumns; j++) {
                dataInputStream.read(bytes, offset, 4);
                byteBuffer = ByteBuffer.wrap(bytes);
                data[j] = byteBuffer.order(byteOrder).getFloat();
            }
            int ih = (int) data[h];
            int ik = (int) data[k];
            int il = (int) data[l];
            boolean friedel = reflectionList.findSymHKL(ih, ik, il, mate, transpose);
            HKL hkl = reflectionList.getHKL(mate);
            if (hkl != null) {
                if (fo > 0 && sigFo > 0) {
                    if (refinementData.fsigfcutoff > 0.0) {
                        if ((data[fo] / data[sigFo]) < refinementData.fsigfcutoff) {
                            nCut++;
                            continue;
                        }
                    }
                    if (friedel) {
                        anofSigF[hkl.index()][2] = data[fo];
                        anofSigF[hkl.index()][3] = data[sigFo];
                        nFriedel++;
                    } else {
                        anofSigF[hkl.index()][0] = data[fo];
                        anofSigF[hkl.index()][1] = data[sigFo];
                    }
                } else {
                    if (fPlus > 0 && sigFPlus > 0) {
                        if (refinementData.fsigfcutoff > 0.0) {
                            if ((data[fPlus] / data[sigFPlus]) < refinementData.fsigfcutoff) {
                                nCut++;
                                continue;
                            }
                        }
                        anofSigF[hkl.index()][0] = data[fPlus];
                        anofSigF[hkl.index()][1] = data[sigFPlus];
                    }
                    if (fMinus > 0 && sigFMinus > 0) {
                        if (refinementData.fsigfcutoff > 0.0) {
                            if ((data[fMinus] / data[sigFMinus]) < refinementData.fsigfcutoff) {
                                nCut++;
                                continue;
                            }
                        }
                        anofSigF[hkl.index()][2] = data[fMinus];
                        anofSigF[hkl.index()][3] = data[sigFMinus];
                    }
                }
                if (rFree > 0) {
                    refinementData.setFreeR(hkl.index(), (int) data[rFree]);
                } else {
                    if (rFreePlus > 0 && rFreeMinus > 0) {
                        // not sure what the correct thing to do here is?
                        refinementData.setFreeR(hkl.index(), (int) data[rFreePlus]);
                    } else if (rFreePlus > 0) {
                        refinementData.setFreeR(hkl.index(), (int) data[rFreePlus]);
                    } else if (rFreeMinus > 0) {
                        refinementData.setFreeR(hkl.index(), (int) data[rFreeMinus]);
                    }
                }
                nRead++;
            } else {
                HKL tmp = new HKL(ih, ik, il);
                if (!reflectionList.resolution
                        .inInverseResSqRange(Crystal.invressq(reflectionList.crystal, tmp))) {
                    nRes++;
                } else {
                    nIgnore++;
                }
            }
        }

        // Set up fsigf from F+ and F-.
        refinementData.generate_fsigf_from_anofsigf(anofSigF);

        // Log results.
        if (logger.isLoggable(Level.INFO)) {
            sb.append(format(" MTZ file type (machine stamp): %s\n", stampString));
            sb.append(format(" HKL data is %s\n", transpose ? "transposed" : "not transposed"));
            sb.append(format(" HKL read in:                             %d\n", nRead));
            sb.append(format(" HKL read as friedel mates:               %d\n", nFriedel));
            sb.append(format(" HKL NOT read in (too high resolution):   %d\n", nRes));
            sb.append(format(" HKL NOT read in (not in internal list?): %d\n", nIgnore));
            sb.append(format(" HKL NOT read in (F/sigF cutoff):         %d\n", nCut));
            sb.append(format(" HKL in internal list:                    %d\n", reflectionList.hkllist.size()));
            logger.info(sb.toString());
        }
        if (rFree < 0 && rFreePlus < 0 && rFreeMinus < 0) {
            refinementData.generateRFree();
        }
    } catch (EOFException e) {
        String message = " MTZ end of file reached.";
        logger.log(Level.WARNING, message, e);
        return false;
    } catch (IOException e) {
        String message = " MTZ IO Exception.";
        logger.log(Level.WARNING, message, e);
        return false;
    }

    return true;
}

From source file:nl.salp.warcraft4j.casc.cdn.EncodingFileParser.java

private EncodingFileSegment parseSegment(DataReader reader)
        throws DataReadingException, DataParsingException, CascParsingException {
    long segmentStart = reader.position();
    byte[] segmentChecksum = MD5.hash(reader.readNext(DataTypeFactory.getByteArray(SEGMENT_SIZE)));
    LOGGER.trace(/*w w w . j av a 2  s .  c  om*/
            "Calculated checksum {} over {} byte segment from position {} to {}, reading entries from position {}",
            byteArrayToHexString(segmentChecksum), SEGMENT_SIZE, segmentStart, reader.position(), segmentStart);
    reader.position(segmentStart);
    List<EncodingEntry> entries = new ArrayList<>();

    int keyCount;

    while ((keyCount = reader.readNext(DataTypeFactory.getUnsignedShort(), ByteOrder.LITTLE_ENDIAN)) != 0) {
        long fileSize = reader.readNext(DataTypeFactory.getUnsignedInteger(), ByteOrder.BIG_ENDIAN);
        byte[] checksum = reader.readNext(DataTypeFactory.getByteArray(CHECKSUM_SIZE));

        List<FileKey> keys = new ArrayList<>();
        for (int keyIndex = 0; keyIndex < keyCount; keyIndex++) {
            byte[] key = reader.readNext(DataTypeFactory.getByteArray(CHECKSUM_SIZE));
            keys.add(new FileKey(key));
        }
        EncodingEntry entry = new CascEncodingEntry(fileSize, new ContentChecksum(checksum), keys);
        entries.add(entry);
    }
    while (reader.hasRemaining() && reader.peek(DataTypeFactory.getByte()) == 0) {
        reader.skip(1);
    }
    return new EncodingFileSegment(entries, segmentChecksum);
}

From source file:ubic.gemma.core.loader.expression.arrayDesign.AffyChipTypeExtractor.java

private static int readIntBigEndian(DataInputStream dis) throws IOException {
    byte[] buf = new byte[4];

    for (int i = 0; i < buf.length; i++) {
        buf[i] = dis.readByte();//from   ww w. j av a 2  s  . com
    }

    return ByteBuffer.wrap(buf).order(ByteOrder.BIG_ENDIAN).getInt();
}

From source file:ar.com.qbe.siniestros.model.utils.MimeMagic.MagicMatcher.java

/**
 * internal test switch//from   w w w .j  a  v  a 2 s .  c o  m
 * 
 * @param data DOCUMENT ME!
 * @return DOCUMENT ME!
 */
private boolean testInternal(byte[] data) {
    log.debug("testInternal(byte[])");

    if (data.length == 0) {
        return false;
    }

    String type = match.getType();
    String test = new String(match.getTest().array());
    String mimeType = match.getMimeType();
    String description = match.getDescription();

    ByteBuffer buffer = ByteBuffer.allocate(data.length);

    if ((type != null) && (test != null) && (test.length() > 0)) {
        if (type.equals("string")) {
            buffer = buffer.put(data);

            return testString(buffer);
        } else if (type.equals("byte")) {
            buffer = buffer.put(data);

            return testByte(buffer);
        } else if (type.equals("short")) {
            buffer = buffer.put(data);

            return testShort(buffer);
        } else if (type.equals("leshort")) {
            buffer = buffer.put(data);
            buffer.order(ByteOrder.LITTLE_ENDIAN);

            return testShort(buffer);
        } else if (type.equals("beshort")) {
            buffer = buffer.put(data);
            buffer.order(ByteOrder.BIG_ENDIAN);

            return testShort(buffer);
        } else if (type.equals("long")) {
            buffer = buffer.put(data);

            return testLong(buffer);
        } else if (type.equals("lelong")) {
            buffer = buffer.put(data);
            buffer.order(ByteOrder.LITTLE_ENDIAN);

            return testLong(buffer);
        } else if (type.equals("belong")) {
            buffer = buffer.put(data);
            buffer.order(ByteOrder.BIG_ENDIAN);

            return testLong(buffer);
        } else if (type.equals("regex")) {
            return testRegex(new String(data));
        } else if (type.equals("detector")) {
            buffer = buffer.put(data);

            return testDetector(buffer);

            //         } else if (type.equals("date")) {
            //            return testDate(data, BIG_ENDIAN);
            //         } else if (type.equals("ledate")) {
            //            return testDate(data, LITTLE_ENDIAN);
            //         } else if (type.equals("bedate")) {
            //            return testDate(data, BIG_ENDIAN);
        } else {
            log.error("testInternal(byte[]): invalid test type '" + type + "'");
        }
    } else {
        log.error("testInternal(byte[]): type or test is empty for '" + mimeType + " - " + description + "'");
    }

    return false;
}

From source file:org.energy_home.jemma.javagal.layers.data.implementations.IDataLayerImplementation.DataFreescale.java

public void processMessages() throws Exception {
    // Look on received messages
    int _size = 0;
    synchronized (this) {
        _size = messages.size();/*from   ww w.j  a  va 2s . co  m*/
    }

    while (_size > 0) {
        short[] message = null;
        synchronized (this) {
            message = messages.remove(0);
        }

        ByteBuffer bb = ByteBuffer.allocate(2);
        bb.order(ByteOrder.BIG_ENDIAN);
        bb.put((byte) message[0]);
        bb.put((byte) message[1]);
        short _command = bb.getShort(0);

        /* APSDE-DATA.Indication */
        if (_command == FreescaleConstants.APSDEDataIndication) {
            final APSMessageEvent messageEvent = new APSMessageEvent();
            short destAddressMode = message[3];
            messageEvent.setDestinationAddressMode((long) destAddressMode);
            BigInteger _ieee = null;
            Address address = new Address();
            switch (destAddressMode) {
            case 0x00:
                // Reserved (No source address supplied)
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Message Discarded: found reserved 0x00 as Destination Address Mode ");
                } // Error found, we don't proceed and discard the
                  // message
                return;
            case 0x01:
                // Value16bitgroupfordstAddr (DstEndpoint not
                // present)
                // No destination end point (so FF broadcast),
                // present
                // short
                // address on 2 bytes
                address.setNetworkAddress(
                        DataManipulation.toIntFromShort((byte) message[5], (byte) message[4]));

                _ieee = gal.getIeeeAddress_FromNetworkCache(address.getNetworkAddress());
                if (_ieee != null)
                    address.setIeeeAddress(_ieee);

                messageEvent.setDestinationAddress(address);
                messageEvent.setDestinationEndpoint((short) 0xff);

                break;
            case 0x02:
                // Value16bitAddrandDstEndpoint (16 bit address
                // supplied)
                address.setNetworkAddress(
                        DataManipulation.toIntFromShort((byte) message[5], (byte) message[4]));
                _ieee = gal.getIeeeAddress_FromNetworkCache(address.getNetworkAddress());
                if (_ieee != null)
                    address.setIeeeAddress(_ieee);

                messageEvent.setDestinationAddress(address);
                messageEvent.setDestinationEndpoint(message[6]);
                break;
            default:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.error("Message Discarded: not valid Destination Address Mode");
                }
                // Error found, we don't proceed and discard the
                // message
                return;
            }
            messageEvent.setSourceAddressMode((long) message[7]);
            address = new Address();
            address.setNetworkAddress(DataManipulation.toIntFromShort((byte) message[9], (byte) message[8]));
            _ieee = gal.getIeeeAddress_FromNetworkCache(address.getNetworkAddress());
            if (_ieee != null)
                address.setIeeeAddress(_ieee);
            messageEvent.setSourceAddress(address);
            messageEvent.setSourceEndpoint(message[10]);
            messageEvent.setProfileID(DataManipulation.toIntFromShort((byte) message[12], (byte) message[11]));
            messageEvent.setClusterID(DataManipulation.toIntFromShort((byte) message[14], (byte) message[13]));

            if (gal.getGatewayStatus() == GatewayStatus.GW_RUNNING && gal.get_GalNode() != null) {
                /* Update The Node Data */

                int _indexOnCache = -1;
                _indexOnCache = gal.existIntoNetworkCache(address.getNetworkAddress());
                if (_indexOnCache != -1) {
                    /* The node is already into the DB */
                    if (gal.getPropertiesManager().getKeepAliveThreshold() > 0) {
                        if (!gal.getNetworkcache().get(_indexOnCache).isSleepy()) {
                            gal.getNetworkcache().get(_indexOnCache).reset_numberOfAttempt();
                            gal.getNetworkcache().get(_indexOnCache)
                                    .setTimerFreshness(gal.getPropertiesManager().getKeepAliveThreshold());
                            if (gal.getPropertiesManager().getDebugEnabled()) {
                                //System.out.println("\n\rPostponing  timer Freshness by Aps.Indication for node:" + gal.getNetworkcache().get(_indexOnCache).get_node().getAddress().getNetworkAddress() + "\n\r");
                                logger.info("Postponing  timer Freshness by Aps.Indication for node:"
                                        + gal.getNetworkcache().get(_indexOnCache).get_node().getAddress()
                                                .getNetworkAddress());
                            }
                        }

                    }
                } else {
                    // 0x8034 is a LeaveAnnouncement, 0x0013 is a
                    // DeviceAnnouncement, 0x8001 is a IEEE_Addr_Rsp
                    if ((gal.getPropertiesManager().getAutoDiscoveryUnknownNodes() > 0)
                            && (!(messageEvent.getProfileID() == 0x0000
                                    && (messageEvent.getClusterID() == 0x0013
                                            || messageEvent.getClusterID() == 0x8034
                                            || messageEvent.getClusterID() == 0x8001)))) {

                        if (address.getNetworkAddress() != gal.get_GalNode().get_node().getAddress()
                                .getNetworkAddress()) {
                            Runnable thr = new MyThread(address) {
                                @Override
                                public void run() {
                                    Address _address = (Address) this.getParameter();
                                    int _indexOnCache = -1;
                                    _indexOnCache = gal.existIntoNetworkCache(_address.getNetworkAddress());
                                    if (_indexOnCache == -1) {

                                        if (gal.getPropertiesManager().getDebugEnabled()) {
                                            //System.out.println("\n\rAutoDiscoveryUnknownNodes procedure of Node:" + messageEvent.getSourceAddress().getNetworkAddress() + "\n\r");

                                            logger.info("AutoDiscoveryUnknownNodes procedure of Node:"
                                                    + messageEvent.getSourceAddress().getNetworkAddress());
                                        }
                                        try {

                                            // Insert the node into cache,
                                            // but with the
                                            // discovery_completed flag a
                                            // false
                                            BigInteger ieee = null;
                                            WrapperWSNNode o = new WrapperWSNNode(gal);
                                            WSNNode _newNode = new WSNNode();
                                            o.set_discoveryCompleted(false);
                                            _newNode.setAddress(_address);
                                            o.set_node(_newNode);
                                            gal.getNetworkcache().add(o);

                                            Thread.sleep(500);
                                            /*
                                             * Reading the IEEEAddress of
                                             * the new node
                                             */

                                            if (gal.getPropertiesManager().getDebugEnabled())
                                                logger.info(
                                                        "Sending IeeeReq to:" + _address.getNetworkAddress());
                                            System.out.println(
                                                    "Sending IeeeReq to:" + _address.getNetworkAddress());
                                            ieee = readExtAddress(INTERNAL_TIMEOUT,
                                                    _address.getNetworkAddress().shortValue());
                                            _address.setIeeeAddress(ieee);
                                            if (gal.getPropertiesManager().getDebugEnabled()) {
                                                logger.info("Readed Ieee of the new node:"
                                                        + _address.getNetworkAddress() + " Ieee: "
                                                        + ieee.toString());
                                                System.out.println("Readed Ieee of the new node:"
                                                        + _address.getNetworkAddress() + " Ieee: "
                                                        + ieee.toString());

                                            }
                                            if (gal.getPropertiesManager().getDebugEnabled())
                                                logger.info("Sending NodeDescriptorReq to:"
                                                        + _address.getNetworkAddress());
                                            NodeDescriptor _ndesc = getNodeDescriptorSync(INTERNAL_TIMEOUT,
                                                    _address);
                                            _newNode.setCapabilityInformation(_ndesc.getMACCapabilityFlag());

                                            if (gal.getPropertiesManager().getDebugEnabled()) {
                                                logger.info("Readed NodeDescriptor of the new node:"
                                                        + _address.getNetworkAddress());
                                                System.out.println("Readed NodeDescriptor of the new node:"
                                                        + _address.getNetworkAddress());

                                            }

                                            o.reset_numberOfAttempt();
                                            o.set_discoveryCompleted(true);
                                            if (!o.isSleepy()) {

                                                if (gal.getPropertiesManager().getKeepAliveThreshold() > 0) {
                                                    o.setTimerFreshness(
                                                            gal.getPropertiesManager().getKeepAliveThreshold());
                                                }
                                                if (gal.getPropertiesManager().getForcePingTimeout() > 0) {
                                                    o.setTimerForcePing(
                                                            gal.getPropertiesManager().getForcePingTimeout());
                                                }
                                            }

                                            _indexOnCache = gal.existIntoNetworkCache(
                                                    _newNode.getAddress().getNetworkAddress());
                                            if (_indexOnCache > -1) {
                                                gal.getNetworkcache().remove(_indexOnCache);

                                            }

                                            // Updating the node
                                            // informations
                                            gal.getNetworkcache().add(o);
                                            o.set_discoveryCompleted(true);
                                            Status _st = new Status();
                                            _st.setCode((short) GatewayConstants.SUCCESS);
                                            gal.get_gatewayEventManager().nodeDiscovered(_st, _newNode);

                                        } catch (GatewayException e) {
                                            logger.error("Error on getAutoDiscoveryUnknownNodes for node:"
                                                    + _address.getNetworkAddress() + " Error:"
                                                    + e.getMessage());

                                            System.out.println("Error on getAutoDiscoveryUnknownNodes for node:"
                                                    + _address.getNetworkAddress() + " Error:"
                                                    + e.getMessage());

                                            _indexOnCache = gal
                                                    .existIntoNetworkCache(_address.getNetworkAddress());
                                            if (_indexOnCache > -1) {
                                                gal.getNetworkcache().get(_indexOnCache).abortTimers();
                                                gal.getNetworkcache().remove(_indexOnCache);
                                            }

                                        } catch (Exception e) {
                                            logger.error("Error on getAutoDiscoveryUnknownNodes for node:"
                                                    + _address.getNetworkAddress() + " Error:"
                                                    + e.getMessage());
                                            System.out.println("Error on getAutoDiscoveryUnknownNodes for node:"
                                                    + _address.getNetworkAddress() + " Error:"
                                                    + e.getMessage());
                                            _indexOnCache = gal
                                                    .existIntoNetworkCache(_address.getNetworkAddress());
                                            if (_indexOnCache > -1) {
                                                gal.getNetworkcache().get(_indexOnCache).abortTimers();
                                                gal.getNetworkcache().remove(_indexOnCache);

                                            }

                                        }
                                    }
                                }
                            };

                            Thread _thr0 = new Thread(thr);
                            _thr0.setName("Thread getAutoDiscoveryUnknownNodes:" + address.getNetworkAddress());
                            _thr0.start();
                        }
                    }
                }

            }
            int lastAsdu = 16 + message[15] - 1;

            messageEvent.setData(DataManipulation.subByteArray(message, 16, lastAsdu));
            messageEvent.setAPSStatus(message[lastAsdu + 1]);
            // ASK Jump WasBroadcast
            // Security Status
            switch (message[lastAsdu + 3]) {
            case 0x00:
                messageEvent.setSecurityStatus(SecurityStatus.UNSECURED);
                break;
            case 0x01:
                messageEvent.setSecurityStatus(SecurityStatus.SECURED_NWK_KEY);
                break;
            case 0x02:
                messageEvent.setSecurityStatus(SecurityStatus.SECURED_LINK_KEY);
                break;
            // ASK 0x03 not present on telecomitalia object
            default:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Message Discarded: not valid Security Status");
                }
                // Error found, we don't proceed and discard the
                // message
                return;
            }
            messageEvent.setLinkQuality(message[lastAsdu + 4]);
            messageEvent.setRxTime((long) DataManipulation.toIntFromShort((byte) message[(lastAsdu + 8)],
                    (byte) message[(lastAsdu + 5)]));
            // ASK: jumped iMsgType, pNext, iDataSize, pData,
            // iBufferNumber
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APSDE-DATA.Indication", message);
            if ((messageEvent.getDestinationAddressMode() == GatewayConstants.ADDRESS_MODE_SHORT)
                    && (messageEvent.getDestinationAddress().getIeeeAddress() == null))
                messageEvent.getDestinationAddress().setIeeeAddress(gal.getIeeeAddress_FromNetworkCache(
                        messageEvent.getDestinationAddress().getNetworkAddress()));

            if ((messageEvent.getDestinationAddressMode() == GatewayConstants.EXTENDED_ADDRESS_MODE)
                    && (messageEvent.getDestinationAddress().getNetworkAddress() == null))
                messageEvent.getDestinationAddress().setNetworkAddress(gal.getShortAddress_FromNetworkCache(
                        messageEvent.getDestinationAddress().getIeeeAddress()));

            if ((messageEvent.getSourceAddressMode() == GatewayConstants.ADDRESS_MODE_SHORT)
                    && (messageEvent.getDestinationAddress().getIeeeAddress() == null))
                messageEvent.getSourceAddress().setIeeeAddress(gal
                        .getIeeeAddress_FromNetworkCache(messageEvent.getSourceAddress().getNetworkAddress()));

            if ((messageEvent.getSourceAddressMode() == GatewayConstants.EXTENDED_ADDRESS_MODE)
                    && (messageEvent.getDestinationAddress().getNetworkAddress() == null))
                messageEvent.getSourceAddress().setNetworkAddress(
                        gal.getShortAddress_FromNetworkCache(messageEvent.getSourceAddress().getIeeeAddress()));

            if (messageEvent.getProfileID().equals(0)) {/*
                                                        * ZDO Command
                                                        */
                if (messageEvent.getClusterID() == 0x8031) {
                    String __key = "";
                    __key = String.format("%04X", messageEvent.getSourceAddress().getNetworkAddress());
                    synchronized (listLocker) {
                        for (ParserLocker pl : listLocker) {
                            if ((pl.getType() == TypeMessage.LQI_REQ) && __key.equalsIgnoreCase(pl.get_Key())) {
                                synchronized (pl) {
                                    pl.getStatus().setCode((short) messageEvent.getAPSStatus());
                                    Mgmt_LQI_rsp _res = new Mgmt_LQI_rsp(messageEvent.getData());
                                    pl.set_objectOfResponse(_res);
                                    pl.notify();
                                }
                                break;
                            }
                        }
                    }
                }
                // profileid == 0
                gal.getZdoManager().ZDOMessageIndication(messageEvent);
            } else {
                // profileid > 0
                ZCLMessage _zm = new ZCLMessage();
                _zm.setAPSStatus(messageEvent.getAPSStatus());
                _zm.setClusterID(messageEvent.getClusterID());
                _zm.setDestinationEndpoint(messageEvent.getDestinationEndpoint());
                _zm.setProfileID(messageEvent.getProfileID());
                _zm.setRxTime(messageEvent.getRxTime());
                _zm.setSourceAddress(messageEvent.getSourceAddress());
                _zm.setSourceAddressMode(messageEvent.getSourceAddressMode());
                _zm.setSourceEndpoint(messageEvent.getSourceEndpoint());

                byte[] data = messageEvent.getData();
                // ZCL Header
                // Frame control 8bit
                // Manufacturer code 0/16bits
                // Transaction sequence number 8bit
                // Command identifier 8 bit
                ByteArrayObject _header = new ByteArrayObject();
                ByteArrayObject _payload = new ByteArrayObject();
                if ((data[0] & 0x04) == 1)/* Check manufacturer code */
                {
                    _header.addByte(data[0]);// Frame control
                    _header.addByte(data[1]);// Manufacturer Code(1/2)
                    _header.addByte(data[2]);// Manufacturer Code(2/2)
                    _header.addByte(data[3]);// Transaction sequence number
                    _header.addByte(data[4]);// Command Identifier
                    for (int i = 5; i < data.length; i++)
                        _payload.addByte(data[i]);
                } else {
                    _header.addByte(data[0]);// Frame control
                    _header.addByte(data[1]);// Transaction sequence number
                    _header.addByte(data[2]);// Command Identifier
                    for (int i = 3; i < data.length; i++)
                        _payload.addByte(data[i]);
                }

                _zm.setZCLHeader(_header.getRealByteArray());
                _zm.setZCLPayload(_payload.getRealByteArray());
                gal.get_gatewayEventManager().notifyZCLCommand(_zm);
                gal.getApsManager().APSMessageIndication(messageEvent);

            }
        }

        /* APSDE-DATA.Confirm */
        else if (_command == FreescaleConstants.APSDEDataConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APSDE-DATA.Confirm", message);

            /* DestAddress + DestEndPoint + SourceEndPoint */
            long destAddress = DataManipulation.toLong((byte) message[11], (byte) message[10],
                    (byte) message[9], (byte) message[8], (byte) message[7], (byte) message[6],
                    (byte) message[5], (byte) message[4]);
            byte destEndPoint = (byte) message[12];
            byte sourceEndPoint = (byte) message[13];
            String Key = String.format("%016X", destAddress) + String.format("%02X", destEndPoint)
                    + String.format("%02X", sourceEndPoint);

            // Found APSDE-DATA.Confirm. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    /* DestAddress + DestEndPoint + SourceEndPoint */
                    /*
                     * if (gal.getPropertiesManager().getDebugEnabled())
                     * logger.info("APSDE-DATA.Confirm KEY SEND: " +
                     * pl.get_Key() + " -- KEY Received: " + Key);
                     */
                    if ((pl.getType() == TypeMessage.APS) && pl.get_Key().equalsIgnoreCase(Key)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[14]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }

        /* ZTC-Error.event */
        else if (_command == FreescaleConstants.ZTCErrorevent) {

            byte len = (byte) message[2];
            String MessageStatus = "";
            if (len > 0) {
                int status = message[3];
                switch (status) {
                case 0x00:
                    MessageStatus = "0x00: gSuccess_c (Should not be seen in this event.)";
                    break;
                case 0xF4:
                    MessageStatus = "0xF4: gZtcOutOfMessages_c (ZTC tried to allocate a message, but the allocation failed.)";
                    break;
                case 0xF5:
                    MessageStatus = "0xF5: gZtcEndPointTableIsFull_c (Self explanatory.)";
                    break;
                case 0xF6:
                    MessageStatus = "0xF6: gZtcEndPointNotFound_c (Self explanatory.)";
                    break;
                case 0xF7:
                    MessageStatus = "0xF7: gZtcUnknownOpcodeGroup_c (ZTC does not recognize the opcode group, and there is no application hook.)";
                    break;
                case 0xF8:
                    MessageStatus = "0xF8: gZtcOpcodeGroupIsDisabled_c (ZTC support for an opcode group is turned off by a compile option.)";
                    break;
                case 0xF9:
                    MessageStatus = "0xF9: gZtcDebugPrintFailed_c (An attempt to print a debug message ran out of buffer space.)";
                    break;
                case 0xFA:
                    MessageStatus = "0xFA: gZtcReadOnly_c (Attempt to set read-only data.)";
                    break;
                case 0xFB:
                    MessageStatus = "0xFB: gZtcUnknownIBIdentifier_c (Self explanatory.)";
                    break;
                case 0xFC:
                    MessageStatus = "0xFC: gZtcRequestIsDisabled_c (ZTC support for an opcode is turned off by a compile option.)";
                    break;
                case 0xFD:
                    MessageStatus = "0xFD: gZtcUnknownOpcode_c (Self expanatory.)";
                    break;
                case 0xFE:
                    MessageStatus = "0xFE: gZtcTooBig_c (A data item to be set or retrieved is too big for the buffer available to hold it.)";
                    break;
                case 0xFF:
                    MessageStatus = "0xFF: gZtcError_c (Non-specific, catchall error code.)";
                    break;
                default:
                    break;
                }

            }
            String logMessage = "Extracted ZTC-ERROR.Event Status:" + MessageStatus;
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix(logMessage, message);
        }

        /* ZDP-Mgmt_Nwk_Update.Notify */

        else if (_command == FreescaleConstants.ZDPMgmt_Nwk_UpdateNotify) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Mgmt_Nwk_Update.Notify", message);

            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.NWK_UPDATE) {

                        EnergyScanResult _result = new EnergyScanResult();

                        int _address = DataManipulation.toIntFromShort((byte) message[4], (byte) message[3]);

                        short _status = message[5];
                        if (_status == GatewayConstants.SUCCESS) {
                            byte[] _scannedChannel = new byte[4];
                            _scannedChannel[0] = (byte) message[9];
                            _scannedChannel[1] = (byte) message[8];
                            _scannedChannel[2] = (byte) message[7];
                            _scannedChannel[3] = (byte) message[6];

                            int _totalTrasmission = DataManipulation.toIntFromShort((byte) message[11],
                                    (byte) message[10]);

                            int _trasmissionFailure = DataManipulation.toIntFromShort((byte) message[13],
                                    (byte) message[12]);

                            short _scannedChannelListCount = message[14];
                            for (int i = 0; i < _scannedChannelListCount; i++) {
                                ScannedChannel _sc = new ScannedChannel();
                                // _sc.setChannel(value)
                                _sc.setEnergy(message[15 + i]);

                                _result.getScannedChannel().add(_sc);
                            }
                            synchronized (pl) {
                                pl.getStatus().setCode(message[7]);
                                pl.set_objectOfResponse(_result);
                                pl.notify();
                            }
                            break;

                        }

                    }
                }
            }

        }

        /* ZDP-SimpleDescriptor.Response */
        else if (_command == FreescaleConstants.ZDPSimpleDescriptorResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-ExtendedSimpleDescriptor.Response", message);
            /* Address + EndPoint */
            Address _add = new Address();

            _add.setNetworkAddress(DataManipulation.toIntFromShort((byte) message[5], (byte) message[4]));
            byte EndPoint = (byte) message[7];
            String Key = String.format("%04X", _add.getNetworkAddress()) + String.format("%02X", EndPoint);
            // Found ZDP-SimpleDescriptor.Response. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    /* Address + EndPoint */
                    if ((pl.getType() == TypeMessage.GET_SIMPLE_DESCRIPTOR)
                            && pl.get_Key().equalsIgnoreCase(Key)) {

                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            if (pl.getStatus().getCode() == GatewayConstants.SUCCESS) {

                                SimpleDescriptor _sp = new SimpleDescriptor();
                                _sp.setApplicationProfileIdentifier(
                                        DataManipulation.toIntFromShort((byte) message[9], (byte) message[8]));
                                _sp.setApplicationDeviceIdentifier(DataManipulation
                                        .toIntFromShort((byte) message[11], (byte) message[10]));
                                _sp.setApplicationDeviceVersion(message[12]);
                                int _index = 14;
                                short _numInpCluster = message[13];
                                for (int i = 0; i < _numInpCluster; i++) {
                                    _sp.getApplicationInputCluster().add(DataManipulation.toIntFromShort(
                                            (byte) message[_index + 1], (byte) message[_index]));
                                    _index = _index + 2;
                                }

                                short _numOutCluster = message[_index++];

                                for (int i = 0; i < _numOutCluster; i++) {
                                    _sp.getApplicationOutputCluster().add(DataManipulation.toIntFromShort(
                                            (byte) message[_index + 1], (byte) message[_index]));
                                    _index = _index + 2;
                                }
                                ServiceDescriptor _toRes = new ServiceDescriptor();
                                _toRes.setAddress(_add);
                                _toRes.setEndPoint(EndPoint);
                                _toRes.setSimpleDescriptor(_sp);
                                pl.set_objectOfResponse(_toRes);
                            }
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }

        /* APS-GetEndPointIdList.Confirm */
        else if (_command == FreescaleConstants.APSGetEndPointIdListConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APS-GetEndPointIdList.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.GET_END_POINT_LIST)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            NodeServices _res = new NodeServices();
                            if (pl.getStatus().getCode() == GatewayConstants.SUCCESS) {
                                short length = message[4];
                                for (int i = 0; i < length; i++) {
                                    ActiveEndpoints _ep = new ActiveEndpoints();
                                    _ep.setEndPoint(message[5 + i]);
                                    _res.getActiveEndpoints().add(_ep);
                                }
                            }
                            pl.set_objectOfResponse(_res);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* ZDP-BIND.Response */
        else if (_command == FreescaleConstants.ZDPMgmtBindResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-BIND.Response", message);

            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.ADD_BINDING)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            switch (pl.getStatus().getCode()) {
                            case GatewayConstants.SUCCESS:

                                break;

                            case 0x84:
                                pl.getStatus().setMessage("NOT_SUPPORTED (NOT SUPPORTED)");
                                break;

                            case 0x8C:
                                pl.getStatus().setMessage("TABLE_FULL (TABLE FULL)");
                                break;
                            case 0x8D:
                                pl.getStatus().setMessage("NOT_AUTHORIZED (NOT AUTHORIZED)");
                                break;
                            }
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* ZDP-UNBIND.Response */
        else if (_command == FreescaleConstants.ZDPUnbindResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-UNBIND.Response", message);

            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.REMOVE_BINDING)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            switch (pl.getStatus().getCode()) {
                            case GatewayConstants.SUCCESS:

                                break;

                            case 0x84:
                                pl.getStatus().setMessage("NOT_SUPPORTED (NOT SUPPORTED)");
                                break;
                            case 0x88:
                                pl.getStatus().setMessage("No_Entry (No Entry)");
                                break;
                            case 0x8D:
                                pl.getStatus().setMessage("NOT_AUTHORIZED (NOT AUTHORIZED");
                                break;
                            }
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* ZDP-Mgmt_Bind.Response */
        else if (_command == FreescaleConstants.ZDPMgmt_BindResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Mgmt_Bind.Response", message);

            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.GET_BINDINGS)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            BindingList _res = new BindingList();

                            if (pl.getStatus().getCode() == GatewayConstants.SUCCESS) {
                                short length = message[6];
                                int _index = 6;
                                for (int i = 0; i < length; i++) {
                                    Binding _b = new Binding();
                                    long src_longAddress = DataManipulation.toLong((byte) message[_index + 8],
                                            (byte) message[_index + 7], (byte) message[_index + 6],
                                            (byte) message[_index + 5], (byte) message[_index + 4],
                                            (byte) message[_index + 3], (byte) message[_index + 2],
                                            (byte) message[_index + 1]);
                                    short _srcEP = message[_index + 9];

                                    int _cluster = DataManipulation.toIntFromShort((byte) message[_index + 11],
                                            (byte) message[_index + 10]);

                                    short _DestinationMode = message[_index + 12];
                                    Device _dev = new Device();

                                    if (_DestinationMode == 0x03) {

                                        long dst_longAddress = DataManipulation.toLong(
                                                (byte) message[_index + 20], (byte) message[_index + 19],
                                                (byte) message[_index + 18], (byte) message[_index + 17],
                                                (byte) message[_index + 16], (byte) message[_index + 15],
                                                (byte) message[_index + 14], (byte) message[_index + 13]);

                                        short _dstEP = message[_index + 21];
                                        _dev.setAddress(BigInteger.valueOf(dst_longAddress));
                                        _dev.setEndpoint(_dstEP);
                                        _index = _index + 21;
                                    } else if (_DestinationMode == 0x01) {

                                        int _groupId = DataManipulation.toIntFromShort(
                                                (byte) message[_index + 14], (byte) message[_index + 13]);
                                        _dev.setAddress(BigInteger.valueOf(_groupId));
                                        _index = _index + 10;
                                    }
                                    _b.setClusterID(_cluster);
                                    _b.setSourceEndpoint(_srcEP);
                                    _b.setSourceIEEEAddress(BigInteger.valueOf(src_longAddress));

                                    _b.getDeviceDestination().add(_dev);
                                    _res.getBinding().add(_b);

                                }
                            }
                            pl.set_objectOfResponse(_res);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* APS-DeregisterEndPoint.Confirm */
        else if (_command == FreescaleConstants.APSDeRegisterEndPointConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APS-DeregisterEndPoint.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.DEREGISTER_END_POINT)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }

        /* APS-ZDP-Mgmt_Lqi.Response */
        else if (_command == FreescaleConstants.ZDPMgmtLqiResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix(
                        "Extracted ZDP-Mgmt_Lqi.Response... waiting the related Indication ZDO", message);

        }
        /* ZTC-ReadExtAddr.Confirm */
        else if (_command == FreescaleConstants.ZTCReadExtAddrConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZTC-ReadExtAddr.Confirm", message);
            long longAddress = DataManipulation.toLong((byte) message[11], (byte) message[10],
                    (byte) message[9], (byte) message[8], (byte) message[7], (byte) message[6],
                    (byte) message[5], (byte) message[4]);
            BigInteger _bi = BigInteger.valueOf(longAddress);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.READ_EXT_ADDRESS)) {
                        synchronized (pl) {
                            pl.set_objectOfResponse(_bi);
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }

        /* ZDP-IEEE_addr.response */
        else if (_command == FreescaleConstants.ZDPIeeeAddrResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-IEEE_addr.response", message);
            long longAddress = DataManipulation.toLong((byte) message[11], (byte) message[10],
                    (byte) message[9], (byte) message[8], (byte) message[7], (byte) message[6],
                    (byte) message[5], (byte) message[4]);
            BigInteger _bi = BigInteger.valueOf(longAddress);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if ((pl.getType() == TypeMessage.READ_IEEE_ADDRESS)) {
                        synchronized (pl) {
                            pl.set_objectOfResponse(_bi);
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }
        /* ZDP-Mgmt_Leave.Response */
        else if (_command == FreescaleConstants.ZDPMgmtLeaveResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Mgmt_Leave.Response", message);

        }
        /* ZDP-Active_EP_rsp.response */
        else if (_command == FreescaleConstants.ZDPActiveEpResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Active_EP_rsp.response", message);
            short Status = message[3];
            Address _add = new Address();

            _add.setNetworkAddress(DataManipulation.toIntFromShort((byte) message[5], (byte) message[4]));
            String Key = String.format("%04X", _add.getNetworkAddress());
            List<Short> _toRes = null;

            NodeServices _node = new NodeServices();
            _node.setAddress(_add);

            switch (Status) {
            case 0x00:
                _toRes = new ArrayList<Short>();
                int _EPCount = message[6];

                for (int i = 0; i < _EPCount; i++) {
                    _toRes.add(message[7 + i]);
                    ActiveEndpoints _aep = new ActiveEndpoints();
                    _aep.setEndPoint(message[7 + i]);
                    _node.getActiveEndpoints().add(_aep);

                }
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("ZDP-Active_EP_rsp.response status:00 - Success");
                }
                break;
            case 0x80:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("ZDP-Active_EP_rsp.response status:80 - Inv_RequestType");
                }
                break;
            case 0x89:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("ZDP-Active_EP_rsp.response status:89 - No_Descriptor");
                }
                break;
            case 0x81:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("ZDP-Active_EP_rsp.response status:81 - Device_Not_found");
                }
                break;
            }
            // Found ZDP-Active_EP_rsp.response. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    /* DestAddress */
                    if ((pl.getType() == TypeMessage.ACTIVE_EP) && pl.get_Key().equalsIgnoreCase(Key)) {
                        synchronized (pl) {
                            pl.set_objectOfResponse(_toRes);
                            pl.getStatus().setCode(Status);
                            pl.notify();

                        }
                        break;
                    }
                }
            }

        }

        /* ZDP-StopNwkEx.Confirm */
        else if (_command == FreescaleConstants.ZTCStopNwkExConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-StopNwkEx.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.STOP_NETWORK) {
                        if (message[3] == 0x00) {
                            gal.get_gatewayEventManager().notifyGatewayStopResult(makeStatusObject(
                                    "The stop command has been processed byt ZDO with success.", (short) 0x00));
                            synchronized (gal) {
                                gal.setGatewayStatus(GatewayStatus.GW_STOPPING);
                            }
                        }
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }
        /* NLME-GET.Confirm */
        else if (_command == FreescaleConstants.NLMEGetConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-GET.Confirm", message);
            String _Key = String.format("%02X", message[4]);
            // Found APSDE-DATA.Confirm. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.NMLE_GET && pl.get_Key().equalsIgnoreCase(_Key)) {
                        short _Length = (short) DataManipulation.toIntFromShort((byte) message[9],
                                (byte) message[8]);
                        byte[] _res = DataManipulation.subByteArray(message, 10, _Length + 9);
                        if (_Length >= 2)
                            _res = DataManipulation.reverseBytes(_res);
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.set_objectOfResponse(DataManipulation.convertBytesToString(_res));
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }
        /* APSME_GET.Confirm */
        else if (_command == FreescaleConstants.APSMEGetConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APSME_GET.Confirm", message);
            String _Key = String.format("%02X", message[4]);
            // Found APSME_GET-DATA.Confirm. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.APSME_GET && pl.get_Key().equalsIgnoreCase(_Key)) {
                        short _Length = (short) DataManipulation.toIntFromShort((byte) message[9],
                                (byte) message[8]);
                        byte[] _res = DataManipulation.subByteArray(message, 10, _Length + 9);
                        if (_Length >= 2)
                            _res = DataManipulation.reverseBytes(_res);
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.set_objectOfResponse(DataManipulation.convertBytesToString(_res));
                            pl.notify();
                        }
                        break;
                    }
                }
            }

        }
        // ZDP-StartNwkEx.Confirm
        else if (_command == FreescaleConstants.ZTCStartNwkExConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-StartNwkEx.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.START_NETWORK) {
                        if (message[3] == 0x00) {
                            gal.setGatewayStatus(GatewayStatus.GW_STARTED);
                        }
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* APS-RegisterEndPoint.Confirm */
        else if (_command == FreescaleConstants.APSRegisterEndPointConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APS-RegisterEndPoint.Confirm", message);
            // Found APS-RegisterEndPoint.Confirm. Remove the lock
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.CONFIGURE_END_POINT) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }
        /* ZTC-ModeSelect.Confirm */
        else if (_command == FreescaleConstants.ZTCModeSelectConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZTC-ModeSelect.Confirm", message);
            short status = message[3];
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.MODE_SELECT) {
                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }
        /* MacGetPIBAttribute.Confirm */
        else if (_command == FreescaleConstants.MacGetPIBAttributeConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacGetPIBAttribute.Confirm", message);
        }
        /* MacBeaconNotify.Indication */
        else if (_command == FreescaleConstants.MacBeaconNotifyIndication) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacBeaconNotify.Indication", message);
        }
        /* MacBeaconStart.Indication */
        else if (_command == FreescaleConstants.MacPollNotifyIndication) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacBeaconStart.Indication", message);
        }
        /* NLME-NETWORK-FORMATION.Confirmn */
        else if (_command == FreescaleConstants.NLMENETWORKFORMATIONConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-NETWORK-FORMATION.Confirm", message);
        }
        /* NLME-START-ROUTER.Request */
        else if (_command == FreescaleConstants.NLMESTARTROUTERRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-NETWORK-FORMATION.Confirm", message);
        }
        /* MacStart.Request */
        else if (_command == FreescaleConstants.MacStartRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacStart.Request", message);
        }
        /* MacStart.Confirm */
        else if (_command == FreescaleConstants.MacStartConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacStart.Confirm", message);
        }
        /* NLME-START-ROUTER.Confirm */
        else if (_command == FreescaleConstants.NLMESTARTROUTERConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-START-ROUTER.Confirm", message);
        }
        /* NWK-ProcessSecureFrame.Report */
        else if (_command == FreescaleConstants.NWKProcessSecureFrameReport) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NWK-ProcessSecureFrame.Report", message);
        }
        /* ZDP-Nwk-ProcessSecureFrame.Confirm */
        else if (_command == FreescaleConstants.ZDPNwkProcessSecureFrameConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Nwk-ProcessSecureFrame.Confirm", message);
        }

        /* BlackBox.WriteSAS.Confirm */
        else if (_command == FreescaleConstants.BlackBoxWriteSASConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted BlackBox.WriteSAS.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.WRITE_SAS) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }
        /* ZTC-GetChannel.Confirm */
        else if (_command == FreescaleConstants.ZTCGetChannelConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZTC-GetChannel.Confirm", message);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.CHANNEL_REQUEST) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);
                            pl.set_objectOfResponse(message[4]);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* ZDP-NodeDescriptor.Response */
        else if (_command == FreescaleConstants.ZDPNodeDescriptorResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-NodeDescriptor.Response", message);
            int _NWKAddressOfInterest = DataManipulation.toIntFromShort((byte) message[5], (byte) message[4]);
            Address _addressOfInterst = new Address();
            _addressOfInterst.setNetworkAddress(_NWKAddressOfInterest);
            NodeDescriptor _node = new NodeDescriptor();

            /* First Byte */
            byte _first = (byte) message[6];
            byte _Logical_byte = (byte) (_first & 0x07);/* Bits 0,1,2 */
            byte _ComplexDescriptorAvalilable = (byte) ((_first & 0x08) >> 3);/* Bit3 */
            byte _UserDescriptorAvalilable = (byte) ((_first & 0x0A) >> 4);/* Bit4 */
            switch (_Logical_byte) {
            case FreescaleConstants.LogicalType.Coordinator:
                _node.setLogicalType(LogicalType.COORDINATOR);
                break;
            case FreescaleConstants.LogicalType.Router:
                _node.setLogicalType(LogicalType.ROUTER);
                break;
            case FreescaleConstants.LogicalType.EndDevice:
                _node.setLogicalType(LogicalType.END_DEVICE);
                break;
            default:
                throw new Exception("LogicalType is not valid value");
            }
            _node.setComplexDescriptorAvailable((_ComplexDescriptorAvalilable == 1 ? true : false));
            _node.setUserDescriptorAvailable((_UserDescriptorAvalilable == 1 ? true : false));

            /* Second Byte */
            byte _second = (byte) message[7];
            /* Aps flags bits 0,1,2 */
            byte _FrequencyBand = (byte) ((_second & 0xF8) >> 0x03);/*
                                                                    * bits
                                                                    * 3
                                                                    * ,4,5,
                                                                    * 6,7
                                                                    */
            switch (_FrequencyBand) {
            case 0x01:
                _node.setFrequencyBand("868MHz");
                break;
            case 0x04:
                _node.setFrequencyBand("900MHz");
                break;
            case 0x08:
                _node.setFrequencyBand("2400MHz");
                break;
            default:
                _node.setFrequencyBand("Reserved");
                break;
            }

            /* MACcapabilityFlags_BYTE Byte */
            byte _MACcapabilityFlags_BYTE = (byte) message[8];
            MACCapability _maccapability = new MACCapability();
            byte _AlternatePanCoordinator = (byte) (_MACcapabilityFlags_BYTE & 0x01);/* Bit0 */
            byte _DeviceIsFFD = (byte) ((_MACcapabilityFlags_BYTE & 0x02) >> 1);/* Bit1 */
            byte _MainsPowered = (byte) ((_MACcapabilityFlags_BYTE & 0x04) >> 2);/* Bit2 */
            byte _ReceiverOnWhenIdle = (byte) ((_MACcapabilityFlags_BYTE & 0x08) >> 3);/* Bit3 */
            // bit 4-5 reserved
            byte _SecuritySupported = (byte) ((_MACcapabilityFlags_BYTE & 0x40) >> 6);/* Bit6 */
            byte _AllocateAddress = (byte) ((_MACcapabilityFlags_BYTE & 0x80) >> 7);/* Bit7 */
            _maccapability.setAlternatePanCoordinator((_AlternatePanCoordinator == 1 ? true : false));
            _maccapability.setDeviceIsFFD((_DeviceIsFFD == 1 ? true : false));
            _maccapability.setMainsPowered((_MainsPowered == 1 ? true : false));
            _maccapability.setReceiverOnWhenIdle((_ReceiverOnWhenIdle == 1 ? true : false));
            _maccapability.setSecuritySupported((_SecuritySupported == 1 ? true : false));
            _maccapability.setAllocateAddress((_AllocateAddress == 1 ? true : false));
            _node.setMACCapabilityFlag(_maccapability);

            /* ManufacturerCode_BYTES */
            int _ManufacturerCode_BYTES = DataManipulation.toIntFromShort((byte) message[10],
                    (byte) message[9]);
            _node.setManufacturerCode(_ManufacturerCode_BYTES);

            /* MaximumBufferSize_BYTE */
            short _MaximumBufferSize_BYTE = message[11];
            _node.setMaximumBufferSize(_MaximumBufferSize_BYTE);

            /* MaximumTransferSize_BYTES */
            int _MaximumTransferSize_BYTES = DataManipulation.toIntFromShort((byte) message[13],
                    (byte) message[12]);
            _node.setMaximumIncomingTransferSize(_MaximumTransferSize_BYTES);

            /* ServerMask_BYTES */
            int _ServerMask_BYTES = DataManipulation.toIntFromShort((byte) message[15], (byte) message[14]);
            ServerMask _serverMask = new ServerMask();
            byte _PrimaryTrustCenter = (byte) (_ServerMask_BYTES & 0x01);/* Bit0 */
            byte _BackupTrustCenter = (byte) ((_ServerMask_BYTES & 0x02) >> 1);/* Bit1 */
            byte _PrimaryBindingTableCache = (byte) ((_ServerMask_BYTES & 0x04) >> 2);/* Bit2 */
            byte _BackupBindingTableCache = (byte) ((_ServerMask_BYTES & 0x08) >> 3);/* Bit3 */
            byte _PrimaryDiscoveryCache = (byte) ((_ServerMask_BYTES & 0x10) >> 4);/* Bit4 */
            byte _BackupDiscoveryCache = (byte) ((_ServerMask_BYTES & 0x20) >> 5);/* Bit5 */
            _serverMask.setPrimaryTrustCenter((_PrimaryTrustCenter == 1 ? true : false));
            _serverMask.setBackupTrustCenter((_BackupTrustCenter == 1 ? true : false));
            _serverMask.setPrimaryBindingTableCache((_PrimaryBindingTableCache == 1 ? true : false));
            _serverMask.setBackupBindingTableCache((_BackupBindingTableCache == 1 ? true : false));
            _serverMask.setPrimaryDiscoveryCache((_PrimaryDiscoveryCache == 1 ? true : false));
            _serverMask.setBackupDiscoveryCache((_BackupDiscoveryCache == 1 ? true : false));
            _node.setServerMask(_serverMask);

            /* MaximumOutTransferSize_BYTES */
            int _MaximumOutTransferSize_BYTES = DataManipulation.toIntFromShort((byte) message[17],
                    (byte) message[16]);
            _node.setMaximumOutgoingTransferSize(_MaximumOutTransferSize_BYTES);

            /* CapabilityField_BYTES */
            byte _CapabilityField_BYTES = (byte) message[18];
            DescriptorCapability _DescriptorCapability = new DescriptorCapability();
            byte _ExtendedActiveEndpointListAvailable = (byte) (_CapabilityField_BYTES & 0x01);/* Bit0 */
            byte _ExtendedSimpleDescriptorListAvailable = (byte) ((_CapabilityField_BYTES
                    & 0x02) >> 1);/* Bit1 */
            _DescriptorCapability.setExtendedActiveEndpointListAvailable(
                    (_ExtendedActiveEndpointListAvailable == 1 ? true : false));
            _DescriptorCapability.setExtendedSimpleDescriptorListAvailable(
                    (_ExtendedSimpleDescriptorListAvailable == 1 ? true : false));
            _node.setDescriptorCapabilityField(_DescriptorCapability);
            String _key = String.format("%04X", _NWKAddressOfInterest);
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.NODE_DESCRIPTOR && pl.get_Key().equalsIgnoreCase(_key)) {
                        synchronized (pl) {
                            pl.getStatus().setCode(message[3]);/* Status */
                            pl.set_objectOfResponse(_node);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }
        /* NMLE-SET.Confirm */
        else if (_command == FreescaleConstants.NMLESETConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NMLE-SET.Confirm", message);
            short status = message[3];
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.NMLE_SET) {

                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }
        /* APSME-SET.Confirm */
        else if (_command == FreescaleConstants.APSMESetConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted APSME-SET.Confirm", message);
            short status = message[3];
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.APSME_SET) {

                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.notify();
                        }
                        break;
                    }
                }
            }
        }

        /* ZDP-Mgmt_Permit_Join.response */
        else if (_command == FreescaleConstants.ZDPMgmt_Permit_JoinResponse) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted ZDP-Mgmt_Permit_Join.response", message);
            short status = message[3];
            String mess = "";

            switch (status) {
            case 0x00:

                break;
            case 0x80:
                mess = "InvRequestType";
                break;
            case 0x84:
                mess = "Not Supported";
                break;
            case 0x87:
                mess = "Table Full";
                break;
            case 0x8D:
                mess = "NOT AUTHORIZED";
                break;
            case 0xC5:
                mess = "Already present in the network";
                break;

            }
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.PERMIT_JOIN) {
                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.getStatus().setMessage(mess);
                            pl.notify();
                        }
                        break;
                    }
                }

            }
        }

        /* APS-ClearDeviceKeyPairSet.Confirm */
        else if (_command == FreescaleConstants.APSClearDeviceKeyPairSetConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("APS-ClearDeviceKeyPairSet.Confirm", message);
            short status = message[3];
            String mess = "";
            switch (status) {
            case 0x00:

                break;
            }
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.CLEAR_DEVICE_KEY_PAIR_SET) {
                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.getStatus().setMessage(mess);
                            pl.notify();
                        }
                        break;
                    }
                }

            }

        }

        /* ZTC-ClearNeighborTableEntry.Confirm */
        else if (_command == FreescaleConstants.ZTCClearNeighborTableEntryConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("ZTC-ClearNeighborTableEntry.Confirm", message);
            short status = message[3];
            String mess = "";
            switch (status) {
            case 0x00:

                break;
            }
            synchronized (listLocker) {
                for (ParserLocker pl : listLocker) {
                    if (pl.getType() == TypeMessage.CLEAR_NEIGHBOR_TABLE_ENTRY) {
                        synchronized (pl) {
                            pl.getStatus().setCode(status);
                            pl.getStatus().setMessage(mess);
                            pl.notify();
                        }
                        break;
                    }
                }

            }

        }

        /* NLME-JOIN.Confirm */
        else if (_command == FreescaleConstants.NLMEJOINConfirm) {
            short _status = message[8];
            switch (_status) {
            case 0x00:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: SUCCESS (Joined the network)");
                }
                break;
            case 0xC2:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: INVALID_REQUEST (Not Valid Request)");
                }
                break;
            case 0xC3:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: NOT_PERMITTED (Not allowed to join the network)");
                }
                break;
            case 0xCA:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: NO_NETWORKS (Network not found)");
                }
                break;
            case 0x01:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: PAN_AT_CAPACITY (PAN at capacity)");
                }
                break;
            case 0x02:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: PAN_ACCESS_DENIED (PAN access denied)");
                }
                break;
            case 0xE1:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted NLME-JOIN.Confirm: CHANNEL_ACCESS_FAILURE (Transmission failed due to activity on the channel)");
                }
                break;
            case 0xE4:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted NLME-JOIN.Confirm: FAILED_SECURITY_CHECK (The received frame failed security check)");
                }
                break;
            case 0xE8:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted NLME-JOIN.Confirm: INVALID_PARAMETER (A parameter in the primitive is out of the valid range)");
                }
                break;
            case 0xE9:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: NO_ACK (Acknowledgement was not received)");
                }
                break;
            case 0xEB:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted NLME-JOIN.Confirm: NO_DATA (No response data was available following a request)");
                }
                break;
            case 0xF3:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted NLME-JOIN.Confirm: UNAVAILABLE_KEY (The appropriate key is not available in the ACL)");
                }
                break;
            case 0xEA:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted NLME-JOIN.Confirm: NO_BEACON (No Networks)");
                }
                break;
            default:
                throw new Exception("Extracted NLME-JOIN.Confirm: Invalid Status - " + _status);
            }
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("NLME-JOIN.Confirm", message);
        }

        /* ZDO-NetworkState.Event */
        else if (_command == FreescaleConstants.ZDONetworkStateEvent) {
            short _status = message[3];
            String mess;
            switch (_status) {
            case 0x00:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info("Extracted ZDO-NetworkState.Event: DeviceInitialized (Device Initialized)");
                }
                break;
            case 0x01:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceinNetworkDiscoveryState (Device in Network Discovery State)");
                }
                break;
            case 0x02:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceJoinNetworkstate (Device Join Network state)");
                }
                break;
            case 0x03:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceinCoordinatorstartingstate (Device in Coordinator starting state)");
                }
                gal.setGatewayStatus(GatewayStatus.GW_STARTING);
                break;
            case 0x04:
                mess = "ZDO-NetworkState.Event: DeviceinRouterRunningstate (Device in Router Running state)";
                gal.get_gatewayEventManager().notifyGatewayStartResult(makeStatusObject(mess, _status));
                gal.setGatewayStatus(GatewayStatus.GW_RUNNING);
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(mess);
                }
                break;
            case 0x05:
                mess = "ZDO-NetworkState.Event: DeviceinEndDeviceRunningstate (Device in End Device Running state)";
                gal.get_gatewayEventManager().notifyGatewayStartResult(makeStatusObject(mess, _status));
                gal.setGatewayStatus(GatewayStatus.GW_RUNNING);

                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(mess);
                }
                break;
            case 0x09:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: Deviceinleavenetworkstate (Device in leave network state)");
                }

                gal.setGatewayStatus(GatewayStatus.GW_STOPPING);
                break;
            case 0x0A:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: Deviceinauthenticationstate (Device in authentication state)");
                }
                break;
            case 0x0B:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: Deviceinstoppedstate (Device in stopped state)");
                }
                gal.setGatewayStatus(GatewayStatus.GW_STOPPED);

                break;
            case 0x0C:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceinOrphanjoinstate (Device in Orphan join state)");
                }
                break;
            case 0x10:
                mess = "ZDO-NetworkState.Event: DeviceinCoordinatorRunningstate (Device is Coordinator Running state)";

                gal.get_gatewayEventManager().notifyGatewayStartResult(makeStatusObject(mess, _status));
                gal.setGatewayStatus(GatewayStatus.GW_RUNNING);
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(mess);
                }
                break;
            case 0x11:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceinKeytransferstate (Device in Key transfer state)");
                }
                break;
            case 0x12:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: Deviceinauthenticationstate (Device in authentication state)");
                }
                break;
            case 0x13:
                if (gal.getPropertiesManager().getDebugEnabled()) {
                    logger.info(
                            "Extracted ZDO-NetworkState.Event: DeviceOfftheNetwork (Device Off the Network)");
                }
                break;
            default:
                throw new Exception("ZDO-NetworkState.Event: Invalid Status - " + _status);
            }
        }
        /* MacSetPIBAttribute.Confirm */
        else if (_command == FreescaleConstants.MacSetPIBAttributeConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacSetPIBAttribute.Confirm", message);
        }
        /* NLME-ENERGY-SCAN.Request */
        else if (_command == FreescaleConstants.NLMEENERGYSCANRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-ENERGY-SCAN.Request", message);
        }
        /* MacScan.Request */
        else if (_command == FreescaleConstants.MacScanRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacScan.Request", message);
        }
        /* MacScan.Confirm */
        else if (_command == FreescaleConstants.MacScanConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacScan.Confirm", message);
        }
        /* NLME-ENERGY-SCAN.confirm */
        else if (_command == FreescaleConstants.NLMEENERGYSCANconfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-ENERGY-SCAN.confirm", message);
        }
        /* NLME-NETWORK-DISCOVERY.Request */
        else if (_command == FreescaleConstants.NLMENETWORKDISCOVERYRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-NETWORK-DISCOVERY.Request", message);
        }
        /* MacScan.Request */
        else if (_command == FreescaleConstants.MacScanRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted MacScan.Request", message);
        }
        /* NLME-NETWORK-DISCOVERY.Confirm */
        else if (_command == FreescaleConstants.NLMENetworkDiscoveryConfirm) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-NETWORK-DISCOVERY.Confirm", message);
        }
        /* NLME-NETWORK-FORMATION.Request */
        else if (_command == FreescaleConstants.NLMENETWORKFORMATIONRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-NETWORK-FORMATION.Request", message);
        }
        /* NLME-SET.Request */
        else if (_command == FreescaleConstants.NLMESetRequest) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted NLME-SET.Request", message);
        }
        /* NLME-NWK-STATUS.Indication */
        else if (_command == FreescaleConstants.NLMENwkStatusIndication) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("NLME-NWK-STATUS.Indication", message);
        }
        /* NLME-ROUTE-DISCOVERY.confirm */
        else if (_command == FreescaleConstants.NLMENWKSTATUSIndication) {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("NLME-ROUTE-DISCOVERY.confirm", message);
        } else {
            if (gal.getPropertiesManager().getDebugEnabled())
                DataManipulation.logArrayHexRadix("Extracted a Message not in Message Management", message);
        }

        synchronized (this) {
            _size = messages.size();
        }
    }

}