|
SunSPOT API V4.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.sun.spot.io.j2me.radiogram.Radiogram
public class Radiogram
Helper class for "radiogram:" connections. This class implements Datagram
for communication between Spots. You should NOT normally instantiate this
class directly, but rather via the GCF framework: see the first reference below
for more details.
RadiogramConnection| Field Summary | |
|---|---|
static int |
MAX_LENGTH
Maximum nuber of bytes that can be stored in a radiogram. |
| Constructor Summary | |
|---|---|
Radiogram(int size,
RadiogramConnImpl connection)
|
|
Radiogram(int size,
RadiogramConnImpl connection,
String addr)
|
|
| Method Summary | |
|---|---|
int |
available()
|
String |
getAddress()
Return the address associated with this Radiogram. |
long |
getAddressAsLong()
Return the address associated with this Radiogram. |
int |
getCorr()
CORR measures the average correlation value of the first 4 bytes of the packet header. |
byte[] |
getData()
Returns the contents of the radiogram as a byte array |
int |
getHopCount()
Hop count is the number of times a packet will be retransmitted until it reaches the final destination. |
int |
getLength()
Return the number of bytes of data in this datagram. |
int |
getLinkQuality()
Link Quality Indication (LQI) is a characterization of the quality of a received packet. |
int |
getOffset()
Get the offset. |
int |
getRssi()
RSSI (received signal strength indicator) measures the strength (power) of the signal for the packet. |
long |
getTimeout()
|
long |
getTimestamp()
|
boolean |
readBoolean()
Reads one input byte and returns true if that byte is nonzero,
false if that byte is zero. |
byte |
readByte()
Reads and returns one input byte. |
char |
readChar()
Reads an input char and returns the char value. |
double |
readDouble()
Reads eight input bytes and returns a double value. |
float |
readFloat()
Reads four input bytes and returns a float value. |
void |
readFully(byte[] b)
Reads some bytes from an input stream and stores them into the buffer array b. |
void |
readFully(byte[] b,
int off,
int len)
Reads len
bytes from
an input stream. |
int |
readInt()
Reads four input bytes and returns an int value. |
long |
readLong()
Reads eight input bytes and returns a long value. |
short |
readShort()
Reads two input bytes and returns a short value. |
int |
readUnsignedByte()
Reads one input byte, zero-extends it to type int, and returns
the result, which is therefore in the range
0
through 255. |
int |
readUnsignedShort()
Reads two input bytes, zero-extends it to type int, and returns
an int value in the range 0
through 65535. |
String |
readUTF()
Reads in a string that has been encoded using a modified UTF-8 format. |
void |
reset()
Ensures that the next read or write operation will read/write from the start of the radiogram |
void |
resetRead()
Ensures that the next read operation will read from the start of the radiogram |
void |
setAddress(Datagram reference)
Set the address associated with this radiogram by copying it from the supplied radiogram. |
void |
setAddress(String addr)
Set the address associated with this radiogram. |
void |
setData(byte[] buffer,
int offset,
int len)
Not implemented |
void |
setLength(int len)
Not implemented |
int |
skipBytes(int n)
Makes an attempt to skip over n bytes
of data from the input stream, discarding the skipped
bytes. |
void |
write(byte[] b)
Writes to the output stream all the bytes in array b. |
void |
write(byte[] b,
int off,
int len)
Writes len bytes from array
b, in order, to
the output stream. |
void |
write(int b)
Writes to the output stream the eight low-order bits of the argument b. |
void |
writeBoolean(boolean v)
Writes a boolean value to this output stream. |
void |
writeByte(int v)
Writes to the output stream the eight low- order bits of the argument v. |
void |
writeChar(int v)
Writes a char value, which
is comprised of two bytes, to the
output stream. |
void |
writeChars(String s)
Writes every character in the string s,
to the output stream, in order,
two bytes per character. |
void |
writeDouble(double v)
Writes a double value,
which is comprised of eight bytes, to the output stream. |
void |
writeFloat(float v)
Writes a float value,
which is comprised of four bytes, to the output stream. |
void |
writeInt(int v)
Writes an int value, which is
comprised of four bytes, to the output stream. |
void |
writeLong(long v)
Writes an long value, which is
comprised of four bytes, to the output stream. |
void |
writeShort(int v)
Writes two bytes to the output stream to represent the value of the argument. |
void |
writeUTF(String str)
Writes two bytes of length information to the output stream, followed by the Java modified UTF representation of every character in the string s. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int MAX_LENGTH
| Constructor Detail |
|---|
public Radiogram(int size,
RadiogramConnImpl connection)
size - - the required size of this radiogramconnection - - the Protocol that is using this radiogram
public Radiogram(int size,
RadiogramConnImpl connection,
String addr)
size - - the required size of this radiogramconnection - - the Protocol that is using this radiogramaddr - - the address to associate with this radiogram| Method Detail |
|---|
public String getAddress()
getAddress in interface DatagramDatagram.setAddress(java.lang.String)public long getAddressAsLong()
public byte[] getData()
getData in interface DatagramDatagram.setData(byte[], int, int)public int getLength()
getLength in interface DatagramDatagram.setLength(int)public int getOffset()
Datagram
getOffset in interface Datagrampublic void setAddress(String addr)
setAddress in interface Datagramaddr - the address in dotted hex or as a simple integerDatagram.getAddress()public void setAddress(Datagram reference)
setAddress in interface Datagramreference - the radiogram from which the address is to be copiedDatagram.getAddress()public void setLength(int len)
setLength in interface Datagramlen - the new length of the datagramDatagram.getLength()
public void setData(byte[] buffer,
int offset,
int len)
setData in interface Datagrambuffer - the data bufferoffset - the offset into the data bufferlen - the length of the data in the bufferDatagram.getData()public void reset()
reset in interface Datagram
public void resetRead()
throws IOException
IOException - unable to reset read pointer to beginning of datagram
public int available()
throws IOException
IOException
public void readFully(byte[] b)
throws IOException
DataInputb. The number of bytes
read is equal
to the length of b.
This method blocks until one of the following conditions occurs:
b.length
bytes of input data are available, in which
case a normal return is made.
EOFException is thrown.
IOException other than
EOFException is thrown.
If b is null,
a NullPointerException is thrown.
If b.length is zero, then
no bytes are read. Otherwise, the first
byte read is stored into element b[0],
the next one into b[1], and
so on.
If an exception is thrown from
this method, then it may be that some but
not all bytes of b have been
updated with data from the input stream.
readFully in interface DataInputb - the buffer into which the data is read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public void readFully(byte[] b,
int off,
int len)
throws IOException
DataInputlen
bytes from
an input stream.
This method blocks until one of the following conditions occurs:
len bytes
of input data are available, in which case
a normal return is made.
EOFException
is thrown.
IOException other
than EOFException is thrown.
If b is null,
a NullPointerException is thrown.
If off is negative, or len
is negative, or off+len is
greater than the length of the array b,
then an IndexOutOfBoundsException
is thrown.
If len is zero,
then no bytes are read. Otherwise, the first
byte read is stored into element b[off],
the next one into b[off+1],
and so on. The number of bytes read is,
at most, equal to len.
readFully in interface DataInputb - the buffer into which the data is read.off - an int specifying the offset into the data.len - an int specifying the number of bytes to read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public int skipBytes(int n)
throws IOException
DataInputn bytes
of data from the input stream, discarding the skipped
bytes. However, it may skip over some smaller number of
bytes, possibly zero. This may result from any of a
number of conditions; reaching end of file before
n bytes have been skipped is only one
possibility.
This method never throws an EOFException.
The actual number of bytes skipped is returned.
skipBytes in interface DataInputn - the number of bytes to be skipped.
IOException - if an I/O error occurs.
public boolean readBoolean()
throws IOException
DataInputtrue if that byte is nonzero,
false if that byte is zero.
This method is suitable for reading
the byte written by the writeBoolean
method of interface DataOutput.
readBoolean in interface DataInputboolean value read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public byte readByte()
throws IOException
DataInput-128 through 127,
inclusive.
This method is suitable for
reading the byte written by the writeByte
method of interface DataOutput.
readByte in interface DataInputEOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public int readUnsignedByte()
throws IOException
DataInputint, and returns
the result, which is therefore in the range
0
through 255.
This method is suitable for reading
the byte written by the writeByte
method of interface DataOutput
if the argument to writeByte
was intended to be a value in the range
0 through 255.
readUnsignedByte in interface DataInputEOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public short readShort()
throws IOException
DataInputshort value. Let a
be the first byte read and b
be the second byte. The value
returned is:
(short)((a << 8) | (b & 0xff))
This method is suitable for reading the bytes
written by the writeShort method of
interface DataOutput.
readShort in interface DataInputEOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public int readUnsignedShort()
throws IOException
DataInputint, and returns
an int value in the range 0
through 65535. Let a
be the first byte read and
b
be the second byte. The value returned is:
(((a & 0xff) << 8) | (b & 0xff))
This method is suitable for reading the bytes
written by the writeShort method
of interface DataOutput if
the argument to writeShort
was intended to be a value in the range
0 through 65535.
readUnsignedShort in interface DataInputEOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public char readChar()
throws IOException
DataInputchar and returns the char value.
A Unicode char is made up of two bytes.
Let a
be the first byte read and b
be the second byte. The value
returned is:
(char)((a << 8) | (b & 0xff))
This method is suitable for reading bytes written by
the writeChar method of interface
DataOutput.
readChar in interface DataInputchar read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public int readInt()
throws IOException
DataInputint value. Let a
be the first byte read, b be
the second byte, c be the third
byte, and d be the fourth
byte. The value returned is:
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
This method is suitable
for reading bytes written by the writeInt
method of interface DataOutput.
readInt in interface DataInputint value read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public long readLong()
throws IOException
DataInputlong value. Let a
be the first byte read, b be
the second byte, c be the third
byte, d be the fourth byte,
e be the fifth byte, f
be the sixth byte, g be the
seventh byte, and h be the
eighth byte. The value returned is:
(((long)(a & 0xff) << 56) |
((long)(b & 0xff) << 48) |
((long)(c & 0xff) << 40) |
((long)(d & 0xff) << 32) |
((long)(e & 0xff) << 24) |
((long)(f & 0xff) << 16) |
((long)(g & 0xff) << 8) |
((long)(h & 0xff)))
This method is suitable
for reading bytes written by the writeLong
method of interface DataOutput.
readLong in interface DataInputlong value read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public String readUTF()
throws IOException
DataInputreadUTF
is that it reads a representation of a Unicode
character string encoded in Java modified
UTF-8 format; this string of characters
is then returned as a String.
First, two bytes are read and used to
construct an unsigned 16-bit integer in
exactly the manner of the readUnsignedShort
method . This integer value is called the
UTF length and specifies the number
of additional bytes to be read. These bytes
are then converted to characters by considering
them in groups. The length of each group
is computed from the value of the first
byte of the group. The byte following a
group, if any, is the first byte of the
next group.
If the first byte of a group
matches the bit pattern 0xxxxxxx
(where x means "may be 0
or 1"), then the group consists
of just that byte. The byte is zero-extended
to form a character.
If the first byte
of a group matches the bit pattern 110xxxxx,
then the group consists of that byte a
and a second byte b. If there
is no byte b (because byte
a was the last of the bytes
to be read), or if byte b does
not match the bit pattern 10xxxxxx,
then a UTFDataFormatException
is thrown. Otherwise, the group is converted
to the character:
(char)(((a& 0x1F) << 6) | (b & 0x3F))
If the first byte of a group
matches the bit pattern 1110xxxx,
then the group consists of that byte a
and two more bytes b and c.
If there is no byte c (because
byte a was one of the last
two of the bytes to be read), or either
byte b or byte c
does not match the bit pattern 10xxxxxx,
then a UTFDataFormatException
is thrown. Otherwise, the group is converted
to the character:
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
If the first byte of a group matches the
pattern 1111xxxx or the pattern
10xxxxxx, then a UTFDataFormatException
is thrown.
If end of file is encountered
at any time during this entire process,
then an EOFException is thrown.
After every group has been converted to
a character by this process, the characters
are gathered, in the same order in which
their corresponding groups were read from
the input stream, to form a String,
which is returned.
The writeUTF
method of interface DataOutput
may be used to write data that is suitable
for reading by this method.
readUTF in interface DataInputEOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
UTFDataFormatException - if the bytes do not represent a
valid UTF-8 encoding of a string.
public void write(int b)
throws IOException
DataOutputb.
The 24 high-order bits of b
are ignored.
write in interface DataOutputb - the byte to be written.
IOException - if an I/O error occurs.
public void write(byte[] b)
throws IOException
DataOutputb.
If b is null,
a NullPointerException is thrown.
If b.length is zero, then
no bytes are written. Otherwise, the byte
b[0] is written first, then
b[1], and so on; the last byte
written is b[b.length-1].
write in interface DataOutputb - the data.
IOException - if an I/O error occurs.
public void write(byte[] b,
int off,
int len)
throws IOException
DataOutputlen bytes from array
b, in order, to
the output stream. If b
is null, a NullPointerException
is thrown. If off is negative,
or len is negative, or off+len
is greater than the length of the array
b, then an IndexOutOfBoundsException
is thrown. If len is zero,
then no bytes are written. Otherwise, the
byte b[off] is written first,
then b[off+1], and so on; the
last byte written is b[off+len-1].
write in interface DataOutputb - the data.off - the start offset in the data.len - the number of bytes to write.
IOException - if an I/O error occurs.
public void writeBoolean(boolean v)
throws IOException
DataOutputboolean value to this output stream.
If the argument v
is true, the value (byte)1
is written; if v is false,
the value (byte)0 is written.
The byte written by this method may
be read by the readBoolean
method of interface DataInput,
which will then return a boolean
equal to v.
writeBoolean in interface DataOutputv - the boolean to be written.
IOException - if an I/O error occurs.
public void writeByte(int v)
throws IOException
DataOutputv.
The 24 high-order bits of v
are ignored. (This means that writeByte
does exactly the same thing as write
for an integer argument.) The byte written
by this method may be read by the readByte
method of interface DataInput,
which will then return a byte
equal to (byte)v.
writeByte in interface DataOutputv - the byte value to be written.
IOException - if an I/O error occurs.
public void writeShort(int v)
throws IOException
DataOutput
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
The bytes written by this method may be
read by the readShort method
of interface DataInput, which
will then return a short equal
to (short)v.
writeShort in interface DataOutputv - the short value to be written.
IOException - if an I/O error occurs.
public void writeChar(int v)
throws IOException
DataOutputchar value, which
is comprised of two bytes, to the
output stream.
The byte values to be written, in the order
shown, are:
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
The bytes written by this method may be
read by the readChar method
of interface DataInput, which
will then return a char equal
to (char)v.
writeChar in interface DataOutputv - the char value to be written.
IOException - if an I/O error occurs.
public void writeInt(int v)
throws IOException
DataOutputint value, which is
comprised of four bytes, to the output stream.
The byte values to be written, in the order
shown, are:
(byte)(0xff & (v >> 24))
(byte)(0xff & (v >> 16))
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
The bytes written by this method may be read
by the readInt method of interface
DataInput, which will then
return an int equal to v.
writeInt in interface DataOutputv - the int value to be written.
IOException - if an I/O error occurs.
public void writeLong(long v)
throws IOException
DataOutputlong value, which is
comprised of four bytes, to the output stream.
The byte values to be written, in the order
shown, are:
(byte)(0xff & (v >> 56))
(byte)(0xff & (v >> 48))
(byte)(0xff & (v >> 40))
(byte)(0xff & (v >> 32))
(byte)(0xff & (v >> 24))
(byte)(0xff & (v >> 16))
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
The bytes written by this method may be
read by the readLong method
of interface DataInput, which
will then return a long equal
to v.
writeLong in interface DataOutputv - the long value to be written.
IOException - if an I/O error occurs.
public void writeChars(String s)
throws IOException
DataOutputs,
to the output stream, in order,
two bytes per character. If s
is null, a NullPointerException
is thrown. If s.length
is zero, then no characters are written.
Otherwise, the character s[0]
is written first, then s[1],
and so on; the last character written is
s[s.length-1]. For each character,
two bytes are actually written, high-order
byte first, in exactly the manner of the
writeChar method.
writeChars in interface DataOutputs - the string value to be written.
IOException - if an I/O error occurs.
public void writeUTF(String str)
throws IOException
DataOutputs.
If s is null,
a NullPointerException is thrown.
Each character in the string s
is converted to a group of one, two, or
three bytes, depending on the value of the
character.
If a character c
is in the range \u0001 through
\u007f, it is represented
by one byte:
(byte)c
If a character c is \u0000
or is in the range \u0080
through \u07ff, then it is
represented by two bytes, to be written
in the order shown:
(byte)(0xc0 | (0x1f & (c >> 6)))
(byte)(0x80 | (0x3f & c))
If a character
c is in the range \u0800
through uffff, then it is
represented by three bytes, to be written
in the order shown:
(byte)(0xe0 | (0x0f & (c >> 12)))
(byte)(0x80 | (0x3f & (c >> 6)))
(byte)(0x80 | (0x3f & c))
First,
the total number of bytes needed to represent
all the characters of s is
calculated. If this number is larger than
65535, then a UTFDataFormatError
is thrown. Otherwise, this length is written
to the output stream in exactly the manner
of the writeShort method;
after this, the one-, two-, or three-byte
representation of each character in the
string s is written.
The
bytes written by this method may be read
by the readUTF method of interface
DataInput, which will then
return a String equal to s.
writeUTF in interface DataOutputstr - the string value to be written.
IOException - if an I/O error occurs.public int getLinkQuality()
RadioPacket.getLinkQuality()public int getCorr()
RadioPacket.getCorr()public int getRssi()
RadioPacket.getRssi()public int getHopCount()
public long getTimestamp()
public double readDouble()
throws IOException
DataInputdouble value. It does this
by first constructing a long
value in exactly the manner
of the readlong
method, then converting this long
value to a double in exactly
the manner of the method Double.longBitsToDouble.
This method is suitable for reading
bytes written by the writeDouble
method of interface DataOutput.
readDouble in interface DataInputdouble value read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public float readFloat()
throws IOException
DataInputfloat value. It does this
by first constructing an int
value in exactly the manner
of the readInt
method, then converting this int
value to a float in
exactly the manner of the method Float.intBitsToFloat.
This method is suitable for reading
bytes written by the writeFloat
method of interface DataOutput.
readFloat in interface DataInputfloat value read.
EOFException - if this stream reaches the end
before reading all the bytes.
IOException - if an I/O error occurs.
public void writeDouble(double v)
throws IOException
DataOutputdouble value,
which is comprised of eight bytes, to the output stream.
It does this as if it first converts this
double value to a long
in exactly the manner of the Double.doubleToLongBits
method and then writes the long
value in exactly the manner of the writeLong
method. The bytes written by this method
may be read by the readDouble
method of interface DataInput,
which will then return a double
equal to v.
writeDouble in interface DataOutputv - the double value to be written.
IOException - if an I/O error occurs.
public void writeFloat(float v)
throws IOException
DataOutputfloat value,
which is comprised of four bytes, to the output stream.
It does this as if it first converts this
float value to an int
in exactly the manner of the Float.floatToIntBits
method and then writes the int
value in exactly the manner of the writeInt
method. The bytes written by this method
may be read by the readFloat
method of interface DataInput,
which will then return a float
equal to v.
writeFloat in interface DataOutputv - the float value to be written.
IOException - if an I/O error occurs.public long getTimeout()
|
SunSPOT API V4.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||