@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.
Files changed (78) 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/Conductor.js +0 -1
  8. package/dist/custom-types/Devices/index.d.ts +0 -2
  9. package/dist/custom-types/Devices/index.js +0 -2
  10. package/dist/custom-types/Recipe.d.ts +1 -0
  11. package/dist/custom-types/Recipe.js +2 -0
  12. package/package.json +1 -1
  13. package/src/abb/enums/GCs.mod +44 -44
  14. package/src/abb/enums/PartLocationIds.mod +13 -13
  15. package/src/abb/enums/RobTasks.mod +18 -18
  16. package/src/abb/enums/States.mod +20 -20
  17. package/src/abb/procs/MainModule.mod +188 -188
  18. package/src/abb/records/DeviceDataTypes.mod +35 -35
  19. package/src/custom-types/AppState.ts +115 -115
  20. package/src/custom-types/BaseDevice/Actions.ts +45 -45
  21. package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
  22. package/src/custom-types/BaseDevice/Device.ts +224 -224
  23. package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
  24. package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
  25. package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
  26. package/src/custom-types/BaseDevice/Processes.ts +38 -38
  27. package/src/custom-types/BaseDevice/index.ts +7 -6
  28. package/src/custom-types/Bridge.ts +8 -8
  29. package/src/custom-types/Com.ts +19 -19
  30. package/src/custom-types/Devices/Axis.ts +222 -222
  31. package/src/custom-types/Devices/Conductor.ts +14 -14
  32. package/src/custom-types/Devices/Pot.ts +24 -24
  33. package/src/custom-types/Devices/Robot.ts +208 -208
  34. package/src/custom-types/Devices/index.ts +3 -4
  35. package/src/custom-types/GlobalConstants.ts +98 -98
  36. package/src/custom-types/HMI.ts +52 -52
  37. package/src/custom-types/Machine.ts +130 -130
  38. package/src/custom-types/Part.ts +238 -238
  39. package/src/custom-types/RackData.ts +22 -22
  40. package/src/custom-types/Recipe.ts +250 -247
  41. package/src/custom-types/RecipeManagerFB.ts +10 -10
  42. package/src/custom-types/TaskQueue.ts +86 -86
  43. package/src/custom-types/UserManagerFB.ts +7 -7
  44. package/src/custom-types/index.ts +14 -14
  45. package/src/enums/Colors.ts +79 -79
  46. package/src/enums/DeviceId.ts +116 -116
  47. package/src/enums/ExtrusionType.ts +5 -5
  48. package/src/enums/OpcuaDatatype.ts +27 -27
  49. package/src/enums/Pages.ts +21 -21
  50. package/src/enums/States.ts +173 -173
  51. package/src/enums/TaskId.ts +37 -37
  52. package/src/enums/index.ts +9 -9
  53. package/src/functions/colorMapping.ts +43 -43
  54. package/src/functions/index.ts +2 -2
  55. package/src/functions/mqtt-helpers.ts +20 -20
  56. package/src/functions/topicMapping.ts +6 -6
  57. package/src/index.ts +3 -3
  58. package/src/plc-tags/index.ts +38 -38
  59. package/src/plc-tags/mqtt.ts +9 -9
  60. package/src/plc-tags/opcua.ts +3 -3
  61. package/src/styles/animations.css +15 -15
  62. package/tsconfig.json +13 -13
  63. package/dist/custom-types/Devices/Device.d.ts +0 -111
  64. package/dist/custom-types/Devices/Device.js +0 -108
  65. package/dist/custom-types/PartData.d.ts +0 -11
  66. package/dist/custom-types/PartData.js +0 -2
  67. package/dist/custom-types/RecipeData.d.ts +0 -7
  68. package/dist/custom-types/RecipeData.js +0 -2
  69. package/dist/enums/Errors.d.ts +0 -6
  70. package/dist/enums/Errors.js +0 -28
  71. package/dist/enums/Priorities.d.ts +0 -18
  72. package/dist/enums/Priorities.js +0 -24
  73. package/dist/enums/RobPositions.d.ts +0 -12
  74. package/dist/enums/RobPositions.js +0 -16
  75. package/dist/enums/Warnings.d.ts +0 -6
  76. package/dist/enums/Warnings.js +0 -18
  77. /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
  78. /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
+ }