@@ -841,6 +841,11 @@ public ObjectCluster buildMsg(byte[] newPacket, COMMUNICATION_TYPE fwType, boole
841841 numAdditionalChannels += 1 ;
842842 }
843843 else {
844+ if (fwType == COMMUNICATION_TYPE .SD && getHardwareVersion ()==HW_ID .SHIMMER_3R ) {
845+ //plus 1 because of: timestamp, because we are no longer relying on interpretdatapacketformat within ShimmerSDLog
846+ numAdditionalChannels += 1 ;
847+ }
848+
844849 if (!isRtcDifferenceSet ()){
845850 //sd log time stamp already included in mnChannels
846851 }
@@ -1101,7 +1106,8 @@ else if (isShimmerGen3()) {
11011106// }
11021107 }
11031108 }
1104- if ((fwType == COMMUNICATION_TYPE .BLUETOOTH ) && (mEnabledSensors & BTStream .ACCEL_ALT ) > 0 ) {
1109+ if (((fwType == COMMUNICATION_TYPE .BLUETOOTH ) && (mEnabledSensors & BTStream .ACCEL_ALT ) > 0 )
1110+ || ((fwType == COMMUNICATION_TYPE .SD ) && (mEnabledSensors & SDLogHeader .ACCEL_MPU ) > 0 )) {
11051111 int iAccelX =getSignalIndex (Shimmer3 .ObjectClusterSensorName .ACCEL_HIGHG_X ); //find index
11061112 int iAccelY =getSignalIndex (Shimmer3 .ObjectClusterSensorName .ACCEL_HIGHG_Y ); //find index
11071113 int iAccelZ =getSignalIndex (Shimmer3 .ObjectClusterSensorName .ACCEL_HIGHG_Z ); //find index
@@ -1142,8 +1148,8 @@ else if (isShimmerGen3()) {
11421148 accelerometer .z =altAccelCalibratedData [2 ];
11431149 }
11441150 }
1145- if ((fwType == COMMUNICATION_TYPE .BLUETOOTH ) && (mEnabledSensors & BTStream .MAG_ALT ) > 0 ) {
1146-
1151+ if ((( fwType == COMMUNICATION_TYPE .BLUETOOTH ) && (mEnabledSensors & BTStream .MAG_ALT ) > 0 )
1152+ || (( fwType == COMMUNICATION_TYPE . SD ) && ( mEnabledSensors & SDLogHeader . MAG_MPU ) > 0 )) {
11471153 int iMagX =getSignalIndex (Shimmer3 .ObjectClusterSensorName .MAG_WR_X );
11481154 int iMagY =getSignalIndex (Shimmer3 .ObjectClusterSensorName .MAG_WR_Y );
11491155 int iMagZ =getSignalIndex (Shimmer3 .ObjectClusterSensorName .MAG_WR_Z );
@@ -2921,23 +2927,47 @@ protected int getSignalIndex(String signalName) {
29212927 public void interpretDataPacketFormat (int numChannels , byte [] signalId ){
29222928 String [] signalNameArray =new String [MAX_NUMBER_OF_SIGNALS ];
29232929 String [] signalDataTypeArray =new String [MAX_NUMBER_OF_SIGNALS ];
2930+ int packetSize =mTimeStampPacketByteSize ; // Time stamp
2931+
2932+ int iTS =0 ;
2933+
2934+ if (getHardwareVersion ()==HW_ID .SHIMMER_3R && this .getClass ().getSimpleName ().equals ("ShimmerSDLog" ) ) {
2935+ mNChannels = numChannels ;
2936+ if (isSyncWhenLogging ()
2937+ && (getFirmwareIdentifier ()==FW_ID .SDLOG || getFirmwareIdentifier ()==FW_ID .GQ_802154
2938+ ||(UtilShimmer .compareVersions (getShimmerVerObject (),Configuration .Shimmer3 .CompatibilityInfoForMaps .svoShimmer3LogAndStreamWithSDLogSyncSupport ))
2939+ ||(UtilShimmer .compareVersions (getShimmerVerObject (),Configuration .Shimmer3 .CompatibilityInfoForMaps .svoShimmer3RLogAndStreamWithSDLogSyncSupport )))){
2940+ signalNameArray [iTS ]=SensorShimmerClock .ObjectClusterSensorName .TIMESTAMP_OFFSET ;
2941+ if (OFFSET_LENGTH ==5 ){
2942+ signalDataTypeArray [iTS ]="u32signed" ;
2943+ mNChannels += 1 ;
2944+ packetSize +=5 ;
2945+ } else if (OFFSET_LENGTH ==9 ){
2946+ signalDataTypeArray [iTS ]="u72" ;
2947+ mNChannels += 1 ;
2948+ packetSize +=9 ;
2949+ }
2950+ iTS ++;
2951+ }
2952+ }
2953+
29242954
29252955 if (getHardwareVersion ()==HW_ID .SHIMMER_SR30 || getHardwareVersion ()==HW_ID .SHIMMER_3 || getHardwareVersion () == HW_ID .SHIMMER_3R ){
2926- signalNameArray [0 ]=Configuration .Shimmer3 .ObjectClusterSensorName .TIMESTAMP ;
2956+ signalNameArray [iTS ]=Configuration .Shimmer3 .ObjectClusterSensorName .TIMESTAMP ;
29272957 }
29282958 else {
2929- signalNameArray [0 ]=Configuration .Shimmer2 .ObjectClusterSensorName .TIMESTAMP ;
2959+ signalNameArray [iTS ]=Configuration .Shimmer2 .ObjectClusterSensorName .TIMESTAMP ;
29302960 }
29312961
2932- int packetSize = mTimeStampPacketByteSize ; // Time stamp
2962+
29332963 if (mTimeStampPacketByteSize ==2 ){
2934- signalDataTypeArray [0 ]="u16" ;
2964+ signalDataTypeArray [iTS ]="u16" ;
29352965 } else if (mTimeStampPacketByteSize ==3 ) {
2936- signalDataTypeArray [0 ]="u24" ;
2966+ signalDataTypeArray [iTS ]="u24" ;
29372967 }
29382968
29392969 int enabledSensors = 0x00 ;
2940- for (int i =0 ;i <numChannels ;i ++) {
2970+ for (int i =iTS ;i <numChannels + iTS ;i ++) {
29412971 if ((byte )signalId [i ]==(byte )0x00 ){
29422972 if (getHardwareVersion ()==HW_ID .SHIMMER_SR30 || getHardwareVersion ()==HW_ID .SHIMMER_3 || getHardwareVersion ()==HW_ID .SHIMMER_3R ){
29432973 signalNameArray [i +1 ]=Shimmer3 .ObjectClusterSensorName .ACCEL_LN_X ;
@@ -3940,7 +3970,7 @@ else if (getHardwareVersion()==HW_ID.SHIMMER_3R) {
39403970 setLIS2DW12DigitalAccelRate (((int )(mConfigByte0 & 0xF0 ))>>4 );
39413971
39423972 setLowPowerAccelWR ((getLIS2DW12DigitalAccelRate ()==1 )? true :false );
3943- setMPU9150GyroAccelRate (((int )(mConfigByte0 & 65280 ))>>8 );
3973+ setLSM6DSVGyroAccelRate (((int )(mConfigByte0 & 65280 ))>>8 );
39443974 checkLowPowerGyro ();
39453975
39463976 int magSamplingRate = (int )((mConfigByte0 >> 18 ) & 0x07 );
@@ -6576,7 +6606,15 @@ public byte[] generateCalParamLSM303DLHCMag(){
65766606 public void parseCalibParamFromPacketAccelLsm (byte [] bufferCalibrationParameters , CALIB_READ_SOURCE calibReadSource ) {
65776607 getCurrentCalibDetailsAccelWr ().parseCalParamByteArray (bufferCalibrationParameters , calibReadSource );
65786608 }
6609+
6610+ public void getCurrentCalibDetailsAccelAlt (byte [] bufferCalibrationParameters , CALIB_READ_SOURCE calibReadSource ) {
6611+ getCurrentCalibDetailsAccelAlt ().parseCalParamByteArray (bufferCalibrationParameters , calibReadSource );
6612+ }
65796613
6614+ public void getCurrentCalibDetailsMagWr (byte [] bufferCalibrationParameters , CALIB_READ_SOURCE calibReadSource ) {
6615+ getCurrentCalibDetailsMagWr ().parseCalParamByteArray (bufferCalibrationParameters , calibReadSource );
6616+ }
6617+
65806618 public void parseCalibParamFromPacketMag (byte [] bufferCalibrationParameters , CALIB_READ_SOURCE calibReadSource ) {
65816619 getCurrentCalibDetailsMag ().parseCalParamByteArray (bufferCalibrationParameters , calibReadSource );
65826620 }
@@ -8441,6 +8479,14 @@ public void setAccelRange(int i){
84418479 setDigitalAccelRange (i );
84428480 }
84438481
8482+ public void setDigitalAccelRate (int i ) {
8483+ if (isShimmerGen3 ()) {
8484+ mSensorLSM303 .setLSM303DigitalAccelRate (i );
8485+ } else if (isShimmerGen3R ()) {
8486+ mSensorLIS2DW12 .setLIS2DW12DigitalAccelRate (i );
8487+ }
8488+ }
8489+
84448490 public void setDigitalAccelRange (int i ){
84458491 if (isShimmerGen2 ()) {
84468492 mSensorMMA736x .setAccelRange (i );
@@ -8466,14 +8512,19 @@ public void setLIS2DW12DigitalAccelRate(int mLIS2DW12DigitalAccelRate) {
84668512 }
84678513 }
84688514
8469- /** Use setLSM303MagRange() instead
8515+
8516+ public void setMagRange (int i ){
8517+ if (isShimmerGen3 ()) {
8518+ mSensorLSM303 .setLSM303MagRange (i );
8519+ } else if (isShimmerGen3R ()) {
8520+ mSensorLIS3MDL .setLISMagRange (i );
8521+ }
8522+ }
8523+
8524+ /** Use setMagRange() instead
84708525 * @param i
84718526 */
84728527 @ Deprecated
8473- public void setMagRange (int i ){
8474- setLSM303MagRange (i );
8475- }
8476-
84778528 public void setLSM303MagRange (int i ){
84788529 if (isShimmerGen3 ()) {
84798530 mSensorLSM303 .setLSM303MagRange (i );
0 commit comments