tirecheck-device-sdk 0.1.999 → 0.2.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/index.cjs CHANGED
@@ -2907,6 +2907,22 @@ const bridgeSimulator = {
2907
2907
  async setVehicle(deviceId, vehicle) {
2908
2908
  const bridge = getSimulatedBridge(deviceId);
2909
2909
  bridge.vin = vehicle.vin ?? bridge.vin;
2910
+ for (const tcTyre of vehicle.tcTyres) {
2911
+ if (tcTyre.tcTpmsSensor?.id && tcTyre.mountedOn?.positionId) {
2912
+ const currentSensor = bridge.simulatorData.sensors[tcTyre.mountedOn.positionId];
2913
+ if (currentSensor?.sensorId === tcTyre.tcTpmsSensor.id) {
2914
+ continue;
2915
+ }
2916
+ const tyreAxle = bridge.simulatorData.vehicle.axles[Math.floor(tcTyre.mountedOn.positionId / 100) - 1];
2917
+ if (!tyreAxle) continue;
2918
+ const sensorIdInBinary = bridgeTools.hexToDecimalArray(tcTyre.tcTpmsSensor.id).reverse();
2919
+ bridge.simulatorData.sensors[tcTyre.mountedOn.positionId] = createSensorData(
2920
+ tyreAxle,
2921
+ tcTyre.tcTpmsSensor.id,
2922
+ sensorIdInBinary
2923
+ );
2924
+ }
2925
+ }
2910
2926
  bridge.simulatorData.vehicle = vehicle;
2911
2927
  },
2912
2928
  async getConfiguration(deviceId) {
@@ -3162,6 +3178,39 @@ function getSimulatedBridgeTemplate() {
3162
3178
  }
3163
3179
  };
3164
3180
  }
3181
+ function createSensorData(tyreAxle, sensorId, sensorIdInBinary) {
3182
+ return {
3183
+ date: Date.now(),
3184
+ eceStatus: 0,
3185
+ sensorId,
3186
+ sensorStatus: 0,
3187
+ pressure: {
3188
+ bar: tyreAxle.targetPressure ?? 0,
3189
+ meas: tyreAxle.targetPressure ?? 0,
3190
+ raw: (tyreAxle.targetPressure ?? 0) * 19.753086
3191
+ },
3192
+ pressureIssue: void 0,
3193
+ temperature: { amb: 20, celsius: 24, raw: 64 },
3194
+ byteReading: [
3195
+ 16,
3196
+ 1,
3197
+ 12,
3198
+ 253,
3199
+ 25,
3200
+ ...sensorIdInBinary,
3201
+ tyreAxle.targetPressure ? tyreAxle.targetPressure * 19.753086 : 0,
3202
+ 64,
3203
+ 255,
3204
+ 0,
3205
+ 0,
3206
+ 40,
3207
+ 255,
3208
+ 255,
3209
+ 255,
3210
+ 255
3211
+ ]
3212
+ };
3213
+ }
3165
3214
 
3166
3215
  const flexiGaugeTpmsSimulator = {
3167
3216
  createSimulatedDevice(initialData) {
@@ -3241,7 +3290,12 @@ const simulator = {
3241
3290
  const simulatedDevices = {};
3242
3291
  for (const key in devices) {
3243
3292
  const device = devices[key];
3244
- const normalizedDevice = normalizeSimulatedDevice(device);
3293
+ let normalizedDevice = normalizeSimulatedDevice(device);
3294
+ if (normalizedDevice) {
3295
+ if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3296
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3297
+ }
3298
+ }
3245
3299
  if (normalizedDevice) simulatedDevices[normalizedDevice.id] = normalizedDevice;
3246
3300
  }
3247
3301
  store.simulatedDevices = simulatedDevices;
@@ -3249,7 +3303,12 @@ const simulator = {
3249
3303
  },
3250
3304
  putSimulatedDevice(device) {
3251
3305
  ensureSimulatorMethodsAreInjected();
3252
- const normalizedDevice = this.createSimulatedDevice(device);
3306
+ let normalizedDevice = this.createSimulatedDevice(device);
3307
+ if (normalizedDevice) {
3308
+ if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3309
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3310
+ }
3311
+ }
3253
3312
  store.simulatedDevices[normalizedDevice.id] = normalizedDevice;
3254
3313
  return normalizedDevice;
3255
3314
  },
@@ -3258,40 +3317,10 @@ const simulator = {
3258
3317
  },
3259
3318
  createSimulatedDevice(device) {
3260
3319
  ensureSimulatorMethodsAreInjected();
3261
- const normalizedDevice = normalizeSimulatedDevice(device);
3320
+ let normalizedDevice = normalizeSimulatedDevice(device);
3262
3321
  if (normalizedDevice) {
3263
3322
  if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3264
- const keys = Object.keys(normalizedDevice.simulatorData.sensors);
3265
- for (const key of keys) {
3266
- const sensor = normalizedDevice.simulatorData.sensors[key];
3267
- const sensorIdInBinary = bridgeTools.hexToDecimalArray(sensor.sensorId).reverse();
3268
- const pressureTemperature = getRawPressureandTemperatureValue(
3269
- sensor.pressure.bar,
3270
- sensor.pressure.meas,
3271
- sensor.temperature.celsius
3272
- );
3273
- const responseHeader = [16, 1, 12, 253];
3274
- const rssiByte = 255;
3275
- const sensorStatus = sensor.sensorStatus;
3276
- const eceStatusByte = calculateEceStatusByte(
3277
- key,
3278
- normalizedDevice.simulatorData,
3279
- normalizedDevice.advertisingData
3280
- );
3281
- const signatureBytes = [255, 255, 255, 255];
3282
- sensor.byteReading = [
3283
- ...responseHeader,
3284
- 25,
3285
- ...sensorIdInBinary,
3286
- ...pressureTemperature,
3287
- rssiByte,
3288
- sensorStatus,
3289
- eceStatusByte,
3290
- 40,
3291
- ...signatureBytes
3292
- ];
3293
- sensor.eceStatus = eceStatusByte;
3294
- }
3323
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3295
3324
  }
3296
3325
  }
3297
3326
  return normalizedDevice;
@@ -3350,12 +3379,12 @@ function getRawPressureandTemperatureValue(barPressure, measPressure, measuredTe
3350
3379
  const ambientTemperature = 20;
3351
3380
  const rawTemperature = 40 + measuredTemperature;
3352
3381
  if (measPressure !== null) {
3353
- return [Math.round((measPressure + 1) * 19.753086), rawTemperature];
3382
+ return { rawPressure: Math.round((measPressure + 1) * 19.753086), rawTemperature };
3354
3383
  }
3355
3384
  const rawPressure = Math.round(
3356
3385
  (barPressure + 1) * (273 + measuredTemperature) / (273 + ambientTemperature) * 19.753086
3357
3386
  );
3358
- return [rawPressure, rawTemperature];
3387
+ return { rawPressure, rawTemperature };
3359
3388
  }
3360
3389
  function ensureSimulatorMethodsAreInjected() {
3361
3390
  if (areSimulatorMethodsInjected) return;
@@ -3407,6 +3436,39 @@ function ensureSimulatorMethodsAreInjected() {
3407
3436
  }
3408
3437
  }
3409
3438
  }
3439
+ function processNormalizedBridgeDevice(device) {
3440
+ const keys = Object.keys(device.simulatorData.sensors);
3441
+ for (const key of keys) {
3442
+ const sensor = device.simulatorData.sensors[key];
3443
+ const sensorIdInBinary = bridgeTools.hexToDecimalArray(sensor.sensorId).reverse();
3444
+ const { rawPressure, rawTemperature } = getRawPressureandTemperatureValue(
3445
+ sensor.pressure.bar,
3446
+ sensor.pressure.meas,
3447
+ sensor.temperature.celsius
3448
+ );
3449
+ sensor.pressure.raw = rawPressure;
3450
+ sensor.temperature.raw = rawTemperature;
3451
+ const responseHeader = [16, 1, 12, 253];
3452
+ const rssiByte = 255;
3453
+ const sensorStatus = sensor.sensorStatus;
3454
+ const eceStatusByte = calculateEceStatusByte(key, device.simulatorData, device.advertisingData);
3455
+ const signatureBytes = [255, 255, 255, 255];
3456
+ sensor.byteReading = [
3457
+ ...responseHeader,
3458
+ 25,
3459
+ ...sensorIdInBinary,
3460
+ rawPressure,
3461
+ rawTemperature,
3462
+ rssiByte,
3463
+ sensorStatus,
3464
+ eceStatusByte,
3465
+ 40,
3466
+ ...signatureBytes
3467
+ ];
3468
+ sensor.eceStatus = eceStatusByte;
3469
+ }
3470
+ return device;
3471
+ }
3410
3472
 
3411
3473
  class BridgeTcVehicleAxle {
3412
3474
  targetPressure;
package/dist/index.mjs CHANGED
@@ -2900,6 +2900,22 @@ const bridgeSimulator = {
2900
2900
  async setVehicle(deviceId, vehicle) {
2901
2901
  const bridge = getSimulatedBridge(deviceId);
2902
2902
  bridge.vin = vehicle.vin ?? bridge.vin;
2903
+ for (const tcTyre of vehicle.tcTyres) {
2904
+ if (tcTyre.tcTpmsSensor?.id && tcTyre.mountedOn?.positionId) {
2905
+ const currentSensor = bridge.simulatorData.sensors[tcTyre.mountedOn.positionId];
2906
+ if (currentSensor?.sensorId === tcTyre.tcTpmsSensor.id) {
2907
+ continue;
2908
+ }
2909
+ const tyreAxle = bridge.simulatorData.vehicle.axles[Math.floor(tcTyre.mountedOn.positionId / 100) - 1];
2910
+ if (!tyreAxle) continue;
2911
+ const sensorIdInBinary = bridgeTools.hexToDecimalArray(tcTyre.tcTpmsSensor.id).reverse();
2912
+ bridge.simulatorData.sensors[tcTyre.mountedOn.positionId] = createSensorData(
2913
+ tyreAxle,
2914
+ tcTyre.tcTpmsSensor.id,
2915
+ sensorIdInBinary
2916
+ );
2917
+ }
2918
+ }
2903
2919
  bridge.simulatorData.vehicle = vehicle;
2904
2920
  },
2905
2921
  async getConfiguration(deviceId) {
@@ -3155,6 +3171,39 @@ function getSimulatedBridgeTemplate() {
3155
3171
  }
3156
3172
  };
3157
3173
  }
3174
+ function createSensorData(tyreAxle, sensorId, sensorIdInBinary) {
3175
+ return {
3176
+ date: Date.now(),
3177
+ eceStatus: 0,
3178
+ sensorId,
3179
+ sensorStatus: 0,
3180
+ pressure: {
3181
+ bar: tyreAxle.targetPressure ?? 0,
3182
+ meas: tyreAxle.targetPressure ?? 0,
3183
+ raw: (tyreAxle.targetPressure ?? 0) * 19.753086
3184
+ },
3185
+ pressureIssue: void 0,
3186
+ temperature: { amb: 20, celsius: 24, raw: 64 },
3187
+ byteReading: [
3188
+ 16,
3189
+ 1,
3190
+ 12,
3191
+ 253,
3192
+ 25,
3193
+ ...sensorIdInBinary,
3194
+ tyreAxle.targetPressure ? tyreAxle.targetPressure * 19.753086 : 0,
3195
+ 64,
3196
+ 255,
3197
+ 0,
3198
+ 0,
3199
+ 40,
3200
+ 255,
3201
+ 255,
3202
+ 255,
3203
+ 255
3204
+ ]
3205
+ };
3206
+ }
3158
3207
 
3159
3208
  const flexiGaugeTpmsSimulator = {
3160
3209
  createSimulatedDevice(initialData) {
@@ -3234,7 +3283,12 @@ const simulator = {
3234
3283
  const simulatedDevices = {};
3235
3284
  for (const key in devices) {
3236
3285
  const device = devices[key];
3237
- const normalizedDevice = normalizeSimulatedDevice(device);
3286
+ let normalizedDevice = normalizeSimulatedDevice(device);
3287
+ if (normalizedDevice) {
3288
+ if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3289
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3290
+ }
3291
+ }
3238
3292
  if (normalizedDevice) simulatedDevices[normalizedDevice.id] = normalizedDevice;
3239
3293
  }
3240
3294
  store.simulatedDevices = simulatedDevices;
@@ -3242,7 +3296,12 @@ const simulator = {
3242
3296
  },
3243
3297
  putSimulatedDevice(device) {
3244
3298
  ensureSimulatorMethodsAreInjected();
3245
- const normalizedDevice = this.createSimulatedDevice(device);
3299
+ let normalizedDevice = this.createSimulatedDevice(device);
3300
+ if (normalizedDevice) {
3301
+ if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3302
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3303
+ }
3304
+ }
3246
3305
  store.simulatedDevices[normalizedDevice.id] = normalizedDevice;
3247
3306
  return normalizedDevice;
3248
3307
  },
@@ -3251,40 +3310,10 @@ const simulator = {
3251
3310
  },
3252
3311
  createSimulatedDevice(device) {
3253
3312
  ensureSimulatorMethodsAreInjected();
3254
- const normalizedDevice = normalizeSimulatedDevice(device);
3313
+ let normalizedDevice = normalizeSimulatedDevice(device);
3255
3314
  if (normalizedDevice) {
3256
3315
  if (normalizedDevice?.type === "bridge" && normalizedDevice?.simulatorData?.sensors) {
3257
- const keys = Object.keys(normalizedDevice.simulatorData.sensors);
3258
- for (const key of keys) {
3259
- const sensor = normalizedDevice.simulatorData.sensors[key];
3260
- const sensorIdInBinary = bridgeTools.hexToDecimalArray(sensor.sensorId).reverse();
3261
- const pressureTemperature = getRawPressureandTemperatureValue(
3262
- sensor.pressure.bar,
3263
- sensor.pressure.meas,
3264
- sensor.temperature.celsius
3265
- );
3266
- const responseHeader = [16, 1, 12, 253];
3267
- const rssiByte = 255;
3268
- const sensorStatus = sensor.sensorStatus;
3269
- const eceStatusByte = calculateEceStatusByte(
3270
- key,
3271
- normalizedDevice.simulatorData,
3272
- normalizedDevice.advertisingData
3273
- );
3274
- const signatureBytes = [255, 255, 255, 255];
3275
- sensor.byteReading = [
3276
- ...responseHeader,
3277
- 25,
3278
- ...sensorIdInBinary,
3279
- ...pressureTemperature,
3280
- rssiByte,
3281
- sensorStatus,
3282
- eceStatusByte,
3283
- 40,
3284
- ...signatureBytes
3285
- ];
3286
- sensor.eceStatus = eceStatusByte;
3287
- }
3316
+ normalizedDevice = processNormalizedBridgeDevice(normalizedDevice);
3288
3317
  }
3289
3318
  }
3290
3319
  return normalizedDevice;
@@ -3343,12 +3372,12 @@ function getRawPressureandTemperatureValue(barPressure, measPressure, measuredTe
3343
3372
  const ambientTemperature = 20;
3344
3373
  const rawTemperature = 40 + measuredTemperature;
3345
3374
  if (measPressure !== null) {
3346
- return [Math.round((measPressure + 1) * 19.753086), rawTemperature];
3375
+ return { rawPressure: Math.round((measPressure + 1) * 19.753086), rawTemperature };
3347
3376
  }
3348
3377
  const rawPressure = Math.round(
3349
3378
  (barPressure + 1) * (273 + measuredTemperature) / (273 + ambientTemperature) * 19.753086
3350
3379
  );
3351
- return [rawPressure, rawTemperature];
3380
+ return { rawPressure, rawTemperature };
3352
3381
  }
3353
3382
  function ensureSimulatorMethodsAreInjected() {
3354
3383
  if (areSimulatorMethodsInjected) return;
@@ -3400,6 +3429,39 @@ function ensureSimulatorMethodsAreInjected() {
3400
3429
  }
3401
3430
  }
3402
3431
  }
3432
+ function processNormalizedBridgeDevice(device) {
3433
+ const keys = Object.keys(device.simulatorData.sensors);
3434
+ for (const key of keys) {
3435
+ const sensor = device.simulatorData.sensors[key];
3436
+ const sensorIdInBinary = bridgeTools.hexToDecimalArray(sensor.sensorId).reverse();
3437
+ const { rawPressure, rawTemperature } = getRawPressureandTemperatureValue(
3438
+ sensor.pressure.bar,
3439
+ sensor.pressure.meas,
3440
+ sensor.temperature.celsius
3441
+ );
3442
+ sensor.pressure.raw = rawPressure;
3443
+ sensor.temperature.raw = rawTemperature;
3444
+ const responseHeader = [16, 1, 12, 253];
3445
+ const rssiByte = 255;
3446
+ const sensorStatus = sensor.sensorStatus;
3447
+ const eceStatusByte = calculateEceStatusByte(key, device.simulatorData, device.advertisingData);
3448
+ const signatureBytes = [255, 255, 255, 255];
3449
+ sensor.byteReading = [
3450
+ ...responseHeader,
3451
+ 25,
3452
+ ...sensorIdInBinary,
3453
+ rawPressure,
3454
+ rawTemperature,
3455
+ rssiByte,
3456
+ sensorStatus,
3457
+ eceStatusByte,
3458
+ 40,
3459
+ ...signatureBytes
3460
+ ];
3461
+ sensor.eceStatus = eceStatusByte;
3462
+ }
3463
+ return device;
3464
+ }
3403
3465
 
3404
3466
  class BridgeTcVehicleAxle {
3405
3467
  targetPressure;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tirecheck-device-sdk",
3
- "version": "0.1.999",
3
+ "version": "0.2.02",
4
4
  "description": "SDK for working with various devices produced by Tirecheck via Bluetooth (CAN Bridge, Routers, Sensors, FlexiGauge, PressureStick, etc)",
5
5
  "author": "Leonid Buneev <leonid.buneev@tirecheck.com>",
6
6
  "license": "ISC",