Source code: org/bluej/core/SDPPacket.java
1 package org.bluej.core;
2
3 public class SDPPacket {
4 static final long PSM = 0x0001;
5 int transid;
6 int len;
7 byte[] data;
8
9 public SDPPacket(int maxLen) {
10 transid = 0;
11 data = new byte[maxLen];
12 }
13 public SDPPacket(int initTransId, int maxLen) {
14 this(maxLen);
15 transid = initTransId;
16 }
17
18 public void write(L2CAPConn conn) throws BlueJException {
19 // write the final length
20 data[3] = (byte)(0xff&((len-5)>>8));
21 data[4] = (byte)(0xff&(len-5));
22 if (conn.getPSM() != PSM)
23 throw new BlueJException(
24 "writing SDP packet on non SDP connection");
25 conn.write(data, len);
26 }
27
28 public int getTransId() { return transid; }
29 public int getLength() { return len; }
30
31 public void reset(int pdu) {
32 len = 0;
33 addByte(pdu);
34 addShort(++transid);
35 addShort(0); // placeholder
36 }
37 public void addByte(int byteVal) {
38 len = Utils.layoutBytes(1, byteVal, data, len);
39 }
40 public void addShort(int shortVal) {
41 len = Utils.layoutBytes(2, shortVal, data, len);
42 }
43 public void addLong(long longVal) {
44 len = Utils.layoutBytes(4, longVal, data, len);
45 }
46 public void addData(byte[] newData, int start, int newLen) {
47 for (int i = 0; i < newLen; i++)
48 data[len+i] = newData[start+i];
49 len += newLen;
50 }
51 public void addData(byte[] newData) {
52 addData(newData, 0, newData.length);
53 }
54 public void addDataElement(DataElement elem) {
55 len = Utils.layoutDataElement(elem, data, len);
56 }
57 public String dump() {
58 return Utils.bytesToString(data, 0, len, " ");
59 }
60 }