mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: new step rate support
This commit is contained in:
@@ -58,7 +58,7 @@ public class GBDaoGenerator {
|
|||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
final Schema schema = new Schema(115, MAIN_PACKAGE + ".entities");
|
final Schema schema = new Schema(116, MAIN_PACKAGE + ".entities");
|
||||||
|
|
||||||
Entity userAttributes = addUserAttributes(schema);
|
Entity userAttributes = addUserAttributes(schema);
|
||||||
Entity user = addUserInfo(schema, userAttributes);
|
Entity user = addUserInfo(schema, userAttributes);
|
||||||
@@ -1673,6 +1673,8 @@ public class GBDaoGenerator {
|
|||||||
workoutSummary.addIntProperty("longestStreak").notNull();
|
workoutSummary.addIntProperty("longestStreak").notNull();
|
||||||
workoutSummary.addIntProperty("tripped").notNull();
|
workoutSummary.addIntProperty("tripped").notNull();
|
||||||
|
|
||||||
|
workoutSummary.addBooleanProperty("newSteps").notNull();
|
||||||
|
|
||||||
return workoutSummary;
|
return workoutSummary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package nodomain.freeyourgadget.gadgetbridge.database.schema;
|
||||||
|
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.database.DBUpdateScript;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiWorkoutSummarySampleDao;
|
||||||
|
|
||||||
|
public class GadgetbridgeUpdate_116 implements DBUpdateScript {
|
||||||
|
@Override
|
||||||
|
public void upgradeSchema(final SQLiteDatabase db) {
|
||||||
|
if (!DBHelper.existsColumn(HuaweiWorkoutSummarySampleDao.TABLENAME, HuaweiWorkoutSummarySampleDao.Properties.NewSteps.columnName, db)) {
|
||||||
|
final String statement = "ALTER TABLE " + HuaweiWorkoutSummarySampleDao.TABLENAME + " ADD COLUMN \""
|
||||||
|
+ HuaweiWorkoutSummarySampleDao.Properties.NewSteps.columnName + "\" INTEGER NOT NULL DEFAULT false;";
|
||||||
|
db.execSQL(statement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void downgradeSchema(SQLiteDatabase database) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-2
@@ -154,6 +154,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetN
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetOTAChangeLog;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetOTAChangeLog;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetSmartAlarmList;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetSmartAlarmList;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetWatchfaceParams;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetWatchfaceParams;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetWorkoutCapability;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetWorkoutTotalsRequest;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.GetWorkoutTotalsRequest;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendCameraRemoteSetupEvent;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendCameraRemoteSetupEvent;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendDeviceReportThreshold;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests.SendDeviceReportThreshold;
|
||||||
@@ -888,7 +889,7 @@ public class HuaweiSupportProvider {
|
|||||||
initRequestQueue.add(new GetContactsCount(this));
|
initRequestQueue.add(new GetContactsCount(this));
|
||||||
initRequestQueue.add(new SendOTASetAutoUpdate(this));
|
initRequestQueue.add(new SendOTASetAutoUpdate(this));
|
||||||
initRequestQueue.add(new GetOTAChangeLog(this));
|
initRequestQueue.add(new GetOTAChangeLog(this));
|
||||||
//initRequestQueue.add(new GetWorkoutCapability(this)); // TODO: in current stage I don't understand how to parse new steps.
|
initRequestQueue.add(new GetWorkoutCapability(this));
|
||||||
initRequestQueue.add(new GetEventAlarmList(this));
|
initRequestQueue.add(new GetEventAlarmList(this));
|
||||||
initRequestQueue.add(new GetSmartAlarmList(this));
|
initRequestQueue.add(new GetSmartAlarmList(this));
|
||||||
|
|
||||||
@@ -1956,7 +1957,8 @@ public class HuaweiSupportProvider {
|
|||||||
packet.algType,
|
packet.algType,
|
||||||
packet.trainingPoints,
|
packet.trainingPoints,
|
||||||
packet.longestStreak,
|
packet.longestStreak,
|
||||||
packet.tripped
|
packet.tripped,
|
||||||
|
getHuaweiCoordinator().isSupportsWorkoutNewSteps()
|
||||||
);
|
);
|
||||||
|
|
||||||
db.getDaoSession().getHuaweiWorkoutSummarySampleDao().insertOrReplace(summarySample);
|
db.getDaoSession().getHuaweiWorkoutSummarySampleDao().insertOrReplace(summarySample);
|
||||||
|
|||||||
+15
-14
@@ -620,8 +620,6 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
|||||||
int maxSpeed = Integer.MIN_VALUE;
|
int maxSpeed = Integer.MIN_VALUE;
|
||||||
int speed = 0;
|
int speed = 0;
|
||||||
int speedCount = 0;
|
int speedCount = 0;
|
||||||
boolean stepRatePresent = false;
|
|
||||||
int stepRate = 0;
|
|
||||||
int avgStepRate = 0;
|
int avgStepRate = 0;
|
||||||
int cadence = 0;
|
int cadence = 0;
|
||||||
int cadenceCount = 0;
|
int cadenceCount = 0;
|
||||||
@@ -712,14 +710,17 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
|||||||
maxSpeed = dataSample.getSpeed();
|
maxSpeed = dataSample.getSpeed();
|
||||||
ac.setSpeed(dataSample.getSpeed() / 10.0f);
|
ac.setSpeed(dataSample.getSpeed() / 10.0f);
|
||||||
}
|
}
|
||||||
if (dataSample.getStepRate() != -1) {
|
//TODO: currently only for walking but I suppose it can be used for all workouts
|
||||||
stepRate += dataSample.getStepRate();
|
if(summary.getNewSteps() && (type == ActivityKind.WALKING || type == ActivityKind.OUTDOOR_WALKING)) {
|
||||||
stepRatePresent = true;
|
if (dataSample.getStepRate() != -1) {
|
||||||
}
|
ac.setCadence(dataSample.getStepRate());
|
||||||
if (dataSample.getCadence() != -1) {
|
}
|
||||||
cadence += dataSample.getCadence();
|
} else {
|
||||||
cadenceCount += 1;
|
if (dataSample.getCadence() != -1) {
|
||||||
ac.setCadence(dataSample.getCadence());
|
cadence += dataSample.getCadence();
|
||||||
|
cadenceCount += 1;
|
||||||
|
ac.setCadence(dataSample.getCadence());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dataSample.getStepLength() != -1) {
|
if (dataSample.getStepLength() != -1) {
|
||||||
stepLength += dataSample.getStepLength();
|
stepLength += dataSample.getStepLength();
|
||||||
@@ -846,11 +847,11 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
|||||||
|
|
||||||
// Average the things that should be averaged
|
// Average the things that should be averaged
|
||||||
if (speedCount > 0)
|
if (speedCount > 0)
|
||||||
speed = speed / speedCount;
|
speed = (int)((float)speed / speedCount);
|
||||||
if (cadenceCount > 0)
|
if (cadenceCount > 0)
|
||||||
cadence = cadence / cadenceCount;
|
cadence = cadence / cadenceCount;
|
||||||
if (summary.getDuration() > 60)
|
|
||||||
avgStepRate = stepRate / (summary.getDuration() / 60); // steps per minute
|
avgStepRate = (int)((summary.getStepCount() / ((float)dataSamples.size() * (float)dataDelta)) * 60.0f); // steps per minute
|
||||||
if (stepLengthCount > 0)
|
if (stepLengthCount > 0)
|
||||||
stepLength = stepLength / stepLengthCount;
|
stepLength = stepLength / stepLengthCount;
|
||||||
if (groundContactTimeCount > 0)
|
if (groundContactTimeCount > 0)
|
||||||
@@ -877,7 +878,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
|
|||||||
summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stepRatePresent) {
|
if (avgStepRate > 0) {
|
||||||
summaryData.add(ActivitySummaryEntries.STEP_RATE_AVG, avgStepRate, ActivitySummaryEntries.UNIT_SPM);
|
summaryData.add(ActivitySummaryEntries.STEP_RATE_AVG, avgStepRate, ActivitySummaryEntries.UNIT_SPM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user