mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: Make coordinators stateless
This commit is contained in:
+38
-50
@@ -52,14 +52,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiWorkout
|
||||
|
||||
public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordinator implements HuaweiCoordinatorSupplier {
|
||||
|
||||
private final HuaweiCoordinator huaweiCoordinator = new HuaweiCoordinator(this);
|
||||
private GBDevice device;
|
||||
|
||||
@Override
|
||||
public HuaweiCoordinator getHuaweiCoordinator() {
|
||||
return huaweiCoordinator;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<? extends ScanFilter> createBLEScanFilters() {
|
||||
@@ -75,7 +67,7 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public String[] getSupportedLanguageSettings(GBDevice device) {
|
||||
return huaweiCoordinator.getSupportedLanguageSettings(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportedLanguageSettings(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,7 +77,7 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
|
||||
huaweiCoordinator.deleteDevice(gbDevice, device, session);
|
||||
HuaweiDeviceStateManager.get(gbDevice).deleteDevice(gbDevice, device, session);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,7 +87,7 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public boolean supportsSmartWakeup(@NonNull GBDevice device, int position) {
|
||||
return huaweiCoordinator.supportsSmartAlarm(device, position);
|
||||
return HuaweiDeviceStateManager.get(device).supportsSmartAlarm(device, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -105,7 +97,7 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public boolean forcedSmartWakeup(GBDevice device, int alarmPosition) {
|
||||
return huaweiCoordinator.forcedSmartWakeup(device, alarmPosition);
|
||||
return HuaweiDeviceStateManager.get(device).forcedSmartWakeup(device, alarmPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,21 +107,21 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public boolean supportsWeather(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsWeather();
|
||||
return HuaweiDeviceStateManager.get(device).supportsWeather();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends Activity> getAppsManagementActivity(final GBDevice device) {
|
||||
return huaweiCoordinator.getAppManagerActivity();
|
||||
return HuaweiDeviceStateManager.get(device).getAppManagerActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAppListFetching(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsAppListFetching();
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsAppListFetching();
|
||||
}
|
||||
@Override
|
||||
public boolean supportsAppsManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsAppsManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsAppsManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -139,37 +131,37 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public boolean supportsInstalledAppManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsInstalledAppManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsInstalledAppManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCachedAppManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsCachedAppManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsCachedAppManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFlashing(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsFlashing();
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsFlashing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAlarmSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getAlarmSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getAlarmSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getContactsSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getContactsSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getContactsSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCannedRepliesSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getCannedRepliesSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getCannedRepliesSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCalendarEvents(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsCalendarEvents();
|
||||
return HuaweiDeviceStateManager.get(device).supportsCalendarEvents();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -194,54 +186,55 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public boolean supportsHeartRateMeasurement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsHeartRate(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsHeartRate(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSpo2(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsSPo2(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsSPo2(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMusicInfo(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsMusic();
|
||||
return HuaweiDeviceStateManager.get(device).supportsMusic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTemperatureMeasurement(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsTemperature();
|
||||
return HuaweiDeviceStateManager.get(device).supportsTemperature();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsContinuousTemperature(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsTemperature();
|
||||
return HuaweiDeviceStateManager.get(device).supportsTemperature();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStressMeasurement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsAutoStress();
|
||||
return HuaweiDeviceStateManager.get(device).supportsAutoStress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFindDevice(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsFindDeviceAbility();
|
||||
return HuaweiDeviceStateManager.get(device).supportsFindDeviceAbility();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsRemSleep(@NonNull GBDevice device) {return huaweiCoordinator.getSupportsNewTrueSleep(device);}
|
||||
public boolean supportsRemSleep(@NonNull GBDevice device) {return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device);}
|
||||
|
||||
@Override
|
||||
public boolean supportsAwakeSleep(@NonNull GBDevice device) {return huaweiCoordinator.getSupportsNewTrueSleep(device);}
|
||||
public boolean supportsAwakeSleep(@NonNull GBDevice device) {return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device);}
|
||||
|
||||
@Override
|
||||
public boolean supportsSleepScore(@NonNull final GBDevice device) { return huaweiCoordinator.getSupportsNewTrueSleep(device); }
|
||||
public boolean supportsSleepScore(@NonNull final GBDevice device) { return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device); }
|
||||
|
||||
@Override
|
||||
public boolean supportsHrvMeasurement(@NonNull GBDevice device) { return huaweiCoordinator.supportsHRV();}
|
||||
public boolean supportsHrvMeasurement(@NonNull GBDevice device) { return HuaweiDeviceStateManager.get(device).supportsHRV();}
|
||||
|
||||
@Override
|
||||
public InstallHandler findInstallHandler(Uri uri, Context context) {
|
||||
return huaweiCoordinator.getInstallHandler(uri, context);
|
||||
HuaweiInstallHandler handler = new HuaweiInstallHandler(uri, context);
|
||||
return handler.isValid() ? handler : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -281,7 +274,11 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public int[] getStressRanges() {
|
||||
return huaweiCoordinator.getStressRanges();
|
||||
// 1-29 = relaxed
|
||||
// 30-59 = mild
|
||||
// 60-79 = moderate
|
||||
// 80-100 = high
|
||||
return new int[]{1, 30, 60, 80};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -291,12 +288,13 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public int[] getStressChartParameters() {
|
||||
return huaweiCoordinator.getStressChartParameters();
|
||||
// For Huawei devices stress data is provided every 30 minutes. So draw it as bars with delta
|
||||
return new int[]{1800, 1800, 400};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
|
||||
return huaweiCoordinator.getDeviceSpecificSettings(device);
|
||||
return HuaweiDeviceStateManager.get(device).getDeviceSpecificSettings(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -304,16 +302,6 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
return HuaweiDeviceType.BR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDevice(GBDevice device) {
|
||||
this.device = device;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GBDevice getDevice() {
|
||||
return this.device;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Class<? extends DeviceSupport> getDeviceSupportClass(final GBDevice device) {
|
||||
@@ -327,11 +315,11 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin
|
||||
|
||||
@Override
|
||||
public HeartRateZonesSpec getHeartRateZonesSpec(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getHeartRateZonesSpec(device);
|
||||
return HuaweiDeviceStateManager.get(device).getHeartRateZonesSpec(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNavigation(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsNavigation(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsNavigation(device);
|
||||
}
|
||||
}
|
||||
|
||||
+64
-65
@@ -24,6 +24,7 @@ import android.text.TextUtils;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
@@ -98,9 +99,7 @@ public class HuaweiCoordinator {
|
||||
|
||||
private HuaweiMusicUtils.MusicCapabilities musicExtendedDeviceParams = null;
|
||||
|
||||
private final HuaweiCoordinatorSupplier parent;
|
||||
|
||||
private boolean transactionCrypted=true;
|
||||
private final String address;
|
||||
|
||||
private int maxContactsCount = 0;
|
||||
|
||||
@@ -109,12 +108,12 @@ public class HuaweiCoordinator {
|
||||
|
||||
private boolean navigationAvailable = false;
|
||||
|
||||
public HuaweiCoordinator(HuaweiCoordinatorSupplier parent) {
|
||||
this.parent = parent;
|
||||
public HuaweiCoordinator(final String address) {
|
||||
this.address = address;
|
||||
|
||||
// Set non-numeric capabilities
|
||||
this.expandCapabilities = GB.hexStringToByteArray(getCapabilitiesSharedPreferences().getString("expandCapabilities", "00"));
|
||||
this.notificationCapabilities = (byte)getCapabilitiesSharedPreferences().getInt("notificationCapabilities", -0x01);
|
||||
this.notificationCapabilities = (byte) getCapabilitiesSharedPreferences().getInt("notificationCapabilities", -0x01);
|
||||
this.notificationConstraints = ByteBuffer.wrap(GB.hexStringToByteArray(
|
||||
getCapabilitiesSharedPreferences().getString(
|
||||
"notificationConstraints",
|
||||
@@ -190,6 +189,7 @@ public class HuaweiCoordinator {
|
||||
HuaweiDictDataValuesDao.Properties.DictId.eq(data.getDictId())
|
||||
).buildDelete().executeDeleteWithoutDetachingEntities();
|
||||
}
|
||||
|
||||
session.getHuaweiDictDataDao().queryBuilder().where(HuaweiDictDataDao.Properties.DeviceId.eq(deviceId)).buildDelete().executeDeleteWithoutDetachingEntities();
|
||||
|
||||
QueryBuilder<HuaweiEcgSummarySample> qb4 = session.getHuaweiEcgSummarySampleDao().queryBuilder();
|
||||
@@ -203,7 +203,7 @@ public class HuaweiCoordinator {
|
||||
}
|
||||
|
||||
private SharedPreferences getCapabilitiesSharedPreferences() {
|
||||
return GBApplication.getContext().getSharedPreferences("huawei_coordinator_capatilities" + parent.getDeviceType().name(), Context.MODE_PRIVATE);
|
||||
return GBApplication.getContext().getSharedPreferences("huawei_coordinator_capabilities_" + address.toLowerCase(Locale.ROOT).replace(":", "_"), Context.MODE_PRIVATE);
|
||||
}
|
||||
|
||||
private SharedPreferences getDeviceSpecificSharedPreferences(GBDevice gbDevice) {
|
||||
@@ -226,7 +226,7 @@ public class HuaweiCoordinator {
|
||||
|
||||
public void saveNotificationCapabilities(byte capabilities) {
|
||||
notificationCapabilities = capabilities;
|
||||
getCapabilitiesSharedPreferences().edit().putInt("notificationCapabilities", (int)capabilities).apply();
|
||||
getCapabilitiesSharedPreferences().edit().putInt("notificationCapabilities", (int) capabilities).apply();
|
||||
}
|
||||
|
||||
public void saveNotificationConstraints(ByteBuffer constraints) {
|
||||
@@ -271,9 +271,9 @@ public class HuaweiCoordinator {
|
||||
// Print all Services ID and Commands ID
|
||||
public void printCommandsPerService() {
|
||||
StringBuilder msg = new StringBuilder();
|
||||
for(Map.Entry<Integer, byte[]> entry : commandsPerService.entrySet()) {
|
||||
for (Map.Entry<Integer, byte[]> entry : commandsPerService.entrySet()) {
|
||||
msg.append("ServiceID: ").append(Integer.toHexString(entry.getKey())).append(" => Commands: ");
|
||||
for (byte b: entry.getValue()) {
|
||||
for (byte b : entry.getValue()) {
|
||||
msg.append(Integer.toHexString(b)).append(" ");
|
||||
}
|
||||
msg.append("\n");
|
||||
@@ -328,39 +328,39 @@ public class HuaweiCoordinator {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_heartrate_automatic_enable);
|
||||
if (supportsRealtimeHeartRate())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_heart_rate_realtime);
|
||||
if(supportsHighHeartRateAlert())
|
||||
if (supportsHighHeartRateAlert())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_heart_rate_huawei_high_alert);
|
||||
if(supportsLowHeartRateAlert())
|
||||
if (supportsLowHeartRateAlert())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_heart_rate_huawei_low_alert);
|
||||
}
|
||||
if (supportsSPo2()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_spo_automatic_enable);
|
||||
if(supportsLowSPo2Alert())
|
||||
if (supportsLowSPo2Alert())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_spo_low_alert);
|
||||
}
|
||||
if(supportsTemperature()) {
|
||||
if (supportsTemperature()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_temperature_automatic_enable);
|
||||
}
|
||||
if(supportsAutoStress()) {
|
||||
if (supportsAutoStress()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_stress);
|
||||
}
|
||||
if(supportsArrhythmia() && isShowForceCountrySpecificFeatures(device)) {
|
||||
if (supportsArrhythmia() && isShowForceCountrySpecificFeatures(device)) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_arrhythmia);
|
||||
}
|
||||
if(supportsECG() && isShowForceCountrySpecificFeatures(device)) {
|
||||
if (supportsECG() && isShowForceCountrySpecificFeatures(device)) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_ecg);
|
||||
}
|
||||
if(supportsArterialStiffnessDetection() && isShowForceCountrySpecificFeatures(device)) {
|
||||
if (supportsArterialStiffnessDetection() && isShowForceCountrySpecificFeatures(device)) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_arterial_stiffness_detection);
|
||||
}
|
||||
if(supportsThreeCircle() || supportsThreeCircleLite()) {
|
||||
if (supportsThreeCircle() || supportsThreeCircleLite()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.HEALTH, R.xml.devicesettings_huawei_activity_reminders);
|
||||
}
|
||||
|
||||
// Notifications
|
||||
final List<Integer> notifications = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.NOTIFICATIONS);
|
||||
notifications.add(R.xml.devicesettings_notifications_enable);
|
||||
if (supportsNotificationsRepeatedNotify() || supportsNotificationsRemoveSingle()){
|
||||
if (supportsNotificationsRepeatedNotify() || supportsNotificationsRemoveSingle()) {
|
||||
notifications.add(R.xml.devicesettings_autoremove_notifications);
|
||||
}
|
||||
if (supportsNotificationPicture()) {
|
||||
@@ -381,7 +381,7 @@ public class HuaweiCoordinator {
|
||||
if (supportsSendingGps())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT, R.xml.devicesettings_workout_send_gps_to_band);
|
||||
|
||||
if(supportsTrack() || supportsHeartRateZones())
|
||||
if (supportsTrack() || supportsHeartRateZones())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.WORKOUT, R.xml.devicesettings_heartrate_settings);
|
||||
|
||||
// Other
|
||||
@@ -404,7 +404,7 @@ public class HuaweiCoordinator {
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_musicmanagement);
|
||||
}
|
||||
|
||||
if(supportsSendCountryCode()) {
|
||||
if (supportsSendCountryCode()) {
|
||||
deviceSpecificSettings.addRootScreen(R.xml.devicesettings_huawei_features);
|
||||
}
|
||||
|
||||
@@ -416,7 +416,7 @@ public class HuaweiCoordinator {
|
||||
}
|
||||
|
||||
//Calendar
|
||||
if( supportsP2PService() && supportsCalendar()) {
|
||||
if (supportsP2PService() && supportsCalendar()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.CALENDAR, R.xml.devicesettings_sync_calendar);
|
||||
}
|
||||
|
||||
@@ -432,14 +432,14 @@ public class HuaweiCoordinator {
|
||||
// Currently on main setting menu.
|
||||
/*if (supportsLanguageSetting())
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY, R.xml.devicesettings_language_generic);*/
|
||||
if(supportsTemperature()) {
|
||||
if (supportsTemperature()) {
|
||||
deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DISPLAY, R.xml.devicesettings_temperature_scale_cf);
|
||||
}
|
||||
|
||||
// Developer
|
||||
final List<Integer> developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER);
|
||||
developer.add(R.xml.devicesettings_huawei_debug);
|
||||
if(supportsGpsAndTimeToDevice())
|
||||
if (supportsGpsAndTimeToDevice())
|
||||
developer.add(R.xml.devicesettings_huawei_gps_and_time);
|
||||
|
||||
return deviceSpecificSettings;
|
||||
@@ -528,7 +528,7 @@ public class HuaweiCoordinator {
|
||||
public boolean supportsMotionGoal() {
|
||||
return supportsCommandForService(0x07, 0x01);
|
||||
}
|
||||
|
||||
|
||||
public boolean supportsInactivityWarnings() {
|
||||
return supportsCommandForService(0x07, 0x06);
|
||||
}
|
||||
@@ -596,21 +596,28 @@ public class HuaweiCoordinator {
|
||||
public boolean supportsFitnessThresholdValue() {
|
||||
return supportsCommandForService(0x07, 0x29);
|
||||
}
|
||||
public boolean supportsFitnessThresholdValueV2() { return supportsExpandCapability(0x9a) || supportsExpandCapability(0x9c); }
|
||||
|
||||
public boolean supportsFitnessThresholdValueV2() {
|
||||
return supportsExpandCapability(0x9a) || supportsExpandCapability(0x9c);
|
||||
}
|
||||
|
||||
// 0x1d - SupportTemperature
|
||||
// 0xba - SupportTemperatureClassification
|
||||
// 0x43 - SupportTemperatureStudy
|
||||
public boolean supportsTemperature() { return supportsExpandCapability(0x1d); }
|
||||
public boolean supportsTemperature() {
|
||||
return supportsExpandCapability(0x1d);
|
||||
}
|
||||
|
||||
public boolean supportsBloodPressure() { return supportsExpandCapability(0x3b); }
|
||||
public boolean supportsBloodPressure() {
|
||||
return supportsExpandCapability(0x3b);
|
||||
}
|
||||
|
||||
public boolean supportsEventAlarm() {
|
||||
return supportsCommandForService(0x08, 0x01);
|
||||
}
|
||||
|
||||
public boolean supportsSmartAlarm() {
|
||||
return supportsCommandForService(0x08, 0x02) ;
|
||||
return supportsCommandForService(0x08, 0x02);
|
||||
}
|
||||
|
||||
public boolean supportsSmartAlarm(GBDevice gbDevice) {
|
||||
@@ -640,11 +647,17 @@ public class HuaweiCoordinator {
|
||||
return supportsCommandForService(0x0c, 0x01);
|
||||
}
|
||||
|
||||
public boolean supportsWatchfaceParams(){ return supportsCommandForService(0x27, 0x01);}
|
||||
public boolean supportsWatchfaceParams() {
|
||||
return supportsCommandForService(0x27, 0x01);
|
||||
}
|
||||
|
||||
public boolean supportsAppParams(){ return supportsCommandForService(0x2a, 0x06);}
|
||||
public boolean supportsAppParams() {
|
||||
return supportsCommandForService(0x2a, 0x06);
|
||||
}
|
||||
|
||||
public boolean supportsMusicUploading(){ return supportsCommandForService(0x25, 0x04);}
|
||||
public boolean supportsMusicUploading() {
|
||||
return supportsCommandForService(0x25, 0x04);
|
||||
}
|
||||
|
||||
public boolean supportsWeather() {
|
||||
return supportsCommandForService(0x0f, 0x01);
|
||||
@@ -702,7 +715,9 @@ public class HuaweiCoordinator {
|
||||
return supportsCommandForService(0x18, 0x02);
|
||||
}
|
||||
|
||||
public boolean supportsGpsAndTimeToDevice() { return supportsCommandForService(0x18, 0x06); }
|
||||
public boolean supportsGpsAndTimeToDevice() {
|
||||
return supportsCommandForService(0x18, 0x06);
|
||||
}
|
||||
|
||||
public boolean supportsAccount() {
|
||||
return supportsCommandForService(0x1A, 0x01);
|
||||
@@ -891,13 +906,13 @@ public class HuaweiCoordinator {
|
||||
return supportsExpandCapability(82);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean supportsDeviceCommandConfig() {
|
||||
if (supportsExpandCapability())
|
||||
return supportsExpandCapability(83);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean supportsDeviceCommandEvent() {
|
||||
if (supportsExpandCapability())
|
||||
return supportsExpandCapability(84);
|
||||
@@ -927,12 +942,13 @@ public class HuaweiCoordinator {
|
||||
return supportsExpandCapability(156);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public boolean supportsOTAChangelog() {
|
||||
if (supportsExpandCapability())
|
||||
return supportsExpandCapability(52);
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean supportsOTASignature() {
|
||||
if (supportsExpandCapability())
|
||||
return supportsExpandCapability(144);
|
||||
@@ -1046,7 +1062,7 @@ public class HuaweiCoordinator {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean supportsPromptPushMessage () {
|
||||
public boolean supportsPromptPushMessage() {
|
||||
// do not ask for capabilities under specific condition
|
||||
// if (deviceType == 10 && deviceVersion == 73617766697368 && deviceSoftVersion == 372E312E31) -> leo device
|
||||
// if V1V0Device
|
||||
@@ -1112,25 +1128,17 @@ public class HuaweiCoordinator {
|
||||
}
|
||||
|
||||
public int getContactsSlotCount(GBDevice device) {
|
||||
if(supportsContactsSync()) {
|
||||
if (supportsContactsSync()) {
|
||||
// TODO: Currently I don't know how to obtain contacts limit in runtime, and I don't know is the limit exists,
|
||||
// set limit to 20 because more items not comfortable to use in the current GB's UI. Can be increased in the future.
|
||||
return 20;
|
||||
}
|
||||
return supportsContacts()?maxContactsCount:0;
|
||||
return supportsContacts() ? maxContactsCount : 0;
|
||||
}
|
||||
|
||||
public int getCannedRepliesSlotCount(GBDevice device) {
|
||||
// TODO: find proper count
|
||||
return supportsCannedReplies()?10:0;
|
||||
}
|
||||
|
||||
public void setTransactionCrypted(boolean crypted) {
|
||||
this.transactionCrypted = crypted;
|
||||
}
|
||||
|
||||
public boolean isTransactionCrypted() {
|
||||
return this.transactionCrypted;
|
||||
return supportsCannedReplies() ? 10 : 0;
|
||||
}
|
||||
|
||||
public String[] getSupportedLanguageSettings(GBDevice device) {
|
||||
@@ -1167,11 +1175,11 @@ public class HuaweiCoordinator {
|
||||
}
|
||||
|
||||
public short getWidth() {
|
||||
return (short)watchfaceDeviceParams.width;
|
||||
return (short) watchfaceDeviceParams.width;
|
||||
}
|
||||
|
||||
public short getHeight() {
|
||||
return (short)watchfaceDeviceParams.height;
|
||||
return (short) watchfaceDeviceParams.height;
|
||||
}
|
||||
|
||||
public void setWatchfaceDeviceParams(Watchface.WatchfaceDeviceParams watchfaceDeviceParams) {
|
||||
@@ -1190,6 +1198,7 @@ public class HuaweiCoordinator {
|
||||
LOG.info(musicDeviceParams.toString());
|
||||
this.musicExtendedDeviceParams = musicDeviceParams;
|
||||
}
|
||||
|
||||
public HuaweiMusicUtils.MusicCapabilities getExtendedMusicInfoParams() {
|
||||
return musicExtendedDeviceParams;
|
||||
}
|
||||
@@ -1198,6 +1207,7 @@ public class HuaweiCoordinator {
|
||||
LOG.info(musicDeviceParams.toString());
|
||||
this.musicDeviceParams = musicDeviceParams;
|
||||
}
|
||||
|
||||
public HuaweiMusicUtils.MusicCapabilities getMusicInfoParams() {
|
||||
return musicDeviceParams;
|
||||
}
|
||||
@@ -1207,7 +1217,9 @@ public class HuaweiCoordinator {
|
||||
return AppManagerActivity.class;
|
||||
}
|
||||
|
||||
public boolean getSupportsAppListFetching() { return true; }
|
||||
public boolean getSupportsAppListFetching() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean getSupportsAppsManagement(GBDevice device) {
|
||||
return true;
|
||||
@@ -1278,19 +1290,6 @@ public class HuaweiCoordinator {
|
||||
this.otaSignatureLength = otaSignatureLength;
|
||||
}
|
||||
|
||||
public int[] getStressRanges() {
|
||||
// 1-29 = relaxed
|
||||
// 30-59 = mild
|
||||
// 60-79 = moderate
|
||||
// 80-100 = high
|
||||
return new int[]{1, 30, 60, 80};
|
||||
}
|
||||
|
||||
public int[] getStressChartParameters() {
|
||||
// For Huawei devices stress data is provided every 30 minutes. So draw it as bars with delta
|
||||
return new int[]{1800, 1800, 400};
|
||||
}
|
||||
|
||||
public boolean getSupportsNewTrueSleep(final GBDevice device) {
|
||||
return supportsTruSleep() && supportsDictSleepSync();
|
||||
}
|
||||
|
||||
+4
-7
@@ -16,9 +16,6 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.huawei;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public interface HuaweiCoordinatorSupplier {
|
||||
|
||||
enum HuaweiDeviceType {
|
||||
@@ -39,9 +36,9 @@ public interface HuaweiCoordinatorSupplier {
|
||||
}
|
||||
}
|
||||
|
||||
HuaweiCoordinator getHuaweiCoordinator();
|
||||
default boolean isTransactionCrypted() {
|
||||
return true;
|
||||
}
|
||||
|
||||
HuaweiDeviceType getHuaweiType();
|
||||
DeviceType getDeviceType();
|
||||
void setDevice(GBDevice Device);
|
||||
GBDevice getDevice();
|
||||
}
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
/* Copyright (C) 2025 Damien 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 <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.devices.huawei;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public class HuaweiDeviceStateManager {
|
||||
private static final Map<String, HuaweiCoordinator> STATES = new HashMap<>();
|
||||
|
||||
public static HuaweiCoordinator get(final GBDevice device) {
|
||||
return get(device.getAddress());
|
||||
}
|
||||
|
||||
public static HuaweiCoordinator get(final String macAddress) {
|
||||
if (STATES.containsKey(macAddress)) {
|
||||
return STATES.get(macAddress);
|
||||
}
|
||||
|
||||
final HuaweiCoordinator huaweiDeviceState = new HuaweiCoordinator(macAddress);
|
||||
STATES.put(macAddress, huaweiDeviceState);
|
||||
|
||||
return huaweiDeviceState;
|
||||
}
|
||||
}
|
||||
+2
-19
@@ -36,13 +36,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs;
|
||||
|
||||
public abstract class HuaweiFreebudsCoordinator extends AbstractBLClassicDeviceCoordinator implements HuaweiCoordinatorSupplier {
|
||||
|
||||
private final HuaweiCoordinator huaweiCoordinator = new HuaweiCoordinator(this);
|
||||
private GBDevice gbDevice;
|
||||
|
||||
public HuaweiFreebudsCoordinator() {
|
||||
huaweiCoordinator.setTransactionCrypted(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getManufacturer() {
|
||||
return "Huawei";
|
||||
@@ -54,8 +47,8 @@ public abstract class HuaweiFreebudsCoordinator extends AbstractBLClassicDeviceC
|
||||
}
|
||||
|
||||
@Override
|
||||
public HuaweiCoordinator getHuaweiCoordinator() {
|
||||
return huaweiCoordinator;
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -63,16 +56,6 @@ public abstract class HuaweiFreebudsCoordinator extends AbstractBLClassicDeviceC
|
||||
return HuaweiDeviceType.BR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDevice(GBDevice gbDevice) {
|
||||
this.gbDevice = gbDevice;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GBDevice getDevice() {
|
||||
return this.gbDevice;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBondingStyle() {
|
||||
// TODO: Check if correct
|
||||
|
||||
+5
-12
@@ -34,7 +34,6 @@ import java.util.Locale;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.install.FwAppInstallerActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.install.InstallActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.GenericItem;
|
||||
@@ -112,13 +111,7 @@ public class HuaweiInstallHandler implements InstallHandler {
|
||||
|
||||
@Override
|
||||
public void validateInstallation(InstallActivity installActivity, GBDevice device) {
|
||||
|
||||
final DeviceCoordinator coordinator = device.getDeviceCoordinator();
|
||||
if (!(coordinator instanceof HuaweiCoordinatorSupplier huaweiCoordinatorSupplier)) {
|
||||
LOG.warn("Coordinator is not a HuaweiCoordinatorSupplier: {}", coordinator.getClass());
|
||||
installActivity.setInstallEnabled(false);
|
||||
return;
|
||||
}
|
||||
final HuaweiCoordinator huaweiDeviceState = HuaweiDeviceStateManager.get(device);
|
||||
|
||||
if (helper.isFirmware) {
|
||||
this.valid = true; //NOTE: nothing to verify for now
|
||||
@@ -168,8 +161,8 @@ public class HuaweiInstallHandler implements InstallHandler {
|
||||
String deviceScreen = String.format(
|
||||
Locale.ROOT,
|
||||
"%d*%d",
|
||||
huaweiCoordinatorSupplier.getHuaweiCoordinator().getHeight(),
|
||||
huaweiCoordinatorSupplier.getHuaweiCoordinator().getWidth()
|
||||
huaweiDeviceState.getHeight(),
|
||||
huaweiDeviceState.getWidth()
|
||||
);
|
||||
this.valid = resolution.isValid(description.screen, deviceScreen);
|
||||
|
||||
@@ -252,9 +245,9 @@ public class HuaweiInstallHandler implements InstallHandler {
|
||||
|
||||
LOG.debug("Initialized HuaweiInstallHandler: App");
|
||||
} else if (helper.isMusic()) {
|
||||
HuaweiMusicUtils.MusicCapabilities capabilities = huaweiCoordinatorSupplier.getHuaweiCoordinator().getExtendedMusicInfoParams();
|
||||
HuaweiMusicUtils.MusicCapabilities capabilities = huaweiDeviceState.getExtendedMusicInfoParams();
|
||||
if (capabilities == null) {
|
||||
capabilities = huaweiCoordinatorSupplier.getHuaweiCoordinator().getMusicInfoParams();
|
||||
capabilities = huaweiDeviceState.getMusicInfoParams();
|
||||
}
|
||||
AudioInfo currentMusicInfo = helper.getMusicInfo();
|
||||
|
||||
|
||||
+38
-51
@@ -54,15 +54,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiLESuppo
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiWorkoutGbParser;
|
||||
|
||||
public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator implements HuaweiCoordinatorSupplier {
|
||||
|
||||
private final HuaweiCoordinator huaweiCoordinator = new HuaweiCoordinator(this);
|
||||
private GBDevice device;
|
||||
|
||||
@Override
|
||||
public HuaweiCoordinator getHuaweiCoordinator() {
|
||||
return huaweiCoordinator;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Collection<? extends ScanFilter> createBLEScanFilters() {
|
||||
@@ -78,7 +69,7 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public String[] getSupportedLanguageSettings(GBDevice device) {
|
||||
return huaweiCoordinator.getSupportedLanguageSettings(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportedLanguageSettings(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -96,7 +87,7 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
protected void deleteDevice(@NonNull GBDevice gbDevice, @NonNull Device device, @NonNull DaoSession session) throws GBException {
|
||||
huaweiCoordinator.deleteDevice(gbDevice, device, session);
|
||||
HuaweiDeviceStateManager.get(gbDevice).deleteDevice(gbDevice, device, session);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,7 +97,7 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public boolean supportsSmartWakeup(@NonNull GBDevice device, int position) {
|
||||
return huaweiCoordinator.supportsSmartAlarm(device, position);
|
||||
return HuaweiDeviceStateManager.get(device).supportsSmartAlarm(device, position);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -116,7 +107,7 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public boolean forcedSmartWakeup(GBDevice device, int alarmPosition) {
|
||||
return huaweiCoordinator.forcedSmartWakeup(device, alarmPosition);
|
||||
return HuaweiDeviceStateManager.get(device).forcedSmartWakeup(device, alarmPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -126,21 +117,21 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public boolean supportsWeather(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsWeather();
|
||||
return HuaweiDeviceStateManager.get(device).supportsWeather();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends Activity> getAppsManagementActivity(final GBDevice device) {
|
||||
return huaweiCoordinator.getAppManagerActivity();
|
||||
return HuaweiDeviceStateManager.get(device).getAppManagerActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsAppListFetching(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsAppListFetching();
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsAppListFetching();
|
||||
}
|
||||
@Override
|
||||
public boolean supportsAppsManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsAppsManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsAppsManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -150,37 +141,37 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public boolean supportsInstalledAppManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsInstalledAppManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsInstalledAppManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCachedAppManagement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsCachedAppManagement(device);
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsCachedAppManagement(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFlashing(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getSupportsFlashing();
|
||||
return HuaweiDeviceStateManager.get(device).getSupportsFlashing();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAlarmSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getAlarmSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getAlarmSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getContactsSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getContactsSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getContactsSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCannedRepliesSlotCount(GBDevice device) {
|
||||
return huaweiCoordinator.getCannedRepliesSlotCount(device);
|
||||
return HuaweiDeviceStateManager.get(device).getCannedRepliesSlotCount(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsCalendarEvents(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsCalendarEvents();
|
||||
return HuaweiDeviceStateManager.get(device).supportsCalendarEvents();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -205,54 +196,55 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public boolean supportsHeartRateMeasurement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsHeartRate(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsHeartRate(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSpo2(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsSPo2(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsSPo2(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsMusicInfo(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsMusic();
|
||||
return HuaweiDeviceStateManager.get(device).supportsMusic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsTemperatureMeasurement(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsTemperature();
|
||||
return HuaweiDeviceStateManager.get(device).supportsTemperature();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsContinuousTemperature(@NonNull final GBDevice device) {
|
||||
return huaweiCoordinator.supportsTemperature();
|
||||
return HuaweiDeviceStateManager.get(device).supportsTemperature();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsStressMeasurement(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsAutoStress();
|
||||
return HuaweiDeviceStateManager.get(device).supportsAutoStress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsFindDevice(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsFindDeviceAbility();
|
||||
return HuaweiDeviceStateManager.get(device).supportsFindDeviceAbility();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsRemSleep(@NonNull GBDevice device) {return huaweiCoordinator.getSupportsNewTrueSleep(device);}
|
||||
public boolean supportsRemSleep(@NonNull GBDevice device) {return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device);}
|
||||
|
||||
@Override
|
||||
public boolean supportsAwakeSleep(@NonNull GBDevice device) {return huaweiCoordinator.getSupportsNewTrueSleep(device);}
|
||||
public boolean supportsAwakeSleep(@NonNull GBDevice device) {return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device);}
|
||||
|
||||
@Override
|
||||
public boolean supportsSleepScore(@NonNull final GBDevice device) { return huaweiCoordinator.getSupportsNewTrueSleep(device); }
|
||||
public boolean supportsSleepScore(@NonNull final GBDevice device) { return HuaweiDeviceStateManager.get(device).getSupportsNewTrueSleep(device); }
|
||||
|
||||
@Override
|
||||
public boolean supportsHrvMeasurement(@NonNull GBDevice device) { return huaweiCoordinator.supportsHRV();}
|
||||
public boolean supportsHrvMeasurement(@NonNull GBDevice device) { return HuaweiDeviceStateManager.get(device).supportsHRV();}
|
||||
|
||||
@Override
|
||||
public InstallHandler findInstallHandler(Uri uri, Context context) {
|
||||
return huaweiCoordinator.getInstallHandler(uri, context);
|
||||
HuaweiInstallHandler handler = new HuaweiInstallHandler(uri, context);
|
||||
return handler.isValid() ? handler : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -297,7 +289,11 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public int[] getStressRanges() {
|
||||
return huaweiCoordinator.getStressRanges();
|
||||
// 1-29 = relaxed
|
||||
// 30-59 = mild
|
||||
// 60-79 = moderate
|
||||
// 80-100 = high
|
||||
return new int[]{1, 30, 60, 80};
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -307,12 +303,13 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
|
||||
@Override
|
||||
public int[] getStressChartParameters() {
|
||||
return huaweiCoordinator.getStressChartParameters();
|
||||
// For Huawei devices stress data is provided every 30 minutes. So draw it as bars with delta
|
||||
return new int[]{1800, 1800, 400};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceSpecificSettings getDeviceSpecificSettings(final GBDevice device) {
|
||||
return huaweiCoordinator.getDeviceSpecificSettings(device);
|
||||
return HuaweiDeviceStateManager.get(device).getDeviceSpecificSettings(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -320,16 +317,6 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
return HuaweiDeviceType.BLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDevice(GBDevice device) {
|
||||
this.device = device;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GBDevice getDevice() {
|
||||
return this.device;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Class<? extends DeviceSupport> getDeviceSupportClass(final GBDevice device) {
|
||||
@@ -342,11 +329,11 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i
|
||||
}
|
||||
|
||||
public HeartRateZonesSpec getHeartRateZonesSpec(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.getHeartRateZonesSpec(device);
|
||||
return HuaweiDeviceStateManager.get(device).getHeartRateZonesSpec(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsNavigation(@NonNull GBDevice device) {
|
||||
return huaweiCoordinator.supportsNavigation(device);
|
||||
return HuaweiDeviceStateManager.get(device).supportsNavigation(device);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-12
@@ -64,11 +64,11 @@ import static nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstant
|
||||
|
||||
public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomizer {
|
||||
final GBDevice device;
|
||||
final HuaweiCoordinator coordinator;
|
||||
final HuaweiCoordinator deviceState;
|
||||
|
||||
public HuaweiSettingsCustomizer(final GBDevice device) {
|
||||
this.device = device;
|
||||
this.coordinator = ((HuaweiCoordinatorSupplier) this.device.getDeviceCoordinator()).getHuaweiCoordinator();
|
||||
this.deviceState = HuaweiDeviceStateManager.get(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,16 +103,16 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
|
||||
if (preference.getKey().equals(PREF_FORCE_OPTIONS)) {
|
||||
final Preference dnd = handler.findPreference("screen_do_not_disturb");
|
||||
if (dnd != null)
|
||||
dnd.setVisible(this.coordinator.supportsDoNotDisturb(handler.getDevice()));
|
||||
dnd.setVisible(this.deviceState.supportsDoNotDisturb(handler.getDevice()));
|
||||
final ListPreference wearLocation = handler.findPreference(PREF_WEARLOCATION);
|
||||
if (wearLocation != null)
|
||||
wearLocation.setVisible(this.coordinator.supportsWearLocation(handler.getDevice()));
|
||||
wearLocation.setVisible(this.deviceState.supportsWearLocation(handler.getDevice()));
|
||||
final ListPreference heartRate = handler.findPreference(PREF_HEARTRATE_AUTOMATIC_ENABLE);
|
||||
if (heartRate != null)
|
||||
heartRate.setVisible(this.coordinator.supportsHeartRate(handler.getDevice()));
|
||||
heartRate.setVisible(this.deviceState.supportsHeartRate(handler.getDevice()));
|
||||
final ListPreference spo2 = handler.findPreference(PREF_SPO_AUTOMATIC_ENABLE);
|
||||
if (spo2 != null)
|
||||
spo2.setVisible(this.coordinator.supportsSPo2(handler.getDevice()));
|
||||
spo2.setVisible(this.deviceState.supportsSPo2(handler.getDevice()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,10 +152,10 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
|
||||
|
||||
final Preference forceOptions = handler.findPreference(PREF_FORCE_OPTIONS);
|
||||
if (forceOptions != null) {
|
||||
boolean supportsSmartAlarm = this.coordinator.supportsSmartAlarm();
|
||||
boolean supportsWearLocation = this.coordinator.supportsWearLocation();
|
||||
boolean supportsHeartRate = this.coordinator.supportsHeartRate();
|
||||
boolean supportsSpO2 = this.coordinator.supportsSPo2();
|
||||
boolean supportsSmartAlarm = this.deviceState.supportsSmartAlarm();
|
||||
boolean supportsWearLocation = this.deviceState.supportsWearLocation();
|
||||
boolean supportsHeartRate = this.deviceState.supportsHeartRate();
|
||||
boolean supportsSpO2 = this.deviceState.supportsSPo2();
|
||||
forceOptions.setVisible(!supportsSmartAlarm || !supportsWearLocation || !supportsHeartRate || !supportsSpO2);
|
||||
final SwitchPreferenceCompat forceSmartAlarm = handler.findPreference(PREF_FORCE_ENABLE_SMART_ALARM);
|
||||
if(forceSmartAlarm != null)
|
||||
@@ -172,14 +172,14 @@ public class HuaweiSettingsCustomizer implements DeviceSpecificSettingsCustomize
|
||||
}
|
||||
|
||||
final SwitchPreferenceCompat sleepBreath = handler.findPreference(PREF_HUAWEI_SLEEP_BREATH);
|
||||
if (sleepBreath != null && !(coordinator.supportsSleepBreath() || coordinator.supportsSleepApnea())) {
|
||||
if (sleepBreath != null && !(deviceState.supportsSleepBreath() || deviceState.supportsSleepApnea())) {
|
||||
sleepBreath.setVisible(false);
|
||||
}
|
||||
|
||||
final SwitchPreferenceCompat reparseWorkout = handler.findPreference("huawei_reparse_workout_data");
|
||||
if (reparseWorkout != null) {
|
||||
reparseWorkout.setVisible(false);
|
||||
if (this.coordinator.supportsWorkouts())
|
||||
if (this.deviceState.supportsWorkouts())
|
||||
reparseWorkout.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
-7
@@ -19,7 +19,6 @@ package nodomain.freeyourgadget.gadgetbridge.devices.huawei.freearc;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -28,7 +27,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiFreebudsCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiHeadphonesCapabilities;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiFreebudsSupport;
|
||||
|
||||
@@ -52,11 +50,6 @@ public class HuaweiFreearcCoordinator extends HuaweiFreebudsCoordinator {
|
||||
return HuaweiFreebudsSupport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEI_FREEARC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceNameResource() {
|
||||
return R.string.devicetype_huawei_freearc;
|
||||
|
||||
-6
@@ -28,7 +28,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiFreebudsCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiHeadphonesCapabilities;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiFreebudsSupport;
|
||||
|
||||
@@ -53,11 +52,6 @@ public class HuaweiFreebuds5iCoordinator extends HuaweiFreebudsCoordinator {
|
||||
return HuaweiFreebudsSupport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEI_FREEBUDS5I;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceNameResource() {
|
||||
return R.string.devicetype_huawei_freebuds_5i;
|
||||
|
||||
-6
@@ -28,7 +28,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiFreebudsCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiHeadphonesCapabilities;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiFreebudsSupport;
|
||||
|
||||
@@ -53,11 +52,6 @@ public class HuaweiFreebuds6Coordinator extends HuaweiFreebudsCoordinator {
|
||||
return HuaweiFreebudsSupport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEI_FREEBUDS6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceNameResource() {
|
||||
return R.string.devicetype_huawei_freebuds_6;
|
||||
|
||||
-6
@@ -28,7 +28,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiFreebudsCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiHeadphonesCapabilities;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiFreebudsSupport;
|
||||
|
||||
@@ -55,11 +54,6 @@ public class HuaweiFreebudsProCoordinator extends HuaweiFreebudsCoordinator {
|
||||
return HuaweiFreebudsSupport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEI_FREEBUDS_PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDeviceNameResource() {
|
||||
return R.string.devicetype_huawei_freebuds_pro;
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorBand3Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HonorBand3Coordinator extends HuaweiLECoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORBAND3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_BAND3_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorBand4Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HonorBand4Coordinator extends HuaweiLECoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORBAND4;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_BAND4_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorBand5Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HonorBand5Coordinator extends HuaweiLECoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORBAND5;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_BAND5_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorBand6Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HonorBand6Coordinator extends HuaweiLECoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORBAND6;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_BAND6_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorBand7Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HonorBand7Coordinator extends HuaweiLECoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND7;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_BAND7_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+3
-9
@@ -24,12 +24,11 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorMagicWatch2Coordinator extends HuaweiBRCoordinator {
|
||||
public HonorMagicWatch2Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(false);
|
||||
@Override
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,11 +36,6 @@ public class HonorMagicWatch2Coordinator extends HuaweiBRCoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORMAGICWATCH2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_MAGICWATCH2_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+3
-9
@@ -24,12 +24,11 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HonorBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorWatch4Coordinator extends HonorBRCoordinator {
|
||||
public HonorWatch4Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(false);
|
||||
@Override
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,11 +36,6 @@ public class HonorWatch4Coordinator extends HonorBRCoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORWATCH4;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HO_WATCH4_NAME + "|" + HuaweiConstants.HO_WATCH4PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+3
-9
@@ -24,12 +24,11 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorWatchGS3Coordinator extends HuaweiBRCoordinator {
|
||||
public HonorWatchGS3Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(false);
|
||||
@Override
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,11 +36,6 @@ public class HonorWatchGS3Coordinator extends HuaweiBRCoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORWATCHGS3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_WATCHGS3_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+3
-9
@@ -24,12 +24,11 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HonorWatchGSProCoordinator extends HuaweiBRCoordinator {
|
||||
public HonorWatchGSProCoordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(false);
|
||||
@Override
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -37,11 +36,6 @@ public class HonorWatchGSProCoordinator extends HuaweiBRCoordinator {
|
||||
return "Honor";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HONORWATCHGSPRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HO_WATCHGSPRO_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand10Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HuaweiBand10Coordinator extends HuaweiLECoordinator {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND10;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_BAND10_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand2ProCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND2PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_BAND2_NAME + "|" + HuaweiConstants.HU_BAND2PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand3ProCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND3PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_BAND3_NAME + "|" + HuaweiConstants.HU_BAND3PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand4ProCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND4PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_BAND4_NAME + "|" + HuaweiConstants.HU_BAND4PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand6Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND6;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_BAND6_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand7Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND7;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_BAND7_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand8Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND8;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_BAND8_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,7 +25,6 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBand9Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
@@ -33,11 +32,6 @@ public class HuaweiBand9Coordinator extends HuaweiLECoordinator {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBAND9;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_BAND9_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -25,14 +25,8 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiBandAw70Coordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIBANDAW70;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_BAND3E_NAME + "|" + HuaweiConstants.HU_BAND4E_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+2
-8
@@ -25,17 +25,11 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiTalkBandB6Coordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiTalkBandB6Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEITALKBANDB6;
|
||||
public boolean isTransactionCrypted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatch3Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCH3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCH3_NAME + "|" + HuaweiConstants.HU_WATCH3PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,19 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatch4ProCoordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatch4ProCoordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCH4PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCH4_NAME + "|" + HuaweiConstants.HU_WATCH4PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,24 +24,13 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatch5Coordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatch5Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExperimental() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCH5;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCH5_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchD2Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHD2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHD2_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchFitCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHFIT;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_WATCHFIT_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,19 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchFit2Coordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatchFit2Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHFIT2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHFIT2_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,24 +24,13 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchFit3Coordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatchFit3Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExperimental() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHFIT3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHFIT3_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,24 +24,13 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchFit4ProCoordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatchFit4ProCoordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isExperimental() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHFIT4PRO;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHFIT4_NAME + "|" + HuaweiConstants.HU_WATCHFIT4PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGTCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_WATCHGT_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGT2Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT2;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT2_NAME + "|" + HuaweiConstants.HU_WATCHGT2PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGT2eCoordinator extends HuaweiLECoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT2E;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile(HuaweiConstants.HU_WATCHGT2E_NAME + ".*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGT3Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT3;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT3_NAME + "|" + HuaweiConstants.HU_WATCHGT3PRO_NAME + "|" + HuaweiConstants.HU_WATCHGT3SE_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,19 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGT4Coordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatchGT4Coordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT4;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT4_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGT5Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT5;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT5_NAME + "|" + HuaweiConstants.HU_WATCHGT5PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,15 +24,9 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
/// #5428
|
||||
public class HuaweiWatchGT6Coordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGT6;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT6_NAME + "|" + HuaweiConstants.HU_WATCHGT6PRO_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGTCyberCoordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGTCYBER;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGTCYBER_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-6
@@ -24,14 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchGTRunnerCoordinator extends HuaweiBRCoordinator {
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHGTRUNNER;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHGTRUNNER_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
-11
@@ -24,19 +24,8 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
|
||||
public class HuaweiWatchUltimateCoordinator extends HuaweiBRCoordinator {
|
||||
public HuaweiWatchUltimateCoordinator() {
|
||||
super();
|
||||
getHuaweiCoordinator().setTransactionCrypted(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceType getDeviceType() {
|
||||
return DeviceType.HUAWEIWATCHULTIMATE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pattern getSupportedDeviceName() {
|
||||
return Pattern.compile("(" + HuaweiConstants.HU_WATCHULTIMATE_NAME + ").*", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ public class HuaweiAppManager {
|
||||
}
|
||||
|
||||
public void requestAppList() {
|
||||
if (!this.support.getHuaweiCoordinator().supportsAppParams())
|
||||
if (!this.support.getDeviceState().supportsAppParams())
|
||||
return;
|
||||
try {
|
||||
GetAppNames getAppNames = new GetAppNames(support);
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ public class HuaweiBRSupport extends AbstractBTBRDeviceSupport {
|
||||
@Override
|
||||
public void setContext(GBDevice gbDevice, BluetoothAdapter btAdapter, Context context) {
|
||||
super.setContext(gbDevice, btAdapter, context);
|
||||
supportProvider.setContext(context);
|
||||
supportProvider.setContext(gbDevice, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-4
@@ -85,7 +85,7 @@ public class HuaweiDataSyncManager {
|
||||
}
|
||||
|
||||
public boolean sendConfigCommand(String srcPackage, String dstPackage, HuaweiDataSyncCommon.ConfigCommandData data) {
|
||||
if(!this.support.getHuaweiCoordinator().supportsDeviceCommandConfig()) {
|
||||
if(!this.support.getDeviceState().supportsDeviceCommandConfig()) {
|
||||
LOG.info("sendConfigCommand is not supported");
|
||||
return false;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ public class HuaweiDataSyncManager {
|
||||
}
|
||||
|
||||
public boolean sendEventCommand(String srcPackage, String dstPackage, HuaweiDataSyncCommon.EventCommandData data) {
|
||||
if(!this.support.getHuaweiCoordinator().supportsDeviceCommandEvent()) {
|
||||
if(!this.support.getDeviceState().supportsDeviceCommandEvent()) {
|
||||
LOG.info("sendEventCommand is not supported");
|
||||
return false;
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public class HuaweiDataSyncManager {
|
||||
}
|
||||
|
||||
public boolean sendDataCommand(String srcPackage, String dstPackage, HuaweiDataSyncCommon.DataCommandData data) {
|
||||
if(!this.support.getHuaweiCoordinator().supportsDeviceCommandData()) {
|
||||
if(!this.support.getDeviceState().supportsDeviceCommandData()) {
|
||||
LOG.info("sendDataCommand is not supported");
|
||||
return false;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ public class HuaweiDataSyncManager {
|
||||
}
|
||||
|
||||
public boolean sendDictDataCommand(String srcPackage, String dstPackage, HuaweiDataSyncCommon.DictDataCommandData data) {
|
||||
if(!this.support.getHuaweiCoordinator().supportsDeviceCommandDictData()) {
|
||||
if(!this.support.getDeviceState().supportsDeviceCommandDictData()) {
|
||||
LOG.info("sendDictDataCommand is not supported");
|
||||
return false;
|
||||
}
|
||||
|
||||
-2
@@ -82,8 +82,6 @@ public class HuaweiFreebudsSupport extends HuaweiBRSupport implements HeadphoneH
|
||||
protected TransactionBuilder initializeDevice(TransactionBuilder builder) {
|
||||
LOG.info("Huawei Freebuds init");
|
||||
|
||||
super.getSupportProvider().setup(getDevice(), getContext());
|
||||
|
||||
builder.setDeviceState(GBDevice.State.INITIALIZING);
|
||||
try {
|
||||
builder.setCallback(this);
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ public class HuaweiLESupport extends AbstractBTLESingleDeviceSupport {
|
||||
@Override
|
||||
public void setContext(GBDevice gbDevice, BluetoothAdapter btAdapter, Context context) {
|
||||
super.setContext(gbDevice, btAdapter, context);
|
||||
supportProvider.setContext(context);
|
||||
supportProvider.setContext(gbDevice, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-5
@@ -97,7 +97,7 @@ public class HuaweiMusicManager {
|
||||
return;
|
||||
}
|
||||
int count = this.frameCount;
|
||||
if (support.getHuaweiCoordinator().supportsMoreMusic()) {
|
||||
if (support.getDeviceState().supportsMoreMusic()) {
|
||||
count = Math.min(this.frameCount, 250);
|
||||
}
|
||||
if (this.currentFrame < count) {
|
||||
@@ -200,7 +200,7 @@ public class HuaweiMusicManager {
|
||||
//TODO: research and use pageStruct. It may/should be used to retrieve music data from devices by pages.
|
||||
// without it list can be incomplete, but I can't confirm this.
|
||||
LOG.info("FrameCount: {}, pageStruct: {}", frameCount, pageStruct);
|
||||
support.getHuaweiCoordinator().setMusicInfoParams(capabilities);
|
||||
support.getDeviceState().setMusicInfoParams(capabilities);
|
||||
if(syncMusicData) {
|
||||
this.frameCount = frameCount;
|
||||
this.currentFrame = 0;
|
||||
@@ -210,8 +210,8 @@ public class HuaweiMusicManager {
|
||||
formats = String.join(",", capabilities.supportedFormats);
|
||||
}
|
||||
int maxPlaylistCount = 0;
|
||||
if(support.getCoordinator().getHuaweiCoordinator().getExtendedMusicInfoParams() != null) {
|
||||
maxPlaylistCount = support.getCoordinator().getHuaweiCoordinator().getExtendedMusicInfoParams().maxPlaylistCount;
|
||||
if(support.getDeviceState().getExtendedMusicInfoParams() != null) {
|
||||
maxPlaylistCount = support.getDeviceState().getExtendedMusicInfoParams().maxPlaylistCount;
|
||||
}
|
||||
sendMusicSyncStart(support.getContext().getString(R.string.music_huawei_device_info, formats, capabilities.availableSpace), capabilities.maxMusicCount, maxPlaylistCount);
|
||||
syncMusicList();
|
||||
@@ -250,7 +250,7 @@ public class HuaweiMusicManager {
|
||||
|
||||
public void onMusicListResponse(int startFrame, int endFrame, List<GBDeviceMusic> list) {
|
||||
sendMusicList(list);
|
||||
if (support.getHuaweiCoordinator().supportsMoreMusic() || !(endFrame == this.endFrame || list.size() == 1)) {
|
||||
if (support.getDeviceState().supportsMoreMusic() || !(endFrame == this.endFrame || list.size() == 1)) {
|
||||
if (list.size() == 2) {
|
||||
this.endFrame = list.get(1).getId();
|
||||
}
|
||||
|
||||
+2
-2
@@ -88,7 +88,7 @@ public class HuaweiNotificationsManager {
|
||||
}
|
||||
|
||||
public void onDeleteNotification(int id) {
|
||||
if (!support.getHuaweiCoordinator().supportsNotificationsRepeatedNotify() && !support.getHuaweiCoordinator().supportsNotificationsRemoveSingle()) {
|
||||
if (!support.getDeviceState().supportsNotificationsRepeatedNotify() && !support.getDeviceState().supportsNotificationsRemoveSingle()) {
|
||||
LOG.info("Delete notification is not supported");
|
||||
return;
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class HuaweiNotificationsManager {
|
||||
|
||||
void onReplyResponse(Notifications.NotificationReply.ReplyResponse response) {
|
||||
LOG.info(" KEY: {}, Text: {}", response.key, response.text);
|
||||
if(!this.support.getHuaweiCoordinator().supportsNotificationsReplyActions()) {
|
||||
if(!this.support.getDeviceState().supportsNotificationsReplyActions()) {
|
||||
LOG.info("Reply is not supported");
|
||||
return;
|
||||
}
|
||||
|
||||
+10
-10
@@ -154,14 +154,14 @@ public class HuaweiOTAManager {
|
||||
cleanup();
|
||||
return;
|
||||
}
|
||||
if (!support.getHuaweiCoordinator().supportsOTAUpdate()) {
|
||||
if (!support.getDeviceState().supportsOTAUpdate()) {
|
||||
LOG.info("OTA update is not supported");
|
||||
cleanup();
|
||||
return;
|
||||
}
|
||||
setDeviceBusy();
|
||||
|
||||
if (support.getHuaweiCoordinator().supportsOTANotify()) {
|
||||
if (support.getDeviceState().supportsOTANotify()) {
|
||||
try {
|
||||
SendOTANotifyNewVersion notifyNewVersion = new SendOTANotifyNewVersion(support, this.fwInfo.versionName, this.fwInfo.size, (byte) 1, (byte) 2);
|
||||
notifyNewVersion.doPerform();
|
||||
@@ -181,7 +181,7 @@ public class HuaweiOTAManager {
|
||||
|
||||
private void startFWCheck(HuaweiOTAFileList.OTAFileInfo fwInfo, Uri uri) {
|
||||
downloadProgress = 0;
|
||||
if (support.getHuaweiCoordinator().supportsOTADeviceRequest()) {
|
||||
if (support.getDeviceState().supportsOTADeviceRequest()) {
|
||||
try {
|
||||
SendOTAProgress progressReq = new SendOTAProgress(support, (byte) 0, (byte) 0, (byte) 0);
|
||||
progressReq.doPerform();
|
||||
@@ -298,8 +298,8 @@ public class HuaweiOTAManager {
|
||||
int data = buffer.getInt();
|
||||
|
||||
int signature = 256;
|
||||
if (support.getHuaweiCoordinator().supportsOTASignature()) {
|
||||
signature = support.getHuaweiCoordinator().getOtaSignatureLength();
|
||||
if (support.getDeviceState().supportsOTASignature()) {
|
||||
signature = support.getDeviceState().getOtaSignatureLength();
|
||||
}
|
||||
LOG.info("data: {}, signature: {}", data, signature);
|
||||
return (short) (data + signature);
|
||||
@@ -354,7 +354,7 @@ public class HuaweiOTAManager {
|
||||
|
||||
public void onFwCheckFail() {
|
||||
LOG.info("onFwCheckFail");
|
||||
if (support.getHuaweiCoordinator().supportsOTADeviceRequest()) {
|
||||
if (support.getDeviceState().supportsOTADeviceRequest()) {
|
||||
try {
|
||||
SendOTAProgress progressReq = new SendOTAProgress(support, (byte) downloadProgress, (byte) 2, (byte) 0);
|
||||
progressReq.doPerform();
|
||||
@@ -375,7 +375,7 @@ public class HuaweiOTAManager {
|
||||
|
||||
this.state = 3;
|
||||
|
||||
if (support.getHuaweiCoordinator().supportsOTADeviceRequest()) {
|
||||
if (support.getDeviceState().supportsOTADeviceRequest()) {
|
||||
try {
|
||||
SendOTAGetMode sendOTAGetMode = new SendOTAGetMode(support);
|
||||
sendOTAGetMode.doPerform();
|
||||
@@ -391,7 +391,7 @@ public class HuaweiOTAManager {
|
||||
public void onFwCheckProgress(int val) {
|
||||
LOG.info("onFwCheckProgress: {}", val);
|
||||
downloadProgress = val;
|
||||
if (support.getHuaweiCoordinator().supportsOTADeviceRequest()) {
|
||||
if (support.getDeviceState().supportsOTADeviceRequest()) {
|
||||
try {
|
||||
SendOTAProgress progressReq = new SendOTAProgress(support, (byte) downloadProgress, (byte) 1, (byte) 0);
|
||||
progressReq.doPerform();
|
||||
@@ -413,7 +413,7 @@ public class HuaweiOTAManager {
|
||||
}
|
||||
if (this.state == 1) {
|
||||
this.state = 2;
|
||||
if (support.getHuaweiCoordinator().supportsOTANotify()) {
|
||||
if (support.getDeviceState().supportsOTANotify()) {
|
||||
try {
|
||||
SendOTANotifyNewVersion notifyNewVersion = new SendOTANotifyNewVersion(support, fwInfo.versionName, fwInfo.size, (byte) 1, (byte) 0);
|
||||
notifyNewVersion.doPerform();
|
||||
@@ -533,7 +533,7 @@ public class HuaweiOTAManager {
|
||||
return;
|
||||
}
|
||||
if (this.state == 1) {
|
||||
if (support.getHuaweiCoordinator().supportsOTAUpdate()) {
|
||||
if (support.getDeviceState().supportsOTAUpdate()) {
|
||||
try {
|
||||
SendOTAStartQuery sendOTAStartQuery = new SendOTAStartQuery(support, fwInfo.versionName, (short) 256, (byte) 2, false);
|
||||
sendOTAStartQuery.doPerform();
|
||||
|
||||
+47
-46
@@ -66,10 +66,11 @@ import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventDisplayMes
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCompatTemperatureSampleProvider;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCoordinatorSupplier;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCoordinator;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCoordinatorSupplier.HuaweiDeviceType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiCrypto;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiDeviceStateManager;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiDictTypes;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiEcgFileParser;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiGpsParser;
|
||||
@@ -336,8 +337,8 @@ public class HuaweiSupportProvider {
|
||||
return ((HuaweiCoordinatorSupplier) this.gbDevice.getDeviceCoordinator());
|
||||
}
|
||||
|
||||
public HuaweiCoordinator getHuaweiCoordinator() {
|
||||
return getCoordinator().getHuaweiCoordinator();
|
||||
public HuaweiCoordinator getDeviceState() {
|
||||
return HuaweiDeviceStateManager.get(getDevice());
|
||||
}
|
||||
|
||||
public HuaweiUploadManager getUploadManager() {
|
||||
@@ -388,7 +389,11 @@ public class HuaweiSupportProvider {
|
||||
this.leSupport = support;
|
||||
}
|
||||
|
||||
public void setContext(Context context) {
|
||||
public void setContext(GBDevice device, Context context) {
|
||||
this.gbDevice = device;
|
||||
this.context = context;
|
||||
this.huaweiType = getCoordinator().getHuaweiType();
|
||||
this.paramsProvider.setTransactionsCrypted(getCoordinator().isTransactionCrypted());
|
||||
mediaManager = new MediaManager(context);
|
||||
}
|
||||
|
||||
@@ -472,11 +477,10 @@ public class HuaweiSupportProvider {
|
||||
this.gbDevice = device;
|
||||
this.context = context;
|
||||
this.huaweiType = getCoordinator().getHuaweiType();
|
||||
this.paramsProvider.setTransactionsCrypted(this.getHuaweiCoordinator().isTransactionCrypted());
|
||||
this.paramsProvider.setTransactionsCrypted(getCoordinator().isTransactionCrypted());
|
||||
}
|
||||
|
||||
protected nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder initializeDevice(nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder builder) {
|
||||
setup(leSupport.getDevice(), leSupport.getContext());
|
||||
builder.setCallback(leSupport);
|
||||
final BluetoothGattCharacteristic characteristicRead = leSupport.getCharacteristic(HuaweiConstants.UUID_CHARACTERISTIC_HUAWEI_READ);
|
||||
if (characteristicRead == null) {
|
||||
@@ -488,17 +492,14 @@ public class HuaweiSupportProvider {
|
||||
builder.setDeviceState(GBDevice.State.AUTHENTICATING);
|
||||
final GetLinkParamsRequest linkParamsReq = new GetLinkParamsRequest(this, builder);
|
||||
initializeDevice(linkParamsReq);
|
||||
getCoordinator().setDevice(this.gbDevice);
|
||||
return builder;
|
||||
}
|
||||
|
||||
protected nodomain.freeyourgadget.gadgetbridge.service.btbr.TransactionBuilder initializeDevice(nodomain.freeyourgadget.gadgetbridge.service.btbr.TransactionBuilder builder) {
|
||||
setup(brSupport.getDevice(), brSupport.getContext());
|
||||
builder.setCallback(brSupport);
|
||||
builder.setDeviceState(GBDevice.State.AUTHENTICATING);
|
||||
final GetLinkParamsRequest linkParamsReq = new GetLinkParamsRequest(this, builder);
|
||||
initializeDevice(linkParamsReq);
|
||||
getCoordinator().setDevice(this.gbDevice);
|
||||
return builder;
|
||||
}
|
||||
|
||||
@@ -877,36 +878,36 @@ public class HuaweiSupportProvider {
|
||||
try {
|
||||
|
||||
// NOTE: register all DAta Sync handlers on the early stage. We can receive requests from the watch during initialization.
|
||||
if (getHuaweiCoordinator().getSendCountryCodeEnabled(getDevice())) {
|
||||
if (getDeviceState().getSendCountryCodeEnabled(getDevice())) {
|
||||
huaweiDataSyncFeatureManager = new HuaweiDataSyncFeatureManager(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
if (getHuaweiCoordinator().supportsNotificationPicture()) {
|
||||
if (getDeviceState().supportsNotificationPicture()) {
|
||||
huaweiDataSyncNotificationPictures = new HuaweiDataSyncNotificationPictures(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
if (getHuaweiCoordinator().supportsThreeCircle() || getHuaweiCoordinator().supportsThreeCircleLite()) {
|
||||
if (getDeviceState().supportsThreeCircle() || getDeviceState().supportsThreeCircleLite()) {
|
||||
huaweiDataSyncTreeCircleGoals = new HuaweiDataSyncGoals(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
if (getHuaweiCoordinator().supportsFindDeviceAbility()) {
|
||||
if (getDeviceState().supportsFindDeviceAbility()) {
|
||||
huaweiDataSyncFindDevice = new HuaweiDataSyncFindDevice(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
if (getHuaweiCoordinator().supportsEmotion()) {
|
||||
if (getDeviceState().supportsEmotion()) {
|
||||
huaweiDataSyncEmotion = new HuaweiDataSyncEmotion(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
if (getHuaweiCoordinator().supportsArrhythmia() && getHuaweiCoordinator().isShowForceCountrySpecificFeatures(getCoordinator().getDevice())) {
|
||||
if (getDeviceState().supportsArrhythmia() && getDeviceState().isShowForceCountrySpecificFeatures(getDevice())) {
|
||||
huaweiDataSyncArrhythmia = new HuaweiDataSyncArrhythmia(HuaweiSupportProvider.this);
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsECG() && getHuaweiCoordinator().isShowForceCountrySpecificFeatures(getCoordinator().getDevice())) {
|
||||
if (getDeviceState().supportsECG() && getDeviceState().isShowForceCountrySpecificFeatures(getDevice())) {
|
||||
huaweiDataSyncEcg = new HuaweiDataSyncEcg(HuaweiSupportProvider.this);
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsSleepApnea()) {
|
||||
if (getDeviceState().supportsSleepApnea()) {
|
||||
huaweiDataSyncSleepApnea = new HuaweiDataSyncSleepApnea(HuaweiSupportProvider.this);
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsArterialStiffnessDetection()) {
|
||||
if (getDeviceState().supportsArterialStiffnessDetection()) {
|
||||
huaweiDataSyncArterialStiffnessDetection = new HuaweiDataSyncArterialStiffnessDetection(HuaweiSupportProvider.this);
|
||||
}
|
||||
|
||||
@@ -962,7 +963,7 @@ public class HuaweiSupportProvider {
|
||||
|
||||
|
||||
// Setup the alarms if necessary
|
||||
if (!getHuaweiCoordinator().supportsChangingAlarm() && firstConnection)
|
||||
if (!getDeviceState().supportsChangingAlarm() && firstConnection)
|
||||
initializeAlarms();
|
||||
|
||||
// Queue all the requests
|
||||
@@ -981,20 +982,20 @@ public class HuaweiSupportProvider {
|
||||
public void call() {
|
||||
gbDevice.setUpdateState(GBDevice.State.INITIALIZED, getContext());
|
||||
|
||||
if (getHuaweiCoordinator().supportsP2PService()) {
|
||||
if (getHuaweiCoordinator().supportsCalendar()) {
|
||||
if (getDeviceState().supportsP2PService()) {
|
||||
if (getDeviceState().supportsCalendar()) {
|
||||
if (HuaweiP2PCalendarService.getRegisteredInstance(huaweiP2PManager) == null) {
|
||||
HuaweiP2PCalendarService calendarService = new HuaweiP2PCalendarService(huaweiP2PManager);
|
||||
calendarService.register();
|
||||
}
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsTrack()) {
|
||||
if (getDeviceState().supportsTrack()) {
|
||||
if (HuaweiP2PTrackService.getRegisteredInstance(huaweiP2PManager) == null) {
|
||||
HuaweiP2PTrackService trackService = new HuaweiP2PTrackService(huaweiP2PManager);
|
||||
trackService.register();
|
||||
}
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsCannedReplies()) {
|
||||
if (getDeviceState().supportsCannedReplies()) {
|
||||
if (HuaweiP2PCannedRepliesService.getRegisteredInstance(huaweiP2PManager) == null) {
|
||||
HuaweiP2PCannedRepliesService cannedRepliesService = new HuaweiP2PCannedRepliesService(huaweiP2PManager);
|
||||
cannedRepliesService.register();
|
||||
@@ -1004,13 +1005,13 @@ public class HuaweiSupportProvider {
|
||||
HuaweiP2PDataDictionarySyncService trackService = new HuaweiP2PDataDictionarySyncService(huaweiP2PManager);
|
||||
trackService.register();
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsNotificationsAddIconTimestamp()) {
|
||||
if (getDeviceState().supportsNotificationsAddIconTimestamp()) {
|
||||
if (HuaweiP2PAppIcon.getRegisteredInstance(huaweiP2PManager) == null) {
|
||||
HuaweiP2PAppIcon appIconService = new HuaweiP2PAppIcon(huaweiP2PManager);
|
||||
appIconService.register();
|
||||
}
|
||||
}
|
||||
if (getHuaweiCoordinator().supportsContactsSync()) {
|
||||
if (getDeviceState().supportsContactsSync()) {
|
||||
if (HuaweiP2PContactsService.getRegisteredInstance(huaweiP2PManager) == null) {
|
||||
HuaweiP2PContactsService contactsService = new HuaweiP2PContactsService(huaweiP2PManager);
|
||||
contactsService.register();
|
||||
@@ -1078,14 +1079,14 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
private void getAlarms() {
|
||||
if (!getHuaweiCoordinator().supportsChangingAlarm())
|
||||
if (!getDeviceState().supportsChangingAlarm())
|
||||
return;
|
||||
|
||||
GetEventAlarmList getEventAlarmList = new GetEventAlarmList(this);
|
||||
getEventAlarmList.setFinalizeReq(new RequestCallback() {
|
||||
@Override
|
||||
public void call() {
|
||||
if (!getHuaweiCoordinator().supportsSmartAlarm(getDevice()))
|
||||
if (!getDeviceState().supportsSmartAlarm(getDevice()))
|
||||
return; // Don't get smart alarms when not supported
|
||||
|
||||
GetSmartAlarmList getSmartAlarmList = new GetSmartAlarmList(HuaweiSupportProvider.this);
|
||||
@@ -1621,7 +1622,7 @@ public class HuaweiSupportProvider {
|
||||
if (P2PSyncService == null) {
|
||||
return;
|
||||
}
|
||||
Map<Integer, HuaweiDictionarySyncInterface> sup = P2PSyncService.getAllSupported(this.getHuaweiCoordinator());
|
||||
Map<Integer, HuaweiDictionarySyncInterface> sup = P2PSyncService.getAllSupported(this.getDeviceState());
|
||||
if (sup.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
@@ -1808,7 +1809,7 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public void onSetAlarms(ArrayList<? extends nodomain.freeyourgadget.gadgetbridge.model.Alarm> alarms) {
|
||||
boolean smartAlarmEnabled = getHuaweiCoordinator().supportsSmartAlarm(getDevice());
|
||||
boolean smartAlarmEnabled = getDeviceState().supportsSmartAlarm(getDevice());
|
||||
|
||||
AlarmsRequest smartAlarmReq = new AlarmsRequest(this, true);
|
||||
AlarmsRequest eventAlarmReq = new AlarmsRequest(this, false);
|
||||
@@ -1830,7 +1831,7 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public void onSetCallState(CallSpec callSpec) {
|
||||
if (callSpec.command == CallSpec.CALL_INCOMING || (callSpec.command == CallSpec.CALL_OUTGOING && getHuaweiCoordinator().supportsOutgoingCall())) {
|
||||
if (callSpec.command == CallSpec.CALL_INCOMING || (callSpec.command == CallSpec.CALL_OUTGOING && getDeviceState().supportsOutgoingCall())) {
|
||||
SendNotificationRequest sendNotificationReq = new SendNotificationRequest(this);
|
||||
try {
|
||||
sendNotificationReq.buildNotificationTLVFromCallSpec(callSpec);
|
||||
@@ -1841,7 +1842,7 @@ public class HuaweiSupportProvider {
|
||||
} else if (
|
||||
callSpec.command == CallSpec.CALL_ACCEPT ||
|
||||
callSpec.command == CallSpec.CALL_START) {
|
||||
byte type = getHuaweiCoordinator().supportsNotificationsStartCall() ? Notifications.NotificationType.startCall : Notifications.NotificationType.stopNotification;
|
||||
byte type = getDeviceState().supportsNotificationsStartCall() ? Notifications.NotificationType.startCall : Notifications.NotificationType.stopNotification;
|
||||
StopNotificationRequest stopNotificationRequest = new StopNotificationRequest(this, type);
|
||||
try {
|
||||
stopNotificationRequest.doPerform();
|
||||
@@ -2098,7 +2099,7 @@ public class HuaweiSupportProvider {
|
||||
packet.trainingPoints,
|
||||
packet.longestStreak,
|
||||
packet.tripped,
|
||||
getHuaweiCoordinator().isSupportsWorkoutNewSteps()
|
||||
getDeviceState().isSupportsWorkoutNewSteps()
|
||||
);
|
||||
|
||||
db.getDaoSession().getHuaweiWorkoutSummarySampleDao().insertOrReplace(summarySample);
|
||||
@@ -2914,17 +2915,17 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public void onSetContacts(ArrayList<? extends Contact> contacts) {
|
||||
if (getHuaweiCoordinator().supportsContactsSync()) {
|
||||
if (getDeviceState().supportsContactsSync()) {
|
||||
HuaweiP2PContactsService P2PContactsService = HuaweiP2PContactsService.getRegisteredInstance(huaweiP2PManager);
|
||||
|
||||
if (P2PContactsService != null) {
|
||||
P2PContactsService.startSync();
|
||||
}
|
||||
} else if (getHuaweiCoordinator().supportsContacts()) {
|
||||
} else if (getDeviceState().supportsContacts()) {
|
||||
SendSetContactsRequest sendSetContactsRequest = new SendSetContactsRequest(
|
||||
this,
|
||||
contacts,
|
||||
this.getHuaweiCoordinator().getContactsSlotCount(getDevice())
|
||||
this.getDeviceState().getContactsSlotCount(getDevice())
|
||||
);
|
||||
try {
|
||||
sendSetContactsRequest.doPerform();
|
||||
@@ -3002,8 +3003,8 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
private boolean downloadDictTrueSleepData(int start, int end) {
|
||||
LOG.info("supportsDictSleepSync: {}", getHuaweiCoordinator().supportsDictSleepSync());
|
||||
if (!getHuaweiCoordinator().supportsDictSleepSync()) {
|
||||
LOG.info("supportsDictSleepSync: {}", getDeviceState().supportsDictSleepSync());
|
||||
if (!getDeviceState().supportsDictSleepSync()) {
|
||||
return false;
|
||||
}
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.sequenceDataFileRequest(
|
||||
@@ -3075,7 +3076,7 @@ public class HuaweiSupportProvider {
|
||||
sleepStat.setSleepVersion(sleepDataSummary.sleepVersion);
|
||||
sleepStatsSamples.add(sleepStat);
|
||||
|
||||
long time = HuaweiTrueSleepSequenceDataParser.getTime(sleepDataSummary.fallAsleepTime, sleepDataSummary.bedTime, sleepDataSummary.validData, getHuaweiCoordinator().supportsBedTime());
|
||||
long time = HuaweiTrueSleepSequenceDataParser.getTime(sleepDataSummary.fallAsleepTime, sleepDataSummary.bedTime, sleepDataSummary.validData, getDeviceState().supportsBedTime());
|
||||
LOG.info("SLEEP Time: {}", time);
|
||||
List<HuaweiTrueSleepSequenceDataParser.SleepStage> stages = HuaweiTrueSleepSequenceDataParser.parseSleepDetails(sd.getDetails(), time);
|
||||
LOG.info("SLEEP Stages: {}", stages);
|
||||
@@ -3112,7 +3113,7 @@ public class HuaweiSupportProvider {
|
||||
|
||||
public boolean downloadTruSleepData(int start, int end) {
|
||||
// We only get the data if TruSleep is supported
|
||||
if (!getHuaweiCoordinator().supportsTruSleep())
|
||||
if (!getDeviceState().supportsTruSleep())
|
||||
return false;
|
||||
|
||||
if (downloadDictTrueSleepData(start, end))
|
||||
@@ -3148,13 +3149,13 @@ public class HuaweiSupportProvider {
|
||||
};
|
||||
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.sleepStateFileRequest(
|
||||
getHuaweiCoordinator().getSupportsTruSleepNewSync(),
|
||||
getDeviceState().getSupportsTruSleepNewSync(),
|
||||
start,
|
||||
end,
|
||||
callback
|
||||
), true);
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.sleepDataFileRequest(
|
||||
getHuaweiCoordinator().getSupportsTruSleepNewSync(),
|
||||
getDeviceState().getSupportsTruSleepNewSync(),
|
||||
start,
|
||||
end,
|
||||
callback
|
||||
@@ -3163,13 +3164,13 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public boolean downloadStressData(int start, int end) {
|
||||
if (!getHuaweiCoordinator().supportsAutoStress())
|
||||
if (!getDeviceState().supportsAutoStress())
|
||||
return false;
|
||||
|
||||
syncState.setStressSync(true);
|
||||
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.rriFileRequest(
|
||||
getHuaweiCoordinator().getSupportsRriNewSync(),
|
||||
getDeviceState().getSupportsRriNewSync(),
|
||||
start,
|
||||
end,
|
||||
new HuaweiFileDownloadManager.FileDownloadCallback() {
|
||||
@@ -3208,7 +3209,7 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public boolean downloadEcgData(int start, int end) {
|
||||
if (!getHuaweiCoordinator().supportsECG())
|
||||
if (!getDeviceState().supportsECG())
|
||||
return false;
|
||||
|
||||
syncState.setEcgSync(true);
|
||||
@@ -3274,7 +3275,7 @@ public class HuaweiSupportProvider {
|
||||
}
|
||||
|
||||
public void downloadWorkoutPdrFiles(short workoutId, Long databaseId) {
|
||||
if(!getHuaweiCoordinator().isSupportsGpsNewSync())
|
||||
if(!getDeviceState().isSupportsGpsNewSync())
|
||||
return;
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.workoutPdrFileRequest(
|
||||
workoutId,
|
||||
@@ -3306,7 +3307,7 @@ public class HuaweiSupportProvider {
|
||||
syncState.startWorkoutGpsDownload();
|
||||
|
||||
huaweiFileDownloadManager.addToQueue(HuaweiFileDownloadManager.FileRequest.workoutGpsFileRequest(
|
||||
getHuaweiCoordinator().isSupportsGpsNewSync(),
|
||||
getDeviceState().isSupportsGpsNewSync(),
|
||||
workoutId,
|
||||
databaseId,
|
||||
new HuaweiFileDownloadManager.FileDownloadCallback() {
|
||||
|
||||
+8
-8
@@ -209,7 +209,7 @@ public class HuaweiWeatherManager {
|
||||
|
||||
public void sendWeather(WeatherSpec weatherSpec) {
|
||||
// Initialize weather settings and send weather
|
||||
if (!supportProvider.getHuaweiCoordinator().supportsWeather()) {
|
||||
if (!supportProvider.getDeviceState().supportsWeather()) {
|
||||
LOG.error("onSendWeather called while weather is not supported.");
|
||||
return;
|
||||
}
|
||||
@@ -226,15 +226,15 @@ public class HuaweiWeatherManager {
|
||||
fixupWeather(weatherSpec);
|
||||
|
||||
Weather.Settings weatherSettings = new Weather.Settings();
|
||||
weatherSettings.uvIndexSupported = supportProvider.getHuaweiCoordinator().supportsWeatherUvIndex();
|
||||
weatherSettings.extendedHourlyForecast = supportProvider.getHuaweiCoordinator().supportsWeatherExtendedHourForecast();
|
||||
weatherSettings.uvIndexSupported = supportProvider.getDeviceState().supportsWeatherUvIndex();
|
||||
weatherSettings.extendedHourlyForecast = supportProvider.getDeviceState().supportsWeatherExtendedHourForecast();
|
||||
|
||||
SendWeatherStartRequest weatherStartRequest = new SendWeatherStartRequest(supportProvider, weatherSettings);
|
||||
weatherStartRequest.setFinalizeReq(errorHandler);
|
||||
weatherStartRequest.setupTimeoutUntilNext(1000);
|
||||
Request lastRequest = weatherStartRequest;
|
||||
|
||||
if (supportProvider.getHuaweiCoordinator().supportsWeatherUnit()) {
|
||||
if (supportProvider.getDeviceState().supportsWeatherUnit()) {
|
||||
SendWeatherUnitRequest weatherUnitRequest = new SendWeatherUnitRequest(supportProvider);
|
||||
weatherUnitRequest.setFinalizeReq(errorHandler);
|
||||
lastRequest.nextRequest(weatherUnitRequest);
|
||||
@@ -246,14 +246,14 @@ public class HuaweiWeatherManager {
|
||||
lastRequest.nextRequest(weatherSupportRequest);
|
||||
lastRequest = weatherSupportRequest;
|
||||
|
||||
if (supportProvider.getHuaweiCoordinator().supportsWeatherExtended()) {
|
||||
if (supportProvider.getDeviceState().supportsWeatherExtended()) {
|
||||
SendWeatherExtendedSupportRequest weatherExtendedSupportRequest = new SendWeatherExtendedSupportRequest(supportProvider, weatherSettings);
|
||||
weatherExtendedSupportRequest.setFinalizeReq(errorHandler);
|
||||
lastRequest.nextRequest(weatherExtendedSupportRequest);
|
||||
lastRequest = weatherExtendedSupportRequest;
|
||||
}
|
||||
|
||||
if (supportProvider.getHuaweiCoordinator().supportsWeatherMoonRiseSet()) {
|
||||
if (supportProvider.getDeviceState().supportsWeatherMoonRiseSet()) {
|
||||
SendWeatherSunMoonSupportRequest weatherSunMoonSupportRequest = new SendWeatherSunMoonSupportRequest(supportProvider, weatherSettings);
|
||||
weatherSunMoonSupportRequest.setFinalizeReq(errorHandler);
|
||||
lastRequest.nextRequest(weatherSunMoonSupportRequest);
|
||||
@@ -268,7 +268,7 @@ public class HuaweiWeatherManager {
|
||||
lastRequest = sendWeatherCurrentRequest;
|
||||
|
||||
|
||||
if (supportProvider.getHuaweiCoordinator().supportsGpsAndTimeToDevice() &&
|
||||
if (supportProvider.getDeviceState().supportsGpsAndTimeToDevice() &&
|
||||
GBApplication.getDevicePrefs(supportProvider.getDevice()).getBoolean("pref_huawei_gps_and_time", true)) {
|
||||
Location location = new CurrentPosition().getLastKnownLocation();
|
||||
BigDecimal latitude = toBigDecimal(location.getLatitude());
|
||||
@@ -285,7 +285,7 @@ public class HuaweiWeatherManager {
|
||||
}
|
||||
}
|
||||
|
||||
if (supportProvider.getHuaweiCoordinator().supportsWeatherForecasts()) {
|
||||
if (supportProvider.getDeviceState().supportsWeatherForecasts()) {
|
||||
SendWeatherForecastRequest sendWeatherForecastRequest = new SendWeatherForecastRequest(supportProvider, weatherSettings, weatherSpec);
|
||||
sendWeatherForecastRequest.setFinalizeReq(errorHandler);
|
||||
lastRequest.nextRequest(sendWeatherForecastRequest);
|
||||
|
||||
+1
-1
@@ -185,7 +185,7 @@ public class HuaweiDataSyncFeatureManager implements HuaweiDataSyncCommon.DataCa
|
||||
private void sendFeaturesFile() {
|
||||
LOG.info("HuaweiDataSyncFeatureManager Send feature file upload info");
|
||||
|
||||
final String countryCode = support.getHuaweiCoordinator().getCountryCode(support.getDevice());
|
||||
final String countryCode = support.getDeviceState().getCountryCode(support.getDevice());
|
||||
|
||||
final String json = getFeaturesFileContent(countryCode);
|
||||
LOG.info("feature file content: {}", json);
|
||||
|
||||
+1
-1
@@ -97,7 +97,7 @@ public abstract class HuaweiBaseP2PService {
|
||||
sendP2PCommand((byte) 2, this.getModule(), this.getPackage(), this.getLocalFingerprint(), this.getFingerprint(), sendData, callback);
|
||||
}
|
||||
public void sendGetVersion(HuaweiP2PCallback callback) {
|
||||
if(manager.getSupportProvider().getHuaweiCoordinator().supportsP2PGetAppVersion()) {
|
||||
if(manager.getSupportProvider().getDeviceState().supportsP2PGetAppVersion()) {
|
||||
sendP2PCommand((byte) 4, this.getModule(), this.getPackage(), null, null, null, callback);
|
||||
} else {
|
||||
LOG.error("P2P Get App Version is not supported");
|
||||
|
||||
+3
-3
@@ -88,14 +88,14 @@ public class HuaweiP2PCalendarService extends HuaweiBaseP2PService {
|
||||
|
||||
@Override
|
||||
public String getPackage() {
|
||||
if (manager.getSupportProvider().getHuaweiCoordinator().supportsExternalCalendarService())
|
||||
if (manager.getSupportProvider().getDeviceState().supportsExternalCalendarService())
|
||||
return "com.huawei.ohos.calendar";
|
||||
return "in.huawei.calendar";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFingerprint() {
|
||||
if (manager.getSupportProvider().getHuaweiCoordinator().supportsExternalCalendarService())
|
||||
if (manager.getSupportProvider().getDeviceState().supportsExternalCalendarService())
|
||||
return "com.huawei.ohos.calendar_BCgpfcWNSKWgvxsSILxooQZyAmKYsFQnMTibnfrKQqK9M0ABtXH+GbsOscsnVvVc5qIDiFEyEOYMSF7gJ7Vb5Mc=";
|
||||
return "SystemApp";
|
||||
}
|
||||
@@ -476,7 +476,7 @@ public class HuaweiP2PCalendarService extends HuaweiBaseP2PService {
|
||||
|
||||
// NOTE: scheduleCount is a max number of events to send. It suitable only if supportsExternalCalendarService not set
|
||||
//external calendar synchronization only supported on Harmony devices. I don't know how to deal with this.
|
||||
if (!manager.getSupportProvider().getHuaweiCoordinator().supportsExternalCalendarService()) {
|
||||
if (!manager.getSupportProvider().getDeviceState().supportsExternalCalendarService()) {
|
||||
if (!syncCalendarEvents(majorVersion, minorVersion, scheduleCount)) {
|
||||
sendCalendarCmd((byte) 0x01, (byte) 0x04, null); //No sync required
|
||||
}
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ public class HuaweiP2PCannedRepliesService extends HuaweiBaseP2PService {
|
||||
return;
|
||||
final GBDeviceEventUpdatePreferences gbDeviceEventUpdatePreferences = new GBDeviceEventUpdatePreferences();
|
||||
|
||||
for (int i = 1; i <= manager.getSupportProvider().getHuaweiCoordinator().getCannedRepliesSlotCount(manager.getSupportProvider().getDevice()); i++) {
|
||||
for (int i = 1; i <= manager.getSupportProvider().getDeviceState().getCannedRepliesSlotCount(manager.getSupportProvider().getDevice()); i++) {
|
||||
String message = null;
|
||||
if (replies.size() >= i) {
|
||||
if (replies.get(i - 1).contains(0x04)) {
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ public class HuaweiP2PDirection extends HuaweiBaseP2PService {
|
||||
// app availability can be checked by querying app list from the watch (service 0x2a).
|
||||
sendGetVersion((version, data) -> {
|
||||
LOG.info("HuaweiP2PDirection App version: {}", version);
|
||||
manager.getSupportProvider().getCoordinator().getHuaweiCoordinator().setNavigationAvailability(version != -1);
|
||||
manager.getSupportProvider().getDeviceState().setNavigationAvailability(version != -1);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -29,7 +29,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.heartratezones.HeartRateZones;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.heartratezones.HeartRateZonesConfig;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.heartratezones.HeartRateZonesSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiP2PManager;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public class HuaweiP2PTrackService extends HuaweiBaseP2PService {
|
||||
private final Logger LOG = LoggerFactory.getLogger(HuaweiP2PTrackService.class);
|
||||
@@ -89,7 +88,7 @@ public class HuaweiP2PTrackService extends HuaweiBaseP2PService {
|
||||
|
||||
public byte[] getHRZonesData() {
|
||||
|
||||
HuaweiHeartRateZonesSpec spec = new HuaweiHeartRateZonesSpec(manager.getSupportProvider().getDevice(), manager.getSupportProvider().getHuaweiCoordinator());
|
||||
HuaweiHeartRateZonesSpec spec = new HuaweiHeartRateZonesSpec(manager.getSupportProvider().getDevice(), manager.getSupportProvider().getDeviceState());
|
||||
List<HeartRateZonesConfig> zones = spec.getDeviceConfig();
|
||||
HeartRateZonesConfig uprightConfig = HuaweiHeartRateZonesSpec.getByPosture(zones, HeartRateZonesSpec.PostureType.UPRIGHT);
|
||||
HeartRateZonesConfig sittingConfig = HuaweiHeartRateZonesSpec.getByPosture(zones, HeartRateZonesSpec.PostureType.SITTING);
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class AcceptAgreementsRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsAcceptAgreement();
|
||||
return supportProvider.getDeviceState().supportsAcceptAgreement();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class GetActivityTypeRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsActivityType();
|
||||
return supportProvider.getDeviceState().supportsActivityType();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@ public class GetAppInfoParams extends Request{
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsAppParams();
|
||||
return supportProvider.getDeviceState().supportsAppParams();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,6 +51,6 @@ public class GetAppInfoParams extends Request{
|
||||
throw new ResponseTypeMismatchException(receivedPacket, App.AppInfoParams.Response.class);
|
||||
|
||||
App.AppInfoParams.Response resp = (App.AppInfoParams.Response)(receivedPacket);
|
||||
supportProvider.getHuaweiCoordinator().setAppDeviceParams(resp.params);
|
||||
supportProvider.getDeviceState().setAppDeviceParams(resp.params);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class GetConnectStatusRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsConnectStatus();
|
||||
return supportProvider.getDeviceState().supportsConnectStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class GetContactsCount extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsContacts();
|
||||
return supportProvider.getDeviceState().supportsContacts();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,6 +56,6 @@ public class GetContactsCount extends Request {
|
||||
throw new ResponseTypeMismatchException(receivedPacket, Contacts.ContactsCount.Response.class);
|
||||
|
||||
int count = ((Contacts.ContactsCount.Response) receivedPacket).maxCount;
|
||||
this.supportProvider.getHuaweiCoordinator().saveMaxContactsCount(count);
|
||||
this.supportProvider.getDeviceState().saveMaxContactsCount(count);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class GetDndLiftWristTypeRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsQueryDndLiftWristDisturbType();
|
||||
return supportProvider.getDeviceState().supportsQueryDndLiftWristDisturbType();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@ public class GetEventAlarmList extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsChangingAlarm();
|
||||
return supportProvider.getDeviceState().supportsChangingAlarm();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,7 +57,7 @@ public class GetEventAlarmList extends Request {
|
||||
// Correct for position of smart alarm
|
||||
// Note that the band uses 1 as the first index for event alarms
|
||||
int positionOffset;
|
||||
if (supportProvider.getCoordinator().getHuaweiCoordinator().supportsSmartAlarm(supportProvider.getDevice()))
|
||||
if (supportProvider.getDeviceState().supportsSmartAlarm(supportProvider.getDevice()))
|
||||
positionOffset = 0;
|
||||
else
|
||||
positionOffset = -1;
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ public class GetExpandCapabilityRequest extends Request {
|
||||
if (!(receivedPacket instanceof DeviceConfig.ExpandCapability.Response))
|
||||
throw new ResponseTypeMismatchException(receivedPacket, DeviceConfig.ExpandCapability.Response.class);
|
||||
|
||||
supportProvider.getHuaweiCoordinator().saveExpandCapabilities(((DeviceConfig.ExpandCapability.Response) receivedPacket).expandCapabilities);
|
||||
supportProvider.getDeviceState().saveExpandCapabilities(((DeviceConfig.ExpandCapability.Response) receivedPacket).expandCapabilities);
|
||||
|
||||
dynamicServicesReq.call();
|
||||
}
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class GetExtendedMusicInfoParams extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsMusicUploading();
|
||||
return supportProvider.getDeviceState().supportsMusicUploading();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,6 +55,6 @@ public class GetExtendedMusicInfoParams extends Request {
|
||||
throw new Request.ResponseTypeMismatchException(receivedPacket, MusicControl.ExtendedMusicInfoParams.Response.class);
|
||||
|
||||
MusicControl.ExtendedMusicInfoParams.Response resp = (MusicControl.ExtendedMusicInfoParams.Response)(receivedPacket);
|
||||
supportProvider.getHuaweiCoordinator().setExtendedMusicInfoParams(resp.params);
|
||||
supportProvider.getDeviceState().setExtendedMusicInfoParams(resp.params);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class GetMusicInfoParams extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsMusicUploading();
|
||||
return supportProvider.getDeviceState().supportsMusicUploading();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ public class GetNotificationCapabilitiesRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsPromptPushMessage() && supportProvider.getProtocolVersion() == 2;
|
||||
return supportProvider.getDeviceState().supportsPromptPushMessage() && supportProvider.getProtocolVersion() == 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,6 +56,6 @@ public class GetNotificationCapabilitiesRequest extends Request {
|
||||
if (!(receivedPacket instanceof NotificationCapabilities.Response))
|
||||
throw new ResponseTypeMismatchException(receivedPacket, NotificationCapabilities.Response.class);
|
||||
|
||||
supportProvider.getHuaweiCoordinator().saveNotificationCapabilities(((NotificationCapabilities.Response) receivedPacket).capabilities);
|
||||
supportProvider.getDeviceState().saveNotificationCapabilities(((NotificationCapabilities.Response) receivedPacket).capabilities);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -38,9 +38,9 @@ public class GetNotificationConstraintsRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsNotificationAlert() && supportProvider.getProtocolVersion() == 2
|
||||
&& supportProvider.getCoordinator().getDeviceType() != DeviceType.HUAWEIBANDAW70
|
||||
&& supportProvider.getCoordinator().getDeviceType() != DeviceType.HONORWATCH4; // Bit of a workaround, there is probably some capabilities this actually depends on
|
||||
return supportProvider.getDeviceState().supportsNotificationAlert() && supportProvider.getProtocolVersion() == 2
|
||||
&& supportProvider.getDevice().getType() != DeviceType.HUAWEIBANDAW70
|
||||
&& supportProvider.getDevice().getType() != DeviceType.HONORWATCH4; // Bit of a workaround, there is probably some capabilities this actually depends on
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +59,6 @@ public class GetNotificationConstraintsRequest extends Request {
|
||||
if (!(receivedPacket instanceof NotificationConstraints.Response))
|
||||
throw new ResponseTypeMismatchException(receivedPacket, NotificationConstraints.Response.class);
|
||||
|
||||
supportProvider.getHuaweiCoordinator().saveNotificationConstraints(((NotificationConstraints.Response) receivedPacket).constraints);
|
||||
supportProvider.getDeviceState().saveNotificationConstraints(((NotificationConstraints.Response) receivedPacket).constraints);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -36,15 +36,15 @@ public class GetOTAChangeLog extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsOTAChangelog() &&
|
||||
supportProvider.getHuaweiCoordinator().getOtaSoftwareVersion() != null;
|
||||
return supportProvider.getDeviceState().supportsOTAChangelog() &&
|
||||
supportProvider.getDeviceState().getOtaSoftwareVersion() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<byte[]> createRequest() throws RequestCreationException {
|
||||
try {
|
||||
// TODO: get proper language.
|
||||
return new OTA.GetChangeLog.Request(paramsProvider, supportProvider.getHuaweiCoordinator().getOtaSoftwareVersion(), "en").serialize();
|
||||
return new OTA.GetChangeLog.Request(paramsProvider, supportProvider.getDeviceState().getOtaSoftwareVersion(), "en").serialize();
|
||||
} catch (HuaweiPacket.CryptoException e) {
|
||||
throw new RequestCreationException(e);
|
||||
}
|
||||
|
||||
+2
-2
@@ -60,7 +60,7 @@ public class GetProductInformationRequest extends Request {
|
||||
getDevice().addDeviceInfo(new GenericItem("SN: ", ((DeviceConfig.ProductInfo.Response) receivedPacket).serialNumber));
|
||||
getDevice().addDeviceInfo(new GenericItem("RC: ", String.valueOf(((DeviceConfig.ProductInfo.Response) receivedPacket).regionCode)));
|
||||
|
||||
supportProvider.getHuaweiCoordinator().setOtaSoftwareVersion(((DeviceConfig.ProductInfo.Response) receivedPacket).softwareVersion);
|
||||
supportProvider.getHuaweiCoordinator().setOtaSignatureLength(((DeviceConfig.ProductInfo.Response) receivedPacket).otaSignatureLength);
|
||||
supportProvider.getDeviceState().setOtaSoftwareVersion(((DeviceConfig.ProductInfo.Response) receivedPacket).softwareVersion);
|
||||
supportProvider.getDeviceState().setOtaSignatureLength(((DeviceConfig.ProductInfo.Response) receivedPacket).otaSignatureLength);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -36,7 +36,7 @@ public class GetSettingRelatedRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsSettingRelated();
|
||||
return supportProvider.getDeviceState().supportsSettingRelated();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,8 +55,8 @@ public class GetSettingRelatedRequest extends Request {
|
||||
|
||||
LOG.debug("handle Setting Related");
|
||||
|
||||
supportProvider.getHuaweiCoordinator().setSupportsTruSleepNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).truSleepNewSync);
|
||||
supportProvider.getHuaweiCoordinator().setSupportsRriNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).rriNewSync);
|
||||
supportProvider.getHuaweiCoordinator().setSupportsGpsNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).gpsNewSync);
|
||||
supportProvider.getDeviceState().setSupportsTruSleepNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).truSleepNewSync);
|
||||
supportProvider.getDeviceState().setSupportsRriNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).rriNewSync);
|
||||
supportProvider.getDeviceState().setSupportsGpsNewSync(((DeviceConfig.SettingRelated.Response) receivedPacket).gpsNewSync);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -34,8 +34,8 @@ public class GetSmartAlarmList extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsChangingAlarm() &&
|
||||
supportProvider.getHuaweiCoordinator().supportsSmartAlarm(supportProvider.getDevice());
|
||||
return supportProvider.getDeviceState().supportsChangingAlarm() &&
|
||||
supportProvider.getDeviceState().supportsSmartAlarm(supportProvider.getDevice());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -82,7 +82,7 @@ public class GetSupportedCommandsRequest extends Request {
|
||||
throw new ResponseTypeMismatchException(receivedPacket, DeviceConfig.SupportedCommands.Response.class);
|
||||
|
||||
for (DeviceConfig.SupportedCommands.Response.CommandsList commandsList : ((DeviceConfig.SupportedCommands.Response) receivedPacket).commandsLists) {
|
||||
supportProvider.getHuaweiCoordinator().addCommandsForService(
|
||||
supportProvider.getDeviceState().addCommandsForService(
|
||||
commandsList.service,
|
||||
commandsList.commands
|
||||
);
|
||||
@@ -92,8 +92,8 @@ public class GetSupportedCommandsRequest extends Request {
|
||||
GetSupportedCommandsRequest nextRequest = new GetSupportedCommandsRequest(supportProvider, activatedServices);
|
||||
this.nextRequest(nextRequest);
|
||||
} else {
|
||||
supportProvider.getHuaweiCoordinator().printCommandsPerService();
|
||||
if(supportProvider.getHuaweiCoordinator().supportsExpandCapability()) {
|
||||
supportProvider.getDeviceState().printCommandsPerService();
|
||||
if(supportProvider.getDeviceState().supportsExpandCapability()) {
|
||||
GetExpandCapabilityRequest nextRequest = new GetExpandCapabilityRequest(supportProvider);
|
||||
this.nextRequest(nextRequest);
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ public class GetWatchfaceParams extends Request{
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsWatchfaceParams();
|
||||
return supportProvider.getDeviceState().supportsWatchfaceParams();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -52,6 +52,6 @@ public class GetWatchfaceParams extends Request{
|
||||
throw new ResponseTypeMismatchException(receivedPacket, Watchface.WatchfaceParams.Response.class);
|
||||
|
||||
Watchface.WatchfaceParams.Response resp = (Watchface.WatchfaceParams.Response)(receivedPacket);
|
||||
supportProvider.getHuaweiCoordinator().setWatchfaceDeviceParams(resp.params);
|
||||
supportProvider.getDeviceState().setWatchfaceDeviceParams(resp.params);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class GetWearStatusRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsMultiDevice();
|
||||
return supportProvider.getDeviceState().supportsMultiDevice();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class GetWorkoutCapability extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsWorkoutCapability();
|
||||
return supportProvider.getDeviceState().supportsWorkoutCapability();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,6 +56,6 @@ public class GetWorkoutCapability extends Request {
|
||||
|
||||
LOG.info("Workout capability: NewSteps: {}", ((Workout.WorkoutCapability.Response) receivedPacket).supportNewStep);
|
||||
|
||||
supportProvider.getHuaweiCoordinator().setSupportsWorkoutNewSteps(((Workout.WorkoutCapability.Response) receivedPacket).supportNewStep);
|
||||
supportProvider.getDeviceState().setSupportsWorkoutNewSteps(((Workout.WorkoutCapability.Response) receivedPacket).supportNewStep);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ public class GetWorkoutDataRequest extends Request {
|
||||
@Override
|
||||
protected List<byte[]> createRequest() throws RequestCreationException {
|
||||
try {
|
||||
return new Workout.WorkoutData.Request(paramsProvider, workoutNumbers.workoutNumber, this.number, supportProvider.getHuaweiCoordinator().isSupportsWorkoutNewSteps()).serialize();
|
||||
return new Workout.WorkoutData.Request(paramsProvider, workoutNumbers.workoutNumber, this.number, supportProvider.getDeviceState().isSupportsWorkoutNewSteps()).serialize();
|
||||
} catch (HuaweiPacket.CryptoException e) {
|
||||
throw new RequestCreationException(e);
|
||||
}
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class SendCameraRemoteSetupEvent extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsCameraRemote() && GBApplication.getDeviceSpecificSharedPrefs(supportProvider.getDevice().getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_CAMERA_REMOTE, false);
|
||||
return supportProvider.getDeviceState().supportsCameraRemote() && GBApplication.getDeviceSpecificSharedPrefs(supportProvider.getDevice().getAddress()).getBoolean(DeviceSettingsPreferenceConst.PREF_CAMERA_REMOTE, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -21,15 +21,15 @@ public class SendCountryCodeRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsSendCountryCode() && supportProvider.getHuaweiCoordinator().getSendCountryCodeEnabled(supportProvider.getDevice());
|
||||
return supportProvider.getDeviceState().supportsSendCountryCode() && supportProvider.getDeviceState().getSendCountryCodeEnabled(supportProvider.getDevice());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<byte[]> createRequest() throws Request.RequestCreationException {
|
||||
try {
|
||||
final String countryCode = supportProvider.getHuaweiCoordinator().getCountryCode(supportProvider.getDevice());
|
||||
final String countryCode = supportProvider.getDeviceState().getCountryCode(supportProvider.getDevice());
|
||||
Byte siteId = null;
|
||||
if(supportProvider.getHuaweiCoordinator().supportsSendSiteId()) {
|
||||
if(supportProvider.getDeviceState().supportsSendSiteId()) {
|
||||
siteId = (byte) HuaweiUtil.getSiteIdByCountryCode(countryCode);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class SendDeviceReportThreshold extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsDeviceReportThreshold();
|
||||
return supportProvider.getDeviceState().supportsDeviceReportThreshold();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -43,7 +43,7 @@ public class SendDndAddRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsDoNotDisturb(supportProvider.getDevice());
|
||||
return supportProvider.getDeviceState().supportsDoNotDisturb(supportProvider.getDevice());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,7 +78,7 @@ public class SendDndAddRequest extends Request {
|
||||
end,
|
||||
cycle,
|
||||
statusDndLiftWrist ? dndLiftWristType : 0x00,
|
||||
supportProvider.getHuaweiCoordinator().supportsQueryDndLiftWristDisturbType()
|
||||
supportProvider.getDeviceState().supportsQueryDndLiftWristDisturbType()
|
||||
).serialize();
|
||||
} catch (HuaweiPacket.CryptoException e) {
|
||||
throw new RequestCreationException(e);
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class SendDndDeleteRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsDoNotDisturb(supportProvider.getDevice());
|
||||
return supportProvider.getDeviceState().supportsDoNotDisturb(supportProvider.getDevice());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -39,7 +39,7 @@ public class SendExtendedAccountRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsAccountJudgment() && supportProvider.getHuaweiCoordinator().supportsAccountSwitch();
|
||||
return supportProvider.getDeviceState().supportsAccountJudgment() && supportProvider.getDeviceState().supportsAccountSwitch();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -50,7 +50,7 @@ public class SendExtendedAccountRequest extends Request {
|
||||
try {
|
||||
return new AccountRelated.SendExtendedAccountToDevice.Request(
|
||||
paramsProvider,
|
||||
supportProvider.getHuaweiCoordinator().supportsDiffAccountPairingOptimization(),
|
||||
supportProvider.getDeviceState().supportsDiffAccountPairingOptimization(),
|
||||
account)
|
||||
.serialize();
|
||||
} catch (CryptoException e) {
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class SendFitnessGoalRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsMotionGoal();
|
||||
return supportProvider.getDeviceState().supportsMotionGoal();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -54,12 +54,12 @@ public class SendFitnessUserInfoRequest extends Request {
|
||||
birthdayEncoded += dateOfBirth.getMonthValue() << 8;
|
||||
birthdayEncoded += dateOfBirth.getDayOfMonth();
|
||||
|
||||
boolean unknownGenderSupported = supportProvider.getHuaweiCoordinator().supportsUnknownGender();
|
||||
boolean unknownGenderSupported = supportProvider.getDeviceState().supportsUnknownGender();
|
||||
//TODO: discover Vo2Max capability and retrieve calculate and set proper values. Currently disabled.
|
||||
boolean vo2Supported = false;
|
||||
int vo2Max = 0;
|
||||
int vo2Time = 0;
|
||||
boolean precisionWeightSupported = supportProvider.getHuaweiCoordinator().supportsPrecisionWeight();
|
||||
boolean precisionWeightSupported = supportProvider.getDeviceState().supportsPrecisionWeight();
|
||||
|
||||
UserInfo.UserInfoData userInfoData = new UserInfo.UserInfoData(
|
||||
activityUser.getHeightCm(),
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class SendGetDefaultSwitch extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportDefaultSwitch();
|
||||
return supportProvider.getDeviceState().supportDefaultSwitch();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-5
@@ -30,7 +30,7 @@ public class SendHeartRateZonesConfig extends Request {
|
||||
public SendHeartRateZonesConfig(HuaweiSupportProvider support) {
|
||||
super(support);
|
||||
this.serviceId = FitnessData.id;
|
||||
this.commandId = supportProvider.getHuaweiCoordinator().supportsExtendedHeartRateZones() ?
|
||||
this.commandId = supportProvider.getDeviceState().supportsExtendedHeartRateZones() ?
|
||||
FitnessData.HeartRateZoneConfigPacket.id_extended :
|
||||
FitnessData.HeartRateZoneConfigPacket.id_simple;
|
||||
}
|
||||
@@ -38,17 +38,17 @@ public class SendHeartRateZonesConfig extends Request {
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return
|
||||
!supportProvider.getHuaweiCoordinator().supportsTrack() && // In this case it uses P2P
|
||||
supportProvider.getHuaweiCoordinator().supportsHeartRateZones();
|
||||
!supportProvider.getDeviceState().supportsTrack() && // In this case it uses P2P
|
||||
supportProvider.getDeviceState().supportsHeartRateZones();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<byte[]> createRequest() throws RequestCreationException {
|
||||
try {
|
||||
HuaweiHeartRateZonesSpec spec = new HuaweiHeartRateZonesSpec(supportProvider.getDevice(), supportProvider.getHuaweiCoordinator());
|
||||
HuaweiHeartRateZonesSpec spec = new HuaweiHeartRateZonesSpec(supportProvider.getDevice(), supportProvider.getDeviceState());
|
||||
List<HeartRateZonesConfig> zones = spec.getDeviceConfig();
|
||||
HeartRateZonesConfig heartRateZonesConfig = HuaweiHeartRateZonesSpec.getByPosture(zones, HeartRateZonesSpec.PostureType.UPRIGHT);
|
||||
if (supportProvider.getHuaweiCoordinator().supportsExtendedHeartRateZones()) {
|
||||
if (supportProvider.getDeviceState().supportsExtendedHeartRateZones()) {
|
||||
return FitnessData.HeartRateZoneConfigPacket.Request.requestExtended(paramsProvider, heartRateZonesConfig).serialize();
|
||||
} else {
|
||||
return FitnessData.HeartRateZoneConfigPacket.Request.requestSimple(paramsProvider, heartRateZonesConfig).serialize();
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class SendMenstrualCapabilityRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsMenstrual();
|
||||
return supportProvider.getDeviceState().supportsMenstrual();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+25
-25
@@ -65,8 +65,8 @@ public class SendNotificationRequest extends Request {
|
||||
title = notificationSpec.sourceName;
|
||||
|
||||
String body = notificationSpec.body;
|
||||
if (body != null && body.length() > supportProvider.getHuaweiCoordinator().getContentLength()) {
|
||||
body = notificationSpec.body.substring(0x0, supportProvider.getHuaweiCoordinator().getContentLength() - 0xD);
|
||||
if (body != null && body.length() > supportProvider.getDeviceState().getContentLength()) {
|
||||
body = notificationSpec.body.substring(0x0, supportProvider.getDeviceState().getContentLength() - 0xD);
|
||||
body += "...";
|
||||
}
|
||||
|
||||
@@ -85,11 +85,11 @@ public class SendNotificationRequest extends Request {
|
||||
|
||||
Notifications.NotificationActionRequest.AdditionalParams params = new Notifications.NotificationActionRequest.AdditionalParams();
|
||||
|
||||
params.supportsReply = supportProvider.getHuaweiCoordinator().supportsNotificationsReply();
|
||||
params.supportsRepeatedNotify = supportProvider.getHuaweiCoordinator().supportsNotificationsRepeatedNotify();
|
||||
params.supportsRemoveSingle = supportProvider.getHuaweiCoordinator().supportsNotificationsRemoveSingle();
|
||||
params.supportsReplyActions = supportProvider.getHuaweiCoordinator().supportsNotificationsReplyActions();
|
||||
params.supportsTimestamp = supportProvider.getHuaweiCoordinator().supportsNotificationsAddIconTimestamp();
|
||||
params.supportsReply = supportProvider.getDeviceState().supportsNotificationsReply();
|
||||
params.supportsRepeatedNotify = supportProvider.getDeviceState().supportsNotificationsRepeatedNotify();
|
||||
params.supportsRemoveSingle = supportProvider.getDeviceState().supportsNotificationsRemoveSingle();
|
||||
params.supportsReplyActions = supportProvider.getDeviceState().supportsNotificationsReplyActions();
|
||||
params.supportsTimestamp = supportProvider.getDeviceState().supportsNotificationsAddIconTimestamp();
|
||||
|
||||
params.notificationId = notificationSpec.getId();
|
||||
params.notificationKey = getNotificationKey(notificationSpec);
|
||||
@@ -102,7 +102,7 @@ public class SendNotificationRequest extends Request {
|
||||
boolean pictureEnabled = GBApplication
|
||||
.getDeviceSpecificSharedPrefs(supportProvider.getDevice().getAddress())
|
||||
.getBoolean(DeviceSettingsPreferenceConst.PREF_NOTIFICATION_PICTURES_ENABLE, true);
|
||||
if(supportProvider.getHuaweiCoordinator().supportsNotificationPicture() && !TextUtils.isEmpty(notificationSpec.picturePath) && pictureEnabled) {
|
||||
if(supportProvider.getDeviceState().supportsNotificationPicture() && !TextUtils.isEmpty(notificationSpec.picturePath) && pictureEnabled) {
|
||||
params.pictureName = supportProvider.getHuaweiDataSyncNotificationPictures().getNameForPath(notificationSpec.picturePath);
|
||||
}
|
||||
|
||||
@@ -110,19 +110,19 @@ public class SendNotificationRequest extends Request {
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte)Notifications.TextType.title,
|
||||
(byte)supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte)supportProvider.getDeviceState().getContentFormat(),
|
||||
title)
|
||||
);
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.sender,
|
||||
(byte)supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte)supportProvider.getDeviceState().getContentFormat(),
|
||||
notificationSpec.sender)
|
||||
);
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.text,
|
||||
(byte)supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte)supportProvider.getDeviceState().getContentFormat(),
|
||||
body)
|
||||
);
|
||||
|
||||
@@ -146,7 +146,7 @@ public class SendNotificationRequest extends Request {
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.text,
|
||||
(byte)supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte)supportProvider.getDeviceState().getContentFormat(),
|
||||
callSpec.name)
|
||||
);
|
||||
|
||||
@@ -154,54 +154,54 @@ public class SendNotificationRequest extends Request {
|
||||
sourceAppId = callSpec.sourceAppId;
|
||||
params = new Notifications.NotificationActionRequest.AdditionalParams();
|
||||
|
||||
params.supportsReply = supportProvider.getHuaweiCoordinator().supportsNotificationsReply();
|
||||
params.supportsRepeatedNotify = supportProvider.getHuaweiCoordinator().supportsNotificationsRepeatedNotify();
|
||||
params.supportsRemoveSingle = supportProvider.getHuaweiCoordinator().supportsNotificationsRemoveSingle();
|
||||
params.supportsReplyActions = supportProvider.getHuaweiCoordinator().supportsNotificationsReplyActions();
|
||||
params.supportsTimestamp = supportProvider.getHuaweiCoordinator().supportsNotificationsAddIconTimestamp();
|
||||
params.supportsReply = supportProvider.getDeviceState().supportsNotificationsReply();
|
||||
params.supportsRepeatedNotify = supportProvider.getDeviceState().supportsNotificationsRepeatedNotify();
|
||||
params.supportsRemoveSingle = supportProvider.getDeviceState().supportsNotificationsRemoveSingle();
|
||||
params.supportsReplyActions = supportProvider.getDeviceState().supportsNotificationsReplyActions();
|
||||
params.supportsTimestamp = supportProvider.getDeviceState().supportsNotificationsAddIconTimestamp();
|
||||
|
||||
params.notificationId = new Random().nextInt(Integer.MAX_VALUE - 1);
|
||||
params.notificationKey = getCallSpecKey(callSpec, params.notificationId);
|
||||
params.channelId = callSpec.channelId;
|
||||
if(supportProvider.getHuaweiCoordinator().supportsVoipType3()) {
|
||||
if(supportProvider.getDeviceState().supportsVoipType3()) {
|
||||
params.category = "imcall";
|
||||
} else {
|
||||
params.category = callSpec.category;
|
||||
}
|
||||
params.address = null;
|
||||
if(supportProvider.getHuaweiCoordinator().supportsVoipType2()) {
|
||||
if(supportProvider.getDeviceState().supportsVoipType2()) {
|
||||
params.voipType = 1;
|
||||
}
|
||||
if (supportProvider.getHuaweiCoordinator().supportsVoipType1() || supportProvider.getHuaweiCoordinator().supportsVoipType2()) {
|
||||
if (supportProvider.getDeviceState().supportsVoipType1() || supportProvider.getDeviceState().supportsVoipType2()) {
|
||||
notificationType = Notifications.NotificationType.generic;
|
||||
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.title,
|
||||
(byte) supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte) supportProvider.getDeviceState().getContentFormat(),
|
||||
callSpec.name)
|
||||
);
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.sender,
|
||||
(byte) supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
(byte) supportProvider.getDeviceState().getContentFormat(),
|
||||
callSpec.name)
|
||||
);
|
||||
// TODO: Reject action, need to be parsed from the notification and added here. Then the watch send it back in the service id: 0x2 Command id: 0x11
|
||||
// content.add(
|
||||
// new Notifications.NotificationActionRequest.TextElement(
|
||||
// (byte) 8,
|
||||
// (byte) supportProvider.getHuaweiCoordinator().getContentFormat(),
|
||||
// (byte) supportProvider.getDeviceState().getContentFormat(),
|
||||
// "REJECT_CALL")
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
||||
if(supportProvider.getHuaweiCoordinator().supportsIncomingNumber()) {
|
||||
if(supportProvider.getDeviceState().supportsIncomingNumber()) {
|
||||
content.add(
|
||||
new Notifications.NotificationActionRequest.TextElement(
|
||||
(byte) Notifications.TextType.flight,
|
||||
(byte) supportProvider.getHuaweiCoordinator().getIncomingNumberFormat(),
|
||||
(byte) supportProvider.getDeviceState().getIncomingNumberFormat(),
|
||||
callSpec.number)
|
||||
);
|
||||
}
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class SendNotifyHeartRateCapabilityRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsWorkoutsTrustHeartRate();
|
||||
return supportProvider.getDeviceState().supportsWorkoutsTrustHeartRate();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class SendNotifyRestHeartRateCapabilityRequest extends Request {
|
||||
|
||||
@Override
|
||||
protected boolean requestSupported() {
|
||||
return supportProvider.getHuaweiCoordinator().supportsFitnessRestHeartRate();
|
||||
return supportProvider.getDeviceState().supportsFitnessRestHeartRate();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user