@kuriousdesign/machine-sdk 1.0.65 → 1.0.70
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/.github/workflows/publish.yml +28 -0
- package/README.md +28 -51
- package/dist/custom-types/BaseDevice/Device.d.ts +1 -1
- package/dist/custom-types/BaseDevice/Device.js +1 -1
- package/dist/custom-types/BaseDevice/index.d.ts +1 -0
- package/dist/custom-types/BaseDevice/index.js +1 -0
- package/dist/custom-types/Devices/Conductor.js +0 -1
- package/dist/custom-types/Devices/index.d.ts +0 -2
- package/dist/custom-types/Devices/index.js +0 -2
- package/dist/custom-types/Recipe.d.ts +1 -0
- package/dist/custom-types/Recipe.js +2 -0
- package/package.json +1 -1
- package/src/abb/enums/GCs.mod +44 -44
- package/src/abb/enums/PartLocationIds.mod +13 -13
- package/src/abb/enums/RobTasks.mod +18 -18
- package/src/abb/enums/States.mod +20 -20
- package/src/abb/procs/MainModule.mod +188 -188
- package/src/abb/records/DeviceDataTypes.mod +35 -35
- package/src/custom-types/AppState.ts +115 -115
- package/src/custom-types/BaseDevice/Actions.ts +45 -45
- package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
- package/src/custom-types/BaseDevice/Device.ts +224 -224
- package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
- package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
- package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
- package/src/custom-types/BaseDevice/Processes.ts +38 -38
- package/src/custom-types/BaseDevice/index.ts +7 -6
- package/src/custom-types/Bridge.ts +8 -8
- package/src/custom-types/Com.ts +19 -19
- package/src/custom-types/Devices/Axis.ts +222 -222
- package/src/custom-types/Devices/Conductor.ts +14 -14
- package/src/custom-types/Devices/Pot.ts +24 -24
- package/src/custom-types/Devices/Robot.ts +208 -208
- package/src/custom-types/Devices/index.ts +3 -4
- package/src/custom-types/GlobalConstants.ts +98 -98
- package/src/custom-types/HMI.ts +52 -52
- package/src/custom-types/Machine.ts +130 -130
- package/src/custom-types/Part.ts +238 -238
- package/src/custom-types/RackData.ts +22 -22
- package/src/custom-types/Recipe.ts +250 -247
- package/src/custom-types/RecipeManagerFB.ts +10 -10
- package/src/custom-types/TaskQueue.ts +86 -86
- package/src/custom-types/UserManagerFB.ts +7 -7
- package/src/custom-types/index.ts +14 -14
- package/src/enums/Colors.ts +79 -79
- package/src/enums/DeviceId.ts +116 -116
- package/src/enums/ExtrusionType.ts +5 -5
- package/src/enums/OpcuaDatatype.ts +27 -27
- package/src/enums/Pages.ts +21 -21
- package/src/enums/States.ts +173 -173
- package/src/enums/TaskId.ts +37 -37
- package/src/enums/index.ts +9 -9
- package/src/functions/colorMapping.ts +43 -43
- package/src/functions/index.ts +2 -2
- package/src/functions/mqtt-helpers.ts +20 -20
- package/src/functions/topicMapping.ts +6 -6
- package/src/index.ts +3 -3
- package/src/plc-tags/index.ts +38 -38
- package/src/plc-tags/mqtt.ts +9 -9
- package/src/plc-tags/opcua.ts +3 -3
- package/src/styles/animations.css +15 -15
- package/tsconfig.json +13 -13
- package/dist/custom-types/Devices/Device.d.ts +0 -111
- package/dist/custom-types/Devices/Device.js +0 -108
- package/dist/custom-types/PartData.d.ts +0 -11
- package/dist/custom-types/PartData.js +0 -2
- package/dist/custom-types/RecipeData.d.ts +0 -7
- package/dist/custom-types/RecipeData.js +0 -2
- package/dist/enums/Errors.d.ts +0 -6
- package/dist/enums/Errors.js +0 -28
- package/dist/enums/Priorities.d.ts +0 -18
- package/dist/enums/Priorities.js +0 -24
- package/dist/enums/RobPositions.d.ts +0 -12
- package/dist/enums/RobPositions.js +0 -16
- package/dist/enums/Warnings.d.ts +0 -6
- package/dist/enums/Warnings.js +0 -18
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.js +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Publish Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
id-token: write # Required for OIDC
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
publish:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: '22'
|
|
21
|
+
registry-url: 'https://registry.npmjs.org'
|
|
22
|
+
|
|
23
|
+
# Ensure npm 11.5.1 or later is installed
|
|
24
|
+
- name: Update npm
|
|
25
|
+
run: npm install -g npm@latest
|
|
26
|
+
- run: npm ci
|
|
27
|
+
- run: npm run build --if-present
|
|
28
|
+
- run: npm publish
|
package/README.md
CHANGED
|
@@ -1,51 +1,28 @@
|
|
|
1
|
-
# adding new opcua tags
|
|
2
|
-
don't forget that tags need to start with lowercase
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# npm install @kuriousdesign/machine-sdk
|
|
6
|
-
A shared SDK for data types and helper functions used in machine-related repositories.
|
|
7
|
-
|
|
8
|
-
# Publishing to npm
|
|
9
|
-
first, commit you git changes
|
|
10
|
-
npm login (if not already)
|
|
11
|
-
npm version patch # 1.0.0 → 1.0.1
|
|
12
|
-
npm version minor # 1.0.0 → 1.1.0
|
|
13
|
-
npm version major # 1.0.0 → 2.0.0
|
|
14
|
-
npm publish
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# Installation
|
|
18
|
-
npm install @kuriousdesign/machine-sdk@latest
|
|
19
|
-
|
|
20
|
-
Usage
|
|
21
|
-
import { Machine, formatTimestamp, isMachineActive } from '@kuriousdesign/machine-sdk';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
// Format timestamp
|
|
32
|
-
console.log(formatTimestamp(machine.lastUpdated)); // e.g., "2025-08-15T22:23:00.000Z"
|
|
33
|
-
|
|
34
|
-
// Check if machine is active
|
|
35
|
-
console.log(isMachineActive(machine)); // true
|
|
36
|
-
|
|
37
|
-
API
|
|
38
|
-
Data Types
|
|
39
|
-
|
|
40
|
-
Machine: Represents a machine with id, name, status, and lastUpdated.
|
|
41
|
-
SensorData: Represents sensor readings with machineId, temperature, pressure, and timestamp.
|
|
42
|
-
|
|
43
|
-
Helper Functions
|
|
44
|
-
|
|
45
|
-
formatTimestamp(date: Date): string: Formats a Date to ISO string.
|
|
46
|
-
isMachineActive(machine: Machine): boolean: Checks if a machine is running.
|
|
47
|
-
calculateAverageTemperature(data: SensorData[]): number: Computes average temperature.
|
|
48
|
-
validateMachineId(id: string): boolean: Validates a machine ID format.
|
|
49
|
-
|
|
50
|
-
License
|
|
51
|
-
MIT
|
|
1
|
+
# adding new opcua tags
|
|
2
|
+
don't forget that tags need to start with lowercase
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# npm install @kuriousdesign/machine-sdk
|
|
6
|
+
A shared SDK for data types and helper functions used in machine-related repositories.
|
|
7
|
+
|
|
8
|
+
# Publishing to npm
|
|
9
|
+
first, commit you git changes
|
|
10
|
+
npm login (if not already)
|
|
11
|
+
npm version patch # 1.0.0 → 1.0.1
|
|
12
|
+
npm version minor # 1.0.0 → 1.1.0
|
|
13
|
+
npm version major # 1.0.0 → 2.0.0
|
|
14
|
+
npm publish
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# Installation
|
|
18
|
+
npm install @kuriousdesign/machine-sdk@latest
|
|
19
|
+
|
|
20
|
+
Usage
|
|
21
|
+
import { Machine, formatTimestamp, isMachineActive } from '@kuriousdesign/machine-sdk';
|
|
22
|
+
|
|
23
|
+
# npm registry codes for trusted publishers
|
|
24
|
+
50d6d0fc3dfbe9e405a3df45959751ac4efdec8eaf718e05d390ff5ee4ac28c8
|
|
25
|
+
d9e930bb97999f5b204a6f449e499906a936b57f18350ce4bc1ada267c9207c3
|
|
26
|
+
07345eb11da75e1e050ddb07e81914975e90533f015567ed524f40073dedf99e
|
|
27
|
+
3fb598a51fe5ead322e02a55755d19bb8790a8a886ed33c06efe020b479a27e2
|
|
28
|
+
82876e59bb316170f05a92ca16b86276ccd4e31d8b272c55d79cd537aebeb631
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initialDevice = exports.initialSts = exports.initialDeviceStatus = exports.initialDeviceFaultData = exports.initialFaultData = exports.initialDeviceCfg = exports.initialDeviceRegistration = exports.initialDeviceLogData = exports.initialDebugLogData = void 0;
|
|
4
|
-
const DeviceTypes_1 = require("
|
|
4
|
+
const DeviceTypes_1 = require("./DeviceTypes");
|
|
5
5
|
const Processes_1 = require("./Processes");
|
|
6
6
|
const DeviceConstants_1 = require("./DeviceConstants");
|
|
7
7
|
const ApiOpcua_1 = require("./ApiOpcua");
|
|
@@ -15,7 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./Axis"), exports);
|
|
18
|
-
__exportStar(require("../BaseDevice/Device"), exports);
|
|
19
|
-
__exportStar(require("./DeviceTypes"), exports);
|
|
20
18
|
__exportStar(require("./Robot"), exports);
|
|
21
19
|
__exportStar(require("./Pot"), exports);
|
|
@@ -136,6 +136,7 @@ exports.exampleRecipe = {
|
|
|
136
136
|
tubeTypeId: TubeTypes.TYPE_1340_38,
|
|
137
137
|
tubeTypeString: "1340-38",
|
|
138
138
|
tubeOuterDiameterMax: 38.1,
|
|
139
|
+
tubeHeightMax: 100, // example value in mm
|
|
139
140
|
falseBottomStaysOpen: false,
|
|
140
141
|
applicatorSetpoints: exports.exampleApplicatorSetpoints,
|
|
141
142
|
applicatorToolId: ApplicatorTools.RED_37_INCH,
|
|
@@ -155,6 +156,7 @@ exports.initialRecipe = {
|
|
|
155
156
|
tubeOuterDiameterMax: 0.0,
|
|
156
157
|
tubeTypeId: TubeTypes.NONE,
|
|
157
158
|
tubeTypeString: "",
|
|
159
|
+
tubeHeightMax: 0, // example value in mm
|
|
158
160
|
linerPotPressure: 0,
|
|
159
161
|
applicatorSetpoints: exports.initialApplicatorSetpoints,
|
|
160
162
|
applicatorToolId: ApplicatorTools.NONE,
|
package/package.json
CHANGED
package/src/abb/enums/GCs.mod
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
MODULE Globals
|
|
2
|
-
|
|
3
|
-
! Axes & device counts
|
|
4
|
-
CONST num NUM_AXES := 20;
|
|
5
|
-
CONST num MAX_NUM_NAUTILUS_AXES := 20;
|
|
6
|
-
CONST num NUM_DEVICES := 50;
|
|
7
|
-
|
|
8
|
-
! Timing & durations
|
|
9
|
-
CONST clock MOMENTARY_PB := T#250MS;
|
|
10
|
-
CONST num DEFAULT_TASK_DURATION_SEC := 5;
|
|
11
|
-
|
|
12
|
-
! Robot & part counts
|
|
13
|
-
CONST num ROBOT_PART_COUNT := 2;
|
|
14
|
-
CONST num RECIPE_COUNT_MAX := 20;
|
|
15
|
-
CONST bool HIDE_LEFT_TWO_COLUMNS := TRUE;
|
|
16
|
-
CONST bool HIDE_RIGHT_COLUMN := TRUE;
|
|
17
|
-
CONST bool HIDE_LEFT_ONE_COLUMN := FALSE;
|
|
18
|
-
CONST num SHELF_PART_COUNT := 100;
|
|
19
|
-
CONST num NUM_OF_COLS := 20;
|
|
20
|
-
CONST num PARTS_IN_COL := 5;
|
|
21
|
-
CONST num NUM_PARTS_XFER := 10;
|
|
22
|
-
CONST num NUM_PARTS_IB := 51;
|
|
23
|
-
CONST num NUM_PARTS_PER_FIXTURE := 8;
|
|
24
|
-
|
|
25
|
-
! Logging & tasks
|
|
26
|
-
CONST num NUM_LOG_ENTRIES := 25;
|
|
27
|
-
CONST num TASK_LIST_LEN := 25;
|
|
28
|
-
CONST num TASK_STORE_LEN := 125; ! 100 + TASK_LIST_LEN
|
|
29
|
-
CONST num TASK_LOG_LEN := 25;
|
|
30
|
-
CONST num STATION_COUNT := 6;
|
|
31
|
-
CONST num TOP_PRIORITY_COUNT := 7;
|
|
32
|
-
CONST num PARTDATA_COUNT := 25;
|
|
33
|
-
CONST num USERFRAME_COUNT := 10;
|
|
34
|
-
CONST num NUM_ENTRIES_MACHINE_LOG := 100;
|
|
35
|
-
|
|
36
|
-
! Machine & IO limits
|
|
37
|
-
CONST num MACHINE_FAULTCODEARRAY_LEN := 50;
|
|
38
|
-
CONST num MAX_NUM_INPUTS := 50;
|
|
39
|
-
CONST num MAX_NUM_HW_CARDS := 16;
|
|
40
|
-
|
|
41
|
-
! Time conversion
|
|
42
|
-
CONST num SYSTIME_TO_UTC_SCALAR := 10000000; ! 10E6, RAPID uses num/ULINT as needed
|
|
43
|
-
|
|
44
|
-
ENDMODULE
|
|
1
|
+
MODULE Globals
|
|
2
|
+
|
|
3
|
+
! Axes & device counts
|
|
4
|
+
CONST num NUM_AXES := 20;
|
|
5
|
+
CONST num MAX_NUM_NAUTILUS_AXES := 20;
|
|
6
|
+
CONST num NUM_DEVICES := 50;
|
|
7
|
+
|
|
8
|
+
! Timing & durations
|
|
9
|
+
CONST clock MOMENTARY_PB := T#250MS;
|
|
10
|
+
CONST num DEFAULT_TASK_DURATION_SEC := 5;
|
|
11
|
+
|
|
12
|
+
! Robot & part counts
|
|
13
|
+
CONST num ROBOT_PART_COUNT := 2;
|
|
14
|
+
CONST num RECIPE_COUNT_MAX := 20;
|
|
15
|
+
CONST bool HIDE_LEFT_TWO_COLUMNS := TRUE;
|
|
16
|
+
CONST bool HIDE_RIGHT_COLUMN := TRUE;
|
|
17
|
+
CONST bool HIDE_LEFT_ONE_COLUMN := FALSE;
|
|
18
|
+
CONST num SHELF_PART_COUNT := 100;
|
|
19
|
+
CONST num NUM_OF_COLS := 20;
|
|
20
|
+
CONST num PARTS_IN_COL := 5;
|
|
21
|
+
CONST num NUM_PARTS_XFER := 10;
|
|
22
|
+
CONST num NUM_PARTS_IB := 51;
|
|
23
|
+
CONST num NUM_PARTS_PER_FIXTURE := 8;
|
|
24
|
+
|
|
25
|
+
! Logging & tasks
|
|
26
|
+
CONST num NUM_LOG_ENTRIES := 25;
|
|
27
|
+
CONST num TASK_LIST_LEN := 25;
|
|
28
|
+
CONST num TASK_STORE_LEN := 125; ! 100 + TASK_LIST_LEN
|
|
29
|
+
CONST num TASK_LOG_LEN := 25;
|
|
30
|
+
CONST num STATION_COUNT := 6;
|
|
31
|
+
CONST num TOP_PRIORITY_COUNT := 7;
|
|
32
|
+
CONST num PARTDATA_COUNT := 25;
|
|
33
|
+
CONST num USERFRAME_COUNT := 10;
|
|
34
|
+
CONST num NUM_ENTRIES_MACHINE_LOG := 100;
|
|
35
|
+
|
|
36
|
+
! Machine & IO limits
|
|
37
|
+
CONST num MACHINE_FAULTCODEARRAY_LEN := 50;
|
|
38
|
+
CONST num MAX_NUM_INPUTS := 50;
|
|
39
|
+
CONST num MAX_NUM_HW_CARDS := 16;
|
|
40
|
+
|
|
41
|
+
! Time conversion
|
|
42
|
+
CONST num SYSTIME_TO_UTC_SCALAR := 10000000; ! 10E6, RAPID uses num/ULINT as needed
|
|
43
|
+
|
|
44
|
+
ENDMODULE
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
MODULE PartLocationIds
|
|
2
|
-
|
|
3
|
-
! Define the part locations as a record
|
|
4
|
-
CONST record PartLocationRec :=
|
|
5
|
-
[
|
|
6
|
-
None := 0,
|
|
7
|
-
LeftFixture_P1 := 1,
|
|
8
|
-
RightFixture_P9 := LeftFixture_P1 + GCs.NUM_PARTS_PER_FIXTURE,
|
|
9
|
-
RobotGripper := RightFixture_P9 + GCs.NUM_PARTS_PER_FIXTURE,
|
|
10
|
-
Lost := RobotGripper + 1
|
|
11
|
-
];
|
|
12
|
-
|
|
13
|
-
ENDMODULE
|
|
1
|
+
MODULE PartLocationIds
|
|
2
|
+
|
|
3
|
+
! Define the part locations as a record
|
|
4
|
+
CONST record PartLocationRec :=
|
|
5
|
+
[
|
|
6
|
+
None := 0,
|
|
7
|
+
LeftFixture_P1 := 1,
|
|
8
|
+
RightFixture_P9 := LeftFixture_P1 + GCs.NUM_PARTS_PER_FIXTURE,
|
|
9
|
+
RobotGripper := RightFixture_P9 + GCs.NUM_PARTS_PER_FIXTURE,
|
|
10
|
+
Lost := RobotGripper + 1
|
|
11
|
+
];
|
|
12
|
+
|
|
13
|
+
ENDMODULE
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
MODULE RobTasks
|
|
2
|
-
|
|
3
|
-
! Define a record containing only PASSTHRU tasks
|
|
4
|
-
CONST record RobTasksRec :=
|
|
5
|
-
[
|
|
6
|
-
RETRIEVE_TOOL := 1, ! param0: toolId
|
|
7
|
-
RETURN_TOOL := 2, ! param0: toolId
|
|
8
|
-
PICK_PART_FROM_FIXTURE := 4, ! param0: partLocationId
|
|
9
|
-
WEIGH_PART := 5, ! param0: partLocationId
|
|
10
|
-
PLACE_PART_IN_FIXTURE := 6, ! param0: partLocationId
|
|
11
|
-
WIPE_APPLICATOR := 9, ! no params
|
|
12
|
-
APPLY_LINER := 10, ! param0: partLocationId
|
|
13
|
-
PHOTOGRAPH_TUBE := 12, ! param0: partLocationId
|
|
14
|
-
RELEASE_PART_AND_MOVE_TO_PERCH := 13, ! param0: partLocationId
|
|
15
|
-
CALIBRATE_SQUEEGEE := 14 ! no params
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
ENDMODULE
|
|
1
|
+
MODULE RobTasks
|
|
2
|
+
|
|
3
|
+
! Define a record containing only PASSTHRU tasks
|
|
4
|
+
CONST record RobTasksRec :=
|
|
5
|
+
[
|
|
6
|
+
RETRIEVE_TOOL := 1, ! param0: toolId
|
|
7
|
+
RETURN_TOOL := 2, ! param0: toolId
|
|
8
|
+
PICK_PART_FROM_FIXTURE := 4, ! param0: partLocationId
|
|
9
|
+
WEIGH_PART := 5, ! param0: partLocationId
|
|
10
|
+
PLACE_PART_IN_FIXTURE := 6, ! param0: partLocationId
|
|
11
|
+
WIPE_APPLICATOR := 9, ! no params
|
|
12
|
+
APPLY_LINER := 10, ! param0: partLocationId
|
|
13
|
+
PHOTOGRAPH_TUBE := 12, ! param0: partLocationId
|
|
14
|
+
RELEASE_PART_AND_MOVE_TO_PERCH := 13, ! param0: partLocationId
|
|
15
|
+
CALIBRATE_SQUEEGEE := 14 ! no params
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
ENDMODULE
|
package/src/abb/enums/States.mod
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
!************************************************************
|
|
2
|
-
! States.mod — Shared State Definitions
|
|
3
|
-
!************************************************************
|
|
4
|
-
MODULE States
|
|
5
|
-
|
|
6
|
-
CONST record StatesType
|
|
7
|
-
ABORTING := -3,
|
|
8
|
-
ERROR := -2,
|
|
9
|
-
KILLED := -1,
|
|
10
|
-
INACTIVE := 0,
|
|
11
|
-
RESETTING := 50,
|
|
12
|
-
IDLE := 100,
|
|
13
|
-
RUNNING := 500,
|
|
14
|
-
STOPPING := 900,
|
|
15
|
-
PAUSED := 999,
|
|
16
|
-
DONE := 1000,
|
|
17
|
-
MANUAL := 1100;
|
|
18
|
-
CONST StatesType States;
|
|
19
|
-
|
|
20
|
-
ENDMODULE
|
|
1
|
+
!************************************************************
|
|
2
|
+
! States.mod — Shared State Definitions
|
|
3
|
+
!************************************************************
|
|
4
|
+
MODULE States
|
|
5
|
+
|
|
6
|
+
CONST record StatesType
|
|
7
|
+
ABORTING := -3,
|
|
8
|
+
ERROR := -2,
|
|
9
|
+
KILLED := -1,
|
|
10
|
+
INACTIVE := 0,
|
|
11
|
+
RESETTING := 50,
|
|
12
|
+
IDLE := 100,
|
|
13
|
+
RUNNING := 500,
|
|
14
|
+
STOPPING := 900,
|
|
15
|
+
PAUSED := 999,
|
|
16
|
+
DONE := 1000,
|
|
17
|
+
MANUAL := 1100;
|
|
18
|
+
CONST StatesType States;
|
|
19
|
+
|
|
20
|
+
ENDMODULE
|