private void updateData(ShimmerData data)
 {
     Application.Current.Dispatcher.Invoke(() =>
     {
         mts.SData = data;
     });
 }
        public void HandleEvent(object sender, EventArgs args)
        {
            CustomEventArgs eventArgs = (CustomEventArgs)args;
            int             indicator = eventArgs.getIndicator();

            switch (indicator)
            {
            case (int)ShimmerBluetooth.ShimmerIdentifier.MSG_IDENTIFIER_STATE_CHANGE:
                int state = (int)eventArgs.getObject();
                if (state == (int)ShimmerBluetooth.SHIMMER_STATE_CONNECTED)
                {
                    updateMessage("device connected");
                }
                else if (state == (int)ShimmerBluetooth.SHIMMER_STATE_CONNECTING)
                {
                    updateMessage("connecting shimmer device");
                }
                else if (state == (int)ShimmerBluetooth.SHIMMER_STATE_NONE)
                {
                    updateMessage("device disconnected");
                }
                else if (state == (int)ShimmerBluetooth.SHIMMER_STATE_STREAMING)
                {
                    updateMessage("Streaming");
                }
                break;

            case (int)ShimmerBluetooth.ShimmerIdentifier.MSG_IDENTIFIER_NOTIFICATION_MESSAGE:
                break;

            case (int)ShimmerBluetooth.ShimmerIdentifier.MSG_IDENTIFIER_DATA_PACKET:
                ObjectCluster objectCluster = (ObjectCluster)eventArgs.getObject();

                if (FirstTime)
                {
                    IndexAccelX = objectCluster.GetIndex(Shimmer3Configuration.SignalNames.LOW_NOISE_ACCELEROMETER_X, ShimmerConfiguration.SignalFormats.CAL);
                    IndexAccelY = objectCluster.GetIndex(Shimmer3Configuration.SignalNames.LOW_NOISE_ACCELEROMETER_Y, ShimmerConfiguration.SignalFormats.CAL);
                    IndexAccelZ = objectCluster.GetIndex(Shimmer3Configuration.SignalNames.LOW_NOISE_ACCELEROMETER_Z, ShimmerConfiguration.SignalFormats.CAL);
                    IndexGSR    = objectCluster.GetIndex(Shimmer3Configuration.SignalNames.GSR, ShimmerConfiguration.SignalFormats.CAL);
                    IndexPPG    = objectCluster.GetIndex(Shimmer3Configuration.SignalNames.INTERNAL_ADC_A13, ShimmerConfiguration.SignalFormats.CAL);
                    FirstTime   = false;
                }

                // List<string> s= objectCluster.GetNames();
                // foreach (string st in s) {
                //      Debug.WriteLine(st);
                //  }
                SensorData datax   = objectCluster.GetData(IndexAccelX);
                SensorData datay   = objectCluster.GetData(IndexAccelY);
                SensorData dataz   = objectCluster.GetData(IndexAccelZ);
                SensorData dataGSR = objectCluster.GetData(IndexGSR);
                SensorData dataPPG = objectCluster.GetData(IndexPPG);
                //TimeSpan time = stopwatch.Elapsed;

                //double time = DateTime.Now.ToOADate();
                double time = mts.GetTime() - startTime;

                ShimmerData dataObj = new ShimmerData(mts.DoubleToTimeString(time), dataGSR.Data, dataPPG.Data, datax.Data, datay.Data, dataz.Data);
                //Debug.WriteLine(dataObj.Time);

                updateData(dataObj);
                break;
            }
        }