From 916fb6b768f407e59296753055b239865012cf76 Mon Sep 17 00:00:00 2001 From: Damien 'Psolyca' Gaignon Date: Tue, 18 Jul 2023 18:25:59 +0200 Subject: [PATCH] Add customize buffer size on BTBRQueue --- .../service/btbr/AbstractBTBRDeviceSupport.java | 11 ++++++++++- .../gadgetbridge/service/btbr/BtBRQueue.java | 6 ++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/AbstractBTBRDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/AbstractBTBRDeviceSupport.java index 053fb8a3b..7cc0e260c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/AbstractBTBRDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/AbstractBTBRDeviceSupport.java @@ -42,6 +42,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.CheckInitialize public abstract class AbstractBTBRDeviceSupport extends AbstractDeviceSupport implements SocketCallback { private BtBRQueue mQueue; private UUID mSupportedService = null; + private int mBufferSize = 1024; private Logger logger; public AbstractBTBRDeviceSupport(Logger logger) { @@ -54,7 +55,7 @@ public abstract class AbstractBTBRDeviceSupport extends AbstractDeviceSupport im @Override public boolean connect() { if (mQueue == null) { - mQueue = new BtBRQueue(getBluetoothAdapter(), getDevice(), getContext(), this, getSupportedService()); + mQueue = new BtBRQueue(getBluetoothAdapter(), getDevice(), getContext(), this, getSupportedService(), getBufferSize()); } return mQueue.connect(); } @@ -117,6 +118,14 @@ public abstract class AbstractBTBRDeviceSupport extends AbstractDeviceSupport im return mSupportedService; } + protected void setBufferSize(int bufferSize) { + mBufferSize = bufferSize; + } + + protected int getBufferSize() { + return mBufferSize; + } + /** * Utility method that may be used to log incoming messages when we don't know how to deal with them yet. * diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/BtBRQueue.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/BtBRQueue.java index 3cfbf6da6..005a62b13 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/BtBRQueue.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/BtBRQueue.java @@ -56,6 +56,7 @@ public final class BtBRQueue { private Context mContext; private CountDownLatch mConnectionLatch; private CountDownLatch mAvailableData; + private int mBufferSize; private Thread writeThread = new Thread("Gadgetbridge IO writeThread") { @Override @@ -124,7 +125,7 @@ public final class BtBRQueue { mAvailableData.countDown(); } } - byte[] data = new byte[1024]; + byte[] data = new byte[mBufferSize]; int len = mBtSocket.getInputStream().read(data); LOG.debug("Received data: " + StringUtils.bytesToHex(data)); mCallback.onSocketRead(Arrays.copyOf(data, len)); @@ -140,12 +141,13 @@ public final class BtBRQueue { } }; - public BtBRQueue(BluetoothAdapter btAdapter, GBDevice gbDevice, Context context, SocketCallback socketCallback, UUID supportedService) { + public BtBRQueue(BluetoothAdapter btAdapter, GBDevice gbDevice, Context context, SocketCallback socketCallback, UUID supportedService, int bufferSize) { mBtAdapter = btAdapter; mGbDevice = gbDevice; mContext = context; mCallback = socketCallback; mService = supportedService; + mBufferSize = bufferSize; writeThread.start(); readThread.start();