⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdpclientchannel.java

📁 蓝牙协议栈可是要钱的喔
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }

    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 + -