diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java index e1f8b3bad..f121512c4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java @@ -28,6 +28,7 @@ import androidx.annotation.RequiresApi; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.NotifyAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.ReadAction; +import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.RequestConnectionPriorityAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.RequestMtuAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WaitAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction; @@ -66,6 +67,12 @@ public class TransactionBuilder { ); } + public TransactionBuilder requestConnectionPriority(int mtu){ + return add( + new RequestConnectionPriorityAction(mtu) + ); + } + public TransactionBuilder notify(BluetoothGattCharacteristic characteristic, boolean enable) { if (characteristic == null) { LOG.warn("Unable to notify characteristic: null"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/RequestConnectionPriorityAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/RequestConnectionPriorityAction.java new file mode 100644 index 000000000..d5666f68c --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/RequestConnectionPriorityAction.java @@ -0,0 +1,43 @@ +/* Copyright (C) 2023 José Rebelo + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.btle.actions; + +import android.annotation.SuppressLint; +import android.bluetooth.BluetoothGatt; + +import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction; + +public class RequestConnectionPriorityAction extends BtLEAction { + private int priority; + + public RequestConnectionPriorityAction(int priority) { + super(null); + this.priority = priority; + } + + + @Override + public boolean expectsResult() { + return true; + } + + @Override + @SuppressLint("MissingPermission") + public boolean run(final BluetoothGatt gatt) { + return gatt.requestConnectionPriority(priority); + } +}