trackswap 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.
Files changed (82) hide show
  1. package/README.md +322 -281
  2. package/dist/FIT/base.d.ts +0 -30
  3. package/dist/FIT/decoder.d.ts +0 -48
  4. package/dist/FIT/encoder.d.ts +0 -97
  5. package/dist/FIT/mesg.d.ts +0 -3
  6. package/dist/FIT/middleware.d.ts +0 -15
  7. package/dist/FIT/plugins.d.ts +0 -9
  8. package/dist/FIT/processor.d.ts +0 -24
  9. package/dist/FIT/types/mesg_num.d.ts +102 -102
  10. package/dist/FIT/types/sport.d.ts +44 -44
  11. package/dist/FIT/types.d.ts +0 -35
  12. package/dist/GPX/base.d.ts +0 -39
  13. package/dist/GPX/converters.d.ts +0 -30
  14. package/dist/GPX/decoder.d.ts +0 -66
  15. package/dist/GPX/encoder.d.ts +0 -109
  16. package/dist/GPX/middleware.d.ts +0 -9
  17. package/dist/GPX/processor.d.ts +0 -18
  18. package/dist/GPX/types.d.ts +0 -108
  19. package/dist/TCX/base.d.ts +0 -33
  20. package/dist/TCX/converters.d.ts +0 -24
  21. package/dist/TCX/decoder.d.ts +0 -54
  22. package/dist/TCX/encoder.d.ts +0 -109
  23. package/dist/TCX/index.d.ts +4 -1
  24. package/dist/TCX/middleware.d.ts +0 -9
  25. package/dist/TCX/processor.d.ts +0 -18
  26. package/dist/TCX/types.d.ts +0 -13
  27. package/dist/TrackSwap.d.ts +37 -33
  28. package/dist/core/base.d.ts +0 -46
  29. package/dist/core/xml-utils.d.ts +0 -24
  30. package/dist/index.js +24 -5
  31. package/dist/sport/base.d.ts +63 -0
  32. package/dist/sport/converters.d.ts +33 -0
  33. package/dist/sport/encoders.d.ts +34 -0
  34. package/dist/sport/index.d.ts +17 -0
  35. package/dist/sport/processor.d.ts +19 -0
  36. package/dist/types.d.ts +91 -13
  37. package/package.json +18 -3
  38. package/dist/FIT/base.js +0 -101
  39. package/dist/FIT/crc.js +0 -16
  40. package/dist/FIT/decoder.js +0 -323
  41. package/dist/FIT/encoder.js +0 -445
  42. package/dist/FIT/index.js +0 -13
  43. package/dist/FIT/mesg.js +0 -208
  44. package/dist/FIT/middleware.js +0 -206
  45. package/dist/FIT/plugins.js +0 -104
  46. package/dist/FIT/processor.js +0 -170
  47. package/dist/FIT/types/course_point.js +0 -58
  48. package/dist/FIT/types/event.js +0 -50
  49. package/dist/FIT/types/event_type.js +0 -19
  50. package/dist/FIT/types/file.js +0 -24
  51. package/dist/FIT/types/index.js +0 -297
  52. package/dist/FIT/types/mesg_num.js +0 -106
  53. package/dist/FIT/types/sport.js +0 -48
  54. package/dist/FIT/types.js +0 -1
  55. package/dist/FIT/util.js +0 -7
  56. package/dist/GPX/base.js +0 -56
  57. package/dist/GPX/converters.js +0 -352
  58. package/dist/GPX/decoder.js +0 -409
  59. package/dist/GPX/encoder.js +0 -513
  60. package/dist/GPX/extensions/index.js +0 -14
  61. package/dist/GPX/index.js +0 -11
  62. package/dist/GPX/middleware.js +0 -93
  63. package/dist/GPX/processor.js +0 -188
  64. package/dist/GPX/types.js +0 -1
  65. package/dist/GPX/util.js +0 -18
  66. package/dist/TCX/base.js +0 -62
  67. package/dist/TCX/converters.js +0 -333
  68. package/dist/TCX/decoder.js +0 -350
  69. package/dist/TCX/encoder.js +0 -513
  70. package/dist/TCX/index.js +0 -9
  71. package/dist/TCX/middleware.js +0 -93
  72. package/dist/TCX/processor.js +0 -197
  73. package/dist/TCX/types.js +0 -1
  74. package/dist/TrackSwap.js +0 -84
  75. package/dist/core/base.js +0 -138
  76. package/dist/core/decoder.d.ts +0 -66
  77. package/dist/core/decoder.js +0 -90
  78. package/dist/core/index.js +0 -4
  79. package/dist/core/processor.d.ts +0 -69
  80. package/dist/core/processor.js +0 -265
  81. package/dist/core/xml-utils.js +0 -140
  82. package/dist/types.js +0 -1
@@ -1,47 +1,23 @@
1
1
  import { IPlugin } from "../core/base.js";
2
2
  import { FITContext, FITDecoderMesgs, FITFileType } from "./types.js";
3
- /**
4
- * FIT 消息转换器插件接口
5
- */
6
3
  export interface IFITMessageConverter extends IPlugin<FITContext> {
7
- /** 支持的消息类型 */
8
4
  supportedMessageTypes: string[];
9
- /** 转换消息 */
10
5
  convertMessages(messages: any[], context: FITContext): any;
11
- /** 是否支持该消息类型 */
12
6
  supports(messageType: string): boolean;
13
- /** 优先级 */
14
7
  priority?: number;
15
8
  }
16
- /**
17
- * FIT 数据结构化插件接口
18
- */
19
9
  export interface IFITStructurePlugin extends IPlugin<FITContext> {
20
- /** 结构化数据 */
21
10
  structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
22
- /** 优先级 */
23
11
  priority?: number;
24
12
  }
25
- /**
26
- * FIT 中间件插件接口
27
- */
28
13
  export interface IFITMiddlewarePlugin extends IPlugin<FITContext> {
29
- /** 优先级 */
30
14
  priority?: number;
31
- /** 在解析阶段执行 */
32
15
  onParse?(buffer: Buffer, context: FITContext): Promise<Buffer> | Buffer;
33
- /** 在消息提取阶段执行 */
34
16
  onExtractMessages?(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs> | FITDecoderMesgs;
35
- /** 在数据结构化阶段执行 */
36
17
  onStructure?(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>> | Partial<FITFileType>;
37
- /** 在完成阶段执行 */
38
18
  onComplete?(result: FITFileType, context: FITContext): Promise<FITFileType> | FITFileType;
39
- /** 错误处理 */
40
19
  onError?(error: Error, context: FITContext): Promise<void> | void;
41
20
  }
42
- /**
43
- * FIT 消息转换器基类
44
- */
45
21
  export declare abstract class BaseFITMessageConverter implements IFITMessageConverter {
46
22
  abstract name: string;
47
23
  abstract supportedMessageTypes: string[];
@@ -60,9 +36,6 @@ export declare abstract class BaseFITMessageConverter implements IFITMessageConv
60
36
  records: any[];
61
37
  }>;
62
38
  }
63
- /**
64
- * FIT 数据结构化插件基类
65
- */
66
39
  export declare abstract class BaseFITStructurePlugin implements IFITStructurePlugin {
67
40
  abstract name: string;
68
41
  version: string;
@@ -72,9 +45,6 @@ export declare abstract class BaseFITStructurePlugin implements IFITStructurePlu
72
45
  destroy(context: FITContext): Promise<void>;
73
46
  validate(context: FITContext): Promise<boolean>;
74
47
  }
75
- /**
76
- * FIT 中间件基类
77
- */
78
48
  export declare abstract class BaseFITMiddleware implements IFITMiddlewarePlugin {
79
49
  abstract name: string;
80
50
  version: string;
@@ -1,8 +1,5 @@
1
1
  import { IFITMessageConverter, IFITStructurePlugin, IFITMiddlewarePlugin } from "./base.js";
2
2
  import { FITFileType } from "./types.js";
3
- /**
4
- * FIT 解码器 - 遵循 GPX 风格的插件架构
5
- */
6
3
  export declare class FITDecoder {
7
4
  private converterPlugins;
8
5
  private registeredPlugins;
@@ -12,65 +9,20 @@ export declare class FITDecoder {
12
9
  private initialized;
13
10
  private defaultPluginsRegistered;
14
11
  constructor();
15
- /**
16
- * 初始化流水线 - 注册固定的核心处理器
17
- */
18
12
  private initializePipeline;
19
- /**
20
- * 自动注册默认插件
21
- */
22
13
  private registerDefaultPlugins;
23
- /**
24
- * 为指定消息类型添加转换器,按优先级排序
25
- */
26
14
  private addConverterForMessageType;
27
- /**
28
- * 添加结构化插件
29
- */
30
15
  private addStructurePlugin;
31
- /**
32
- * 注册消息转换器插件
33
- */
34
16
  registerMessageConverter(plugin: IFITMessageConverter): Promise<void>;
35
- /**
36
- * 注册结构化插件
37
- */
38
17
  registerStructurePlugin(plugin: IFITStructurePlugin): Promise<void>;
39
- /**
40
- * 注册中间件插件
41
- */
42
18
  registerMiddleware(plugin: IFITMiddlewarePlugin): Promise<void>;
43
- /**
44
- * 获取消息类型转换器(返回优先级最高的)
45
- */
46
19
  getConverter(messageType: string): IFITMessageConverter | undefined;
47
- /**
48
- * 获取指定消息类型的所有转换器(按优先级排序)
49
- */
50
20
  getConverters(messageType: string): IFITMessageConverter[];
51
- /**
52
- * 移除插件
53
- */
54
21
  unregisterPlugin(pluginName: string): boolean;
55
- /**
56
- * 初始化解码器
57
- */
58
22
  initialize(): Promise<void>;
59
- /**
60
- * 销毁解码器
61
- */
62
23
  destroy(): Promise<void>;
63
- /**
64
- * 创建解码上下文
65
- */
66
24
  private createContext;
67
- /**
68
- * 执行中间件钩子
69
- */
70
25
  private executeMiddlewareHook;
71
- /**
72
- * 主解析方法 - 固定的流水线 + 灵活的中间件
73
- */
74
26
  parseByBuffer(buffer: Buffer, options?: {
75
27
  skipValidation?: boolean;
76
28
  enableStats?: boolean;
@@ -1,139 +1,42 @@
1
1
  import { FITFileType } from "./types.js";
2
- /**
3
- * FIT 编码器选项
4
- */
5
2
  export interface FITEncoderOptions {
6
- /** 是否启用紧凑模式 */
7
3
  compact?: boolean;
8
- /** 默认运动类型 */
9
4
  defaultSport?: string;
10
- /** 默认子运动类型 */
11
5
  defaultSubSport?: string;
12
6
  }
13
- /**
14
- * FIT 编码器 - 将 FITFileType 数据编码为 FIT 二进制格式
15
- */
16
7
  export declare class FITEncoder {
17
8
  private localNum;
18
9
  private mesgDefn;
19
10
  private messages;
20
11
  private options;
21
- /**
22
- * 构造函数
23
- * @param options 编码器选项
24
- */
25
12
  constructor(options?: FITEncoderOptions);
26
- /**
27
- * 编码 FIT 数据为 Buffer - Activity 文件类型
28
- */
29
13
  encode(fitData: FITFileType): Promise<Buffer>;
30
- /**
31
- * 编码 FIT 数据为 Buffer - Course 文件类型
32
- */
33
14
  encodeCourse(fitData: FITFileType): Promise<Buffer>;
34
- /**
35
- * 编码 FIT 数据为 Blob
36
- */
37
15
  encodeToBlob(fitData: FITFileType, fileType?: "activity" | "course"): Promise<Blob>;
38
- /**
39
- * 重置编码器状态
40
- */
41
16
  private reset;
42
- /**
43
- * 构建 FIT 文件内容
44
- */
45
17
  private buildFITContent;
46
- /**
47
- * 构建 Activity 文件内容
48
- */
49
18
  private buildActivityContent;
50
- /**
51
- * 构建 Course 文件内容
52
- */
53
19
  private buildCourseContent;
54
- /**
55
- * 构建文件ID
56
- */
57
20
  private buildFileId;
58
- /**
59
- * 构建Session
60
- */
61
21
  private buildSession;
62
- /**
63
- * 构建Laps
64
- */
65
22
  private buildLaps;
66
- /**
67
- * 构建单个Lap
68
- */
69
23
  private buildLap;
70
- /**
71
- * 构建Records
72
- */
73
24
  private buildRecords;
74
- /**
75
- * 构建单个Record
76
- */
77
25
  private buildRecord;
78
- /**
79
- * 构建Event
80
- */
81
26
  private buildEvent;
82
- /**
83
- * 构建Activity
84
- */
85
27
  private buildActivity;
86
- /**
87
- * 构建Course
88
- */
89
28
  private buildCourse;
90
- /**
91
- * 从Laps构建Events
92
- */
93
29
  private buildEventsFromLaps;
94
- /**
95
- * 从Session构建Activity
96
- */
97
30
  private buildActivityFromSession;
98
- /**
99
- * 解析时间戳
100
- */
101
31
  private parseTimestamp;
102
- /**
103
- * 转换坐标为半圆单位
104
- */
105
32
  private convertToSemicircles;
106
- /**
107
- * 验证必要字段
108
- */
109
33
  private validateRequiredFields;
110
- /**
111
- * 写入消息
112
- */
113
34
  private writeMesg;
114
- /**
115
- * 获取Blob对象
116
- */
117
35
  get blob(): Blob;
118
- /**
119
- * 获取数据长度
120
- */
121
36
  get dataLen(): number;
122
- /**
123
- * 获取数据CRC
124
- */
125
37
  get dataCrc(): number;
126
- /**
127
- * 获取文件头
128
- */
129
38
  get header(): ArrayBuffer;
130
- /**
131
- * 获取文件尾
132
- */
133
39
  get trailer(): ArrayBuffer;
134
- /**
135
- * @deprecated 使用 encode() 替代
136
- */
137
40
  encoder(fitData: FITFileType): Promise<Buffer>;
138
41
  }
139
42
  declare const _default: {
@@ -29,9 +29,6 @@ export declare class Mesg {
29
29
  constructor(localNum: number, mesgName: string, values: {
30
30
  [key: string]: any;
31
31
  });
32
- /**
33
- * 获取 defns,并获取了 size
34
- */
35
32
  get mesgDefn(): ProcessedMesgDefn;
36
33
  isSameDefn(mesgDefn: ProcessedMesgDefn): boolean;
37
34
  get defnRecord(): ArrayBuffer;
@@ -1,8 +1,5 @@
1
1
  import { BaseFITMiddleware } from "./base.js";
2
2
  import { FITDecoderMesgs, FITFileType, FITContext } from "./types.js";
3
- /**
4
- * 性能监控中间件
5
- */
6
3
  export declare class PerformanceMiddleware extends BaseFITMiddleware {
7
4
  name: string;
8
5
  description: string;
@@ -15,34 +12,22 @@ export declare class PerformanceMiddleware extends BaseFITMiddleware {
15
12
  private analyzeStructure;
16
13
  private getSummary;
17
14
  }
18
- /**
19
- * 数据验证中间件
20
- */
21
15
  export declare class ValidationMiddleware extends BaseFITMiddleware {
22
16
  name: string;
23
17
  description: string;
24
18
  onComplete(result: FITFileType, context: FITContext): Promise<FITFileType>;
25
19
  private validateFIT;
26
20
  }
27
- /**
28
- * 数据清理中间件
29
- */
30
21
  export declare class DataCleanupMiddleware extends BaseFITMiddleware {
31
22
  name: string;
32
23
  description: string;
33
24
  onStructure(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>>;
34
25
  private cleanupData;
35
26
  }
36
- /**
37
- * 文件信息提取中间件
38
- */
39
27
  export declare class FileInfoMiddleware extends BaseFITMiddleware {
40
28
  name: string;
41
29
  description: string;
42
30
  onExtractMessages(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs>;
43
31
  private extractFileInfo;
44
32
  }
45
- /**
46
- * 注册所有默认中间件
47
- */
48
33
  export declare function registerDefaultMiddlewares(decoder: any): Promise<void>;
@@ -1,24 +1,15 @@
1
1
  import { BaseFITStructurePlugin } from "./base.js";
2
2
  import { FITDecoderMesgs, FITFileType, FITContext } from "./types.js";
3
- /**
4
- * Session 数据结构化插件
5
- */
6
3
  export declare class SessionStructurePlugin extends BaseFITStructurePlugin {
7
4
  name: string;
8
5
  priority: number;
9
6
  structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
10
7
  }
11
- /**
12
- * Course 数据结构化插件
13
- */
14
8
  export declare class CourseStructurePlugin extends BaseFITStructurePlugin {
15
9
  name: string;
16
10
  priority: number;
17
11
  structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
18
12
  }
19
- /**
20
- * 文件头信息提取插件
21
- */
22
13
  export declare class FileHeaderPlugin extends BaseFITStructurePlugin {
23
14
  name: string;
24
15
  priority: number;
@@ -1,58 +1,34 @@
1
1
  import { IFITMessageConverter, IFITStructurePlugin } from "./base.js";
2
2
  import { FITContext } from "./types.js";
3
- /**
4
- * FIT 流水线阶段
5
- */
6
3
  export declare enum FITPipelineStage {
7
4
  PARSE = "parse",
8
5
  EXTRACT = "extract",
9
6
  STRUCTURE = "structure",
10
7
  COMPLETE = "complete"
11
8
  }
12
- /**
13
- * FIT 流水线处理器接口
14
- */
15
9
  export interface IFITPipelineProcessor {
16
10
  stage: FITPipelineStage;
17
11
  process(context: FITContext): Promise<FITContext>;
18
12
  }
19
- /**
20
- * Parse处理器 - 解析二进制FIT数据为消息
21
- */
22
13
  export declare class ParseProcessor implements IFITPipelineProcessor {
23
14
  stage: FITPipelineStage;
24
15
  process(context: FITContext): Promise<FITContext>;
25
- /**
26
- * 使用 FIT SDK 解析二进制数据
27
- */
28
16
  private parseWithFitSDK;
29
17
  }
30
- /**
31
- * Extract处理器 - 提取和转换消息
32
- */
33
18
  export declare class ExtractProcessor implements IFITPipelineProcessor {
34
19
  private getConverters;
35
20
  stage: FITPipelineStage;
36
21
  constructor(getConverters: (messageType: string) => IFITMessageConverter[]);
37
22
  process(context: FITContext): Promise<FITContext>;
38
23
  }
39
- /**
40
- * Structure处理器 - 数据结构化
41
- */
42
24
  export declare class StructureProcessor implements IFITPipelineProcessor {
43
25
  private getStructurePlugins;
44
26
  stage: FITPipelineStage;
45
27
  constructor(getStructurePlugins: () => IFITStructurePlugin[]);
46
28
  process(context: FITContext): Promise<FITContext>;
47
29
  }
48
- /**
49
- * Complete处理器 - 最终处理和清理
50
- */
51
30
  export declare class CompleteProcessor implements IFITPipelineProcessor {
52
31
  stage: FITPipelineStage;
53
32
  process(context: FITContext): Promise<FITContext>;
54
- /**
55
- * 计算消息总数
56
- */
57
33
  private countTotalMessages;
58
34
  }
@@ -1,105 +1,105 @@
1
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,// 夜间皮肤温度
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,
39
+ ANT_TX = 81,
40
+ ANT_CHANNEL_ID = 82,
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,
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,
59
+ CAMERA_EVENT = 161,
60
+ TIMESTAMP_CORRELATION = 162,
61
+ GYROSCOPE_DATA = 164,
62
+ ACCELEROMETER_DATA = 165,
63
+ THREE_D_SENSOR_CALIBRATION = 167,
64
+ VIDEO_FRAME = 169,
65
+ OBDII_DATA = 174,
66
+ NMEA_SENTENCE = 177,
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,
77
+ MAGNETOMETER_DATA = 208,
78
+ BAROMETER_DATA = 209,
79
+ ONE_D_SENSOR_CALIBRATION = 210,
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,
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,
99
+ CHRONO_SHOT_SESSION = 387,
100
+ CHRONO_SHOT_DATA = 388,
101
+ HSA_CONFIGURATION_DATA = 389,
102
+ DIVE_APNEA_ALARM = 393,
103
+ SKIN_TEMP_OVERNIGHT = 398,
104
104
  HSA_WRIST_TEMPERATURE_DATA = 409
105
105
  }