NMEA
Class NMEABitArray

java.lang.Object
  extended by com.sun.org.apache.xalan.internal.xsltc.dom.BitArray
      extended by NMEA.NMEABitArray
All Implemented Interfaces:
java.io.Externalizable, java.io.Serializable

public class NMEABitArray
extends com.sun.org.apache.xalan.internal.xsltc.dom.BitArray

See Also:
Serialized Form

Field Summary
static char[] ASCII6
          Lookup table to convert from integer to 6 bit ASCII data for AIS vessel names, destinations, etc.
(package private) static char[] charLUTData
          Lookup table data to go from characters to 6 bit integers.
private static byte[] lut6
           
static long serialVersionUID
           
 
Constructor Summary
NMEABitArray()
           
NMEABitArray(int size)
           
NMEABitArray(int size, int[] bits)
           
 
Method Summary
static byte convert628(char ch)
          converts a character from an AIS data string into a six bit integer value packed into an 8 bit byte.
static char convert826(int n)
          Convert a six bit integer value to AIS / NMEA character data
static byte[] createLUT6()
          Converts the character lookup data to an integer-to-character LUT, where the indexing is the standard ASCII character, converted to an integer.
 int getSignedInteger(int b1, int b2)
          Get a signed integer from the bit array.
 java.lang.String getString(int b1, int b2)
          Gets a string based on packed bits from an AIS string using the 6 bit ascii character set.
 int getUnsignedInteger(int b1, int b2)
          Get an unsigned integer from the bit array.
 java.lang.String toString()
           
 
Methods inherited from class com.sun.org.apache.xalan.internal.xsltc.dom.BitArray
cloneArray, data, getBit, getBitNumber, getMask, getNextBit, merge, readExternal, resize, setBit, setMask, size, writeExternal
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

serialVersionUID

public static final long serialVersionUID
See Also:
Constant Field Values

ASCII6

public static final char[] ASCII6
Lookup table to convert from integer to 6 bit ASCII data for AIS vessel names, destinations, etc. Table 23 from page 55 of IEC 61993


lut6

private static byte[] lut6

charLUTData

static char[] charLUTData
Lookup table data to go from characters to 6 bit integers. The table as is, could be used to convert a number to a character. When unpacking AIS data, we need to do the opposite, so the data are flicked around in createLUT6.

Table G1 from page 171 of IEC 61993

19 June - changed '\'' to 0x60 (opposite of error in ASCII6 array !

Constructor Detail

NMEABitArray

public NMEABitArray()

NMEABitArray

public NMEABitArray(int size,
                    int[] bits)

NMEABitArray

public NMEABitArray(int size)
Method Detail

getUnsignedInteger

public int getUnsignedInteger(int b1,
                              int b2)
Get an unsigned integer from the bit array.

Integers can be any number of bits. The first bit is the most significant.

Parameters:
b1 - First bit to unpack
b2 - Last bit to unpack
Returns:
unsigned integer value

getSignedInteger

public int getSignedInteger(int b1,
                            int b2)
Get a signed integer from the bit array.

Integers can be any number of bits and are stored in 2's compliment format.

Parameters:
b1 - First bit to unpack
b2 - Last bit to unpack
Returns:
signed integer value

getString

public java.lang.String getString(int b1,
                                  int b2)
Gets a string based on packed bits from an AIS string using the 6 bit ascii character set.

Parameters:
b1 - First bit from AIS / NMEA data
b2 - Last bit from AIS / NMEA data
Returns:
character string

convert628

public static byte convert628(char ch)
converts a character from an AIS data string into a six bit integer value packed into an 8 bit byte.

Parameters:
ch - Character from AIS or NMEA string
Returns:
6 bit integer (0 to 63)

convert826

public static char convert826(int n)
Convert a six bit integer value to AIS / NMEA character data

Parameters:
n - an six bit ascii code
Returns:
a six bit character

createLUT6

public static byte[] createLUT6()
Converts the character lookup data to an integer-to-character LUT, where the indexing is the standard ASCII character, converted to an integer. The resulting lookup table is sparsely populated and should will return 0 for any index not used in charLUTData.

Returns:
a six bit value packed into one byte

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object