From e9ff76bacdab14a9d528fb0291beb4ce00b6a35a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=A1sz?= <> Date: Thu, 7 Mar 2024 15:50:54 +0100 Subject: [PATCH] Add timeStamp to rowing data Save timeStamp when data is received and save it along with other session data. --- src/common/common.interfaces.ts | 19 ++++++------------- src/common/services/data.service.ts | 4 ++++ src/common/services/websocket.service.ts | 7 ++++--- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/common/common.interfaces.ts b/src/common/common.interfaces.ts index a3f5e29..c3fb5bd 100644 --- a/src/common/common.interfaces.ts +++ b/src/common/common.interfaces.ts @@ -16,6 +16,7 @@ export interface IMediaQuery { } export interface IRowerData { + timeStamp: Date; revTime: number; distance: number; strokeTime: number; @@ -29,6 +30,7 @@ export interface IRowerData { } export interface IRowerSettings { + timeStamp: Date; logToWebSocket: boolean | undefined; logToSdCard: boolean | undefined; bleServiceFlag: BleServiceFlag; @@ -37,22 +39,13 @@ export interface IRowerSettings { } export interface IRowerDataDto { + timeStamp: Date; data: [number, number, number, number, number, number, number, number, Array, Array]; } -export interface IAppState { - logToWebSocket: boolean | undefined; - logToSdCard: boolean | undefined; - bleServiceFlag: BleServiceFlag; - logLevel: LogLevel; - batteryLevel: number; - driveDuration: number; - recoveryDuration: number; - distance: number; - strokeCount: number; - avgStrokePower: number; - dragFactor: number; - handleForces: Array; +export interface IAppState + extends Omit, + Omit { speed: number; strokeRate: number; peakForce: number; diff --git a/src/common/services/data.service.ts b/src/common/services/data.service.ts index 44dcdc5..d929d3d 100644 --- a/src/common/services/data.service.ts +++ b/src/common/services/data.service.ts @@ -42,6 +42,7 @@ export class DataService { private resetSubject: Subject = new Subject(); private rowingData: IRowerData = { + timeStamp: new Date(), revTime: 0, distance: 0, strokeTime: 0, @@ -87,6 +88,7 @@ export class DataService { if ("data" in rowerRawMessage) { this.rowingData = { + timeStamp: rowerRawMessage.timeStamp, revTime: rowerRawMessage.data[0], distance: rowerRawMessage.data[1], strokeTime: rowerRawMessage.data[2], @@ -102,6 +104,7 @@ export class DataService { const distance = Math.round(this.rowingData.distance); const appData: IAppState = { + timeStamp: this.rowingData.timeStamp, bleServiceFlag: this.bleServiceFlag, logLevel: this.logLevel, logToSdCard: this.logToSdCard, @@ -183,6 +186,7 @@ export class DataService { this.dataRecorder.reset(); this.resetSubject.next({ + timeStamp: new Date(), data: [ this.lastRevTime, this.lastDistance, diff --git a/src/common/services/websocket.service.ts b/src/common/services/websocket.service.ts index a984806..1972e26 100644 --- a/src/common/services/websocket.service.ts +++ b/src/common/services/websocket.service.ts @@ -39,9 +39,10 @@ export class WebSocketService { closeObserver: this.closeSubject, binaryType: "arraybuffer", deserializer: (msg: MessageEvent): IRowerDataDto | IRowerSettings => - JSON.parse(new TextDecoder().decode(msg.data as ArrayBuffer)) as - | IRowerDataDto - | IRowerSettings, + ({ + ...JSON.parse(new TextDecoder().decode(msg.data as ArrayBuffer)), + timeStamp: new Date(), + }) as IRowerDataDto | IRowerSettings, }); this.webSocketSubject = socket;