1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-03 15:32:54 +01:00

Rename DaFit references to Moyoung to reflect the protocol used

This commit is contained in:
Arjan Schrijver 2024-08-19 22:12:53 +02:00
parent d24fdf44fb
commit 918fa8bedc
34 changed files with 431 additions and 432 deletions

View File

@ -150,6 +150,7 @@ public class GBDaoGenerator {
addColmiSleepStageSample(schema, user, device); addColmiSleepStageSample(schema, user, device);
addColmiHrvValueSample(schema, user, device); addColmiHrvValueSample(schema, user, device);
addColmiHrvSummarySample(schema, user, device); addColmiHrvSummarySample(schema, user, device);
addMoyoungActivitySample(schema, user, device);
addHuaweiActivitySample(schema, user, device); addHuaweiActivitySample(schema, user, device);
@ -1036,8 +1037,8 @@ public class GBDaoGenerator {
return activitySample; return activitySample;
} }
private static Entity addDaFitActivitySample(Schema schema, Entity user, Entity device) { private static Entity addMoyoungActivitySample(Schema schema, Entity user, Entity device) {
Entity activitySample = addEntity(schema, "DaFitActivitySample"); Entity activitySample = addEntity(schema, "MoyoungActivitySample");
activitySample.implementsSerializable(); activitySample.implementsSerializable();
addCommonActivitySampleProperties("AbstractActivitySample", activitySample, user, device); addCommonActivitySampleProperties("AbstractActivitySample", activitySample, user, device);
activitySample.addIntProperty(SAMPLE_STEPS).notNull().codeBeforeGetterAndSetter(OVERRIDE).codeBeforeGetter("@Override\n public int getRawIntensity() {\n return getSteps();\n }\n\n"); activitySample.addIntProperty(SAMPLE_STEPS).notNull().codeBeforeGetterAndSetter(OVERRIDE).codeBeforeGetter("@Override\n public int getRawIntensity() {\n return getSteps();\n }\n\n");

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -25,7 +25,7 @@ import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport;
public class DaFitConstants { public class MoyoungConstants {
// (*) - based only on static reverse engineering of the original app code, // (*) - based only on static reverse engineering of the original app code,
// not supported by my watch so not implemented // not supported by my watch so not implemented
// (or at least I didn't manage to get any response out of it) // (or at least I didn't manage to get any response out of it)
@ -97,7 +97,7 @@ public class DaFitConstants {
// * 20 - protocol version (queries manufacturer name, see description above) // * 20 - protocol version (queries manufacturer name, see description above)
public static final UUID UUID_SERVICE_DAFIT = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "feea")); public static final UUID UUID_SERVICE_MOYOUNG = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "feea"));
public static final UUID UUID_CHARACTERISTIC_STEPS = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee1")); public static final UUID UUID_CHARACTERISTIC_STEPS = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee1"));
public static final UUID UUID_CHARACTERISTIC_DATA_OUT = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee2")); public static final UUID UUID_CHARACTERISTIC_DATA_OUT = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee2"));
public static final UUID UUID_CHARACTERISTIC_DATA_IN = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee3")); public static final UUID UUID_CHARACTERISTIC_DATA_IN = UUID.fromString(String.format(AbstractBTLEDeviceSupport.BASE_UUID, "fee3"));
@ -365,36 +365,36 @@ public class DaFitConstants {
public static final byte WEATHER_HAZE = 7; // it's basically very big fog :P public static final byte WEATHER_HAZE = 7; // it's basically very big fog :P
// NOTE: values > 7 give random glitchy crap as images :D // NOTE: values > 7 give random glitchy crap as images :D
public static byte openWeatherConditionToDaFitConditionId(int openWeatherMapCondition) { public static byte openWeatherConditionToMoyoungConditionId(int openWeatherMapCondition) {
int openWeatherMapGroup = openWeatherMapCondition / 100; int openWeatherMapGroup = openWeatherMapCondition / 100;
switch (openWeatherMapGroup) { switch (openWeatherMapGroup) {
case 2: // thunderstorm case 2: // thunderstorm
case 3: // drizzle case 3: // drizzle
case 5: // rain case 5: // rain
return DaFitConstants.WEATHER_RAINY; return MoyoungConstants.WEATHER_RAINY;
case 6: // snow case 6: // snow
return DaFitConstants.WEATHER_SNOWY; return MoyoungConstants.WEATHER_SNOWY;
case 7: // fog case 7: // fog
return DaFitConstants.WEATHER_FOGGY; return MoyoungConstants.WEATHER_FOGGY;
case 8: // clear / clouds case 8: // clear / clouds
if (openWeatherMapCondition <= 801) // few clouds if (openWeatherMapCondition <= 801) // few clouds
return DaFitConstants.WEATHER_SUNNY; return MoyoungConstants.WEATHER_SUNNY;
if (openWeatherMapCondition >= 804) // overcast clouds if (openWeatherMapCondition >= 804) // overcast clouds
return DaFitConstants.WEATHER_CLOUDY; return MoyoungConstants.WEATHER_CLOUDY;
return DaFitConstants.WEATHER_OVERCAST; return MoyoungConstants.WEATHER_OVERCAST;
case 9: // extreme case 9: // extreme
default: default:
if (openWeatherMapCondition == 905) // windy if (openWeatherMapCondition == 905) // windy
return DaFitConstants.WEATHER_SANDSTORM; return MoyoungConstants.WEATHER_SANDSTORM;
return DaFitConstants.WEATHER_HAZE; return MoyoungConstants.WEATHER_HAZE;
} }
} }
public static final String PREF_WATCH_FACE = "dafit_watch_face"; public static final String PREF_WATCH_FACE = "moyoung_watch_face";
public static final String PREF_LANGUAGE = "dafit_language"; public static final String PREF_LANGUAGE = "moyoung_language";
public static final String PREF_LANGUAGE_SUPPORT = "dafit_language_supported"; public static final String PREF_LANGUAGE_SUPPORT = "moyoung_language_supported";
public static final String PREF_DEVICE_VERSION = "dafit_device_version"; public static final String PREF_DEVICE_VERSION = "moyoung_device_version";
public static final String PREF_SEDENTARY_REMINDER = "sedentary_reminder"; public static final String PREF_SEDENTARY_REMINDER = "sedentary_reminder";
public static final String PREF_SEDENTARY_REMINDER_PERIOD = "sedentary_reminder_period"; public static final String PREF_SEDENTARY_REMINDER_PERIOD = "sedentary_reminder_period";
public static final String PREF_SEDENTARY_REMINDER_STEPS = "sedentary_reminder_steps"; public static final String PREF_SEDENTARY_REMINDER_STEPS = "sedentary_reminder_steps";

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
@ -35,18 +35,18 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumDeviceVersion; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumDeviceVersion;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumMetricSystem; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumMetricSystem;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumTimeSystem; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumTimeSystem;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSetting; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSetting;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingBool; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingBool;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingByte; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingByte;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingEnum; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingEnum;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingInt; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingInt;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingLanguage; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingLanguage;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingRemindersToMove; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingRemindersToMove;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingTimeRange; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingTimeRange;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingUserInfo; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingUserInfo;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
@ -54,7 +54,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator { public class MoyoungDeviceCoordinator extends AbstractDeviceCoordinator {
@Override @Override
public DeviceType getDeviceType() { public DeviceType getDeviceType() {
@ -70,7 +70,7 @@ public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator {
@Override @Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @TargetApi(Build.VERSION_CODES.LOLLIPOP)
public Collection<? extends ScanFilter> createBLEScanFilters() { public Collection<? extends ScanFilter> createBLEScanFilters() {
ParcelUuid service = new ParcelUuid(DaFitConstants.UUID_SERVICE_DAFIT); ParcelUuid service = new ParcelUuid(MoyoungConstants.UUID_SERVICE_MOYOUNG);
ScanFilter filter = new ScanFilter.Builder().setServiceUuid(service).build(); ScanFilter filter = new ScanFilter.Builder().setServiceUuid(service).build();
return Collections.singletonList(filter); return Collections.singletonList(filter);
} }
@ -79,7 +79,7 @@ public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator {
@Override @Override
public DeviceType getSupportedType(GBDeviceCandidate candidate) { public DeviceType getSupportedType(GBDeviceCandidate candidate) {
// TODO: It would be nice to also filter on "manufacturer" (which is used as a protocol version) being MOYOUNG-V2 or MOYOUNG but I have no idea if it's possible to do that at this point // TODO: It would be nice to also filter on "manufacturer" (which is used as a protocol version) being MOYOUNG-V2 or MOYOUNG but I have no idea if it's possible to do that at this point
if (candidate.supportsService(DaFitConstants.UUID_SERVICE_DAFIT)) { if (candidate.supportsService(MoyoungConstants.UUID_SERVICE_MOYOUNG)) {
return DeviceType.DAFIT; return DeviceType.DAFIT;
} }
return DeviceType.UNKNOWN; return DeviceType.UNKNOWN;
@ -113,7 +113,7 @@ public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator {
@Override @Override
public SampleProvider<? extends ActivitySample> getSampleProvider(GBDevice device, DaoSession session) { public SampleProvider<? extends ActivitySample> getSampleProvider(GBDevice device, DaoSession session) {
return new DaFitSampleProvider(device, session); return new MoyoungSampleProvider(device, session);
} }
@Override @Override
@ -200,31 +200,31 @@ public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator {
@Override @Override
public boolean supportsUnicodeEmojis() { return false; } public boolean supportsUnicodeEmojis() { return false; }
private static final DaFitSetting[] DAFIT_SETTINGS = new DaFitSetting[] { private static final MoyoungSetting[] MOYOUNG_SETTINGS = new MoyoungSetting[] {
new DaFitSettingUserInfo("USER_INFO", DaFitConstants.CMD_SET_USER_INFO), new MoyoungSettingUserInfo("USER_INFO", MoyoungConstants.CMD_SET_USER_INFO),
new DaFitSettingByte("STEP_LENGTH", (byte)-1, DaFitConstants.CMD_SET_STEP_LENGTH), new MoyoungSettingByte("STEP_LENGTH", (byte)-1, MoyoungConstants.CMD_SET_STEP_LENGTH),
// (*) new DaFitSettingEnum<>("DOMINANT_HAND", DaFitConstants.CMD_QUERY_DOMINANT_HAND, DaFitConstants.CMD_SET_DOMINANT_HAND, DaFitEnumDominantHand.class), // (*) new MoyoungSettingEnum<>("DOMINANT_HAND", MoyoungConstants.CMD_QUERY_DOMINANT_HAND, MoyoungConstants.CMD_SET_DOMINANT_HAND, MoyoungEnumDominantHand.class),
new DaFitSettingInt("GOAL_STEP", DaFitConstants.CMD_QUERY_GOAL_STEP, DaFitConstants.CMD_SET_GOAL_STEP), new MoyoungSettingInt("GOAL_STEP", MoyoungConstants.CMD_QUERY_GOAL_STEP, MoyoungConstants.CMD_SET_GOAL_STEP),
new DaFitSettingEnum<>("DEVICE_VERSION", DaFitConstants.CMD_QUERY_DEVICE_VERSION, DaFitConstants.CMD_SET_DEVICE_VERSION, DaFitEnumDeviceVersion.class), new MoyoungSettingEnum<>("DEVICE_VERSION", MoyoungConstants.CMD_QUERY_DEVICE_VERSION, MoyoungConstants.CMD_SET_DEVICE_VERSION, MoyoungEnumDeviceVersion.class),
new DaFitSettingLanguage("DEVICE_LANGUAGE", DaFitConstants.CMD_QUERY_DEVICE_LANGUAGE, DaFitConstants.CMD_SET_DEVICE_LANGUAGE), new MoyoungSettingLanguage("DEVICE_LANGUAGE", MoyoungConstants.CMD_QUERY_DEVICE_LANGUAGE, MoyoungConstants.CMD_SET_DEVICE_LANGUAGE),
new DaFitSettingEnum<>("TIME_SYSTEM", DaFitConstants.CMD_QUERY_TIME_SYSTEM, DaFitConstants.CMD_SET_TIME_SYSTEM, DaFitEnumTimeSystem.class), new MoyoungSettingEnum<>("TIME_SYSTEM", MoyoungConstants.CMD_QUERY_TIME_SYSTEM, MoyoungConstants.CMD_SET_TIME_SYSTEM, MoyoungEnumTimeSystem.class),
new DaFitSettingEnum<>("METRIC_SYSTEM", DaFitConstants.CMD_QUERY_METRIC_SYSTEM, DaFitConstants.CMD_SET_METRIC_SYSTEM, DaFitEnumMetricSystem.class), new MoyoungSettingEnum<>("METRIC_SYSTEM", MoyoungConstants.CMD_QUERY_METRIC_SYSTEM, MoyoungConstants.CMD_SET_METRIC_SYSTEM, MoyoungEnumMetricSystem.class),
// (*) new DaFitSetting("DISPLAY_DEVICE_FUNCTION", DaFitConstants.CMD_QUERY_DISPLAY_DEVICE_FUNCTION, DaFitConstants.CMD_SET_DISPLAY_DEVICE_FUNCTION), // (*) new MoyoungSetting("DISPLAY_DEVICE_FUNCTION", MoyoungConstants.CMD_QUERY_DISPLAY_DEVICE_FUNCTION, MoyoungConstants.CMD_SET_DISPLAY_DEVICE_FUNCTION),
// (*) new DaFitSetting("SUPPORT_WATCH_FACE", DaFitConstants.CMD_QUERY_SUPPORT_WATCH_FACE, (byte)-1), // (*) new MoyoungSetting("SUPPORT_WATCH_FACE", MoyoungConstants.CMD_QUERY_SUPPORT_WATCH_FACE, (byte)-1),
// (*) new DaFitSetting("WATCH_FACE_LAYOUT", DaFitConstants.CMD_QUERY_WATCH_FACE_LAYOUT, DaFitConstants.CMD_SET_WATCH_FACE_LAYOUT), // (*) new MoyoungSetting("WATCH_FACE_LAYOUT", MoyoungConstants.CMD_QUERY_WATCH_FACE_LAYOUT, MoyoungConstants.CMD_SET_WATCH_FACE_LAYOUT),
new DaFitSettingByte("DISPLAY_WATCH_FACE", DaFitConstants.CMD_QUERY_DISPLAY_WATCH_FACE, DaFitConstants.CMD_SET_DISPLAY_WATCH_FACE), new MoyoungSettingByte("DISPLAY_WATCH_FACE", MoyoungConstants.CMD_QUERY_DISPLAY_WATCH_FACE, MoyoungConstants.CMD_SET_DISPLAY_WATCH_FACE),
new DaFitSettingBool("OTHER_MESSAGE_STATE", DaFitConstants.CMD_QUERY_OTHER_MESSAGE_STATE, DaFitConstants.CMD_SET_OTHER_MESSAGE_STATE), new MoyoungSettingBool("OTHER_MESSAGE_STATE", MoyoungConstants.CMD_QUERY_OTHER_MESSAGE_STATE, MoyoungConstants.CMD_SET_OTHER_MESSAGE_STATE),
new DaFitSettingBool("QUICK_VIEW", DaFitConstants.CMD_QUERY_QUICK_VIEW, DaFitConstants.CMD_SET_QUICK_VIEW), new MoyoungSettingBool("QUICK_VIEW", MoyoungConstants.CMD_QUERY_QUICK_VIEW, MoyoungConstants.CMD_SET_QUICK_VIEW),
new DaFitSettingTimeRange("QUICK_VIEW_TIME", DaFitConstants.CMD_QUERY_QUICK_VIEW_TIME, DaFitConstants.CMD_SET_QUICK_VIEW_TIME), new MoyoungSettingTimeRange("QUICK_VIEW_TIME", MoyoungConstants.CMD_QUERY_QUICK_VIEW_TIME, MoyoungConstants.CMD_SET_QUICK_VIEW_TIME),
new DaFitSettingBool("SEDENTARY_REMINDER", DaFitConstants.CMD_QUERY_SEDENTARY_REMINDER, DaFitConstants.CMD_SET_SEDENTARY_REMINDER), new MoyoungSettingBool("SEDENTARY_REMINDER", MoyoungConstants.CMD_QUERY_SEDENTARY_REMINDER, MoyoungConstants.CMD_SET_SEDENTARY_REMINDER),
new DaFitSettingRemindersToMove("REMINDERS_TO_MOVE_PERIOD", DaFitConstants.CMD_QUERY_REMINDERS_TO_MOVE_PERIOD, DaFitConstants.CMD_SET_REMINDERS_TO_MOVE_PERIOD), new MoyoungSettingRemindersToMove("REMINDERS_TO_MOVE_PERIOD", MoyoungConstants.CMD_QUERY_REMINDERS_TO_MOVE_PERIOD, MoyoungConstants.CMD_SET_REMINDERS_TO_MOVE_PERIOD),
new DaFitSettingTimeRange("DO_NOT_DISTURB_TIME", DaFitConstants.CMD_QUERY_DO_NOT_DISTURB_TIME, DaFitConstants.CMD_SET_DO_NOT_DISTURB_TIME), new MoyoungSettingTimeRange("DO_NOT_DISTURB_TIME", MoyoungConstants.CMD_QUERY_DO_NOT_DISTURB_TIME, MoyoungConstants.CMD_SET_DO_NOT_DISTURB_TIME),
// (*) new DaFitSetting("PSYCHOLOGICAL_PERIOD", DaFitConstants.CMD_QUERY_PSYCHOLOGICAL_PERIOD, DaFitConstants.CMD_SET_PSYCHOLOGICAL_PERIOD), // (*) new MoyoungSetting("PSYCHOLOGICAL_PERIOD", MoyoungConstants.CMD_QUERY_PSYCHOLOGICAL_PERIOD, MoyoungConstants.CMD_SET_PSYCHOLOGICAL_PERIOD),
new DaFitSettingBool("BREATHING_LIGHT", DaFitConstants.CMD_QUERY_BREATHING_LIGHT, DaFitConstants.CMD_SET_BREATHING_LIGHT) new MoyoungSettingBool("BREATHING_LIGHT", MoyoungConstants.CMD_QUERY_BREATHING_LIGHT, MoyoungConstants.CMD_SET_BREATHING_LIGHT)
}; };
@Override @Override
@ -232,20 +232,20 @@ public class DaFitDeviceCoordinator extends AbstractDeviceCoordinator {
return new int[]{ return new int[]{
R.xml.devicesettings_personalinfo, R.xml.devicesettings_personalinfo,
//R.xml.devicesettings_steplength, // TODO is this needed? does it work? write-only so hard to tell //R.xml.devicesettings_steplength, // TODO is this needed? does it work? write-only so hard to tell
R.xml.devicesettings_dafit_device_version, R.xml.devicesettings_moyoung_device_version,
R.xml.devicesettings_dafit_language, R.xml.devicesettings_moyoung_language,
R.xml.devicesettings_timeformat, R.xml.devicesettings_timeformat,
R.xml.devicesettings_measurementsystem, R.xml.devicesettings_measurementsystem,
R.xml.devicesettings_dafit_watchface, R.xml.devicesettings_moyoung_watchface,
//R.xml.devicesettings_dafit_othermessage, // not implemented because this doesn't really do anything on the watch side, only enables/disables sending of "other" notifications in the app (no idea why they store the setting on the watch) //R.xml.devicesettings_moyoung_othermessage, // not implemented because this doesn't really do anything on the watch side, only enables/disables sending of "other" notifications in the app (no idea why they store the setting on the watch)
R.xml.devicesettings_liftwrist_display, R.xml.devicesettings_liftwrist_display,
R.xml.devicesettings_dafit_sedentary_reminder, R.xml.devicesettings_moyoung_sedentary_reminder,
R.xml.devicesettings_donotdisturb_no_auto_v2, R.xml.devicesettings_donotdisturb_no_auto_v2,
//R.xml.devicesettings_dafit_breathinglight, // No idea what this does but it doesn't seem to change anything //R.xml.devicesettings_moyoung_breathinglight, // No idea what this does but it doesn't seem to change anything
}; };
} }
public DaFitSetting[] getSupportedSettings() { public MoyoungSetting[] getSupportedSettings() {
return DAFIT_SETTINGS; return MOYOUNG_SETTINGS;
} }
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -31,13 +31,13 @@ import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractSampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractSampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.DaFitActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.MoyoungActivitySample;
import nodomain.freeyourgadget.gadgetbridge.entities.DaFitActivitySampleDao; import nodomain.freeyourgadget.gadgetbridge.entities.MoyoungActivitySampleDao;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
public class DaFitSampleProvider extends AbstractSampleProvider<DaFitActivitySample> { public class MoyoungSampleProvider extends AbstractSampleProvider<MoyoungActivitySample> {
public static final int SOURCE_NOT_MEASURED = -1; public static final int SOURCE_NOT_MEASURED = -1;
public static final int SOURCE_STEPS_REALTIME = 1; // steps gathered at realtime from the steps characteristic public static final int SOURCE_STEPS_REALTIME = 1; // steps gathered at realtime from the steps characteristic
public static final int SOURCE_STEPS_SUMMARY = 2; // steps gathered from the daily summary public static final int SOURCE_STEPS_SUMMARY = 2; // steps gathered from the daily summary
@ -48,53 +48,53 @@ public class DaFitSampleProvider extends AbstractSampleProvider<DaFitActivitySam
public static final int SOURCE_BATTERY = 7; // battery report public static final int SOURCE_BATTERY = 7; // battery report
public static final int ACTIVITY_NOT_MEASURED = -1; public static final int ACTIVITY_NOT_MEASURED = -1;
public static final int ACTIVITY_TRAINING_WALK = DaFitConstants.TRAINING_TYPE_WALK; public static final int ACTIVITY_TRAINING_WALK = MoyoungConstants.TRAINING_TYPE_WALK;
public static final int ACTIVITY_TRAINING_RUN = DaFitConstants.TRAINING_TYPE_RUN; public static final int ACTIVITY_TRAINING_RUN = MoyoungConstants.TRAINING_TYPE_RUN;
public static final int ACTIVITY_TRAINING_BIKING = DaFitConstants.TRAINING_TYPE_BIKING; public static final int ACTIVITY_TRAINING_BIKING = MoyoungConstants.TRAINING_TYPE_BIKING;
public static final int ACTIVITY_TRAINING_ROPE = DaFitConstants.TRAINING_TYPE_ROPE; public static final int ACTIVITY_TRAINING_ROPE = MoyoungConstants.TRAINING_TYPE_ROPE;
public static final int ACTIVITY_TRAINING_BADMINTON = DaFitConstants.TRAINING_TYPE_BADMINTON; public static final int ACTIVITY_TRAINING_BADMINTON = MoyoungConstants.TRAINING_TYPE_BADMINTON;
public static final int ACTIVITY_TRAINING_BASKETBALL = DaFitConstants.TRAINING_TYPE_BASKETBALL; public static final int ACTIVITY_TRAINING_BASKETBALL = MoyoungConstants.TRAINING_TYPE_BASKETBALL;
public static final int ACTIVITY_TRAINING_FOOTBALL = DaFitConstants.TRAINING_TYPE_FOOTBALL; public static final int ACTIVITY_TRAINING_FOOTBALL = MoyoungConstants.TRAINING_TYPE_FOOTBALL;
public static final int ACTIVITY_TRAINING_SWIM = DaFitConstants.TRAINING_TYPE_SWIM; public static final int ACTIVITY_TRAINING_SWIM = MoyoungConstants.TRAINING_TYPE_SWIM;
public static final int ACTIVITY_TRAINING_MOUNTAINEERING = DaFitConstants.TRAINING_TYPE_MOUNTAINEERING; public static final int ACTIVITY_TRAINING_MOUNTAINEERING = MoyoungConstants.TRAINING_TYPE_MOUNTAINEERING;
public static final int ACTIVITY_TRAINING_TENNIS = DaFitConstants.TRAINING_TYPE_TENNIS; public static final int ACTIVITY_TRAINING_TENNIS = MoyoungConstants.TRAINING_TYPE_TENNIS;
public static final int ACTIVITY_TRAINING_RUGBY = DaFitConstants.TRAINING_TYPE_RUGBY; public static final int ACTIVITY_TRAINING_RUGBY = MoyoungConstants.TRAINING_TYPE_RUGBY;
public static final int ACTIVITY_TRAINING_GOLF = DaFitConstants.TRAINING_TYPE_GOLF; public static final int ACTIVITY_TRAINING_GOLF = MoyoungConstants.TRAINING_TYPE_GOLF;
public static final int ACTIVITY_SLEEP_LIGHT = 16; public static final int ACTIVITY_SLEEP_LIGHT = 16;
public static final int ACTIVITY_SLEEP_RESTFUL = 17; public static final int ACTIVITY_SLEEP_RESTFUL = 17;
public static final int ACTIVITY_SLEEP_START = 18; public static final int ACTIVITY_SLEEP_START = 18;
public static final int ACTIVITY_SLEEP_END = 19; public static final int ACTIVITY_SLEEP_END = 19;
public DaFitSampleProvider(GBDevice device, DaoSession session) { public MoyoungSampleProvider(GBDevice device, DaoSession session) {
super(device, session); super(device, session);
} }
@Override @Override
public AbstractDao<DaFitActivitySample, ?> getSampleDao() { public AbstractDao<MoyoungActivitySample, ?> getSampleDao() {
return getSession().getDaFitActivitySampleDao(); return getSession().getMoyoungActivitySampleDao();
} }
@NonNull @NonNull
@Override @Override
protected Property getTimestampSampleProperty() { protected Property getTimestampSampleProperty() {
return DaFitActivitySampleDao.Properties.Timestamp; return MoyoungActivitySampleDao.Properties.Timestamp;
} }
@Nullable @Nullable
@Override @Override
protected Property getRawKindSampleProperty() { protected Property getRawKindSampleProperty() {
return DaFitActivitySampleDao.Properties.RawKind; return MoyoungActivitySampleDao.Properties.RawKind;
} }
@NonNull @NonNull
@Override @Override
protected Property getDeviceIdentifierSampleProperty() { protected Property getDeviceIdentifierSampleProperty() {
return DaFitActivitySampleDao.Properties.DeviceId; return MoyoungActivitySampleDao.Properties.DeviceId;
} }
@Override @Override
public DaFitActivitySample createActivitySample() { public MoyoungActivitySample createActivitySample() {
return new DaFitActivitySample(); return new MoyoungActivitySample();
} }
@Override @Override
@ -163,12 +163,12 @@ public class DaFitSampleProvider extends AbstractSampleProvider<DaFitActivitySam
throw new IllegalStateException(); throw new IllegalStateException();
Property deviceProperty = getDeviceIdentifierSampleProperty(); Property deviceProperty = getDeviceIdentifierSampleProperty();
/*QueryBuilder<DaFitActivitySample> qb = getSampleDao().queryBuilder(); /*QueryBuilder<MoyoungActivitySample> qb = getSampleDao().queryBuilder();
qb.where(deviceProperty.eq(dbDevice.getId())) qb.where(deviceProperty.eq(dbDevice.getId()))
.where(timestampProperty.ge(timestamp_from), timestampProperty.le(timestamp_to)) .where(timestampProperty.ge(timestamp_from), timestampProperty.le(timestamp_to))
.where(getRawKindSampleProperty().eq(ACTIVITY_NOT_MEASURED)); .where(getRawKindSampleProperty().eq(ACTIVITY_NOT_MEASURED));
List<DaFitActivitySample> samples = qb.build().list(); List<MoyoungActivitySample> samples = qb.build().list();
for (DaFitActivitySample sample : samples) { for (MoyoungActivitySample sample : samples) {
sample.setProvider(this); sample.setProvider(this);
sample.setRawKind(new_raw_activity_kind); sample.setRawKind(new_raw_activity_kind);
sample.update(); sample.update();

View File

@ -14,24 +14,24 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
public class DaFitWeatherForecast { public class MoyoungWeatherForecast {
public final byte conditionId; public final byte conditionId;
public final byte minTemp; public final byte minTemp;
public final byte maxTemp; public final byte maxTemp;
public DaFitWeatherForecast(byte conditionId, byte minTemp, byte maxTemp) { public MoyoungWeatherForecast(byte conditionId, byte minTemp, byte maxTemp) {
this.conditionId = conditionId; this.conditionId = conditionId;
this.minTemp = minTemp; this.minTemp = minTemp;
this.maxTemp = maxTemp; this.maxTemp = maxTemp;
} }
public DaFitWeatherForecast(WeatherSpec.Forecast forecast) public MoyoungWeatherForecast(WeatherSpec.Forecast forecast)
{ {
conditionId = DaFitConstants.openWeatherConditionToDaFitConditionId(forecast.conditionCode); conditionId = MoyoungConstants.openWeatherConditionToMoyoungConditionId(forecast.conditionCode);
minTemp = (byte)(forecast.minTemp - 273); // Kelvin -> Celcius minTemp = (byte)(forecast.minTemp - 273); // Kelvin -> Celcius
maxTemp = (byte)(forecast.maxTemp - 273); // Kelvin -> Celcius maxTemp = (byte)(forecast.maxTemp - 273); // Kelvin -> Celcius
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -22,14 +22,14 @@ import androidx.annotation.Nullable;
import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec;
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
public class DaFitWeatherToday { public class MoyoungWeatherToday {
public final byte conditionId; public final byte conditionId;
public final byte currentTemp; public final byte currentTemp;
public final Short pm25; // (*) public final Short pm25; // (*)
public final String lunar_or_festival; // (*) public final String lunar_or_festival; // (*)
public final String city; // (*) public final String city; // (*)
public DaFitWeatherToday(byte conditionId, byte currentTemp, @Nullable Short pm25, @NonNull String lunar_or_festival, @NonNull String city) { public MoyoungWeatherToday(byte conditionId, byte currentTemp, @Nullable Short pm25, @NonNull String lunar_or_festival, @NonNull String city) {
if (lunar_or_festival.length() != 4) if (lunar_or_festival.length() != 4)
throw new IllegalArgumentException("lunar_or_festival"); throw new IllegalArgumentException("lunar_or_festival");
if (city.length() != 4) if (city.length() != 4)
@ -41,9 +41,9 @@ public class DaFitWeatherToday {
this.city = city; this.city = city;
} }
public DaFitWeatherToday(WeatherSpec weatherSpec) public MoyoungWeatherToday(WeatherSpec weatherSpec)
{ {
conditionId = DaFitConstants.openWeatherConditionToDaFitConditionId(weatherSpec.currentConditionCode); conditionId = MoyoungConstants.openWeatherConditionToMoyoungConditionId(weatherSpec.currentConditionCode);
currentTemp = (byte)(weatherSpec.currentTemp - 273); // Kelvin -> Celcius currentTemp = (byte)(weatherSpec.currentTemp - 273); // Kelvin -> Celcius
pm25 = null; pm25 = null;
lunar_or_festival = StringUtils.pad("", 4); lunar_or_festival = StringUtils.pad("", 4);

View File

@ -14,8 +14,8 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public interface DaFitEnum { public interface MoyoungEnum {
byte value(); byte value();
} }

View File

@ -14,15 +14,15 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public enum DaFitEnumDeviceVersion implements DaFitEnum { public enum MoyoungEnumDeviceVersion implements MoyoungEnum {
CHINESE_EDITION((byte)0), CHINESE_EDITION((byte)0),
INTERNATIONAL_EDITION((byte)1); INTERNATIONAL_EDITION((byte)1);
public final byte value; public final byte value;
DaFitEnumDeviceVersion(byte value) { MoyoungEnumDeviceVersion(byte value) {
this.value = value; this.value = value;
} }

View File

@ -14,15 +14,15 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public enum DaFitEnumDominantHand implements DaFitEnum { public enum MoyoungEnumDominantHand implements MoyoungEnum {
LEFT_HAND((byte)0), LEFT_HAND((byte)0),
RIGHT_HAND((byte)1); RIGHT_HAND((byte)1);
public final byte value; public final byte value;
DaFitEnumDominantHand(byte value) { MoyoungEnumDominantHand(byte value) {
this.value = value; this.value = value;
} }

View File

@ -14,9 +14,9 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public enum DaFitEnumLanguage implements DaFitEnum { public enum MoyoungEnumLanguage implements MoyoungEnum {
LANGUAGE_ENGLISH((byte)0), LANGUAGE_ENGLISH((byte)0),
LANGUAGE_CHINESE((byte)1), LANGUAGE_CHINESE((byte)1),
LANGUAGE_JAPANESE((byte)2), LANGUAGE_JAPANESE((byte)2),
@ -45,7 +45,7 @@ public enum DaFitEnumLanguage implements DaFitEnum {
public final byte value; public final byte value;
DaFitEnumLanguage(byte value) { MoyoungEnumLanguage(byte value) {
this.value = value; this.value = value;
} }

View File

@ -14,15 +14,15 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public enum DaFitEnumMetricSystem implements DaFitEnum { public enum MoyoungEnumMetricSystem implements MoyoungEnum {
METRIC_SYSTEM((byte)0), METRIC_SYSTEM((byte)0),
IMPERIAL_SYSTEM((byte)1); IMPERIAL_SYSTEM((byte)1);
public final byte value; public final byte value;
DaFitEnumMetricSystem(byte value) { MoyoungEnumMetricSystem(byte value) {
this.value = value; this.value = value;
} }

View File

@ -14,15 +14,15 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public enum DaFitEnumTimeSystem implements DaFitEnum { public enum MoyoungEnumTimeSystem implements MoyoungEnum {
TIME_SYSTEM_12((byte)0), TIME_SYSTEM_12((byte)0),
TIME_SYSTEM_24((byte)1); TIME_SYSTEM_24((byte)1);
public final byte value; public final byte value;
DaFitEnumTimeSystem(byte value) { MoyoungEnumTimeSystem(byte value) {
this.value = value; this.value = value;
} }

View File

@ -14,14 +14,14 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public abstract class DaFitSetting<T> { public abstract class MoyoungSetting<T> {
public final String name; public final String name;
public final byte cmdQuery; public final byte cmdQuery;
public final byte cmdSet; public final byte cmdSet;
public DaFitSetting(String name, byte cmdQuery, byte cmdSet) { public MoyoungSetting(String name, byte cmdQuery, byte cmdSet) {
this.name = name; this.name = name;
this.cmdQuery = cmdQuery; this.cmdQuery = cmdQuery;
this.cmdSet = cmdSet; this.cmdSet = cmdSet;

View File

@ -14,10 +14,10 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public class DaFitSettingBool extends DaFitSetting<Boolean> { public class MoyoungSettingBool extends MoyoungSetting<Boolean> {
public DaFitSettingBool(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingBool(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
} }

View File

@ -14,10 +14,10 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public class DaFitSettingByte extends DaFitSetting<Byte> { public class MoyoungSettingByte extends MoyoungSetting<Byte> {
public DaFitSettingByte(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingByte(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
} }

View File

@ -14,12 +14,12 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
public class DaFitSettingEnum<T extends Enum <?> & DaFitEnum> extends DaFitSetting<T> { public class MoyoungSettingEnum<T extends Enum <?> & MoyoungEnum> extends MoyoungSetting<T> {
protected final Class<T> clazz; protected final Class<T> clazz;
public DaFitSettingEnum(String name, byte cmdQuery, byte cmdSet, Class<T> clazz) { public MoyoungSettingEnum(String name, byte cmdQuery, byte cmdSet, Class<T> clazz) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
this.clazz = clazz; this.clazz = clazz;
} }

View File

@ -14,13 +14,13 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
public class DaFitSettingInt extends DaFitSetting<Integer> { public class MoyoungSettingInt extends MoyoungSetting<Integer> {
public DaFitSettingInt(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingInt(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
import android.util.Pair; import android.util.Pair;
@ -22,12 +22,12 @@ import java.nio.ByteBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DaFitSettingLanguage extends DaFitSettingEnum<DaFitEnumLanguage> { public class MoyoungSettingLanguage extends MoyoungSettingEnum<MoyoungEnumLanguage> {
public DaFitSettingLanguage(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingLanguage(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet, DaFitEnumLanguage.class); super(name, cmdQuery, cmdSet, MoyoungEnumLanguage.class);
} }
private Pair<DaFitEnumLanguage, DaFitEnumLanguage[]> decodeData(byte[] data) { private Pair<MoyoungEnumLanguage, MoyoungEnumLanguage[]> decodeData(byte[] data) {
if (data.length != 5) if (data.length != 5)
throw new IllegalArgumentException("Wrong data length, should be 5, was " + data.length); throw new IllegalArgumentException("Wrong data length, should be 5, was " + data.length);
@ -38,26 +38,26 @@ public class DaFitSettingLanguage extends DaFitSettingEnum<DaFitEnumLanguage> {
int supportedNum = buffer.getInt(); int supportedNum = buffer.getInt();
String supportedStr = new StringBuffer(Integer.toBinaryString(supportedNum)).reverse().toString(); String supportedStr = new StringBuffer(Integer.toBinaryString(supportedNum)).reverse().toString();
DaFitEnumLanguage currentLanguage = super.decode(current); MoyoungEnumLanguage currentLanguage = super.decode(current);
List<DaFitEnumLanguage> supportedLanguages = new ArrayList<>(); List<MoyoungEnumLanguage> supportedLanguages = new ArrayList<>();
for (DaFitEnumLanguage e : clazz.getEnumConstants()) { for (MoyoungEnumLanguage e : clazz.getEnumConstants()) {
if (e.value() >= supportedStr.length()) if (e.value() >= supportedStr.length())
continue; continue;
if (Integer.parseInt(supportedStr.substring(e.value(), e.value() + 1)) != 0) if (Integer.parseInt(supportedStr.substring(e.value(), e.value() + 1)) != 0)
supportedLanguages.add(e); supportedLanguages.add(e);
} }
DaFitEnumLanguage[] supportedLanguagesArr = new DaFitEnumLanguage[supportedLanguages.size()]; MoyoungEnumLanguage[] supportedLanguagesArr = new MoyoungEnumLanguage[supportedLanguages.size()];
return Pair.create(currentLanguage, supportedLanguages.toArray(supportedLanguagesArr)); return Pair.create(currentLanguage, supportedLanguages.toArray(supportedLanguagesArr));
} }
@Override @Override
public DaFitEnumLanguage decode(byte[] data) { public MoyoungEnumLanguage decode(byte[] data) {
return decodeData(data).first; return decodeData(data).first;
} }
@Override @Override
public DaFitEnumLanguage[] decodeSupportedValues(byte[] data) { public MoyoungEnumLanguage[] decodeSupportedValues(byte[] data) {
return decodeData(data).second; return decodeData(data).second;
} }
} }

View File

@ -14,11 +14,11 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
public class DaFitSettingRemindersToMove extends DaFitSetting<DaFitSettingRemindersToMove.RemindersToMove> { public class MoyoungSettingRemindersToMove extends MoyoungSetting<MoyoungSettingRemindersToMove.RemindersToMove> {
public static class RemindersToMove { public static class RemindersToMove {
public byte period; public byte period;
public byte steps; public byte steps;
@ -46,7 +46,7 @@ public class DaFitSettingRemindersToMove extends DaFitSetting<DaFitSettingRemind
} }
} }
public DaFitSettingRemindersToMove(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingRemindersToMove(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
} }

View File

@ -14,12 +14,12 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder; import java.nio.ByteOrder;
public class DaFitSettingTimeRange extends DaFitSetting<DaFitSettingTimeRange.TimeRange> { public class MoyoungSettingTimeRange extends MoyoungSetting<MoyoungSettingTimeRange.TimeRange> {
public static class TimeRange { public static class TimeRange {
public byte start_h; public byte start_h;
public byte start_m; public byte start_m;
@ -47,7 +47,7 @@ public class DaFitSettingTimeRange extends DaFitSetting<DaFitSettingTimeRange.Ti
} }
} }
public DaFitSettingTimeRange(String name, byte cmdQuery, byte cmdSet) { public MoyoungSettingTimeRange(String name, byte cmdQuery, byte cmdSet) {
super(name, cmdQuery, cmdSet); super(name, cmdQuery, cmdSet);
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings; package nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings;
import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.NotImplementedException;
@ -22,8 +22,8 @@ import java.nio.ByteBuffer;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
public class DaFitSettingUserInfo extends DaFitSetting<ActivityUser> { public class MoyoungSettingUserInfo extends MoyoungSetting<ActivityUser> {
public DaFitSettingUserInfo(String name, byte cmdSet) { public MoyoungSettingUserInfo(String name, byte cmdSet) {
super(name, (byte)-1, cmdSet); super(name, (byte)-1, cmdSet);
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -29,13 +29,13 @@ import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.Logging; import nodomain.freeyourgadget.gadgetbridge.Logging;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitConstants; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungConstants;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport> { public class FetchDataOperation extends AbstractBTLEOperation<MoyoungDeviceSupport> {
private static final Logger LOG = LoggerFactory.getLogger(FetchDataOperation.class); private static final Logger LOG = LoggerFactory.getLogger(FetchDataOperation.class);
@ -43,9 +43,9 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
private boolean[] receivedSleep = new boolean[3]; private boolean[] receivedSleep = new boolean[3];
private boolean receivedTrainingData = false; private boolean receivedTrainingData = false;
private DaFitPacketIn packetIn = new DaFitPacketIn(); private MoyoungPacketIn packetIn = new MoyoungPacketIn();
public FetchDataOperation(DaFitDeviceSupport support) { public FetchDataOperation(MoyoungDeviceSupport support) {
super(support); super(support);
} }
@ -58,13 +58,13 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
@Override @Override
protected void doPerform() throws IOException { protected void doPerform() throws IOException {
TransactionBuilder builder = performInitialized("FetchDataOperation"); TransactionBuilder builder = performInitialized("FetchDataOperation");
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { DaFitConstants.ARG_SYNC_YESTERDAY_SLEEP })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { MoyoungConstants.ARG_SYNC_YESTERDAY_SLEEP }));
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { DaFitConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_SLEEP })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { MoyoungConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_SLEEP }));
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_SLEEP, new byte[0])); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_SLEEP, new byte[0]));
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { DaFitConstants.ARG_SYNC_YESTERDAY_STEPS })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { MoyoungConstants.ARG_SYNC_YESTERDAY_STEPS }));
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { DaFitConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_STEPS })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_PAST_SLEEP_AND_STEP, new byte[] { MoyoungConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_STEPS }));
builder.read(getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_STEPS)); builder.read(getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_STEPS));
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_QUERY_MOVEMENT_HEART_RATE, new byte[] { })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_QUERY_MOVEMENT_HEART_RATE, new byte[] { }));
builder.queue(getQueue()); builder.queue(getQueue());
updateProgressAndCheckFinish(); updateProgressAndCheckFinish();
@ -79,7 +79,7 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
else else
{ {
UUID charUuid = characteristic.getUuid(); UUID charUuid = characteristic.getUuid();
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_STEPS)) { if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_STEPS)) {
byte[] data = characteristic.getValue(); byte[] data = characteristic.getValue();
Log.i("TODAY STEPS", "data: " + Logging.formatBytes(data)); Log.i("TODAY STEPS", "data: " + Logging.formatBytes(data));
decodeSteps(0, data); decodeSteps(0, data);
@ -99,11 +99,11 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
else else
{ {
UUID charUuid = characteristic.getUuid(); UUID charUuid = characteristic.getUuid();
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_DATA_IN)) if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_DATA_IN))
{ {
if (packetIn.putFragment(characteristic.getValue())) { if (packetIn.putFragment(characteristic.getValue())) {
Pair<Byte, byte[]> packet = DaFitPacketIn.parsePacket(packetIn.getPacket()); Pair<Byte, byte[]> packet = MoyoungPacketIn.parsePacket(packetIn.getPacket());
packetIn = new DaFitPacketIn(); packetIn = new MoyoungPacketIn();
if (packet != null) { if (packet != null) {
byte packetType = packet.first; byte packetType = packet.first;
byte[] payload = packet.second; byte[] payload = packet.second;
@ -119,12 +119,12 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
} }
private boolean handlePacket(byte packetType, byte[] payload) { private boolean handlePacket(byte packetType, byte[] payload) {
if (packetType == DaFitConstants.CMD_SYNC_SLEEP) { if (packetType == MoyoungConstants.CMD_SYNC_SLEEP) {
Log.i("TODAY SLEEP", "data: " + Logging.formatBytes(payload)); Log.i("TODAY SLEEP", "data: " + Logging.formatBytes(payload));
decodeSleep(0, payload); decodeSleep(0, payload);
return true; return true;
} }
if (packetType == DaFitConstants.CMD_SYNC_PAST_SLEEP_AND_STEP) { if (packetType == MoyoungConstants.CMD_SYNC_PAST_SLEEP_AND_STEP) {
byte dataType = payload[0]; byte dataType = payload[0];
byte[] data = new byte[payload.length - 1]; byte[] data = new byte[payload.length - 1];
System.arraycopy(payload, 1, data, 0, data.length); System.arraycopy(payload, 1, data, 0, data.length);
@ -134,28 +134,28 @@ public class FetchDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport
// (and yes, you can see that data from yesterday appears as two days ago // (and yes, you can see that data from yesterday appears as two days ago
// in the app itself and all past data is getting messed up because of it) // in the app itself and all past data is getting messed up because of it)
if (dataType == DaFitConstants.ARG_SYNC_YESTERDAY_STEPS) { if (dataType == MoyoungConstants.ARG_SYNC_YESTERDAY_STEPS) {
Log.i("2 DAYS AGO STEPS", "data: " + Logging.formatBytes(data)); Log.i("2 DAYS AGO STEPS", "data: " + Logging.formatBytes(data));
decodeSteps(2, data); decodeSteps(2, data);
return true; return true;
} }
else if (dataType == DaFitConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_STEPS) { else if (dataType == MoyoungConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_STEPS) {
Log.i("YESTERDAY STEPS", "data: " + Logging.formatBytes(data)); Log.i("YESTERDAY STEPS", "data: " + Logging.formatBytes(data));
decodeSteps(1, data); decodeSteps(1, data);
return true; return true;
} }
else if (dataType == DaFitConstants.ARG_SYNC_YESTERDAY_SLEEP) { else if (dataType == MoyoungConstants.ARG_SYNC_YESTERDAY_SLEEP) {
Log.i("2 DAYS AGO SLEEP", "data: " + Logging.formatBytes(data)); Log.i("2 DAYS AGO SLEEP", "data: " + Logging.formatBytes(data));
decodeSleep(2, data); decodeSleep(2, data);
return true; return true;
} }
else if (dataType == DaFitConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_SLEEP) { else if (dataType == MoyoungConstants.ARG_SYNC_DAY_BEFORE_YESTERDAY_SLEEP) {
Log.i("YESTERDAY SLEEP", "data: " + Logging.formatBytes(data)); Log.i("YESTERDAY SLEEP", "data: " + Logging.formatBytes(data));
decodeSleep(1, data); decodeSleep(1, data);
return true; return true;
} }
} }
if (packetType == DaFitConstants.CMD_QUERY_MOVEMENT_HEART_RATE) { if (packetType == MoyoungConstants.CMD_QUERY_MOVEMENT_HEART_RATE) {
decodeTrainingData(payload); decodeTrainingData(payload);
return true; return true;
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -60,26 +60,26 @@ import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallContro
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventConfigurationRead; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventConfigurationRead;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicControl; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventMusicControl;
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitConstants; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungConstants;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitWeatherForecast; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungWeatherForecast;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitWeatherToday; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungWeatherToday;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitSampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungSampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumDeviceVersion; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumDeviceVersion;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumLanguage; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumLanguage;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumMetricSystem; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumMetricSystem;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitEnumTimeSystem; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungEnumTimeSystem;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSetting; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSetting;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingEnum; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingEnum;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingLanguage; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingLanguage;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingRemindersToMove; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingRemindersToMove;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSettingTimeRange; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSettingTimeRange;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst; import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst;
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary; import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary;
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummaryDao; import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummaryDao;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.DaFitActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.MoyoungActivitySample;
import nodomain.freeyourgadget.gadgetbridge.entities.User; import nodomain.freeyourgadget.gadgetbridge.entities.User;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
@ -113,14 +113,14 @@ import nodomain.freeyourgadget.gadgetbridge.util.NotificationUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs; import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils;
public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport { public class MoyoungDeviceSupport extends AbstractBTLEDeviceSupport {
private static final Logger LOG = LoggerFactory.getLogger(DaFitDeviceSupport.class); private static final Logger LOG = LoggerFactory.getLogger(MoyoungDeviceSupport.class);
private static final long IDLE_STEPS_INTERVAL = 5 * 60 * 1000; private static final long IDLE_STEPS_INTERVAL = 5 * 60 * 1000;
private final DeviceInfoProfile<DaFitDeviceSupport> deviceInfoProfile; private final DeviceInfoProfile<MoyoungDeviceSupport> deviceInfoProfile;
private final BatteryInfoProfile<DaFitDeviceSupport> batteryInfoProfile; private final BatteryInfoProfile<MoyoungDeviceSupport> batteryInfoProfile;
private final HeartRateProfile<DaFitDeviceSupport> heartRateProfile; private final HeartRateProfile<MoyoungDeviceSupport> heartRateProfile;
private final GBDeviceEventVersionInfo versionCmd = new GBDeviceEventVersionInfo(); private final GBDeviceEventVersionInfo versionCmd = new GBDeviceEventVersionInfo();
private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo(); private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo();
private final IntentListener mListener = new IntentListener() { private final IntentListener mListener = new IntentListener() {
@ -139,11 +139,11 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
private Handler idleUpdateHandler = new Handler(); private Handler idleUpdateHandler = new Handler();
public static final int MTU = 20; // TODO: there seems to be some way to change this value...? public static final int MTU = 20; // TODO: there seems to be some way to change this value...?
private DaFitPacketIn packetIn = new DaFitPacketIn(); private MoyoungPacketIn packetIn = new MoyoungPacketIn();
private boolean realTimeHeartRate; private boolean realTimeHeartRate;
public DaFitDeviceSupport() { public MoyoungDeviceSupport() {
super(LOG); super(LOG);
batteryCmd.level = ActivitySample.NOT_MEASURED; batteryCmd.level = ActivitySample.NOT_MEASURED;
@ -152,7 +152,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
addSupportedService(GattService.UUID_SERVICE_DEVICE_INFORMATION); addSupportedService(GattService.UUID_SERVICE_DEVICE_INFORMATION);
addSupportedService(GattService.UUID_SERVICE_BATTERY_SERVICE); addSupportedService(GattService.UUID_SERVICE_BATTERY_SERVICE);
addSupportedService(GattService.UUID_SERVICE_HEART_RATE); addSupportedService(GattService.UUID_SERVICE_HEART_RATE);
addSupportedService(DaFitConstants.UUID_SERVICE_DAFIT); addSupportedService(MoyoungConstants.UUID_SERVICE_MOYOUNG);
deviceInfoProfile = new DeviceInfoProfile<>(this); deviceInfoProfile = new DeviceInfoProfile<>(this);
deviceInfoProfile.addListener(mListener); deviceInfoProfile.addListener(mListener);
@ -168,7 +168,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
@Override @Override
protected TransactionBuilder initializeDevice(TransactionBuilder builder) { protected TransactionBuilder initializeDevice(TransactionBuilder builder) {
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext())); builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
builder.notify(getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_DATA_IN), true); builder.notify(getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_DATA_IN), true);
deviceInfoProfile.requestDeviceInfo(builder); deviceInfoProfile.requestDeviceInfo(builder);
setTime(builder); setTime(builder);
sendSetting(builder, getSetting("USER_INFO"), new ActivityUser()); // these settings are write-only, so write them just in case because there is no way to know if they desynced somehow sendSetting(builder, getSetting("USER_INFO"), new ActivityUser()); // these settings are write-only, so write them just in case because there is no way to know if they desynced somehow
@ -176,11 +176,11 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
batteryInfoProfile.requestBatteryInfo(builder); batteryInfoProfile.requestBatteryInfo(builder);
batteryInfoProfile.enableNotify(builder); batteryInfoProfile.enableNotify(builder);
heartRateProfile.enableNotify(builder); heartRateProfile.enableNotify(builder);
builder.notify(getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_STEPS), true); builder.notify(getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_STEPS), true);
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext())); builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext()));
// TODO: I would prefer this to be done when the alarms screen is open, not on initialization... // TODO: I would prefer this to be done when the alarms screen is open, not on initialization...
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_QUERY_ALARM_CLOCK, new byte[0])); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_QUERY_ALARM_CLOCK, new byte[0]));
return builder; return builder;
} }
@ -194,16 +194,16 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
private BluetoothGattCharacteristic getTargetCharacteristicForPacketType(byte packetType) private BluetoothGattCharacteristic getTargetCharacteristicForPacketType(byte packetType)
{ {
if (packetType == 1) if (packetType == 1)
return getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_DATA_SPECIAL_1); return getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_DATA_SPECIAL_1);
else if (packetType == 2) else if (packetType == 2)
return getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_DATA_SPECIAL_2); return getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_DATA_SPECIAL_2);
else else
return getCharacteristic(DaFitConstants.UUID_CHARACTERISTIC_DATA_OUT); return getCharacteristic(MoyoungConstants.UUID_CHARACTERISTIC_DATA_OUT);
} }
public void sendPacket(TransactionBuilder builder, byte[] packet) public void sendPacket(TransactionBuilder builder, byte[] packet)
{ {
DaFitPacketOut packetOut = new DaFitPacketOut(packet); MoyoungPacketOut packetOut = new MoyoungPacketOut(packet);
byte[] fragment = new byte[MTU]; byte[] fragment = new byte[MTU];
while(packetOut.getFragment(fragment)) while(packetOut.getFragment(fragment))
@ -215,18 +215,18 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
@Override @Override
public boolean onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { public boolean onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
UUID charUuid = characteristic.getUuid(); UUID charUuid = characteristic.getUuid();
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_STEPS)) if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_STEPS))
{ {
byte[] payload = characteristic.getValue(); byte[] payload = characteristic.getValue();
Log.i("AAAAAAAAAAAAAAAA", "Update step count: " + Logging.formatBytes(characteristic.getValue())); Log.i("AAAAAAAAAAAAAAAA", "Update step count: " + Logging.formatBytes(characteristic.getValue()));
handleStepsHistory(0, payload, true); handleStepsHistory(0, payload, true);
return true; return true;
} }
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_DATA_IN)) if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_DATA_IN))
{ {
if (packetIn.putFragment(characteristic.getValue())) { if (packetIn.putFragment(characteristic.getValue())) {
Pair<Byte, byte[]> packet = DaFitPacketIn.parsePacket(packetIn.getPacket()); Pair<Byte, byte[]> packet = MoyoungPacketIn.parsePacket(packetIn.getPacket());
packetIn = new DaFitPacketIn(); packetIn = new MoyoungPacketIn();
if (packet != null) { if (packet != null) {
byte packetType = packet.first; byte packetType = packet.first;
byte[] payload = packet.second; byte[] payload = packet.second;
@ -244,16 +244,16 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
private boolean handlePacket(byte packetType, byte[] payload) private boolean handlePacket(byte packetType, byte[] payload)
{ {
if (packetType == DaFitConstants.CMD_TRIGGER_MEASURE_HEARTRATE) if (packetType == MoyoungConstants.CMD_TRIGGER_MEASURE_HEARTRATE)
{ {
int heartRate = payload[0]; int heartRate = payload[0];
Log.i("XXXXXXXX", "Measure heart rate finished: " + heartRate + " BPM"); Log.i("XXXXXXXX", "Measure heart rate finished: " + heartRate + " BPM");
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setTimestamp((int) (System.currentTimeMillis() / 1000)); sample.setTimestamp((int) (System.currentTimeMillis() / 1000));
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(DaFitSampleProvider.SOURCE_SINGLE_MEASURE); sample.setDataSource(MoyoungSampleProvider.SOURCE_SINGLE_MEASURE);
sample.setBatteryLevel(ActivitySample.NOT_MEASURED); sample.setBatteryLevel(ActivitySample.NOT_MEASURED);
sample.setSteps(ActivitySample.NOT_MEASURED); sample.setSteps(ActivitySample.NOT_MEASURED);
@ -273,16 +273,16 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
return true; return true;
} }
if (packetType == DaFitConstants.CMD_TRIGGER_MEASURE_BLOOD_OXYGEN) if (packetType == MoyoungConstants.CMD_TRIGGER_MEASURE_BLOOD_OXYGEN)
{ {
int percent = payload[0]; int percent = payload[0];
Log.i("XXXXXXXX", "Measure blood oxygen finished: " + percent + "%"); Log.i("XXXXXXXX", "Measure blood oxygen finished: " + percent + "%");
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setTimestamp((int) (System.currentTimeMillis() / 1000)); sample.setTimestamp((int) (System.currentTimeMillis() / 1000));
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(DaFitSampleProvider.SOURCE_SINGLE_MEASURE); sample.setDataSource(MoyoungSampleProvider.SOURCE_SINGLE_MEASURE);
sample.setBatteryLevel(ActivitySample.NOT_MEASURED); sample.setBatteryLevel(ActivitySample.NOT_MEASURED);
sample.setSteps(ActivitySample.NOT_MEASURED); sample.setSteps(ActivitySample.NOT_MEASURED);
@ -299,7 +299,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
return true; return true;
} }
if (packetType == DaFitConstants.CMD_TRIGGER_MEASURE_BLOOD_PRESSURE) if (packetType == MoyoungConstants.CMD_TRIGGER_MEASURE_BLOOD_PRESSURE)
{ {
int dataUnknown = payload[0]; int dataUnknown = payload[0];
int data1 = payload[1]; int data1 = payload[1];
@ -307,11 +307,11 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
Log.i("XXXXXXXX", "Measure blood pressure finished: " + data1 + "/" + data2 + " (" + dataUnknown + ")"); Log.i("XXXXXXXX", "Measure blood pressure finished: " + data1 + "/" + data2 + " (" + dataUnknown + ")");
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setTimestamp((int) (System.currentTimeMillis() / 1000)); sample.setTimestamp((int) (System.currentTimeMillis() / 1000));
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(DaFitSampleProvider.SOURCE_SINGLE_MEASURE); sample.setDataSource(MoyoungSampleProvider.SOURCE_SINGLE_MEASURE);
sample.setBatteryLevel(ActivitySample.NOT_MEASURED); sample.setBatteryLevel(ActivitySample.NOT_MEASURED);
sample.setSteps(ActivitySample.NOT_MEASURED); sample.setSteps(ActivitySample.NOT_MEASURED);
@ -329,7 +329,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
return true; return true;
} }
if (packetType == DaFitConstants.CMD_QUERY_LAST_DYNAMIC_RATE) if (packetType == MoyoungConstants.CMD_QUERY_LAST_DYNAMIC_RATE)
{ {
// Training on the watch just finished and it wants us to fetch the details // Training on the watch just finished and it wants us to fetch the details
LOG.info("Starting training fetch"); LOG.info("Starting training fetch");
@ -340,31 +340,31 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
if (packetType == DaFitConstants.CMD_NOTIFY_PHONE_OPERATION) if (packetType == MoyoungConstants.CMD_NOTIFY_PHONE_OPERATION)
{ {
byte operation = payload[0]; byte operation = payload[0];
if (operation == DaFitConstants.ARG_OPERATION_PLAY_PAUSE) if (operation == MoyoungConstants.ARG_OPERATION_PLAY_PAUSE)
{ {
GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl(); GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl();
musicCmd.event = GBDeviceEventMusicControl.Event.PLAYPAUSE; musicCmd.event = GBDeviceEventMusicControl.Event.PLAYPAUSE;
evaluateGBDeviceEvent(musicCmd); evaluateGBDeviceEvent(musicCmd);
return true; return true;
} }
if (operation == DaFitConstants.ARG_OPERATION_PREV_SONG) if (operation == MoyoungConstants.ARG_OPERATION_PREV_SONG)
{ {
GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl(); GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl();
musicCmd.event = GBDeviceEventMusicControl.Event.PREVIOUS; musicCmd.event = GBDeviceEventMusicControl.Event.PREVIOUS;
evaluateGBDeviceEvent(musicCmd); evaluateGBDeviceEvent(musicCmd);
return true; return true;
} }
if (operation == DaFitConstants.ARG_OPERATION_NEXT_SONG) if (operation == MoyoungConstants.ARG_OPERATION_NEXT_SONG)
{ {
GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl(); GBDeviceEventMusicControl musicCmd = new GBDeviceEventMusicControl();
musicCmd.event = GBDeviceEventMusicControl.Event.NEXT; musicCmd.event = GBDeviceEventMusicControl.Event.NEXT;
evaluateGBDeviceEvent(musicCmd); evaluateGBDeviceEvent(musicCmd);
return true; return true;
} }
if (operation == DaFitConstants.ARG_OPERATION_DROP_INCOMING_CALL) if (operation == MoyoungConstants.ARG_OPERATION_DROP_INCOMING_CALL)
{ {
GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl(); GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl();
callCmd.event = GBDeviceEventCallControl.Event.REJECT; callCmd.event = GBDeviceEventCallControl.Event.REJECT;
@ -373,20 +373,20 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
if (packetType == DaFitConstants.CMD_SWITCH_CAMERA_VIEW) if (packetType == MoyoungConstants.CMD_SWITCH_CAMERA_VIEW)
{ {
// TODO: trigger camera photo // TODO: trigger camera photo
return true; return true;
} }
if (packetType == DaFitConstants.CMD_NOTIFY_WEATHER_CHANGE) if (packetType == MoyoungConstants.CMD_NOTIFY_WEATHER_CHANGE)
{ {
LOG.info("The watch really wants us to transmit the weather data for some reason..."); LOG.info("The watch really wants us to transmit the weather data for some reason...");
// TODO: transmit weather // TODO: transmit weather
return true; return true;
} }
for (DaFitSetting setting : queriedSettings) for (MoyoungSetting setting : queriedSettings)
{ {
if (setting.cmdQuery == packetType) if (setting.cmdQuery == packetType)
{ {
@ -397,7 +397,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
if (packetType == DaFitConstants.CMD_QUERY_ALARM_CLOCK) if (packetType == MoyoungConstants.CMD_QUERY_ALARM_CLOCK)
{ {
handleGetAlarmsResponse(payload); handleGetAlarmsResponse(payload);
return true; return true;
@ -407,18 +407,18 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
return false; return false;
} }
private void addGBActivitySample(DaFitActivitySample sample) { private void addGBActivitySample(MoyoungActivitySample sample) {
addGBActivitySamples(new DaFitActivitySample[] { sample }); addGBActivitySamples(new MoyoungActivitySample[] { sample });
} }
private void addGBActivitySamples(DaFitActivitySample[] samples) { private void addGBActivitySamples(MoyoungActivitySample[] samples) {
try (DBHandler dbHandler = GBApplication.acquireDB()) { try (DBHandler dbHandler = GBApplication.acquireDB()) {
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
for (DaFitActivitySample sample : samples) { for (MoyoungActivitySample sample : samples) {
sample.setDevice(device); sample.setDevice(device);
sample.setUser(user); sample.setUser(user);
sample.setProvider(provider); sample.setProvider(provider);
@ -431,7 +431,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
private void broadcastSample(DaFitActivitySample sample) { private void broadcastSample(MoyoungActivitySample sample) {
Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES) Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES)
.putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample) .putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample)
.putExtra(DeviceService.EXTRA_TIMESTAMP, sample.getTimestamp()); .putExtra(DeviceService.EXTRA_TIMESTAMP, sample.getTimestamp());
@ -450,11 +450,11 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
batteryCmd.level = (short) info.getPercentCharged(); batteryCmd.level = (short) info.getPercentCharged();
handleGBDeviceEvent(batteryCmd); handleGBDeviceEvent(batteryCmd);
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setTimestamp((int) (System.currentTimeMillis() / 1000)); sample.setTimestamp((int) (System.currentTimeMillis() / 1000));
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(DaFitSampleProvider.SOURCE_BATTERY); sample.setDataSource(MoyoungSampleProvider.SOURCE_BATTERY);
sample.setBatteryLevel(batteryCmd.level); sample.setBatteryLevel(batteryCmd.level);
sample.setSteps(ActivitySample.NOT_MEASURED); sample.setSteps(ActivitySample.NOT_MEASURED);
@ -483,7 +483,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
byte[] payload = new byte[str.length + 1]; byte[] payload = new byte[str.length + 1];
payload[0] = type; payload[0] = type;
System.arraycopy(str, 0, payload, 1, str.length); System.arraycopy(str, 0, payload, 1, str.length);
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SEND_MESSAGE, payload)); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SEND_MESSAGE, payload));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -501,7 +501,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
text = StringUtils.getFirstOf(StringUtils.getFirstOf(notificationSpec.title, notificationSpec.subject), notificationSpec.body); text = StringUtils.getFirstOf(StringUtils.getFirstOf(notificationSpec.title, notificationSpec.subject), notificationSpec.body);
// The notification is split at first : into sender and text // The notification is split at first : into sender and text
sendNotification(DaFitConstants.notificationType(notificationSpec.type), sender + ":" + text); sendNotification(MoyoungConstants.notificationType(notificationSpec.type), sender + ":" + text);
} }
@Override @Override
@ -512,9 +512,9 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
@Override @Override
public void onSetCallState(CallSpec callSpec) { public void onSetCallState(CallSpec callSpec) {
if (callSpec.command == CallSpec.CALL_INCOMING) if (callSpec.command == CallSpec.CALL_INCOMING)
sendNotification(DaFitConstants.NOTIFICATION_TYPE_CALL, NotificationUtils.getPreferredTextFor(callSpec)); sendNotification(MoyoungConstants.NOTIFICATION_TYPE_CALL, NotificationUtils.getPreferredTextFor(callSpec));
else else
sendNotification(DaFitConstants.NOTIFICATION_TYPE_CALL_OFF_HOOK, ""); sendNotification(MoyoungConstants.NOTIFICATION_TYPE_CALL_OFF_HOOK, "");
} }
@Override @Override
@ -524,9 +524,9 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
private void setTime(TransactionBuilder builder) { private void setTime(TransactionBuilder builder) {
ByteBuffer buffer = ByteBuffer.allocate(5); ByteBuffer buffer = ByteBuffer.allocate(5);
buffer.putInt(DaFitConstants.LocalTimeToWatchTime(new Date())); // The watch is hardcoded to GMT+8 internally... buffer.putInt(MoyoungConstants.LocalTimeToWatchTime(new Date())); // The watch is hardcoded to GMT+8 internally...
buffer.put((byte)8); // I guess this means GMT+8 but changing it has no effect at all (it was hardcoded in the original app too) buffer.put((byte)8); // I guess this means GMT+8 but changing it has no effect at all (it was hardcoded in the original app too)
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SYNC_TIME, buffer.array())); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SYNC_TIME, buffer.array()));
} }
@Override @Override
@ -623,7 +623,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
else else
repeat = 2; repeat = 2;
buffer.put(repeat); buffer.put(repeat);
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SET_ALARM_CLOCK, buffer.array())); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SET_ALARM_CLOCK, buffer.array()));
} }
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
@ -715,18 +715,18 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
int currentSampleTimestamp = (int)(Calendar.getInstance().getTimeInMillis() / 1000); int currentSampleTimestamp = (int)(Calendar.getInstance().getTimeInMillis() / 1000);
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setDevice(device); sample.setDevice(device);
sample.setUser(user); sample.setUser(user);
sample.setProvider(provider); sample.setProvider(provider);
sample.setTimestamp(currentSampleTimestamp); sample.setTimestamp(currentSampleTimestamp);
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(DaFitSampleProvider.SOURCE_STEPS_IDLE); sample.setDataSource(MoyoungSampleProvider.SOURCE_STEPS_IDLE);
sample.setBatteryLevel(batteryCmd.level); sample.setBatteryLevel(batteryCmd.level);
sample.setSteps(0); sample.setSteps(0);
@ -768,7 +768,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
Calendar thisSample = Calendar.getInstance(); Calendar thisSample = Calendar.getInstance();
if (daysAgo != 0) if (daysAgo != 0)
@ -796,7 +796,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
int previousSteps = 0; int previousSteps = 0;
int previousDistance = 0; int previousDistance = 0;
int previousCalories = 0; int previousCalories = 0;
for (DaFitActivitySample sample : provider.getAllActivitySamples(startOfDayTimestamp, thisSampleTimestamp)) for (MoyoungActivitySample sample : provider.getAllActivitySamples(startOfDayTimestamp, thisSampleTimestamp))
{ {
if (sample.getSteps() != ActivitySample.NOT_MEASURED) if (sample.getSteps() != ActivitySample.NOT_MEASURED)
previousSteps += sample.getSteps(); previousSteps += sample.getSteps();
@ -816,14 +816,14 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
else if (newSteps != 0 || newDistance != 0 || newCalories != 0 || daysAgo == 0) else if (newSteps != 0 || newDistance != 0 || newCalories != 0 || daysAgo == 0)
{ {
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setDevice(device); sample.setDevice(device);
sample.setUser(user); sample.setUser(user);
sample.setProvider(provider); sample.setProvider(provider);
sample.setTimestamp(thisSampleTimestamp); sample.setTimestamp(thisSampleTimestamp);
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED);
sample.setDataSource(daysAgo == 0 ? DaFitSampleProvider.SOURCE_STEPS_REALTIME : DaFitSampleProvider.SOURCE_STEPS_SUMMARY); sample.setDataSource(daysAgo == 0 ? MoyoungSampleProvider.SOURCE_STEPS_REALTIME : MoyoungSampleProvider.SOURCE_STEPS_SUMMARY);
sample.setBatteryLevel(ActivitySample.NOT_MEASURED); sample.setBatteryLevel(ActivitySample.NOT_MEASURED);
sample.setSteps(newSteps); sample.setSteps(newSteps);
@ -857,7 +857,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
if (data.length % 3 != 0) if (data.length % 3 != 0)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
int prevActivityType = DaFitSampleProvider.ACTIVITY_SLEEP_START; int prevActivityType = MoyoungSampleProvider.ACTIVITY_SLEEP_START;
int prevSampleTimestamp = -1; int prevSampleTimestamp = -1;
for(int i = 0; i < data.length / 3; i++) for(int i = 0; i < data.length / 3; i++)
@ -897,7 +897,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
Calendar thisSample = Calendar.getInstance(); Calendar thisSample = Calendar.getInstance();
thisSample.add(Calendar.HOUR_OF_DAY, 4); // the clock assumes the sleep day changes at 20:00, so move the time forward to make the day correct thisSample.add(Calendar.HOUR_OF_DAY, 4); // the clock assumes the sleep day changes at 20:00, so move the time forward to make the day correct
@ -911,24 +911,24 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
int thisSampleTimestamp = (int) (thisSample.getTimeInMillis() / 1000); int thisSampleTimestamp = (int) (thisSample.getTimeInMillis() / 1000);
int activityType; int activityType;
if (type == DaFitConstants.SLEEP_SOBER) if (type == MoyoungConstants.SLEEP_SOBER)
activityType = DaFitSampleProvider.ACTIVITY_SLEEP_END; activityType = MoyoungSampleProvider.ACTIVITY_SLEEP_END;
else if (type == DaFitConstants.SLEEP_LIGHT) else if (type == MoyoungConstants.SLEEP_LIGHT)
activityType = DaFitSampleProvider.ACTIVITY_SLEEP_LIGHT; activityType = MoyoungSampleProvider.ACTIVITY_SLEEP_LIGHT;
else if (type == DaFitConstants.SLEEP_RESTFUL) else if (type == MoyoungConstants.SLEEP_RESTFUL)
activityType = DaFitSampleProvider.ACTIVITY_SLEEP_RESTFUL; activityType = MoyoungSampleProvider.ACTIVITY_SLEEP_RESTFUL;
else else
throw new IllegalArgumentException("Invalid sleep type"); throw new IllegalArgumentException("Invalid sleep type");
// Insert the end of previous segment sample // Insert the end of previous segment sample
DaFitActivitySample prevSegmentSample = new DaFitActivitySample(); MoyoungActivitySample prevSegmentSample = new MoyoungActivitySample();
prevSegmentSample.setDevice(device); prevSegmentSample.setDevice(device);
prevSegmentSample.setUser(user); prevSegmentSample.setUser(user);
prevSegmentSample.setProvider(provider); prevSegmentSample.setProvider(provider);
prevSegmentSample.setTimestamp(thisSampleTimestamp - 1); prevSegmentSample.setTimestamp(thisSampleTimestamp - 1);
prevSegmentSample.setRawKind(prevActivityType); prevSegmentSample.setRawKind(prevActivityType);
prevSegmentSample.setDataSource(DaFitSampleProvider.SOURCE_SLEEP_SUMMARY); prevSegmentSample.setDataSource(MoyoungSampleProvider.SOURCE_SLEEP_SUMMARY);
prevSegmentSample.setBatteryLevel(ActivitySample.NOT_MEASURED); prevSegmentSample.setBatteryLevel(ActivitySample.NOT_MEASURED);
prevSegmentSample.setSteps(ActivitySample.NOT_MEASURED); prevSegmentSample.setSteps(ActivitySample.NOT_MEASURED);
@ -943,14 +943,14 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
addGBActivitySampleIfNotExists(provider, prevSegmentSample); addGBActivitySampleIfNotExists(provider, prevSegmentSample);
// Insert the start of new segment sample // Insert the start of new segment sample
DaFitActivitySample nextSegmentSample = new DaFitActivitySample(); MoyoungActivitySample nextSegmentSample = new MoyoungActivitySample();
nextSegmentSample.setDevice(device); nextSegmentSample.setDevice(device);
nextSegmentSample.setUser(user); nextSegmentSample.setUser(user);
nextSegmentSample.setProvider(provider); nextSegmentSample.setProvider(provider);
nextSegmentSample.setTimestamp(thisSampleTimestamp); nextSegmentSample.setTimestamp(thisSampleTimestamp);
nextSegmentSample.setRawKind(activityType); nextSegmentSample.setRawKind(activityType);
nextSegmentSample.setDataSource(DaFitSampleProvider.SOURCE_SLEEP_SUMMARY); nextSegmentSample.setDataSource(MoyoungSampleProvider.SOURCE_SLEEP_SUMMARY);
nextSegmentSample.setBatteryLevel(ActivitySample.NOT_MEASURED); nextSegmentSample.setBatteryLevel(ActivitySample.NOT_MEASURED);
nextSegmentSample.setSteps(ActivitySample.NOT_MEASURED); nextSegmentSample.setSteps(ActivitySample.NOT_MEASURED);
@ -965,12 +965,12 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
addGBActivitySampleIfNotExists(provider, nextSegmentSample); addGBActivitySampleIfNotExists(provider, nextSegmentSample);
// Set the activity type on all samples in this time period // Set the activity type on all samples in this time period
if (prevActivityType != DaFitSampleProvider.ACTIVITY_SLEEP_START) if (prevActivityType != MoyoungSampleProvider.ACTIVITY_SLEEP_START)
provider.updateActivityInRange(prevSampleTimestamp, thisSampleTimestamp, prevActivityType); provider.updateActivityInRange(prevSampleTimestamp, thisSampleTimestamp, prevActivityType);
prevActivityType = activityType; prevActivityType = activityType;
if (prevActivityType == DaFitSampleProvider.ACTIVITY_SLEEP_END) if (prevActivityType == MoyoungSampleProvider.ACTIVITY_SLEEP_END)
prevActivityType = DaFitSampleProvider.ACTIVITY_SLEEP_START; prevActivityType = MoyoungSampleProvider.ACTIVITY_SLEEP_START;
prevSampleTimestamp = thisSampleTimestamp; prevSampleTimestamp = thisSampleTimestamp;
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
@ -992,8 +992,8 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
ByteBuffer buffer = ByteBuffer.wrap(data, 24 * i, 24); ByteBuffer buffer = ByteBuffer.wrap(data, 24 * i, 24);
buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.order(ByteOrder.LITTLE_ENDIAN);
Date startTime = DaFitConstants.WatchTimeToLocalTime(buffer.getInt()); Date startTime = MoyoungConstants.WatchTimeToLocalTime(buffer.getInt());
Date endTime = DaFitConstants.WatchTimeToLocalTime(buffer.getInt()); Date endTime = MoyoungConstants.WatchTimeToLocalTime(buffer.getInt());
int validTime = buffer.getShort(); int validTime = buffer.getShort();
byte num = buffer.get(); // == i byte num = buffer.get(); // == i
byte type = buffer.get(); byte type = buffer.get();
@ -1011,7 +1011,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
BaseActivitySummaryDao summaryDao = provider.getSession().getBaseActivitySummaryDao(); BaseActivitySummaryDao summaryDao = provider.getSession().getBaseActivitySummaryDao();
QueryBuilder<BaseActivitySummary> qb = summaryDao.queryBuilder(); QueryBuilder<BaseActivitySummary> qb = summaryDao.queryBuilder();
@ -1033,21 +1033,21 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
int gbType = provider.normalizeType(type); int gbType = provider.normalizeType(type);
String name; String name;
if (type == DaFitSampleProvider.ACTIVITY_TRAINING_ROPE) if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_ROPE)
name = "Rope"; name = "Rope";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_BADMINTON) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_BADMINTON)
name = "Badminton"; name = "Badminton";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_BASKETBALL) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_BASKETBALL)
name = "Basketball"; name = "Basketball";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_FOOTBALL) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_FOOTBALL)
name = "Football"; name = "Football";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_MOUNTAINEERING) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_MOUNTAINEERING)
name = "Mountaineering"; name = "Mountaineering";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_TENNIS) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_TENNIS)
name = "Tennis"; name = "Tennis";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_RUGBY) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_RUGBY)
name = "Rugby"; name = "Rugby";
else if (type == DaFitSampleProvider.ACTIVITY_TRAINING_GOLF) else if (type == MoyoungSampleProvider.ACTIVITY_TRAINING_GOLF)
name = "Golf"; name = "Golf";
else else
name = ActivityKind.asString(gbType, getContext()); name = ActivityKind.asString(gbType, getContext());
@ -1070,10 +1070,10 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
private void addGBActivitySampleIfNotExists(DaFitSampleProvider provider, DaFitActivitySample sample) private void addGBActivitySampleIfNotExists(MoyoungSampleProvider provider, MoyoungActivitySample sample)
{ {
boolean alreadyHaveThisSample = false; boolean alreadyHaveThisSample = false;
for (DaFitActivitySample sample2 : provider.getAllActivitySamples(sample.getTimestamp() - 1, sample.getTimestamp() + 1)) for (MoyoungActivitySample sample2 : provider.getAllActivitySamples(sample.getTimestamp() - 1, sample.getTimestamp() + 1))
{ {
if (sample2.getTimestamp() == sample2.getTimestamp() && sample2.getRawKind() == sample.getRawKind()) if (sample2.getTimestamp() == sample2.getTimestamp() && sample2.getRawKind() == sample.getRawKind())
alreadyHaveThisSample = true; alreadyHaveThisSample = true;
@ -1093,7 +1093,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
try { try {
TransactionBuilder builder = performInitialized("shutdown"); TransactionBuilder builder = performInitialized("shutdown");
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SHUTDOWN, new byte[] { -1 })); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SHUTDOWN, new byte[] { -1 }));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -1104,7 +1104,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
{ {
try { try {
TransactionBuilder builder = performInitialized("onHeartRateTest"); TransactionBuilder builder = performInitialized("onHeartRateTest");
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_TRIGGER_MEASURE_HEARTRATE, new byte[] { start ? (byte)0 : (byte)-1 })); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_TRIGGER_MEASURE_HEARTRATE, new byte[] { start ? (byte)0 : (byte)-1 }));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -1154,7 +1154,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
{ {
try { try {
TransactionBuilder builder = performInitialized("onFindDevice"); TransactionBuilder builder = performInitialized("onFindDevice");
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_FIND_MY_WATCH, new byte[0])); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_FIND_MY_WATCH, new byte[0]));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -1187,9 +1187,9 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private <T extends DaFitSetting> T getSetting(String id) { private <T extends MoyoungSetting> T getSetting(String id) {
DaFitDeviceCoordinator coordinator = (DaFitDeviceCoordinator) DeviceHelper.getInstance().getCoordinator(getDevice()); MoyoungDeviceCoordinator coordinator = (MoyoungDeviceCoordinator) DeviceHelper.getInstance().getCoordinator(getDevice());
for(DaFitSetting setting : coordinator.getSupportedSettings()) for(MoyoungSetting setting : coordinator.getSupportedSettings())
{ {
if (setting.name.equals(id)) if (setting.name.equals(id))
return (T) setting; return (T) setting;
@ -1210,12 +1210,12 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
return cal; return cal;
} }
private <T> void sendSetting(TransactionBuilder builder, DaFitSetting<T> setting, T newValue) private <T> void sendSetting(TransactionBuilder builder, MoyoungSetting<T> setting, T newValue)
{ {
sendPacket(builder, DaFitPacketOut.buildPacket(setting.cmdSet, setting.encode(newValue))); sendPacket(builder, MoyoungPacketOut.buildPacket(setting.cmdSet, setting.encode(newValue)));
} }
private <T> void sendSetting(DaFitSetting<T> setting, T newValue) private <T> void sendSetting(MoyoungSetting<T> setting, T newValue)
{ {
try { try {
TransactionBuilder builder = performInitialized("sendSetting"); TransactionBuilder builder = performInitialized("sendSetting");
@ -1226,16 +1226,16 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
} }
} }
private Set<DaFitSetting> queriedSettings = new HashSet<>(); private Set<MoyoungSetting> queriedSettings = new HashSet<>();
private void querySetting(DaFitSetting setting) private void querySetting(MoyoungSetting setting)
{ {
if (queriedSettings.contains(setting)) if (queriedSettings.contains(setting))
return; return;
try { try {
TransactionBuilder builder = performInitialized("querySetting"); TransactionBuilder builder = performInitialized("querySetting");
sendPacket(builder, DaFitPacketOut.buildPacket(setting.cmdQuery, new byte[0])); sendPacket(builder, MoyoungPacketOut.buildPacket(setting.cmdQuery, new byte[0]));
builder.queue(getQueue()); builder.queue(getQueue());
queriedSettings.add(setting); queriedSettings.add(setting);
} catch (IOException e) { } catch (IOException e) {
@ -1263,11 +1263,11 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
case DeviceSettingsPreferenceConst.PREF_TIMEFORMAT: case DeviceSettingsPreferenceConst.PREF_TIMEFORMAT:
String timeSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_24h)); String timeSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_24h));
DaFitEnumTimeSystem timeSystem; MoyoungEnumTimeSystem timeSystem;
if (timeSystemPref.equals(getContext().getString(R.string.p_timeformat_24h))) if (timeSystemPref.equals(getContext().getString(R.string.p_timeformat_24h)))
timeSystem = DaFitEnumTimeSystem.TIME_SYSTEM_24; timeSystem = MoyoungEnumTimeSystem.TIME_SYSTEM_24;
else if (timeSystemPref.equals(getContext().getString(R.string.p_timeformat_am_pm))) else if (timeSystemPref.equals(getContext().getString(R.string.p_timeformat_am_pm)))
timeSystem = DaFitEnumTimeSystem.TIME_SYSTEM_12; timeSystem = MoyoungEnumTimeSystem.TIME_SYSTEM_12;
else else
throw new IllegalArgumentException(); throw new IllegalArgumentException();
@ -1277,36 +1277,36 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM: case DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM:
String metricSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric)); String metricSystemPref = prefs.getString(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
DaFitEnumMetricSystem metricSystem; MoyoungEnumMetricSystem metricSystem;
if (metricSystemPref.equals(getContext().getString(R.string.p_unit_metric))) if (metricSystemPref.equals(getContext().getString(R.string.p_unit_metric)))
metricSystem = DaFitEnumMetricSystem.METRIC_SYSTEM; metricSystem = MoyoungEnumMetricSystem.METRIC_SYSTEM;
else if (metricSystemPref.equals(getContext().getString(R.string.p_unit_imperial))) else if (metricSystemPref.equals(getContext().getString(R.string.p_unit_imperial)))
metricSystem = DaFitEnumMetricSystem.IMPERIAL_SYSTEM; metricSystem = MoyoungEnumMetricSystem.IMPERIAL_SYSTEM;
else else
throw new IllegalArgumentException(); throw new IllegalArgumentException();
sendSetting(getSetting("METRIC_SYSTEM"), metricSystem); sendSetting(getSetting("METRIC_SYSTEM"), metricSystem);
break; break;
case DaFitConstants.PREF_WATCH_FACE: case MoyoungConstants.PREF_WATCH_FACE:
String watchFacePref = prefs.getString(DaFitConstants.PREF_WATCH_FACE, String.valueOf(1)); String watchFacePref = prefs.getString(MoyoungConstants.PREF_WATCH_FACE, String.valueOf(1));
byte watchFace = Byte.valueOf(watchFacePref); byte watchFace = Byte.valueOf(watchFacePref);
sendSetting(getSetting("DISPLAY_WATCH_FACE"), watchFace); sendSetting(getSetting("DISPLAY_WATCH_FACE"), watchFace);
break; break;
case DaFitConstants.PREF_LANGUAGE: case MoyoungConstants.PREF_LANGUAGE:
String languagePref = prefs.getString(DaFitConstants.PREF_LANGUAGE, String languagePref = prefs.getString(MoyoungConstants.PREF_LANGUAGE,
String.valueOf(DaFitEnumLanguage.LANGUAGE_ENGLISH.value())); String.valueOf(MoyoungEnumLanguage.LANGUAGE_ENGLISH.value()));
byte languageNum = Byte.valueOf(languagePref); byte languageNum = Byte.valueOf(languagePref);
DaFitSettingEnum<DaFitEnumLanguage> languageSetting = getSetting("DEVICE_LANGUAGE"); MoyoungSettingEnum<MoyoungEnumLanguage> languageSetting = getSetting("DEVICE_LANGUAGE");
sendSetting(languageSetting, languageSetting.findByValue(languageNum)); sendSetting(languageSetting, languageSetting.findByValue(languageNum));
break; break;
case DaFitConstants.PREF_DEVICE_VERSION: case MoyoungConstants.PREF_DEVICE_VERSION:
String versionPref = prefs.getString(DaFitConstants.PREF_DEVICE_VERSION, String versionPref = prefs.getString(MoyoungConstants.PREF_DEVICE_VERSION,
String.valueOf(DaFitEnumDeviceVersion.INTERNATIONAL_EDITION.value())); String.valueOf(MoyoungEnumDeviceVersion.INTERNATIONAL_EDITION.value()));
byte versionNum = Byte.valueOf(versionPref); byte versionNum = Byte.valueOf(versionPref);
DaFitSettingEnum<DaFitEnumDeviceVersion> versionSetting = getSetting("DEVICE_VERSION"); MoyoungSettingEnum<MoyoungEnumDeviceVersion> versionSetting = getSetting("DEVICE_VERSION");
sendSetting(versionSetting, versionSetting.findByValue(versionNum)); sendSetting(versionSetting, versionSetting.findByValue(versionNum));
break; break;
@ -1319,13 +1319,13 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
Calendar doNotDisturbStart = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_START, "01:00"); Calendar doNotDisturbStart = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_START, "01:00");
Calendar doNotDisturbEnd = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_END, "06:00"); Calendar doNotDisturbEnd = getTimePref(prefs, MiBandConst.PREF_DO_NOT_DISTURB_END, "06:00");
DaFitSettingTimeRange.TimeRange doNotDisturb; MoyoungSettingTimeRange.TimeRange doNotDisturb;
if (doNotDisturbEnabled) if (doNotDisturbEnabled)
doNotDisturb = new DaFitSettingTimeRange.TimeRange( doNotDisturb = new MoyoungSettingTimeRange.TimeRange(
(byte) doNotDisturbStart.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbStart.get(Calendar.MINUTE), (byte) doNotDisturbStart.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbStart.get(Calendar.MINUTE),
(byte) doNotDisturbEnd.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbEnd.get(Calendar.MINUTE)); (byte) doNotDisturbEnd.get(Calendar.HOUR_OF_DAY), (byte) doNotDisturbEnd.get(Calendar.MINUTE));
else else
doNotDisturb = new DaFitSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0); doNotDisturb = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
sendSetting(getSetting("DO_NOT_DISTURB_TIME"), doNotDisturb); sendSetting(getSetting("DO_NOT_DISTURB_TIME"), doNotDisturb);
break; break;
@ -1340,34 +1340,34 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
Calendar quickViewStart = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_START, "00:00"); Calendar quickViewStart = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_START, "00:00");
Calendar quickViewEnd = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_END, "00:00"); Calendar quickViewEnd = getTimePref(prefs, HuamiConst.PREF_DISPLAY_ON_LIFT_END, "00:00");
DaFitSettingTimeRange.TimeRange quickViewTime; MoyoungSettingTimeRange.TimeRange quickViewTime;
if (quickViewEnabled && quickViewScheduled) if (quickViewEnabled && quickViewScheduled)
quickViewTime = new DaFitSettingTimeRange.TimeRange( quickViewTime = new MoyoungSettingTimeRange.TimeRange(
(byte) quickViewStart.get(Calendar.HOUR_OF_DAY), (byte) quickViewStart.get(Calendar.MINUTE), (byte) quickViewStart.get(Calendar.HOUR_OF_DAY), (byte) quickViewStart.get(Calendar.MINUTE),
(byte) quickViewEnd.get(Calendar.HOUR_OF_DAY), (byte) quickViewEnd.get(Calendar.MINUTE)); (byte) quickViewEnd.get(Calendar.HOUR_OF_DAY), (byte) quickViewEnd.get(Calendar.MINUTE));
else else
quickViewTime = new DaFitSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0); quickViewTime = new MoyoungSettingTimeRange.TimeRange((byte)0, (byte)0, (byte)0, (byte)0);
sendSetting(getSetting("QUICK_VIEW"), quickViewEnabled); sendSetting(getSetting("QUICK_VIEW"), quickViewEnabled);
sendSetting(getSetting("QUICK_VIEW_TIME"), quickViewTime); sendSetting(getSetting("QUICK_VIEW_TIME"), quickViewTime);
break; break;
case DaFitConstants.PREF_SEDENTARY_REMINDER: case MoyoungConstants.PREF_SEDENTARY_REMINDER:
String sedentaryReminderPref = prefs.getString(DaFitConstants.PREF_SEDENTARY_REMINDER, "off"); String sedentaryReminderPref = prefs.getString(MoyoungConstants.PREF_SEDENTARY_REMINDER, "off");
boolean sedentaryReminderEnabled = !sedentaryReminderPref.equals("off"); boolean sedentaryReminderEnabled = !sedentaryReminderPref.equals("off");
sendSetting(getSetting("SEDENTARY_REMINDER"), sedentaryReminderEnabled); sendSetting(getSetting("SEDENTARY_REMINDER"), sedentaryReminderEnabled);
break; break;
case DaFitConstants.PREF_SEDENTARY_REMINDER_PERIOD: case MoyoungConstants.PREF_SEDENTARY_REMINDER_PERIOD:
case DaFitConstants.PREF_SEDENTARY_REMINDER_STEPS: case MoyoungConstants.PREF_SEDENTARY_REMINDER_STEPS:
case DaFitConstants.PREF_SEDENTARY_REMINDER_START: case MoyoungConstants.PREF_SEDENTARY_REMINDER_START:
case DaFitConstants.PREF_SEDENTARY_REMINDER_END: case MoyoungConstants.PREF_SEDENTARY_REMINDER_END:
byte sedentaryPeriod = (byte) prefs.getInt(DaFitConstants.PREF_SEDENTARY_REMINDER_PERIOD, 30); byte sedentaryPeriod = (byte) prefs.getInt(MoyoungConstants.PREF_SEDENTARY_REMINDER_PERIOD, 30);
byte sedentarySteps = (byte) prefs.getInt(DaFitConstants.PREF_SEDENTARY_REMINDER_STEPS, 100); byte sedentarySteps = (byte) prefs.getInt(MoyoungConstants.PREF_SEDENTARY_REMINDER_STEPS, 100);
byte sedentaryStart = (byte) prefs.getInt(DaFitConstants.PREF_SEDENTARY_REMINDER_START, 10); byte sedentaryStart = (byte) prefs.getInt(MoyoungConstants.PREF_SEDENTARY_REMINDER_START, 10);
byte sedentaryEnd = (byte) prefs.getInt(DaFitConstants.PREF_SEDENTARY_REMINDER_END, 22); byte sedentaryEnd = (byte) prefs.getInt(MoyoungConstants.PREF_SEDENTARY_REMINDER_END, 22);
sendSetting(getSetting("REMINDERS_TO_MOVE_PERIOD"), sendSetting(getSetting("REMINDERS_TO_MOVE_PERIOD"),
new DaFitSettingRemindersToMove.RemindersToMove(sedentaryPeriod, sedentarySteps, sedentaryStart, sedentaryEnd)); new MoyoungSettingRemindersToMove.RemindersToMove(sedentaryPeriod, sedentarySteps, sedentaryStart, sedentaryEnd));
break; break;
} }
@ -1401,15 +1401,15 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
querySetting(getSetting("METRIC_SYSTEM")); querySetting(getSetting("METRIC_SYSTEM"));
break; break;
case DaFitConstants.PREF_WATCH_FACE: case MoyoungConstants.PREF_WATCH_FACE:
querySetting(getSetting("DISPLAY_WATCH_FACE")); querySetting(getSetting("DISPLAY_WATCH_FACE"));
break; break;
case DaFitConstants.PREF_LANGUAGE: case MoyoungConstants.PREF_LANGUAGE:
querySetting(getSetting("DEVICE_LANGUAGE")); querySetting(getSetting("DEVICE_LANGUAGE"));
break; break;
case DaFitConstants.PREF_DEVICE_VERSION: case MoyoungConstants.PREF_DEVICE_VERSION:
querySetting(getSetting("DEVICE_VERSION")); querySetting(getSetting("DEVICE_VERSION"));
break; break;
@ -1426,14 +1426,14 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
querySetting(getSetting("QUICK_VIEW_TIME")); querySetting(getSetting("QUICK_VIEW_TIME"));
break; break;
case DaFitConstants.PREF_SEDENTARY_REMINDER: case MoyoungConstants.PREF_SEDENTARY_REMINDER:
querySetting(getSetting("SEDENTARY_REMINDER")); querySetting(getSetting("SEDENTARY_REMINDER"));
break; break;
case DaFitConstants.PREF_SEDENTARY_REMINDER_PERIOD: case MoyoungConstants.PREF_SEDENTARY_REMINDER_PERIOD:
case DaFitConstants.PREF_SEDENTARY_REMINDER_STEPS: case MoyoungConstants.PREF_SEDENTARY_REMINDER_STEPS:
case DaFitConstants.PREF_SEDENTARY_REMINDER_START: case MoyoungConstants.PREF_SEDENTARY_REMINDER_START:
case DaFitConstants.PREF_SEDENTARY_REMINDER_END: case MoyoungConstants.PREF_SEDENTARY_REMINDER_END:
querySetting(getSetting("REMINDERS_TO_MOVE_PERIOD")); querySetting(getSetting("REMINDERS_TO_MOVE_PERIOD"));
break; break;
default: default:
@ -1446,7 +1446,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
evaluateGBDeviceEvent(configReadEvent); evaluateGBDeviceEvent(configReadEvent);
} }
public void onReadConfigurationDone(DaFitSetting setting, Object value, byte[] data) public void onReadConfigurationDone(MoyoungSetting setting, Object value, byte[] data)
{ {
Log.i("CONFIG", setting.name + " = " + value); Log.i("CONFIG", setting.name + " = " + value);
Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress())); Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress()));
@ -1454,20 +1454,20 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
SharedPreferences.Editor prefsEditor = prefs.getPreferences().edit(); SharedPreferences.Editor prefsEditor = prefs.getPreferences().edit();
switch (setting.name) { switch (setting.name) {
case "TIME_SYSTEM": case "TIME_SYSTEM":
DaFitEnumTimeSystem timeSystem = (DaFitEnumTimeSystem) value; MoyoungEnumTimeSystem timeSystem = (MoyoungEnumTimeSystem) value;
if (timeSystem == DaFitEnumTimeSystem.TIME_SYSTEM_24) if (timeSystem == MoyoungEnumTimeSystem.TIME_SYSTEM_24)
changedProperties.put(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_24h)); changedProperties.put(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_24h));
else if (timeSystem == DaFitEnumTimeSystem.TIME_SYSTEM_12) else if (timeSystem == MoyoungEnumTimeSystem.TIME_SYSTEM_12)
changedProperties.put(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_am_pm)); changedProperties.put(DeviceSettingsPreferenceConst.PREF_TIMEFORMAT, getContext().getString(R.string.p_timeformat_am_pm));
else else
throw new IllegalArgumentException("Invalid value"); throw new IllegalArgumentException("Invalid value");
break; break;
case "METRIC_SYSTEM": case "METRIC_SYSTEM":
DaFitEnumMetricSystem metricSystem = (DaFitEnumMetricSystem) value; MoyoungEnumMetricSystem metricSystem = (MoyoungEnumMetricSystem) value;
if (metricSystem == DaFitEnumMetricSystem.METRIC_SYSTEM) if (metricSystem == MoyoungEnumMetricSystem.METRIC_SYSTEM)
changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric)); changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_metric));
else if (metricSystem == DaFitEnumMetricSystem.IMPERIAL_SYSTEM) else if (metricSystem == MoyoungEnumMetricSystem.IMPERIAL_SYSTEM)
changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_imperial)); changedProperties.put(DeviceSettingsPreferenceConst.PREF_MEASUREMENTSYSTEM, getContext().getString(R.string.p_unit_imperial));
else else
throw new IllegalArgumentException("Invalid value"); throw new IllegalArgumentException("Invalid value");
@ -1475,26 +1475,26 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
case "DISPLAY_WATCH_FACE": case "DISPLAY_WATCH_FACE":
byte watchFace = (Byte) value; byte watchFace = (Byte) value;
changedProperties.put(DaFitConstants.PREF_WATCH_FACE, String.valueOf(watchFace)); changedProperties.put(MoyoungConstants.PREF_WATCH_FACE, String.valueOf(watchFace));
break; break;
case "DEVICE_LANGUAGE": case "DEVICE_LANGUAGE":
DaFitEnumLanguage language = (DaFitEnumLanguage) value; MoyoungEnumLanguage language = (MoyoungEnumLanguage) value;
changedProperties.put(DaFitConstants.PREF_LANGUAGE, String.valueOf(language.value())); changedProperties.put(MoyoungConstants.PREF_LANGUAGE, String.valueOf(language.value()));
DaFitEnumLanguage[] supportedLanguages = ((DaFitSettingLanguage) setting).decodeSupportedValues(data); MoyoungEnumLanguage[] supportedLanguages = ((MoyoungSettingLanguage) setting).decodeSupportedValues(data);
Set<String> supportedLanguagesList = new HashSet<>(); Set<String> supportedLanguagesList = new HashSet<>();
for(DaFitEnumLanguage supportedLanguage : supportedLanguages) for(MoyoungEnumLanguage supportedLanguage : supportedLanguages)
supportedLanguagesList.add(String.valueOf(supportedLanguage.value())); supportedLanguagesList.add(String.valueOf(supportedLanguage.value()));
prefsEditor.putStringSet(DaFitConstants.PREF_LANGUAGE_SUPPORT, supportedLanguagesList); prefsEditor.putStringSet(MoyoungConstants.PREF_LANGUAGE_SUPPORT, supportedLanguagesList);
break; break;
case "DEVICE_VERSION": case "DEVICE_VERSION":
DaFitEnumDeviceVersion deviceVersion = (DaFitEnumDeviceVersion) value; MoyoungEnumDeviceVersion deviceVersion = (MoyoungEnumDeviceVersion) value;
changedProperties.put(DaFitConstants.PREF_DEVICE_VERSION, String.valueOf(deviceVersion.value())); changedProperties.put(MoyoungConstants.PREF_DEVICE_VERSION, String.valueOf(deviceVersion.value()));
break; break;
case "DO_NOT_DISTURB_TIME": case "DO_NOT_DISTURB_TIME":
DaFitSettingTimeRange.TimeRange doNotDisturb = (DaFitSettingTimeRange.TimeRange) value; MoyoungSettingTimeRange.TimeRange doNotDisturb = (MoyoungSettingTimeRange.TimeRange) value;
if (doNotDisturb.start_h == 0 && doNotDisturb.start_m == 0 && if (doNotDisturb.start_h == 0 && doNotDisturb.start_m == 0 &&
doNotDisturb.end_h == 0 && doNotDisturb.end_m == 0) doNotDisturb.end_h == 0 && doNotDisturb.end_m == 0)
changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF); changedProperties.put(MiBandConst.PREF_DO_NOT_DISTURB, MiBandConst.PREF_DO_NOT_DISTURB_OFF);
@ -1512,7 +1512,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
case "QUICK_VIEW_TIME": case "QUICK_VIEW_TIME":
boolean quickViewEnabled2 = !prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_off)); boolean quickViewEnabled2 = !prefs.getString(HuamiConst.PREF_ACTIVATE_DISPLAY_ON_LIFT, getContext().getString(R.string.p_off)).equals(getContext().getString(R.string.p_off));
DaFitSettingTimeRange.TimeRange quickViewTime = (DaFitSettingTimeRange.TimeRange) value; MoyoungSettingTimeRange.TimeRange quickViewTime = (MoyoungSettingTimeRange.TimeRange) value;
if (quickViewEnabled2) if (quickViewEnabled2)
{ {
if (quickViewTime.start_h == 0 && quickViewTime.start_m == 0 && if (quickViewTime.start_h == 0 && quickViewTime.start_m == 0 &&
@ -1527,15 +1527,15 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
case "SEDENTARY_REMINDER": case "SEDENTARY_REMINDER":
boolean sedentaryReminderEnabled = (Boolean) value; boolean sedentaryReminderEnabled = (Boolean) value;
changedProperties.put(DaFitConstants.PREF_SEDENTARY_REMINDER, sedentaryReminderEnabled ? "on": "off"); changedProperties.put(MoyoungConstants.PREF_SEDENTARY_REMINDER, sedentaryReminderEnabled ? "on": "off");
break; break;
case "REMINDERS_TO_MOVE_PERIOD": case "REMINDERS_TO_MOVE_PERIOD":
DaFitSettingRemindersToMove.RemindersToMove remindersToMove = (DaFitSettingRemindersToMove.RemindersToMove) value; MoyoungSettingRemindersToMove.RemindersToMove remindersToMove = (MoyoungSettingRemindersToMove.RemindersToMove) value;
changedProperties.put(DaFitConstants.PREF_SEDENTARY_REMINDER_PERIOD, String.valueOf(remindersToMove.period)); changedProperties.put(MoyoungConstants.PREF_SEDENTARY_REMINDER_PERIOD, String.valueOf(remindersToMove.period));
changedProperties.put(DaFitConstants.PREF_SEDENTARY_REMINDER_STEPS, String.valueOf(remindersToMove.steps)); changedProperties.put(MoyoungConstants.PREF_SEDENTARY_REMINDER_STEPS, String.valueOf(remindersToMove.steps));
changedProperties.put(DaFitConstants.PREF_SEDENTARY_REMINDER_START, String.valueOf(remindersToMove.start_h)); changedProperties.put(MoyoungConstants.PREF_SEDENTARY_REMINDER_START, String.valueOf(remindersToMove.start_h));
changedProperties.put(DaFitConstants.PREF_SEDENTARY_REMINDER_END, String.valueOf(remindersToMove.end_h)); changedProperties.put(MoyoungConstants.PREF_SEDENTARY_REMINDER_END, String.valueOf(remindersToMove.end_h));
break; break;
} }
for (Map.Entry<String, String> property : changedProperties.entrySet()) for (Map.Entry<String, String> property : changedProperties.entrySet())
@ -1564,7 +1564,7 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
try { try {
TransactionBuilder builder = performInitialized("onSendWeather"); TransactionBuilder builder = performInitialized("onSendWeather");
DaFitWeatherToday weatherToday = new DaFitWeatherToday(weatherSpec); MoyoungWeatherToday weatherToday = new MoyoungWeatherToday(weatherSpec);
ByteBuffer packetWeatherToday = ByteBuffer.allocate(weatherToday.pm25 != null ? 21 : 19); ByteBuffer packetWeatherToday = ByteBuffer.allocate(weatherToday.pm25 != null ? 21 : 19);
packetWeatherToday.put(weatherToday.pm25 != null ? (byte)1 : (byte)0); packetWeatherToday.put(weatherToday.pm25 != null ? (byte)1 : (byte)0);
packetWeatherToday.put(weatherToday.conditionId); packetWeatherToday.put(weatherToday.conditionId);
@ -1573,21 +1573,21 @@ public class DaFitDeviceSupport extends AbstractBTLEDeviceSupport {
packetWeatherToday.putShort(weatherToday.pm25); packetWeatherToday.putShort(weatherToday.pm25);
packetWeatherToday.put(weatherToday.lunar_or_festival.getBytes("unicodebigunmarked")); packetWeatherToday.put(weatherToday.lunar_or_festival.getBytes("unicodebigunmarked"));
packetWeatherToday.put(weatherToday.city.getBytes("unicodebigunmarked")); packetWeatherToday.put(weatherToday.city.getBytes("unicodebigunmarked"));
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SET_WEATHER_TODAY, packetWeatherToday.array())); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SET_WEATHER_TODAY, packetWeatherToday.array()));
ByteBuffer packetWeatherForecast = ByteBuffer.allocate(7 * 3); ByteBuffer packetWeatherForecast = ByteBuffer.allocate(7 * 3);
for(int i = 0; i < 7; i++) for(int i = 0; i < 7; i++)
{ {
DaFitWeatherForecast forecast; MoyoungWeatherForecast forecast;
if (weatherSpec.forecasts.size() > i) if (weatherSpec.forecasts.size() > i)
forecast = new DaFitWeatherForecast(weatherSpec.forecasts.get(i)); forecast = new MoyoungWeatherForecast(weatherSpec.forecasts.get(i));
else else
forecast = new DaFitWeatherForecast(DaFitConstants.WEATHER_HAZE, (byte)-100, (byte)-100); // I don't think there is a way to send less (my watch shows only tomorrow anyway...) forecast = new MoyoungWeatherForecast(MoyoungConstants.WEATHER_HAZE, (byte)-100, (byte)-100); // I don't think there is a way to send less (my watch shows only tomorrow anyway...)
packetWeatherForecast.put(forecast.conditionId); packetWeatherForecast.put(forecast.conditionId);
packetWeatherForecast.put(forecast.minTemp); packetWeatherForecast.put(forecast.minTemp);
packetWeatherForecast.put(forecast.maxTemp); packetWeatherForecast.put(forecast.maxTemp);
} }
sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_SET_WEATHER_FUTURE, packetWeatherForecast.array())); sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_SET_WEATHER_FUTURE, packetWeatherForecast.array()));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {

View File

@ -14,9 +14,9 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
public class DaFitPacket { public class MoyoungPacket {
protected byte[] packet; protected byte[] packet;
protected int position = 0; protected int position = 0;
} }

View File

@ -14,9 +14,8 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import android.util.Log;
import android.util.Pair; import android.util.Pair;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -33,8 +32,8 @@ import nodomain.freeyourgadget.gadgetbridge.Logging;
* <pre> * <pre>
* {@code * {@code
* if(packetIn.putFragment(fragment)) { * if(packetIn.putFragment(fragment)) {
* Pair<Byte, byte[]> packet = DaFitPacketIn.parsePacket(packetIn.getPacket()); * Pair<Byte, byte[]> packet = MoyoungPacketIn.parsePacket(packetIn.getPacket());
* packetIn = new DaFitPacketIn(); * packetIn = new MoyoungPacketIn();
* if (packet != null) { * if (packet != null) {
* byte packetType = packet.first; * byte packetType = packet.first;
* byte[] payload = packet.second; * byte[] payload = packet.second;
@ -43,10 +42,10 @@ import nodomain.freeyourgadget.gadgetbridge.Logging;
* } * }
* </pre> * </pre>
*/ */
public class DaFitPacketIn extends DaFitPacket { public class MoyoungPacketIn extends MoyoungPacket {
private static final Logger LOG = LoggerFactory.getLogger(DaFitPacketIn.class); private static final Logger LOG = LoggerFactory.getLogger(MoyoungPacketIn.class);
public DaFitPacketIn() public MoyoungPacketIn()
{ {
} }

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -24,15 +24,15 @@ import androidx.annotation.NonNull;
* Usage: * Usage:
* <pre> * <pre>
* {@code * {@code
* DaFitPacketOut packetOut = new DaFitPacketOut(DaFitPacketOut.buildPacket(type, payload)); * MoyoungPacketOut packetOut = new MoyoungPacketOut(MoyoungPacketOut.buildPacket(type, payload));
* byte[] fragment = new byte[MTU]; * byte[] fragment = new byte[MTU];
* while(packetOut.getFragment(fragment)) * while(packetOut.getFragment(fragment))
* send(fragment); * send(fragment);
* } * }
* </pre> * </pre>
*/ */
public class DaFitPacketOut extends DaFitPacket { public class MoyoungPacketOut extends MoyoungPacket {
public DaFitPacketOut(byte[] packet) public MoyoungPacketOut(byte[] packet)
{ {
this.packet = packet; this.packet = packet;
} }
@ -64,7 +64,7 @@ public class DaFitPacketOut extends DaFitPacket {
byte[] packet = new byte[payload.length + 5]; byte[] packet = new byte[payload.length + 5];
packet[0] = (byte)0xFE; packet[0] = (byte)0xFE;
packet[1] = (byte)0xEA; packet[1] = (byte)0xEA;
if (DaFitDeviceSupport.MTU == 20) if (MoyoungDeviceSupport.MTU == 20)
{ {
packet[2] = 16; packet[2] = 16;
packet[3] = (byte)(packet.length & 0xFF); packet[3] = (byte)(packet.length & 0xFF);

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -27,31 +27,31 @@ import org.slf4j.LoggerFactory;
import java.io.IOException; import java.io.IOException;
import java.util.UUID; import java.util.UUID;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitConstants; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungConstants;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungDeviceCoordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.settings.DaFitSetting; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.settings.MoyoungSetting;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus;
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
public class QuerySettingsOperation extends AbstractBTLEOperation<DaFitDeviceSupport> { public class QuerySettingsOperation extends AbstractBTLEOperation<MoyoungDeviceSupport> {
private static final Logger LOG = LoggerFactory.getLogger(QuerySettingsOperation.class); private static final Logger LOG = LoggerFactory.getLogger(QuerySettingsOperation.class);
private final DaFitSetting[] settingsToQuery; private final MoyoungSetting[] settingsToQuery;
private boolean[] received; private boolean[] received;
private DaFitPacketIn packetIn = new DaFitPacketIn(); private MoyoungPacketIn packetIn = new MoyoungPacketIn();
public QuerySettingsOperation(DaFitDeviceSupport support, DaFitSetting[] settingsToQuery) { public QuerySettingsOperation(MoyoungDeviceSupport support, MoyoungSetting[] settingsToQuery) {
super(support); super(support);
this.settingsToQuery = settingsToQuery; this.settingsToQuery = settingsToQuery;
} }
public QuerySettingsOperation(DaFitDeviceSupport support) { public QuerySettingsOperation(MoyoungDeviceSupport support) {
super(support); super(support);
DaFitDeviceCoordinator coordinator = (DaFitDeviceCoordinator) DeviceHelper.getInstance().getCoordinator(getDevice()); MoyoungDeviceCoordinator coordinator = (MoyoungDeviceCoordinator) DeviceHelper.getInstance().getCoordinator(getDevice());
this.settingsToQuery = coordinator.getSupportedSettings(); this.settingsToQuery = coordinator.getSupportedSettings();
} }
@ -65,12 +65,12 @@ public class QuerySettingsOperation extends AbstractBTLEOperation<DaFitDeviceSup
protected void doPerform() throws IOException { protected void doPerform() throws IOException {
received = new boolean[settingsToQuery.length]; received = new boolean[settingsToQuery.length];
TransactionBuilder builder = performInitialized("QuerySettingsOperation"); TransactionBuilder builder = performInitialized("QuerySettingsOperation");
for (DaFitSetting setting : settingsToQuery) for (MoyoungSetting setting : settingsToQuery)
{ {
if (setting.cmdQuery == -1) if (setting.cmdQuery == -1)
continue; continue;
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(setting.cmdQuery, new byte[0])); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(setting.cmdQuery, new byte[0]));
} }
builder.queue(getQueue()); builder.queue(getQueue());
} }
@ -84,11 +84,11 @@ public class QuerySettingsOperation extends AbstractBTLEOperation<DaFitDeviceSup
else else
{ {
UUID charUuid = characteristic.getUuid(); UUID charUuid = characteristic.getUuid();
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_DATA_IN)) if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_DATA_IN))
{ {
if (packetIn.putFragment(characteristic.getValue())) { if (packetIn.putFragment(characteristic.getValue())) {
Pair<Byte, byte[]> packet = DaFitPacketIn.parsePacket(packetIn.getPacket()); Pair<Byte, byte[]> packet = MoyoungPacketIn.parsePacket(packetIn.getPacket());
packetIn = new DaFitPacketIn(); packetIn = new MoyoungPacketIn();
if (packet != null) { if (packet != null) {
byte packetType = packet.first; byte packetType = packet.first;
byte[] payload = packet.second; byte[] payload = packet.second;
@ -108,7 +108,7 @@ public class QuerySettingsOperation extends AbstractBTLEOperation<DaFitDeviceSup
boolean receivedEverything = true; boolean receivedEverything = true;
for(int i = 0; i < settingsToQuery.length; i++) for(int i = 0; i < settingsToQuery.length; i++)
{ {
DaFitSetting setting = settingsToQuery[i]; MoyoungSetting setting = settingsToQuery[i];
if (setting.cmdQuery == -1) if (setting.cmdQuery == -1)
continue; continue;
if (setting.cmdQuery == packetType) if (setting.cmdQuery == packetType)

View File

@ -14,7 +14,7 @@
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.dafit; package nodomain.freeyourgadget.gadgetbridge.service.devices.moyoung;
import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattCharacteristic;
@ -37,10 +37,10 @@ import nodomain.freeyourgadget.gadgetbridge.Logging;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitConstants; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungConstants;
import nodomain.freeyourgadget.gadgetbridge.devices.dafit.DaFitSampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.moyoung.MoyoungSampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.DaFitActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.MoyoungActivitySample;
import nodomain.freeyourgadget.gadgetbridge.entities.User; import nodomain.freeyourgadget.gadgetbridge.entities.User;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
@ -48,7 +48,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDeviceSupport> { public class TrainingFinishedDataOperation extends AbstractBTLEOperation<MoyoungDeviceSupport> {
private static final Logger LOG = LoggerFactory.getLogger(FetchDataOperation.class); private static final Logger LOG = LoggerFactory.getLogger(FetchDataOperation.class);
@ -56,9 +56,9 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
private final long firstPacketTimeInMillis; private final long firstPacketTimeInMillis;
ByteArrayOutputStream data = new ByteArrayOutputStream(); ByteArrayOutputStream data = new ByteArrayOutputStream();
private DaFitPacketIn packetIn = new DaFitPacketIn(); private MoyoungPacketIn packetIn = new MoyoungPacketIn();
public TrainingFinishedDataOperation(DaFitDeviceSupport support, byte[] firstPacketData) { public TrainingFinishedDataOperation(MoyoungDeviceSupport support, byte[] firstPacketData) {
super(support); super(support);
this.firstPacketData = firstPacketData; this.firstPacketData = firstPacketData;
this.firstPacketTimeInMillis = Calendar.getInstance().getTimeInMillis(); this.firstPacketTimeInMillis = Calendar.getInstance().getTimeInMillis();
@ -85,11 +85,11 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
else else
{ {
UUID charUuid = characteristic.getUuid(); UUID charUuid = characteristic.getUuid();
if (charUuid.equals(DaFitConstants.UUID_CHARACTERISTIC_DATA_IN)) if (charUuid.equals(MoyoungConstants.UUID_CHARACTERISTIC_DATA_IN))
{ {
if (packetIn.putFragment(characteristic.getValue())) { if (packetIn.putFragment(characteristic.getValue())) {
Pair<Byte, byte[]> packet = DaFitPacketIn.parsePacket(packetIn.getPacket()); Pair<Byte, byte[]> packet = MoyoungPacketIn.parsePacket(packetIn.getPacket());
packetIn = new DaFitPacketIn(); packetIn = new MoyoungPacketIn();
if (packet != null) { if (packet != null) {
byte packetType = packet.first; byte packetType = packet.first;
byte[] payload = packet.second; byte[] payload = packet.second;
@ -106,11 +106,11 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
} }
private boolean handlePacket(byte packetType, byte[] payload) { private boolean handlePacket(byte packetType, byte[] payload) {
if (packetType == DaFitConstants.CMD_QUERY_LAST_DYNAMIC_RATE) { if (packetType == MoyoungConstants.CMD_QUERY_LAST_DYNAMIC_RATE) {
handleTrainingHealthRatePacket(payload, false); handleTrainingHealthRatePacket(payload, false);
return true; return true;
} }
if (packetType == DaFitConstants.CMD_QUERY_MOVEMENT_HEART_RATE) { if (packetType == MoyoungConstants.CMD_QUERY_MOVEMENT_HEART_RATE) {
handleTrainingSummaryDataPacket(payload); handleTrainingSummaryDataPacket(payload);
return true; return true;
} }
@ -121,14 +121,14 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
private void handleTrainingHealthRatePacket(byte[] payload, boolean isFirst) { private void handleTrainingHealthRatePacket(byte[] payload, boolean isFirst) {
Log.i("TRAINING DATA", "data: " + Logging.formatBytes(payload)); Log.i("TRAINING DATA", "data: " + Logging.formatBytes(payload));
byte sequenceType = payload[0]; byte sequenceType = payload[0];
if (isFirst != (sequenceType == DaFitConstants.ARG_TRANSMISSION_FIRST)) if (isFirst != (sequenceType == MoyoungConstants.ARG_TRANSMISSION_FIRST))
throw new IllegalArgumentException("Expected packet to be " + (isFirst ? "first" : "continued") + " but got packet of type " + sequenceType); throw new IllegalArgumentException("Expected packet to be " + (isFirst ? "first" : "continued") + " but got packet of type " + sequenceType);
if (sequenceType == DaFitConstants.ARG_TRANSMISSION_LAST && payload.length > 1) if (sequenceType == MoyoungConstants.ARG_TRANSMISSION_LAST && payload.length > 1)
throw new IllegalArgumentException("Last packet shouldn't have any data"); throw new IllegalArgumentException("Last packet shouldn't have any data");
data.write(payload, 1, payload.length - 1); data.write(payload, 1, payload.length - 1);
if (sequenceType != DaFitConstants.ARG_TRANSMISSION_LAST) if (sequenceType != MoyoungConstants.ARG_TRANSMISSION_LAST)
queryMoreData(); queryMoreData();
else else
processAllData(); processAllData();
@ -137,7 +137,7 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
private void queryMoreData() { private void queryMoreData() {
try { try {
TransactionBuilder builder = performInitialized("TrainingFinishedDataOperation"); TransactionBuilder builder = performInitialized("TrainingFinishedDataOperation");
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_QUERY_LAST_DYNAMIC_RATE, new byte[0])); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_QUERY_LAST_DYNAMIC_RATE, new byte[0]));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -154,7 +154,7 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
dataBuffer.order(ByteOrder.LITTLE_ENDIAN); dataBuffer.order(ByteOrder.LITTLE_ENDIAN);
Calendar dateRecorded = Calendar.getInstance(); Calendar dateRecorded = Calendar.getInstance();
dateRecorded.setTime(DaFitConstants.WatchTimeToLocalTime(dataBuffer.getInt())); dateRecorded.setTime(MoyoungConstants.WatchTimeToLocalTime(dataBuffer.getInt()));
// NOTE: The first sample always matches dateRecorded (which is aligned to the minute) // NOTE: The first sample always matches dateRecorded (which is aligned to the minute)
// The last sample is saved at the moment the recording is stopped (and this code starts executing) // The last sample is saved at the moment the recording is stopped (and this code starts executing)
@ -163,7 +163,7 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
User user = DBHelper.getUser(dbHandler.getDaoSession()); User user = DBHelper.getUser(dbHandler.getDaoSession());
Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession()); Device device = DBHelper.getDevice(getDevice(), dbHandler.getDaoSession());
DaFitSampleProvider provider = new DaFitSampleProvider(getDevice(), dbHandler.getDaoSession()); MoyoungSampleProvider provider = new MoyoungSampleProvider(getDevice(), dbHandler.getDaoSession());
Log.i("START DATE", dateRecorded.getTime().toString()); Log.i("START DATE", dateRecorded.getTime().toString());
while (dataBuffer.hasRemaining()) while (dataBuffer.hasRemaining())
@ -174,14 +174,14 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
Log.i("MEASUREMENT", "at " + dateRecorded.getTime().toString() + " was " + measurement); Log.i("MEASUREMENT", "at " + dateRecorded.getTime().toString() + " was " + measurement);
DaFitActivitySample sample = new DaFitActivitySample(); MoyoungActivitySample sample = new MoyoungActivitySample();
sample.setDevice(device); sample.setDevice(device);
sample.setUser(user); sample.setUser(user);
sample.setProvider(provider); sample.setProvider(provider);
sample.setTimestamp((int)(dateRecorded.getTimeInMillis() / 1000)); sample.setTimestamp((int)(dateRecorded.getTimeInMillis() / 1000));
sample.setRawKind(DaFitSampleProvider.ACTIVITY_NOT_MEASURED); // Training type will be taken later from CMD_QUERY_MOVEMENT_HEART_RATE (it's not present in the main data packet) sample.setRawKind(MoyoungSampleProvider.ACTIVITY_NOT_MEASURED); // Training type will be taken later from CMD_QUERY_MOVEMENT_HEART_RATE (it's not present in the main data packet)
sample.setDataSource(DaFitSampleProvider.SOURCE_TRAINING_HEARTRATE); sample.setDataSource(MoyoungSampleProvider.SOURCE_TRAINING_HEARTRATE);
sample.setBatteryLevel(ActivitySample.NOT_MEASURED); sample.setBatteryLevel(ActivitySample.NOT_MEASURED);
sample.setSteps(ActivitySample.NOT_MEASURED); sample.setSteps(ActivitySample.NOT_MEASURED);
@ -206,7 +206,7 @@ public class TrainingFinishedDataOperation extends AbstractBTLEOperation<DaFitDe
try { try {
TransactionBuilder builder = performInitialized("TrainingFinishedDataOperation fetch training type"); TransactionBuilder builder = performInitialized("TrainingFinishedDataOperation fetch training type");
getSupport().sendPacket(builder, DaFitPacketOut.buildPacket(DaFitConstants.CMD_QUERY_MOVEMENT_HEART_RATE, new byte[] { })); getSupport().sendPacket(builder, MoyoungPacketOut.buildPacket(MoyoungConstants.CMD_QUERY_MOVEMENT_HEART_RATE, new byte[] { }));
builder.queue(getQueue()); builder.queue(getQueue());
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -2634,24 +2634,24 @@
<item>ru_RU</item> <item>ru_RU</item>
</string-array> </string-array>
<string-array name="pref_dafit_watch_face"> <string-array name="pref_moyoung_watch_face">
<item>Watch face 1</item> <item>Watch face 1</item>
<item>Watch face 2</item> <item>Watch face 2</item>
<item>Watch face 3</item> <item>Watch face 3</item>
</string-array> </string-array>
<string-array name="pref_dafit_watch_face_values"> <string-array name="pref_moyoung_watch_face_values">
<item>1</item> <item>1</item>
<item>2</item> <item>2</item>
<item>3</item> <item>3</item>
</string-array> </string-array>
<string-array name="pref_dafit_device_version"> <string-array name="pref_moyoung_device_version">
<item>Chinese edition</item> <item>Chinese edition</item>
<item>International edition</item> <item>International edition</item>
</string-array> </string-array>
<string-array name="pref_dafit_device_version_values"> <string-array name="pref_moyoung_device_version_values">
<item>0</item> <item>0</item>
<item>1</item> <item>1</item>
</string-array> </string-array>

View File

@ -1821,7 +1821,6 @@
<string name="devicetype_mijia_lywsd03">Mijia Temperature and Humidity Sensor 2</string> <string name="devicetype_mijia_lywsd03">Mijia Temperature and Humidity Sensor 2</string>
<string name="devicetype_mijia_xmwsdj04">Mijia Temperature and Humidity Sensor 2 (E-ink)</string> <string name="devicetype_mijia_xmwsdj04">Mijia Temperature and Humidity Sensor 2 (E-ink)</string>
<string name="devicetype_mijia_mho_c303">Mijia MHO-C303</string> <string name="devicetype_mijia_mho_c303">Mijia MHO-C303</string>
<string name="devicetype_dafit">Da Fit</string>
<string name="devicetype_makibes_hr3">Makibes HR3</string> <string name="devicetype_makibes_hr3">Makibes HR3</string>
<string name="devicetype_banglejs">Bangle.js</string> <string name="devicetype_banglejs">Bangle.js</string>
<string name="devicetype_tlw64">TLW64</string> <string name="devicetype_tlw64">TLW64</string>

View File

@ -2,9 +2,9 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference <ListPreference
android:defaultValue="1" android:defaultValue="1"
android:entries="@array/pref_dafit_device_version" android:entries="@array/pref_moyoung_device_version"
android:entryValues="@array/pref_dafit_device_version_values" android:entryValues="@array/pref_moyoung_device_version_values"
android:key="dafit_device_version" android:key="moyoung_device_version"
android:summary="%s" android:summary="%s"
android:title="@string/pref_device_version" /> android:title="@string/pref_device_version" />
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>

View File

@ -3,7 +3,7 @@
<ListPreference <ListPreference
android:icon="@drawable/ic_language" android:icon="@drawable/ic_language"
android:defaultValue="0" android:defaultValue="0"
android:key="dafit_language" android:key="moyoung_language"
android:summary="%s" android:summary="%s"
android:title="@string/pref_title_language" /> android:title="@string/pref_title_language" />
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>

View File

@ -3,9 +3,9 @@
<ListPreference <ListPreference
android:icon="@drawable/ic_widgets" android:icon="@drawable/ic_widgets"
android:defaultValue="1" android:defaultValue="1"
android:entries="@array/pref_dafit_watch_face" android:entries="@array/pref_moyoung_watch_face"
android:entryValues="@array/pref_dafit_watch_face_values" android:entryValues="@array/pref_moyoung_watch_face_values"
android:key="dafit_watch_face" android:key="moyoung_watch_face"
android:summary="%s" android:summary="%s"
android:title="@string/pref_watch_face" /> android:title="@string/pref_watch_face" />
</androidx.preference.PreferenceScreen> </androidx.preference.PreferenceScreen>