rubyfit 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/rubyfit/fit.c +96 -25
- data/ext/rubyfit/fit.h +127 -44
- data/ext/rubyfit/fit_config.h +7 -7
- data/ext/rubyfit/fit_convert.c +66 -13
- data/ext/rubyfit/fit_convert.h +28 -23
- data/ext/rubyfit/fit_crc.c +30 -6
- data/ext/rubyfit/fit_crc.h +12 -5
- data/ext/rubyfit/fit_example.c +899 -0
- data/ext/rubyfit/fit_example.h +3299 -0
- data/ext/rubyfit/fit_ram.c +203 -0
- data/ext/rubyfit/fit_ram.h +39 -0
- data/ext/rubyfit/rubyfit.c +25 -36
- data/lib/rubyfit/version.rb +1 -1
- metadata +14 -16
- data/ext/rubyfit/fit_product.c +0 -21
- data/ext/rubyfit/fit_product.h +0 -21
- data/ext/rubyfit/fit_sdk.c +0 -618
- data/ext/rubyfit/fit_sdk.h +0 -2083
data/ext/rubyfit/fit_config.h
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
4
|
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
5
|
// and therefore all warranties, representations, or guarantees of any kind
|
6
6
|
// (whether express, implied or statutory) including, without limitation,
|
7
7
|
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
8
|
// purpose, are specifically disclaimed.
|
9
9
|
//
|
10
|
-
// Copyright
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
13
11
|
////////////////////////////////////////////////////////////////////////////////
|
14
12
|
|
15
13
|
|
@@ -21,13 +19,15 @@
|
|
21
19
|
extern "C" {
|
22
20
|
#endif
|
23
21
|
|
24
|
-
#define
|
22
|
+
#define FIT_USE_STDINT_H // Define to use stdint.h types. By default size in bytes of integer types assumed to be char=1, short=2, long=4.
|
23
|
+
|
24
|
+
#define FIT_LOCAL_MESGS 16 // 1-16. Sets maximum number of local messages that can be decoded. Lower to minimize RAM requirements.
|
25
25
|
#define FIT_ARCH_ENDIAN FIT_ARCH_ENDIAN_LITTLE // Set to correct endian for build architecture.
|
26
26
|
|
27
27
|
#define FIT_CONVERT_CHECK_CRC // Define to check file crc.
|
28
|
+
#define FIT_CONVERT_CHECK_FILE_HDR_DATA_TYPE // Define to check file header for FIT data type. Verifies file is FIT format before starting decode.
|
28
29
|
#define FIT_CONVERT_TIME_RECORD // Define to support time records (compressed timestamp).
|
29
30
|
//#define FIT_CONVERT_MULTI_THREAD // Define to support multiple conversion threads.
|
30
|
-
//#define FIT_CONVERT_CHECK_FILE_HDR_DATA_TYPE // Define to check file header for .FIT data type. Verifies file is .FIT format before starting decode.
|
31
31
|
|
32
32
|
#if defined(__cplusplus)
|
33
33
|
}
|
data/ext/rubyfit/fit_convert.c
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
4
|
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
5
|
// and therefore all warranties, representations, or guarantees of any kind
|
6
6
|
// (whether express, implied or statutory) including, without limitation,
|
7
7
|
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
8
|
// purpose, are specifically disclaimed.
|
9
9
|
//
|
10
|
-
// Copyright
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
13
11
|
////////////////////////////////////////////////////////////////////////////////
|
12
|
+
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
13
|
+
// Profile Version = 8.10Release
|
14
|
+
// Tag = $Name: AKW8_100 $
|
15
|
+
// Product = EXAMPLE
|
16
|
+
// Alignment = 4 bytes, padding disabled.
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
14
19
|
|
15
20
|
#include <string.h>
|
16
21
|
|
@@ -103,7 +108,8 @@
|
|
103
108
|
switch (state->decode_state)
|
104
109
|
{
|
105
110
|
case FIT_CONVERT_DECODE_FILE_HDR:
|
106
|
-
|
111
|
+
if (state->mesg_offset < FIT_FILE_HDR_SIZE)
|
112
|
+
*((FIT_UINT8 *) &state->u.file_hdr + state->mesg_offset) = datum;
|
107
113
|
|
108
114
|
if (state->mesg_offset == 0)
|
109
115
|
state->file_bytes_left = state->u.file_hdr.header_size + 2; // Increase to read header and CRC.
|
@@ -118,14 +124,14 @@
|
|
118
124
|
state->file_bytes_left |= (FIT_UINT32)*((FIT_UINT8 *) &state->u.file_hdr.data_size + 3) << 24;
|
119
125
|
state->file_bytes_left += 2; // CRC.
|
120
126
|
|
121
|
-
if ((state->u.file_hdr.protocol_version & FIT_PROTOCOL_VERSION_MAJOR_MASK) > (FIT_PROTOCOL_VERSION_MAJOR << FIT_PROTOCOL_VERSION_MAJOR_SHIFT))
|
122
|
-
return FIT_CONVERT_PROTOCOL_VERSION_NOT_SUPPORTED;
|
123
|
-
|
124
127
|
#if defined(FIT_CONVERT_CHECK_FILE_HDR_DATA_TYPE)
|
125
128
|
if (memcmp(state->u.file_hdr.data_type, ".FIT", 4) != 0)
|
126
129
|
return FIT_CONVERT_DATA_TYPE_NOT_SUPPORTED;
|
127
130
|
#endif
|
128
131
|
|
132
|
+
if ((state->u.file_hdr.protocol_version & FIT_PROTOCOL_VERSION_MAJOR_MASK) > (FIT_PROTOCOL_VERSION_MAJOR << FIT_PROTOCOL_VERSION_MAJOR_SHIFT))
|
133
|
+
return FIT_CONVERT_PROTOCOL_VERSION_NOT_SUPPORTED;
|
134
|
+
|
129
135
|
state->decode_state = FIT_CONVERT_DECODE_RECORD;
|
130
136
|
}
|
131
137
|
break;
|
@@ -173,7 +179,7 @@
|
|
173
179
|
#if defined(FIT_CONVERT_TIME_RECORD)
|
174
180
|
if (datum & FIT_HDR_TIME_REC_BIT)
|
175
181
|
{
|
176
|
-
FIT_UINT8 field_offset = Fit_GetFieldOffset(state->mesg_def,
|
182
|
+
FIT_UINT8 field_offset = Fit_GetFieldOffset(state->mesg_def, FIT_FIELD_NUM_TIMESTAMP);
|
177
183
|
|
178
184
|
if (field_offset != FIT_UINT8_INVALID)
|
179
185
|
memcpy(&state->u.mesg[field_offset], &state->timestamp, sizeof(state->timestamp));
|
@@ -334,11 +340,19 @@
|
|
334
340
|
((state->convert_table[state->mesg_index].arch & FIT_ARCH_ENDIAN_MASK) != (Fit_GetArch() & FIT_ARCH_ENDIAN_MASK))
|
335
341
|
)
|
336
342
|
{
|
337
|
-
FIT_UINT8 type_size
|
338
|
-
FIT_UINT8 element_size
|
343
|
+
FIT_UINT8 type_size;
|
344
|
+
FIT_UINT8 element_size;
|
339
345
|
FIT_UINT8 element;
|
340
346
|
FIT_UINT8 index;
|
341
347
|
|
348
|
+
index = state->convert_table[state->mesg_index].fields[state->field_index].base_type & FIT_BASE_TYPE_NUM_MASK;
|
349
|
+
|
350
|
+
if (index >= FIT_BASE_TYPES)
|
351
|
+
return FIT_CONVERT_ERROR;
|
352
|
+
|
353
|
+
type_size = fit_base_type_sizes[index];
|
354
|
+
element_size = state->convert_table[state->mesg_index].fields[state->field_index].size / type_size;
|
355
|
+
|
342
356
|
for (element = 0; element < element_size; element++)
|
343
357
|
{
|
344
358
|
for (index = 0; index < (type_size / 2); index++)
|
@@ -350,6 +364,45 @@
|
|
350
364
|
}
|
351
365
|
}
|
352
366
|
|
367
|
+
// Null terminate last character if multi-byte beyond end of field.
|
368
|
+
if (state->convert_table[state->mesg_index].fields[state->field_index].base_type == FIT_BASE_TYPE_STRING)
|
369
|
+
{
|
370
|
+
FIT_UINT8 length = state->convert_table[state->mesg_index].fields[state->field_index].size;
|
371
|
+
FIT_UINT8 index = 0;
|
372
|
+
|
373
|
+
while (index < length)
|
374
|
+
{
|
375
|
+
FIT_UINT8 char_size;
|
376
|
+
FIT_UINT8 size_mask = 0x80;
|
377
|
+
|
378
|
+
if (field[index] & size_mask)
|
379
|
+
{
|
380
|
+
char_size = 0;
|
381
|
+
|
382
|
+
while (field[index] & size_mask) // # of bytes in character = # of MSBits
|
383
|
+
{
|
384
|
+
char_size++;
|
385
|
+
size_mask >>= 1;
|
386
|
+
}
|
387
|
+
}
|
388
|
+
else
|
389
|
+
{
|
390
|
+
char_size = 1;
|
391
|
+
}
|
392
|
+
|
393
|
+
if ((FIT_UINT16)(index + char_size) > length)
|
394
|
+
{
|
395
|
+
while (index < length)
|
396
|
+
{
|
397
|
+
field[index++] = 0;
|
398
|
+
}
|
399
|
+
break;
|
400
|
+
}
|
401
|
+
|
402
|
+
index += char_size;
|
403
|
+
}
|
404
|
+
}
|
405
|
+
|
353
406
|
state->field_offset = 0; // Reset the offset.
|
354
407
|
state->field_index++; // Move on to the next field.
|
355
408
|
|
@@ -357,7 +410,7 @@
|
|
357
410
|
{
|
358
411
|
#if defined(FIT_CONVERT_TIME_RECORD)
|
359
412
|
{
|
360
|
-
FIT_UINT8 timestamp_offset = Fit_GetFieldOffset(state->mesg_def,
|
413
|
+
FIT_UINT8 timestamp_offset = Fit_GetFieldOffset(state->mesg_def, FIT_FIELD_NUM_TIMESTAMP);
|
361
414
|
|
362
415
|
if (timestamp_offset != FIT_UINT8_INVALID)
|
363
416
|
{
|
data/ext/rubyfit/fit_convert.h
CHANGED
@@ -1,21 +1,26 @@
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
4
|
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
5
|
// and therefore all warranties, representations, or guarantees of any kind
|
6
6
|
// (whether express, implied or statutory) including, without limitation,
|
7
7
|
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
8
|
// purpose, are specifically disclaimed.
|
9
9
|
//
|
10
|
-
// Copyright
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
13
11
|
////////////////////////////////////////////////////////////////////////////////
|
12
|
+
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
13
|
+
// Profile Version = 8.10Release
|
14
|
+
// Tag = $Name: AKW8_100 $
|
15
|
+
// Product = EXAMPLE
|
16
|
+
// Alignment = 4 bytes, padding disabled.
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
14
19
|
|
15
20
|
#if !defined(FIT_CONVERT_H)
|
16
21
|
#define FIT_CONVERT_H
|
17
22
|
|
18
|
-
#include "
|
23
|
+
#include "fit_example.h"
|
19
24
|
|
20
25
|
|
21
26
|
//////////////////////////////////////////////////////////////////////////////////
|
@@ -86,20 +91,15 @@ typedef struct
|
|
86
91
|
extern "C" {
|
87
92
|
#endif
|
88
93
|
|
89
|
-
#if defined(FIT_CONVERT_MULTI_THREAD)
|
90
|
-
void FitConvert_Init(FIT_CONVERT_STATE *state, FIT_BOOL read_file_header);
|
91
|
-
#else
|
92
|
-
void FitConvert_Init(FIT_BOOL read_file_header);
|
93
|
-
#endif
|
94
94
|
///////////////////////////////////////////////////////////////////////
|
95
95
|
// Initialize the state of the converter to start parsing the file.
|
96
96
|
///////////////////////////////////////////////////////////////////////
|
97
|
-
|
98
97
|
#if defined(FIT_CONVERT_MULTI_THREAD)
|
99
|
-
|
98
|
+
void FitConvert_Init(FIT_CONVERT_STATE *state, FIT_BOOL read_file_header);
|
100
99
|
#else
|
101
|
-
|
100
|
+
void FitConvert_Init(FIT_BOOL read_file_header);
|
102
101
|
#endif
|
102
|
+
|
103
103
|
///////////////////////////////////////////////////////////////////////
|
104
104
|
// Convert a stream of bytes.
|
105
105
|
// Parameters:
|
@@ -116,35 +116,40 @@ typedef struct
|
|
116
116
|
// Returns FIT_CONVERT_ERROR if a decoding error occurs.
|
117
117
|
// Returns FIT_CONVERT_END_OF_FILE when the file has been decoded successfully.
|
118
118
|
///////////////////////////////////////////////////////////////////////
|
119
|
-
|
120
119
|
#if defined(FIT_CONVERT_MULTI_THREAD)
|
121
|
-
|
120
|
+
FIT_CONVERT_RETURN FitConvert_Read(FIT_CONVERT_STATE *state, const void *data, FIT_UINT32 size);
|
122
121
|
#else
|
123
|
-
|
122
|
+
FIT_CONVERT_RETURN FitConvert_Read(const void *data, FIT_UINT32 size);
|
124
123
|
#endif
|
124
|
+
|
125
125
|
///////////////////////////////////////////////////////////////////////
|
126
126
|
// Returns the global message number of the decoded message.
|
127
127
|
///////////////////////////////////////////////////////////////////////
|
128
|
-
|
129
128
|
#if defined(FIT_CONVERT_MULTI_THREAD)
|
130
|
-
|
129
|
+
FIT_MESG_NUM FitConvert_GetMessageNumber(FIT_CONVERT_STATE *state);
|
131
130
|
#else
|
132
|
-
|
131
|
+
FIT_MESG_NUM FitConvert_GetMessageNumber(void);
|
133
132
|
#endif
|
133
|
+
|
134
134
|
///////////////////////////////////////////////////////////////////////
|
135
135
|
// Returns a pointer to the data of the decoded message.
|
136
136
|
// Copy or cast to FIT_*_MESG structure.
|
137
137
|
///////////////////////////////////////////////////////////////////////
|
138
|
-
|
139
138
|
#if defined(FIT_CONVERT_MULTI_THREAD)
|
140
|
-
|
139
|
+
const FIT_UINT8 *FitConvert_GetMessageData(FIT_CONVERT_STATE *state);
|
141
140
|
#else
|
142
|
-
|
141
|
+
const FIT_UINT8 *FitConvert_GetMessageData(void);
|
143
142
|
#endif
|
143
|
+
|
144
144
|
///////////////////////////////////////////////////////////////////////
|
145
145
|
// Restores fields that are not in decoded message from mesg_data.
|
146
146
|
// Use when modifying an existing file.
|
147
147
|
///////////////////////////////////////////////////////////////////////
|
148
|
+
#if defined(FIT_CONVERT_MULTI_THREAD)
|
149
|
+
void FitConvert_RestoreFields(FIT_CONVERT_STATE *state, const void *mesg_data);
|
150
|
+
#else
|
151
|
+
void FitConvert_RestoreFields(const void *mesg_data);
|
152
|
+
#endif
|
148
153
|
|
149
154
|
#if defined(__cplusplus)
|
150
155
|
}
|
data/ext/rubyfit/fit_crc.c
CHANGED
@@ -1,24 +1,29 @@
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
4
|
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
5
|
// and therefore all warranties, representations, or guarantees of any kind
|
6
6
|
// (whether express, implied or statutory) including, without limitation,
|
7
7
|
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
8
|
// purpose, are specifically disclaimed.
|
9
9
|
//
|
10
|
-
// Copyright
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
13
11
|
////////////////////////////////////////////////////////////////////////////////
|
12
|
+
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
13
|
+
// Profile Version = 8.10Release
|
14
|
+
// Tag = $Name: AKW8_100 $
|
15
|
+
// Product = EXAMPLE
|
16
|
+
// Alignment = 4 bytes, padding disabled.
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
14
19
|
|
15
20
|
#include "fit_crc.h"
|
16
21
|
|
22
|
+
|
17
23
|
//////////////////////////////////////////////////////////////////////////////////
|
18
24
|
// Public Functions
|
19
25
|
//////////////////////////////////////////////////////////////////////////////////
|
20
26
|
|
21
|
-
///////////////////////////////////////////////////////////////////////
|
22
27
|
FIT_UINT16 FitCRC_Get16(FIT_UINT16 crc, FIT_UINT8 byte)
|
23
28
|
{
|
24
29
|
static const FIT_UINT16 crc_table[16] =
|
@@ -41,3 +46,22 @@ FIT_UINT16 FitCRC_Get16(FIT_UINT16 crc, FIT_UINT8 byte)
|
|
41
46
|
return crc;
|
42
47
|
}
|
43
48
|
|
49
|
+
FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT8 size)
|
50
|
+
{
|
51
|
+
FIT_BYTE *data_ptr = (FIT_BYTE *)data;
|
52
|
+
|
53
|
+
while (size)
|
54
|
+
{
|
55
|
+
crc = FitCRC_Get16(crc, *data_ptr);
|
56
|
+
data_ptr++;
|
57
|
+
size--;
|
58
|
+
}
|
59
|
+
|
60
|
+
return crc;
|
61
|
+
}
|
62
|
+
|
63
|
+
FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT8 size)
|
64
|
+
{
|
65
|
+
return FitCRC_Update16(0, data, size);
|
66
|
+
}
|
67
|
+
|
data/ext/rubyfit/fit_crc.h
CHANGED
@@ -1,16 +1,21 @@
|
|
1
1
|
////////////////////////////////////////////////////////////////////////////////
|
2
|
-
// The following
|
3
|
-
// remains the copyrighted property of Dynastream Innovations Inc.
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
4
|
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
5
|
// and therefore all warranties, representations, or guarantees of any kind
|
6
6
|
// (whether express, implied or statutory) including, without limitation,
|
7
7
|
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
8
|
// purpose, are specifically disclaimed.
|
9
9
|
//
|
10
|
-
// Copyright
|
11
|
-
// All rights reserved. This software may not be reproduced by any means
|
12
|
-
// without express written approval of Dynastream Innovations Inc.
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
13
11
|
////////////////////////////////////////////////////////////////////////////////
|
12
|
+
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
13
|
+
// Profile Version = 8.10Release
|
14
|
+
// Tag = $Name: AKW8_100 $
|
15
|
+
// Product = EXAMPLE
|
16
|
+
// Alignment = 4 bytes, padding disabled.
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
14
19
|
|
15
20
|
#if !defined(FIT_CRC_H)
|
16
21
|
#define FIT_CRC_H
|
@@ -27,6 +32,8 @@
|
|
27
32
|
#endif
|
28
33
|
|
29
34
|
FIT_UINT16 FitCRC_Get16(FIT_UINT16 crc, FIT_UINT8 byte);
|
35
|
+
FIT_UINT16 FitCRC_Update16(FIT_UINT16 crc, const volatile void *data, FIT_UINT8 size);
|
36
|
+
FIT_UINT16 FitCRC_Calc16(const volatile void *data, FIT_UINT8 size);
|
30
37
|
|
31
38
|
#if defined(__cplusplus)
|
32
39
|
}
|
@@ -0,0 +1,899 @@
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////////
|
2
|
+
// The following FIT Protocol software provided may be used with FIT protocol
|
3
|
+
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
|
4
|
+
// The software is being provided on an "as-is" basis and as an accommodation,
|
5
|
+
// and therefore all warranties, representations, or guarantees of any kind
|
6
|
+
// (whether express, implied or statutory) including, without limitation,
|
7
|
+
// warranties of merchantability, non-infringement, or fitness for a particular
|
8
|
+
// purpose, are specifically disclaimed.
|
9
|
+
//
|
10
|
+
// Copyright 2013 Dynastream Innovations Inc.
|
11
|
+
////////////////////////////////////////////////////////////////////////////////
|
12
|
+
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
|
13
|
+
// Profile Version = 8.10Release
|
14
|
+
// Tag = $Name: AKW8_100 $
|
15
|
+
// Product = EXAMPLE
|
16
|
+
// Alignment = 4 bytes, padding disabled.
|
17
|
+
////////////////////////////////////////////////////////////////////////////////
|
18
|
+
|
19
|
+
|
20
|
+
#include "string.h"
|
21
|
+
#include "fit_config.h"
|
22
|
+
#include "fit_example.h"
|
23
|
+
|
24
|
+
|
25
|
+
///////////////////////////////////////////////////////////////////////
|
26
|
+
// Messages
|
27
|
+
///////////////////////////////////////////////////////////////////////
|
28
|
+
|
29
|
+
const static FIT_PAD_MESG_DEF pad_mesg_def =
|
30
|
+
{
|
31
|
+
0, // reserved_1
|
32
|
+
FIT_ARCH_ENDIAN, // arch
|
33
|
+
FIT_MESG_NUM_PAD, // global_mesg_num
|
34
|
+
0 // num_fields
|
35
|
+
};
|
36
|
+
|
37
|
+
|
38
|
+
const static FIT_FILE_ID_MESG_DEF file_id_mesg_def =
|
39
|
+
{
|
40
|
+
0, // reserved_1
|
41
|
+
FIT_ARCH_ENDIAN, // arch
|
42
|
+
FIT_MESG_NUM_FILE_ID, // global_mesg_num
|
43
|
+
6, // num_fields
|
44
|
+
{ // field_def_num, size, base_type
|
45
|
+
FIT_FILE_ID_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
|
46
|
+
FIT_FILE_ID_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
47
|
+
FIT_FILE_ID_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
|
48
|
+
FIT_FILE_ID_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
49
|
+
FIT_FILE_ID_FIELD_NUM_NUMBER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
50
|
+
FIT_FILE_ID_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
54
|
+
const static FIT_FILE_CREATOR_MESG_DEF file_creator_mesg_def =
|
55
|
+
{
|
56
|
+
0, // reserved_1
|
57
|
+
FIT_ARCH_ENDIAN, // arch
|
58
|
+
FIT_MESG_NUM_FILE_CREATOR, // global_mesg_num
|
59
|
+
2, // num_fields
|
60
|
+
{ // field_def_num, size, base_type
|
61
|
+
FIT_FILE_CREATOR_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
62
|
+
FIT_FILE_CREATOR_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
63
|
+
}
|
64
|
+
};
|
65
|
+
|
66
|
+
const static FIT_SOFTWARE_MESG_DEF software_mesg_def =
|
67
|
+
{
|
68
|
+
0, // reserved_1
|
69
|
+
FIT_ARCH_ENDIAN, // arch
|
70
|
+
FIT_MESG_NUM_SOFTWARE, // global_mesg_num
|
71
|
+
3, // num_fields
|
72
|
+
{ // field_def_num, size, base_type
|
73
|
+
FIT_SOFTWARE_FIELD_NUM_PART_NUMBER, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
74
|
+
FIT_SOFTWARE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
75
|
+
FIT_SOFTWARE_FIELD_NUM_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
76
|
+
}
|
77
|
+
};
|
78
|
+
|
79
|
+
const static FIT_SLAVE_DEVICE_MESG_DEF slave_device_mesg_def =
|
80
|
+
{
|
81
|
+
0, // reserved_1
|
82
|
+
FIT_ARCH_ENDIAN, // arch
|
83
|
+
FIT_MESG_NUM_SLAVE_DEVICE, // global_mesg_num
|
84
|
+
2, // num_fields
|
85
|
+
{ // field_def_num, size, base_type
|
86
|
+
FIT_SLAVE_DEVICE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
|
87
|
+
FIT_SLAVE_DEVICE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
88
|
+
}
|
89
|
+
};
|
90
|
+
|
91
|
+
const static FIT_CAPABILITIES_MESG_DEF capabilities_mesg_def =
|
92
|
+
{
|
93
|
+
0, // reserved_1
|
94
|
+
FIT_ARCH_ENDIAN, // arch
|
95
|
+
FIT_MESG_NUM_CAPABILITIES, // global_mesg_num
|
96
|
+
3, // num_fields
|
97
|
+
{ // field_def_num, size, base_type
|
98
|
+
FIT_CAPABILITIES_FIELD_NUM_LANGUAGES, (sizeof(FIT_UINT8Z)*4), FIT_BASE_TYPE_UINT8Z,
|
99
|
+
FIT_CAPABILITIES_FIELD_NUM_WORKOUTS_SUPPORTED, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
|
100
|
+
FIT_CAPABILITIES_FIELD_NUM_SPORTS, (sizeof(FIT_SPORT_BITS_0)*1), FIT_BASE_TYPE_UINT8Z,
|
101
|
+
}
|
102
|
+
};
|
103
|
+
|
104
|
+
const static FIT_FILE_CAPABILITIES_MESG_DEF file_capabilities_mesg_def =
|
105
|
+
{
|
106
|
+
0, // reserved_1
|
107
|
+
FIT_ARCH_ENDIAN, // arch
|
108
|
+
FIT_MESG_NUM_FILE_CAPABILITIES, // global_mesg_num
|
109
|
+
6, // num_fields
|
110
|
+
{ // field_def_num, size, base_type
|
111
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_DIRECTORY, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
112
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_SIZE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
113
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
114
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_MAX_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
115
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_TYPE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
|
116
|
+
FIT_FILE_CAPABILITIES_FIELD_NUM_FLAGS, (sizeof(FIT_FILE_FLAGS)*1), FIT_BASE_TYPE_UINT8Z,
|
117
|
+
}
|
118
|
+
};
|
119
|
+
|
120
|
+
const static FIT_MESG_CAPABILITIES_MESG_DEF mesg_capabilities_mesg_def =
|
121
|
+
{
|
122
|
+
0, // reserved_1
|
123
|
+
FIT_ARCH_ENDIAN, // arch
|
124
|
+
FIT_MESG_NUM_MESG_CAPABILITIES, // global_mesg_num
|
125
|
+
5, // num_fields
|
126
|
+
{ // field_def_num, size, base_type
|
127
|
+
FIT_MESG_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
128
|
+
FIT_MESG_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16,
|
129
|
+
FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
130
|
+
FIT_MESG_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
|
131
|
+
FIT_MESG_CAPABILITIES_FIELD_NUM_COUNT_TYPE, (sizeof(FIT_MESG_COUNT)*1), FIT_BASE_TYPE_ENUM,
|
132
|
+
}
|
133
|
+
};
|
134
|
+
|
135
|
+
const static FIT_FIELD_CAPABILITIES_MESG_DEF field_capabilities_mesg_def =
|
136
|
+
{
|
137
|
+
0, // reserved_1
|
138
|
+
FIT_ARCH_ENDIAN, // arch
|
139
|
+
FIT_MESG_NUM_FIELD_CAPABILITIES, // global_mesg_num
|
140
|
+
5, // num_fields
|
141
|
+
{ // field_def_num, size, base_type
|
142
|
+
FIT_FIELD_CAPABILITIES_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
143
|
+
FIT_FIELD_CAPABILITIES_FIELD_NUM_MESG_NUM, (sizeof(FIT_MESG_NUM)*1), FIT_BASE_TYPE_UINT16,
|
144
|
+
FIT_FIELD_CAPABILITIES_FIELD_NUM_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
145
|
+
FIT_FIELD_CAPABILITIES_FIELD_NUM_FILE, (sizeof(FIT_FILE)*1), FIT_BASE_TYPE_ENUM,
|
146
|
+
FIT_FIELD_CAPABILITIES_FIELD_NUM_FIELD_NUM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
147
|
+
}
|
148
|
+
};
|
149
|
+
|
150
|
+
const static FIT_DEVICE_SETTINGS_MESG_DEF device_settings_mesg_def =
|
151
|
+
{
|
152
|
+
0, // reserved_1
|
153
|
+
FIT_ARCH_ENDIAN, // arch
|
154
|
+
FIT_MESG_NUM_DEVICE_SETTINGS, // global_mesg_num
|
155
|
+
1, // num_fields
|
156
|
+
{ // field_def_num, size, base_type
|
157
|
+
FIT_DEVICE_SETTINGS_FIELD_NUM_UTC_OFFSET, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
158
|
+
}
|
159
|
+
};
|
160
|
+
|
161
|
+
const static FIT_USER_PROFILE_MESG_DEF user_profile_mesg_def =
|
162
|
+
{
|
163
|
+
0, // reserved_1
|
164
|
+
FIT_ARCH_ENDIAN, // arch
|
165
|
+
FIT_MESG_NUM_USER_PROFILE, // global_mesg_num
|
166
|
+
22, // num_fields
|
167
|
+
{ // field_def_num, size, base_type
|
168
|
+
FIT_USER_PROFILE_FIELD_NUM_FRIENDLY_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
169
|
+
FIT_USER_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
170
|
+
FIT_USER_PROFILE_FIELD_NUM_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
171
|
+
FIT_USER_PROFILE_FIELD_NUM_LOCAL_ID, (sizeof(FIT_USER_LOCAL_ID)*1), FIT_BASE_TYPE_UINT16,
|
172
|
+
FIT_USER_PROFILE_FIELD_NUM_GENDER, (sizeof(FIT_GENDER)*1), FIT_BASE_TYPE_ENUM,
|
173
|
+
FIT_USER_PROFILE_FIELD_NUM_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
174
|
+
FIT_USER_PROFILE_FIELD_NUM_HEIGHT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
175
|
+
FIT_USER_PROFILE_FIELD_NUM_LANGUAGE, (sizeof(FIT_LANGUAGE)*1), FIT_BASE_TYPE_ENUM,
|
176
|
+
FIT_USER_PROFILE_FIELD_NUM_ELEV_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
177
|
+
FIT_USER_PROFILE_FIELD_NUM_WEIGHT_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
178
|
+
FIT_USER_PROFILE_FIELD_NUM_RESTING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
179
|
+
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_RUNNING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
180
|
+
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_BIKING_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
181
|
+
FIT_USER_PROFILE_FIELD_NUM_DEFAULT_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
182
|
+
FIT_USER_PROFILE_FIELD_NUM_HR_SETTING, (sizeof(FIT_DISPLAY_HEART)*1), FIT_BASE_TYPE_ENUM,
|
183
|
+
FIT_USER_PROFILE_FIELD_NUM_SPEED_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
184
|
+
FIT_USER_PROFILE_FIELD_NUM_DIST_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
185
|
+
FIT_USER_PROFILE_FIELD_NUM_POWER_SETTING, (sizeof(FIT_DISPLAY_POWER)*1), FIT_BASE_TYPE_ENUM,
|
186
|
+
FIT_USER_PROFILE_FIELD_NUM_ACTIVITY_CLASS, (sizeof(FIT_ACTIVITY_CLASS)*1), FIT_BASE_TYPE_ENUM,
|
187
|
+
FIT_USER_PROFILE_FIELD_NUM_POSITION_SETTING, (sizeof(FIT_DISPLAY_POSITION)*1), FIT_BASE_TYPE_ENUM,
|
188
|
+
FIT_USER_PROFILE_FIELD_NUM_TEMPERATURE_SETTING, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
189
|
+
FIT_USER_PROFILE_FIELD_NUM_GLOBAL_ID, (sizeof(FIT_BYTE)*6), FIT_BASE_TYPE_BYTE,
|
190
|
+
}
|
191
|
+
};
|
192
|
+
|
193
|
+
const static FIT_HRM_PROFILE_MESG_DEF hrm_profile_mesg_def =
|
194
|
+
{
|
195
|
+
0, // reserved_1
|
196
|
+
FIT_ARCH_ENDIAN, // arch
|
197
|
+
FIT_MESG_NUM_HRM_PROFILE, // global_mesg_num
|
198
|
+
5, // num_fields
|
199
|
+
{ // field_def_num, size, base_type
|
200
|
+
FIT_HRM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
201
|
+
FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
202
|
+
FIT_HRM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
203
|
+
FIT_HRM_PROFILE_FIELD_NUM_LOG_HRV, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
204
|
+
FIT_HRM_PROFILE_FIELD_NUM_HRM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
205
|
+
}
|
206
|
+
};
|
207
|
+
|
208
|
+
const static FIT_SDM_PROFILE_MESG_DEF sdm_profile_mesg_def =
|
209
|
+
{
|
210
|
+
0, // reserved_1
|
211
|
+
FIT_ARCH_ENDIAN, // arch
|
212
|
+
FIT_MESG_NUM_SDM_PROFILE, // global_mesg_num
|
213
|
+
8, // num_fields
|
214
|
+
{ // field_def_num, size, base_type
|
215
|
+
FIT_SDM_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
216
|
+
FIT_SDM_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
217
|
+
FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
218
|
+
FIT_SDM_PROFILE_FIELD_NUM_SDM_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
219
|
+
FIT_SDM_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
220
|
+
FIT_SDM_PROFILE_FIELD_NUM_SPEED_SOURCE, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
221
|
+
FIT_SDM_PROFILE_FIELD_NUM_SDM_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
222
|
+
FIT_SDM_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
223
|
+
}
|
224
|
+
};
|
225
|
+
|
226
|
+
const static FIT_BIKE_PROFILE_MESG_DEF bike_profile_mesg_def =
|
227
|
+
{
|
228
|
+
0, // reserved_1
|
229
|
+
FIT_ARCH_ENDIAN, // arch
|
230
|
+
FIT_MESG_NUM_BIKE_PROFILE, // global_mesg_num
|
231
|
+
27, // num_fields
|
232
|
+
{ // field_def_num, size, base_type
|
233
|
+
FIT_BIKE_PROFILE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
234
|
+
FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
235
|
+
FIT_BIKE_PROFILE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
236
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
237
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
238
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
239
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID, (sizeof(FIT_UINT16Z)*1), FIT_BASE_TYPE_UINT16Z,
|
240
|
+
FIT_BIKE_PROFILE_FIELD_NUM_CUSTOM_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
241
|
+
FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEELSIZE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
242
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_WEIGHT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
243
|
+
FIT_BIKE_PROFILE_FIELD_NUM_POWER_CAL_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
244
|
+
FIT_BIKE_PROFILE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
245
|
+
FIT_BIKE_PROFILE_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
246
|
+
FIT_BIKE_PROFILE_FIELD_NUM_AUTO_WHEEL_CAL, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
247
|
+
FIT_BIKE_PROFILE_FIELD_NUM_AUTO_POWER_ZERO, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
248
|
+
FIT_BIKE_PROFILE_FIELD_NUM_ID, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
249
|
+
FIT_BIKE_PROFILE_FIELD_NUM_SPD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
250
|
+
FIT_BIKE_PROFILE_FIELD_NUM_CAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
251
|
+
FIT_BIKE_PROFILE_FIELD_NUM_SPDCAD_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
252
|
+
FIT_BIKE_PROFILE_FIELD_NUM_POWER_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
253
|
+
FIT_BIKE_PROFILE_FIELD_NUM_CRANK_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
254
|
+
FIT_BIKE_PROFILE_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
255
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
256
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_CAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
257
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_SPDCAD_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
258
|
+
FIT_BIKE_PROFILE_FIELD_NUM_BIKE_POWER_ANT_ID_TRANS_TYPE, (sizeof(FIT_UINT8Z)*1), FIT_BASE_TYPE_UINT8Z,
|
259
|
+
FIT_BIKE_PROFILE_FIELD_NUM_ODOMETER_ROLLOVER, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
260
|
+
}
|
261
|
+
};
|
262
|
+
|
263
|
+
const static FIT_ZONES_TARGET_MESG_DEF zones_target_mesg_def =
|
264
|
+
{
|
265
|
+
0, // reserved_1
|
266
|
+
FIT_ARCH_ENDIAN, // arch
|
267
|
+
FIT_MESG_NUM_ZONES_TARGET, // global_mesg_num
|
268
|
+
5, // num_fields
|
269
|
+
{ // field_def_num, size, base_type
|
270
|
+
FIT_ZONES_TARGET_FIELD_NUM_FUNCTIONAL_THRESHOLD_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
271
|
+
FIT_ZONES_TARGET_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
272
|
+
FIT_ZONES_TARGET_FIELD_NUM_THRESHOLD_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
273
|
+
FIT_ZONES_TARGET_FIELD_NUM_HR_CALC_TYPE, (sizeof(FIT_HR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM,
|
274
|
+
FIT_ZONES_TARGET_FIELD_NUM_PWR_CALC_TYPE, (sizeof(FIT_PWR_ZONE_CALC)*1), FIT_BASE_TYPE_ENUM,
|
275
|
+
}
|
276
|
+
};
|
277
|
+
|
278
|
+
const static FIT_SPORT_MESG_DEF sport_mesg_def =
|
279
|
+
{
|
280
|
+
0, // reserved_1
|
281
|
+
FIT_ARCH_ENDIAN, // arch
|
282
|
+
FIT_MESG_NUM_SPORT, // global_mesg_num
|
283
|
+
3, // num_fields
|
284
|
+
{ // field_def_num, size, base_type
|
285
|
+
FIT_SPORT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
286
|
+
FIT_SPORT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
287
|
+
FIT_SPORT_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
288
|
+
}
|
289
|
+
};
|
290
|
+
|
291
|
+
const static FIT_HR_ZONE_MESG_DEF hr_zone_mesg_def =
|
292
|
+
{
|
293
|
+
0, // reserved_1
|
294
|
+
FIT_ARCH_ENDIAN, // arch
|
295
|
+
FIT_MESG_NUM_HR_ZONE, // global_mesg_num
|
296
|
+
3, // num_fields
|
297
|
+
{ // field_def_num, size, base_type
|
298
|
+
FIT_HR_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
299
|
+
FIT_HR_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
300
|
+
FIT_HR_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
301
|
+
}
|
302
|
+
};
|
303
|
+
|
304
|
+
const static FIT_SPEED_ZONE_MESG_DEF speed_zone_mesg_def =
|
305
|
+
{
|
306
|
+
0, // reserved_1
|
307
|
+
FIT_ARCH_ENDIAN, // arch
|
308
|
+
FIT_MESG_NUM_SPEED_ZONE, // global_mesg_num
|
309
|
+
3, // num_fields
|
310
|
+
{ // field_def_num, size, base_type
|
311
|
+
FIT_SPEED_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
312
|
+
FIT_SPEED_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
313
|
+
FIT_SPEED_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
314
|
+
}
|
315
|
+
};
|
316
|
+
|
317
|
+
const static FIT_CADENCE_ZONE_MESG_DEF cadence_zone_mesg_def =
|
318
|
+
{
|
319
|
+
0, // reserved_1
|
320
|
+
FIT_ARCH_ENDIAN, // arch
|
321
|
+
FIT_MESG_NUM_CADENCE_ZONE, // global_mesg_num
|
322
|
+
3, // num_fields
|
323
|
+
{ // field_def_num, size, base_type
|
324
|
+
FIT_CADENCE_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
325
|
+
FIT_CADENCE_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
326
|
+
FIT_CADENCE_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
327
|
+
}
|
328
|
+
};
|
329
|
+
|
330
|
+
const static FIT_POWER_ZONE_MESG_DEF power_zone_mesg_def =
|
331
|
+
{
|
332
|
+
0, // reserved_1
|
333
|
+
FIT_ARCH_ENDIAN, // arch
|
334
|
+
FIT_MESG_NUM_POWER_ZONE, // global_mesg_num
|
335
|
+
3, // num_fields
|
336
|
+
{ // field_def_num, size, base_type
|
337
|
+
FIT_POWER_ZONE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
338
|
+
FIT_POWER_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
339
|
+
FIT_POWER_ZONE_FIELD_NUM_HIGH_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
340
|
+
}
|
341
|
+
};
|
342
|
+
|
343
|
+
const static FIT_MET_ZONE_MESG_DEF met_zone_mesg_def =
|
344
|
+
{
|
345
|
+
0, // reserved_1
|
346
|
+
FIT_ARCH_ENDIAN, // arch
|
347
|
+
FIT_MESG_NUM_MET_ZONE, // global_mesg_num
|
348
|
+
4, // num_fields
|
349
|
+
{ // field_def_num, size, base_type
|
350
|
+
FIT_MET_ZONE_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
351
|
+
FIT_MET_ZONE_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
352
|
+
FIT_MET_ZONE_FIELD_NUM_HIGH_BPM, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
353
|
+
FIT_MET_ZONE_FIELD_NUM_FAT_CALORIES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
354
|
+
}
|
355
|
+
};
|
356
|
+
|
357
|
+
const static FIT_GOAL_MESG_DEF goal_mesg_def =
|
358
|
+
{
|
359
|
+
0, // reserved_1
|
360
|
+
FIT_ARCH_ENDIAN, // arch
|
361
|
+
FIT_MESG_NUM_GOAL, // global_mesg_num
|
362
|
+
12, // num_fields
|
363
|
+
{ // field_def_num, size, base_type
|
364
|
+
FIT_GOAL_FIELD_NUM_START_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
365
|
+
FIT_GOAL_FIELD_NUM_END_DATE, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
366
|
+
FIT_GOAL_FIELD_NUM_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
367
|
+
FIT_GOAL_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
368
|
+
FIT_GOAL_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
369
|
+
FIT_GOAL_FIELD_NUM_RECURRENCE_VALUE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
370
|
+
FIT_GOAL_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
371
|
+
FIT_GOAL_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
372
|
+
FIT_GOAL_FIELD_NUM_TYPE, (sizeof(FIT_GOAL)*1), FIT_BASE_TYPE_ENUM,
|
373
|
+
FIT_GOAL_FIELD_NUM_REPEAT, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
374
|
+
FIT_GOAL_FIELD_NUM_RECURRENCE, (sizeof(FIT_GOAL_RECURRENCE)*1), FIT_BASE_TYPE_ENUM,
|
375
|
+
FIT_GOAL_FIELD_NUM_ENABLED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
376
|
+
}
|
377
|
+
};
|
378
|
+
|
379
|
+
const static FIT_ACTIVITY_MESG_DEF activity_mesg_def =
|
380
|
+
{
|
381
|
+
0, // reserved_1
|
382
|
+
FIT_ARCH_ENDIAN, // arch
|
383
|
+
FIT_MESG_NUM_ACTIVITY, // global_mesg_num
|
384
|
+
8, // num_fields
|
385
|
+
{ // field_def_num, size, base_type
|
386
|
+
FIT_ACTIVITY_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
387
|
+
FIT_ACTIVITY_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
388
|
+
FIT_ACTIVITY_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
389
|
+
FIT_ACTIVITY_FIELD_NUM_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
390
|
+
FIT_ACTIVITY_FIELD_NUM_TYPE, (sizeof(FIT_ACTIVITY)*1), FIT_BASE_TYPE_ENUM,
|
391
|
+
FIT_ACTIVITY_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
|
392
|
+
FIT_ACTIVITY_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
393
|
+
FIT_ACTIVITY_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
394
|
+
}
|
395
|
+
};
|
396
|
+
|
397
|
+
const static FIT_SESSION_MESG_DEF session_mesg_def =
|
398
|
+
{
|
399
|
+
0, // reserved_1
|
400
|
+
FIT_ARCH_ENDIAN, // arch
|
401
|
+
FIT_MESG_NUM_SESSION, // global_mesg_num
|
402
|
+
75, // num_fields
|
403
|
+
{ // field_def_num, size, base_type
|
404
|
+
FIT_SESSION_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
405
|
+
FIT_SESSION_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
406
|
+
FIT_SESSION_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
407
|
+
FIT_SESSION_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
408
|
+
FIT_SESSION_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
409
|
+
FIT_SESSION_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
410
|
+
FIT_SESSION_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
411
|
+
FIT_SESSION_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
412
|
+
FIT_SESSION_FIELD_NUM_NEC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
413
|
+
FIT_SESSION_FIELD_NUM_NEC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
414
|
+
FIT_SESSION_FIELD_NUM_SWC_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
415
|
+
FIT_SESSION_FIELD_NUM_SWC_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
416
|
+
FIT_SESSION_FIELD_NUM_AVG_STROKE_COUNT, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
417
|
+
FIT_SESSION_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
418
|
+
FIT_SESSION_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
419
|
+
FIT_SESSION_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
420
|
+
FIT_SESSION_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
421
|
+
FIT_SESSION_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
422
|
+
FIT_SESSION_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
423
|
+
FIT_SESSION_FIELD_NUM_AVG_LAP_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
424
|
+
FIT_SESSION_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
425
|
+
FIT_SESSION_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
426
|
+
FIT_SESSION_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
427
|
+
FIT_SESSION_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
428
|
+
FIT_SESSION_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
429
|
+
FIT_SESSION_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
430
|
+
FIT_SESSION_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
431
|
+
FIT_SESSION_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
432
|
+
FIT_SESSION_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
433
|
+
FIT_SESSION_FIELD_NUM_FIRST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
434
|
+
FIT_SESSION_FIELD_NUM_NUM_LAPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
435
|
+
FIT_SESSION_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
436
|
+
FIT_SESSION_FIELD_NUM_TRAINING_STRESS_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
437
|
+
FIT_SESSION_FIELD_NUM_INTENSITY_FACTOR, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
438
|
+
FIT_SESSION_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16,
|
439
|
+
FIT_SESSION_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
440
|
+
FIT_SESSION_FIELD_NUM_POOL_LENGTH, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
441
|
+
FIT_SESSION_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
442
|
+
FIT_SESSION_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
443
|
+
FIT_SESSION_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
444
|
+
FIT_SESSION_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
445
|
+
FIT_SESSION_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
446
|
+
FIT_SESSION_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
447
|
+
FIT_SESSION_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
448
|
+
FIT_SESSION_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
449
|
+
FIT_SESSION_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
450
|
+
FIT_SESSION_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
451
|
+
FIT_SESSION_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
452
|
+
FIT_SESSION_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
453
|
+
FIT_SESSION_FIELD_NUM_BEST_LAP_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
454
|
+
FIT_SESSION_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
455
|
+
FIT_SESSION_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
456
|
+
FIT_SESSION_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
457
|
+
FIT_SESSION_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
458
|
+
FIT_SESSION_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
459
|
+
FIT_SESSION_FIELD_NUM_MAX_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
460
|
+
FIT_SESSION_FIELD_NUM_AVG_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
461
|
+
FIT_SESSION_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
|
462
|
+
FIT_SESSION_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
463
|
+
FIT_SESSION_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
464
|
+
FIT_SESSION_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
465
|
+
FIT_SESSION_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
466
|
+
FIT_SESSION_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
467
|
+
FIT_SESSION_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
468
|
+
FIT_SESSION_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
469
|
+
FIT_SESSION_FIELD_NUM_TOTAL_TRAINING_EFFECT, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
470
|
+
FIT_SESSION_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
471
|
+
FIT_SESSION_FIELD_NUM_TRIGGER, (sizeof(FIT_SESSION_TRIGGER)*1), FIT_BASE_TYPE_ENUM,
|
472
|
+
FIT_SESSION_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM,
|
473
|
+
FIT_SESSION_FIELD_NUM_POOL_LENGTH_UNIT, (sizeof(FIT_DISPLAY_MEASURE)*1), FIT_BASE_TYPE_ENUM,
|
474
|
+
FIT_SESSION_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
475
|
+
FIT_SESSION_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
|
476
|
+
FIT_SESSION_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
|
477
|
+
FIT_SESSION_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
478
|
+
FIT_SESSION_FIELD_NUM_OPPONENT_NAME, (sizeof(FIT_STRING)*1), FIT_BASE_TYPE_STRING,
|
479
|
+
}
|
480
|
+
};
|
481
|
+
|
482
|
+
const static FIT_LAP_MESG_DEF lap_mesg_def =
|
483
|
+
{
|
484
|
+
0, // reserved_1
|
485
|
+
FIT_ARCH_ENDIAN, // arch
|
486
|
+
FIT_MESG_NUM_LAP, // global_mesg_num
|
487
|
+
65, // num_fields
|
488
|
+
{ // field_def_num, size, base_type
|
489
|
+
FIT_LAP_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
490
|
+
FIT_LAP_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
491
|
+
FIT_LAP_FIELD_NUM_START_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
492
|
+
FIT_LAP_FIELD_NUM_START_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
493
|
+
FIT_LAP_FIELD_NUM_END_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
494
|
+
FIT_LAP_FIELD_NUM_END_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
495
|
+
FIT_LAP_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
496
|
+
FIT_LAP_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
497
|
+
FIT_LAP_FIELD_NUM_TOTAL_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
498
|
+
FIT_LAP_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
499
|
+
FIT_LAP_FIELD_NUM_TOTAL_WORK, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
500
|
+
FIT_LAP_FIELD_NUM_TOTAL_MOVING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
501
|
+
FIT_LAP_FIELD_NUM_TIME_IN_HR_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
502
|
+
FIT_LAP_FIELD_NUM_TIME_IN_SPEED_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
503
|
+
FIT_LAP_FIELD_NUM_TIME_IN_CADENCE_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
504
|
+
FIT_LAP_FIELD_NUM_TIME_IN_POWER_ZONE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
505
|
+
FIT_LAP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
506
|
+
FIT_LAP_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
507
|
+
FIT_LAP_FIELD_NUM_TOTAL_FAT_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
508
|
+
FIT_LAP_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
509
|
+
FIT_LAP_FIELD_NUM_MAX_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
510
|
+
FIT_LAP_FIELD_NUM_AVG_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
511
|
+
FIT_LAP_FIELD_NUM_MAX_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
512
|
+
FIT_LAP_FIELD_NUM_TOTAL_ASCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
513
|
+
FIT_LAP_FIELD_NUM_TOTAL_DESCENT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
514
|
+
FIT_LAP_FIELD_NUM_NUM_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
515
|
+
FIT_LAP_FIELD_NUM_NORMALIZED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
516
|
+
FIT_LAP_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE_100)*1), FIT_BASE_TYPE_UINT16,
|
517
|
+
FIT_LAP_FIELD_NUM_FIRST_LENGTH_INDEX, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
518
|
+
FIT_LAP_FIELD_NUM_AVG_STROKE_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
519
|
+
FIT_LAP_FIELD_NUM_NUM_ACTIVE_LENGTHS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
520
|
+
FIT_LAP_FIELD_NUM_AVG_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
521
|
+
FIT_LAP_FIELD_NUM_MAX_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
522
|
+
FIT_LAP_FIELD_NUM_AVG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
523
|
+
FIT_LAP_FIELD_NUM_AVG_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
524
|
+
FIT_LAP_FIELD_NUM_AVG_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
525
|
+
FIT_LAP_FIELD_NUM_MAX_POS_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
526
|
+
FIT_LAP_FIELD_NUM_MAX_NEG_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
527
|
+
FIT_LAP_FIELD_NUM_AVG_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
528
|
+
FIT_LAP_FIELD_NUM_AVG_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
529
|
+
FIT_LAP_FIELD_NUM_MAX_POS_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
530
|
+
FIT_LAP_FIELD_NUM_MAX_NEG_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
531
|
+
FIT_LAP_FIELD_NUM_REPETITION_NUM, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
532
|
+
FIT_LAP_FIELD_NUM_MIN_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
533
|
+
FIT_LAP_FIELD_NUM_WKT_STEP_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
534
|
+
FIT_LAP_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
535
|
+
FIT_LAP_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
536
|
+
FIT_LAP_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
537
|
+
FIT_LAP_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
538
|
+
FIT_LAP_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
|
539
|
+
FIT_LAP_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
540
|
+
FIT_LAP_FIELD_NUM_AVG_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
541
|
+
FIT_LAP_FIELD_NUM_MAX_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
542
|
+
FIT_LAP_FIELD_NUM_AVG_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
543
|
+
FIT_LAP_FIELD_NUM_MAX_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
544
|
+
FIT_LAP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM,
|
545
|
+
FIT_LAP_FIELD_NUM_LAP_TRIGGER, (sizeof(FIT_LAP_TRIGGER)*1), FIT_BASE_TYPE_ENUM,
|
546
|
+
FIT_LAP_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
547
|
+
FIT_LAP_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
548
|
+
FIT_LAP_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM,
|
549
|
+
FIT_LAP_FIELD_NUM_SUB_SPORT, (sizeof(FIT_SUB_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
550
|
+
FIT_LAP_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
551
|
+
FIT_LAP_FIELD_NUM_AVG_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
|
552
|
+
FIT_LAP_FIELD_NUM_MAX_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
|
553
|
+
FIT_LAP_FIELD_NUM_MIN_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
554
|
+
}
|
555
|
+
};
|
556
|
+
|
557
|
+
const static FIT_LENGTH_MESG_DEF length_mesg_def =
|
558
|
+
{
|
559
|
+
0, // reserved_1
|
560
|
+
FIT_ARCH_ENDIAN, // arch
|
561
|
+
FIT_MESG_NUM_LENGTH, // global_mesg_num
|
562
|
+
18, // num_fields
|
563
|
+
{ // field_def_num, size, base_type
|
564
|
+
FIT_LENGTH_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
565
|
+
FIT_LENGTH_FIELD_NUM_START_TIME, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
566
|
+
FIT_LENGTH_FIELD_NUM_TOTAL_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
567
|
+
FIT_LENGTH_FIELD_NUM_TOTAL_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
568
|
+
FIT_LENGTH_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
569
|
+
FIT_LENGTH_FIELD_NUM_TOTAL_STROKES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
570
|
+
FIT_LENGTH_FIELD_NUM_AVG_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
571
|
+
FIT_LENGTH_FIELD_NUM_TOTAL_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
572
|
+
FIT_LENGTH_FIELD_NUM_PLAYER_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
573
|
+
FIT_LENGTH_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
574
|
+
FIT_LENGTH_FIELD_NUM_STROKE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
575
|
+
FIT_LENGTH_FIELD_NUM_ZONE_COUNT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
576
|
+
FIT_LENGTH_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
|
577
|
+
FIT_LENGTH_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
578
|
+
FIT_LENGTH_FIELD_NUM_SWIM_STROKE, (sizeof(FIT_SWIM_STROKE)*1), FIT_BASE_TYPE_ENUM,
|
579
|
+
FIT_LENGTH_FIELD_NUM_AVG_SWIMMING_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
580
|
+
FIT_LENGTH_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
581
|
+
FIT_LENGTH_FIELD_NUM_LENGTH_TYPE, (sizeof(FIT_LENGTH_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
582
|
+
}
|
583
|
+
};
|
584
|
+
|
585
|
+
const static FIT_RECORD_MESG_DEF record_mesg_def =
|
586
|
+
{
|
587
|
+
0, // reserved_1
|
588
|
+
FIT_ARCH_ENDIAN, // arch
|
589
|
+
FIT_MESG_NUM_RECORD, // global_mesg_num
|
590
|
+
34, // num_fields
|
591
|
+
{ // field_def_num, size, base_type
|
592
|
+
FIT_RECORD_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
593
|
+
FIT_RECORD_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
594
|
+
FIT_RECORD_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
595
|
+
FIT_RECORD_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
596
|
+
FIT_RECORD_FIELD_NUM_TIME_FROM_COURSE, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
597
|
+
FIT_RECORD_FIELD_NUM_TOTAL_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
598
|
+
FIT_RECORD_FIELD_NUM_ACCUMULATED_POWER, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
599
|
+
FIT_RECORD_FIELD_NUM_ALTITUDE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
600
|
+
FIT_RECORD_FIELD_NUM_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
601
|
+
FIT_RECORD_FIELD_NUM_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
602
|
+
FIT_RECORD_FIELD_NUM_GRADE, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
603
|
+
FIT_RECORD_FIELD_NUM_COMPRESSED_ACCUMULATED_POWER, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
604
|
+
FIT_RECORD_FIELD_NUM_VERTICAL_SPEED, (sizeof(FIT_SINT16)*1), FIT_BASE_TYPE_SINT16,
|
605
|
+
FIT_RECORD_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
606
|
+
FIT_RECORD_FIELD_NUM_BALL_SPEED, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
607
|
+
FIT_RECORD_FIELD_NUM_CADENCE256, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
608
|
+
FIT_RECORD_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
609
|
+
FIT_RECORD_FIELD_NUM_CADENCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
610
|
+
FIT_RECORD_FIELD_NUM_COMPRESSED_SPEED_DISTANCE, (sizeof(FIT_BYTE)*3), FIT_BASE_TYPE_BYTE,
|
611
|
+
FIT_RECORD_FIELD_NUM_RESISTANCE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
612
|
+
FIT_RECORD_FIELD_NUM_CYCLE_LENGTH, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
613
|
+
FIT_RECORD_FIELD_NUM_TEMPERATURE, (sizeof(FIT_SINT8)*1), FIT_BASE_TYPE_SINT8,
|
614
|
+
FIT_RECORD_FIELD_NUM_SPEED_1S, (sizeof(FIT_UINT8)*5), FIT_BASE_TYPE_UINT8,
|
615
|
+
FIT_RECORD_FIELD_NUM_CYCLES, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
616
|
+
FIT_RECORD_FIELD_NUM_LEFT_RIGHT_BALANCE, (sizeof(FIT_LEFT_RIGHT_BALANCE)*1), FIT_BASE_TYPE_UINT8,
|
617
|
+
FIT_RECORD_FIELD_NUM_GPS_ACCURACY, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
618
|
+
FIT_RECORD_FIELD_NUM_LEFT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
619
|
+
FIT_RECORD_FIELD_NUM_RIGHT_TORQUE_EFFECTIVENESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
620
|
+
FIT_RECORD_FIELD_NUM_LEFT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
621
|
+
FIT_RECORD_FIELD_NUM_RIGHT_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
622
|
+
FIT_RECORD_FIELD_NUM_COMBINED_PEDAL_SMOOTHNESS, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
623
|
+
FIT_RECORD_FIELD_NUM_TIME128, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
624
|
+
FIT_RECORD_FIELD_NUM_STROKE_TYPE, (sizeof(FIT_STROKE_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
625
|
+
FIT_RECORD_FIELD_NUM_ZONE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
626
|
+
}
|
627
|
+
};
|
628
|
+
|
629
|
+
const static FIT_EVENT_MESG_DEF event_mesg_def =
|
630
|
+
{
|
631
|
+
0, // reserved_1
|
632
|
+
FIT_ARCH_ENDIAN, // arch
|
633
|
+
FIT_MESG_NUM_EVENT, // global_mesg_num
|
634
|
+
8, // num_fields
|
635
|
+
{ // field_def_num, size, base_type
|
636
|
+
FIT_EVENT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
637
|
+
FIT_EVENT_FIELD_NUM_DATA, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
638
|
+
FIT_EVENT_FIELD_NUM_DATA16, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
639
|
+
FIT_EVENT_FIELD_NUM_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
640
|
+
FIT_EVENT_FIELD_NUM_OPPONENT_SCORE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
641
|
+
FIT_EVENT_FIELD_NUM_EVENT, (sizeof(FIT_EVENT)*1), FIT_BASE_TYPE_ENUM,
|
642
|
+
FIT_EVENT_FIELD_NUM_EVENT_TYPE, (sizeof(FIT_EVENT_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
643
|
+
FIT_EVENT_FIELD_NUM_EVENT_GROUP, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
644
|
+
}
|
645
|
+
};
|
646
|
+
|
647
|
+
const static FIT_DEVICE_INFO_MESG_DEF device_info_mesg_def =
|
648
|
+
{
|
649
|
+
0, // reserved_1
|
650
|
+
FIT_ARCH_ENDIAN, // arch
|
651
|
+
FIT_MESG_NUM_DEVICE_INFO, // global_mesg_num
|
652
|
+
11, // num_fields
|
653
|
+
{ // field_def_num, size, base_type
|
654
|
+
FIT_DEVICE_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
655
|
+
FIT_DEVICE_INFO_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
|
656
|
+
FIT_DEVICE_INFO_FIELD_NUM_CUM_OPERATING_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
657
|
+
FIT_DEVICE_INFO_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
|
658
|
+
FIT_DEVICE_INFO_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
659
|
+
FIT_DEVICE_INFO_FIELD_NUM_SOFTWARE_VERSION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
660
|
+
FIT_DEVICE_INFO_FIELD_NUM_BATTERY_VOLTAGE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
661
|
+
FIT_DEVICE_INFO_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8,
|
662
|
+
FIT_DEVICE_INFO_FIELD_NUM_DEVICE_TYPE, (sizeof(FIT_DEVICE_TYPE)*1), FIT_BASE_TYPE_UINT8,
|
663
|
+
FIT_DEVICE_INFO_FIELD_NUM_HARDWARE_VERSION, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
664
|
+
FIT_DEVICE_INFO_FIELD_NUM_BATTERY_STATUS, (sizeof(FIT_BATTERY_STATUS)*1), FIT_BASE_TYPE_UINT8,
|
665
|
+
}
|
666
|
+
};
|
667
|
+
|
668
|
+
const static FIT_HRV_MESG_DEF hrv_mesg_def =
|
669
|
+
{
|
670
|
+
0, // reserved_1
|
671
|
+
FIT_ARCH_ENDIAN, // arch
|
672
|
+
FIT_MESG_NUM_HRV, // global_mesg_num
|
673
|
+
1, // num_fields
|
674
|
+
{ // field_def_num, size, base_type
|
675
|
+
FIT_HRV_FIELD_NUM_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
676
|
+
}
|
677
|
+
};
|
678
|
+
|
679
|
+
const static FIT_COURSE_MESG_DEF course_mesg_def =
|
680
|
+
{
|
681
|
+
0, // reserved_1
|
682
|
+
FIT_ARCH_ENDIAN, // arch
|
683
|
+
FIT_MESG_NUM_COURSE, // global_mesg_num
|
684
|
+
3, // num_fields
|
685
|
+
{ // field_def_num, size, base_type
|
686
|
+
FIT_COURSE_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
687
|
+
FIT_COURSE_FIELD_NUM_CAPABILITIES, (sizeof(FIT_COURSE_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
|
688
|
+
FIT_COURSE_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
689
|
+
}
|
690
|
+
};
|
691
|
+
|
692
|
+
const static FIT_COURSE_POINT_MESG_DEF course_point_mesg_def =
|
693
|
+
{
|
694
|
+
0, // reserved_1
|
695
|
+
FIT_ARCH_ENDIAN, // arch
|
696
|
+
FIT_MESG_NUM_COURSE_POINT, // global_mesg_num
|
697
|
+
7, // num_fields
|
698
|
+
{ // field_def_num, size, base_type
|
699
|
+
FIT_COURSE_POINT_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
700
|
+
FIT_COURSE_POINT_FIELD_NUM_POSITION_LAT, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
701
|
+
FIT_COURSE_POINT_FIELD_NUM_POSITION_LONG, (sizeof(FIT_SINT32)*1), FIT_BASE_TYPE_SINT32,
|
702
|
+
FIT_COURSE_POINT_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
703
|
+
FIT_COURSE_POINT_FIELD_NUM_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
704
|
+
FIT_COURSE_POINT_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
705
|
+
FIT_COURSE_POINT_FIELD_NUM_TYPE, (sizeof(FIT_COURSE_POINT)*1), FIT_BASE_TYPE_ENUM,
|
706
|
+
}
|
707
|
+
};
|
708
|
+
|
709
|
+
const static FIT_WORKOUT_MESG_DEF workout_mesg_def =
|
710
|
+
{
|
711
|
+
0, // reserved_1
|
712
|
+
FIT_ARCH_ENDIAN, // arch
|
713
|
+
FIT_MESG_NUM_WORKOUT, // global_mesg_num
|
714
|
+
4, // num_fields
|
715
|
+
{ // field_def_num, size, base_type
|
716
|
+
FIT_WORKOUT_FIELD_NUM_CAPABILITIES, (sizeof(FIT_WORKOUT_CAPABILITIES)*1), FIT_BASE_TYPE_UINT32Z,
|
717
|
+
FIT_WORKOUT_FIELD_NUM_WKT_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
718
|
+
FIT_WORKOUT_FIELD_NUM_NUM_VALID_STEPS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
719
|
+
FIT_WORKOUT_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
720
|
+
}
|
721
|
+
};
|
722
|
+
|
723
|
+
const static FIT_WORKOUT_STEP_MESG_DEF workout_step_mesg_def =
|
724
|
+
{
|
725
|
+
0, // reserved_1
|
726
|
+
FIT_ARCH_ENDIAN, // arch
|
727
|
+
FIT_MESG_NUM_WORKOUT_STEP, // global_mesg_num
|
728
|
+
9, // num_fields
|
729
|
+
{ // field_def_num, size, base_type
|
730
|
+
FIT_WORKOUT_STEP_FIELD_NUM_WKT_STEP_NAME, (sizeof(FIT_STRING)*16), FIT_BASE_TYPE_STRING,
|
731
|
+
FIT_WORKOUT_STEP_FIELD_NUM_DURATION_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
732
|
+
FIT_WORKOUT_STEP_FIELD_NUM_TARGET_VALUE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
733
|
+
FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_LOW, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
734
|
+
FIT_WORKOUT_STEP_FIELD_NUM_CUSTOM_TARGET_VALUE_HIGH, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
735
|
+
FIT_WORKOUT_STEP_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
736
|
+
FIT_WORKOUT_STEP_FIELD_NUM_DURATION_TYPE, (sizeof(FIT_WKT_STEP_DURATION)*1), FIT_BASE_TYPE_ENUM,
|
737
|
+
FIT_WORKOUT_STEP_FIELD_NUM_TARGET_TYPE, (sizeof(FIT_WKT_STEP_TARGET)*1), FIT_BASE_TYPE_ENUM,
|
738
|
+
FIT_WORKOUT_STEP_FIELD_NUM_INTENSITY, (sizeof(FIT_INTENSITY)*1), FIT_BASE_TYPE_ENUM,
|
739
|
+
}
|
740
|
+
};
|
741
|
+
|
742
|
+
const static FIT_SCHEDULE_MESG_DEF schedule_mesg_def =
|
743
|
+
{
|
744
|
+
0, // reserved_1
|
745
|
+
FIT_ARCH_ENDIAN, // arch
|
746
|
+
FIT_MESG_NUM_SCHEDULE, // global_mesg_num
|
747
|
+
7, // num_fields
|
748
|
+
{ // field_def_num, size, base_type
|
749
|
+
FIT_SCHEDULE_FIELD_NUM_SERIAL_NUMBER, (sizeof(FIT_UINT32Z)*1), FIT_BASE_TYPE_UINT32Z,
|
750
|
+
FIT_SCHEDULE_FIELD_NUM_TIME_CREATED, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
751
|
+
FIT_SCHEDULE_FIELD_NUM_SCHEDULED_TIME, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
752
|
+
FIT_SCHEDULE_FIELD_NUM_MANUFACTURER, (sizeof(FIT_MANUFACTURER)*1), FIT_BASE_TYPE_UINT16,
|
753
|
+
FIT_SCHEDULE_FIELD_NUM_PRODUCT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
754
|
+
FIT_SCHEDULE_FIELD_NUM_COMPLETED, (sizeof(FIT_BOOL)*1), FIT_BASE_TYPE_ENUM,
|
755
|
+
FIT_SCHEDULE_FIELD_NUM_TYPE, (sizeof(FIT_SCHEDULE)*1), FIT_BASE_TYPE_ENUM,
|
756
|
+
}
|
757
|
+
};
|
758
|
+
|
759
|
+
const static FIT_TOTALS_MESG_DEF totals_mesg_def =
|
760
|
+
{
|
761
|
+
0, // reserved_1
|
762
|
+
FIT_ARCH_ENDIAN, // arch
|
763
|
+
FIT_MESG_NUM_TOTALS, // global_mesg_num
|
764
|
+
9, // num_fields
|
765
|
+
{ // field_def_num, size, base_type
|
766
|
+
FIT_TOTALS_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
767
|
+
FIT_TOTALS_FIELD_NUM_TIMER_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
768
|
+
FIT_TOTALS_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
769
|
+
FIT_TOTALS_FIELD_NUM_CALORIES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
770
|
+
FIT_TOTALS_FIELD_NUM_ELAPSED_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
771
|
+
FIT_TOTALS_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
772
|
+
FIT_TOTALS_FIELD_NUM_MESSAGE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
773
|
+
FIT_TOTALS_FIELD_NUM_SESSIONS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
774
|
+
FIT_TOTALS_FIELD_NUM_SPORT, (sizeof(FIT_SPORT)*1), FIT_BASE_TYPE_ENUM,
|
775
|
+
}
|
776
|
+
};
|
777
|
+
|
778
|
+
const static FIT_WEIGHT_SCALE_MESG_DEF weight_scale_mesg_def =
|
779
|
+
{
|
780
|
+
0, // reserved_1
|
781
|
+
FIT_ARCH_ENDIAN, // arch
|
782
|
+
FIT_MESG_NUM_WEIGHT_SCALE, // global_mesg_num
|
783
|
+
13, // num_fields
|
784
|
+
{ // field_def_num, size, base_type
|
785
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
786
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_WEIGHT, (sizeof(FIT_WEIGHT)*1), FIT_BASE_TYPE_UINT16,
|
787
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_FAT, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
788
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_PERCENT_HYDRATION, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
789
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
790
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_BONE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
791
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_MUSCLE_MASS, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
792
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_BASAL_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
793
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_ACTIVE_MET, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
794
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
795
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_PHYSIQUE_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
796
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_METABOLIC_AGE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
797
|
+
FIT_WEIGHT_SCALE_FIELD_NUM_VISCERAL_FAT_RATING, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
798
|
+
}
|
799
|
+
};
|
800
|
+
|
801
|
+
const static FIT_BLOOD_PRESSURE_MESG_DEF blood_pressure_mesg_def =
|
802
|
+
{
|
803
|
+
0, // reserved_1
|
804
|
+
FIT_ARCH_ENDIAN, // arch
|
805
|
+
FIT_MESG_NUM_BLOOD_PRESSURE, // global_mesg_num
|
806
|
+
11, // num_fields
|
807
|
+
{ // field_def_num, size, base_type
|
808
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
809
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_SYSTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
810
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_DIASTOLIC_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
811
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_MEAN_ARTERIAL_PRESSURE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
812
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_3_SAMPLE_MEAN, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
813
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_MORNING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
814
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_MAP_EVENING_VALUES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
815
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_USER_PROFILE_INDEX, (sizeof(FIT_MESSAGE_INDEX)*1), FIT_BASE_TYPE_UINT16,
|
816
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE, (sizeof(FIT_UINT8)*1), FIT_BASE_TYPE_UINT8,
|
817
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_HEART_RATE_TYPE, (sizeof(FIT_HR_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
818
|
+
FIT_BLOOD_PRESSURE_FIELD_NUM_STATUS, (sizeof(FIT_BP_STATUS)*1), FIT_BASE_TYPE_ENUM,
|
819
|
+
}
|
820
|
+
};
|
821
|
+
|
822
|
+
const static FIT_MONITORING_INFO_MESG_DEF monitoring_info_mesg_def =
|
823
|
+
{
|
824
|
+
0, // reserved_1
|
825
|
+
FIT_ARCH_ENDIAN, // arch
|
826
|
+
FIT_MESG_NUM_MONITORING_INFO, // global_mesg_num
|
827
|
+
2, // num_fields
|
828
|
+
{ // field_def_num, size, base_type
|
829
|
+
FIT_MONITORING_INFO_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
830
|
+
FIT_MONITORING_INFO_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
831
|
+
}
|
832
|
+
};
|
833
|
+
|
834
|
+
const static FIT_MONITORING_MESG_DEF monitoring_mesg_def =
|
835
|
+
{
|
836
|
+
0, // reserved_1
|
837
|
+
FIT_ARCH_ENDIAN, // arch
|
838
|
+
FIT_MESG_NUM_MONITORING, // global_mesg_num
|
839
|
+
12, // num_fields
|
840
|
+
{ // field_def_num, size, base_type
|
841
|
+
FIT_MONITORING_FIELD_NUM_TIMESTAMP, (sizeof(FIT_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
842
|
+
FIT_MONITORING_FIELD_NUM_DISTANCE, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
843
|
+
FIT_MONITORING_FIELD_NUM_CYCLES, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
844
|
+
FIT_MONITORING_FIELD_NUM_ACTIVE_TIME, (sizeof(FIT_UINT32)*1), FIT_BASE_TYPE_UINT32,
|
845
|
+
FIT_MONITORING_FIELD_NUM_LOCAL_TIMESTAMP, (sizeof(FIT_LOCAL_DATE_TIME)*1), FIT_BASE_TYPE_UINT32,
|
846
|
+
FIT_MONITORING_FIELD_NUM_CALORIES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
847
|
+
FIT_MONITORING_FIELD_NUM_COMPRESSED_DISTANCE, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
848
|
+
FIT_MONITORING_FIELD_NUM_COMPRESSED_CYCLES, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
849
|
+
FIT_MONITORING_FIELD_NUM_COMPRESSED_ACTIVE_TIME, (sizeof(FIT_UINT16)*1), FIT_BASE_TYPE_UINT16,
|
850
|
+
FIT_MONITORING_FIELD_NUM_DEVICE_INDEX, (sizeof(FIT_DEVICE_INDEX)*1), FIT_BASE_TYPE_UINT8,
|
851
|
+
FIT_MONITORING_FIELD_NUM_ACTIVITY_TYPE, (sizeof(FIT_ACTIVITY_TYPE)*1), FIT_BASE_TYPE_ENUM,
|
852
|
+
FIT_MONITORING_FIELD_NUM_ACTIVITY_SUBTYPE, (sizeof(FIT_ACTIVITY_SUBTYPE)*1), FIT_BASE_TYPE_ENUM,
|
853
|
+
}
|
854
|
+
};
|
855
|
+
|
856
|
+
|
857
|
+
const FIT_CONST_MESG_DEF_PTR fit_mesg_defs[] =
|
858
|
+
{
|
859
|
+
(FIT_CONST_MESG_DEF_PTR) &pad_mesg_def,
|
860
|
+
(FIT_CONST_MESG_DEF_PTR) &file_id_mesg_def,
|
861
|
+
(FIT_CONST_MESG_DEF_PTR) &file_creator_mesg_def,
|
862
|
+
(FIT_CONST_MESG_DEF_PTR) &software_mesg_def,
|
863
|
+
(FIT_CONST_MESG_DEF_PTR) &slave_device_mesg_def,
|
864
|
+
(FIT_CONST_MESG_DEF_PTR) &capabilities_mesg_def,
|
865
|
+
(FIT_CONST_MESG_DEF_PTR) &file_capabilities_mesg_def,
|
866
|
+
(FIT_CONST_MESG_DEF_PTR) &mesg_capabilities_mesg_def,
|
867
|
+
(FIT_CONST_MESG_DEF_PTR) &field_capabilities_mesg_def,
|
868
|
+
(FIT_CONST_MESG_DEF_PTR) &device_settings_mesg_def,
|
869
|
+
(FIT_CONST_MESG_DEF_PTR) &user_profile_mesg_def,
|
870
|
+
(FIT_CONST_MESG_DEF_PTR) &hrm_profile_mesg_def,
|
871
|
+
(FIT_CONST_MESG_DEF_PTR) &sdm_profile_mesg_def,
|
872
|
+
(FIT_CONST_MESG_DEF_PTR) &bike_profile_mesg_def,
|
873
|
+
(FIT_CONST_MESG_DEF_PTR) &zones_target_mesg_def,
|
874
|
+
(FIT_CONST_MESG_DEF_PTR) &sport_mesg_def,
|
875
|
+
(FIT_CONST_MESG_DEF_PTR) &hr_zone_mesg_def,
|
876
|
+
(FIT_CONST_MESG_DEF_PTR) &speed_zone_mesg_def,
|
877
|
+
(FIT_CONST_MESG_DEF_PTR) &cadence_zone_mesg_def,
|
878
|
+
(FIT_CONST_MESG_DEF_PTR) &power_zone_mesg_def,
|
879
|
+
(FIT_CONST_MESG_DEF_PTR) &met_zone_mesg_def,
|
880
|
+
(FIT_CONST_MESG_DEF_PTR) &goal_mesg_def,
|
881
|
+
(FIT_CONST_MESG_DEF_PTR) &activity_mesg_def,
|
882
|
+
(FIT_CONST_MESG_DEF_PTR) &session_mesg_def,
|
883
|
+
(FIT_CONST_MESG_DEF_PTR) &lap_mesg_def,
|
884
|
+
(FIT_CONST_MESG_DEF_PTR) &length_mesg_def,
|
885
|
+
(FIT_CONST_MESG_DEF_PTR) &record_mesg_def,
|
886
|
+
(FIT_CONST_MESG_DEF_PTR) &event_mesg_def,
|
887
|
+
(FIT_CONST_MESG_DEF_PTR) &device_info_mesg_def,
|
888
|
+
(FIT_CONST_MESG_DEF_PTR) &hrv_mesg_def,
|
889
|
+
(FIT_CONST_MESG_DEF_PTR) &course_mesg_def,
|
890
|
+
(FIT_CONST_MESG_DEF_PTR) &course_point_mesg_def,
|
891
|
+
(FIT_CONST_MESG_DEF_PTR) &workout_mesg_def,
|
892
|
+
(FIT_CONST_MESG_DEF_PTR) &workout_step_mesg_def,
|
893
|
+
(FIT_CONST_MESG_DEF_PTR) &schedule_mesg_def,
|
894
|
+
(FIT_CONST_MESG_DEF_PTR) &totals_mesg_def,
|
895
|
+
(FIT_CONST_MESG_DEF_PTR) &weight_scale_mesg_def,
|
896
|
+
(FIT_CONST_MESG_DEF_PTR) &blood_pressure_mesg_def,
|
897
|
+
(FIT_CONST_MESG_DEF_PTR) &monitoring_info_mesg_def,
|
898
|
+
(FIT_CONST_MESG_DEF_PTR) &monitoring_mesg_def,
|
899
|
+
};
|