|
Sun SPOT API |
||||||||
| 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,
Protocol connection,
long timeout)
|
|
Radiogram(int size,
Protocol connection,
String addr,
long timeout)
|
|
| Method Summary | |
|---|---|
int |
available()
|
String |
getAddress()
Return the address associated with this Radiogram. |
Protocol |
getConnection()
|
int |
getCorr()
CORR measures the average correlation value of the first 4 bytes of the packet header. |
byte[] |
getData()
Not implemented |
int |
getLength()
Return the number of bytes of data in this radiogram |
int |
getLinkQuality()
Link Quality Indication (LQI) is a characterization of the quality of a received packet. |
int |
getOffset()
Get the offset. |
byte[] |
getPayload()
Returns the contents of the radiogram as a byte array |
int |
getRssi()
RSSI (received signal strength indicator) measures the strength (power) of the signal for the packet. |
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 |
receive()
Receive into this radiogram |
void |
reset()
Ensures that the next read or write operation will read/write from the start of the radiogram |
void |
send()
Send this 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, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final int MAX_LENGTH
| Constructor Detail |
|---|
public Radiogram(int size,
Protocol connection,
long timeout)
size - - ignoredconnection - - the Protocol that is using this radiogramtimeout - - the timeout period in ms to use for receives (<0 = wait for ever, >=0 timeout period)
public Radiogram(int size,
Protocol connection,
String addr,
long timeout)
size - - ignoredconnection - - the Protocol that is using this radiogramaddr - - the address to associate with this radiogramtimeout - - the timeout period in ms to use for receives (<0 = wait for ever, >=0 timeout period)| Method Detail |
|---|
public String getAddress()
getAddress in interface DatagramDatagram.setAddress(java.lang.String)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 dataDatagram.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 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.
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
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 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 >> 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 void send()
throws NoAckException,
ChannelBusyException
ChannelBusyException
NoAckException
public void receive()
throws IOException
TimeoutException
IOException
InterruptedIOException - if the connection was closedpublic byte[] getPayload()
public double readDouble()
throws IOException
DataInput
readDouble in interface DataInputEOFException - If end of file is reached.
IOException - If other I/O error has occurred.
public float readFloat()
throws IOException
DataInput
readFloat in interface DataInputEOFException - 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 DataOutputv - the double value to be written
IOException
public void writeFloat(float v)
throws IOException
DataOutput
writeFloat in interface DataOutputv - the float value to be written
IOExceptionpublic Protocol getConnection()
|
Sun SPOT API |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||