diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/driver/Configuration.java b/ShimmerDriver/src/main/java/com/shimmerresearch/driver/Configuration.java index 8bf461b3..956da2f7 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/driver/Configuration.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/driver/Configuration.java @@ -1084,6 +1084,7 @@ public static class ObjectClusterSensorName{ public static String TIMESTAMP = SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP;//"Timestamp"; public static String REAL_TIME_CLOCK = SensorShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK;//"RealTime"; + public static String SHIMMER_CLOCK = SensorShimmerClock.ObjectClusterSensorName.SHIMMER_CLOCK;//"RealTime"; // public static String REAL_TIME_CLOCK_SYNC = TimeSyncModule.ObjectClusterSensorName.REAL_TIME_CLOCK_SYNC;//"RealTime_Sync"; // public static String TIMESTAMP_SYNC = TimeSyncModule.ObjectClusterSensorName.TIMESTAMP_SYNC;//"Timestamp_Sync"; public static String SYSTEM_TIMESTAMP = SensorSystemTimeStamp.ObjectClusterSensorName.SYSTEM_TIMESTAMP;//"System_Timestamp"; @@ -1727,6 +1728,7 @@ public static class CompatibilityInfoForMaps{ aMap.put(SensorSystemTimeStamp.ObjectClusterSensorName.SYSTEM_TIMESTAMP_PLOT, SensorShimmerClock.channelSystemTimestampPlot); aMap.put(SensorShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, SensorShimmerClock.channelRealTimeClock); + aMap.put(SensorShimmerClock.ObjectClusterSensorName.SHIMMER_CLOCK, SensorShimmerClock.channelShimmerClock3LSB); // aMap.put(ShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, ShimmerClock.channelRealTimeClockSync); aMap.put(SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET, SensorShimmerClock.channelShimmerClockOffset); // aMap.putAll(ShimmerClock.mChannelMapRef); @@ -1773,6 +1775,7 @@ public static class CompatibilityInfoForMaps{ aMap.put(SensorSystemTimeStamp.ObjectClusterSensorName.SYSTEM_TIMESTAMP_PLOT, SensorShimmerClock.channelSystemTimestampPlot); aMap.put(SensorShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, SensorShimmerClock.channelRealTimeClock); + aMap.put(SensorShimmerClock.ObjectClusterSensorName.SHIMMER_CLOCK, SensorShimmerClock.channelShimmerClock3LSB); // aMap.put(ShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, ShimmerClock.channelRealTimeClockSync); aMap.put(SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET, SensorShimmerClock.channelShimmerClockOffset); // aMap.putAll(ShimmerClock.mChannelMapRef); diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerObject.java b/ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerObject.java index cf852a79..481f9124 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerObject.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/driver/ShimmerObject.java @@ -2804,7 +2804,8 @@ else if (getHardwareVersion()==HW_ID.SHIMMER_2 || getHardwareVersion()==HW_ID.SH protected void parseTimestampShimmer3(COMMUNICATION_TYPE fwType, ObjectCluster objectCluster, double[] uncalibratedData, String[] uncalibratedDataUnits, double[] calibratedData, String[] calibratedDataUnits, String[] sensorNames, long[] newPacketInt) { int iTimeStamp=getSignalIndex(Configuration.Shimmer3.ObjectClusterSensorName.TIMESTAMP); //find index double shimmerTimestampTicks = (double)newPacketInt[iTimeStamp]; - + objectCluster.addDataToMap(Shimmer3.ObjectClusterSensorName.SHIMMER_CLOCK,CHANNEL_TYPE.UNCAL.toString(),CHANNEL_UNITS.CLOCK_UNIT,shimmerTimestampTicks); + objectCluster.addDataToMap(Shimmer3.ObjectClusterSensorName.SHIMMER_CLOCK,CHANNEL_TYPE.CAL.toString(),CHANNEL_UNITS.CLOCK_UNIT,shimmerTimestampTicks); if(mFirstTime && fwType==COMMUNICATION_TYPE.SD){ //this is to make sure the Raw starts from zero for SD data. See comment for mFirstTsOffsetFromInitialTsTicks. mFirstTsOffsetFromInitialTsTicks = shimmerTimestampTicks; @@ -2822,7 +2823,7 @@ protected void parseTimestampShimmer3(COMMUNICATION_TYPE fwType, ObjectCluster o double timestampUnwrappedTicks = unwrapTimeStamp(shimmerTimestampTicks); double timestampUnwrappedMilliSecs = timestampUnwrappedTicks/getRtcClockFreq()*1000; // to convert into mS - + incrementPacketsReceivedCounters(); calculateTrialPacketLoss(timestampUnwrappedMilliSecs); diff --git a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/SensorShimmerClock.java b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/SensorShimmerClock.java index ef9d5881..604703d6 100644 --- a/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/SensorShimmerClock.java +++ b/ShimmerDriver/src/main/java/com/shimmerresearch/sensors/SensorShimmerClock.java @@ -83,7 +83,7 @@ public static class ObjectClusterSensorName{ public static final String TIMESTAMP_DIFFERENCE = "Timestamp Difference"; public static final String REAL_TIME_CLOCK = "RealTime"; - + public static final String SHIMMER_CLOCK = "Clock 3_LSB"; public static final String TIMESTAMP_OFFSET = "Offset"; } @@ -93,6 +93,7 @@ public static class DatabaseChannelHandles{ public static final String OFFSET_TIMESTAMP = "OFFSET";//"Offset"; public static final String REAL_TIME_CLOCK = "Real_Time_Clock"; + public static final String SHIMMER_CLOCK = "Clock_3_LSB"; } public static final class DatabaseConfigHandle{ @@ -106,7 +107,8 @@ public static final class DatabaseConfigHandle{ Arrays.asList(SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP, SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_DIFFERENCE, SensorShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, - SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET + SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET, + SensorShimmerClock.ObjectClusterSensorName.SHIMMER_CLOCK )); { sensorShimmerClock.mIsApiSensor = true; // Even though TIMESTAMP channel is an API channel, there is no enabledSensor bit for it @@ -220,6 +222,17 @@ public static final class DatabaseConfigHandle{ channelRealTimeClock.mChannelSource = CHANNEL_SOURCE.API; } + public static final ChannelDetails channelShimmerClock3LSB = new ChannelDetails( + ObjectClusterSensorName.SHIMMER_CLOCK, + ObjectClusterSensorName.SHIMMER_CLOCK, + DatabaseChannelHandles.SHIMMER_CLOCK, + CHANNEL_UNITS.CLOCK_UNIT, + Arrays.asList(CHANNEL_TYPE.UNCAL ,CHANNEL_TYPE.CAL), false, true); + { + //TODO put into above constructor + channelRealTimeClock.mChannelSource = CHANNEL_SOURCE.API; + } + //TODO: Move to separate class public static final ChannelDetails channelBattPercentage = new ChannelDetails( Configuration.Shimmer3.ObjectClusterSensorName.BATT_PERCENTAGE, @@ -301,9 +314,8 @@ public void generateSensorMap() { channelMapRef.put(SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_DIFFERENCE, SensorShimmerClock.channelShimmerTsDiffernce); channelMapRef.put(SensorShimmerClock.ObjectClusterSensorName.TIMESTAMP_OFFSET, SensorShimmerClock.channelShimmerClockOffset); channelMapRef.put(SensorShimmerClock.ObjectClusterSensorName.REAL_TIME_CLOCK, SensorShimmerClock.channelRealTimeClock); - + channelMapRef.put(SensorShimmerClock.ObjectClusterSensorName.SHIMMER_CLOCK, SensorShimmerClock.channelShimmerClock3LSB); channelMapRef.put(SensorBattVoltage.ObjectClusterSensorName.BATT_PERCENTAGE, SensorShimmerClock.channelBattPercentage); - channelMapRef.put(ShimmerStreamingProperties.ObjectClusterSensorName.PACKET_RECEPTION_RATE_CURRENT, SensorShimmerClock.channelReceptionRateCurrent); channelMapRef.put(ShimmerStreamingProperties.ObjectClusterSensorName.PACKET_RECEPTION_RATE_OVERALL, SensorShimmerClock.channelReceptionRateTrial); }