From 0b304758bb729332a000a06d2a4a055fa9d23c68 Mon Sep 17 00:00:00 2001 From: Francesco Zanitti Date: Thu, 29 Jul 2010 15:02:37 +0200 Subject: [PATCH] added names to devices the client, when joining, will receive the port number of the emulator. The device name is fixed to "emulator-" --- .../src/dk/itu/android/bluetooth/BluetoothDevice.java | 3 ++- .../src/dk/itu/android/btemu/service/cmd/Discovery.java | 8 ++++---- .../src/dk/itu/android/btemu/service/cmd/Join.java | 9 ++++++++- btsim-server/src/dk/itu/btemu/cmd/Discovery.java | 2 +- btsim-server/src/dk/itu/btemu/cmd/Join.java | 5 +++++ btsim-server/src/dk/itu/btemu/state/Device.java | 5 +++++ 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/android-btsim-application/src/dk/itu/android/bluetooth/BluetoothDevice.java b/android-btsim-application/src/dk/itu/android/bluetooth/BluetoothDevice.java index 8356732..59b301f 100644 --- a/android-btsim-application/src/dk/itu/android/bluetooth/BluetoothDevice.java +++ b/android-btsim-application/src/dk/itu/android/bluetooth/BluetoothDevice.java @@ -104,9 +104,10 @@ public String toString() { * @param uuid * @param port */ - public BluetoothDevice(String btAddr, String tcpAddr) { + public BluetoothDevice(String btAddr, String tcpAddr, String name) { this.addr = btAddr; this.tcpAddr = tcpAddr; + this.name = name; this.services = new ArrayList(); this.btClass = new BluetoothClass( android.bluetooth.BluetoothClass.Device.PHONE_SMART, diff --git a/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Discovery.java b/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Discovery.java index 79ec4cc..72d5b22 100644 --- a/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Discovery.java +++ b/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Discovery.java @@ -68,11 +68,11 @@ protected void readResponse(InputStream in) throws IOException { if(line==null) break; String[] parts = line.trim().split("--"); - dk.itu.android.bluetooth.BluetoothDevice d = new BluetoothDevice(parts[0], parts[1]); + dk.itu.android.bluetooth.BluetoothDevice d = new BluetoothDevice(parts[0], parts[1],parts[2]); - if(parts.length>2) { - if(parts[2].length()>0) { - String[] sParts = parts[2].split("<><>"); + if(parts.length>3) { + if(parts[3].length()>0) { + String[] sParts = parts[3].split("<><>"); for(String p : sParts) { String[] s = p.split("<>"); d.addService(s[0], Integer.parseInt(s[1])); diff --git a/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Join.java b/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Join.java index be66e8d..e627bcc 100644 --- a/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Join.java +++ b/android-btsim-application/src/dk/itu/android/btemu/service/cmd/Join.java @@ -1,7 +1,9 @@ package dk.itu.android.btemu.service.cmd; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; @@ -13,7 +15,12 @@ public Join( Socket socket ) { @Override protected void readResponse(InputStream in) throws IOException { - //ok, we don't really care about the response for join + //get the emulator port number + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + String p = br.readLine(); + String name = "emulator-" + p; + name = name.trim(); + dk.itu.android.bluetooth.BluetoothAdapter.getDefaultAdapter().setName(name); } @Override diff --git a/btsim-server/src/dk/itu/btemu/cmd/Discovery.java b/btsim-server/src/dk/itu/btemu/cmd/Discovery.java index adbed90..dd56da9 100644 --- a/btsim-server/src/dk/itu/btemu/cmd/Discovery.java +++ b/btsim-server/src/dk/itu/btemu/cmd/Discovery.java @@ -30,7 +30,7 @@ protected void writeResponse(OutputStream out) throws IOException { for( Device d : devices ) { if(d.getBtAddr().equals(btAddr)) continue; - String cur = d.getBtAddr() + "--" + d.getIpAddr() + "--"; + String cur = d.getBtAddr() + "--" + d.getIpAddr() + "--" + d.getName() + "--"; boolean f = true; for(Service s : d.getServices()) { if(f){f=!f;}else{cur+="<><>";} diff --git a/btsim-server/src/dk/itu/btemu/cmd/Join.java b/btsim-server/src/dk/itu/btemu/cmd/Join.java index 7a90720..5f4356e 100644 --- a/btsim-server/src/dk/itu/btemu/cmd/Join.java +++ b/btsim-server/src/dk/itu/btemu/cmd/Join.java @@ -11,6 +11,7 @@ import dk.itu.btemu.state.Device; public class Join extends BaseCommand { + int port = -1; public Join(Socket s, InputStreamReader in) { super(s,in); @@ -30,6 +31,7 @@ protected void work( List params ) throws Exception { BTMacForwardingsChecker checker = new BTMacForwardingsChecker(); System.out.println("running checker..."); checker.run(); + port = device.getEmulatorPort(); } else { device.setAndroidEmulator(false); } @@ -37,6 +39,9 @@ protected void work( List params ) throws Exception { @Override protected void writeResponse(OutputStream out) throws IOException { + if(port > 0) { + out.write( (port+"\n").getBytes("UTF-8") ); + } } diff --git a/btsim-server/src/dk/itu/btemu/state/Device.java b/btsim-server/src/dk/itu/btemu/state/Device.java index 13a40c9..c616887 100644 --- a/btsim-server/src/dk/itu/btemu/state/Device.java +++ b/btsim-server/src/dk/itu/btemu/state/Device.java @@ -7,6 +7,7 @@ public class Device { String ipAddr; String btAddr; + String name; boolean isAndroidEmulator = true; @@ -44,10 +45,14 @@ public String getBtAddr() { public String getIpAddr() { return ipAddr; } + public String getName() { + return name; + } public List getServices() { return services; } public void setEmulatorPort(int emulatorPort) { + this.name = "emulator-"+emulatorPort; this.emulatorPort = emulatorPort; } public int getEmulatorPort() {