diff --git a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothFactory.java b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothFactory.java index 65feaf7b..e809c78d 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothFactory.java +++ b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothFactory.java @@ -73,6 +73,9 @@ public class BluetoothFactory { if (name.equals("Health Scale".toLowerCase(Locale.US))) { return new BluetoothOneByone(context); } + if (name.equals("SENSSUN FAT".toLowerCase(Locale.US))) { + return new BluetoothSenssun(context); + } if (name.startsWith("SANITAS SBF70".toLowerCase(Locale.US)) || name.startsWith("sbf75")) { return new BluetoothBeurerSanitas(context, BluetoothBeurerSanitas.DeviceType.SANITAS_SBF70_70); } diff --git a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothSenssun.java b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothSenssun.java new file mode 100644 index 00000000..9256bd62 --- /dev/null +++ b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothSenssun.java @@ -0,0 +1,186 @@ +/* Copyright (C) 2018 Marco Gittler +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see +*/ + +package com.health.openscale.core.bluetooth; + +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCharacteristic; +import android.content.Context; + +import com.health.openscale.core.OpenScale; +import com.health.openscale.core.datatypes.ScaleMeasurement; +import com.health.openscale.core.datatypes.ScaleUser; +import com.health.openscale.core.utils.Converters; + +import java.util.Date; +import java.util.UUID; + +import timber.log.Timber; + +public class BluetoothSenssun extends BluetoothCommunication { + private final UUID WEIGHT_MEASUREMENT_SERVICE = UUID.fromString("0000fff0-0000-1000-8000-00805f9b34fb"); + private final UUID WEIGHT_MEASUREMENT_CHARACTERISTIC = UUID.fromString("0000fff1-0000-1000-8000-00805f9b34fb"); // read, notify + private final UUID CMD_MEASUREMENT_CHARACTERISTIC = UUID.fromString("0000fff2-0000-1000-8000-00805f9b34fb"); // write only + + + private Date lastWeighted= new Date(); + private ScaleUser user; + private int gotData; + private int FatMus=0; + private ScaleMeasurement measurement; + + public BluetoothSenssun(Context context) { + super(context); + } + + @Override + public String driverName() { + return "Senssun"; + } + + private void sendUserData(){ + final ScaleUser selectedUser = OpenScale.getInstance().getSelectedScaleUser(); + + byte gender = selectedUser.getGender().isMale() ? (byte)0x01 : (byte)0xf1; // 00 - male; 01 - female + byte height = (byte)(((int)selectedUser.getBodyHeight()) & 0xff); // cm + byte age = (byte)(selectedUser.getAge() & 0xff); + + int userId = selectedUser.getId(); + + Timber.d("Request Saved User Measurements "); + byte cmdByte[] = {(byte)0xa5,(byte)0x10,gender,age,height,(byte)0,(byte)0x0,(byte)0x0d2,(byte)0x00}; + + byte verify = 0; + for(int i=1;i