mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-18 14:47:46 +01:00
Refactor Casio support for multiple watches
This commit is contained in:
parent
8a7670c893
commit
08ff70ac41
@ -15,11 +15,11 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.devices.casiogb6900;
|
package nodomain.freeyourgadget.gadgetbridge.devices.casio;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public final class CasioGB6900Constants {
|
public final class CasioConstants {
|
||||||
public static final UUID CASIO_VIRTUAL_SERVER_SERVICE = UUID.fromString("26eb0007-b012-49a8-b1f8-394fb2032b0f");
|
public static final UUID CASIO_VIRTUAL_SERVER_SERVICE = UUID.fromString("26eb0007-b012-49a8-b1f8-394fb2032b0f");
|
||||||
|
|
||||||
public static final UUID CASIO_VIRTUAL_SERVER_FEATURES = UUID.fromString("26eb0008-b012-49a8-b1f8-394fb2032b0f");
|
public static final UUID CASIO_VIRTUAL_SERVER_FEATURES = UUID.fromString("26eb0008-b012-49a8-b1f8-394fb2032b0f");
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.devices.casiogb6900;
|
package nodomain.freeyourgadget.gadgetbridge.devices.casio.gb6900;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@ -27,9 +27,11 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBException;
|
import nodomain.freeyourgadget.gadgetbridge.GBException;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
|
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
import nodomain.freeyourgadget.gadgetbridge.entities.Device;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
@ -43,13 +45,13 @@ public class CasioGB6900DeviceCoordinator extends AbstractDeviceCoordinator {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
|
public DeviceType getSupportedType(GBDeviceCandidate candidate) {
|
||||||
if (candidate.supportsService(CasioGB6900Constants.CASIO_VIRTUAL_SERVER_SERVICE)) {
|
if (candidate.supportsService(CasioConstants.CASIO_VIRTUAL_SERVER_SERVICE)) {
|
||||||
return DeviceType.CASIOGB6900;
|
return DeviceType.CASIOGB6900;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = candidate.getDevice().getName();
|
String name = candidate.getDevice().getName();
|
||||||
if (name != null) {
|
if (name != null) {
|
||||||
if (name.startsWith("CASIO")) {
|
if (name.startsWith("CASIO") && (name.endsWith("6900B") || name.endsWith("5600B"))) {
|
||||||
return DeviceType.CASIOGB6900;
|
return DeviceType.CASIOGB6900;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,7 +32,7 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.banglejs.BangleJSDeviceSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.banglejs.BangleJSDeviceSupport;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900.CasioGB6900DeviceSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.CasioGB6900DeviceSupport;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.hplus.HPlusSupport;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiSupport;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband5.AmazfitBand5Support;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.amazfitband5.AmazfitBand5Support;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900;
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.casio;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.bluetooth.BluetoothGatt;
|
import android.bluetooth.BluetoothGatt;
|
||||||
@ -38,7 +38,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl;
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicControl;
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicControl;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.casiogb6900.CasioGB6900Constants;
|
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
|
import nodomain.freeyourgadget.gadgetbridge.model.Alarm;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec;
|
||||||
@ -53,7 +53,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.GattCharacteristic;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.GattService;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.GattService;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.ServerTransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.ServerTransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900.operations.InitOperation;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.operations.InitOperationGB6900;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
private MusicSpec mBufferMusicSpec = null;
|
private MusicSpec mBufferMusicSpec = null;
|
||||||
private MusicStateSpec mBufferMusicStateSpec = null;
|
private MusicStateSpec mBufferMusicStateSpec = null;
|
||||||
private BluetoothGatt mBtGatt = null;
|
private BluetoothGatt mBtGatt = null;
|
||||||
private CasioGB6900Constants.Model mModel = CasioGB6900Constants.Model.MODEL_CASIO_GENERIC;
|
private CasioConstants.Model mModel = CasioConstants.Model.MODEL_CASIO_GENERIC;
|
||||||
private boolean mFirstConnect = false;
|
private boolean mFirstConnect = false;
|
||||||
|
|
||||||
private static final int mCasioSleepTime = 50;
|
private static final int mCasioSleepTime = 50;
|
||||||
@ -73,26 +73,26 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
public CasioGB6900DeviceSupport() {
|
public CasioGB6900DeviceSupport() {
|
||||||
super(LOG);
|
super(LOG);
|
||||||
addSupportedService(GattService.UUID_SERVICE_IMMEDIATE_ALERT);
|
addSupportedService(GattService.UUID_SERVICE_IMMEDIATE_ALERT);
|
||||||
addSupportedService(CasioGB6900Constants.CASIO_VIRTUAL_SERVER_SERVICE);
|
addSupportedService(CasioConstants.CASIO_VIRTUAL_SERVER_SERVICE);
|
||||||
addSupportedService(CasioGB6900Constants.ALERT_SERVICE_UUID);
|
addSupportedService(CasioConstants.ALERT_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.CASIO_IMMEDIATE_ALERT_SERVICE_UUID);
|
addSupportedService(CasioConstants.CASIO_IMMEDIATE_ALERT_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.CURRENT_TIME_SERVICE_UUID);
|
addSupportedService(CasioConstants.CURRENT_TIME_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.WATCH_CTRL_SERVICE_UUID);
|
addSupportedService(CasioConstants.WATCH_CTRL_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.WATCH_FEATURES_SERVICE_UUID);
|
addSupportedService(CasioConstants.WATCH_FEATURES_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.CASIO_PHONE_ALERT_STATUS_SERVICE);
|
addSupportedService(CasioConstants.CASIO_PHONE_ALERT_STATUS_SERVICE);
|
||||||
addSupportedService(CasioGB6900Constants.MORE_ALERT_SERVICE_UUID);
|
addSupportedService(CasioConstants.MORE_ALERT_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.TX_POWER_SERVICE_UUID);
|
addSupportedService(CasioConstants.TX_POWER_SERVICE_UUID);
|
||||||
addSupportedService(CasioGB6900Constants.LINK_LOSS_SERVICE);
|
addSupportedService(CasioConstants.LINK_LOSS_SERVICE);
|
||||||
addSupportedService(CasioGB6900Constants.IMMEDIATE_ALERT_SERVICE_UUID);
|
addSupportedService(CasioConstants.IMMEDIATE_ALERT_SERVICE_UUID);
|
||||||
|
|
||||||
BluetoothGattService casioGATTService = new BluetoothGattService(CasioGB6900Constants.WATCH_CTRL_SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
|
BluetoothGattService casioGATTService = new BluetoothGattService(CasioConstants.WATCH_CTRL_SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
|
||||||
BluetoothGattCharacteristic bluetoothGATTCharacteristic = new BluetoothGattCharacteristic(CasioGB6900Constants.KEY_CONTAINER_CHARACTERISTIC_UUID, BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE, BluetoothGattCharacteristic.PERMISSION_WRITE);
|
BluetoothGattCharacteristic bluetoothGATTCharacteristic = new BluetoothGattCharacteristic(CasioConstants.KEY_CONTAINER_CHARACTERISTIC_UUID, BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE, BluetoothGattCharacteristic.PERMISSION_WRITE);
|
||||||
bluetoothGATTCharacteristic.setValue(new byte[0]);
|
bluetoothGATTCharacteristic.setValue(new byte[0]);
|
||||||
|
|
||||||
BluetoothGattCharacteristic bluetoothGATTCharacteristic2 = new BluetoothGattCharacteristic(CasioGB6900Constants.NAME_OF_APP_CHARACTERISTIC_UUID, BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattCharacteristic.PERMISSION_READ_ENCRYPTED);
|
BluetoothGattCharacteristic bluetoothGATTCharacteristic2 = new BluetoothGattCharacteristic(CasioConstants.NAME_OF_APP_CHARACTERISTIC_UUID, BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattCharacteristic.PERMISSION_READ_ENCRYPTED);
|
||||||
bluetoothGATTCharacteristic2.setValue(CasioGB6900Constants.MUSIC_MESSAGE.getBytes());
|
bluetoothGATTCharacteristic2.setValue(CasioConstants.MUSIC_MESSAGE.getBytes());
|
||||||
|
|
||||||
BluetoothGattDescriptor bluetoothGattDescriptor = new BluetoothGattDescriptor(CasioGB6900Constants.CCC_DESCRIPTOR_UUID, BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE);
|
BluetoothGattDescriptor bluetoothGattDescriptor = new BluetoothGattDescriptor(CasioConstants.CCC_DESCRIPTOR_UUID, BluetoothGattDescriptor.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE);
|
||||||
bluetoothGattDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
|
bluetoothGattDescriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
|
||||||
|
|
||||||
bluetoothGATTCharacteristic2.addDescriptor(bluetoothGattDescriptor);
|
bluetoothGATTCharacteristic2.addDescriptor(bluetoothGattDescriptor);
|
||||||
@ -147,15 +147,15 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
String name = gbDevice.getName();
|
String name = gbDevice.getName();
|
||||||
|
|
||||||
if(name.contains("5600B")) {
|
if(name.contains("5600B")) {
|
||||||
mModel = CasioGB6900Constants.Model.MODEL_CASIO_5600B;
|
mModel = CasioConstants.Model.MODEL_CASIO_5600B;
|
||||||
} else if(name.contains("6900B")) {
|
} else if(name.contains("6900B")) {
|
||||||
mModel = CasioGB6900Constants.Model.MODEL_CASIO_6900B;
|
mModel = CasioConstants.Model.MODEL_CASIO_6900B;
|
||||||
} else {
|
} else {
|
||||||
mModel = CasioGB6900Constants.Model.MODEL_CASIO_GENERIC;
|
mModel = CasioConstants.Model.MODEL_CASIO_GENERIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
new InitOperation(this, builder).perform();
|
new InitOperationGB6900(this, builder).perform();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
GB.toast(getContext(), "Initializing Casio watch failed", Toast.LENGTH_SHORT, GB.ERROR, e);
|
GB.toast(getContext(), "Initializing Casio watch failed", Toast.LENGTH_SHORT, GB.ERROR, e);
|
||||||
}
|
}
|
||||||
@ -180,7 +180,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
CasioGB6900Constants.Model getModel() {
|
CasioConstants.Model getModel() {
|
||||||
return mModel;
|
return mModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,18 +192,18 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
|
|
||||||
byte[] value = new byte[]{GattCharacteristic.MILD_ALERT};
|
byte[] value = new byte[]{GattCharacteristic.MILD_ALERT};
|
||||||
|
|
||||||
BluetoothGattService llService = mBtGatt.getService(CasioGB6900Constants.LINK_LOSS_SERVICE);
|
BluetoothGattService llService = mBtGatt.getService(CasioConstants.LINK_LOSS_SERVICE);
|
||||||
BluetoothGattCharacteristic charact = llService.getCharacteristic(CasioGB6900Constants.ALERT_LEVEL_CHARACTERISTIC_UUID);
|
BluetoothGattCharacteristic charact = llService.getCharacteristic(CasioConstants.ALERT_LEVEL_CHARACTERISTIC_UUID);
|
||||||
builder.write(charact, value);
|
builder.write(charact, value);
|
||||||
builder.wait(mCasioSleepTime);
|
builder.wait(mCasioSleepTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addCharacteristics() {
|
private void addCharacteristics() {
|
||||||
mCasioCharacteristics.clear();
|
mCasioCharacteristics.clear();
|
||||||
mCasioCharacteristics.add(getCharacteristic(CasioGB6900Constants.CASIO_A_NOT_COM_SET_NOT));
|
mCasioCharacteristics.add(getCharacteristic(CasioConstants.CASIO_A_NOT_COM_SET_NOT));
|
||||||
mCasioCharacteristics.add(getCharacteristic(CasioGB6900Constants.CASIO_A_NOT_W_REQ_NOT));
|
mCasioCharacteristics.add(getCharacteristic(CasioConstants.CASIO_A_NOT_W_REQ_NOT));
|
||||||
mCasioCharacteristics.add(getCharacteristic(CasioGB6900Constants.ALERT_LEVEL_CHARACTERISTIC_UUID));
|
mCasioCharacteristics.add(getCharacteristic(CasioConstants.ALERT_LEVEL_CHARACTERISTIC_UUID));
|
||||||
mCasioCharacteristics.add(getCharacteristic(CasioGB6900Constants.RINGER_CONTROL_POINT));
|
mCasioCharacteristics.add(getCharacteristic(CasioConstants.RINGER_CONTROL_POINT));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean enableNotifications(TransactionBuilder builder, boolean enable) {
|
public boolean enableNotifications(TransactionBuilder builder, boolean enable) {
|
||||||
@ -217,7 +217,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
public void readTxPowerLevel() {
|
public void readTxPowerLevel() {
|
||||||
try {
|
try {
|
||||||
TransactionBuilder builder = performInitialized("readTxPowerLevel");
|
TransactionBuilder builder = performInitialized("readTxPowerLevel");
|
||||||
builder.read(getCharacteristic(CasioGB6900Constants.TX_POWER_LEVEL_CHARACTERISTIC_UUID));
|
builder.read(getCharacteristic(CasioConstants.TX_POWER_LEVEL_CHARACTERISTIC_UUID));
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("readTxPowerLevel failed: " + e.getMessage());
|
LOG.warn("readTxPowerLevel failed: " + e.getMessage());
|
||||||
@ -243,7 +243,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
arr[8] = (byte)(int) TimeUnit.MILLISECONDS.toSeconds(256 * cal.get(Calendar.MILLISECOND));
|
arr[8] = (byte)(int) TimeUnit.MILLISECONDS.toSeconds(256 * cal.get(Calendar.MILLISECOND));
|
||||||
arr[9] = 1; // or 0?
|
arr[9] = 1; // or 0?
|
||||||
|
|
||||||
BluetoothGattCharacteristic charact = getCharacteristic(CasioGB6900Constants.CURRENT_TIME_CHARACTERISTIC_UUID);
|
BluetoothGattCharacteristic charact = getCharacteristic(CasioConstants.CURRENT_TIME_CHARACTERISTIC_UUID);
|
||||||
if(charact != null) {
|
if(charact != null) {
|
||||||
charact.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
|
charact.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
|
||||||
builder.write(charact, arr);
|
builder.write(charact, arr);
|
||||||
@ -259,7 +259,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
int dstOffset = (int)TimeUnit.MILLISECONDS.toMinutes(cal.get(Calendar.DST_OFFSET));
|
int dstOffset = (int)TimeUnit.MILLISECONDS.toMinutes(cal.get(Calendar.DST_OFFSET));
|
||||||
byte byte0 = (byte)(zoneOffset / 15);
|
byte byte0 = (byte)(zoneOffset / 15);
|
||||||
byte byte1 = (byte)(dstOffset / 15);
|
byte byte1 = (byte)(dstOffset / 15);
|
||||||
BluetoothGattCharacteristic charact = getCharacteristic(CasioGB6900Constants.LOCAL_TIME_CHARACTERISTIC_UUID);
|
BluetoothGattCharacteristic charact = getCharacteristic(CasioConstants.LOCAL_TIME_CHARACTERISTIC_UUID);
|
||||||
if(charact != null) {
|
if(charact != null) {
|
||||||
builder.write(charact, new byte[]{byte0, byte1});
|
builder.write(charact, new byte[]{byte0, byte1});
|
||||||
}
|
}
|
||||||
@ -276,7 +276,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
byte0 |= 4; // Casio Phone Alert Status Service
|
byte0 |= 4; // Casio Phone Alert Status Service
|
||||||
byte0 |= 8; // Casio Immediate Alert Service
|
byte0 |= 8; // Casio Immediate Alert Service
|
||||||
|
|
||||||
BluetoothGattCharacteristic charact = getCharacteristic(CasioGB6900Constants.CASIO_VIRTUAL_SERVER_FEATURES);
|
BluetoothGattCharacteristic charact = getCharacteristic(CasioConstants.CASIO_VIRTUAL_SERVER_FEATURES);
|
||||||
if(charact != null) {
|
if(charact != null) {
|
||||||
builder.write(charact, new byte[]{byte0, 0x00});
|
builder.write(charact, new byte[]{byte0, 0x00});
|
||||||
}
|
}
|
||||||
@ -391,7 +391,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
if(data.length == 0)
|
if(data.length == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.TX_POWER_LEVEL_CHARACTERISTIC_UUID)) {
|
if(characteristicUUID.equals(CasioConstants.TX_POWER_LEVEL_CHARACTERISTIC_UUID)) {
|
||||||
StringBuilder str = new StringBuilder("onCharacteristicRead: Received power level: ");
|
StringBuilder str = new StringBuilder("onCharacteristicRead: Received power level: ");
|
||||||
for(int i=0; i<data.length; i++) {
|
for(int i=0; i<data.length; i++) {
|
||||||
str.append(String.format("0x%1x ", data[i]));
|
str.append(String.format("0x%1x ", data[i]));
|
||||||
@ -415,15 +415,15 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
if (data.length == 0)
|
if (data.length == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.CASIO_A_NOT_W_REQ_NOT)) {
|
if(characteristicUUID.equals(CasioConstants.CASIO_A_NOT_W_REQ_NOT)) {
|
||||||
handled = handleCasioCom(data, true);
|
handled = handleCasioCom(data, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.CASIO_A_NOT_COM_SET_NOT)) {
|
if(characteristicUUID.equals(CasioConstants.CASIO_A_NOT_COM_SET_NOT)) {
|
||||||
handled = handleCasioCom(data, false);
|
handled = handleCasioCom(data, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.ALERT_LEVEL_CHARACTERISTIC_UUID)) {
|
if(characteristicUUID.equals(CasioConstants.ALERT_LEVEL_CHARACTERISTIC_UUID)) {
|
||||||
GBDeviceEventFindPhone findPhoneEvent = new GBDeviceEventFindPhone();
|
GBDeviceEventFindPhone findPhoneEvent = new GBDeviceEventFindPhone();
|
||||||
if(data[0] == 0x02) {
|
if(data[0] == 0x02) {
|
||||||
findPhoneEvent.event = GBDeviceEventFindPhone.Event.START;
|
findPhoneEvent.event = GBDeviceEventFindPhone.Event.START;
|
||||||
@ -435,7 +435,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
handled = true;
|
handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.RINGER_CONTROL_POINT)) {
|
if(characteristicUUID.equals(CasioConstants.RINGER_CONTROL_POINT)) {
|
||||||
if(data[0] == 0x02)
|
if(data[0] == 0x02)
|
||||||
{
|
{
|
||||||
GBDeviceEventCallControl callControlEvent = new GBDeviceEventCallControl();
|
GBDeviceEventCallControl callControlEvent = new GBDeviceEventCallControl();
|
||||||
@ -466,7 +466,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
msg[1] = 1;
|
msg[1] = 1;
|
||||||
System.arraycopy(titleBytes, 0, msg, 2, len);
|
System.arraycopy(titleBytes, 0, msg, 2, len);
|
||||||
|
|
||||||
builder.write(getCharacteristic(CasioGB6900Constants.ALERT_CHARACTERISTIC_UUID), msg);
|
builder.write(getCharacteristic(CasioConstants.ALERT_CHARACTERISTIC_UUID), msg);
|
||||||
LOG.info("Showing notification, title: " + title + " message (not sent): " + message);
|
LOG.info("Showing notification, title: " + title + " message (not sent): " + message);
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -485,16 +485,16 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
byte icon;
|
byte icon;
|
||||||
switch (notificationSpec.type) {
|
switch (notificationSpec.type) {
|
||||||
case GENERIC_SMS:
|
case GENERIC_SMS:
|
||||||
icon = CasioGB6900Constants.SMS_NOTIFICATION_ID;
|
icon = CasioConstants.SMS_NOTIFICATION_ID;
|
||||||
break;
|
break;
|
||||||
case GENERIC_CALENDAR:
|
case GENERIC_CALENDAR:
|
||||||
icon = CasioGB6900Constants.CALENDAR_NOTIFICATION_ID;
|
icon = CasioConstants.CALENDAR_NOTIFICATION_ID;
|
||||||
break;
|
break;
|
||||||
case GENERIC_EMAIL:
|
case GENERIC_EMAIL:
|
||||||
icon = CasioGB6900Constants.MAIL_NOTIFICATION_ID;
|
icon = CasioConstants.MAIL_NOTIFICATION_ID;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
icon = CasioGB6900Constants.SNS_NOTIFICATION_ID;
|
icon = CasioConstants.SNS_NOTIFICATION_ID;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
showNotification(icon, notificationTitle, notificationSpec.body);
|
showNotification(icon, notificationTitle, notificationSpec.body);
|
||||||
@ -530,7 +530,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
TransactionBuilder builder = performInitialized("setAlarm");
|
TransactionBuilder builder = performInitialized("setAlarm");
|
||||||
builder.write(getCharacteristic(CasioGB6900Constants.CASIO_SETTING_FOR_ALM_CHARACTERISTIC_UUID), data);
|
builder.write(getCharacteristic(CasioConstants.CASIO_SETTING_FOR_ALM_CHARACTERISTIC_UUID), data);
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
LOG.error("Error setting alarm: " + e.getMessage());
|
LOG.error("Error setting alarm: " + e.getMessage());
|
||||||
@ -556,7 +556,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
public void onSetCallState(CallSpec callSpec) {
|
public void onSetCallState(CallSpec callSpec) {
|
||||||
switch (callSpec.command) {
|
switch (callSpec.command) {
|
||||||
case CallSpec.CALL_INCOMING:
|
case CallSpec.CALL_INCOMING:
|
||||||
showNotification(CasioGB6900Constants.CALL_NOTIFICATION_ID, callSpec.name, callSpec.number);
|
showNotification(CasioConstants.CALL_NOTIFICATION_ID, callSpec.name, callSpec.number);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG.info("not sending CallSpec since only CALL_INCOMING is handled");
|
LOG.info("not sending CallSpec since only CALL_INCOMING is handled");
|
||||||
@ -602,7 +602,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
arr[1] = 10;
|
arr[1] = 10;
|
||||||
arr[2] = 1;
|
arr[2] = 1;
|
||||||
System.arraycopy(bInfo, 0, arr, 3, len);
|
System.arraycopy(bInfo, 0, arr, 3, len);
|
||||||
builder.write(getCharacteristic(CasioGB6900Constants.MORE_ALERT_FOR_LONG_UUID), arr);
|
builder.write(getCharacteristic(CasioConstants.MORE_ALERT_FOR_LONG_UUID), arr);
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("sendMusicInfo failed: " + e.getMessage());
|
LOG.warn("sendMusicInfo failed: " + e.getMessage());
|
||||||
@ -687,8 +687,8 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
TransactionBuilder builder = performInitialized("findDevice");
|
TransactionBuilder builder = performInitialized("findDevice");
|
||||||
byte[] value = new byte[]{GattCharacteristic.HIGH_ALERT};
|
byte[] value = new byte[]{GattCharacteristic.HIGH_ALERT};
|
||||||
|
|
||||||
BluetoothGattService service = mBtGatt.getService(CasioGB6900Constants.IMMEDIATE_ALERT_SERVICE_UUID);
|
BluetoothGattService service = mBtGatt.getService(CasioConstants.IMMEDIATE_ALERT_SERVICE_UUID);
|
||||||
BluetoothGattCharacteristic charact = service.getCharacteristic(CasioGB6900Constants.ALERT_LEVEL_CHARACTERISTIC_UUID);
|
BluetoothGattCharacteristic charact = service.getCharacteristic(CasioConstants.ALERT_LEVEL_CHARACTERISTIC_UUID);
|
||||||
builder.write(charact, value);
|
builder.write(charact, value);
|
||||||
LOG.info("onFindDevice sent");
|
LOG.info("onFindDevice sent");
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
@ -751,7 +751,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCharacteristicReadRequest(BluetoothDevice device, int requestId, int offset, BluetoothGattCharacteristic characteristic) {
|
public boolean onCharacteristicReadRequest(BluetoothDevice device, int requestId, int offset, BluetoothGattCharacteristic characteristic) {
|
||||||
|
|
||||||
if (!characteristic.getUuid().equals(CasioGB6900Constants.NAME_OF_APP_CHARACTERISTIC_UUID)) {
|
if (!characteristic.getUuid().equals(CasioConstants.NAME_OF_APP_CHARACTERISTIC_UUID)) {
|
||||||
LOG.warn("unexpected read request");
|
LOG.warn("unexpected read request");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -760,7 +760,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
ServerTransactionBuilder builder = performServer("sendNameOfApp");
|
ServerTransactionBuilder builder = performServer("sendNameOfApp");
|
||||||
builder.writeServerResponse(device, requestId, 0, offset, CasioGB6900Constants.MUSIC_MESSAGE.getBytes());
|
builder.writeServerResponse(device, requestId, 0, offset, CasioConstants.MUSIC_MESSAGE.getBytes());
|
||||||
builder.queue(getQueue());
|
builder.queue(getQueue());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("sendMusicInfo failed: " + e.getMessage());
|
LOG.warn("sendMusicInfo failed: " + e.getMessage());
|
||||||
@ -808,7 +808,7 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) {
|
boolean preparedWrite, boolean responseNeeded, int offset, byte[] value) {
|
||||||
|
|
||||||
GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl();
|
GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl();
|
||||||
if (!characteristic.getUuid().equals(CasioGB6900Constants.KEY_CONTAINER_CHARACTERISTIC_UUID)) {
|
if (!characteristic.getUuid().equals(CasioConstants.KEY_CONTAINER_CHARACTERISTIC_UUID)) {
|
||||||
LOG.warn("unexpected write request");
|
LOG.warn("unexpected write request");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900;
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.casio;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900.operations;
|
package nodomain.freeyourgadget.gadgetbridge.service.devices.casio.operations;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothGatt;
|
import android.bluetooth.BluetoothGatt;
|
||||||
import android.bluetooth.BluetoothGattCharacteristic;
|
import android.bluetooth.BluetoothGattCharacteristic;
|
||||||
@ -25,21 +25,21 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.casiogb6900.CasioGB6900Constants;
|
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.casiogb6900.CasioGB6900DeviceSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.CasioGB6900DeviceSupport;
|
||||||
|
|
||||||
public class InitOperation extends AbstractBTLEOperation<CasioGB6900DeviceSupport> {
|
public class InitOperationGB6900 extends AbstractBTLEOperation<CasioGB6900DeviceSupport> {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(InitOperation.class);
|
private static final Logger LOG = LoggerFactory.getLogger(InitOperationGB6900.class);
|
||||||
|
|
||||||
private final TransactionBuilder builder;
|
private final TransactionBuilder builder;
|
||||||
private byte[] mBleSettings = null;
|
private byte[] mBleSettings = null;
|
||||||
|
|
||||||
|
|
||||||
public InitOperation(CasioGB6900DeviceSupport support, TransactionBuilder builder) {
|
public InitOperationGB6900(CasioGB6900DeviceSupport support, TransactionBuilder builder) {
|
||||||
super(support);
|
super(support);
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
builder.setGattCallback(this);
|
builder.setGattCallback(this);
|
||||||
@ -50,7 +50,7 @@ public class InitOperation extends AbstractBTLEOperation<CasioGB6900DeviceSuppor
|
|||||||
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
|
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
|
||||||
TransactionBuilder builder = getSupport().createTransactionBuilder("readBleSettings");
|
TransactionBuilder builder = getSupport().createTransactionBuilder("readBleSettings");
|
||||||
builder.setGattCallback(this);
|
builder.setGattCallback(this);
|
||||||
builder.read(getCharacteristic(CasioGB6900Constants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID));
|
builder.read(getCharacteristic(CasioConstants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID));
|
||||||
getSupport().performImmediately(builder);
|
getSupport().performImmediately(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ public class InitOperation extends AbstractBTLEOperation<CasioGB6900DeviceSuppor
|
|||||||
try {
|
try {
|
||||||
TransactionBuilder builder = getSupport().createTransactionBuilder("writeBleInit");
|
TransactionBuilder builder = getSupport().createTransactionBuilder("writeBleInit");
|
||||||
builder.setGattCallback(this);
|
builder.setGattCallback(this);
|
||||||
builder.write(getCharacteristic(CasioGB6900Constants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID), mBleSettings);
|
builder.write(getCharacteristic(CasioConstants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID), mBleSettings);
|
||||||
getSupport().performImmediately(builder);
|
getSupport().performImmediately(builder);
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
LOG.error("Error writing BLE settings: " + e.getMessage());
|
LOG.error("Error writing BLE settings: " + e.getMessage());
|
||||||
@ -102,7 +102,7 @@ public class InitOperation extends AbstractBTLEOperation<CasioGB6900DeviceSuppor
|
|||||||
if(data.length == 0)
|
if(data.length == 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if(characteristicUUID.equals(CasioGB6900Constants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID)) {
|
if(characteristicUUID.equals(CasioConstants.CASIO_SETTING_FOR_BLE_CHARACTERISTIC_UUID)) {
|
||||||
mBleSettings = data;
|
mBleSettings = data;
|
||||||
StringBuilder str = new StringBuilder("Read Casio Setting for BLE: ");
|
StringBuilder str = new StringBuilder("Read Casio Setting for BLE: ");
|
||||||
for (byte datum : data) {
|
for (byte datum : data) {
|
@ -43,7 +43,7 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.UnknownDeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.UnknownDeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.banglejs.BangleJSCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.banglejs.BangleJSCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.casiogb6900.CasioGB6900DeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.casio.gb6900.CasioGB6900DeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.EXRIZUK8Coordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.EXRIZUK8Coordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.HPlusCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.hplus.MakibesF68Coordinator;
|
||||||
|
Loading…
Reference in New Issue
Block a user