private static void Write(object sender, MesgEventArgs e) { _logger.Verbose($"{e.mesg.Name}::"); foreach (var f in e.mesg.Fields) { _logger.Verbose($"{f.Name}::{f.GetValue()}"); } try { var dev = (DeveloperDataIdMesg)e.mesg; _logger.Verbose($"FOUND DEV FIELD - {dev.Name} {dev.Num}"); foreach (DeveloperField devField in dev.DeveloperFields) { var name = devField.Name; var value = devField.GetValue(); var units = devField.GetUnits(); var isResistance = devField.NativeOverride == RecordMesg.FieldDefNum.Resistance; _logger.Verbose($"DevFields: {name} {value} {units} isResistance:{isResistance}"); } foreach (Field devField in dev.Fields) { var name = devField.Name; var value = devField.GetValue(); var units = devField.GetUnits(); _logger.Verbose($"Fields: {name} {value} {units}"); } } catch { } }
void OnMesg(object sender, MesgEventArgs e) { logger.Trace("OnMesg: Received Mesg with global ID#{0}, its name is {1}", e.mesg.Num, e.mesg.Name); var msg = new Mesg(e.mesg.Name, e.mesg.Num); for (byte i = 0; i < e.mesg.GetNumFields(); i++) { var field = e.mesg.fields[i]; var f = new Field(field.Name, field.Num, field.Type, field.Scale, field.Offset, field.Units); for (int j = 0; j < e.mesg.fields[i].GetNumValues(); j++) { logger.Trace("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3} (raw value {5})", i, j, e.mesg.fields[i].GetName(), e.mesg.fields[i].GetValue(j), e.mesg.fields[i].Num, e.mesg.fields[i].GetRawValue(j)); f.SetValue(j, field.GetValue(j)); } msg.SetField(field); } Encoder.Write(msg); if (mesgCounts.ContainsKey(e.mesg.Num) == true) { mesgCounts[e.mesg.Num]++; } else { mesgCounts.Add(e.mesg.Num, 1); } }
public static void OnEventMesg(object sender, MesgEventArgs e) { EventValues values = new EventValues(); EventMesg mesg = (EventMesg)e.mesg; try { values._event0 = mesg.GetEvent(); values._eventType = mesg.GetEventType(); values._data = mesg.GetData(); ////Make sure properties with sub properties arent null before trying to create objects based on them if (mesg.GetTimestamp() != null) { uint tc = (uint)mesg.GetTimestamp().GetTimeStamp(); values._timestamp = FitConvert.ToLocalDateTime(tc); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } DataManager.Instance.EventValues.Add(values); }
public static void OnActivityMesg(object sender, MesgEventArgs e) { ActivityValues values = new ActivityValues(); ActivityMesg mesg = (ActivityMesg)e.mesg; try { values._totalTimerTime = mesg.GetTotalTimerTime(); values._numSessions = mesg.GetNumSessions(); values._type = mesg.GetType(); values._actiEvent = mesg.GetEvent(); values._eventType = mesg.GetEventType(); uint?localTimeStamp = mesg.GetLocalTimestamp(); if (localTimeStamp != null) { values._localTimestamp = FitConvert.ToDateTime(((uint)localTimeStamp)); } //Make sure properties with sub properties arent null before trying to create objects based on them if (mesg.GetTimestamp() != null) { //values.timestamp = new Dynastream.Fit.DateTime(mesg.GetTimestamp().GetTimeStamp()); uint tc = (uint)mesg.GetTimestamp().GetTimeStamp(); values._timestamp = FitConvert.ToLocalDateTime(mesg.GetTimestamp().GetTimeStamp()); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } DataManager.Instance.ActivityValues.Add(values); }
public static void OnFieldDescriptionMesg(object sender, MesgEventArgs e) { FieldDescriptionValues values = new FieldDescriptionValues(); FieldDescriptionMesg mesg = (FieldDescriptionMesg)e.mesg; try { values._developerDataIndex = mesg.GetDeveloperDataIndex(); values._fieldDefinitionNumber = mesg.GetFieldDefinitionNumber(); values._fitBaseTypeId = mesg.GetFitBaseTypeId(); int num3 = mesg.GetNumFieldValues(3); values._fieldName = new string[num3]; values._units = new string[num3]; for (int i = 0; i < num3; i++) { values._fieldName[i] = (mesg.GetFieldNameAsString(i)); values._units[i] = (mesg.GetUnitsAsString(i)); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } DataManager.Instance.FieldDescriptionValues.Add(values); }
public static void OnFileIDMesg(object sender, MesgEventArgs e) { FileIdValues values = new FileIdValues(); FileIdMesg mesg = (FileIdMesg)e.mesg; try { values._fileType = mesg.GetType(); values._manufacturer = mesg.GetManufacturer(); values._product = mesg.GetProduct(); values._serialNumber = mesg.GetSerialNumber(); //Make sure properties with sub properties arent null before trying to create objects based on them if (mesg.GetTimeCreated() != null) { uint tc = (uint)mesg.GetFieldValue("TimeCreated"); values._timeCreated = FitConvert.ToLocalDateTime(tc); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } DataManager.Instance.FileIdValues.Add(values); }
static void OnFileIDMesg(object sender, MesgEventArgs e) { Console.WriteLine("FileIdHandler: Received {1} Mesg with global ID#{0}", e.mesg.Num, e.mesg.Name); FileIdMesg myFileId = (FileIdMesg)e.mesg; try { Console.WriteLine("\tType: {0}", myFileId.GetType()); Console.WriteLine("\tManufacturer: {0}", myFileId.GetManufacturer()); Console.WriteLine("\tProduct: {0}", myFileId.GetProduct()); Console.WriteLine("\tSerialNumber {0}", myFileId.GetSerialNumber()); Console.WriteLine("\tNumber {0}", myFileId.GetNumber()); Console.WriteLine("\tTimeCreated {0}", myFileId.GetTimeCreated()); //Make sure properties with sub properties arent null before trying to create objects based on them if (myFileId.GetTimeCreated() != null) { Dynastream.Fit.DateTime dtTime = new Dynastream.Fit.DateTime(myFileId.GetTimeCreated().GetTimeStamp()); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } }
static void OnUserProfileMesg(object sender, MesgEventArgs e) { Console.WriteLine("UserProfileHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); UserProfileMesg myUserProfile = (UserProfileMesg)e.mesg; string friendlyName; try { try { friendlyName = myUserProfile.GetFriendlyNameAsString(); } catch (ArgumentNullException) { //There is no FriendlyName property friendlyName = ""; } Console.WriteLine("\tFriendlyName \"{0}\"", friendlyName); Console.WriteLine("\tGender {0}", myUserProfile.GetGender().ToString()); Console.WriteLine("\tAge {0}", myUserProfile.GetAge()); Console.WriteLine("\tWeight {0}", myUserProfile.GetWeight()); } catch (FitException exception) { Console.WriteLine("\tOnUserProfileMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } }
static void OnMonitoringMessage(object sender, MesgEventArgs e) { Console.WriteLine("MonitoringHandler: Received {1} Mesg, it has global ID#{0}", e.mesg.Num, e.mesg.Name); MonitoringMesg myMonitoringMessage = (MonitoringMesg)e.mesg; try { Console.WriteLine("\tTimestamp {0}", myMonitoringMessage.GetTimestamp()); Console.WriteLine("\tActivityType {0}", myMonitoringMessage.GetActivityType()); switch (myMonitoringMessage.GetActivityType()) // Cycles is a dynamic field { case ActivityType.Walking: case ActivityType.Running: Console.WriteLine("\tSteps {0}", myMonitoringMessage.GetSteps()); break; case ActivityType.Cycling: case ActivityType.Swimming: Console.WriteLine("\tStrokes {0}", myMonitoringMessage.GetStrokes()); break; default: Console.WriteLine("\tCycles {0}", myMonitoringMessage.GetCycles()); break; } } catch (FitException exception) { Console.WriteLine("\tOnDeviceInfoMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } }
public static void OnDeviceInfoMesg(object sender, MesgEventArgs e) { DeviceInfoValues values = new DeviceInfoValues(); DeviceInfoMesg mesg = (DeviceInfoMesg)e.mesg; try { values._deviceIndex = mesg.GetDeviceIndex(); values._deviceType = mesg.GetDeviceType(); values._manufacturer = mesg.GetManufacturer(); values._serialNumber = mesg.GetSerialNumber(); values._product = mesg.GetProduct(); values._softwareVersion = mesg.GetSoftwareVersion(); values._batteryVoltage = mesg.GetBatteryVoltage(); values._batteryStatus = mesg.GetBatteryStatus(); values._descriptor = mesg.GetDescriptorAsString(); values._antDeviceNumber = mesg.GetAntDeviceNumber(); values._sourceType = mesg.GetSourceType(); values._productName = mesg.GetProductNameAsString(); //Make sure properties with sub properties arent null before trying to create objects based on them if (mesg.GetTimestamp() != null) { //values.timestamp = new Dynastream.Fit.DateTime(mesg.GetTimestamp().GetTimeStamp()); uint tc = (uint)mesg.GetTimestamp().GetTimeStamp(); values._timestamp = FitConvert.ToLocalDateTime(tc); } } catch (FitException exception) { Console.WriteLine("\tOnFileIDMesg Error {0}", exception.Message); Console.WriteLine("\t{0}", exception.InnerException); } DataManager.Instance.DeviceInfoValues.Add(values); }
public void OnFileIdMesg(object sender, MesgEventArgs e) { Messages.FileId = (FileIdMesg)e.mesg; if ((e.mesg as FileIdMesg).GetType() != fileType) { throw new FileTypeException($"Expected FIT File Type: {fileType}, recieved File Type: {(e.mesg as FileIdMesg).GetType()}"); } }
private static void Write(object sender, MesgEventArgs e) { Log.Verbose($"{e.mesg.Name}::"); foreach (var f in e.mesg.Fields) { Log.Verbose($"{f.Name}::{f.GetValue()}"); } }
//called once per data message recieved by the main reader public static void OnRecordMessage(object sender, MesgEventArgs e) { //init the message to be given to the decoder var recordMessage = (RecordMesg)e.mesg; //call the decoder on the message - we're looking for power, cadence, speed, alt, distance, time int power_value = ReturnFieldValue(recordMessage, RecordMesg.FieldDefNum.Power); int cadence_value = ReturnFieldValue(recordMessage, RecordMesg.FieldDefNum.Cadence); double speed_value = ReturnFieldValueDouble(recordMessage, RecordMesg.FieldDefNum.Speed) * 3.6; //converting m/s to km/h because m/s is useless info double alt_value = ReturnFieldValueDouble(recordMessage, RecordMesg.FieldDefNum.Altitude); double distance_value = ReturnFieldValueDouble(recordMessage, RecordMesg.FieldDefNum.Distance); int time_value = ReturnFieldValue(recordMessage, RecordMesg.FieldDefNum.Timestamp); //add the given data values to their corresponding lists Power.power_data.Add(power_value); Cadence.cadence_data.Add(cadence_value); Speed.speed_data.Add(speed_value); Altitude.alt_data.Add(alt_value); Distance.distance_data.Add(distance_value); Time.time_data.Add(time_value); /* * // obsolete * //contruct a new data point given the data pulled from the decoder above * Data_Point new_point = new Data_Point(power_value, cadence_value, speed_value, alt_value, distance_value, time_value); * * //add that point to the list of all data points * Data_Point.data_point_list.Add(new_point); */ //add to the counter (so we know how many points of data have been collected) data_count++; //now we need to collect data through various filters (i.e. deadzones, descents etc) //power if (power_value > 0) { Power.active_power_data_count++; Power.active_power_data.Add(power_value); } //cadence if (cadence_value > 0) { Cadence.active_cadence_data_count++; Cadence.active_cadence_data.Add(cadence_value); } //speed if (speed_value > 0) { Speed.active_speed_data_count++; Speed.active_speed_data.Add(speed_value); } }
/// <summary> /// Updates the Activity. /// </summary> private void HandleActivityMessage(object sender, MesgEventArgs e) { ActivityMesg msg = (ActivityMesg)e.mesg; Activity = new FitActivity(msg); FitMessage message = new FitMessage(Resources.Activity); Messages.Add(message); }
/// <summary> /// Updates the user profile. /// </summary> private void HandleUserProfileMesg(object sender, MesgEventArgs e) { UserProfileMesg msg = (UserProfileMesg)e.mesg; UserProfile = new FitUserProfile(msg); FitMessage message = new FitMessage(Resources.UserProfile); Messages.Add(message); }
public static void MesgEvent(object sender, MesgEventArgs e) { Field Field = e.mesg.GetField(SessionMesg.FieldDefNum.TotalElapsedTime); if (Field != null) { ElapsedTimeLogger.Instance.Log(Convert.ToInt32(Field.GetValue())); } }
/// <summary> /// Updates the file ID. /// </summary> private void HandleFileIDMesg(object sender, MesgEventArgs e) { FileIdMesg msg = (FileIdMesg)e.mesg; FileID = new FitFileID(msg); FitMessage message = new FitMessage(Resources.FileID); Messages.Add(message); }
private void MessageBroadcaster_DeviceInfoMesgEvent(object sender, MesgEventArgs e) { var msg = e.mesg as DeviceInfoMesg; if (msg == null) { return; } }
void MessageBroadcaster_SessionMesgEvent(object sender, MesgEventArgs e) { var msg = e.mesg as SessionMesg; if (msg != null) { ActivitySummary summary = msg.ToSummary(); Activity.SetSummary(summary); } }
public static void MesgEvent(object sender, MesgEventArgs e) { if (e.mesg.GetField(RecordMesg.FieldDefNum.HeartRate) != null) { HeartRateLogger logger = HeartRateLogger.Instance; Field HeartRateField = e.mesg.GetField(RecordMesg.FieldDefNum.HeartRate); int HeartRate = Convert.ToInt32(HeartRateField.GetValue()); logger.Log(HeartRate); } }
void OnFileCreatorMesg(object sender, MesgEventArgs e) { FileCreatorMesg myFileCreator = (FileCreatorMesg)e.mesg; try { tSoftwareVersion.Text = myFileCreator.GetSoftwareVersion().ToString(); } catch {} }
/// <summary> /// Updates the device information. /// </summary> private void HandleDeviceInfoMessage(object sender, MesgEventArgs e) { DeviceInfoMesg msg = (DeviceInfoMesg)e.mesg; FitDeviceInfo deviceInfo = new FitDeviceInfo(msg); DeviceInfos.Add(deviceInfo); FitMessage message = new FitMessage(Resources.DeviceInfo); Messages.Add(message); }
/// <summary> /// Adds a new session. /// </summary> private void HandleSessionMessage(object sender, MesgEventArgs e) { SessionMesg msg = (SessionMesg)e.mesg; FitSession session = new FitSession(msg, (Sessions.Count > 0) ? Sessions[Sessions.Count - 1].LastRecord + 1 : 0, Records.Count - 1); Sessions.Add(session); string description = (session.FirstRecord < session.LastRecord) ? string.Format("{0} - {1}", session.FirstRecord, session.LastRecord) : session.FirstRecord.ToString(); FitMessage message = new FitMessage(Resources.Session, description); Messages.Add(message); }
/// <summary> /// Adds a new lap. /// </summary> private void HandleLapMessage(object sender, MesgEventArgs e) { LapMesg msg = (LapMesg)e.mesg; FitLap lap = new FitLap(msg, (Laps.Count > 0) ? Laps[Laps.Count - 1].LastRecord + 1 : 0, Records.Count - 1); Laps.Add(lap); string description = (lap.FirstRecord < lap.LastRecord) ? string.Format("{0} - {1}", lap.FirstRecord, lap.LastRecord) : lap.FirstRecord.ToString(); FitMessage message = new FitMessage(Resources.Lap, description); Messages.Add(message); }
/// <summary> /// Adds a new length. /// </summary> private void HandleLengthMessage(object sender, MesgEventArgs e) { LengthMesg msg = (LengthMesg)e.mesg; FitLength length = new FitLength(msg, (Lengths.Count > 0) ? Lengths[Lengths.Count - 1].LastRecord + 1 : 0, Records.Count - 1); Lengths.Add(length); string description = (length.FirstRecord < length.LastRecord) ? string.Format("{0} - {1}", length.FirstRecord, length.LastRecord) : length.FirstRecord.ToString(); FitMessage message = new FitMessage(Resources.Length, description); Messages.Add(message); }
public void OnEventMesg(object sender, MesgEventArgs e) { var eventMesg = e.mesg as EventMesg; Messages.Events.Add(eventMesg); if (eventMesg?.GetEvent() == Event.Timer && eventMesg?.GetTimestamp() != null) { Messages.Records.Add(new ExtendedRecordMesg(eventMesg)); } }
//This function adds coordinate points to the global list //These points will be displayed on the map. static void OnMesg(object sender, MesgEventArgs e) { try { CoordinatePoint coordinatePoint = new CoordinatePoint(); foreach (Field field in e.mesg.Fields) { for (int i = 0; i < field.GetNumValues(); i++) { //Use switch statement to set value on the coordinatePoint. switch (field.GetName()) { case LATITUDE: coordinatePoint.latitude = reformatLatLong(field.GetValue(i).ToString()); break; case LONGITUDE: coordinatePoint.longitude = reformatLatLong(field.GetValue(i).ToString()); break; case TIMESTAMP: coordinatePoint.timeStamp = double.Parse(field.GetValue(i).ToString()); break; case DISTANCE: coordinatePoint.distance = double.Parse(field.GetValue(i).ToString()); break; case SPEED: coordinatePoint.speed = double.Parse(field.GetValue(i).ToString()); break; case HEARTRATE: coordinatePoint.heartRate = double.Parse(field.GetValue(i).ToString()); break; default: //do nothing :) break; } } } if (coordinatePoint.HasLatLong()) { route.addCoordinatePoint(coordinatePoint); } } catch (Exception ex) { Console.WriteLine("Error parsing double for JSON." + ex.Message); } }
void mesgBroadcaster_SessionMesgEvent(object sender, MesgEventArgs e) { var sessionMessage = (SessionMesg)e.mesg; if (sessionMessage != null) { data = new ActivitySummary(); data.Sport = sessionMessage.GetSport(); data.TotalDistance = sessionMessage.GetTotalDistance(); data.TotalElapsedTime = sessionMessage.GetTotalElapsedTime(); data.TotalFatCalories = sessionMessage.GetTotalFatCalories(); data.StartTime = sessionMessage.GetStartTime(); } }
void OnMesg(object sender, MesgEventArgs e) { if (e.mesg.Name == "Totals") { Debug.WriteLine("============== TOTALS ================"); for (byte i = 0; i < e.mesg.GetNumFields(); i++) { for (int j = 0; j < e.mesg.fields[i].GetNumValues(); j++) { Debug.WriteLine(string.Format("\tField{0} Index{1} (\"{2}\" Field#{4}) Value: {3}", i, j, e.mesg.fields[i].GetName(), getVal(e.mesg.fields[i].GetValue(j)), e.mesg.fields[i].Num)); } } } }
private static void OnSessionMesgEvent(object sender, MesgEventArgs e) { SessionMesg session = (SessionMesg)e.mesg; if (session.GetTotalCalories() < ushort.MaxValue) { tcx.Calories = (int)session.GetTotalCalories(); } if (session.GetTotalDistance() < 1E6) { tcx.DistanceMeters = (double)session.GetTotalDistance(); } }