Example #1
0
        public TickRecord(byte[] data, IDictionary <uint, DateTime> epochTimes) : this()
        {
            Debug.Assert(data != null);
            Debug.Assert(epochTimes != null);

            RawTickRecord rawTickRecord = Utility.BytesToStruct <RawTickRecord>(data);

            // Eitan, here we need to save the LemondTickRecord into a Database
            PopulateWithTickRecord(rawTickRecord, epochTimes);
        }
Example #2
0
        // Returns tick data size (excluding the header)
        public void PopulateWithTickRecord(RawTickRecord rawTickRecord, IDictionary <uint, DateTime> epochTimes)
        {
            int rawTickRecordSize = Marshal.SizeOf <RawTickRecord>();

            Debug.Assert(rawTickRecordSize == 13, "Tick Record Size Error");

            ulong tickData = rawTickRecord.Tick;

            EventSpecificFlags = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.EVENT_DATA_FLAGS_OFFSET, TickTypes.EVENT_DATA_FLAGS_LEN);
            TickEventType      = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_RECORD_TYPE_OFFSET, TickTypes.TICK_DATA_RECORD_TYPE_LEN);

            // Activity Data
            switch (TickEventType)
            {
            case 0x00:
                IsPossibleBandRemoved  = Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_BAND_REMOVED_OFFSET, TickTypes.TICK_DATA_BAND_REMOVED_LEN) != 0;
                IsBatteryCharging      = Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_BATTERY_CHARGING_OFFSET, TickTypes.TICK_DATA_BATTERY_CHARGING_LEN) != 0;
                TickEventType          = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_RECORD_TYPE_OFFSET, TickTypes.TICK_DATA_RECORD_TYPE_LEN);
                PostProcessedStepCount = (int)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_POST_PROCESSED_STEP_COUNT_OFFSET, TickTypes.TICK_DATA_POST_PROCESSED_STEP_COUNT_LEN);
                DistanceInMeters       = Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_DISTANCE_IN_METERS_OFFSET, TickTypes.TICK_DATA_DISTANCE_IN_METERS_LEN);
                ActiveTimeInSeconds    = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_ACTIVE_TIME_IN_SECONDS_OFFSET, TickTypes.TICK_DATA_ACTIVE_TIME_IN_SECONDS_LEN);
                LocomotionMET0         = Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_LOCOMOTION_MET0_OFFSET, TickTypes.TICK_DATA_LOCOMOTION_MET0_LEN);
                LocomotionMET1         = Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_LOCOMOTION_MET1_OFFSET, TickTypes.TICK_DATA_LOCOMOTION_MET1_LEN);
                SleepStage0            = (SleepStage)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_SLEEP_STAGE0_OFFSET, TickTypes.TICK_DATA_SLEEP_STAGE0_LEN);
                SleepStage1            = (SleepStage)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_SLEEP_STAGE1_OFFSET, TickTypes.TICK_DATA_SLEEP_STAGE1_LEN);
                MeanHeartRate          = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.TICK_DATA_MEAN_HEART_RATE_OFFSET, TickTypes.TICK_DATA_MEAN_HEART_RATE_LEN);
                break;

            case 0x01:
                EventType = (byte)Utility.GetULongBitfieldData(tickData, TickTypes.EVENT_DATA_TYPE_OFFSET, TickTypes.EVENT_DATA_TYPE_LEN);
                break;

            case 0x02:
                break;
            }

            DurationInSeconds = rawTickRecord.DurationInSeconds;
            RawTickRecord     = Utility.StructToBytes(rawTickRecord);

            Key = -1;
            uint epochKey = rawTickRecord.Timestamp.EpochId;

            if (epochTimes != null & epochTimes.Any() && epochTimes.ContainsKey(epochKey))
            {
                TickEndDate   = epochTimes[epochKey].AddSeconds(rawTickRecord.Timestamp.SecondsSinceEpoch);
                TickStartDate = TickEndDate.Subtract(new TimeSpan(0, 0, 0, rawTickRecord.DurationInSeconds));

                Key = TickStartDate.ToUnixTime();
            }
            else
            {
                Debug.Assert(Key == -1, "Key Error");
            }
        }
Example #3
0
 public TickRecord(RawTickRecord rawTickRecord, IDictionary <uint, DateTime> epochTimes)
 {
     // Eitan, here we need to save the LemondTickRecord into a Database
     PopulateWithTickRecord(rawTickRecord, epochTimes);
 }