@ziztechnology/dial-library 0.0.10 → 0.0.12
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/README.md +38 -23
- package/dist/index.d.mts +142 -28
- package/dist/index.mjs +841 -660
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -166,31 +166,34 @@ type SensorMetric<T> =
|
|
|
166
166
|
| `batteryCapacity` | `{ levelPercent, chargeCounterUah }` | 无 |
|
|
167
167
|
| `battery` | 电池是否存在、充电状态、健康度和电压等 | 无 |
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
如果需要检查单次快照的车辆坐标投影和瞬时候选,可以使用 `classifyDrivingSnapshot()`:
|
|
170
170
|
|
|
171
171
|
```ts
|
|
172
172
|
import { classifyDrivingSnapshot, unifiedSensorInfo } from '@ziztechnology/dial-library';
|
|
173
173
|
|
|
174
|
-
const
|
|
174
|
+
const analysis = classifyDrivingSnapshot(await unifiedSensorInfo());
|
|
175
175
|
|
|
176
|
-
if (
|
|
176
|
+
if (analysis === null) {
|
|
177
177
|
console.log('传感器数据不可用、非法或已经过期');
|
|
178
178
|
} else {
|
|
179
|
-
console.log('
|
|
179
|
+
console.log('纵向加速度:', analysis.metrics.longitudinal);
|
|
180
|
+
console.log('偏航角速度:', analysis.metrics.yaw);
|
|
181
|
+
console.log('瞬时候选:', analysis.candidateStatus);
|
|
182
|
+
console.log('拒绝原因:', analysis.rejectionReason);
|
|
180
183
|
}
|
|
181
184
|
```
|
|
182
185
|
|
|
183
|
-
`
|
|
186
|
+
该函数不返回最终的 `STOPPED` 或 `STEADY_DRIVING`,也不保存时间窗口。`candidateStatus` 只能用于诊断,面向 UI 必须使用下一节的状态控制器。
|
|
184
187
|
|
|
185
|
-
|
|
188
|
+
设备的正反面和车头朝向需要固定,但允许安装倾角变化。SDK 对重力向量做低通滤波,并动态建立车辆坐标系:
|
|
186
189
|
|
|
187
190
|
```text
|
|
188
|
-
+X
|
|
189
|
-
|
|
190
|
-
|
|
191
|
+
right = 将设备 +X 投影到水平面
|
|
192
|
+
up = 归一化后的 TYPE_GRAVITY
|
|
193
|
+
forward = right × up
|
|
191
194
|
```
|
|
192
195
|
|
|
193
|
-
|
|
196
|
+
线性加速度和陀螺仪随后投影到该坐标系。标准化后的正偏航表示左转,负偏航表示右转,因此同一安装朝向下的俯仰角偏差不会改变前后、左右和转向符号。
|
|
194
197
|
|
|
195
198
|
## 行车状态基本使用
|
|
196
199
|
|
|
@@ -220,9 +223,13 @@ unsubscribe();
|
|
|
220
223
|
controller.destroy();
|
|
221
224
|
```
|
|
222
225
|
|
|
223
|
-
控制器默认每 200ms
|
|
226
|
+
控制器默认每 200ms 读取一次,并保证上一次读取结束后才开始下一次。所有确认都使用传感器时间而不是轮询次数;相同 `sampledAtMs` 的重复数据不会推进窗口。
|
|
224
227
|
|
|
225
|
-
静止和匀速使用 accelerometer 的 1
|
|
228
|
+
静止和匀速使用 accelerometer 的 1 秒三轴 MAD 稳健波动窗口,至少需要 5 个唯一样本。运动量不高于 `0.12 m/s²` 且陀螺仪足够稳定,连续 5 秒才进入 `STOPPED`;运动量达到 `0.18 m/s²` 或陀螺仪出现持续运动,连续 0.6 秒进入 `STEADY_DRIVING`。中间区间保持原基础状态。
|
|
229
|
+
|
|
230
|
+
普通加速和刹车要求 0.8 秒内至少 4/5 的样本方向一致;急加速和急刹要求峰值、0.6 秒持续均值及方向一致性同时成立,并拒绝垂直能量占主导或短时间反号的颠簸。转向由偏航持续值或累计转角触发并锁存到回正结束。最终优先级为:急加减速、已锁存转向、普通加减速、基础状态。
|
|
231
|
+
|
|
232
|
+
缓慢转向还要求偏航旋转占陀螺仪能量的主要部分,或存在足够的横向加速度;垂直颠簸占主导且缺少偏航佐证时不会创建转向事件。重力样本短时缺失时,控制器会在 `maxSampleAgeMs` 内复用最后一个滤波后的车辆坐标系;缓存到期后按传感器不可用处理。单独调用 `classifyDrivingSnapshot()` 不会使用控制器缓存。
|
|
226
233
|
|
|
227
234
|
### 读取当前状态
|
|
228
235
|
|
|
@@ -233,9 +240,11 @@ const snapshot = controller.getSnapshot();
|
|
|
233
240
|
|
|
234
241
|
console.log(snapshot.status); // 已提交状态
|
|
235
242
|
console.log(snapshot.candidate); // 正在确认的候选状态,可能为 null
|
|
236
|
-
console.log(snapshot.
|
|
243
|
+
console.log(snapshot.candidateSinceMs); // 候选首次出现的传感器时间
|
|
244
|
+
console.log(snapshot.activeTurn); // 已锁存的转向事件
|
|
245
|
+
console.log(snapshot.baseStatus); // STOPPED 或 STEADY_DRIVING
|
|
237
246
|
console.log(snapshot.lifecycle); // stopped、running 或 destroyed
|
|
238
|
-
console.log(snapshot.tuningVersion);
|
|
247
|
+
console.log(snapshot.tuningVersion);
|
|
239
248
|
```
|
|
240
249
|
|
|
241
250
|
### 调整识别参数
|
|
@@ -245,22 +254,28 @@ console.log(snapshot.tuningVersion); // driving-status-v1
|
|
|
245
254
|
```ts
|
|
246
255
|
const controller = createDrivingStatusController({
|
|
247
256
|
tuning: {
|
|
248
|
-
turnYawThreshold: 0.
|
|
257
|
+
turnYawThreshold: 0.13,
|
|
249
258
|
motionWindowMs: 1_200,
|
|
250
259
|
motionMinimumSamples: 6,
|
|
251
|
-
drivingMotionThreshold: 0.
|
|
252
|
-
stoppedMotionThreshold: 0.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
260
|
+
drivingMotionThreshold: 0.2,
|
|
261
|
+
stoppedMotionThreshold: 0.11,
|
|
262
|
+
stoppedConfirmationMs: 5_000,
|
|
263
|
+
longitudinalThreshold: 0.75,
|
|
264
|
+
turnYawDominanceThreshold: 0.65,
|
|
265
|
+
turnLateralEvidenceThreshold: 0.3,
|
|
257
266
|
},
|
|
258
267
|
});
|
|
259
268
|
```
|
|
260
269
|
|
|
261
|
-
`drivingMotionThreshold` 必须大于 `stoppedMotionThreshold
|
|
270
|
+
`drivingMotionThreshold` 必须大于 `stoppedMotionThreshold`,进入阈值也必须大于相应退出阈值。样本数必须是正整数,方向一致率必须大于 `0.5` 且不大于 `1`,其余窗口和阈值必须是正有限数值。
|
|
271
|
+
|
|
272
|
+
### 识别诊断
|
|
273
|
+
|
|
274
|
+
`onDiagnostic` 的 `sample_available` 事件包含 `frameSource`(`live` 或 `cached`)和 `frameAgeMs`。`detector_evidence` 会报告基础状态 MAD、普通/急加减速的均值、峰值、方向一致率和 RMS,以及转向的累计角度、偏航主导率和横向/垂直 RMS。
|
|
275
|
+
|
|
276
|
+
检测器状态变化时还会发送 `detector_transition`,其 `phase` 为 `candidate_entered`、`candidate_rejected`、`candidate_confirmed` 或 `candidate_exited`。该事件携带当时的完整 `statistics`,可直接用于真车回放调参;同一状态不会逐轮询重复发送。
|
|
262
277
|
|
|
263
|
-
|
|
278
|
+
惯性传感器无法严格区分“完全静止”和“没有任何振动的理想匀速直线运动”。默认算法使用稳健振动统计、陀螺仪扰动和 5 秒确认近似判断,修改阈值后应使用完整路测过程回放验证。
|
|
264
279
|
|
|
265
280
|
### 驱动行车表情
|
|
266
281
|
|
package/dist/index.d.mts
CHANGED
|
@@ -69,38 +69,91 @@ declare const unifiedSensorInfo: () => Promise<UnifiedSensorInfoPayload>;
|
|
|
69
69
|
interface DrivingStatusTuning {
|
|
70
70
|
version: string;
|
|
71
71
|
maxSampleAgeMs: number;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
turnLateralThreshold: number;
|
|
72
|
+
gravityFilterTimeConstantMs: number;
|
|
73
|
+
biasFilterTimeConstantMs: number;
|
|
74
|
+
vehicleRightMinimumNorm: number;
|
|
76
75
|
motionWindowMs: number;
|
|
77
76
|
motionMinimumSamples: number;
|
|
78
|
-
drivingMotionThreshold: number;
|
|
79
77
|
stoppedMotionThreshold: number;
|
|
78
|
+
drivingMotionThreshold: number;
|
|
80
79
|
stoppedGyroThreshold: number;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
80
|
+
stoppedRawGyroThreshold: number;
|
|
81
|
+
drivingGyroThreshold: number;
|
|
82
|
+
drivingRawGyroThreshold: number;
|
|
83
|
+
stoppedConfirmationMs: number;
|
|
84
|
+
drivingConfirmationMs: number;
|
|
85
|
+
longitudinalWindowMs: number;
|
|
86
|
+
longitudinalMinimumSamples: number;
|
|
87
|
+
longitudinalThreshold: number;
|
|
88
|
+
longitudinalExitThreshold: number;
|
|
89
|
+
longitudinalSignCoherence: number;
|
|
90
|
+
longitudinalReleaseMs: number;
|
|
91
|
+
rapidLongitudinalWindowMs: number;
|
|
92
|
+
rapidLongitudinalMinimumSamples: number;
|
|
93
|
+
rapidLongitudinalPeakThreshold: number;
|
|
94
|
+
rapidLongitudinalMeanThreshold: number;
|
|
95
|
+
rapidLongitudinalSignCoherence: number;
|
|
96
|
+
rapidMinimumDisplayMs: number;
|
|
97
|
+
verticalBumpRatio: number;
|
|
98
|
+
longitudinalReversalWindowMs: number;
|
|
99
|
+
turnWindowMs: number;
|
|
100
|
+
turnMinimumSamples: number;
|
|
101
|
+
turnYawThreshold: number;
|
|
102
|
+
turnConfirmationMs: number;
|
|
103
|
+
turnIntegratedAngleThreshold: number;
|
|
104
|
+
turnSignCoherence: number;
|
|
105
|
+
turnYawDominanceThreshold: number;
|
|
106
|
+
turnLateralEvidenceThreshold: number;
|
|
107
|
+
turnVerticalNoiseFloor: number;
|
|
108
|
+
turnVerticalBumpRatio: number;
|
|
109
|
+
turnExitYawThreshold: number;
|
|
110
|
+
turnExitConfirmationMs: number;
|
|
111
|
+
turnClosureWindowMs: number;
|
|
112
|
+
}
|
|
113
|
+
type DrivingStatusTuningOverrides = Partial<DrivingStatusTuning>;
|
|
90
114
|
declare const DEFAULT_DRIVING_STATUS_TUNING: Readonly<DrivingStatusTuning>;
|
|
115
|
+
interface DrivingVehicleFrame {
|
|
116
|
+
up: Vector3Value;
|
|
117
|
+
right: Vector3Value;
|
|
118
|
+
forward: Vector3Value;
|
|
119
|
+
}
|
|
120
|
+
interface DrivingMetricsCorrection {
|
|
121
|
+
filteredGravity?: Vector3Value;
|
|
122
|
+
filteredGravitySampledAtMs?: number;
|
|
123
|
+
linearAccelerationBias?: Vector3Value;
|
|
124
|
+
gyroscopeBias?: Vector3Value;
|
|
125
|
+
}
|
|
91
126
|
interface DrivingSnapshotMetrics {
|
|
92
127
|
capturedAtMs: number;
|
|
128
|
+
linearAccelerationSampledAtMs: number;
|
|
129
|
+
gyroscopeSampledAtMs: number;
|
|
130
|
+
gravitySampledAtMs: number;
|
|
93
131
|
longitudinal: number;
|
|
94
132
|
lateral: number;
|
|
133
|
+
vertical: number;
|
|
95
134
|
yaw: number;
|
|
96
|
-
motionIntensity: number;
|
|
97
135
|
gyroMagnitude: number;
|
|
136
|
+
rawGyroMagnitude: number;
|
|
137
|
+
rawLinearAcceleration: Vector3Value;
|
|
138
|
+
rawGyroscope: Vector3Value;
|
|
139
|
+
frame: DrivingVehicleFrame;
|
|
140
|
+
}
|
|
141
|
+
type DrivingSnapshotCandidate = Exclude<CarRunningStatus, 'STOPPED' | 'STEADY_DRIVING'>;
|
|
142
|
+
type DrivingSnapshotRejectionReason = 'vertical_bump' | null;
|
|
143
|
+
interface DrivingSnapshotAnalysis {
|
|
144
|
+
capturedAtMs: number;
|
|
145
|
+
metrics: DrivingSnapshotMetrics;
|
|
146
|
+
candidateStatus: DrivingSnapshotCandidate | null;
|
|
147
|
+
rejectionReason: DrivingSnapshotRejectionReason;
|
|
148
|
+
quality: {
|
|
149
|
+
frameValid: true;
|
|
150
|
+
maximumSampleAgeMs: number;
|
|
151
|
+
};
|
|
98
152
|
}
|
|
99
|
-
declare const classifyDrivingSnapshot: (info: UnifiedSensorInfoPayload, tuningOverrides?: DrivingStatusTuningOverrides) =>
|
|
100
|
-
declare const checkRunningStatus: (info: UnifiedSensorInfoPayload, tuningOverrides?: DrivingStatusTuningOverrides) => CarRunningStatus | null;
|
|
153
|
+
declare const classifyDrivingSnapshot: (info: UnifiedSensorInfoPayload, tuningOverrides?: DrivingStatusTuningOverrides) => DrivingSnapshotAnalysis | null;
|
|
101
154
|
declare const resolveDrivingStatusTuning: (overrides?: DrivingStatusTuningOverrides) => DrivingStatusTuning;
|
|
102
|
-
declare const extractDrivingSnapshotMetrics: (info: UnifiedSensorInfoPayload, tuning?: Pick<DrivingStatusTuning, "maxSampleAgeMs"
|
|
103
|
-
declare const
|
|
155
|
+
declare const extractDrivingSnapshotMetrics: (info: UnifiedSensorInfoPayload, tuning?: Pick<DrivingStatusTuning, "maxSampleAgeMs" | "vehicleRightMinimumNorm">, correction?: DrivingMetricsCorrection) => DrivingSnapshotMetrics | null;
|
|
156
|
+
declare const buildVehicleFrame: (gravity: Vector3Value, rightMinimumNorm?: number) => DrivingVehicleFrame | null;
|
|
104
157
|
//#endregion
|
|
105
158
|
//#region src/sensor/driving_expressions.d.ts
|
|
106
159
|
interface MediaLibraryRef {
|
|
@@ -199,10 +252,54 @@ interface DrivingStatusEvent {
|
|
|
199
252
|
reason: DrivingStatusChangeReason;
|
|
200
253
|
atMs: number;
|
|
201
254
|
}
|
|
255
|
+
type DrivingFrameSource = 'live' | 'cached';
|
|
256
|
+
type DrivingDetectorName = 'base' | 'rapid_longitudinal' | 'longitudinal' | 'turn';
|
|
257
|
+
type DrivingDetectorTransitionPhase = 'candidate_entered' | 'candidate_rejected' | 'candidate_confirmed' | 'candidate_exited';
|
|
258
|
+
type DrivingDetectorRejectionReason = 'vertical_bump' | 'longitudinal_reversal' | null;
|
|
259
|
+
interface DrivingBaseDetectorStatistics {
|
|
260
|
+
sampleCount: number;
|
|
261
|
+
durationMs: number;
|
|
262
|
+
motionMad: number | null;
|
|
263
|
+
gyroMagnitude: number;
|
|
264
|
+
rawGyroMagnitude: number;
|
|
265
|
+
}
|
|
266
|
+
interface DrivingLongitudinalWindowStatistics {
|
|
267
|
+
sampleCount: number;
|
|
268
|
+
durationMs: number;
|
|
269
|
+
mean: number;
|
|
270
|
+
peak: number;
|
|
271
|
+
coherence: number;
|
|
272
|
+
}
|
|
273
|
+
interface DrivingRapidLongitudinalStatistics extends DrivingLongitudinalWindowStatistics {
|
|
274
|
+
longitudinalRms: number;
|
|
275
|
+
verticalRms: number;
|
|
276
|
+
hasReversal: boolean;
|
|
277
|
+
}
|
|
278
|
+
interface DrivingTurnDetectorStatistics {
|
|
279
|
+
sampleCount: number;
|
|
280
|
+
durationMs: number;
|
|
281
|
+
strongMean: number;
|
|
282
|
+
strongCoherence: number;
|
|
283
|
+
signedAngle: number;
|
|
284
|
+
gentleCoherence: number;
|
|
285
|
+
yawRms: number;
|
|
286
|
+
rawGyroRms: number;
|
|
287
|
+
yawDominance: number;
|
|
288
|
+
lateralRms: number;
|
|
289
|
+
verticalRms: number;
|
|
290
|
+
}
|
|
291
|
+
interface DrivingDetectorStatistics {
|
|
292
|
+
base: DrivingBaseDetectorStatistics;
|
|
293
|
+
longitudinal: DrivingLongitudinalWindowStatistics | null;
|
|
294
|
+
rapidLongitudinal: DrivingRapidLongitudinalStatistics | null;
|
|
295
|
+
turn: DrivingTurnDetectorStatistics | null;
|
|
296
|
+
}
|
|
202
297
|
type DrivingStatusDiagnosticEvent = {
|
|
203
298
|
type: 'sample_available';
|
|
204
299
|
atMs: number;
|
|
205
300
|
capturedAtMs: number;
|
|
301
|
+
frameSource: DrivingFrameSource;
|
|
302
|
+
frameAgeMs: number;
|
|
206
303
|
tuningVersion: string;
|
|
207
304
|
} | {
|
|
208
305
|
type: 'sample_unavailable';
|
|
@@ -210,6 +307,28 @@ type DrivingStatusDiagnosticEvent = {
|
|
|
210
307
|
unavailableForMs: number;
|
|
211
308
|
category: 'provider_error' | 'invalid_or_stale_snapshot';
|
|
212
309
|
tuningVersion: string;
|
|
310
|
+
} | {
|
|
311
|
+
type: 'detector_evidence';
|
|
312
|
+
atMs: number;
|
|
313
|
+
motionMad: number | null;
|
|
314
|
+
baseCondition: 'warming_up' | 'stationary' | 'moving' | 'hysteresis';
|
|
315
|
+
rapidCandidate: 'RAPID_ACCELERATION' | 'SUDDEN_BRAKING' | null;
|
|
316
|
+
longitudinalCandidate: 'ACCELERATION' | 'BRAKING' | null;
|
|
317
|
+
turnCandidate: 'LEFT_TURN' | 'RIGHT_TURN' | null;
|
|
318
|
+
rejectionReason: DrivingDetectorRejectionReason;
|
|
319
|
+
frameSource: DrivingFrameSource;
|
|
320
|
+
frameAgeMs: number;
|
|
321
|
+
statistics: DrivingDetectorStatistics;
|
|
322
|
+
tuningVersion: string;
|
|
323
|
+
} | {
|
|
324
|
+
type: 'detector_transition';
|
|
325
|
+
atMs: number;
|
|
326
|
+
detector: DrivingDetectorName;
|
|
327
|
+
phase: DrivingDetectorTransitionPhase;
|
|
328
|
+
status: CarRunningStatus | null;
|
|
329
|
+
rejectionReason: DrivingDetectorRejectionReason;
|
|
330
|
+
statistics: DrivingDetectorStatistics;
|
|
331
|
+
tuningVersion: string;
|
|
213
332
|
} | {
|
|
214
333
|
type: 'candidate_changed';
|
|
215
334
|
atMs: number;
|
|
@@ -223,13 +342,6 @@ type DrivingStatusDiagnosticEvent = {
|
|
|
223
342
|
previousStatus: CarRunningStatus;
|
|
224
343
|
reason: DrivingStatusChangeReason;
|
|
225
344
|
tuningVersion: string;
|
|
226
|
-
} | {
|
|
227
|
-
type: 'status_held_by_min_duration';
|
|
228
|
-
atMs: number;
|
|
229
|
-
status: CarRunningStatus;
|
|
230
|
-
candidate: CarRunningStatus;
|
|
231
|
-
remainingMs: number;
|
|
232
|
-
tuningVersion: string;
|
|
233
345
|
} | {
|
|
234
346
|
type: 'fallback_to_stopped';
|
|
235
347
|
atMs: number;
|
|
@@ -239,8 +351,10 @@ type DrivingStatusDiagnosticEvent = {
|
|
|
239
351
|
interface DrivingControllerSnapshot {
|
|
240
352
|
lifecycle: 'stopped' | 'running' | 'destroyed';
|
|
241
353
|
status: CarRunningStatus;
|
|
354
|
+
baseStatus: 'STOPPED' | 'STEADY_DRIVING';
|
|
355
|
+
activeTurn: 'LEFT_TURN' | 'RIGHT_TURN' | null;
|
|
242
356
|
candidate: CarRunningStatus | null;
|
|
243
|
-
|
|
357
|
+
candidateSinceMs: number | null;
|
|
244
358
|
statusCommittedAtMs: number;
|
|
245
359
|
lastAvailableAtMs: number | null;
|
|
246
360
|
unavailableSinceMs: number | null;
|
|
@@ -320,4 +434,4 @@ interface DrivingExpressionPlayer {
|
|
|
320
434
|
}
|
|
321
435
|
declare const createDrivingExpressionPlayer: (container: HTMLElement, options: DrivingExpressionPlayerOptions) => DrivingExpressionPlayer;
|
|
322
436
|
//#endregion
|
|
323
|
-
export { AvailableSensorMetric, BATTERY_HEALTH_LABELS, BatteryCapacityValue, BatteryHealth, BatteryPlugged, BatteryStateValue, BatteryStatus, CAR_RUNNING_LABELS, CAR_RUNNING_STATUSES, CAR_RUNNING_STATUS_PRIORITY, CarRunningStatus, CompleteDrivingExpressionsConfig, DEFAULT_DRIVING_STATUS_TUNING, DrivingControllerSnapshot, DrivingExpressionMedia, DrivingExpressionPlayer, DrivingExpressionPlayerDiagnosticEvent, DrivingExpressionPlayerErrorCategory, DrivingExpressionPlayerOptions, DrivingExpressionPlayerSnapshot, DrivingExpressionResolutionError, DrivingExpressionsConfig, DrivingExpressionsConfigError, DrivingExpressionsConfigErrorCode, DrivingExpressionsConfigInput, DrivingSensorProvider, DrivingSnapshotMetrics, DrivingStatusChangeReason, DrivingStatusClock, DrivingStatusController, DrivingStatusControllerOptions, DrivingStatusDiagnosticEvent, DrivingStatusEvent, DrivingStatusTuning, DrivingStatusTuningOverrides, EmojiDrivingExpressionMedia, ImageDrivingExpressionMedia, LivePhotoDrivingExpressionMedia, MediaLibraryRef, OFFICIAL_DRIVING_EXPRESSIONS_CONFIG, OFFICIAL_DRIVING_EXPRESSION_FALLBACKS, OrientationValue, ParseDrivingExpressionsOptions, StructuredDrivingExpressionMedia, TgsDrivingExpressionMedia, UnavailableSensorMetric, UnifiedSensorInfoPayload, UnifiedSensorMetric, UnifiedSensorUnavailableReason, Vector3Value, VideoDrivingExpressionMedia, WaitForDrivingExpressionsConfigOptions,
|
|
437
|
+
export { AvailableSensorMetric, BATTERY_HEALTH_LABELS, BatteryCapacityValue, BatteryHealth, BatteryPlugged, BatteryStateValue, BatteryStatus, CAR_RUNNING_LABELS, CAR_RUNNING_STATUSES, CAR_RUNNING_STATUS_PRIORITY, CarRunningStatus, CompleteDrivingExpressionsConfig, DEFAULT_DRIVING_STATUS_TUNING, DrivingBaseDetectorStatistics, DrivingControllerSnapshot, DrivingDetectorName, DrivingDetectorRejectionReason, DrivingDetectorStatistics, DrivingDetectorTransitionPhase, DrivingExpressionMedia, DrivingExpressionPlayer, DrivingExpressionPlayerDiagnosticEvent, DrivingExpressionPlayerErrorCategory, DrivingExpressionPlayerOptions, DrivingExpressionPlayerSnapshot, DrivingExpressionResolutionError, DrivingExpressionsConfig, DrivingExpressionsConfigError, DrivingExpressionsConfigErrorCode, DrivingExpressionsConfigInput, DrivingFrameSource, DrivingLongitudinalWindowStatistics, DrivingMetricsCorrection, DrivingRapidLongitudinalStatistics, DrivingSensorProvider, DrivingSnapshotAnalysis, DrivingSnapshotCandidate, DrivingSnapshotMetrics, DrivingSnapshotRejectionReason, DrivingStatusChangeReason, DrivingStatusClock, DrivingStatusController, DrivingStatusControllerOptions, DrivingStatusDiagnosticEvent, DrivingStatusEvent, DrivingStatusTuning, DrivingStatusTuningOverrides, DrivingTurnDetectorStatistics, DrivingVehicleFrame, EmojiDrivingExpressionMedia, ImageDrivingExpressionMedia, LivePhotoDrivingExpressionMedia, MediaLibraryRef, OFFICIAL_DRIVING_EXPRESSIONS_CONFIG, OFFICIAL_DRIVING_EXPRESSION_FALLBACKS, OrientationValue, ParseDrivingExpressionsOptions, StructuredDrivingExpressionMedia, TgsDrivingExpressionMedia, UnavailableSensorMetric, UnifiedSensorInfoPayload, UnifiedSensorMetric, UnifiedSensorUnavailableReason, Vector3Value, VideoDrivingExpressionMedia, WaitForDrivingExpressionsConfigOptions, buildVehicleFrame, classifyDrivingSnapshot, createDrivingExpressionPlayer, createDrivingStatusController, extractDrivingSnapshotMetrics, isPublicDrivingMediaUrl, parseDrivingExpressionsConfig, readDrivingExpressionsConfig, resolveDrivingExpression, resolveDrivingExpressionStrict, resolveDrivingStatusTuning, tryParseDrivingExpressionsConfig, unifiedSensorInfo, waitForDrivingExpressionsConfig };
|