@duet3d/objectmodel 3.5.0-rc.1 → 3.5.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,6 +24,14 @@ export declare abstract class ModelObject implements IModelObject {
24
24
  * @returns Updated instance (may not equal the original instance)
25
25
  */
26
26
  update(jsonElement: any): IModelObject | null;
27
+ /**
28
+ * Wrap a nullable model object property so that type checks can be performed
29
+ * @param key Property key of the derived class
30
+ * @param constructor Constructor for creating new elements
31
+ */
32
+ static wrapModelCollectionProperty<S extends IModelObject, K extends keyof S, T extends IModelObject | null>(self: S, key: K, itemConstructor: {
33
+ new (): T;
34
+ }): void;
27
35
  /**
28
36
  * Wrap a nullable model object property so that type checks can be performed
29
37
  * @param key Property key of the derived class
@@ -169,6 +169,34 @@ class ModelObject {
169
169
  }
170
170
  return this;
171
171
  }
172
+ /**
173
+ * Wrap a nullable model object property so that type checks can be performed
174
+ * @param key Property key of the derived class
175
+ * @param constructor Constructor for creating new elements
176
+ */
177
+ static wrapModelCollectionProperty(self, key, itemConstructor) {
178
+ let propertyValue = self[key];
179
+ Object.defineProperty(self, key, {
180
+ get() { return propertyValue; },
181
+ set(newValue) {
182
+ if (newValue === null) {
183
+ propertyValue = null;
184
+ }
185
+ else if (propertyValue !== null) {
186
+ const newModel = propertyValue.update(newValue);
187
+ if (propertyValue !== newModel) {
188
+ propertyValue = newModel;
189
+ }
190
+ }
191
+ else {
192
+ const newModel = new index_1.ModelCollection(itemConstructor);
193
+ propertyValue = newModel.update(newValue);
194
+ }
195
+ },
196
+ configurable: true,
197
+ enumerable: true
198
+ });
199
+ }
172
200
  /**
173
201
  * Wrap a nullable model object property so that type checks can be performed
174
202
  * @param key Property key of the derived class
@@ -0,0 +1,18 @@
1
+ import { ModelObject } from "..";
2
+ export declare class BoardClosedLoopCurrentFraction extends ModelObject {
3
+ avg: number;
4
+ positionError: number;
5
+ }
6
+ export declare class BoardClosedLoopPositionError extends ModelObject {
7
+ max: number;
8
+ rms: number;
9
+ }
10
+ export declare class DriverClosedLoop extends ModelObject {
11
+ readonly currentFraction: BoardClosedLoopCurrentFraction;
12
+ readonly positionError: BoardClosedLoopPositionError;
13
+ }
14
+ export default class Driver extends ModelObject {
15
+ constructor();
16
+ closedLoop: DriverClosedLoop | null;
17
+ status: number;
18
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DriverClosedLoop = exports.BoardClosedLoopPositionError = exports.BoardClosedLoopCurrentFraction = void 0;
4
+ const __1 = require("..");
5
+ class BoardClosedLoopCurrentFraction extends __1.ModelObject {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.avg = 0;
9
+ this.positionError = 0;
10
+ }
11
+ }
12
+ exports.BoardClosedLoopCurrentFraction = BoardClosedLoopCurrentFraction;
13
+ class BoardClosedLoopPositionError extends __1.ModelObject {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.max = 0;
17
+ this.rms = 0;
18
+ }
19
+ }
20
+ exports.BoardClosedLoopPositionError = BoardClosedLoopPositionError;
21
+ class DriverClosedLoop extends __1.ModelObject {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.currentFraction = new BoardClosedLoopCurrentFraction();
25
+ this.positionError = new BoardClosedLoopPositionError();
26
+ }
27
+ }
28
+ exports.DriverClosedLoop = DriverClosedLoop;
29
+ class Driver extends __1.ModelObject {
30
+ constructor() {
31
+ super();
32
+ this.closedLoop = null;
33
+ this.status = 0;
34
+ __1.ModelObject.wrapModelProperty(this, "closedLoop", DriverClosedLoop);
35
+ }
36
+ }
37
+ exports.default = Driver;
@@ -1,9 +1,15 @@
1
+ import ModelCollection from "../ModelCollection";
1
2
  import ModelObject from "../ModelObject";
2
3
  import DirectDisplay from "./directDisplay";
4
+ import Driver from "./Driver";
3
5
  export declare class Accelerometer extends ModelObject {
4
6
  points: number;
5
7
  runs: number;
6
8
  }
9
+ export declare class BoardClosedLoop extends ModelObject {
10
+ points: number;
11
+ runs: number;
12
+ }
7
13
  export declare enum BoardState {
8
14
  unknown = "unknown",
9
15
  flashing = "flashing",
@@ -11,10 +17,6 @@ export declare enum BoardState {
11
17
  resetting = "resetting",
12
18
  running = "running"
13
19
  }
14
- export declare class ClosedLoop extends ModelObject {
15
- points: number;
16
- runs: number;
17
- }
18
20
  export declare class MinMaxCurrent extends ModelObject {
19
21
  current: number;
20
22
  min: number;
@@ -25,8 +27,9 @@ export declare class Board extends ModelObject {
25
27
  accelerometer: Accelerometer | null;
26
28
  bootloaderFileName: string | null;
27
29
  canAddress: number | null;
28
- closedLoop: ClosedLoop | null;
30
+ closedLoop: BoardClosedLoop | null;
29
31
  directDisplay: DirectDisplay | null;
32
+ drivers: ModelCollection<Driver>;
30
33
  firmwareDate: string;
31
34
  firmwareFileName: string;
32
35
  firmwareName: string;
@@ -47,3 +50,4 @@ export declare class Board extends ModelObject {
47
50
  }
48
51
  export default Board;
49
52
  export * from "./directDisplay";
53
+ export * from "./Driver";
@@ -14,9 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Board = exports.MinMaxCurrent = exports.ClosedLoop = exports.BoardState = exports.Accelerometer = void 0;
17
+ exports.Board = exports.MinMaxCurrent = exports.BoardState = exports.BoardClosedLoop = exports.Accelerometer = void 0;
18
+ const ModelCollection_1 = require("../ModelCollection");
18
19
  const ModelObject_1 = require("../ModelObject");
19
20
  const directDisplay_1 = require("./directDisplay");
21
+ const Driver_1 = require("./Driver");
20
22
  class Accelerometer extends ModelObject_1.default {
21
23
  constructor() {
22
24
  super(...arguments);
@@ -25,6 +27,14 @@ class Accelerometer extends ModelObject_1.default {
25
27
  }
26
28
  }
27
29
  exports.Accelerometer = Accelerometer;
30
+ class BoardClosedLoop extends ModelObject_1.default {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.points = 0;
34
+ this.runs = 0;
35
+ }
36
+ }
37
+ exports.BoardClosedLoop = BoardClosedLoop;
28
38
  var BoardState;
29
39
  (function (BoardState) {
30
40
  BoardState["unknown"] = "unknown";
@@ -33,14 +43,6 @@ var BoardState;
33
43
  BoardState["resetting"] = "resetting";
34
44
  BoardState["running"] = "running";
35
45
  })(BoardState || (exports.BoardState = BoardState = {}));
36
- class ClosedLoop extends ModelObject_1.default {
37
- constructor() {
38
- super(...arguments);
39
- this.points = 0;
40
- this.runs = 0;
41
- }
42
- }
43
- exports.ClosedLoop = ClosedLoop;
44
46
  class MinMaxCurrent extends ModelObject_1.default {
45
47
  constructor() {
46
48
  super(...arguments);
@@ -58,6 +60,7 @@ class Board extends ModelObject_1.default {
58
60
  this.canAddress = null;
59
61
  this.closedLoop = null;
60
62
  this.directDisplay = null;
63
+ this.drivers = new ModelCollection_1.default(Driver_1.default);
61
64
  this.firmwareDate = "";
62
65
  this.firmwareFileName = "";
63
66
  this.firmwareName = "";
@@ -76,8 +79,9 @@ class Board extends ModelObject_1.default {
76
79
  this.vIn = null;
77
80
  this.wifiFirmwareFileName = null;
78
81
  ModelObject_1.default.wrapModelProperty(this, "accelerometer", Accelerometer);
79
- ModelObject_1.default.wrapModelProperty(this, "closedLoop", ClosedLoop);
82
+ ModelObject_1.default.wrapModelProperty(this, "closedLoop", BoardClosedLoop);
80
83
  ModelObject_1.default.wrapModelProperty(this, "directDisplay", directDisplay_1.default);
84
+ ModelObject_1.default.wrapModelCollectionProperty(this, "drivers", Driver_1.default);
81
85
  ModelObject_1.default.wrapModelProperty(this, "mcuTemp", MinMaxCurrent);
82
86
  ModelObject_1.default.wrapModelProperty(this, "v12", MinMaxCurrent);
83
87
  ModelObject_1.default.wrapModelProperty(this, "vIn", MinMaxCurrent);
@@ -86,3 +90,4 @@ class Board extends ModelObject_1.default {
86
90
  exports.Board = Board;
87
91
  exports.default = Board;
88
92
  __exportStar(require("./directDisplay"), exports);
93
+ __exportStar(require("./Driver"), exports);
@@ -6,5 +6,5 @@ export declare class KeepoutZoneCoordinates extends ModelObject {
6
6
  }
7
7
  export default class KeepoutZone extends ModelObject {
8
8
  active: boolean;
9
- coords: ModelCollection<KeepoutZoneCoordinates | null>;
9
+ readonly coords: ModelCollection<KeepoutZoneCoordinates | null>;
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duet3d/objectmodel",
3
- "version": "3.5.0-rc.1",
3
+ "version": "3.5.0-rc.2",
4
4
  "description": "TypeScript implementation of the Duet3D Object Model",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",