📄 sdpclientchannel.java
字号:
}
private void receive_SDP_ErrorResponse(byte[] dataPacket) {
short transactionID = (short)(((short)dataPacket[1] & 0xff) << 8 | ((short)dataPacket[2] & 0xff));
short errorCode = (short)(((short)dataPacket[5] & 0xff) << 8 | ((short)dataPacket[6] & 0xff));
switch (errorCode) {
case 1:
System.err.println("SDP: Received Error Response: Invalid/unsupported SDP version. (transactionID=" +
transactionID + ")");
break;
case 2:
System.err.println("SDP: Received Error Response: Invalid Service Record Handle. (transactionID=" +
transactionID + ")");
break;
case 3:
System.err.println("SDP: Received Error Response: Invalid request syntax. (transactionID=" +
transactionID + ")");
break;
case 4:
System.err.println("SDP: Received Error Response: Invalid PDU Size. (transactionID=" + transactionID + ")");
break;
case 5:
System.err.println("SDP: Received Error Response: Invalid Continuation State. (transactionID=" +
transactionID + ")");
break;
case 6:
System.err.println("SDP: Received Error Response: Insufficient Resources to satisfy Request. (transactionID=" +
transactionID + ")");
break;
default:
System.err.println("SDP: Received Error Response: Error Code " + errorCode + " (transactionID=" +
transactionID + ")");
}
if (discoveryListener != null) {
discoveryListener.serviceSearchCompleted(transactionID, DiscoveryListener.SERVICE_SEARCH_ERROR);
}
}
/** @param dataPacket */
private void receive_SDP_ServiceSearchResponse(byte[] dataPacket) {
Debug.println(4, "SDP: Received Service Search Response:", dataPacket);
if (remoteDevice != null) {
short transactionID = (short)(((short)dataPacket[1] & 0xff) << 8 | ((short)dataPacket[2] & 0xff));
short serviceRecordCount = (short)(((short)dataPacket[5] & 0xff) << 8 | ((short)dataPacket[6] & 0xff));
//byte[] attributeList={0x35, 0x05, 0x0a, 0x00, 0x00, (byte) 0xff, (byte) 0xff};
//DataElement attributeListElement = new DataElement(attributeList,0);
Vector servicesDiscovered = new Vector();
Hashtable serviceMap = new Hashtable();
for (int i = 0; i < serviceRecordCount; i++) {
int serviceRecordHandle = (int)(((int)dataPacket[9 + (i * 4)] & 0xff) << 24 |
((int)dataPacket[10 + (i * 4)] & 0xff) << 16 | ((int)dataPacket[11 + (i * 4)] & 0xff) << 8 |
((int)dataPacket[12 + (i * 4)] & 0xff));
Integer serviceHandle = new Integer(serviceRecordHandle);
ServiceRecord serviceRecord = (ServiceRecord)remoteDevice.serviceRecords.get(serviceHandle);
if (serviceRecord == null) serviceRecord = new SDPRemoteServiceRecord(remoteDevice, serviceRecordHandle);
servicesDiscovered.addElement(serviceRecord);
serviceMap.put(serviceHandle, serviceRecord);
}
remoteDevice.serviceRecords = serviceMap;
if (discoveryListener != null) {
if (serviceRecordCount == 0)
discoveryListener.serviceSearchCompleted(transactionID, DiscoveryListener.SERVICE_SEARCH_NO_RECORDS);
else {
ServiceRecord[] serviceArray = new ServiceRecord[servicesDiscovered.size()];
for (int i = 0; i < serviceArray.length; i++) {
serviceArray[i] = (ServiceRecord)servicesDiscovered.elementAt(i);
}
discoveryListener.servicesDiscovered(transactionID, serviceArray);
discoveryListener.serviceSearchCompleted(transactionID, DiscoveryListener.SERVICE_SEARCH_COMPLETED);
}
}
}
}
private void receive_SDP_ServiceAttributeResponse(byte[] dataPacket) {
Debug.println(4, "SDP: Received Service Attibute Response:", dataPacket);
if (remoteDevice != null) {
short transactionID = (short)(((short)dataPacket[1] & 0xff) << 8 | ((short)dataPacket[2] & 0xff));
//short attributeListByteCount = (short)(((short) dataPacket[5] & 0xff) << 8 | ((short) dataPacket[6]& 0xff));
SDPRemoteServiceRecord serviceRecord = null;
DataElement attributeList = new DataElement(dataPacket, 7);
//System.out.println("AttributeList : "+attributeList);
Enumeration attributeElements = (Enumeration)attributeList.getValue();
while (attributeElements.hasMoreElements()) {
DataElement attrIDElement = (DataElement)attributeElements.nextElement();
DataElement attrValueElement = (DataElement)attributeElements.nextElement();
int attrID = (int)attrIDElement.getLong();
if (attrID == 0) {
serviceRecord = (SDPRemoteServiceRecord)
remoteDevice.serviceRecords.get(new Integer((int)attrValueElement.getLong()));
}
if (serviceRecord != null) serviceRecord.setAttributeValue(attrID, attrValueElement);
}
if (serviceRecord != null) serviceRecord.isPopulated = true;
}
}
private void receive_SDP_ServiceSearchAttributeResponse(byte[] dataPacket) {
Debug.println(4, "SDP: Received Service Attibute Response:", dataPacket);
if ((remoteDevice != null)) {
short transactionID = (short)(((short)dataPacket[1] & 0xff) << 8 | ((short)dataPacket[2] & 0xff));
DataElement serviceAttributeListElement = new DataElement(dataPacket, 7);
Enumeration serviceAttributeList = (Enumeration)serviceAttributeListElement.getValue();
while (serviceAttributeList.hasMoreElements()) {
DataElement attributeList = (DataElement)serviceAttributeList.nextElement();
SDPRemoteServiceRecord serviceRecord = null;
Enumeration attributeElements = (Enumeration)attributeList.getValue();
while (attributeElements.hasMoreElements()) {
DataElement attrIDElement = (DataElement)attributeElements.nextElement();
DataElement attrValueElement = (DataElement)attributeElements.nextElement();
int attrID = (int)attrIDElement.getLong();
if (attrID == 0) {
serviceRecord = (SDPRemoteServiceRecord)
remoteDevice.serviceRecords.get(new Integer((int)attrValueElement.getLong()));
if (serviceRecord == null)
serviceRecord = new SDPRemoteServiceRecord(remoteDevice, (int)attrValueElement.getLong());
}
if (serviceRecord != null) { serviceRecord.setAttributeValue(attrID, attrValueElement); }
}
if (serviceRecord != null) {
serviceRecord.isPopulated = true;
if (discoveryListener != null) {
ServiceRecord[] records = { serviceRecord };
discoveryListener.servicesDiscovered(transactionID, records);
}
}
}
if (discoveryListener != null) {
discoveryListener.serviceSearchCompleted(transactionID, DiscoveryListener.SERVICE_SEARCH_COMPLETED);
}
}
}
private void receive_SDP_UnknownPacket(byte[] dataPacket) {
System.err.println("SDP: Received unknown Packet: " + Debug.printByteArray(dataPacket));
short transactionID = (short)(((short)dataPacket[1] & 0xff) << 8 | ((short)dataPacket[2] & 0xff));
send_SDP_ErrorResponse(transactionID, (short)1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -