@synapticon/motion-master-client 6.0.0-alpha.113 → 6.0.0-alpha.115
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/dist/generated/Api.d.ts +11 -44
- package/dist/generated/Api.js +15 -1
- package/dist/generated/data-contracts.d.ts +293 -8
- package/package.json +1 -1
package/dist/generated/Api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlStatusCode, AutoTuningError, AutoTuningRunRequest, AutoTuningRunResponse, AutoTuningStatus, BrakeState, CaptureSummary, Cia402Status, DcSyncStatus, DeviceDiagnostics, DeviceFile, DeviceParameter, Encoders, EscRegister, EsiParseResult, FirmwareCompatibility, FirmwarePackageName, FoeErrorCode, GameLoopHealth, HardwareDescription, HrdRecording, IdentifiedPlantModel, IntegroVariant, IntegroVariantOption, MailboxErrorCode, Monitoring, ObjectDataTypeInfo, OperationModes, OutputStageResult, ParameterCacheEntry, ParameterValue, PdoMapping, PdoMappingRequest, ProcedureListing, ProcedureRequest, ProcedureSnapshot, ProcessDataWatchdog, ProcessImageObject, SdoAbortCode, SlaveConfig, SlaveInformationInterface, UserCacheListing } from "./data-contracts.js";
|
|
1
|
+
import { AlStatusCode, AutoTuningError, AutoTuningRunRequest, AutoTuningRunResponse, AutoTuningStatus, BrakeState, CaptureSummary, Cia402Status, DcSyncStatus, DeviceDiagnostics, DeviceFile, DeviceParameter, Encoders, EscRegister, EsiParseResult, FirmwareCompatibility, FirmwarePackageName, FoeErrorCode, GameLoopHealth, HardwareDescription, HrdRecording, IcHausRegister, IcMuRestoreFile, IdentifiedPlantModel, IntegroVariant, IntegroVariantOption, MailboxErrorCode, Monitoring, ObjectDataTypeInfo, OperationModes, OutputStageResult, ParameterCacheEntry, ParameterValue, PdoMapping, PdoMappingRequest, ProcedureListing, ProcedureRequest, ProcedureSnapshot, ProcessDataWatchdog, ProcessImageObject, SdoAbortCode, SlaveConfig, SlaveInformationInterface, UserCacheListing } from "./data-contracts.js";
|
|
2
2
|
import { HttpClient, RequestParams } from "./http-client.js";
|
|
3
3
|
export declare class Api<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
|
|
4
4
|
/**
|
|
@@ -538,48 +538,7 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
538
538
|
name: string;
|
|
539
539
|
/** How the space is reached, which is what decides whether the register communication service can read it at all. */
|
|
540
540
|
addressing: string;
|
|
541
|
-
registers:
|
|
542
|
-
/**
|
|
543
|
-
* The address, or the first of a printed range.
|
|
544
|
-
* @example 15
|
|
545
|
-
*/
|
|
546
|
-
address: number;
|
|
547
|
-
/**
|
|
548
|
-
* The last address of the range; equal to address for a single-address row.
|
|
549
|
-
* @example 15
|
|
550
|
-
*/
|
|
551
|
-
lastAddress: number;
|
|
552
|
-
/**
|
|
553
|
-
* The fields rendered as the datasheet prints the row. "RESERVED" for a reserved row.
|
|
554
|
-
* @example "SPO_MT(3:0) | MPC(3:0)"
|
|
555
|
-
*/
|
|
556
|
-
layout: string;
|
|
557
|
-
/** The named pieces of this register, most significant bit first. Empty when reserved. */
|
|
558
|
-
fields: {
|
|
559
|
-
/**
|
|
560
|
-
* The datasheet's own name for the field.
|
|
561
|
-
* @example "SPO_MT"
|
|
562
|
-
*/
|
|
563
|
-
name: string;
|
|
564
|
-
/**
|
|
565
|
-
* The field's own bit slice as the register map prints it, empty where it prints a bare name. Not the position within the byte.
|
|
566
|
-
* @example "3:0"
|
|
567
|
-
*/
|
|
568
|
-
bits: string;
|
|
569
|
-
/**
|
|
570
|
-
* The datasheet's one-line description of the field.
|
|
571
|
-
* @example "Offset external multiturn"
|
|
572
|
-
*/
|
|
573
|
-
description: string;
|
|
574
|
-
}[];
|
|
575
|
-
/** @example false */
|
|
576
|
-
reserved: boolean;
|
|
577
|
-
/**
|
|
578
|
-
* Reachable over SPI only, so the register communication service cannot touch it.
|
|
579
|
-
* @example false
|
|
580
|
-
*/
|
|
581
|
-
spiOnly: boolean;
|
|
582
|
-
}[];
|
|
541
|
+
registers: IcHausRegister[];
|
|
583
542
|
}[], any>>;
|
|
584
543
|
/**
|
|
585
544
|
* @description The register map of the Integro's internal (Kübler) encoder — the reference table for POST /api/devices/{slavePosition}/procedures/kuebler-register-communication, and documentation in its own right. Static: it describes the encoder type, not any connected device, so it needs no bus and no scan. Transcribed from the vendor's own draft table, then corrected against what the encoder really does: the draft calls four registers not implemented that the encoder calibration sequence reads or writes, and leaves out four more. Each entry carries the width, the access type, whether the encoder implements it, and the vendor's bit definitions verbatim, which for a bit-field register is the only place its meaning is recorded. A register the draft does not document says so in `definition`, because a reader has nowhere else to look. `format` says how to read the assembled value, because signedness is not uniform and one register is not a single number at all: `unsigned`, `signed`, `bitField` (the number means nothing on its own), or `signedHalves` — two signed 16-bit values packed into 32 bits, which register 0x3C is the only case of. `readableInOneCommand` says whether one command can carry the register, since the command's length byte caps at 4 bytes. Every register fits today, so it is true for all of them.
|
|
@@ -1247,6 +1206,14 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
1247
1206
|
* @request POST:/api/hardware-description/parse
|
|
1248
1207
|
*/
|
|
1249
1208
|
parseHardwareDescription: (data: string, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<HardwareDescription, void>>;
|
|
1209
|
+
/**
|
|
1210
|
+
* @description Decodes a `circulo_integrated_encoder_<sensor port>_config.bin` supplied in the request body. The `ic-mu-encoder-configuration` procedure writes this file. It holds `[address, value]` pairs of iC-MU registers, and the drive writes them into the encoder when the iC-MU reports a corrupted EEPROM. Each pair comes back with the iC-MU register at its address. The file is refused when the drive would refuse it: an odd length, or more than 66 bytes.
|
|
1211
|
+
*
|
|
1212
|
+
* @name ParseIcMuRestoreFile
|
|
1213
|
+
* @summary Parse an iC-MU restore file
|
|
1214
|
+
* @request POST:/api/ic-mu-restore-file/parse
|
|
1215
|
+
*/
|
|
1216
|
+
parseIcMuRestoreFile: (data: File, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<IcMuRestoreFile, void>>;
|
|
1250
1217
|
/**
|
|
1251
1218
|
* @description Decodes a `.variant` file supplied in the request body. Binary rather than text, hence a `POST` with bytes like `/api/sii/parse` rather than a query like `/api/firmware-package-name`. Trailing bytes past the last option are accepted: the firmware reads only as many options as the count claims and ignores the rest, so refusing padding would reject a file the drive is happy with.
|
|
1252
1219
|
*
|
|
@@ -1933,7 +1900,7 @@ export declare class Api<SecurityDataType = unknown> extends HttpClient<Security
|
|
|
1933
1900
|
*/
|
|
1934
1901
|
deleteParameterCache: (id: string, params?: RequestParams) => Promise<import("./http-client.js").HttpResponse<void, void>>;
|
|
1935
1902
|
/**
|
|
1936
|
-
* @description Returns every file in Motion Master's per-user cache directory, flattened: one entry per file with its full path relative to the cache root, whatever the nesting. Directories have no entries of their own. Independent of the bus — works whether or not a driver is initialised. The cache is a plain file store for data that should outlive a restart. The store itself neither validates nor interprets an upload — `PUT` accepts any bytes at any valid path, and putting a file here does not, on its own, make Motion Master do anything with it; the client chooses the paths. That is separate from whether a *feature* reads a given file, and several do: `parameters/` (the on-disk object-dictionary cache) and `dumps/` (`.mmpd` recorder dumps) are written and consumed by those features. `esis/` holds ESI files
|
|
1903
|
+
* @description Returns every file in Motion Master's per-user cache directory, flattened: one entry per file with its full path relative to the cache root, whatever the nesting. Directories have no entries of their own. Independent of the bus — works whether or not a driver is initialised. The cache is a plain file store for data that should outlive a restart. The store itself neither validates nor interprets an upload — `PUT` accepts any bytes at any valid path, and putting a file here does not, on its own, make Motion Master do anything with it; the client chooses the paths. That is separate from whether a *feature* reads a given file, and several do: `parameters/` (the on-disk object-dictionary cache) and `dumps/` (`.mmpd` recorder dumps) are written and consumed by those features. `esis/` holds ESI files, which a client adds and the firmware installation stores from each package it caches, named `esi-<vendor>-<version>.xml`; a device whose vendor and firmware version (0x100A) match a file takes the units, ranges, descriptions and options of its parameters from it at the next scan or parameter init. Their files appear in this listing alongside everything else, so a client must not assume every entry was uploaded through this API, nor that deleting one is inconsequential.
|
|
1937
1904
|
*
|
|
1938
1905
|
* @name ListUserCacheFiles
|
|
1939
1906
|
* @summary List the files in the user cache
|
package/dist/generated/Api.js
CHANGED
|
@@ -901,6 +901,20 @@ export class Api extends HttpClient {
|
|
|
901
901
|
format: "json",
|
|
902
902
|
...params,
|
|
903
903
|
});
|
|
904
|
+
/**
|
|
905
|
+
* @description Decodes a `circulo_integrated_encoder_<sensor port>_config.bin` supplied in the request body. The `ic-mu-encoder-configuration` procedure writes this file. It holds `[address, value]` pairs of iC-MU registers, and the drive writes them into the encoder when the iC-MU reports a corrupted EEPROM. Each pair comes back with the iC-MU register at its address. The file is refused when the drive would refuse it: an odd length, or more than 66 bytes.
|
|
906
|
+
*
|
|
907
|
+
* @name ParseIcMuRestoreFile
|
|
908
|
+
* @summary Parse an iC-MU restore file
|
|
909
|
+
* @request POST:/api/ic-mu-restore-file/parse
|
|
910
|
+
*/
|
|
911
|
+
parseIcMuRestoreFile = (data, params = {}) => this.request({
|
|
912
|
+
path: `/api/ic-mu-restore-file/parse`,
|
|
913
|
+
method: "POST",
|
|
914
|
+
body: data,
|
|
915
|
+
format: "json",
|
|
916
|
+
...params,
|
|
917
|
+
});
|
|
904
918
|
/**
|
|
905
919
|
* @description Decodes a `.variant` file supplied in the request body. Binary rather than text, hence a `POST` with bytes like `/api/sii/parse` rather than a query like `/api/firmware-package-name`. Trailing bytes past the last option are accepted: the firmware reads only as many options as the count claims and ignores the rest, so refusing padding would reject a file the drive is happy with.
|
|
906
920
|
*
|
|
@@ -1268,7 +1282,7 @@ export class Api extends HttpClient {
|
|
|
1268
1282
|
...params,
|
|
1269
1283
|
});
|
|
1270
1284
|
/**
|
|
1271
|
-
* @description Returns every file in Motion Master's per-user cache directory, flattened: one entry per file with its full path relative to the cache root, whatever the nesting. Directories have no entries of their own. Independent of the bus — works whether or not a driver is initialised. The cache is a plain file store for data that should outlive a restart. The store itself neither validates nor interprets an upload — `PUT` accepts any bytes at any valid path, and putting a file here does not, on its own, make Motion Master do anything with it; the client chooses the paths. That is separate from whether a *feature* reads a given file, and several do: `parameters/` (the on-disk object-dictionary cache) and `dumps/` (`.mmpd` recorder dumps) are written and consumed by those features. `esis/` holds ESI files
|
|
1285
|
+
* @description Returns every file in Motion Master's per-user cache directory, flattened: one entry per file with its full path relative to the cache root, whatever the nesting. Directories have no entries of their own. Independent of the bus — works whether or not a driver is initialised. The cache is a plain file store for data that should outlive a restart. The store itself neither validates nor interprets an upload — `PUT` accepts any bytes at any valid path, and putting a file here does not, on its own, make Motion Master do anything with it; the client chooses the paths. That is separate from whether a *feature* reads a given file, and several do: `parameters/` (the on-disk object-dictionary cache) and `dumps/` (`.mmpd` recorder dumps) are written and consumed by those features. `esis/` holds ESI files, which a client adds and the firmware installation stores from each package it caches, named `esi-<vendor>-<version>.xml`; a device whose vendor and firmware version (0x100A) match a file takes the units, ranges, descriptions and options of its parameters from it at the next scan or parameter init. Their files appear in this listing alongside everything else, so a client must not assume every entry was uploaded through this API, nor that deleting one is inconsequential.
|
|
1272
1286
|
*
|
|
1273
1287
|
* @name ListUserCacheFiles
|
|
1274
1288
|
* @summary List the files in the user cache
|
|
@@ -451,7 +451,7 @@ export interface ProgressStep {
|
|
|
451
451
|
/** @example "succeeded" */
|
|
452
452
|
status: "idle" | "running" | "succeeded" | "failed";
|
|
453
453
|
/**
|
|
454
|
-
* What the step produced, if anything — shape is per procedure. Absent when the step produced nothing. For `os-command` it is an object with `status`, `data`, `errorCode` when the drive sent one, and `fsBuffer` when the request asked to read bulk data. For `read-object-dictionary` it is an object with `byteCount` and `values`, one entry per object with its `index`, `subindex` and `value`.
|
|
454
|
+
* What the step produced, if anything — shape is per procedure. Absent when the step produced nothing. For `os-command` it is an object with `status`, `data`, `errorCode` when the drive sent one, and `fsBuffer` when the request asked to read bulk data. For `read-object-dictionary` it is an object with `byteCount` and `values`, one entry per object with its `index`, `subindex` and `value`. For `ic-mu-encoder-status` the `read-registers` step holds an array of `IcMuEncoderStatus`, and for `ic-mu-encoder-configuration` the `verify` step holds one. For `ic-mu-calibration` the `validate` step holds an `IcMuCalibrationPlan`, each `iteration-<n>` step an `IcMuCalibrationIteration`, and the `validation` step an `IcMuCalibrationValidation`.
|
|
455
455
|
* @example {"status":1,"data":[1,2,3,4,5,6]}
|
|
456
456
|
*/
|
|
457
457
|
value?: any;
|
|
@@ -538,10 +538,10 @@ export interface HrdRecording {
|
|
|
538
538
|
/** One encoder configuration record, 0x2110 for encoder 1 or 0x2112 for encoder 2. */
|
|
539
539
|
export interface EncoderConfiguration {
|
|
540
540
|
/**
|
|
541
|
-
* The ordinal the controller fields refer to; 1 is 0x2110, 2 is 0x2112.
|
|
541
|
+
* The encoder ordinal, which the controller fields and the OS commands refer to; 1 is 0x2110, 2 is 0x2112.
|
|
542
542
|
* @example 1
|
|
543
543
|
*/
|
|
544
|
-
|
|
544
|
+
encoderOrdinal: 1 | 2;
|
|
545
545
|
/**
|
|
546
546
|
* The port the encoder is wired to (:01), 0 for none.
|
|
547
547
|
* @example 1
|
|
@@ -993,6 +993,246 @@ export interface ProcedureListing {
|
|
|
993
993
|
/** The complete state of a procedure on one device — an accumulating snapshot rather than an event, which is what makes polling lossless. */
|
|
994
994
|
snapshot: ProcedureSnapshot;
|
|
995
995
|
}
|
|
996
|
+
export interface IcHausRegister {
|
|
997
|
+
/**
|
|
998
|
+
* The address, or the first of a printed range.
|
|
999
|
+
* @example 15
|
|
1000
|
+
*/
|
|
1001
|
+
address: number;
|
|
1002
|
+
/**
|
|
1003
|
+
* The last address of the range; equal to address for a single-address row.
|
|
1004
|
+
* @example 15
|
|
1005
|
+
*/
|
|
1006
|
+
lastAddress: number;
|
|
1007
|
+
/**
|
|
1008
|
+
* The fields rendered as the datasheet prints the row. "RESERVED" for a reserved row.
|
|
1009
|
+
* @example "SPO_MT(3:0) | MPC(3:0)"
|
|
1010
|
+
*/
|
|
1011
|
+
layout: string;
|
|
1012
|
+
/** The named pieces of this register, most significant bit first. Empty when reserved. */
|
|
1013
|
+
fields: {
|
|
1014
|
+
/**
|
|
1015
|
+
* The datasheet's own name for the field.
|
|
1016
|
+
* @example "SPO_MT"
|
|
1017
|
+
*/
|
|
1018
|
+
name: string;
|
|
1019
|
+
/**
|
|
1020
|
+
* The field's own bit slice as the register map prints it, empty where it prints a bare name. Not the position within the byte.
|
|
1021
|
+
* @example "3:0"
|
|
1022
|
+
*/
|
|
1023
|
+
bits: string;
|
|
1024
|
+
/**
|
|
1025
|
+
* The datasheet's one-line description of the field.
|
|
1026
|
+
* @example "Offset external multiturn"
|
|
1027
|
+
*/
|
|
1028
|
+
description: string;
|
|
1029
|
+
}[];
|
|
1030
|
+
/** @example false */
|
|
1031
|
+
reserved: boolean;
|
|
1032
|
+
/**
|
|
1033
|
+
* Reachable over SPI only, so the register communication service cannot touch it.
|
|
1034
|
+
* @example false
|
|
1035
|
+
*/
|
|
1036
|
+
spiOnly: boolean;
|
|
1037
|
+
}
|
|
1038
|
+
/** Whether one iC-MU encoder holds the output configuration that its encoder configuration object asks for. */
|
|
1039
|
+
export interface IcMuEncoderStatus {
|
|
1040
|
+
/** @example 1 */
|
|
1041
|
+
encoderOrdinal: 1 | 2;
|
|
1042
|
+
/**
|
|
1043
|
+
* 0x21x0:01. 3 to 5 is an external encoder.
|
|
1044
|
+
* @example 1
|
|
1045
|
+
*/
|
|
1046
|
+
sensorPort: number;
|
|
1047
|
+
/**
|
|
1048
|
+
* 0x21x0:0C.
|
|
1049
|
+
* @example 19
|
|
1050
|
+
*/
|
|
1051
|
+
singleturnBits: number;
|
|
1052
|
+
/**
|
|
1053
|
+
* 0x21x0:0A, 0 where the object has none.
|
|
1054
|
+
* @example 0
|
|
1055
|
+
*/
|
|
1056
|
+
multiturnBits: number;
|
|
1057
|
+
/**
|
|
1058
|
+
* The pole pairs of the ring, null for a ring the rules do not know.
|
|
1059
|
+
* @example 32
|
|
1060
|
+
*/
|
|
1061
|
+
masterPolePairs: number | null;
|
|
1062
|
+
/**
|
|
1063
|
+
* iC-MU register 0x74.
|
|
1064
|
+
* @example 21
|
|
1065
|
+
*/
|
|
1066
|
+
hardRev: number;
|
|
1067
|
+
/**
|
|
1068
|
+
* The part register 0x74 names, null for a code no iC-MU uses.
|
|
1069
|
+
* @example "iC-MU150"
|
|
1070
|
+
*/
|
|
1071
|
+
part: string | null;
|
|
1072
|
+
/**
|
|
1073
|
+
* The low nibble of register 0x74.
|
|
1074
|
+
* @example 5
|
|
1075
|
+
*/
|
|
1076
|
+
revision: number;
|
|
1077
|
+
/**
|
|
1078
|
+
* iC-MU register 0x11.
|
|
1079
|
+
* @example 5
|
|
1080
|
+
*/
|
|
1081
|
+
outputRegister: number;
|
|
1082
|
+
/**
|
|
1083
|
+
* The value of register 0x11 the rules give, null where they do not apply.
|
|
1084
|
+
* @example 5
|
|
1085
|
+
*/
|
|
1086
|
+
expectedOutputRegister: number | null;
|
|
1087
|
+
/**
|
|
1088
|
+
* not-configured when register 0x11 holds 0xA5, configured when it holds the expected value, invalid otherwise. null without an expected value, and for another chip on an external port.
|
|
1089
|
+
* @example "configured"
|
|
1090
|
+
*/
|
|
1091
|
+
state: "not-configured" | "invalid" | "configured" | null;
|
|
1092
|
+
/** Why there is no expected value. */
|
|
1093
|
+
reason: string | null;
|
|
1094
|
+
/** @example "singleturn" */
|
|
1095
|
+
path: "singleturn" | "multiturn";
|
|
1096
|
+
/** The battery modes a configuration request can name besides default. Empty on the singleturn path and on a ring that offers no mode. */
|
|
1097
|
+
batteryModes: {
|
|
1098
|
+
/** @example "18-microamperes" */
|
|
1099
|
+
name: string;
|
|
1100
|
+
/** @example 18 */
|
|
1101
|
+
maxCurrentMicroamps: number;
|
|
1102
|
+
/** @example 56 */
|
|
1103
|
+
maxAccelerationKrpmPerSecond: number;
|
|
1104
|
+
}[];
|
|
1105
|
+
}
|
|
1106
|
+
/** What an iC-MU calibration decided before the motor moved. */
|
|
1107
|
+
export interface IcMuCalibrationPlan {
|
|
1108
|
+
/** @example 2 */
|
|
1109
|
+
encoderOrdinal: 1 | 2;
|
|
1110
|
+
/** @example 2 */
|
|
1111
|
+
sensorPort: number;
|
|
1112
|
+
/** @example "outer" */
|
|
1113
|
+
ringPosition: "inner" | "outer";
|
|
1114
|
+
/** @example "iC-MU200" */
|
|
1115
|
+
part: string;
|
|
1116
|
+
/** @example 32 */
|
|
1117
|
+
masterPolePairs: number;
|
|
1118
|
+
/** @example "motor" */
|
|
1119
|
+
shaft: "motor" | "driving";
|
|
1120
|
+
/** False when the start values of another ring are used. */
|
|
1121
|
+
startValuesMeasured: boolean;
|
|
1122
|
+
/**
|
|
1123
|
+
* On the driving shaft.
|
|
1124
|
+
* @example 0.75
|
|
1125
|
+
*/
|
|
1126
|
+
velocityRpm: number;
|
|
1127
|
+
/**
|
|
1128
|
+
* On the driving shaft.
|
|
1129
|
+
* @example 8.33
|
|
1130
|
+
*/
|
|
1131
|
+
accelerationRpmPerSecond: number;
|
|
1132
|
+
/**
|
|
1133
|
+
* The time at constant velocity.
|
|
1134
|
+
* @example 6000
|
|
1135
|
+
*/
|
|
1136
|
+
recordingMs: number;
|
|
1137
|
+
/** Whether the software position limits bound the motion. */
|
|
1138
|
+
limitedRange: boolean;
|
|
1139
|
+
warnings: string[];
|
|
1140
|
+
}
|
|
1141
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1142
|
+
export interface IcMuTrackResidual {
|
|
1143
|
+
sineOffset: number;
|
|
1144
|
+
cosineOffset: number;
|
|
1145
|
+
gain: number;
|
|
1146
|
+
phase: number;
|
|
1147
|
+
phaseRange: 0 | 1;
|
|
1148
|
+
/** Whether the track passed the test of this iteration. */
|
|
1149
|
+
passed: boolean;
|
|
1150
|
+
}
|
|
1151
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1152
|
+
export type IcMuCalibrationCurve = number[][];
|
|
1153
|
+
/** What one calibration iteration recorded and wrote. */
|
|
1154
|
+
export interface IcMuCalibrationIteration {
|
|
1155
|
+
/** @example 1 */
|
|
1156
|
+
iteration: number;
|
|
1157
|
+
direction: 1 | -1;
|
|
1158
|
+
/** @example 0.75 */
|
|
1159
|
+
velocityRpm: number;
|
|
1160
|
+
/**
|
|
1161
|
+
* The samples analysed.
|
|
1162
|
+
* @example 6000
|
|
1163
|
+
*/
|
|
1164
|
+
samples: number;
|
|
1165
|
+
/**
|
|
1166
|
+
* Turns of the ring the recording covered.
|
|
1167
|
+
* @example 8.9
|
|
1168
|
+
*/
|
|
1169
|
+
recordedRevolutions: number;
|
|
1170
|
+
/** Present when the recording covered less than one turn of the ring. */
|
|
1171
|
+
warning?: string;
|
|
1172
|
+
/** The permissible nonius phase error. */
|
|
1173
|
+
phaseRangeLimit: number;
|
|
1174
|
+
/** The tolerance of the pass test */
|
|
1175
|
+
tolerance: 1 | 3 | 5;
|
|
1176
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1177
|
+
master: IcMuTrackResidual;
|
|
1178
|
+
/** The error that remains on one track after a recording, in LSB of its registers. */
|
|
1179
|
+
nonius: IcMuTrackResidual;
|
|
1180
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1181
|
+
phaseError: IcMuCalibrationCurve;
|
|
1182
|
+
}
|
|
1183
|
+
/** The validation pass of an iC-MU calibration: the nonius phase margins the encoder now holds. It passes when both are at least 10 %. */
|
|
1184
|
+
export interface IcMuCalibrationValidation {
|
|
1185
|
+
/** @example 3 */
|
|
1186
|
+
iteration: number;
|
|
1187
|
+
direction: 1 | -1;
|
|
1188
|
+
/** @example 0.75 */
|
|
1189
|
+
velocityRpm: number;
|
|
1190
|
+
/** @example 6000 */
|
|
1191
|
+
samples: number;
|
|
1192
|
+
/** @example 8.9 */
|
|
1193
|
+
recordedRevolutions: number;
|
|
1194
|
+
warning?: string;
|
|
1195
|
+
phaseRangeLimit: number;
|
|
1196
|
+
/** A curve over the ring: at most 720 points of [ring angle in degrees, value]. The value is in the unit of phaseRangeLimit. */
|
|
1197
|
+
phaseMargin: IcMuCalibrationCurve;
|
|
1198
|
+
/** @example 78.5 */
|
|
1199
|
+
lowerMarginPercent: number;
|
|
1200
|
+
/** @example 75 */
|
|
1201
|
+
upperMarginPercent: number;
|
|
1202
|
+
/**
|
|
1203
|
+
* The smaller of the two margins.
|
|
1204
|
+
* @example 75
|
|
1205
|
+
*/
|
|
1206
|
+
marginPercent: number;
|
|
1207
|
+
/** robust from 50 %, small-displacements from 30 %, avoid-displacements from 10 %, and too-high below 10 %, where the validation fails. */
|
|
1208
|
+
marginBand: "robust" | "small-displacements" | "avoid-displacements" | "too-high";
|
|
1209
|
+
/** What the band means for the user. */
|
|
1210
|
+
marginMessage: string;
|
|
1211
|
+
passed: boolean;
|
|
1212
|
+
/** Present after a full calibration of the commutation encoder: the commutation offset must be measured again. */
|
|
1213
|
+
commutationWarning?: string;
|
|
1214
|
+
}
|
|
1215
|
+
/** A decoded iC-MU restore file, `circulo_integrated_encoder_<sensor port>_config.bin`. The drive writes these pairs into the encoder when the iC-MU reports a corrupted EEPROM. */
|
|
1216
|
+
export interface IcMuRestoreFile {
|
|
1217
|
+
/** One entry for each pair, in the order of the file. */
|
|
1218
|
+
entries: {
|
|
1219
|
+
/**
|
|
1220
|
+
* The iC-MU RAM address the drive writes the value into.
|
|
1221
|
+
* @min 0
|
|
1222
|
+
* @max 255
|
|
1223
|
+
* @example 12
|
|
1224
|
+
*/
|
|
1225
|
+
address: number;
|
|
1226
|
+
/**
|
|
1227
|
+
* @min 0
|
|
1228
|
+
* @max 255
|
|
1229
|
+
* @example 108
|
|
1230
|
+
*/
|
|
1231
|
+
value: number;
|
|
1232
|
+
/** The iC-MU register at the address, as `/api/meta/ic-haus-registers` lists it, or null for an address the register map does not list. */
|
|
1233
|
+
register: IcHausRegister | null;
|
|
1234
|
+
}[];
|
|
1235
|
+
}
|
|
996
1236
|
/** A procedure's parameters. Which fields apply is per procedure, and each descriptor reports its own in `parameters` — so this schema is open, and a procedure that takes none may be started with no body at all. The properties below are the union of every procedure's, each naming the procedure it belongs to. */
|
|
997
1237
|
export interface ProcedureRequest {
|
|
998
1238
|
/**
|
|
@@ -1026,11 +1266,11 @@ export interface ProcedureRequest {
|
|
|
1026
1266
|
/** `os-command` only, and required when `fsBuffer` is `write`: the bytes to send, base64-encoded into this JSON string. Rejected for the other two directions rather than ignored, so a request that names one and forgets the other is told rather than running a command that moves nothing. (Deliberately not `format: byte`, for the reason spelled out on `packageContent`.) */
|
|
1027
1267
|
fsBufferData?: string;
|
|
1028
1268
|
/**
|
|
1029
|
-
* `encoder-register-communication` and `ic-mu-calibration
|
|
1269
|
+
* `encoder-register-communication`, `ic-mu-calibration-mode`, `ignore-biss-status-bits`, `ic-mu-encoder-configuration` and `ic-mu-calibration`: the encoder ordinal of the OS commands, which picks the drive's encoder to address. Encoder 1 is the encoder configured in 0x2110 and encoder 2 the one configured in 0x2112, so the ordinal picks a configuration object rather than a kind of encoder. Required for `ic-mu-encoder-configuration` and `ic-mu-calibration`, because a default would write the EEPROM of an encoder that nobody named.
|
|
1030
1270
|
* @default 1
|
|
1031
1271
|
* @example 1
|
|
1032
1272
|
*/
|
|
1033
|
-
|
|
1273
|
+
encoderOrdinal?: 1 | 2;
|
|
1034
1274
|
/**
|
|
1035
1275
|
* `encoder-register-communication` only: false reads the register, true writes `value` into it. Either way the drive reports what the register holds afterwards.
|
|
1036
1276
|
* @default false
|
|
@@ -1068,6 +1308,34 @@ export interface ProcedureRequest {
|
|
|
1068
1308
|
* @example "configuration"
|
|
1069
1309
|
*/
|
|
1070
1310
|
mode?: "configuration" | "raw" | "standard";
|
|
1311
|
+
/**
|
|
1312
|
+
* `ic-mu-encoder-configuration` only, and only on the multiturn path: the current the iC-PVL draws from the battery while the drive has no power. A higher current lets it count revolutions at a higher acceleration. `default` takes iC-PVL code 0x5D for an encoder on the motor shaft and 0x68 for one on the driving shaft, and refuses an encoder that serves no controller. A ring of 16 master pole pairs takes only `default`. The `ic-mu-encoder-status` result lists the modes of each encoder with the acceleration each one allows.
|
|
1313
|
+
* @default "default"
|
|
1314
|
+
* @example "18-microamperes"
|
|
1315
|
+
*/
|
|
1316
|
+
batteryMode?: "default" | "6-microamperes" | "10-microamperes" | "18-microamperes" | "36-microamperes" | "72-microamperes";
|
|
1317
|
+
/**
|
|
1318
|
+
* `ic-mu-calibration` only: where the ring of an external encoder on sensor port 3 to 5 sits. Required there, and refused for port 1, which is always inner, and port 2, which is always outer. The calibration starts from the values measured for that position.
|
|
1319
|
+
* @example "inner"
|
|
1320
|
+
*/
|
|
1321
|
+
ringPosition?: "inner" | "outer";
|
|
1322
|
+
/**
|
|
1323
|
+
* `ic-mu-calibration` only: runs one validation pass, which reports the nonius phase margins of the calibration the encoder holds, and writes nothing to the encoder.
|
|
1324
|
+
* @default false
|
|
1325
|
+
*/
|
|
1326
|
+
measurementOnly?: boolean;
|
|
1327
|
+
/**
|
|
1328
|
+
* `ic-mu-calibration` only: after a full calibration, shows the NON_CTR error of the iC-MU in the BiSS error bit, register 0x0C = 0x2C.
|
|
1329
|
+
* @default false
|
|
1330
|
+
*/
|
|
1331
|
+
activateHealthMonitoring?: boolean;
|
|
1332
|
+
/**
|
|
1333
|
+
* `ic-mu-calibration` only: the velocity of the encoder's ring in rpm, on whichever shaft the encoder sits. Without it a motor-shaft encoder runs at the velocity measured for its ring and a driving-shaft encoder at 15 rpm. The 0.95 × 0x6080 cap still applies, and a narrow range between the software position limits replaces it with the velocity that fits.
|
|
1334
|
+
* @min 1
|
|
1335
|
+
* @max 1000
|
|
1336
|
+
* @example 90
|
|
1337
|
+
*/
|
|
1338
|
+
ringVelocity?: number;
|
|
1071
1339
|
/**
|
|
1072
1340
|
* `restore-default-parameters` only: which group of defaults to restore — all (0x1011:01), communication (0x1011:02), application (0x1011:03), or manufacturer (0x1011:04).
|
|
1073
1341
|
* @default "all"
|
|
@@ -1701,12 +1969,29 @@ export interface DeviceParameter {
|
|
|
1701
1969
|
* @example "rpm"
|
|
1702
1970
|
*/
|
|
1703
1971
|
unitSymbol?: string;
|
|
1704
|
-
/**
|
|
1972
|
+
/** The default value, decoded with the same logic as `value`. It comes from the SDO Info response of the slave. When the slave reports none, it comes from the device's ESI (see `esiFile`). Absent when neither source gives one. */
|
|
1705
1973
|
defaultValue?: ParameterValue;
|
|
1706
|
-
/**
|
|
1974
|
+
/** The minimum value, decoded with the same logic as `value`. It comes from the SDO Info response of the slave. When the slave reports none, it comes from the device's ESI (see `esiFile`). Absent when neither source gives one. */
|
|
1707
1975
|
minValue?: ParameterValue;
|
|
1708
|
-
/**
|
|
1976
|
+
/** The maximum value, decoded with the same logic as `value`. It comes from the SDO Info response of the slave. When the slave reports none, it comes from the device's ESI (see `esiFile`). Absent when neither source gives one. */
|
|
1709
1977
|
maxValue?: ParameterValue;
|
|
1978
|
+
/** What the entry does, from the device's ESI, as HTML. A record or array is described once, on subindex 0. Absent when the ESI gives no description. SOMANET ESIs carry one for most objects. */
|
|
1979
|
+
description?: string;
|
|
1980
|
+
/** The named values of an enumerated entry, from the device's ESI. Absent when the entry is not an enumeration. */
|
|
1981
|
+
options?: {
|
|
1982
|
+
/**
|
|
1983
|
+
* @format int64
|
|
1984
|
+
* @example 1
|
|
1985
|
+
*/
|
|
1986
|
+
value: number;
|
|
1987
|
+
/** @example "Enabled" */
|
|
1988
|
+
label: string;
|
|
1989
|
+
}[];
|
|
1990
|
+
/**
|
|
1991
|
+
* The file in the `esis` directory of the user cache that described this entry. Absent when the device has no ESI, or its ESI does not describe this entry. On a device whose other entries have one, an absent `esiFile` means the ESI and the firmware disagree.
|
|
1992
|
+
* @example "esi-000022d2-v5.6.11.xml"
|
|
1993
|
+
*/
|
|
1994
|
+
esiFile?: string;
|
|
1710
1995
|
/**
|
|
1711
1996
|
* Freshness of `value` relative to the device. `synced` — matches the device (last successful read or write); `pending` — set locally while offline or after a failed write, not yet confirmed on the device; `stale` — came from an earlier read or write, and the latest read of the object failed; `unknown` — never read, `value` is the type-appropriate default. A failed read turns `synced` into `stale` and keeps the value. It leaves `unknown` and `pending` unchanged. The next successful read sets `synced` again.
|
|
1712
1997
|
* @example "synced"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synapticon/motion-master-client",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.115",
|
|
4
4
|
"description": "Isomorphic TypeScript client for Motion Master: the generated HTTP API client, the WebSocket connection, and helpers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|