@ovok/native 1.16.1-dev.2089 → 1.16.1-dev.2091
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/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js +4 -3
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.main-services.js +55 -7
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.main-services.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js +5 -4
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.main-services.js +55 -7
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.main-services.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts +7 -17
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts +7 -17
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -28,7 +28,7 @@ class BC01Device extends _btManagedDevice.BTManagedDevice {
|
|
|
28
28
|
this.reportedTimestamps.clear();
|
|
29
29
|
};
|
|
30
30
|
reportedTimestamps = new Set();
|
|
31
|
-
mainServices = _bc01MainServices.bc01MainServices;
|
|
31
|
+
mainServices = [_bc01MainServices.bc01MainServices[0]];
|
|
32
32
|
frameReader = new _bc01FrameReader.Bc01FrameReader();
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -40,6 +40,7 @@ class BC01Device extends _btManagedDevice.BTManagedDevice {
|
|
|
40
40
|
stuckDataTimeout = 90_000;
|
|
41
41
|
constructor(device, params) {
|
|
42
42
|
super(device, params);
|
|
43
|
+
this.mainServices = [(0, _bc01MainServices.selectBc01MainService)(device.serviceUUIDs)];
|
|
43
44
|
|
|
44
45
|
/**
|
|
45
46
|
* The BC401 answers one command with one frame and picks the next command
|
|
@@ -52,8 +53,8 @@ class BC01Device extends _btManagedDevice.BTManagedDevice {
|
|
|
52
53
|
this.reportedTimestamps.clear();
|
|
53
54
|
return new _bc01CommandSequencer.Bc01CommandSequencer({
|
|
54
55
|
write: {
|
|
55
|
-
serviceUuid:
|
|
56
|
-
characteristicUuid:
|
|
56
|
+
serviceUuid: this.mainServices[0].uuid,
|
|
57
|
+
characteristicUuid: this.mainServices[0].writeUuid.uuid
|
|
57
58
|
},
|
|
58
59
|
onError: reason => this.onError?.(new Error(`BC401: ${reason}`)),
|
|
59
60
|
clockSync: params.clockSync,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_measurementFeedback","_caseType","_hexToByte","_btManagedDevice","_bc01CommandSequencer","_bc01FrameParser","_bc01FrameReader","_bc01MainServices","BC01Device","BTManagedDevice","onStreamStart","reportedTimestamps","clear","Set","mainServices","bc01MainServices","frameReader","Bc01FrameReader","stuckDataTimeout","constructor","device","params","createCommandSequencer","Bc01CommandSequencer","write","serviceUuid","uuid","characteristicUuid","writeUuid","onError","reason","Error","clockSync","clearDeviceHistory","now","validatePackage","pkg","length","opcode","hexToByte","minLength","bc01FrameLengths","toString","padStart","undefined","handleDependentResult","data","frame","reportUrsRecord","parsingCase","caseType","CaseType","OTHER","parsed","parseBc01Record","measuredValues","BC01_ANALYTE_ORDER","reduce","acc","analyte","value","values","Object","keys","MeasurementFeedbackKey","DISTURB_DETECTED","timestamp","getTime","has","add","reading","RESULT","measurementTypeKey","MeasurementTypeKey","uricAcid","urineValues","recordedAt","onResult","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.device.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAQA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AAEA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,gBAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;
|
|
1
|
+
{"version":3,"names":["_core","require","_measurementFeedback","_caseType","_hexToByte","_btManagedDevice","_bc01CommandSequencer","_bc01FrameParser","_bc01FrameReader","_bc01MainServices","BC01Device","BTManagedDevice","onStreamStart","reportedTimestamps","clear","Set","mainServices","bc01MainServices","frameReader","Bc01FrameReader","stuckDataTimeout","constructor","device","params","selectBc01MainService","serviceUUIDs","createCommandSequencer","Bc01CommandSequencer","write","serviceUuid","uuid","characteristicUuid","writeUuid","onError","reason","Error","clockSync","clearDeviceHistory","now","validatePackage","pkg","length","opcode","hexToByte","minLength","bc01FrameLengths","toString","padStart","undefined","handleDependentResult","data","frame","reportUrsRecord","parsingCase","caseType","CaseType","OTHER","parsed","parseBc01Record","measuredValues","BC01_ANALYTE_ORDER","reduce","acc","analyte","value","values","Object","keys","MeasurementFeedbackKey","DISTURB_DETECTED","timestamp","getTime","has","add","reading","RESULT","measurementTypeKey","MeasurementTypeKey","uricAcid","urineValues","recordedAt","onResult","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,20 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.bc01MainServices = void 0;
|
|
6
|
+
exports.selectBc01MainService = exports.bc01MainServices = exports.BC01_UART_SERVICE_UUID = void 0;
|
|
7
7
|
var _core = require("@ovok/core");
|
|
8
8
|
var _caseType = require("../../../types/case-type.js");
|
|
9
9
|
/**
|
|
10
|
-
* Contec BC401 (a.k.a. BC01) urine analyzer — GATT
|
|
10
|
+
* Contec BC401 (a.k.a. BC01) urine analyzer — supported GATT profiles.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* in `bc01-command-sequencer.ts`.
|
|
12
|
+
* PHMS supports both the proprietary FF12 profile and the Microchip/ISSC
|
|
13
|
+
* transparent-UART profile. The peripheral advertises its active profile; the
|
|
14
|
+
* device selects one profile and subscribes only to its characteristics.
|
|
16
15
|
*
|
|
17
16
|
* Service 0xFF12
|
|
18
17
|
* Notify (result) 0xFF02 — CCCD 0x2902 must be written 01 00 to enable
|
|
19
18
|
* Write (command) 0xFF01 — RESET / SET_TIME / GET_COUNT / GET_RECORDS
|
|
19
|
+
* Service 49535343-fe7d-4ae5-8fa9-9fafd205e455
|
|
20
|
+
* Notify (result) 49535343-1e4d-4bd9-ba61-23c647249616
|
|
21
|
+
* Write (command) 49535343-8841-43f4-a8d4-ecbe34729bb3
|
|
20
22
|
*
|
|
21
23
|
* On the wire a stored URS record opens with 0xE1 (single) or 0xE2 (paginated).
|
|
22
24
|
* The remaining fifteen bytes carry the flags nibble, timestamp, seven bytes of
|
|
@@ -24,8 +26,10 @@ var _caseType = require("../../../types/case-type.js");
|
|
|
24
26
|
* them; this file just declares the GATT surface and hands every E1/E2 frame
|
|
25
27
|
* to the driver's dependent-result path so the parser can run.
|
|
26
28
|
*/
|
|
29
|
+
const BC01_FF12_SERVICE_UUID = "0000ff12-0000-1000-8000-00805f9b34fb";
|
|
30
|
+
const BC01_UART_SERVICE_UUID = exports.BC01_UART_SERVICE_UUID = "49535343-fe7d-4ae5-8fa9-9fafd205e455";
|
|
27
31
|
const bc01MainServices = exports.bc01MainServices = [{
|
|
28
|
-
uuid:
|
|
32
|
+
uuid: BC01_FF12_SERVICE_UUID,
|
|
29
33
|
/**
|
|
30
34
|
* PHMS 3.0.03 writes `[0x80, 0x00]` to 0xFF01 the moment its GATT
|
|
31
35
|
* subscription is up — decompiled at L1/f.java:694 ("发送复位命令" — "send
|
|
@@ -63,5 +67,49 @@ const bc01MainServices = exports.bc01MainServices = [{
|
|
|
63
67
|
}]
|
|
64
68
|
}
|
|
65
69
|
}]
|
|
70
|
+
}, {
|
|
71
|
+
uuid: BC01_UART_SERVICE_UUID,
|
|
72
|
+
writeUuid: {
|
|
73
|
+
uuid: "49535343-8841-43f4-a8d4-ecbe34729bb3",
|
|
74
|
+
mainCommandUuid: "8000"
|
|
75
|
+
},
|
|
76
|
+
monitorUuids: [{
|
|
77
|
+
uuid: "49535343-1e4d-4bd9-ba61-23c647249616",
|
|
78
|
+
parsingModel: {
|
|
79
|
+
caseValuePosition: [0],
|
|
80
|
+
cases: [{
|
|
81
|
+
measurementTypeKey: _core.MeasurementTypeKey.uricAcid,
|
|
82
|
+
caseType: _caseType.CaseType.DEPENDENT,
|
|
83
|
+
caseValue: "e1",
|
|
84
|
+
parseDefinitions: []
|
|
85
|
+
}, {
|
|
86
|
+
measurementTypeKey: _core.MeasurementTypeKey.uricAcid,
|
|
87
|
+
caseType: _caseType.CaseType.DEPENDENT,
|
|
88
|
+
caseValue: "e2",
|
|
89
|
+
parseDefinitions: []
|
|
90
|
+
}]
|
|
91
|
+
}
|
|
92
|
+
}]
|
|
66
93
|
}];
|
|
94
|
+
const normalizeAdvertisedUuid = uuid => {
|
|
95
|
+
const normalized = uuid.trim().toLowerCase();
|
|
96
|
+
if (/^[0-9a-f]{4}$/.test(normalized)) {
|
|
97
|
+
return `0000${normalized}-0000-1000-8000-00805f9b34fb`;
|
|
98
|
+
}
|
|
99
|
+
if (/^[0-9a-f]{8}$/.test(normalized)) {
|
|
100
|
+
return `${normalized}-0000-1000-8000-00805f9b34fb`;
|
|
101
|
+
}
|
|
102
|
+
return normalized;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Select the advertised profile, preferring the existing FF12 protocol when
|
|
107
|
+
* a peripheral advertises both. Devices without an advertisement keep the
|
|
108
|
+
* established FF12 behavior.
|
|
109
|
+
*/
|
|
110
|
+
const selectBc01MainService = advertisedServiceUuids => {
|
|
111
|
+
const advertised = new Set((advertisedServiceUuids ?? []).map(normalizeAdvertisedUuid));
|
|
112
|
+
return bc01MainServices.find(service => advertised.has(service.uuid)) ?? bc01MainServices[0];
|
|
113
|
+
};
|
|
114
|
+
exports.selectBc01MainService = selectBc01MainService;
|
|
67
115
|
//# sourceMappingURL=bc01.main-services.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_core","require","_caseType","
|
|
1
|
+
{"version":3,"names":["_core","require","_caseType","BC01_FF12_SERVICE_UUID","BC01_UART_SERVICE_UUID","exports","bc01MainServices","uuid","writeUuid","mainCommandUuid","monitorUuids","parsingModel","caseValuePosition","cases","measurementTypeKey","MeasurementTypeKey","uricAcid","caseType","CaseType","DEPENDENT","caseValue","parseDefinitions","normalizeAdvertisedUuid","normalized","trim","toLowerCase","test","selectBc01MainService","advertisedServiceUuids","advertised","Set","map","find","service","has"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAME,sBAAsB,GAC1B,sCAAsC;AAExC,MAAMC,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAC1B,sCAAsC;AAExC,MAAME,gBAA4B,GAAAD,OAAA,CAAAC,gBAAA,GAAG,CACnC;EACEC,IAAI,EAAEJ,sBAAsB;EAE5B;AACJ;AACA;AACA;AACA;AACA;AACA;EACIK,SAAS,EAAE;IACTD,IAAI,EAAE,sCAAsC;IAC5CE,eAAe,EAAE;EACnB,CAAC;EACDC,YAAY,EAAE,CACZ;IACEH,IAAI,EAAE,sCAAsC;IAE5C;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQI,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAEC,wBAAkB,CAACC,QAAQ;QAC/CC,QAAQ,EAAEC,kBAAQ,CAACC,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC,EACD;QACEP,kBAAkB,EAAEC,wBAAkB,CAACC,QAAQ;QAC/CC,QAAQ,EAAEC,kBAAQ,CAACC,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,EACD;EACEd,IAAI,EAAEH,sBAAsB;EAC5BI,SAAS,EAAE;IACTD,IAAI,EAAE,sCAAsC;IAC5CE,eAAe,EAAE;EACnB,CAAC;EACDC,YAAY,EAAE,CACZ;IACEH,IAAI,EAAE,sCAAsC;IAC5CI,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAEC,wBAAkB,CAACC,QAAQ;QAC/CC,QAAQ,EAAEC,kBAAQ,CAACC,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC,EACD;QACEP,kBAAkB,EAAEC,wBAAkB,CAACC,QAAQ;QAC/CC,QAAQ,EAAEC,kBAAQ,CAACC,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,CACF;AAED,MAAMC,uBAAuB,GAAIf,IAAY,IAAa;EACxD,MAAMgB,UAAU,GAAGhB,IAAI,CAACiB,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAE5C,IAAI,eAAe,CAACC,IAAI,CAACH,UAAU,CAAC,EAAE;IACpC,OAAO,OAAOA,UAAU,8BAA8B;EACxD;EAEA,IAAI,eAAe,CAACG,IAAI,CAACH,UAAU,CAAC,EAAE;IACpC,OAAO,GAAGA,UAAU,8BAA8B;EACpD;EAEA,OAAOA,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMI,qBAAqB,GACzBC,sBAA4D,IAC/C;EACb,MAAMC,UAAU,GAAG,IAAIC,GAAG,CACxB,CAACF,sBAAsB,IAAI,EAAE,EAAEG,GAAG,CAACT,uBAAuB,CAC5D,CAAC;EAED,OACEhB,gBAAgB,CAAC0B,IAAI,CAAEC,OAAO,IAAKJ,UAAU,CAACK,GAAG,CAACD,OAAO,CAAC1B,IAAI,CAAC,CAAC,IAChED,gBAAgB,CAAC,CAAC,CAAE;AAExB,CAAC;AAACD,OAAA,CAAAsB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ import { BTManagedDevice } from "../bt-managed-device.js";
|
|
|
8
8
|
import { Bc01CommandSequencer } from "./bc01-command-sequencer.js";
|
|
9
9
|
import { BC01_ANALYTE_ORDER, parseBc01Record } from "./bc01-frame-parser.js";
|
|
10
10
|
import { Bc01FrameReader, bc01FrameLengths } from "./bc01.frame-reader.js";
|
|
11
|
-
import { bc01MainServices } from "./bc01.main-services.js";
|
|
11
|
+
import { bc01MainServices, selectBc01MainService } from "./bc01.main-services.js";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Contec BC401 (BC01) urine analyzer driver.
|
|
@@ -25,7 +25,7 @@ export class BC01Device extends BTManagedDevice {
|
|
|
25
25
|
this.reportedTimestamps.clear();
|
|
26
26
|
};
|
|
27
27
|
reportedTimestamps = new Set();
|
|
28
|
-
mainServices = bc01MainServices;
|
|
28
|
+
mainServices = [bc01MainServices[0]];
|
|
29
29
|
frameReader = new Bc01FrameReader();
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -37,6 +37,7 @@ export class BC01Device extends BTManagedDevice {
|
|
|
37
37
|
stuckDataTimeout = 90_000;
|
|
38
38
|
constructor(device, params) {
|
|
39
39
|
super(device, params);
|
|
40
|
+
this.mainServices = [selectBc01MainService(device.serviceUUIDs)];
|
|
40
41
|
|
|
41
42
|
/**
|
|
42
43
|
* The BC401 answers one command with one frame and picks the next command
|
|
@@ -49,8 +50,8 @@ export class BC01Device extends BTManagedDevice {
|
|
|
49
50
|
this.reportedTimestamps.clear();
|
|
50
51
|
return new Bc01CommandSequencer({
|
|
51
52
|
write: {
|
|
52
|
-
serviceUuid:
|
|
53
|
-
characteristicUuid:
|
|
53
|
+
serviceUuid: this.mainServices[0].uuid,
|
|
54
|
+
characteristicUuid: this.mainServices[0].writeUuid.uuid
|
|
54
55
|
},
|
|
55
56
|
onError: reason => this.onError?.(new Error(`BC401: ${reason}`)),
|
|
56
57
|
clockSync: params.clockSync,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","MeasurementFeedbackKey","CaseType","hexToByte","BTManagedDevice","Bc01CommandSequencer","BC01_ANALYTE_ORDER","parseBc01Record","Bc01FrameReader","bc01FrameLengths","bc01MainServices","BC01Device","onStreamStart","reportedTimestamps","clear","Set","mainServices","frameReader","stuckDataTimeout","constructor","device","params","createCommandSequencer","write","serviceUuid","uuid","characteristicUuid","writeUuid","onError","reason","Error","clockSync","clearDeviceHistory","now","validatePackage","pkg","length","opcode","minLength","toString","padStart","undefined","handleDependentResult","data","frame","reportUrsRecord","parsingCase","caseType","OTHER","parsed","measuredValues","reduce","acc","analyte","value","values","Object","keys","DISTURB_DETECTED","timestamp","getTime","has","add","reading","RESULT","measurementTypeKey","uricAcid","urineValues","recordedAt","onResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.device.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAiC,YAAY;AAGxE,SAASC,sBAAsB,QAAQ,4CAAyC;AAChF,SAASC,QAAQ,QAAQ,6BAA0B;AAQnD,SAASC,SAAS,QAAQ,+BAA4B;AACtD,SAASC,eAAe,QAAQ,yBAAsB;AAEtD,SAASC,oBAAoB,QAAQ,6BAA0B;AAC/D,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,wBAAqB;AACzE,SAASC,eAAe,EAAEC,gBAAgB,QAAQ,wBAAqB;AACvE,
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","MeasurementFeedbackKey","CaseType","hexToByte","BTManagedDevice","Bc01CommandSequencer","BC01_ANALYTE_ORDER","parseBc01Record","Bc01FrameReader","bc01FrameLengths","bc01MainServices","selectBc01MainService","BC01Device","onStreamStart","reportedTimestamps","clear","Set","mainServices","frameReader","stuckDataTimeout","constructor","device","params","serviceUUIDs","createCommandSequencer","write","serviceUuid","uuid","characteristicUuid","writeUuid","onError","reason","Error","clockSync","clearDeviceHistory","now","validatePackage","pkg","length","opcode","minLength","toString","padStart","undefined","handleDependentResult","data","frame","reportUrsRecord","parsingCase","caseType","OTHER","parsed","measuredValues","reduce","acc","analyte","value","values","Object","keys","DISTURB_DETECTED","timestamp","getTime","has","add","reading","RESULT","measurementTypeKey","uricAcid","urineValues","recordedAt","onResult"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
import { MeasurementTypeKey } from "@ovok/core";
|
|
4
4
|
import { CaseType } from "../../../types/case-type.js";
|
|
5
5
|
/**
|
|
6
|
-
* Contec BC401 (a.k.a. BC01) urine analyzer — GATT
|
|
6
|
+
* Contec BC401 (a.k.a. BC01) urine analyzer — supported GATT profiles.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* in `bc01-command-sequencer.ts`.
|
|
8
|
+
* PHMS supports both the proprietary FF12 profile and the Microchip/ISSC
|
|
9
|
+
* transparent-UART profile. The peripheral advertises its active profile; the
|
|
10
|
+
* device selects one profile and subscribes only to its characteristics.
|
|
12
11
|
*
|
|
13
12
|
* Service 0xFF12
|
|
14
13
|
* Notify (result) 0xFF02 — CCCD 0x2902 must be written 01 00 to enable
|
|
15
14
|
* Write (command) 0xFF01 — RESET / SET_TIME / GET_COUNT / GET_RECORDS
|
|
15
|
+
* Service 49535343-fe7d-4ae5-8fa9-9fafd205e455
|
|
16
|
+
* Notify (result) 49535343-1e4d-4bd9-ba61-23c647249616
|
|
17
|
+
* Write (command) 49535343-8841-43f4-a8d4-ecbe34729bb3
|
|
16
18
|
*
|
|
17
19
|
* On the wire a stored URS record opens with 0xE1 (single) or 0xE2 (paginated).
|
|
18
20
|
* The remaining fifteen bytes carry the flags nibble, timestamp, seven bytes of
|
|
@@ -20,8 +22,10 @@ import { CaseType } from "../../../types/case-type.js";
|
|
|
20
22
|
* them; this file just declares the GATT surface and hands every E1/E2 frame
|
|
21
23
|
* to the driver's dependent-result path so the parser can run.
|
|
22
24
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
const BC01_FF12_SERVICE_UUID = "0000ff12-0000-1000-8000-00805f9b34fb";
|
|
26
|
+
const BC01_UART_SERVICE_UUID = "49535343-fe7d-4ae5-8fa9-9fafd205e455";
|
|
27
|
+
const bc01MainServices = [{
|
|
28
|
+
uuid: BC01_FF12_SERVICE_UUID,
|
|
25
29
|
/**
|
|
26
30
|
* PHMS 3.0.03 writes `[0x80, 0x00]` to 0xFF01 the moment its GATT
|
|
27
31
|
* subscription is up — decompiled at L1/f.java:694 ("发送复位命令" — "send
|
|
@@ -59,5 +63,49 @@ export const bc01MainServices = [{
|
|
|
59
63
|
}]
|
|
60
64
|
}
|
|
61
65
|
}]
|
|
66
|
+
}, {
|
|
67
|
+
uuid: BC01_UART_SERVICE_UUID,
|
|
68
|
+
writeUuid: {
|
|
69
|
+
uuid: "49535343-8841-43f4-a8d4-ecbe34729bb3",
|
|
70
|
+
mainCommandUuid: "8000"
|
|
71
|
+
},
|
|
72
|
+
monitorUuids: [{
|
|
73
|
+
uuid: "49535343-1e4d-4bd9-ba61-23c647249616",
|
|
74
|
+
parsingModel: {
|
|
75
|
+
caseValuePosition: [0],
|
|
76
|
+
cases: [{
|
|
77
|
+
measurementTypeKey: MeasurementTypeKey.uricAcid,
|
|
78
|
+
caseType: CaseType.DEPENDENT,
|
|
79
|
+
caseValue: "e1",
|
|
80
|
+
parseDefinitions: []
|
|
81
|
+
}, {
|
|
82
|
+
measurementTypeKey: MeasurementTypeKey.uricAcid,
|
|
83
|
+
caseType: CaseType.DEPENDENT,
|
|
84
|
+
caseValue: "e2",
|
|
85
|
+
parseDefinitions: []
|
|
86
|
+
}]
|
|
87
|
+
}
|
|
88
|
+
}]
|
|
62
89
|
}];
|
|
90
|
+
const normalizeAdvertisedUuid = uuid => {
|
|
91
|
+
const normalized = uuid.trim().toLowerCase();
|
|
92
|
+
if (/^[0-9a-f]{4}$/.test(normalized)) {
|
|
93
|
+
return `0000${normalized}-0000-1000-8000-00805f9b34fb`;
|
|
94
|
+
}
|
|
95
|
+
if (/^[0-9a-f]{8}$/.test(normalized)) {
|
|
96
|
+
return `${normalized}-0000-1000-8000-00805f9b34fb`;
|
|
97
|
+
}
|
|
98
|
+
return normalized;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Select the advertised profile, preferring the existing FF12 protocol when
|
|
103
|
+
* a peripheral advertises both. Devices without an advertisement keep the
|
|
104
|
+
* established FF12 behavior.
|
|
105
|
+
*/
|
|
106
|
+
const selectBc01MainService = advertisedServiceUuids => {
|
|
107
|
+
const advertised = new Set((advertisedServiceUuids ?? []).map(normalizeAdvertisedUuid));
|
|
108
|
+
return bc01MainServices.find(service => advertised.has(service.uuid)) ?? bc01MainServices[0];
|
|
109
|
+
};
|
|
110
|
+
export { BC01_UART_SERVICE_UUID, bc01MainServices, selectBc01MainService };
|
|
63
111
|
//# sourceMappingURL=bc01.main-services.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","CaseType","bc01MainServices","uuid","writeUuid","mainCommandUuid","monitorUuids","parsingModel","caseValuePosition","cases","measurementTypeKey","uricAcid","caseType","DEPENDENT","caseValue","parseDefinitions"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAE/C,SAASC,QAAQ,QAAQ,6BAA0B;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","CaseType","BC01_FF12_SERVICE_UUID","BC01_UART_SERVICE_UUID","bc01MainServices","uuid","writeUuid","mainCommandUuid","monitorUuids","parsingModel","caseValuePosition","cases","measurementTypeKey","uricAcid","caseType","DEPENDENT","caseValue","parseDefinitions","normalizeAdvertisedUuid","normalized","trim","toLowerCase","test","selectBc01MainService","advertisedServiceUuids","advertised","Set","map","find","service","has"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAE/C,SAASC,QAAQ,QAAQ,6BAA0B;AAGnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAC1B,sCAAsC;AAExC,MAAMC,sBAAsB,GAC1B,sCAAsC;AAExC,MAAMC,gBAA4B,GAAG,CACnC;EACEC,IAAI,EAAEH,sBAAsB;EAE5B;AACJ;AACA;AACA;AACA;AACA;AACA;EACII,SAAS,EAAE;IACTD,IAAI,EAAE,sCAAsC;IAC5CE,eAAe,EAAE;EACnB,CAAC;EACDC,YAAY,EAAE,CACZ;IACEH,IAAI,EAAE,sCAAsC;IAE5C;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQI,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAEZ,kBAAkB,CAACa,QAAQ;QAC/CC,QAAQ,EAAEb,QAAQ,CAACc,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC,EACD;QACEL,kBAAkB,EAAEZ,kBAAkB,CAACa,QAAQ;QAC/CC,QAAQ,EAAEb,QAAQ,CAACc,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,EACD;EACEZ,IAAI,EAAEF,sBAAsB;EAC5BG,SAAS,EAAE;IACTD,IAAI,EAAE,sCAAsC;IAC5CE,eAAe,EAAE;EACnB,CAAC;EACDC,YAAY,EAAE,CACZ;IACEH,IAAI,EAAE,sCAAsC;IAC5CI,YAAY,EAAE;MACZC,iBAAiB,EAAE,CAAC,CAAC,CAAC;MACtBC,KAAK,EAAE,CACL;QACEC,kBAAkB,EAAEZ,kBAAkB,CAACa,QAAQ;QAC/CC,QAAQ,EAAEb,QAAQ,CAACc,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC,EACD;QACEL,kBAAkB,EAAEZ,kBAAkB,CAACa,QAAQ;QAC/CC,QAAQ,EAAEb,QAAQ,CAACc,SAAS;QAC5BC,SAAS,EAAE,IAAI;QACfC,gBAAgB,EAAE;MACpB,CAAC;IAEL;EACF,CAAC;AAEL,CAAC,CACF;AAED,MAAMC,uBAAuB,GAAIb,IAAY,IAAa;EACxD,MAAMc,UAAU,GAAGd,IAAI,CAACe,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAE5C,IAAI,eAAe,CAACC,IAAI,CAACH,UAAU,CAAC,EAAE;IACpC,OAAO,OAAOA,UAAU,8BAA8B;EACxD;EAEA,IAAI,eAAe,CAACG,IAAI,CAACH,UAAU,CAAC,EAAE;IACpC,OAAO,GAAGA,UAAU,8BAA8B;EACpD;EAEA,OAAOA,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMI,qBAAqB,GACzBC,sBAA4D,IAC/C;EACb,MAAMC,UAAU,GAAG,IAAIC,GAAG,CACxB,CAACF,sBAAsB,IAAI,EAAE,EAAEG,GAAG,CAACT,uBAAuB,CAC5D,CAAC;EAED,OACEd,gBAAgB,CAACwB,IAAI,CAAEC,OAAO,IAAKJ,UAAU,CAACK,GAAG,CAACD,OAAO,CAACxB,IAAI,CAAC,CAAC,IAChED,gBAAgB,CAAC,CAAC,CAAE;AAExB,CAAC;AAED,SACED,sBAAsB,EACtBC,gBAAgB,EAChBmB,qBAAqB","ignoreList":[]}
|
package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAMxE;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrE,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAEjC;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAA0B;IAC5D,SAAS,CAAC,WAAW,EAAE,eAAe,CAAyB;IAE/D;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,SAAU;gBAExB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IA6B9E;;;;;OAKG;IACH,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAanD;IAEF;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,GAC7B,MAAM,4BAA4B,CAChC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,KACA,4BAA4B,CAC7B,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,CASC;IAEF;;;;;;OAMG;IAEH,OAAO,CAAC,eAAe;CA6CxB"}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { IService } from "../../../types/service.type";
|
|
2
|
+
declare const BC01_UART_SERVICE_UUID = "49535343-fe7d-4ae5-8fa9-9fafd205e455";
|
|
3
|
+
declare const bc01MainServices: IService[];
|
|
2
4
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* consumer medical devices. Every stored urine-strip measurement is pushed as a
|
|
7
|
-
* 16-byte record on 0xFF02 after the host has walked the handshake documented
|
|
8
|
-
* in `bc01-command-sequencer.ts`.
|
|
9
|
-
*
|
|
10
|
-
* Service 0xFF12
|
|
11
|
-
* Notify (result) 0xFF02 — CCCD 0x2902 must be written 01 00 to enable
|
|
12
|
-
* Write (command) 0xFF01 — RESET / SET_TIME / GET_COUNT / GET_RECORDS
|
|
13
|
-
*
|
|
14
|
-
* On the wire a stored URS record opens with 0xE1 (single) or 0xE2 (paginated).
|
|
15
|
-
* The remaining fifteen bytes carry the flags nibble, timestamp, seven bytes of
|
|
16
|
-
* packed 3-bit analyte indices, and a checksum. `bc01-frame-parser.ts` decodes
|
|
17
|
-
* them; this file just declares the GATT surface and hands every E1/E2 frame
|
|
18
|
-
* to the driver's dependent-result path so the parser can run.
|
|
5
|
+
* Select the advertised profile, preferring the existing FF12 protocol when
|
|
6
|
+
* a peripheral advertises both. Devices without an advertisement keep the
|
|
7
|
+
* established FF12 behavior.
|
|
19
8
|
*/
|
|
20
|
-
|
|
9
|
+
declare const selectBc01MainService: (advertisedServiceUuids: readonly string[] | null | undefined) => IService;
|
|
10
|
+
export { BC01_UART_SERVICE_UUID, bc01MainServices, selectBc01MainService, };
|
|
21
11
|
//# sourceMappingURL=bc01.main-services.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAyBvD,QAAA,MAAM,sBAAsB,yCACY,CAAC;AAEzC,QAAA,MAAM,gBAAgB,EAAE,QAAQ,EA6E/B,CAAC;AAgBF;;;;GAIG;AACH,QAAA,MAAM,qBAAqB,GACzB,wBAAwB,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,KAC3D,QASF,CAAC;AAEF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,GACtB,CAAC"}
|
package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAMxE;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrE,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAEjC;IAEF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAA0B;IAC5D,SAAS,CAAC,WAAW,EAAE,eAAe,CAAyB;IAE/D;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,SAAU;gBAExB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IA6B9E;;;;;OAKG;IACH,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAanD;IAEF;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,GAC7B,MAAM,4BAA4B,CAChC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,KACA,4BAA4B,CAC7B,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,CASC;IAEF;;;;;;OAMG;IAEH,OAAO,CAAC,eAAe;CA6CxB"}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { IService } from "../../../types/service.type";
|
|
2
|
+
declare const BC01_UART_SERVICE_UUID = "49535343-fe7d-4ae5-8fa9-9fafd205e455";
|
|
3
|
+
declare const bc01MainServices: IService[];
|
|
2
4
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* consumer medical devices. Every stored urine-strip measurement is pushed as a
|
|
7
|
-
* 16-byte record on 0xFF02 after the host has walked the handshake documented
|
|
8
|
-
* in `bc01-command-sequencer.ts`.
|
|
9
|
-
*
|
|
10
|
-
* Service 0xFF12
|
|
11
|
-
* Notify (result) 0xFF02 — CCCD 0x2902 must be written 01 00 to enable
|
|
12
|
-
* Write (command) 0xFF01 — RESET / SET_TIME / GET_COUNT / GET_RECORDS
|
|
13
|
-
*
|
|
14
|
-
* On the wire a stored URS record opens with 0xE1 (single) or 0xE2 (paginated).
|
|
15
|
-
* The remaining fifteen bytes carry the flags nibble, timestamp, seven bytes of
|
|
16
|
-
* packed 3-bit analyte indices, and a checksum. `bc01-frame-parser.ts` decodes
|
|
17
|
-
* them; this file just declares the GATT surface and hands every E1/E2 frame
|
|
18
|
-
* to the driver's dependent-result path so the parser can run.
|
|
5
|
+
* Select the advertised profile, preferring the existing FF12 protocol when
|
|
6
|
+
* a peripheral advertises both. Devices without an advertisement keep the
|
|
7
|
+
* established FF12 behavior.
|
|
19
8
|
*/
|
|
20
|
-
|
|
9
|
+
declare const selectBc01MainService: (advertisedServiceUuids: readonly string[] | null | undefined) => IService;
|
|
10
|
+
export { BC01_UART_SERVICE_UUID, bc01MainServices, selectBc01MainService, };
|
|
21
11
|
//# sourceMappingURL=bc01.main-services.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAyBvD,QAAA,MAAM,sBAAsB,yCACY,CAAC;AAEzC,QAAA,MAAM,gBAAgB,EAAE,QAAQ,EA6E/B,CAAC;AAgBF;;;;GAIG;AACH,QAAA,MAAM,qBAAqB,GACzB,wBAAwB,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,KAC3D,QASF,CAAC;AAEF,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,GACtB,CAAC"}
|