public void AddSensorReading(SensorReading s)
        {
            Sensor[] sensors = s.sensors;
            Study    study   = s.study;
            Subject  sub     = s.subject;
            Session  sess    = s.session;
            Trial    trial   = s.trial;

            // Append study/sub/sess/trial data
            logfile.Write(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", study.name, sub.id, sess.name, sess.tdate, trial.name, sess.sync1_on, sess.sync1_off, sess.sync2_on, sess.sync2_off));
            for (int i = 0; i < sensors.Length; i++)
            {
                if (sensors[i].active == 1)
                {
                    // Append sensor data whether sensor is active or not
                    logfile.Write(string.Format(",{0},{9},{1},{2:0.00},{3:0.00},{4:0.00},{5:0.00},{6:0.00},{7:0.00},{8}",
                                                i, sensors[i].button, sensors[i].x, sensors[i].y, sensors[i].z, sensors[i].pitch, sensors[i].roll, sensors[i].yaw, sensors[i].quality, sensors[i].time));
                }
                else
                {
                    // If the sensor wasn't active then append a blank filler
                    logfile.Write(",,,,,,,,,,");
                }
            }
            logfile.Write("\n");

            sensor_readings_collection.Insert(s);
        }
        public SensorReading GetRecord()
        {
            // Get the record and put it into a C# object for storage.
            IntPtr r      = GetSyncRecord();
            Record record = (Record)Marshal.PtrToStructure(r, typeof(Record));

            SensorReading sr = new SensorReading(recordnum, record);

            recordnum++;
            Boolean sync;

            if (sr.sensors[0].button == 0)
            {
                sync = false;
            }
            else
            {
                sync = true;
            }

            if (recordnum % 20 == 0 && sr != null)
            {
                m.sensorInfo.Invoke(new MainInterface.UpdateSensorInfoCallBack(m.UpdateSensorInfo),
                                    new object[] { sr.ToString() });

                m.qualityChart.Invoke(new MainInterface.UpdateQualityChartInfoCallBack(m.UpdateQualityChart),
                                      new object[] { sr.GetActiveSensors(), sr.GetQualityScores() });

                m.syncstatus.Invoke(new MainInterface.UpdateSyncInfoCallBack(m.UpdateSyncInfo),
                                    new object[] { sync });
            }

            return(sr);
        }
        public void RemoveSensorReading(SensorReading s)
        {
            var query = Query.And(
                Query.EQ("study._id", s.study._Id),
                Query.EQ("subject._id", s.subject._Id),
                Query.EQ("session._id", s.session._Id),
                Query.EQ("trial._id", s.trial._Id)
                );

            sensor_readings_collection.Remove(query);
        }
        public void AddSensorReading(SensorReading s)
        {
            Sensor[] sensors = s.sensors;
            Study study = s.study;
            Subject sub = s.subject;
            Session sess = s.session;
            Trial trial = s.trial;

            // Append study/sub/sess/trial data
            logfile.Write(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", study.name, sub.id, sess.name, sess.tdate, trial.name, sess.sync1_on, sess.sync1_off, sess.sync2_on, sess.sync2_off));
            for (int i = 0; i < sensors.Length; i++)
            {
                if (sensors[i].active == 1)
                {
                    // Append sensor data whether sensor is active or not
                    logfile.Write(string.Format(",{0},{9},{1},{2:0.00},{3:0.00},{4:0.00},{5:0.00},{6:0.00},{7:0.00},{8}",
                        i, sensors[i].button, sensors[i].x, sensors[i].y, sensors[i].z, sensors[i].pitch, sensors[i].roll, sensors[i].yaw, sensors[i].quality, sensors[i].time));
                }
                else
                {
                    // If the sensor wasn't active then append a blank filler
                    logfile.Write(",,,,,,,,,,");
                }
            }
            logfile.Write("\n");

            sensor_readings_collection.Insert(s);
        }
 public void RemoveSensorReading(SensorReading s)
 {
     var query = Query.And(
         Query.EQ("study._id", s.study._Id),
         Query.EQ("subject._id", s.subject._Id),
         Query.EQ("session._id", s.session._Id),
         Query.EQ("trial._id", s.trial._Id)
     );
     sensor_readings_collection.Remove(query);
 }
        public SensorReading GetRecord()
        {
            // Get the record and put it into a C# object for storage.
            IntPtr r = GetSyncRecord();
            Record record = (Record)Marshal.PtrToStructure(r, typeof(Record));

            SensorReading sr = new SensorReading(recordnum, record);
            recordnum++;
            Boolean sync;
            if (sr.sensors[0].button == 0)
            {
                sync = false;
            }
            else
            {
                sync = true;
            }

            if (recordnum % 20 == 0 && sr != null)
            {
                m.sensorInfo.Invoke(new MainInterface.UpdateSensorInfoCallBack(m.UpdateSensorInfo),
            new object[]{sr.ToString()});

                m.qualityChart.Invoke(new MainInterface.UpdateQualityChartInfoCallBack(m.UpdateQualityChart),
                    new object[] {sr.GetActiveSensors(), sr.GetQualityScores()});

                m.syncstatus.Invoke(new MainInterface.UpdateSyncInfoCallBack(m.UpdateSyncInfo),
                    new object[] { sync });
            }

            return sr;
        }