trackswap 0.0.1 → 0.0.2
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.
- package/dist/FIT/base.d.ts +91 -0
- package/dist/FIT/base.js +101 -0
- package/dist/FIT/crc.d.ts +1 -0
- package/dist/FIT/crc.js +16 -0
- package/dist/FIT/decoder.d.ts +83 -0
- package/dist/FIT/decoder.js +323 -0
- package/dist/FIT/encoder.d.ts +142 -0
- package/dist/FIT/encoder.js +445 -0
- package/dist/FIT/index.d.ts +12 -0
- package/dist/FIT/index.js +13 -0
- package/dist/FIT/mesg.d.ts +40 -0
- package/dist/FIT/mesg.js +208 -0
- package/dist/FIT/middleware.d.ts +48 -0
- package/dist/FIT/middleware.js +206 -0
- package/dist/FIT/plugins.d.ts +26 -0
- package/dist/FIT/plugins.js +104 -0
- package/dist/FIT/processor.d.ts +58 -0
- package/dist/FIT/processor.js +170 -0
- package/dist/FIT/types/course_point.d.ts +56 -0
- package/dist/FIT/types/course_point.js +58 -0
- package/dist/FIT/types/event.d.ts +49 -0
- package/dist/FIT/types/event.js +50 -0
- package/dist/FIT/types/event_type.d.ts +18 -0
- package/dist/FIT/types/event_type.js +19 -0
- package/dist/FIT/types/file.d.ts +23 -0
- package/dist/FIT/types/file.js +24 -0
- package/dist/FIT/types/index.d.ts +119 -0
- package/dist/FIT/types/index.js +297 -0
- package/dist/FIT/types/mesg_num.d.ts +105 -0
- package/dist/FIT/types/mesg_num.js +106 -0
- package/dist/FIT/types/sport.d.ts +47 -0
- package/dist/FIT/types/sport.js +48 -0
- package/dist/FIT/types.d.ts +231 -0
- package/dist/FIT/types.js +1 -0
- package/dist/FIT/util.d.ts +1 -0
- package/dist/FIT/util.js +7 -0
- package/dist/GPX/base.d.ts +43 -67
- package/dist/GPX/base.js +40 -67
- package/dist/GPX/converters.d.ts +12 -36
- package/dist/GPX/converters.js +11 -103
- package/dist/GPX/decoder.d.ts +5 -5
- package/dist/GPX/decoder.js +6 -0
- package/dist/GPX/encoder.d.ts +4 -0
- package/dist/GPX/encoder.js +3 -0
- package/dist/GPX/index.d.ts +1 -1
- package/dist/GPX/index.js +1 -1
- package/dist/GPX/middleware.d.ts +27 -0
- package/dist/GPX/middleware.js +93 -0
- package/dist/GPX/processor.d.ts +1 -1
- package/dist/GPX/processor.js +12 -11
- package/dist/GPX/types.d.ts +2 -3
- package/dist/TCX/base.d.ts +52 -0
- package/dist/TCX/base.js +62 -0
- package/dist/TCX/converters.d.ts +75 -0
- package/dist/TCX/converters.js +333 -0
- package/dist/TCX/decoder.d.ts +87 -0
- package/dist/TCX/decoder.js +350 -0
- package/dist/TCX/encoder.d.ts +150 -0
- package/dist/TCX/encoder.js +513 -0
- package/dist/TCX/index.d.ts +10 -0
- package/dist/TCX/index.js +9 -0
- package/dist/TCX/middleware.d.ts +27 -0
- package/dist/TCX/middleware.js +93 -0
- package/dist/TCX/processor.d.ts +48 -0
- package/dist/TCX/processor.js +197 -0
- package/dist/TCX/types.d.ts +203 -0
- package/dist/TCX/types.js +1 -0
- package/dist/core/base.d.ts +119 -0
- package/dist/core/base.js +138 -0
- package/dist/core/decoder.d.ts +66 -0
- package/dist/core/decoder.js +90 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +4 -0
- package/dist/core/processor.d.ts +69 -0
- package/dist/core/processor.js +265 -0
- package/dist/core/xml-utils.d.ts +41 -0
- package/dist/core/xml-utils.js +140 -0
- package/package.json +8 -5
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// FIT types mapping
|
|
2
|
+
// 简化的枚举映射
|
|
3
|
+
const enum_maps = {
|
|
4
|
+
file: {
|
|
5
|
+
course: 6,
|
|
6
|
+
device: 1,
|
|
7
|
+
settings: 2,
|
|
8
|
+
sport: 3,
|
|
9
|
+
activity: 4,
|
|
10
|
+
workout: 5,
|
|
11
|
+
schedules: 7,
|
|
12
|
+
weight: 9,
|
|
13
|
+
totals: 10,
|
|
14
|
+
goals: 11,
|
|
15
|
+
blood_pressure: 14,
|
|
16
|
+
monitoring_a: 15,
|
|
17
|
+
activity_summary: 20,
|
|
18
|
+
monitoring_daily: 28,
|
|
19
|
+
monitoring_b: 32,
|
|
20
|
+
segment_list: 35,
|
|
21
|
+
exd_configuration: 40,
|
|
22
|
+
invalid: 0,
|
|
23
|
+
},
|
|
24
|
+
sport: {
|
|
25
|
+
generic: 0,
|
|
26
|
+
running: 1,
|
|
27
|
+
cycling: 2,
|
|
28
|
+
transition: 3,
|
|
29
|
+
fitness_equipment: 4,
|
|
30
|
+
swimming: 5,
|
|
31
|
+
basketball: 6,
|
|
32
|
+
soccer: 7,
|
|
33
|
+
tennis: 8,
|
|
34
|
+
american_football: 9,
|
|
35
|
+
training: 10,
|
|
36
|
+
walking: 11,
|
|
37
|
+
cross_country_skiing: 12,
|
|
38
|
+
alpine_skiing: 13,
|
|
39
|
+
snowboarding: 14,
|
|
40
|
+
rowing: 15,
|
|
41
|
+
mountaineering: 16,
|
|
42
|
+
hiking: 17,
|
|
43
|
+
multisport: 18,
|
|
44
|
+
paddling: 19,
|
|
45
|
+
invalid: 254,
|
|
46
|
+
},
|
|
47
|
+
event: {
|
|
48
|
+
timer: 0,
|
|
49
|
+
workout: 3,
|
|
50
|
+
workout_step: 4,
|
|
51
|
+
power_down: 5,
|
|
52
|
+
power_up: 6,
|
|
53
|
+
off_course: 7,
|
|
54
|
+
session: 8,
|
|
55
|
+
lap: 9,
|
|
56
|
+
course_point: 10,
|
|
57
|
+
battery: 11,
|
|
58
|
+
virtual_partner_pace: 12,
|
|
59
|
+
hr_high_alert: 13,
|
|
60
|
+
hr_low_alert: 14,
|
|
61
|
+
speed_high_alert: 15,
|
|
62
|
+
speed_low_alert: 16,
|
|
63
|
+
cad_high_alert: 17,
|
|
64
|
+
cad_low_alert: 18,
|
|
65
|
+
power_high_alert: 19,
|
|
66
|
+
power_low_alert: 20,
|
|
67
|
+
recovery_hr: 21,
|
|
68
|
+
battery_low: 22,
|
|
69
|
+
time_duration_alert: 23,
|
|
70
|
+
distance_duration_alert: 24,
|
|
71
|
+
calorie_duration_alert: 25,
|
|
72
|
+
activity: 26,
|
|
73
|
+
fitness_equipment: 27,
|
|
74
|
+
length: 28,
|
|
75
|
+
user_marker: 32,
|
|
76
|
+
sport_point: 33,
|
|
77
|
+
calibration: 36,
|
|
78
|
+
front_gear_change: 42,
|
|
79
|
+
rear_gear_change: 43,
|
|
80
|
+
rider_position_change: 44,
|
|
81
|
+
elev_high_alert: 45,
|
|
82
|
+
elev_low_alert: 46,
|
|
83
|
+
comm_timeout: 47,
|
|
84
|
+
invalid: 255,
|
|
85
|
+
},
|
|
86
|
+
event_type: {
|
|
87
|
+
start: 0,
|
|
88
|
+
stop: 1,
|
|
89
|
+
consecutive_depreciated: 2,
|
|
90
|
+
marker: 3,
|
|
91
|
+
stop_all: 4,
|
|
92
|
+
begin_depreciated: 5,
|
|
93
|
+
end_depreciated: 6,
|
|
94
|
+
end_all_depreciated: 7,
|
|
95
|
+
stop_disable: 8,
|
|
96
|
+
stop_disable_all: 9,
|
|
97
|
+
invalid: 255,
|
|
98
|
+
},
|
|
99
|
+
course_point: {
|
|
100
|
+
generic: 0,
|
|
101
|
+
summit: 1,
|
|
102
|
+
valley: 2,
|
|
103
|
+
water: 3,
|
|
104
|
+
food: 4,
|
|
105
|
+
danger: 5,
|
|
106
|
+
left: 6,
|
|
107
|
+
right: 7,
|
|
108
|
+
straight: 8,
|
|
109
|
+
first_aid: 9,
|
|
110
|
+
fourth_category: 10,
|
|
111
|
+
third_category: 11,
|
|
112
|
+
second_category: 12,
|
|
113
|
+
first_category: 13,
|
|
114
|
+
hors_category: 14,
|
|
115
|
+
sprint: 15,
|
|
116
|
+
left_fork: 16,
|
|
117
|
+
right_fork: 17,
|
|
118
|
+
middle_fork: 18,
|
|
119
|
+
slight_left: 19,
|
|
120
|
+
sharp_left: 20,
|
|
121
|
+
slight_right: 21,
|
|
122
|
+
sharp_right: 22,
|
|
123
|
+
u_turn: 23,
|
|
124
|
+
segment_start: 24,
|
|
125
|
+
segment_end: 25,
|
|
126
|
+
invalid: 255,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
const _enum = (name) => {
|
|
130
|
+
const enum_map = enum_maps[name];
|
|
131
|
+
return {
|
|
132
|
+
size: 1,
|
|
133
|
+
baseType: 0,
|
|
134
|
+
mapValue: (value) => {
|
|
135
|
+
if (typeof value === "string") {
|
|
136
|
+
return enum_map[value] ?? 255;
|
|
137
|
+
}
|
|
138
|
+
return value;
|
|
139
|
+
},
|
|
140
|
+
setValue: function (byteOffset, value) {
|
|
141
|
+
this.setUint8(byteOffset, value);
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
export const types = {
|
|
146
|
+
enum_file: _enum("file"),
|
|
147
|
+
enum_activity: _enum("sport"),
|
|
148
|
+
enum_sport: _enum("sport"),
|
|
149
|
+
enum_sub_sport: _enum("sport"),
|
|
150
|
+
enum_event: _enum("event"),
|
|
151
|
+
enum_event_type: _enum("event_type"),
|
|
152
|
+
enum_course_point: _enum("course_point"),
|
|
153
|
+
uint8: {
|
|
154
|
+
size: 1,
|
|
155
|
+
baseType: 2,
|
|
156
|
+
setValue: DataView.prototype.setUint8,
|
|
157
|
+
},
|
|
158
|
+
sint8: {
|
|
159
|
+
size: 1,
|
|
160
|
+
baseType: 1,
|
|
161
|
+
setValue: DataView.prototype.setInt8,
|
|
162
|
+
},
|
|
163
|
+
uint16: {
|
|
164
|
+
size: 2,
|
|
165
|
+
baseType: 0x84,
|
|
166
|
+
setValue: DataView.prototype.setUint16,
|
|
167
|
+
},
|
|
168
|
+
sint16: {
|
|
169
|
+
size: 2,
|
|
170
|
+
baseType: 0x83,
|
|
171
|
+
setValue: DataView.prototype.setInt16,
|
|
172
|
+
},
|
|
173
|
+
uint32: {
|
|
174
|
+
size: 4,
|
|
175
|
+
baseType: 0x86,
|
|
176
|
+
setValue: DataView.prototype.setUint32,
|
|
177
|
+
},
|
|
178
|
+
sint32: {
|
|
179
|
+
size: 4,
|
|
180
|
+
baseType: 0x85,
|
|
181
|
+
setValue: DataView.prototype.setInt32,
|
|
182
|
+
},
|
|
183
|
+
string: {
|
|
184
|
+
size: 0, // Variable size
|
|
185
|
+
baseType: 7,
|
|
186
|
+
mapValue: (value) => Array.from(encodedStr(value)),
|
|
187
|
+
setValue: dvSetUint8Array,
|
|
188
|
+
},
|
|
189
|
+
distance: {
|
|
190
|
+
size: 4,
|
|
191
|
+
baseType: 0x86,
|
|
192
|
+
setValue: DataView.prototype.setUint32,
|
|
193
|
+
mapValue: (value) => Math.round(value * 1000),
|
|
194
|
+
},
|
|
195
|
+
speed: {
|
|
196
|
+
size: 2,
|
|
197
|
+
baseType: 0x84,
|
|
198
|
+
setValue: DataView.prototype.setUint16,
|
|
199
|
+
mapValue: (value) => Math.round(value * 100),
|
|
200
|
+
},
|
|
201
|
+
altitude: {
|
|
202
|
+
size: 2,
|
|
203
|
+
baseType: 0x84,
|
|
204
|
+
setValue: DataView.prototype.setUint16,
|
|
205
|
+
mapValue: (value) => Math.round((value + 500) * 5),
|
|
206
|
+
},
|
|
207
|
+
seconds: {
|
|
208
|
+
size: 4,
|
|
209
|
+
baseType: 0x86,
|
|
210
|
+
setValue: DataView.prototype.setUint32,
|
|
211
|
+
mapValue: (value) => Math.round(value * 1000),
|
|
212
|
+
},
|
|
213
|
+
date_time: {
|
|
214
|
+
size: 4,
|
|
215
|
+
baseType: 0x86,
|
|
216
|
+
setValue: DataView.prototype.setUint32,
|
|
217
|
+
mapValue: (value) => {
|
|
218
|
+
let timestamp;
|
|
219
|
+
if (value instanceof Date) {
|
|
220
|
+
timestamp = Math.floor(value.getTime() / 1000);
|
|
221
|
+
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
222
|
+
return timestamp - 631065600;
|
|
223
|
+
}
|
|
224
|
+
else if (typeof value === "string") {
|
|
225
|
+
timestamp = Math.floor(new Date(value).getTime() / 1000);
|
|
226
|
+
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
227
|
+
return timestamp - 631065600;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// 如果输入的数字值看起来像是FIT时间戳(小于Unix时间戳),直接返回
|
|
231
|
+
// FIT时间戳从1989开始,所以值通常比较小
|
|
232
|
+
if (value < 631065600) {
|
|
233
|
+
// 直接返回,假设已经是FIT时间戳
|
|
234
|
+
return Math.floor(value);
|
|
235
|
+
}
|
|
236
|
+
// 否则处理为Unix时间戳
|
|
237
|
+
if (value > 9999999999) {
|
|
238
|
+
// 毫秒级时间戳
|
|
239
|
+
timestamp = Math.floor(value / 1000);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
// 秒级时间戳
|
|
243
|
+
timestamp = Math.floor(value);
|
|
244
|
+
}
|
|
245
|
+
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
246
|
+
return timestamp - 631065600;
|
|
247
|
+
}
|
|
248
|
+
}, // "1989-12-31T00:00" epoch
|
|
249
|
+
},
|
|
250
|
+
semicircles: {
|
|
251
|
+
size: 4,
|
|
252
|
+
baseType: 0x85,
|
|
253
|
+
setValue: DataView.prototype.setInt32,
|
|
254
|
+
mapValue: (value) => Math.round((value / 180) * 0x80000000),
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
export function encodedStrlen(str) {
|
|
258
|
+
// Calculate the byte length of a UTF-8 encoded string
|
|
259
|
+
return Array.from(encodedStr(str)).length + 1; // +1 for null terminator
|
|
260
|
+
}
|
|
261
|
+
function* encodedStr(s) {
|
|
262
|
+
for (const codePoint of codePoints(s)) {
|
|
263
|
+
if (codePoint < 0x80) {
|
|
264
|
+
yield codePoint;
|
|
265
|
+
}
|
|
266
|
+
else if (codePoint < 0x800) {
|
|
267
|
+
yield 0xc0 | (codePoint >> 6);
|
|
268
|
+
yield 0x80 | (codePoint & 0x3f);
|
|
269
|
+
}
|
|
270
|
+
else if (codePoint < 0x10000) {
|
|
271
|
+
yield 0xe0 | (codePoint >> 12);
|
|
272
|
+
yield 0x80 | ((codePoint >> 6) & 0x3f);
|
|
273
|
+
yield 0x80 | (codePoint & 0x3f);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
yield 0xf0 | (codePoint >> 18);
|
|
277
|
+
yield 0x80 | ((codePoint >> 12) & 0x3f);
|
|
278
|
+
yield 0x80 | ((codePoint >> 6) & 0x3f);
|
|
279
|
+
yield 0x80 | (codePoint & 0x3f);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
yield 0; // null terminator
|
|
283
|
+
}
|
|
284
|
+
function* codePoints(s) {
|
|
285
|
+
for (let i = 0; i < s.length;) {
|
|
286
|
+
const cp = s.codePointAt(i);
|
|
287
|
+
if (cp === undefined)
|
|
288
|
+
break;
|
|
289
|
+
yield cp;
|
|
290
|
+
i += cp > 0xffff ? 2 : 1;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function dvSetUint8Array(offset, values) {
|
|
294
|
+
for (let i = 0; i < values.length; i++) {
|
|
295
|
+
this.setUint8(offset + i, values[i]);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export declare enum MesgNum {
|
|
2
|
+
FILE_ID = 0,// 文件标识
|
|
3
|
+
CAPABILITIES = 1,// 设备能力
|
|
4
|
+
DEVICE_SETTINGS = 2,// 设备设置
|
|
5
|
+
USER_PROFILE = 3,// 用户档案
|
|
6
|
+
HRM_PROFILE = 4,// 心率监测器档案
|
|
7
|
+
SDM_PROFILE = 5,// 速度距离监测器档案
|
|
8
|
+
BIKE_PROFILE = 6,// 自行车档案
|
|
9
|
+
ZONES_TARGET = 7,// 区间目标
|
|
10
|
+
HR_ZONE = 8,// 心率区间
|
|
11
|
+
POWER_ZONE = 9,// 功率区间
|
|
12
|
+
MET_ZONE = 10,// 代谢当量区间
|
|
13
|
+
SPORT = 12,// 运动类型
|
|
14
|
+
GOAL = 15,// 目标
|
|
15
|
+
SESSION = 18,// 运动段
|
|
16
|
+
LAP = 19,// 计圈
|
|
17
|
+
RECORD = 20,// 记录点
|
|
18
|
+
EVENT = 21,// 事件
|
|
19
|
+
DEVICE_INFO = 23,// 设备信息
|
|
20
|
+
WORKOUT = 26,// 训练
|
|
21
|
+
WORKOUT_STEP = 27,// 训练步骤
|
|
22
|
+
SCHEDULE = 28,// 日程安排
|
|
23
|
+
WEIGHT_SCALE = 30,// 体重秤
|
|
24
|
+
COURSE = 31,// 路线
|
|
25
|
+
COURSE_POINT = 32,// 路线点
|
|
26
|
+
TOTALS = 33,// 总计
|
|
27
|
+
ACTIVITY = 34,// 活动
|
|
28
|
+
SOFTWARE = 35,// 软件
|
|
29
|
+
FILE_CAPABILITIES = 37,// 文件能力
|
|
30
|
+
MESG_CAPABILITIES = 38,// 消息能力
|
|
31
|
+
FIELD_CAPABILITIES = 39,// 字段能力
|
|
32
|
+
FILE_CREATOR = 49,// 文件创建者
|
|
33
|
+
BLOOD_PRESSURE = 51,// 血压
|
|
34
|
+
SPEED_ZONE = 53,// 速度区间
|
|
35
|
+
MONITORING = 55,// 监测
|
|
36
|
+
TRAINING_FILE = 72,// 训练文件
|
|
37
|
+
HRV = 78,// 心率变异性
|
|
38
|
+
ANT_RX = 80,// ANT接收
|
|
39
|
+
ANT_TX = 81,// ANT发送
|
|
40
|
+
ANT_CHANNEL_ID = 82,// ANT通道ID
|
|
41
|
+
LENGTH = 101,// 长度
|
|
42
|
+
MONITORING_INFO = 103,// 监测信息
|
|
43
|
+
PAD = 105,// 填充
|
|
44
|
+
SLAVE_DEVICE = 106,// 从设备
|
|
45
|
+
CONNECTIVITY = 127,// 连接性
|
|
46
|
+
WEATHER_CONDITIONS = 128,// 天气状况
|
|
47
|
+
WEATHER_ALERT = 129,// 天气预警
|
|
48
|
+
CADENCE_ZONE = 131,// 步频区间
|
|
49
|
+
HR = 132,// 心率
|
|
50
|
+
SEGMENT_LAP = 142,// 段落计圈
|
|
51
|
+
MEMO_GLOB = 145,// 备忘录
|
|
52
|
+
SEGMENT_ID = 148,// 段落ID
|
|
53
|
+
SEGMENT_LEADERBOARD_ENTRY = 149,// 段落排行榜条目
|
|
54
|
+
SEGMENT_POINT = 150,// 段落点
|
|
55
|
+
SEGMENT_FILE = 151,// 段落文件
|
|
56
|
+
WORKOUT_SESSION = 158,// 训练段
|
|
57
|
+
WATCHFACE_SETTINGS = 159,// 表盘设置
|
|
58
|
+
GPS_METADATA = 160,// GPS元数据
|
|
59
|
+
CAMERA_EVENT = 161,// 相机事件
|
|
60
|
+
TIMESTAMP_CORRELATION = 162,// 时间戳关联
|
|
61
|
+
GYROSCOPE_DATA = 164,// 陀螺仪数据
|
|
62
|
+
ACCELEROMETER_DATA = 165,// 加速度计数据
|
|
63
|
+
THREE_D_SENSOR_CALIBRATION = 167,// 3D传感器校准
|
|
64
|
+
VIDEO_FRAME = 169,// 视频帧
|
|
65
|
+
OBDII_DATA = 174,// OBD-II数据
|
|
66
|
+
NMEA_SENTENCE = 177,// NMEA语句
|
|
67
|
+
AVIATION_ATTITUDE = 178,// 航空姿态
|
|
68
|
+
VIDEO = 184,// 视频
|
|
69
|
+
VIDEO_TITLE = 185,// 视频标题
|
|
70
|
+
VIDEO_DESCRIPTION = 186,// 视频描述
|
|
71
|
+
VIDEO_CLIP = 187,// 视频片段
|
|
72
|
+
SET = 225,// 组
|
|
73
|
+
JUMP = 285,// 跳跃
|
|
74
|
+
CLIMB_PRO = 317,// 攀爬专业
|
|
75
|
+
FIELD_DESCRIPTION = 206,// 字段描述
|
|
76
|
+
DEVELOPER_DATA_ID = 207,// 开发者数据ID
|
|
77
|
+
MAGNETOMETER_DATA = 208,// 磁力计数据
|
|
78
|
+
BAROMETER_DATA = 209,// 气压计数据
|
|
79
|
+
ONE_D_SENSOR_CALIBRATION = 210,// 1D传感器校准
|
|
80
|
+
MONITORING_HR_DATA = 211,// 心率监测数据
|
|
81
|
+
TIME_IN_ZONE = 216,// 区间时间
|
|
82
|
+
DIVE_SETTINGS = 258,// 潜水设置
|
|
83
|
+
DIVE_GAS = 259,// 潜水气体
|
|
84
|
+
DIVE_ALARM = 262,// 潜水警报
|
|
85
|
+
EXERCISE_TITLE = 264,// 运动标题
|
|
86
|
+
DIVE_SUMMARY = 268,// 潜水总结
|
|
87
|
+
SPLIT = 312,// 分段
|
|
88
|
+
SPLIT_SUMMARY = 313,// 分段总结
|
|
89
|
+
HSA_BODY_BATTERY_DATA = 314,// 身体电量数据
|
|
90
|
+
HSA_EVENT = 315,// HSA事件
|
|
91
|
+
TANK_UPDATE = 319,// 水箱更新
|
|
92
|
+
TANK_SUMMARY = 323,// 水箱总结
|
|
93
|
+
SLEEP_ASSESSMENT = 346,// 睡眠评估
|
|
94
|
+
HRV_STATUS_SUMMARY = 370,// 心率变异性状态总结
|
|
95
|
+
HRV_VALUE = 371,// 心率变异性值
|
|
96
|
+
RAW_BBI = 372,// 原始心跳间隔
|
|
97
|
+
DEVICE_AUX_BATTERY_INFO = 375,// 设备辅助电池信息
|
|
98
|
+
HSA_GYROSCOPE_DATA = 376,// HSA陀螺仪数据
|
|
99
|
+
CHRONO_SHOT_SESSION = 387,// 计时拍摄会话
|
|
100
|
+
CHRONO_SHOT_DATA = 388,// 计时拍摄数据
|
|
101
|
+
HSA_CONFIGURATION_DATA = 389,// HSA配置数据
|
|
102
|
+
DIVE_APNEA_ALARM = 393,// 屏息潜水警报
|
|
103
|
+
SKIN_TEMP_OVERNIGHT = 398,// 夜间皮肤温度
|
|
104
|
+
HSA_WRIST_TEMPERATURE_DATA = 409
|
|
105
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export var MesgNum;
|
|
2
|
+
(function (MesgNum) {
|
|
3
|
+
MesgNum[MesgNum["FILE_ID"] = 0] = "FILE_ID";
|
|
4
|
+
MesgNum[MesgNum["CAPABILITIES"] = 1] = "CAPABILITIES";
|
|
5
|
+
MesgNum[MesgNum["DEVICE_SETTINGS"] = 2] = "DEVICE_SETTINGS";
|
|
6
|
+
MesgNum[MesgNum["USER_PROFILE"] = 3] = "USER_PROFILE";
|
|
7
|
+
MesgNum[MesgNum["HRM_PROFILE"] = 4] = "HRM_PROFILE";
|
|
8
|
+
MesgNum[MesgNum["SDM_PROFILE"] = 5] = "SDM_PROFILE";
|
|
9
|
+
MesgNum[MesgNum["BIKE_PROFILE"] = 6] = "BIKE_PROFILE";
|
|
10
|
+
MesgNum[MesgNum["ZONES_TARGET"] = 7] = "ZONES_TARGET";
|
|
11
|
+
MesgNum[MesgNum["HR_ZONE"] = 8] = "HR_ZONE";
|
|
12
|
+
MesgNum[MesgNum["POWER_ZONE"] = 9] = "POWER_ZONE";
|
|
13
|
+
MesgNum[MesgNum["MET_ZONE"] = 10] = "MET_ZONE";
|
|
14
|
+
MesgNum[MesgNum["SPORT"] = 12] = "SPORT";
|
|
15
|
+
MesgNum[MesgNum["GOAL"] = 15] = "GOAL";
|
|
16
|
+
MesgNum[MesgNum["SESSION"] = 18] = "SESSION";
|
|
17
|
+
MesgNum[MesgNum["LAP"] = 19] = "LAP";
|
|
18
|
+
MesgNum[MesgNum["RECORD"] = 20] = "RECORD";
|
|
19
|
+
MesgNum[MesgNum["EVENT"] = 21] = "EVENT";
|
|
20
|
+
MesgNum[MesgNum["DEVICE_INFO"] = 23] = "DEVICE_INFO";
|
|
21
|
+
MesgNum[MesgNum["WORKOUT"] = 26] = "WORKOUT";
|
|
22
|
+
MesgNum[MesgNum["WORKOUT_STEP"] = 27] = "WORKOUT_STEP";
|
|
23
|
+
MesgNum[MesgNum["SCHEDULE"] = 28] = "SCHEDULE";
|
|
24
|
+
MesgNum[MesgNum["WEIGHT_SCALE"] = 30] = "WEIGHT_SCALE";
|
|
25
|
+
MesgNum[MesgNum["COURSE"] = 31] = "COURSE";
|
|
26
|
+
MesgNum[MesgNum["COURSE_POINT"] = 32] = "COURSE_POINT";
|
|
27
|
+
MesgNum[MesgNum["TOTALS"] = 33] = "TOTALS";
|
|
28
|
+
MesgNum[MesgNum["ACTIVITY"] = 34] = "ACTIVITY";
|
|
29
|
+
MesgNum[MesgNum["SOFTWARE"] = 35] = "SOFTWARE";
|
|
30
|
+
MesgNum[MesgNum["FILE_CAPABILITIES"] = 37] = "FILE_CAPABILITIES";
|
|
31
|
+
MesgNum[MesgNum["MESG_CAPABILITIES"] = 38] = "MESG_CAPABILITIES";
|
|
32
|
+
MesgNum[MesgNum["FIELD_CAPABILITIES"] = 39] = "FIELD_CAPABILITIES";
|
|
33
|
+
MesgNum[MesgNum["FILE_CREATOR"] = 49] = "FILE_CREATOR";
|
|
34
|
+
MesgNum[MesgNum["BLOOD_PRESSURE"] = 51] = "BLOOD_PRESSURE";
|
|
35
|
+
MesgNum[MesgNum["SPEED_ZONE"] = 53] = "SPEED_ZONE";
|
|
36
|
+
MesgNum[MesgNum["MONITORING"] = 55] = "MONITORING";
|
|
37
|
+
MesgNum[MesgNum["TRAINING_FILE"] = 72] = "TRAINING_FILE";
|
|
38
|
+
MesgNum[MesgNum["HRV"] = 78] = "HRV";
|
|
39
|
+
MesgNum[MesgNum["ANT_RX"] = 80] = "ANT_RX";
|
|
40
|
+
MesgNum[MesgNum["ANT_TX"] = 81] = "ANT_TX";
|
|
41
|
+
MesgNum[MesgNum["ANT_CHANNEL_ID"] = 82] = "ANT_CHANNEL_ID";
|
|
42
|
+
MesgNum[MesgNum["LENGTH"] = 101] = "LENGTH";
|
|
43
|
+
MesgNum[MesgNum["MONITORING_INFO"] = 103] = "MONITORING_INFO";
|
|
44
|
+
MesgNum[MesgNum["PAD"] = 105] = "PAD";
|
|
45
|
+
MesgNum[MesgNum["SLAVE_DEVICE"] = 106] = "SLAVE_DEVICE";
|
|
46
|
+
MesgNum[MesgNum["CONNECTIVITY"] = 127] = "CONNECTIVITY";
|
|
47
|
+
MesgNum[MesgNum["WEATHER_CONDITIONS"] = 128] = "WEATHER_CONDITIONS";
|
|
48
|
+
MesgNum[MesgNum["WEATHER_ALERT"] = 129] = "WEATHER_ALERT";
|
|
49
|
+
MesgNum[MesgNum["CADENCE_ZONE"] = 131] = "CADENCE_ZONE";
|
|
50
|
+
MesgNum[MesgNum["HR"] = 132] = "HR";
|
|
51
|
+
MesgNum[MesgNum["SEGMENT_LAP"] = 142] = "SEGMENT_LAP";
|
|
52
|
+
MesgNum[MesgNum["MEMO_GLOB"] = 145] = "MEMO_GLOB";
|
|
53
|
+
MesgNum[MesgNum["SEGMENT_ID"] = 148] = "SEGMENT_ID";
|
|
54
|
+
MesgNum[MesgNum["SEGMENT_LEADERBOARD_ENTRY"] = 149] = "SEGMENT_LEADERBOARD_ENTRY";
|
|
55
|
+
MesgNum[MesgNum["SEGMENT_POINT"] = 150] = "SEGMENT_POINT";
|
|
56
|
+
MesgNum[MesgNum["SEGMENT_FILE"] = 151] = "SEGMENT_FILE";
|
|
57
|
+
MesgNum[MesgNum["WORKOUT_SESSION"] = 158] = "WORKOUT_SESSION";
|
|
58
|
+
MesgNum[MesgNum["WATCHFACE_SETTINGS"] = 159] = "WATCHFACE_SETTINGS";
|
|
59
|
+
MesgNum[MesgNum["GPS_METADATA"] = 160] = "GPS_METADATA";
|
|
60
|
+
MesgNum[MesgNum["CAMERA_EVENT"] = 161] = "CAMERA_EVENT";
|
|
61
|
+
MesgNum[MesgNum["TIMESTAMP_CORRELATION"] = 162] = "TIMESTAMP_CORRELATION";
|
|
62
|
+
MesgNum[MesgNum["GYROSCOPE_DATA"] = 164] = "GYROSCOPE_DATA";
|
|
63
|
+
MesgNum[MesgNum["ACCELEROMETER_DATA"] = 165] = "ACCELEROMETER_DATA";
|
|
64
|
+
MesgNum[MesgNum["THREE_D_SENSOR_CALIBRATION"] = 167] = "THREE_D_SENSOR_CALIBRATION";
|
|
65
|
+
MesgNum[MesgNum["VIDEO_FRAME"] = 169] = "VIDEO_FRAME";
|
|
66
|
+
MesgNum[MesgNum["OBDII_DATA"] = 174] = "OBDII_DATA";
|
|
67
|
+
MesgNum[MesgNum["NMEA_SENTENCE"] = 177] = "NMEA_SENTENCE";
|
|
68
|
+
MesgNum[MesgNum["AVIATION_ATTITUDE"] = 178] = "AVIATION_ATTITUDE";
|
|
69
|
+
MesgNum[MesgNum["VIDEO"] = 184] = "VIDEO";
|
|
70
|
+
MesgNum[MesgNum["VIDEO_TITLE"] = 185] = "VIDEO_TITLE";
|
|
71
|
+
MesgNum[MesgNum["VIDEO_DESCRIPTION"] = 186] = "VIDEO_DESCRIPTION";
|
|
72
|
+
MesgNum[MesgNum["VIDEO_CLIP"] = 187] = "VIDEO_CLIP";
|
|
73
|
+
MesgNum[MesgNum["SET"] = 225] = "SET";
|
|
74
|
+
MesgNum[MesgNum["JUMP"] = 285] = "JUMP";
|
|
75
|
+
MesgNum[MesgNum["CLIMB_PRO"] = 317] = "CLIMB_PRO";
|
|
76
|
+
MesgNum[MesgNum["FIELD_DESCRIPTION"] = 206] = "FIELD_DESCRIPTION";
|
|
77
|
+
MesgNum[MesgNum["DEVELOPER_DATA_ID"] = 207] = "DEVELOPER_DATA_ID";
|
|
78
|
+
MesgNum[MesgNum["MAGNETOMETER_DATA"] = 208] = "MAGNETOMETER_DATA";
|
|
79
|
+
MesgNum[MesgNum["BAROMETER_DATA"] = 209] = "BAROMETER_DATA";
|
|
80
|
+
MesgNum[MesgNum["ONE_D_SENSOR_CALIBRATION"] = 210] = "ONE_D_SENSOR_CALIBRATION";
|
|
81
|
+
MesgNum[MesgNum["MONITORING_HR_DATA"] = 211] = "MONITORING_HR_DATA";
|
|
82
|
+
MesgNum[MesgNum["TIME_IN_ZONE"] = 216] = "TIME_IN_ZONE";
|
|
83
|
+
MesgNum[MesgNum["DIVE_SETTINGS"] = 258] = "DIVE_SETTINGS";
|
|
84
|
+
MesgNum[MesgNum["DIVE_GAS"] = 259] = "DIVE_GAS";
|
|
85
|
+
MesgNum[MesgNum["DIVE_ALARM"] = 262] = "DIVE_ALARM";
|
|
86
|
+
MesgNum[MesgNum["EXERCISE_TITLE"] = 264] = "EXERCISE_TITLE";
|
|
87
|
+
MesgNum[MesgNum["DIVE_SUMMARY"] = 268] = "DIVE_SUMMARY";
|
|
88
|
+
MesgNum[MesgNum["SPLIT"] = 312] = "SPLIT";
|
|
89
|
+
MesgNum[MesgNum["SPLIT_SUMMARY"] = 313] = "SPLIT_SUMMARY";
|
|
90
|
+
MesgNum[MesgNum["HSA_BODY_BATTERY_DATA"] = 314] = "HSA_BODY_BATTERY_DATA";
|
|
91
|
+
MesgNum[MesgNum["HSA_EVENT"] = 315] = "HSA_EVENT";
|
|
92
|
+
MesgNum[MesgNum["TANK_UPDATE"] = 319] = "TANK_UPDATE";
|
|
93
|
+
MesgNum[MesgNum["TANK_SUMMARY"] = 323] = "TANK_SUMMARY";
|
|
94
|
+
MesgNum[MesgNum["SLEEP_ASSESSMENT"] = 346] = "SLEEP_ASSESSMENT";
|
|
95
|
+
MesgNum[MesgNum["HRV_STATUS_SUMMARY"] = 370] = "HRV_STATUS_SUMMARY";
|
|
96
|
+
MesgNum[MesgNum["HRV_VALUE"] = 371] = "HRV_VALUE";
|
|
97
|
+
MesgNum[MesgNum["RAW_BBI"] = 372] = "RAW_BBI";
|
|
98
|
+
MesgNum[MesgNum["DEVICE_AUX_BATTERY_INFO"] = 375] = "DEVICE_AUX_BATTERY_INFO";
|
|
99
|
+
MesgNum[MesgNum["HSA_GYROSCOPE_DATA"] = 376] = "HSA_GYROSCOPE_DATA";
|
|
100
|
+
MesgNum[MesgNum["CHRONO_SHOT_SESSION"] = 387] = "CHRONO_SHOT_SESSION";
|
|
101
|
+
MesgNum[MesgNum["CHRONO_SHOT_DATA"] = 388] = "CHRONO_SHOT_DATA";
|
|
102
|
+
MesgNum[MesgNum["HSA_CONFIGURATION_DATA"] = 389] = "HSA_CONFIGURATION_DATA";
|
|
103
|
+
MesgNum[MesgNum["DIVE_APNEA_ALARM"] = 393] = "DIVE_APNEA_ALARM";
|
|
104
|
+
MesgNum[MesgNum["SKIN_TEMP_OVERNIGHT"] = 398] = "SKIN_TEMP_OVERNIGHT";
|
|
105
|
+
MesgNum[MesgNum["HSA_WRIST_TEMPERATURE_DATA"] = 409] = "HSA_WRIST_TEMPERATURE_DATA";
|
|
106
|
+
})(MesgNum || (MesgNum = {}));
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare enum Sport {
|
|
2
|
+
GENERIC = 0,// 通用
|
|
3
|
+
RUNNING = 1,// 跑步
|
|
4
|
+
CYCLING = 2,// 骑行
|
|
5
|
+
TRANSITION = 3,// 过渡
|
|
6
|
+
FITNESS_EQUIPMENT = 4,// 健身器材
|
|
7
|
+
SWIMMING = 5,// 游泳
|
|
8
|
+
BASKETBALL = 6,// 篮球
|
|
9
|
+
SOCCER = 7,// 足球
|
|
10
|
+
TENNIS = 8,// 网球
|
|
11
|
+
AMERICAN_FOOTBALL = 9,// 美式足球
|
|
12
|
+
TRAINING = 10,// 训练
|
|
13
|
+
WALKING = 11,// 步行
|
|
14
|
+
CROSS_COUNTRY_SKIING = 12,// 越野滑雪
|
|
15
|
+
ALPINE_SKIING = 13,// 高山滑雪
|
|
16
|
+
SNOWBOARDING = 14,// 滑雪板
|
|
17
|
+
ROWING = 15,// 划船
|
|
18
|
+
MOUNTAINEERING = 16,// 登山
|
|
19
|
+
HIKING = 17,// 徒步
|
|
20
|
+
MULTISPORT = 18,// 多项运动
|
|
21
|
+
PADDLING = 19,// 划水
|
|
22
|
+
FLYING = 20,// 飞行
|
|
23
|
+
E_BIKING = 21,// 电动自行车
|
|
24
|
+
MOTORCYCLING = 22,// 摩托车
|
|
25
|
+
BOATING = 23,// 划船
|
|
26
|
+
DRIVING = 24,// 驾驶
|
|
27
|
+
GOLF = 25,// 高尔夫
|
|
28
|
+
HANG_GLIDING = 26,// 悬挂滑翔
|
|
29
|
+
HORSEBACK_RIDING = 27,// 骑马
|
|
30
|
+
HUNTING = 28,// 狩猎
|
|
31
|
+
FISHING = 29,// 钓鱼
|
|
32
|
+
INLINE_SKATING = 30,// 轮滑
|
|
33
|
+
ROCK_CLIMBING = 31,// 攀岩
|
|
34
|
+
SAILING = 32,// 帆船
|
|
35
|
+
ICE_SKATING = 33,// 滑冰
|
|
36
|
+
SKY_DIVING = 34,// 跳伞
|
|
37
|
+
SNOWSHOEING = 35,// 雪鞋行走
|
|
38
|
+
SNOWMOBILING = 36,// 雪地摩托
|
|
39
|
+
STAND_UP_PADDLEBOARDING = 37,// 站立式划桨
|
|
40
|
+
SURFING = 38,// 冲浪
|
|
41
|
+
WAKEBOARDING = 39,// 尾波滑水
|
|
42
|
+
WATER_SKIING = 40,// 滑水
|
|
43
|
+
YOGA = 41,// 瑜伽
|
|
44
|
+
PILATES = 42,// 普拉提
|
|
45
|
+
CALISTHENICS = 43,// 徒手健身
|
|
46
|
+
ALL = 254
|
|
47
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export var Sport;
|
|
2
|
+
(function (Sport) {
|
|
3
|
+
Sport[Sport["GENERIC"] = 0] = "GENERIC";
|
|
4
|
+
Sport[Sport["RUNNING"] = 1] = "RUNNING";
|
|
5
|
+
Sport[Sport["CYCLING"] = 2] = "CYCLING";
|
|
6
|
+
Sport[Sport["TRANSITION"] = 3] = "TRANSITION";
|
|
7
|
+
Sport[Sport["FITNESS_EQUIPMENT"] = 4] = "FITNESS_EQUIPMENT";
|
|
8
|
+
Sport[Sport["SWIMMING"] = 5] = "SWIMMING";
|
|
9
|
+
Sport[Sport["BASKETBALL"] = 6] = "BASKETBALL";
|
|
10
|
+
Sport[Sport["SOCCER"] = 7] = "SOCCER";
|
|
11
|
+
Sport[Sport["TENNIS"] = 8] = "TENNIS";
|
|
12
|
+
Sport[Sport["AMERICAN_FOOTBALL"] = 9] = "AMERICAN_FOOTBALL";
|
|
13
|
+
Sport[Sport["TRAINING"] = 10] = "TRAINING";
|
|
14
|
+
Sport[Sport["WALKING"] = 11] = "WALKING";
|
|
15
|
+
Sport[Sport["CROSS_COUNTRY_SKIING"] = 12] = "CROSS_COUNTRY_SKIING";
|
|
16
|
+
Sport[Sport["ALPINE_SKIING"] = 13] = "ALPINE_SKIING";
|
|
17
|
+
Sport[Sport["SNOWBOARDING"] = 14] = "SNOWBOARDING";
|
|
18
|
+
Sport[Sport["ROWING"] = 15] = "ROWING";
|
|
19
|
+
Sport[Sport["MOUNTAINEERING"] = 16] = "MOUNTAINEERING";
|
|
20
|
+
Sport[Sport["HIKING"] = 17] = "HIKING";
|
|
21
|
+
Sport[Sport["MULTISPORT"] = 18] = "MULTISPORT";
|
|
22
|
+
Sport[Sport["PADDLING"] = 19] = "PADDLING";
|
|
23
|
+
Sport[Sport["FLYING"] = 20] = "FLYING";
|
|
24
|
+
Sport[Sport["E_BIKING"] = 21] = "E_BIKING";
|
|
25
|
+
Sport[Sport["MOTORCYCLING"] = 22] = "MOTORCYCLING";
|
|
26
|
+
Sport[Sport["BOATING"] = 23] = "BOATING";
|
|
27
|
+
Sport[Sport["DRIVING"] = 24] = "DRIVING";
|
|
28
|
+
Sport[Sport["GOLF"] = 25] = "GOLF";
|
|
29
|
+
Sport[Sport["HANG_GLIDING"] = 26] = "HANG_GLIDING";
|
|
30
|
+
Sport[Sport["HORSEBACK_RIDING"] = 27] = "HORSEBACK_RIDING";
|
|
31
|
+
Sport[Sport["HUNTING"] = 28] = "HUNTING";
|
|
32
|
+
Sport[Sport["FISHING"] = 29] = "FISHING";
|
|
33
|
+
Sport[Sport["INLINE_SKATING"] = 30] = "INLINE_SKATING";
|
|
34
|
+
Sport[Sport["ROCK_CLIMBING"] = 31] = "ROCK_CLIMBING";
|
|
35
|
+
Sport[Sport["SAILING"] = 32] = "SAILING";
|
|
36
|
+
Sport[Sport["ICE_SKATING"] = 33] = "ICE_SKATING";
|
|
37
|
+
Sport[Sport["SKY_DIVING"] = 34] = "SKY_DIVING";
|
|
38
|
+
Sport[Sport["SNOWSHOEING"] = 35] = "SNOWSHOEING";
|
|
39
|
+
Sport[Sport["SNOWMOBILING"] = 36] = "SNOWMOBILING";
|
|
40
|
+
Sport[Sport["STAND_UP_PADDLEBOARDING"] = 37] = "STAND_UP_PADDLEBOARDING";
|
|
41
|
+
Sport[Sport["SURFING"] = 38] = "SURFING";
|
|
42
|
+
Sport[Sport["WAKEBOARDING"] = 39] = "WAKEBOARDING";
|
|
43
|
+
Sport[Sport["WATER_SKIING"] = 40] = "WATER_SKIING";
|
|
44
|
+
Sport[Sport["YOGA"] = 41] = "YOGA";
|
|
45
|
+
Sport[Sport["PILATES"] = 42] = "PILATES";
|
|
46
|
+
Sport[Sport["CALISTHENICS"] = 43] = "CALISTHENICS";
|
|
47
|
+
Sport[Sport["ALL"] = 254] = "ALL";
|
|
48
|
+
})(Sport || (Sport = {}));
|