diff --git a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java index 63c8c9f1..8610cb47 100644 --- a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java +++ b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java @@ -34,7 +34,7 @@ public class GBDaoGenerator { private static final String VALID_BY_DATE = MODEL_PACKAGE + ".ValidByDate"; public static void main(String[] args) throws Exception { - Schema schema = new Schema(7, MAIN_PACKAGE + ".entities"); + Schema schema = new Schema(8, MAIN_PACKAGE + ".entities"); addActivityDescription(schema); @@ -46,6 +46,7 @@ public class GBDaoGenerator { addMiBandActivitySample(schema, user, device); addPebbleActivitySample(schema, user, device); + addPebbleMisfitActivitySample(schema, user, device); new DaoGenerator().generateAll(schema, "app/src/main/java"); } @@ -130,7 +131,9 @@ public class GBDaoGenerator { private static Entity addMiBandActivitySample(Schema schema, Entity user, Entity device) { // public GBActivitySample(SampleProvider provider, int timestamp, int intensity, int steps, int type, int customValue) { Entity activitySample = addEntity(schema, "MiBandActivitySample"); - addCommonActivitySampleProperties(schema, activitySample, user, device); + addCommonActivitySampleProperties("AbstractActivitySample", activitySample, user, device); + addDefaultActivitySampleAttributes(activitySample); + addCommonActivitySampleProperties2(activitySample, user, device); addHeartRateProperties(activitySample); return activitySample; } @@ -144,12 +147,22 @@ public class GBDaoGenerator { private static Entity addPebbleActivitySample(Schema schema, Entity user, Entity device) { // public GBActivitySample(SampleProvider provider, int timestamp, int intensity, int steps, int type, int customValue) { Entity activitySample = addEntity(schema, "PebbleActivitySample"); - addCommonActivitySampleProperties(schema, activitySample, user, device); + addCommonActivitySampleProperties("AbstractActivitySample", activitySample, user, device); + addDefaultActivitySampleAttributes(activitySample); + addCommonActivitySampleProperties2(activitySample, user, device); return activitySample; } - private static void addCommonActivitySampleProperties(Schema schema, Entity activitySample, Entity user, Entity device) { - activitySample.setSuperclass("AbstractActivitySample"); + private static Entity addPebbleMisfitActivitySample(Schema schema, Entity user, Entity device) { + Entity activitySample = addEntity(schema, "PebbleMisfitSample"); + addCommonActivitySampleProperties("AbstractPebbleMisfitActivitySample", activitySample, user, device); + activitySample.addIntProperty("rawPebbleMisfitSample").notNull(); + addCommonActivitySampleProperties2(activitySample, user, device); + return activitySample; + } + + private static void addCommonActivitySampleProperties(String superClass, Entity activitySample, Entity user, Entity device) { + activitySample.setSuperclass(superClass); activitySample.addImport(MODEL_PACKAGE + ".ActivitySample"); activitySample.addImport(MAIN_PACKAGE + ".devices.SampleProvider"); activitySample.implementsInterface("ActivitySample"); @@ -158,10 +171,10 @@ public class GBDaoGenerator { "intensity, are device specific. Normalized values can be retrieved through the\n" + "corresponding {@link SampleProvider}."); activitySample.addIdProperty(); + } + + private static void addCommonActivitySampleProperties2(Entity activitySample, Entity user, Entity device) { Property timestamp = activitySample.addIntProperty("timestamp").notNull().getProperty(); - activitySample.addIntProperty("rawIntensity").notNull(); - activitySample.addIntProperty("steps").notNull(); - activitySample.addIntProperty("rawKind").notNull(); Property userId = activitySample.addLongProperty("userId").getProperty(); activitySample.addToOne(user, userId); Property deviceId = activitySample.addLongProperty("deviceId").getProperty(); @@ -173,7 +186,13 @@ public class GBDaoGenerator { indexUnique.makeUnique(); activitySample.addIndex(indexUnique); } - + + private static void addDefaultActivitySampleAttributes(Entity activitySample) { + activitySample.addIntProperty("rawIntensity").notNull(); + activitySample.addIntProperty("steps").notNull(); + activitySample.addIntProperty("rawKind").notNull(); + } + private static Entity addEntity(Schema schema, String className) { Entity entity = schema.addEntity(className); entity.addImport("de.greenrobot.dao.AbstractDao"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/MisfitSampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/MisfitSampleProvider.java index 1fa44f8d..0156e18e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/MisfitSampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pebble/MisfitSampleProvider.java @@ -1,15 +1,18 @@ package nodomain.freeyourgadget.gadgetbridge.devices.pebble; +import java.util.List; + import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; +import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -public class MisfitSampleProvider extends AbstractPebbleSampleProvider { +public class MisfitSampleProvider implements SampleProvider { protected final float movementDivisor = 300f; public MisfitSampleProvider(GBDevice device, DaoSession session) { - super(device, session); + } @Override @@ -22,12 +25,55 @@ public class MisfitSampleProvider extends AbstractPebbleSampleProvider { return (byte) activityKind; } - @Override public float normalizeIntensity(int rawIntensity) { return rawIntensity / movementDivisor; } + @Override + public List getAllActivitySamples(int timestamp_from, int timestamp_to) { + return null; + } + + @Override + public List getActivitySamples(int timestamp_from, int timestamp_to) { + return null; + } + + @Override + public List getSleepSamples(int timestamp_from, int timestamp_to) { + return null; + } + + @Override + public void changeStoredSamplesType(int timestampFrom, int timestampTo, int kind) { + + } + + @Override + public void changeStoredSamplesType(int timestampFrom, int timestampTo, int fromKind, int toKind) { + + } + + @Override + public int fetchLatestTimestamp() { + return 0; + } + + @Override + public void addGBActivitySample(AbstractActivitySample activitySample) { + + } + + @Override + public void addGBActivitySamples(AbstractActivitySample[] activitySamples) { + + } + + @Override + public AbstractActivitySample createActivitySample() { + return null; + } @Override public int getID() { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySample.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySample.java index 24569d30..a7408420 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySample.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySample.java @@ -1,15 +1,6 @@ package nodomain.freeyourgadget.gadgetbridge.model; -import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; - -public interface ActivitySample extends TimeStamped { - /** - * Returns the provider of the data. - * - * @return who created the sample data - */ - SampleProvider getProvider(); - +public interface ActivitySample extends Sample { /** * Returns the raw activity kind value as recorded by the SampleProvider */ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/HeartRateSample.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/HeartRateSample.java index dcbb5be5..375a6679 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/HeartRateSample.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/HeartRateSample.java @@ -1,6 +1,6 @@ package nodomain.freeyourgadget.gadgetbridge.model; -public interface HeartRateSample extends TimeStamped { +public interface HeartRateSample extends Sample { /** * Returns the heart rate measured at the corresponding timestamp. * The value is returned in heart beats per minute, in the range from diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Sample.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Sample.java new file mode 100644 index 00000000..e6249552 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Sample.java @@ -0,0 +1,12 @@ +package nodomain.freeyourgadget.gadgetbridge.model; + +import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; + +public interface Sample extends TimeStamped { + /** + * Returns the provider of the data. + * + * @return who created the sample data + */ + SampleProvider getProvider(); +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java index 538a21b5..9a88dcc6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java @@ -13,15 +13,13 @@ import java.util.SimpleTimeZone; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.GBApplication; -import nodomain.freeyourgadget.gadgetbridge.GBException; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.MisfitSampleProvider; -import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.PebbleActivitySample; -import nodomain.freeyourgadget.gadgetbridge.impl.GBActivitySample; +import nodomain.freeyourgadget.gadgetbridge.entities.PebbleMisfitSample; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.util.Prefs; @@ -81,6 +79,7 @@ public class AppMessageHandlerMisfit extends AppMessageHandler { int totalSteps = 0; PebbleActivitySample[] activitySamples = new PebbleActivitySample[samples]; + PebbleMisfitSample[] misfitSamples = new PebbleMisfitSample[samples]; try (DBHandler db = GBApplication.acquireDB()) { MisfitSampleProvider sampleProvider = new MisfitSampleProvider(device, db.getDaoSession()); Long userId = DBHelper.getUser(db.getDaoSession()).getId(); @@ -115,8 +114,10 @@ public class AppMessageHandlerMisfit extends AppMessageHandler { totalSteps += steps; LOG.info("got steps for sample " + i + " : " + steps + "(" + Integer.toHexString(sample & 0xffff) + ")"); - activitySamples[i] = new PebbleActivitySample(null, timestamp + i * 60, intensity, steps, activityKind, userId, deviceId); - activitySamples[i].setProvider(sampleProvider); + //activitySamples[i] = new PebbleActivitySample(null, timestamp + i * 60, intensity, steps, activityKind, userId, deviceId); + //activitySamples[i].setProvider(sampleProvider); + misfitSamples[i] = new PebbleMisfitSample(null, sample & 0xffff, timestamp + i * 60, userId, deviceId); + misfitSamples[i].setProvider(sampleProvider); } LOG.info("total steps for above period: " + totalSteps);