@kuriousdesign/machine-sdk 1.0.65 → 1.0.69

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.
Files changed (77) hide show
  1. package/.github/workflows/publish.yml +28 -0
  2. package/README.md +28 -51
  3. package/dist/custom-types/BaseDevice/Device.d.ts +1 -1
  4. package/dist/custom-types/BaseDevice/Device.js +1 -1
  5. package/dist/custom-types/BaseDevice/index.d.ts +1 -0
  6. package/dist/custom-types/BaseDevice/index.js +1 -0
  7. package/dist/custom-types/Devices/index.d.ts +0 -2
  8. package/dist/custom-types/Devices/index.js +0 -2
  9. package/dist/custom-types/Recipe.d.ts +1 -0
  10. package/dist/custom-types/Recipe.js +2 -0
  11. package/package.json +1 -1
  12. package/src/abb/enums/GCs.mod +44 -44
  13. package/src/abb/enums/PartLocationIds.mod +13 -13
  14. package/src/abb/enums/RobTasks.mod +18 -18
  15. package/src/abb/enums/States.mod +20 -20
  16. package/src/abb/procs/MainModule.mod +188 -188
  17. package/src/abb/records/DeviceDataTypes.mod +35 -35
  18. package/src/custom-types/AppState.ts +115 -115
  19. package/src/custom-types/BaseDevice/Actions.ts +45 -45
  20. package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
  21. package/src/custom-types/BaseDevice/Device.ts +224 -224
  22. package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
  23. package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
  24. package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
  25. package/src/custom-types/BaseDevice/Processes.ts +38 -38
  26. package/src/custom-types/BaseDevice/index.ts +7 -6
  27. package/src/custom-types/Bridge.ts +8 -8
  28. package/src/custom-types/Com.ts +19 -19
  29. package/src/custom-types/Devices/Axis.ts +222 -222
  30. package/src/custom-types/Devices/Conductor.ts +14 -14
  31. package/src/custom-types/Devices/Pot.ts +24 -24
  32. package/src/custom-types/Devices/Robot.ts +208 -208
  33. package/src/custom-types/Devices/index.ts +3 -4
  34. package/src/custom-types/GlobalConstants.ts +98 -98
  35. package/src/custom-types/HMI.ts +52 -52
  36. package/src/custom-types/Machine.ts +130 -130
  37. package/src/custom-types/Part.ts +238 -238
  38. package/src/custom-types/RackData.ts +22 -22
  39. package/src/custom-types/Recipe.ts +250 -247
  40. package/src/custom-types/RecipeManagerFB.ts +10 -10
  41. package/src/custom-types/TaskQueue.ts +86 -86
  42. package/src/custom-types/UserManagerFB.ts +7 -7
  43. package/src/custom-types/index.ts +14 -14
  44. package/src/enums/Colors.ts +79 -79
  45. package/src/enums/DeviceId.ts +116 -116
  46. package/src/enums/ExtrusionType.ts +5 -5
  47. package/src/enums/OpcuaDatatype.ts +27 -27
  48. package/src/enums/Pages.ts +21 -21
  49. package/src/enums/States.ts +173 -173
  50. package/src/enums/TaskId.ts +37 -37
  51. package/src/enums/index.ts +9 -9
  52. package/src/functions/colorMapping.ts +43 -43
  53. package/src/functions/index.ts +2 -2
  54. package/src/functions/mqtt-helpers.ts +20 -20
  55. package/src/functions/topicMapping.ts +6 -6
  56. package/src/index.ts +3 -3
  57. package/src/plc-tags/index.ts +38 -38
  58. package/src/plc-tags/mqtt.ts +9 -9
  59. package/src/plc-tags/opcua.ts +3 -3
  60. package/src/styles/animations.css +15 -15
  61. package/tsconfig.json +13 -13
  62. package/dist/custom-types/Devices/Device.d.ts +0 -111
  63. package/dist/custom-types/Devices/Device.js +0 -108
  64. package/dist/custom-types/PartData.d.ts +0 -11
  65. package/dist/custom-types/PartData.js +0 -2
  66. package/dist/custom-types/RecipeData.d.ts +0 -7
  67. package/dist/custom-types/RecipeData.js +0 -2
  68. package/dist/enums/Errors.d.ts +0 -6
  69. package/dist/enums/Errors.js +0 -28
  70. package/dist/enums/Priorities.d.ts +0 -18
  71. package/dist/enums/Priorities.js +0 -24
  72. package/dist/enums/RobPositions.d.ts +0 -12
  73. package/dist/enums/RobPositions.js +0 -16
  74. package/dist/enums/Warnings.d.ts +0 -6
  75. package/dist/enums/Warnings.js +0 -18
  76. /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
  77. /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.js +0 -0
@@ -1,115 +1,115 @@
1
- import { PartStateDeprecated, Page } from "../enums";
2
- import { ButtonBar, StatusBar } from "./HMI";
3
- import { PartDataDeprecated } from "./Part";
4
- import { Device } from "./BaseDevice/Device";
5
- import { GlobalConstants } from "./GlobalConstants";
6
- import {
7
- RackData,
8
- RackHmiPbs,
9
- RecipeData,
10
- RecipeManagerPbs,
11
- SystemFaultData,
12
- TaskQueue,
13
- UserData,
14
- UserManagerFB,
15
- } from ".";
16
- import { RobDataDEPRECATED } from "./Devices/Robot";
17
-
18
- export enum NodeId {
19
- // new node ids
20
- ButtonBar = "Main.HMI.ButtonBar",
21
- StatusBar = "Main.HMI.StatusBar",
22
- RackPbs = "Main.HMI.RackPbs",
23
- ROB = "Main.ROB",
24
- CNC = "Main.CNC",
25
- DBRR = "Main.DBRR",
26
- WASH = "Main.WASH",
27
- PartData = "Main.PartData",
28
- TaskQueue = "Main.TaskQueue",
29
- GlobalConstants = "GlobalConstants", // TODO: add this to monitored items
30
- MachineUser = "Machine.User",
31
- MachineErrors = "Machine.Errors",
32
- MachineWarnings = "Machine.Warnings",
33
- RackData = "Main.RackData",
34
- RecipeData = "Main.RecipeData",
35
- ActiveJobRecipe = "Main.Job.ActiveRecipe",
36
- RecipeManagerState = "Main.RecipeManagerFB.State",
37
- RecipeManagerPbs = "Main.RecipeManagerFB.Pbs",
38
- RemoteControlPage = "Main.HMI.RemoteControlPage",
39
- RobData = "Main.RobData",
40
-
41
- // TODO: add following to montored items, correctly
42
- UserManagerFB = "Main.UserManagerFB",
43
- }
44
-
45
- export interface AppState {
46
- [NodeId.StatusBar]: StatusBar;
47
- [NodeId.ButtonBar]: ButtonBar;
48
- [NodeId.RackPbs]: RackHmiPbs;
49
- [NodeId.ROB]: Device;
50
- [NodeId.CNC]: Device;
51
- [NodeId.DBRR]: Device;
52
- [NodeId.WASH]: Device;
53
- [NodeId.PartData]: PartDataDeprecated;
54
- [NodeId.TaskQueue]: TaskQueue;
55
- [NodeId.GlobalConstants]: GlobalConstants;
56
- [NodeId.MachineUser]: UserData;
57
- [NodeId.MachineErrors]: SystemFaultData;
58
- [NodeId.MachineWarnings]: SystemFaultData;
59
- [NodeId.RackData]: RackData;
60
- [NodeId.RecipeData]: RecipeData[];
61
- [NodeId.ActiveJobRecipe]: RecipeData;
62
- [NodeId.RecipeManagerState]: number;
63
- [NodeId.RecipeManagerPbs]: RecipeManagerPbs;
64
- [NodeId.UserManagerFB]: UserManagerFB;
65
- [NodeId.RemoteControlPage]: Page;
66
- [NodeId.RobData]: RobDataDEPRECATED;
67
- }
68
-
69
- export enum InputNodeId {
70
- ButtonBarStopBtnClick = "Main.HMI.ButtonBar.StopBtn.wasClicked",
71
- ButtonBarUnloadbtnClick = "Main.HMI.ButtonBar.UnloadBtn.wasClicked",
72
- ButtonBarUnlockbtnClick = "Main.HMI.ButtonBar.UnlockBtn.wasClicked",
73
- ButtonBarEnergizebtnClick = "Main.HMI.ButtonBar.EnergizeBtn.wasClicked",
74
- ButtonBarStartbtnClick = "Main.HMI.ButtonBar.StartBtn.wasClicked",
75
- ButtonBarLockbtnClick = "Main.HMI.ButtonBar.LockBtn.wasClicked",
76
- ButtonBarResetbtnClick = "Main.HMI.ButtonBar.ResetBtn.wasClicked",
77
- ButtonBarJobchangeBtnClick = "Main.HMI.ButtonBar.JobChangeBtn.wasClicked",
78
- ButtonBarClearFaultsBtnClick = "Main.HMI.ButtonBar.ClearFaultsBtn.wasClicked",
79
-
80
- PartDataDoneShelf = "Main.PartData.DoneShelf",
81
- PartDataRawShelf = "Main.PartData.RawShelf",
82
-
83
- Username = "Machine.User.Username",
84
- Password = "Machine.User.Password",
85
- LoginBtnBlick = "Machine.User.HmiLoginBtn.wasClicked",
86
- LogoutBtnBlick = "Machine.User.HmiLogoutBtn.wasClicked",
87
-
88
- EditRawShelfBtnClick = "Main.HMI.RackPbs.EditRawShelfBtn.wasClicked",
89
- EditDoneShelfBtnClick = "Main.HMI.RackPbs.EditDoneShelfBtn.wasClicked",
90
- ShelfCancelBtnClick = "Main.HMI.RackPbs.CancelBtn.wasClicked",
91
- ShelfSaveBtnClick = "Main.HMI.RackPbs.SaveBtn.wasClicked",
92
-
93
- RecipeManagerEditBtnClick = "Main.recipeManagerFB.pbs.EditBtn.wasClicked",
94
- RecipeManagerChangeBtnClick = "Main.recipeManagerFB.pbs.ChangeBtn.wasClicked",
95
- RecipeManagerJobSetupBtnClick = "Main.recipeManagerFB.pbs.JobSetupBtn.wasClicked",
96
- RecipeManagerActivateBtnClick = "Main.recipeManagerFB.pbs.ActivateBtn",
97
- RecipeManagerCancelBtnClick = "Main.recipeManagerFB.pbs.CancelBtn",
98
- RecipeManagerStartSetupBtnClick = "Main.recipeManagerFB.pbs.StartSetupBtn",
99
- RecipeManagerFinishSetupBtnClick = "Main.recipeManagerFB.pbs.FinishSetupBtn",
100
-
101
- RecipeData = "Main.RecipeData",
102
- ActiveJobRecipe = "Machine.Job.ActiveRecipe",
103
- JobBatchQuantity = "Machine.Job.BatchQty",
104
-
105
- ActivePage = "Main.HMI.ActivePage",
106
-
107
- CncPart1 = "Main.PartData.Cnc[0]",
108
- CncPart2 = "Main.PartData.Cnc[1]",
109
- PreOpPart1 = "Main.PartData.CncPreOp[0]",
110
- PreOpPart2 = "Main.PartData.CncPreOp[1]",
111
- PostOpPart1 = "Main.PartData.CncPostOp[0]",
112
- PostOpPart2 = "Main.PartData.CncPostOp[1]",
113
- RobotPart1 = "Main.PartData.Robot[0]",
114
- RobotPart2 = "Main.PartData.Robot[1]",
115
- }
1
+ import { PartStateDeprecated, Page } from "../enums";
2
+ import { ButtonBar, StatusBar } from "./HMI";
3
+ import { PartDataDeprecated } from "./Part";
4
+ import { Device } from "./BaseDevice/Device";
5
+ import { GlobalConstants } from "./GlobalConstants";
6
+ import {
7
+ RackData,
8
+ RackHmiPbs,
9
+ RecipeData,
10
+ RecipeManagerPbs,
11
+ SystemFaultData,
12
+ TaskQueue,
13
+ UserData,
14
+ UserManagerFB,
15
+ } from ".";
16
+ import { RobDataDEPRECATED } from "./Devices/Robot";
17
+
18
+ export enum NodeId {
19
+ // new node ids
20
+ ButtonBar = "Main.HMI.ButtonBar",
21
+ StatusBar = "Main.HMI.StatusBar",
22
+ RackPbs = "Main.HMI.RackPbs",
23
+ ROB = "Main.ROB",
24
+ CNC = "Main.CNC",
25
+ DBRR = "Main.DBRR",
26
+ WASH = "Main.WASH",
27
+ PartData = "Main.PartData",
28
+ TaskQueue = "Main.TaskQueue",
29
+ GlobalConstants = "GlobalConstants", // TODO: add this to monitored items
30
+ MachineUser = "Machine.User",
31
+ MachineErrors = "Machine.Errors",
32
+ MachineWarnings = "Machine.Warnings",
33
+ RackData = "Main.RackData",
34
+ RecipeData = "Main.RecipeData",
35
+ ActiveJobRecipe = "Main.Job.ActiveRecipe",
36
+ RecipeManagerState = "Main.RecipeManagerFB.State",
37
+ RecipeManagerPbs = "Main.RecipeManagerFB.Pbs",
38
+ RemoteControlPage = "Main.HMI.RemoteControlPage",
39
+ RobData = "Main.RobData",
40
+
41
+ // TODO: add following to montored items, correctly
42
+ UserManagerFB = "Main.UserManagerFB",
43
+ }
44
+
45
+ export interface AppState {
46
+ [NodeId.StatusBar]: StatusBar;
47
+ [NodeId.ButtonBar]: ButtonBar;
48
+ [NodeId.RackPbs]: RackHmiPbs;
49
+ [NodeId.ROB]: Device;
50
+ [NodeId.CNC]: Device;
51
+ [NodeId.DBRR]: Device;
52
+ [NodeId.WASH]: Device;
53
+ [NodeId.PartData]: PartDataDeprecated;
54
+ [NodeId.TaskQueue]: TaskQueue;
55
+ [NodeId.GlobalConstants]: GlobalConstants;
56
+ [NodeId.MachineUser]: UserData;
57
+ [NodeId.MachineErrors]: SystemFaultData;
58
+ [NodeId.MachineWarnings]: SystemFaultData;
59
+ [NodeId.RackData]: RackData;
60
+ [NodeId.RecipeData]: RecipeData[];
61
+ [NodeId.ActiveJobRecipe]: RecipeData;
62
+ [NodeId.RecipeManagerState]: number;
63
+ [NodeId.RecipeManagerPbs]: RecipeManagerPbs;
64
+ [NodeId.UserManagerFB]: UserManagerFB;
65
+ [NodeId.RemoteControlPage]: Page;
66
+ [NodeId.RobData]: RobDataDEPRECATED;
67
+ }
68
+
69
+ export enum InputNodeId {
70
+ ButtonBarStopBtnClick = "Main.HMI.ButtonBar.StopBtn.wasClicked",
71
+ ButtonBarUnloadbtnClick = "Main.HMI.ButtonBar.UnloadBtn.wasClicked",
72
+ ButtonBarUnlockbtnClick = "Main.HMI.ButtonBar.UnlockBtn.wasClicked",
73
+ ButtonBarEnergizebtnClick = "Main.HMI.ButtonBar.EnergizeBtn.wasClicked",
74
+ ButtonBarStartbtnClick = "Main.HMI.ButtonBar.StartBtn.wasClicked",
75
+ ButtonBarLockbtnClick = "Main.HMI.ButtonBar.LockBtn.wasClicked",
76
+ ButtonBarResetbtnClick = "Main.HMI.ButtonBar.ResetBtn.wasClicked",
77
+ ButtonBarJobchangeBtnClick = "Main.HMI.ButtonBar.JobChangeBtn.wasClicked",
78
+ ButtonBarClearFaultsBtnClick = "Main.HMI.ButtonBar.ClearFaultsBtn.wasClicked",
79
+
80
+ PartDataDoneShelf = "Main.PartData.DoneShelf",
81
+ PartDataRawShelf = "Main.PartData.RawShelf",
82
+
83
+ Username = "Machine.User.Username",
84
+ Password = "Machine.User.Password",
85
+ LoginBtnBlick = "Machine.User.HmiLoginBtn.wasClicked",
86
+ LogoutBtnBlick = "Machine.User.HmiLogoutBtn.wasClicked",
87
+
88
+ EditRawShelfBtnClick = "Main.HMI.RackPbs.EditRawShelfBtn.wasClicked",
89
+ EditDoneShelfBtnClick = "Main.HMI.RackPbs.EditDoneShelfBtn.wasClicked",
90
+ ShelfCancelBtnClick = "Main.HMI.RackPbs.CancelBtn.wasClicked",
91
+ ShelfSaveBtnClick = "Main.HMI.RackPbs.SaveBtn.wasClicked",
92
+
93
+ RecipeManagerEditBtnClick = "Main.recipeManagerFB.pbs.EditBtn.wasClicked",
94
+ RecipeManagerChangeBtnClick = "Main.recipeManagerFB.pbs.ChangeBtn.wasClicked",
95
+ RecipeManagerJobSetupBtnClick = "Main.recipeManagerFB.pbs.JobSetupBtn.wasClicked",
96
+ RecipeManagerActivateBtnClick = "Main.recipeManagerFB.pbs.ActivateBtn",
97
+ RecipeManagerCancelBtnClick = "Main.recipeManagerFB.pbs.CancelBtn",
98
+ RecipeManagerStartSetupBtnClick = "Main.recipeManagerFB.pbs.StartSetupBtn",
99
+ RecipeManagerFinishSetupBtnClick = "Main.recipeManagerFB.pbs.FinishSetupBtn",
100
+
101
+ RecipeData = "Main.RecipeData",
102
+ ActiveJobRecipe = "Machine.Job.ActiveRecipe",
103
+ JobBatchQuantity = "Machine.Job.BatchQty",
104
+
105
+ ActivePage = "Main.HMI.ActivePage",
106
+
107
+ CncPart1 = "Main.PartData.Cnc[0]",
108
+ CncPart2 = "Main.PartData.Cnc[1]",
109
+ PreOpPart1 = "Main.PartData.CncPreOp[0]",
110
+ PreOpPart2 = "Main.PartData.CncPreOp[1]",
111
+ PostOpPart1 = "Main.PartData.CncPostOp[0]",
112
+ PostOpPart2 = "Main.PartData.CncPostOp[1]",
113
+ RobotPart1 = "Main.PartData.Robot[0]",
114
+ RobotPart2 = "Main.PartData.Robot[1]",
115
+ }
@@ -1,46 +1,46 @@
1
- import { DeviceConstants } from "./DeviceConstants";
2
-
3
- export enum ActionTypes {
4
- MISSION = 0,
5
- CMD = 1,
6
- TASK = 2,
7
- PROCESS = 3,
8
- EXEC_METHOD = 4,
9
- SCRIPT = 5,
10
- COUNT = 6 // Update this value to match the number of action types
11
- }
12
-
13
- export function actionTypeToString(actionType: ActionTypes): string {
14
- switch (actionType) {
15
- case ActionTypes.MISSION:
16
- return "MISSION";
17
- case ActionTypes.CMD:
18
- return "CMD";
19
- case ActionTypes.TASK:
20
- return "TASK";
21
- case ActionTypes.PROCESS:
22
- return "PROCESS";
23
- case ActionTypes.EXEC_METHOD:
24
- return "EXEC_METHOD";
25
- case ActionTypes.SCRIPT:
26
- return "SCRIPT";
27
- default:
28
- return "UNKNOWN";
29
- }
30
- }
31
-
32
- export interface DeviceActionRequestData {
33
- UniqueActionRequestId: number; // Unique identifier for each action request
34
- SenderId: number;
35
- ActionType: ActionTypes; // ActionTypes enum
36
- ActionId: number; // could be cmd, task or processId
37
- ParamArray: number[]; // Array of LREAL values
38
- };
39
-
40
- export const initialDeviceActionRequestData: DeviceActionRequestData = {
41
- UniqueActionRequestId: 0,
42
- SenderId: 0,
43
- ActionType: 0,
44
- ActionId: 0,
45
- ParamArray: new Array(DeviceConstants.MAX_NUM_PARAMS).fill(0)
1
+ import { DeviceConstants } from "./DeviceConstants";
2
+
3
+ export enum ActionTypes {
4
+ MISSION = 0,
5
+ CMD = 1,
6
+ TASK = 2,
7
+ PROCESS = 3,
8
+ EXEC_METHOD = 4,
9
+ SCRIPT = 5,
10
+ COUNT = 6 // Update this value to match the number of action types
11
+ }
12
+
13
+ export function actionTypeToString(actionType: ActionTypes): string {
14
+ switch (actionType) {
15
+ case ActionTypes.MISSION:
16
+ return "MISSION";
17
+ case ActionTypes.CMD:
18
+ return "CMD";
19
+ case ActionTypes.TASK:
20
+ return "TASK";
21
+ case ActionTypes.PROCESS:
22
+ return "PROCESS";
23
+ case ActionTypes.EXEC_METHOD:
24
+ return "EXEC_METHOD";
25
+ case ActionTypes.SCRIPT:
26
+ return "SCRIPT";
27
+ default:
28
+ return "UNKNOWN";
29
+ }
30
+ }
31
+
32
+ export interface DeviceActionRequestData {
33
+ UniqueActionRequestId: number; // Unique identifier for each action request
34
+ SenderId: number;
35
+ ActionType: ActionTypes; // ActionTypes enum
36
+ ActionId: number; // could be cmd, task or processId
37
+ ParamArray: number[]; // Array of LREAL values
38
+ };
39
+
40
+ export const initialDeviceActionRequestData: DeviceActionRequestData = {
41
+ UniqueActionRequestId: 0,
42
+ SenderId: 0,
43
+ ActionType: 0,
44
+ ActionId: 0,
45
+ ParamArray: new Array(DeviceConstants.MAX_NUM_PARAMS).fill(0)
46
46
  };
@@ -1,71 +1,71 @@
1
- import { DeviceActionRequestData, initialDeviceActionRequestData } from "./Actions";
2
-
3
- export interface ApiOpcuaReqData {
4
- id: number; // likely use timestamp ms after epoch
5
- checkSum: number;
6
- actionRequestData: DeviceActionRequestData;
7
- sts: number;
8
- }
9
-
10
- export const initialApiOpcuaReqData: ApiOpcuaReqData = {
11
- id: 0,
12
- checkSum: 0,
13
- actionRequestData: initialDeviceActionRequestData,
14
- sts: 0
15
- };
16
-
17
- export interface ApiOpcuaData {
18
- hmiReq: ApiOpcuaReqData; // read by PLC
19
- hmiResp: ApiOpcuaReqData; // written by PLC
20
- orchReq: ApiOpcuaReqData; // read by PLC
21
- orchResp: ApiOpcuaReqData; // written by PLC
22
- req: ApiOpcuaReqData; // written by mtac, read by plc
23
- resp: ApiOpcuaReqData; // written by plc, read by testand
24
- internalReq: ApiOpcuaReqData; // used internally by mtac
25
- internalResp: ApiOpcuaReqData; // used internally by mtac
26
- }
27
-
28
- export const initialApiOpcuaData: ApiOpcuaData = {
29
- hmiReq: {} as ApiOpcuaReqData,
30
- hmiResp: {} as ApiOpcuaReqData,
31
- orchReq: {} as ApiOpcuaReqData,
32
- orchResp: {} as ApiOpcuaReqData,
33
- req: {} as ApiOpcuaReqData,
34
- resp: {} as ApiOpcuaReqData,
35
- internalReq: {} as ApiOpcuaReqData,
36
- internalResp: {} as ApiOpcuaReqData
37
- };
38
-
39
-
40
- export enum ApiReqRespStates {
41
- INACTIVE = 0,
42
- WRITING = 10,
43
- REQUEST_READY = 20,
44
- REJECTED_INVALID_CHECKSUM = 30,
45
- REJECTED_ACTION_NOT_ACCEPTED = 40,
46
- REJECTED_INVALID_SENDERID = 50,
47
- ACCEPTED = 1000,
48
- // ERROR = 911,
49
- // DONE = 1000
50
- }
51
-
52
- export function apiReqRespStateToString(state: ApiReqRespStates): string {
53
- switch (state) {
54
- case ApiReqRespStates.INACTIVE:
55
- return "INACTIVE";
56
- case ApiReqRespStates.WRITING:
57
- return "WRITING";
58
- case ApiReqRespStates.REQUEST_READY:
59
- return "REQUEST_READY";
60
- case ApiReqRespStates.REJECTED_INVALID_CHECKSUM:
61
- return "REJECTED_INVALID_CHECKSUM";
62
- case ApiReqRespStates.REJECTED_ACTION_NOT_ACCEPTED:
63
- return "REJECTED_ACTION_NOT_ACCEPTED";
64
- case ApiReqRespStates.REJECTED_INVALID_SENDERID:
65
- return "REJECTED_INVALID_SENDERID";
66
- case ApiReqRespStates.ACCEPTED:
67
- return "ACCEPTED";
68
- default:
69
- return "UNKNOWN";
70
- }
71
- }
1
+ import { DeviceActionRequestData, initialDeviceActionRequestData } from "./Actions";
2
+
3
+ export interface ApiOpcuaReqData {
4
+ id: number; // likely use timestamp ms after epoch
5
+ checkSum: number;
6
+ actionRequestData: DeviceActionRequestData;
7
+ sts: number;
8
+ }
9
+
10
+ export const initialApiOpcuaReqData: ApiOpcuaReqData = {
11
+ id: 0,
12
+ checkSum: 0,
13
+ actionRequestData: initialDeviceActionRequestData,
14
+ sts: 0
15
+ };
16
+
17
+ export interface ApiOpcuaData {
18
+ hmiReq: ApiOpcuaReqData; // read by PLC
19
+ hmiResp: ApiOpcuaReqData; // written by PLC
20
+ orchReq: ApiOpcuaReqData; // read by PLC
21
+ orchResp: ApiOpcuaReqData; // written by PLC
22
+ req: ApiOpcuaReqData; // written by mtac, read by plc
23
+ resp: ApiOpcuaReqData; // written by plc, read by testand
24
+ internalReq: ApiOpcuaReqData; // used internally by mtac
25
+ internalResp: ApiOpcuaReqData; // used internally by mtac
26
+ }
27
+
28
+ export const initialApiOpcuaData: ApiOpcuaData = {
29
+ hmiReq: {} as ApiOpcuaReqData,
30
+ hmiResp: {} as ApiOpcuaReqData,
31
+ orchReq: {} as ApiOpcuaReqData,
32
+ orchResp: {} as ApiOpcuaReqData,
33
+ req: {} as ApiOpcuaReqData,
34
+ resp: {} as ApiOpcuaReqData,
35
+ internalReq: {} as ApiOpcuaReqData,
36
+ internalResp: {} as ApiOpcuaReqData
37
+ };
38
+
39
+
40
+ export enum ApiReqRespStates {
41
+ INACTIVE = 0,
42
+ WRITING = 10,
43
+ REQUEST_READY = 20,
44
+ REJECTED_INVALID_CHECKSUM = 30,
45
+ REJECTED_ACTION_NOT_ACCEPTED = 40,
46
+ REJECTED_INVALID_SENDERID = 50,
47
+ ACCEPTED = 1000,
48
+ // ERROR = 911,
49
+ // DONE = 1000
50
+ }
51
+
52
+ export function apiReqRespStateToString(state: ApiReqRespStates): string {
53
+ switch (state) {
54
+ case ApiReqRespStates.INACTIVE:
55
+ return "INACTIVE";
56
+ case ApiReqRespStates.WRITING:
57
+ return "WRITING";
58
+ case ApiReqRespStates.REQUEST_READY:
59
+ return "REQUEST_READY";
60
+ case ApiReqRespStates.REJECTED_INVALID_CHECKSUM:
61
+ return "REJECTED_INVALID_CHECKSUM";
62
+ case ApiReqRespStates.REJECTED_ACTION_NOT_ACCEPTED:
63
+ return "REJECTED_ACTION_NOT_ACCEPTED";
64
+ case ApiReqRespStates.REJECTED_INVALID_SENDERID:
65
+ return "REJECTED_INVALID_SENDERID";
66
+ case ApiReqRespStates.ACCEPTED:
67
+ return "ACCEPTED";
68
+ default:
69
+ return "UNKNOWN";
70
+ }
71
+ }