|
SunSPOT API V3.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.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 a 64 bit double. |
float |
readFloat()
Reads a 32 bit float. |
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 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 64 bit double. |
void |
writeFloat(float v)
Writes a 32 bit float. |
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 radiogrampublic 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 radiogramMethod Detail |
---|
public String getAddress()
getAddress
in interface Datagram
Datagram.setAddress(java.lang.String)
public long getAddressAsLong()
public byte[] getData()
getData
in interface Datagram
Datagram.setData(byte[], int, int)
public int getLength()
getLength
in interface Datagram
Datagram.setLength(int)
public int getOffset()
Datagram
getOffset
in interface Datagram
public void setAddress(String addr)
setAddress
in interface Datagram
addr
- the address in dotted hex or as a simple integerDatagram.getAddress()
public void setAddress(Datagram reference)
setAddress
in interface Datagram
reference
- the radiogram from which the address is to be copiedDatagram.getAddress()
public void setLength(int len)
setLength
in interface Datagram
len
- the new length of the dataDatagram.getLength()
public void setData(byte[] buffer, int offset, int len)
setData
in interface Datagram
buffer
- 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 datagrampublic int available() throws IOException
IOException
public void readFully(byte[] b) throws IOException
DataInput
b
. 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 DataInput
b
- 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
DataInput
len
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 DataInput
b
- 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
DataInput
n
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 DataInput
n
- the number of bytes to be skipped.
n
.
EOFException
- if this stream reaches the end before skipping
all the bytes.
IOException
- if an I/O error occurs.public boolean readBoolean() throws IOException
DataInput
true
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 DataInput
boolean
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 DataInput
EOFException
- if this stream reaches the end before reading
all the bytes.
IOException
- if an I/O error occurs.public int readUnsignedByte() throws IOException
DataInput
int
, 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 DataInput
EOFException
- if this stream reaches the end before reading
all the bytes.
IOException
- if an I/O error occurs.public short readShort() throws IOException
DataInput
short
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 DataInput
EOFException
- if this stream reaches the end before reading
all the bytes.
IOException
- if an I/O error occurs.public int readUnsignedShort() throws IOException
DataInput
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 DataInput
EOFException
- if this stream reaches the end before reading
all the bytes.
IOException
- if an I/O error occurs.public char readChar() throws IOException
DataInput
char
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 DataInput
char
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
DataInput
int
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 DataInput
int
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
DataInput
long
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 DataInput
long
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
DataInput
readUTF
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 DataInput
EOFException
- 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
DataOutput
b
.
The 24 high-order bits of b
are ignored.
write
in interface DataOutput
b
- the byte to be written.
IOException
- if an I/O error occurs.public void write(byte[] b) throws IOException
DataOutput
b
.
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 DataOutput
b
- the data.
IOException
- if an I/O error occurs.public void write(byte[] b, int off, int len) throws IOException
DataOutput
len
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 DataOutput
b
- 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
DataOutput
boolean
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 DataOutput
v
- the boolean to be written.
IOException
- if an I/O error occurs.public void writeByte(int v) throws IOException
DataOutput
v
.
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 DataOutput
v
- 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 DataOutput
v
- the short
value to be written.
IOException
- if an I/O error occurs.public void writeChar(int v) throws IOException
DataOutput
char
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 DataOutput
v
- the char
value to be written.
IOException
- if an I/O error occurs.public void writeInt(int v) throws IOException
DataOutput
int
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 DataOutput
v
- the int
value to be written.
IOException
- if an I/O error occurs.public void writeLong(long v) throws IOException
DataOutput
long
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 >> 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 DataOutput
v
- the long
value to be written.
IOException
- if an I/O error occurs.public void writeChars(String s) throws IOException
DataOutput
s
,
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 DataOutput
s
- the string value to be written.
IOException
- if an I/O error occurs.public void writeUTF(String str) throws IOException
DataOutput
s
.
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 DataOutput
str
- 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
DataInput
readDouble
in interface DataInput
EOFException
- If end of file is reached.
IOException
- If other I/O error has occurred.public float readFloat() throws IOException
DataInput
readFloat
in interface DataInput
EOFException
- If end of file is reached.
IOException
- If other I/O error has occurred.public void writeDouble(double v) throws IOException
DataOutput
writeDouble
in interface DataOutput
v
- the double value to be written
IOException
public void writeFloat(float v) throws IOException
DataOutput
writeFloat
in interface DataOutput
v
- the float value to be written
IOException
public long getTimeout()
|
SunSPOT API V3.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |