mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-16 17:42:51 +00:00
java/SPPClientTest: query for SPP service, retry on failure, use last SPP service found
This commit is contained in:
parent
d4d525ab1c
commit
12610ed383
@ -25,16 +25,21 @@ public class SPPClientTest implements PacketHandler {
|
||||
private STATE state;
|
||||
private int testHandle;
|
||||
|
||||
private BD_ADDR remote = new BD_ADDR("84:38:35:65:D1:15");
|
||||
private int rfcommServiceUUID = 0x1002;
|
||||
private int btIncomingChannelNr = 3;
|
||||
private BD_ADDR remote = new BD_ADDR("00:1A:7D:DA:71:01");
|
||||
private int sppUUID = 0x1101;
|
||||
|
||||
private int outgoing_channel_nr = -1;
|
||||
private int rfcommChannelID = 0;
|
||||
private int mtu = 0;
|
||||
|
||||
List<Integer> services = new ArrayList<Integer>(10);
|
||||
private int counter;
|
||||
|
||||
private void startSDPQuery(){
|
||||
state = STATE.w4_query_result;
|
||||
byte[] serviceSearchPattern = Util.serviceSearchPatternForUUID16(sppUUID);
|
||||
btstack.SDPClientQueryRFCOMMServices(remote, serviceSearchPattern);
|
||||
}
|
||||
|
||||
public void handlePacket(Packet packet){
|
||||
if (packet instanceof HCIEventDisconnectionComplete){
|
||||
HCIEventDisconnectionComplete event = (HCIEventDisconnectionComplete) packet;
|
||||
@ -49,30 +54,30 @@ public class SPPClientTest implements PacketHandler {
|
||||
BTstackEventState event = (BTstackEventState) packet;
|
||||
if (event.getState() == 2) {
|
||||
System.out.println("BTstack working. Start SDP inquiry.");
|
||||
state = STATE.w4_query_result;
|
||||
byte[] serviceSearchPattern = Util.serviceSearchPatternForUUID16(rfcommServiceUUID);
|
||||
btstack.SDPClientQueryRFCOMMServices(remote, serviceSearchPattern);
|
||||
startSDPQuery();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case w4_query_result:
|
||||
if (packet instanceof SDPEventQueryRFCOMMService){
|
||||
SDPEventQueryRFCOMMService service = (SDPEventQueryRFCOMMService) packet;
|
||||
services.add(service.getRFCOMMChannel());
|
||||
System.out.println("Found RFCOMM channel " + service.getName() + ", channel nr: " + service.getRFCOMMChannel());
|
||||
outgoing_channel_nr = service.getRFCOMMChannel();
|
||||
}
|
||||
if (packet instanceof SDPEventQueryComplete){
|
||||
for (Integer channel_nr : services){
|
||||
System.out.println("Found rfcomm channel nr: " + channel_nr);
|
||||
if (channel_nr == btIncomingChannelNr){
|
||||
SDPEventQueryComplete complete = (SDPEventQueryComplete) packet;
|
||||
if (complete.getStatus() != 0){
|
||||
System.out.println(String.format("SDP Query failed with status 0x%02x, retry SDP query.", complete.getStatus()));
|
||||
startSDPQuery();
|
||||
break;
|
||||
}
|
||||
if (outgoing_channel_nr >= 0){
|
||||
state = STATE.w4_connected;
|
||||
System.out.println("Connect to channel nr " + channel_nr);
|
||||
btstack.RFCOMMCreateChannel(remote, 3);
|
||||
System.out.println("Connect to channel nr " + outgoing_channel_nr);
|
||||
btstack.RFCOMMCreateChannel(remote, outgoing_channel_nr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case w4_connected:
|
||||
@ -94,7 +99,7 @@ public class SPPClientTest implements PacketHandler {
|
||||
try {
|
||||
while(state == STATE.active){
|
||||
Thread.sleep(1000);
|
||||
byte [] data = String.format("BTstack SPP Counter %d\n", counter).getBytes();
|
||||
byte [] data = String.format("BTstack SPP Client Test Counter %d\n", counter++).getBytes();
|
||||
btstack.RFCOMMSendData(rfcommChannelID, data);
|
||||
}
|
||||
} catch (InterruptedException e) {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user