[Pkg-running-devel] [antpm] 15/20: Add "length message" management & dump

Kristof Ralovich ralovich-guest at moszumanska.debian.org
Sun Jun 28 12:26:52 UTC 2015


This is an automated email from the git hooks/post-receive script.

ralovich-guest pushed a commit to branch upstream
in repository antpm.

commit 108c0521929cab17f708693d1123c8d33c17c8d5
Author: jerome-labidurie <jerome at labidurie.fr>
Date:   Sun Jun 7 13:08:31 2015 +0200

    Add "length message" management & dump
---
 src/FIT.cpp | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 src/FIT.hpp |  5 +++-
 2 files changed, 100 insertions(+), 4 deletions(-)

diff --git a/src/FIT.cpp b/src/FIT.cpp
index e366960..cbf66b9 100644
--- a/src/FIT.cpp
+++ b/src/FIT.cpp
@@ -201,7 +201,7 @@ FIT::FIT()
     messageFieldTypeMap[18][8] = MessageFieldTypeTime;
     messageFieldNameMap[18][9] = "Total Distance";
     messageFieldTypeMap[18][9] = MessageFieldTypeOdometr;
-    messageFieldNameMap[19][10] = "Total Cycles";
+    messageFieldNameMap[18][10] = "Total Cycles";
     messageFieldNameMap[18][11] = "Total Calories";
     messageFieldNameMap[18][13] = "Total Fat Calories";
     messageFieldNameMap[18][14] = "Average Speed";
@@ -229,6 +229,11 @@ FIT::FIT()
     messageFieldTypeMap[18][31] = MessageFieldTypeCoord;
     messageFieldNameMap[18][32] = "SWC Longitude";
     messageFieldTypeMap[18][32] = MessageFieldTypeCoord;
+    messageFieldNameMap[18][43] = "Swimming Stroke";
+    messageFieldTypeMap[18][43] = MessageFieldTypeSwimStroke;
+    messageFieldNameMap[18][44] = "Pool Length";
+    messageFieldNameMap[18][46] = "Pool Length Unit";
+    messageFieldTypeMap[18][46] = MessageFieldTypePoolLengthUnit;
 
     messageTypeMap[19] = "Lap";
     messageFieldNameMap[19][254] = "Index";
@@ -489,6 +494,29 @@ FIT::FIT()
     messageFieldTypeMap[79][3] = MessageFieldTypeWeight;
     
     messageTypeMap[101] = "Length";
+    messageFieldNameMap[101][254] = "Index";
+    messageFieldNameMap[101][253] = "Timestamp";
+    messageFieldTypeMap[101][253] = MessageFieldTypeTimestamp;
+    messageFieldNameMap[101][0] = "Event";
+    messageFieldTypeMap[101][0] = MessageFieldTypeEvent;
+    messageFieldNameMap[101][1] = "Event Type";
+    messageFieldTypeMap[101][0] = MessageFieldTypeEventType;
+    messageFieldNameMap[101][2] = "Start Time";
+    messageFieldTypeMap[101][2] = MessageFieldTypeTimestamp;
+    messageFieldNameMap[101][3] = "Total Elapsed Time";
+    messageFieldTypeMap[101][3] = MessageFieldTypeTime;
+    messageFieldNameMap[101][4] = "Total Timer Time";
+    messageFieldTypeMap[101][4] = MessageFieldTypeTime;
+    messageFieldNameMap[101][5] = "Total Strokes";
+    messageFieldNameMap[101][6] = "Average Speed"; // unit: m/s * 1000
+    messageFieldNameMap[101][7] = "Swimming Stroke";
+    messageFieldTypeMap[101][7] = MessageFieldTypeSwimStroke;
+    messageFieldNameMap[101][9] = "Average Swimming Cadence";
+    messageFieldNameMap[101][12] = "Length Type";
+    messageFieldTypeMap[101][12] = MessageFieldTypeLengthType;
+    messageFieldNameMap[101][13] = "";
+    
+    
     messageTypeMap[103] = "Monitoring Info";
     messageTypeMap[105] = "PAD";
 
@@ -607,6 +635,19 @@ FIT::FIT()
     enumMap[MessageFieldTypeEventType][8] = "Stop Disable";
     enumMap[MessageFieldTypeEventType][9] = "Stop Disable All";
 
+    enumMap[MessageFieldTypeSwimStroke][0] = "Freestyle";
+    enumMap[MessageFieldTypeSwimStroke][1] = "Backstroke";
+    enumMap[MessageFieldTypeSwimStroke][2] = "Breaststroke";
+    enumMap[MessageFieldTypeSwimStroke][3] = "Butterlfy";
+    enumMap[MessageFieldTypeSwimStroke][4] = "Drill";
+    enumMap[MessageFieldTypeSwimStroke][5] = "Mixed";
+    
+    enumMap[MessageFieldTypeLengthType][0] = "Resting";
+    enumMap[MessageFieldTypeLengthType][1] = "Active";
+    
+    enumMap[MessageFieldTypePoolLengthUnit][0] = "meters";
+    enumMap[MessageFieldTypePoolLengthUnit][1] = "yards";
+        
     manufacturerMap[ManufacturerGarmin] = "Garmin";
     manufacturerMap[ManufacturerGarminFR405ANTFS] = "Garmin (FR405 ANTFS)";
     manufacturerMap[ManufacturerZephyr] = "Zephyr";
@@ -975,8 +1016,8 @@ bool FIT::parse(vector<uint8_t> &fitData, GPX &gpx)
                         //BaseType bt;
                         //bt.byte = rf.baseType;
 
-                        //logger() << rd.rfx.globalNum << "." << (unsigned)rf.definitionNum << ": " << messageFieldNameMap[rd.rfx.globalNum][rf.definitionNum] <<
-                        //            " (" << dataTypeMap[bt.bits.baseTypeNum] << ") " << getDataString(ptr, rf.size, bt.bits.baseTypeNum, rd.rfx.globalNum, rf.definitionNum) << "\n";
+//                          LOG(LOG_DBG2) << rd.rfx.globalNum << "." << (unsigned)rf.definitionNum << ": " << messageFieldNameMap[rd.rfx.globalNum][rf.definitionNum] << "\n";
+//                                     " (" << dataTypeMap[bt.bits.baseTypeNum] << ") " << getDataString(ptr, rf.size, bt.bits.baseTypeNum, rd.rfx.globalNum, rf.definitionNum) << "\n";
 
                         switch(rd.rfx.globalNum)
                         {
@@ -1112,6 +1153,58 @@ bool FIT::parse(vector<uint8_t> &fitData, GPX &gpx)
                                 }
                                 break;
                             }
+                            case 101: // Length
+                            {
+                                LOG(LOG_DBG2) << rd.rfx.globalNum << "." << (unsigned)rf.definitionNum << ": " << messageFieldNameMap[rd.rfx.globalNum][rf.definitionNum];
+                                switch (rf.definitionNum)
+                                {
+                                    case 2 : // Start Time
+                                    {
+                                        LOG(LOG_DBG2) << getDataString(ptr, 0, BT_UInt32, rd.rfx.globalNum, rf.definitionNum);
+                                        break;
+                                    }
+                                    case 3 : // Total Elapsed Time
+                                    {
+                                        LOG(LOG_DBG2) << getDataString(ptr, 0, BT_UInt32, rd.rfx.globalNum, rf.definitionNum);
+                                        break;
+                                    }
+                                    case 4 : // Total Timer Time
+                                    {
+                                        LOG(LOG_DBG2) << getDataString(ptr, 0, BT_UInt32, rd.rfx.globalNum, rf.definitionNum);
+                                        break;
+                                    }
+                                    case 5: // Total Strokes
+                                    {
+                                        LOG(LOG_DBG2) << *(uint16_t*)ptr;
+                                        break;
+                                    }
+                                    case 6: // Average Speed
+                                    {
+                                        // unit: m/s * 1000
+                                        double speed = (double)(*(uint16_t*)ptr) / 1000;
+                                        LOG(LOG_DBG2) << speed;
+                                        
+                                        break;
+                                    }
+                                    case 7: // Swimming stroke
+                                    {
+                                        LOG(LOG_DBG2) << getDataString(ptr, 0, BT_Enum, rd.rfx.globalNum, rf.definitionNum);
+                                        break;
+                                    }
+                                    case 9: // Average Swimming Cadence
+                                    {
+                                        LOG(LOG_DBG2) << (int) *(uint8_t*)ptr;
+                                        break;
+                                    }
+                                    case 12: // Length Type
+                                    {
+                                        LOG(LOG_DBG2) << getDataString(ptr, 0, BT_Enum, rd.rfx.globalNum, rf.definitionNum);
+                                        break;
+                                    }
+                                }
+                                LOG(LOG_DBG2) << "\n";
+                                break;
+                            }
                         }
 
                         ptr += rf.size;
diff --git a/src/FIT.hpp b/src/FIT.hpp
index d12261d..a6bb7af 100644
--- a/src/FIT.hpp
+++ b/src/FIT.hpp
@@ -185,7 +185,10 @@ enum MessageFieldTypes
     MessageFieldTypeLanguage,
     MessageFieldTypeSport,
     MessageFieldTypeEvent,
-    MessageFieldTypeEventType
+    MessageFieldTypeEventType,
+    MessageFieldTypeSwimStroke,
+    MessageFieldTypeLengthType,
+    MessageFieldTypePoolLengthUnit
 };
 
 enum Manufacturers

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-running/antpm.git



More information about the Pkg-running-devel mailing list