mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-26 10:35:50 +01:00
Pebble 2/LE: Add setting to limit the MTU (for debugging broken BLE stacks)
This commit is contained in:
parent
771ca948a4
commit
bd5dc6bfbc
@ -10,6 +10,8 @@ import java.io.IOException;
|
|||||||
import java.io.PipedInputStream;
|
import java.io.PipedInputStream;
|
||||||
import java.io.PipedOutputStream;
|
import java.io.PipedOutputStream;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||||
|
|
||||||
public class PebbleLESupport {
|
public class PebbleLESupport {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PebbleLESupport.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PebbleLESupport.class);
|
||||||
private final BluetoothDevice mBtDevice;
|
private final BluetoothDevice mBtDevice;
|
||||||
@ -19,6 +21,7 @@ public class PebbleLESupport {
|
|||||||
private PipedInputStream mPipedInputStream;
|
private PipedInputStream mPipedInputStream;
|
||||||
private PipedOutputStream mPipedOutputStream;
|
private PipedOutputStream mPipedOutputStream;
|
||||||
private int mMTU = 20;
|
private int mMTU = 20;
|
||||||
|
private int mMTULimit = Integer.MAX_VALUE;
|
||||||
boolean mIsConnected = false;
|
boolean mIsConnected = false;
|
||||||
|
|
||||||
public PebbleLESupport(Context context, final BluetoothDevice btDevice, PipedInputStream pipedInputStream, PipedOutputStream pipedOutputStream) throws IOException {
|
public PebbleLESupport(Context context, final BluetoothDevice btDevice, PipedInputStream pipedInputStream, PipedOutputStream pipedOutputStream) throws IOException {
|
||||||
@ -31,6 +34,9 @@ public class PebbleLESupport {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("could not connect input stream");
|
LOG.warn("could not connect input stream");
|
||||||
}
|
}
|
||||||
|
mMTULimit = GBApplication.getPrefs().getInt("pebble_mtu_limit", 512);
|
||||||
|
mMTULimit = Math.max(mMTULimit, 20);
|
||||||
|
mMTULimit = Math.min(mMTULimit, 512);
|
||||||
|
|
||||||
mPebbleGATTServer = new PebbleGATTServer(this, context, mBtDevice);
|
mPebbleGATTServer = new PebbleGATTServer(this, context, mBtDevice);
|
||||||
if (mPebbleGATTServer.initialize()) {
|
if (mPebbleGATTServer.initialize()) {
|
||||||
@ -99,7 +105,7 @@ public class PebbleLESupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setMTU(int mtu) {
|
void setMTU(int mtu) {
|
||||||
mMTU = mtu;
|
mMTU = Math.min(mtu, mMTULimit);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PipeReader extends Thread {
|
private class PipeReader extends Thread {
|
||||||
|
@ -120,6 +120,8 @@
|
|||||||
<string name="pref_summary_pebble_forceuntested">Enable features that are untested. ENABLE ONLY IF YOU KNOW WHAT YOU ARE DOING!</string>
|
<string name="pref_summary_pebble_forceuntested">Enable features that are untested. ENABLE ONLY IF YOU KNOW WHAT YOU ARE DOING!</string>
|
||||||
<string name="pref_title_pebble_forcele">Always prefer BLE</string>
|
<string name="pref_title_pebble_forcele">Always prefer BLE</string>
|
||||||
<string name="pref_summary_pebble_forcele">Use experimental Pebble LE support for all Pebbles instead of BT classic, requires paring a "Pebble LE" after non LE had been connected once</string>
|
<string name="pref_summary_pebble_forcele">Use experimental Pebble LE support for all Pebbles instead of BT classic, requires paring a "Pebble LE" after non LE had been connected once</string>
|
||||||
|
<string name="pref_title_pebble_mtu_limit">Pebble 2/LE GATT MTU limit</string>
|
||||||
|
<string name="pref_summary_pebble_mtu_limit">If your Pebble 2/Pebble LE does not work as expected, try this setting to limit the MTU (valid range 20–512)</string>
|
||||||
<string name="pref_title_pebble_enable_applogs">Enable Watch App Logging</string>
|
<string name="pref_title_pebble_enable_applogs">Enable Watch App Logging</string>
|
||||||
<string name="pref_summary_pebble_enable_applogs">Will cause logs from watch apps to be logged by Gadgetbridge (requires reconnect)</string>
|
<string name="pref_summary_pebble_enable_applogs">Will cause logs from watch apps to be logged by Gadgetbridge (requires reconnect)</string>
|
||||||
|
|
||||||
|
@ -341,6 +341,13 @@
|
|||||||
android:key="pebble_force_le"
|
android:key="pebble_force_le"
|
||||||
android:summary="@string/pref_summary_pebble_forcele"
|
android:summary="@string/pref_summary_pebble_forcele"
|
||||||
android:title="@string/pref_title_pebble_forcele" />
|
android:title="@string/pref_title_pebble_forcele" />
|
||||||
|
<EditTextPreference
|
||||||
|
android:inputType="number"
|
||||||
|
android:key="pebble_mtu_limit"
|
||||||
|
android:maxLength="3"
|
||||||
|
android:defaultValue="512"
|
||||||
|
android:title="@string/pref_title_pebble_mtu_limit"
|
||||||
|
android:summary="@string/pref_summary_pebble_mtu_limit" />
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="pebble_enable_applogs"
|
android:key="pebble_enable_applogs"
|
||||||
|
Loading…
Reference in New Issue
Block a user