@science-corporation/synapse 0.9.0

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 (123) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +57 -0
  3. package/dist/api/api.d.ts +3973 -0
  4. package/dist/api/api.d.ts.map +1 -0
  5. package/dist/api/api.js +9368 -0
  6. package/dist/api/api.js.map +1 -0
  7. package/dist/api/proto.json +747 -0
  8. package/dist/channel_mask.d.ts +7 -0
  9. package/dist/channel_mask.d.ts.map +1 -0
  10. package/dist/channel_mask.js +14 -0
  11. package/dist/channel_mask.js.map +1 -0
  12. package/dist/config.d.ts +16 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +103 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/demo.d.ts +2 -0
  17. package/dist/demo.d.ts.map +1 -0
  18. package/dist/demo.js +269 -0
  19. package/dist/demo.js.map +1 -0
  20. package/dist/device.d.ts +17 -0
  21. package/dist/device.d.ts.map +1 -0
  22. package/dist/device.js +112 -0
  23. package/dist/device.js.map +1 -0
  24. package/dist/index.d.ts +5 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +28 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/node.d.ts +10 -0
  29. package/dist/node.d.ts.map +1 -0
  30. package/dist/node.js +14 -0
  31. package/dist/node.js.map +1 -0
  32. package/dist/nodes/electrical_broadband.d.ts +11 -0
  33. package/dist/nodes/electrical_broadband.d.ts.map +1 -0
  34. package/dist/nodes/electrical_broadband.js +28 -0
  35. package/dist/nodes/electrical_broadband.js.map +1 -0
  36. package/dist/nodes/electrical_stimulation.d.ts +11 -0
  37. package/dist/nodes/electrical_stimulation.d.ts.map +1 -0
  38. package/dist/nodes/electrical_stimulation.js +28 -0
  39. package/dist/nodes/electrical_stimulation.js.map +1 -0
  40. package/dist/nodes/index.d.ts +9 -0
  41. package/dist/nodes/index.d.ts.map +1 -0
  42. package/dist/nodes/index.js +23 -0
  43. package/dist/nodes/index.js.map +1 -0
  44. package/dist/nodes/optical_broadband.d.ts +11 -0
  45. package/dist/nodes/optical_broadband.d.ts.map +1 -0
  46. package/dist/nodes/optical_broadband.js +28 -0
  47. package/dist/nodes/optical_broadband.js.map +1 -0
  48. package/dist/nodes/optical_stimulation.d.ts +11 -0
  49. package/dist/nodes/optical_stimulation.d.ts.map +1 -0
  50. package/dist/nodes/optical_stimulation.js +28 -0
  51. package/dist/nodes/optical_stimulation.js.map +1 -0
  52. package/dist/nodes/spectral_filter.d.ts +11 -0
  53. package/dist/nodes/spectral_filter.d.ts.map +1 -0
  54. package/dist/nodes/spectral_filter.js +28 -0
  55. package/dist/nodes/spectral_filter.js.map +1 -0
  56. package/dist/nodes/spike_detect.d.ts +11 -0
  57. package/dist/nodes/spike_detect.d.ts.map +1 -0
  58. package/dist/nodes/spike_detect.js +28 -0
  59. package/dist/nodes/spike_detect.js.map +1 -0
  60. package/dist/nodes/stream_in.d.ts +19 -0
  61. package/dist/nodes/stream_in.d.ts.map +1 -0
  62. package/dist/nodes/stream_in.js +66 -0
  63. package/dist/nodes/stream_in.js.map +1 -0
  64. package/dist/nodes/stream_out.d.ts +16 -0
  65. package/dist/nodes/stream_out.d.ts.map +1 -0
  66. package/dist/nodes/stream_out.js +87 -0
  67. package/dist/nodes/stream_out.js.map +1 -0
  68. package/dist/utils/client.d.ts +3 -0
  69. package/dist/utils/client.d.ts.map +1 -0
  70. package/dist/utils/client.js +25 -0
  71. package/dist/utils/client.js.map +1 -0
  72. package/dist/utils/discover.d.ts +15 -0
  73. package/dist/utils/discover.d.ts.map +1 -0
  74. package/dist/utils/discover.js +64 -0
  75. package/dist/utils/discover.js.map +1 -0
  76. package/dist/utils/enum.d.ts +2 -0
  77. package/dist/utils/enum.d.ts.map +1 -0
  78. package/dist/utils/enum.js +13 -0
  79. package/dist/utils/enum.js.map +1 -0
  80. package/dist/utils/index.d.ts +2 -0
  81. package/dist/utils/index.d.ts.map +1 -0
  82. package/dist/utils/index.js +3 -0
  83. package/dist/utils/index.js.map +1 -0
  84. package/package.json +42 -0
  85. package/scripts/build.sh +11 -0
  86. package/scripts/generate.sh +25 -0
  87. package/src/api/api.d.ts +3973 -0
  88. package/src/api/api.js +9991 -0
  89. package/src/api/proto.json +747 -0
  90. package/src/config.ts +110 -0
  91. package/src/demo.ts +303 -0
  92. package/src/device.ts +94 -0
  93. package/src/index.ts +4 -0
  94. package/src/node.ts +18 -0
  95. package/src/nodes/electrical_broadband.ts +30 -0
  96. package/src/nodes/electrical_stimulation.ts +30 -0
  97. package/src/nodes/index.ts +8 -0
  98. package/src/nodes/optical_broadband.ts +30 -0
  99. package/src/nodes/optical_stimulation.ts +30 -0
  100. package/src/nodes/spectral_filter.ts +30 -0
  101. package/src/nodes/spike_detect.ts +30 -0
  102. package/src/nodes/stream_in.ts +83 -0
  103. package/src/nodes/stream_out.ts +92 -0
  104. package/src/utils/client.ts +20 -0
  105. package/src/utils/discover.ts +82 -0
  106. package/src/utils/enum.ts +8 -0
  107. package/src/utils/index.ts +1 -0
  108. package/synapse-api/README.md +15 -0
  109. package/synapse-api/api/channel.proto +9 -0
  110. package/synapse-api/api/datatype.proto +12 -0
  111. package/synapse-api/api/files.proto +46 -0
  112. package/synapse-api/api/node.proto +54 -0
  113. package/synapse-api/api/nodes/electrical_broadband.proto +15 -0
  114. package/synapse-api/api/nodes/electrical_stimulation.proto +13 -0
  115. package/synapse-api/api/nodes/optical_broadband.proto +11 -0
  116. package/synapse-api/api/nodes/optical_stimulation.proto +11 -0
  117. package/synapse-api/api/nodes/spectral_filter.proto +17 -0
  118. package/synapse-api/api/nodes/spike_detect.proto +16 -0
  119. package/synapse-api/api/nodes/stream_in.proto +9 -0
  120. package/synapse-api/api/nodes/stream_out.proto +8 -0
  121. package/synapse-api/api/query.proto +46 -0
  122. package/synapse-api/api/status.proto +42 -0
  123. package/synapse-api/api/synapse.proto +51 -0
@@ -0,0 +1,7 @@
1
+ declare class ChannelMask {
2
+ mask: number[];
3
+ constructor(mask: number[]);
4
+ iterChannels(): Generator<number, void, unknown>;
5
+ }
6
+ export default ChannelMask;
7
+ //# sourceMappingURL=channel_mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel_mask.d.ts","sourceRoot":"","sources":["../src/channel_mask.ts"],"names":[],"mappings":"AAAA,cAAM,WAAW;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;gBAEH,IAAI,EAAE,MAAM,EAAE;IAIzB,YAAY;CAKd;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ChannelMask {
4
+ constructor(mask) {
5
+ this.mask = mask;
6
+ }
7
+ *iterChannels() {
8
+ for (let i = 0; i < this.mask.length; i++) {
9
+ yield this.mask[i];
10
+ }
11
+ }
12
+ }
13
+ exports.default = ChannelMask;
14
+ //# sourceMappingURL=channel_mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel_mask.js","sourceRoot":"","sources":["../src/channel_mask.ts"],"names":[],"mappings":";;AAAA,MAAM,WAAW;IAGf,YAAY,IAAc;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,CAAC,YAAY;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAED,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ import Node from "./node";
2
+ import { synapse } from "./api/api";
3
+ type Connection = [number, number];
4
+ declare class Config {
5
+ connections: Connection[];
6
+ nodes: Node[];
7
+ _genNodeId(): number;
8
+ add(nodes: Node[]): boolean;
9
+ connect(fromNode: Node, toNode: Node): boolean;
10
+ addNode(node: Node): boolean;
11
+ setDevice(device: any): boolean;
12
+ static fromProto(proto: synapse.IDeviceConfiguration): Config;
13
+ toProto(): synapse.DeviceConfiguration;
14
+ }
15
+ export default Config;
16
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAYnC,cAAM,MAAM;IACV,WAAW,EAAE,UAAU,EAAE,CAAM;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAM;IAEnB,UAAU,IAAI,MAAM;IAIpB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE;IASjB,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAQ9C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAS5B,SAAS,CAAC,MAAM,KAAA,GAAG,OAAO;IAO1B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,GAAG,MAAM;IAgC7D,OAAO,IAAI,OAAO,CAAC,mBAAmB;CAWvC;AAED,eAAe,MAAM,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_1 = require("./api/api");
7
+ const electrical_broadband_1 = __importDefault(require("./nodes/electrical_broadband"));
8
+ const electrical_stimulation_1 = __importDefault(require("./nodes/electrical_stimulation"));
9
+ const optical_broadband_1 = __importDefault(require("./nodes/optical_broadband"));
10
+ const optical_stimulation_1 = __importDefault(require("./nodes/optical_stimulation"));
11
+ const spectral_filter_1 = __importDefault(require("./nodes/spectral_filter"));
12
+ const spike_detect_1 = __importDefault(require("./nodes/spike_detect"));
13
+ const stream_in_1 = __importDefault(require("./nodes/stream_in"));
14
+ const stream_out_1 = __importDefault(require("./nodes/stream_out"));
15
+ const kNodeTypeObjectMap = {
16
+ [api_1.synapse.NodeType.kElectricalBroadband]: electrical_broadband_1.default,
17
+ [api_1.synapse.NodeType.kElectricalStimulation]: electrical_stimulation_1.default,
18
+ [api_1.synapse.NodeType.kOpticalBroadband]: optical_broadband_1.default,
19
+ [api_1.synapse.NodeType.kOpticalStimulation]: optical_stimulation_1.default,
20
+ [api_1.synapse.NodeType.kSpectralFilter]: spectral_filter_1.default,
21
+ [api_1.synapse.NodeType.kSpikeDetect]: spike_detect_1.default,
22
+ [api_1.synapse.NodeType.kStreamIn]: stream_in_1.default,
23
+ [api_1.synapse.NodeType.kStreamOut]: stream_out_1.default,
24
+ };
25
+ class Config {
26
+ constructor() {
27
+ this.connections = [];
28
+ this.nodes = [];
29
+ }
30
+ _genNodeId() {
31
+ return this.nodes.length + 1;
32
+ }
33
+ add(nodes) {
34
+ for (const node of nodes) {
35
+ if (!this.addNode(node)) {
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+ connect(fromNode, toNode) {
42
+ if (fromNode.id === null || toNode.id === null) {
43
+ return false;
44
+ }
45
+ this.connections.push([fromNode.id, toNode.id]);
46
+ return true;
47
+ }
48
+ addNode(node) {
49
+ if (!!node.id) {
50
+ return false;
51
+ }
52
+ node.id = this._genNodeId();
53
+ this.nodes.push(node);
54
+ return true;
55
+ }
56
+ setDevice(device) {
57
+ for (const node of this.nodes) {
58
+ node.device = device;
59
+ }
60
+ return true;
61
+ }
62
+ static fromProto(proto) {
63
+ const { nodes = [], connections = [] } = proto;
64
+ const config = new Config();
65
+ for (const nodeProto of nodes) {
66
+ const { type } = nodeProto;
67
+ const NodeType = kNodeTypeObjectMap[type];
68
+ if (!NodeType) {
69
+ continue;
70
+ }
71
+ const node = NodeType.fromProto(nodeProto);
72
+ if (!!nodeProto.id) {
73
+ node.id = nodeProto.id;
74
+ config.nodes.push(node);
75
+ }
76
+ else {
77
+ config.addNode(node);
78
+ }
79
+ }
80
+ for (const connection of connections) {
81
+ const from = config.nodes.find((node) => node.id === connection.srcNodeId);
82
+ const to = config.nodes.find((node) => node.id === connection.dstNodeId);
83
+ if (!from || !to) {
84
+ continue;
85
+ }
86
+ config.connect(from, to);
87
+ }
88
+ return config;
89
+ }
90
+ toProto() {
91
+ return new api_1.synapse.DeviceConfiguration({
92
+ nodes: this.nodes.map((node) => node.toProto()),
93
+ connections: this.connections.map((connection) => {
94
+ return {
95
+ srcNodeId: connection[0],
96
+ dstNodeId: connection[1],
97
+ };
98
+ }),
99
+ });
100
+ }
101
+ }
102
+ exports.default = Config;
103
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/demo.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":""}
package/dist/demo.js ADDED
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const yargs_1 = __importDefault(require("yargs"));
17
+ const helpers_1 = require("yargs/helpers");
18
+ const api_1 = require("./api/api");
19
+ const config_1 = __importDefault(require("./config"));
20
+ const device_1 = __importDefault(require("./device"));
21
+ const electrical_broadband_1 = __importDefault(require("./nodes/electrical_broadband"));
22
+ const optical_stimulation_1 = __importDefault(require("./nodes/optical_stimulation"));
23
+ const stream_in_1 = __importDefault(require("./nodes/stream_in"));
24
+ const stream_out_1 = __importDefault(require("./nodes/stream_out"));
25
+ const discover_1 = require("./utils/discover");
26
+ const enum_1 = require("./utils/enum");
27
+ const cli = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
28
+ .help()
29
+ .command("discover", "Discover synapse devices")
30
+ .command("read", "Read from StreamOut node", {
31
+ "multicast-group": {
32
+ alias: "m",
33
+ type: "string",
34
+ description: "Multicast group",
35
+ },
36
+ output: {
37
+ alias: "o",
38
+ type: "string",
39
+ description: "Output file",
40
+ },
41
+ uri: {
42
+ alias: "u",
43
+ type: "string",
44
+ demandOption: true,
45
+ },
46
+ })
47
+ .command("write", "Write to StreamIn node", {
48
+ input: {
49
+ alias: "i",
50
+ type: "string",
51
+ description: "Input file",
52
+ },
53
+ uri: {
54
+ alias: "u",
55
+ type: "string",
56
+ demandOption: true,
57
+ },
58
+ });
59
+ const info = (device) => __awaiter(void 0, void 0, void 0, function* () {
60
+ var _a, _b;
61
+ console.log("Info()");
62
+ const info = yield device.info();
63
+ const { serial, name, status, synapseVersion, firmwareVersion, peripherals, configuration } = info;
64
+ console.log(` - serial: ${serial}`);
65
+ console.log(` - name: ${name}`);
66
+ console.log(` - synapse version: ${synapseVersion || "<unknown>"}`);
67
+ console.log(` - firmware version: ${firmwareVersion || "<unknown>"}`);
68
+ console.log(` - status: ${status.code} (${(0, enum_1.getName)(api_1.synapse.StatusCode, status.code)})${status.message ? `: "${status.message}"` : ""}`);
69
+ console.log(` - state: ${(0, enum_1.getName)(api_1.synapse.DeviceState, status.state)}`);
70
+ console.log(` - sockets: ${((_a = status.sockets) === null || _a === void 0 ? void 0 : _a.length) || 0}`);
71
+ (_b = status.sockets) === null || _b === void 0 ? void 0 : _b.forEach(({ nodeId, bind }) => {
72
+ console.log(` - node [${nodeId}] ${bind}`);
73
+ });
74
+ console.log(` - peripherals: ${(peripherals === null || peripherals === void 0 ? void 0 : peripherals.length) || 0}`);
75
+ peripherals === null || peripherals === void 0 ? void 0 : peripherals.forEach(({ name, peripheralId: id, vendor }) => {
76
+ console.log(` - [${id}] ${name} (${vendor})`);
77
+ });
78
+ if (configuration) {
79
+ const { nodes } = configuration;
80
+ console.log(` - configuration:`);
81
+ console.log(` - nodes: ${(nodes === null || nodes === void 0 ? void 0 : nodes.length) || 0}`);
82
+ nodes === null || nodes === void 0 ? void 0 : nodes.forEach(({ id, type }) => {
83
+ console.log(` - [${id}] (${(0, enum_1.getName)(api_1.synapse.NodeType, type)})`);
84
+ });
85
+ }
86
+ return true;
87
+ });
88
+ const read = (device, argv) => __awaiter(void 0, void 0, void 0, function* () {
89
+ console.log("Reading from device's StreamOut node...");
90
+ const { multicastGroup, output } = argv;
91
+ let ok = true;
92
+ let stream = null;
93
+ if (output) {
94
+ console.log(`Writing to file: ${output}`);
95
+ stream = fs_1.default.createWriteStream(output);
96
+ }
97
+ const onMessage = (msg) => {
98
+ const value = msg.readUInt32BE();
99
+ console.log(`StreamOut | recv: ${value}`);
100
+ if (stream) {
101
+ stream.write(msg);
102
+ }
103
+ };
104
+ const config = new config_1.default();
105
+ const nodeEphys = new electrical_broadband_1.default({
106
+ peripheralId: 3,
107
+ channels: [{ id: 0, referenceId: 0, electrodeId: 1 }],
108
+ bitWidth: 12,
109
+ sampleRate: 16000,
110
+ });
111
+ const nodeStreamOut = new stream_out_1.default({
112
+ multicastGroup,
113
+ }, onMessage);
114
+ ok = config.add([nodeEphys, nodeStreamOut]);
115
+ ok = config.connect(nodeEphys, nodeStreamOut);
116
+ if (!ok) {
117
+ console.error("Failed to connect nodes");
118
+ return;
119
+ }
120
+ console.log("Configuring device...");
121
+ try {
122
+ ok = yield device.configure(config);
123
+ }
124
+ catch (e) {
125
+ console.error(e);
126
+ return;
127
+ }
128
+ console.log("Starting device...");
129
+ try {
130
+ ok = yield device.start();
131
+ }
132
+ catch (e) {
133
+ console.error(e);
134
+ return;
135
+ }
136
+ nodeStreamOut.start();
137
+ let running = true;
138
+ process.on("SIGINT", function () {
139
+ if (!running) {
140
+ return;
141
+ }
142
+ running = false;
143
+ nodeStreamOut.stop();
144
+ device.stop();
145
+ });
146
+ });
147
+ const write = (device, argv) => __awaiter(void 0, void 0, void 0, function* () {
148
+ const { input } = argv;
149
+ if (input && !fs_1.default.existsSync(input)) {
150
+ console.error(`File not found: ${input}`);
151
+ return;
152
+ }
153
+ console.log("Writing to device's StreamOut node...");
154
+ let ok = true;
155
+ const config = new config_1.default();
156
+ const nodeStreamIn = new stream_in_1.default({
157
+ dataType: api_1.synapse.DataType.kBroadband,
158
+ });
159
+ const nodeOptical = new optical_stimulation_1.default();
160
+ ok = config.add([nodeStreamIn, nodeOptical]);
161
+ ok = config.connect(nodeStreamIn, nodeOptical);
162
+ if (!ok) {
163
+ console.error("Failed to connect nodes");
164
+ return;
165
+ }
166
+ console.log("Configuring device...");
167
+ try {
168
+ ok = yield device.configure(config);
169
+ }
170
+ catch (e) {
171
+ console.error(e);
172
+ return;
173
+ }
174
+ console.log("Starting device...");
175
+ try {
176
+ ok = yield device.start();
177
+ }
178
+ catch (e) {
179
+ console.error(e);
180
+ return;
181
+ }
182
+ let running = true;
183
+ process.on("SIGINT", function () {
184
+ console.log("SIGINT", running);
185
+ if (!running)
186
+ return;
187
+ console.log("stopping...");
188
+ running = false;
189
+ device.stop();
190
+ process.exit();
191
+ });
192
+ if (input) {
193
+ console.log(`Reading from file: ${input}`);
194
+ fs_1.default.open(input, "r", (err, fd) => {
195
+ console.log("Opened file");
196
+ const kBufSize = 4;
197
+ const buffer = Buffer.alloc(kBufSize);
198
+ if (err) {
199
+ console.error(err);
200
+ return;
201
+ }
202
+ const read = () => {
203
+ if (!running) {
204
+ fs_1.default.close(fd, () => { });
205
+ return;
206
+ }
207
+ fs_1.default.read(fd, buffer, 0, kBufSize, null, (err, n) => {
208
+ if (err) {
209
+ console.error(err);
210
+ return;
211
+ }
212
+ if (n === 0) {
213
+ return;
214
+ }
215
+ console.log(`StreamIn | send: ${buffer.readUInt32BE()}`);
216
+ nodeStreamIn.write(buffer.slice(0, n));
217
+ read();
218
+ });
219
+ };
220
+ read();
221
+ });
222
+ return;
223
+ }
224
+ let i = 0;
225
+ const kInterval = 1;
226
+ const buffer = Buffer.alloc(4);
227
+ const write = () => {
228
+ if (!running) {
229
+ device.stop();
230
+ return;
231
+ }
232
+ buffer.writeUInt32BE(i++);
233
+ nodeStreamIn.write(buffer);
234
+ setTimeout(write, kInterval);
235
+ };
236
+ setTimeout(write, kInterval);
237
+ });
238
+ const main = () => __awaiter(void 0, void 0, void 0, function* () {
239
+ const argv = cli.parseSync();
240
+ if (argv._.includes("discover")) {
241
+ const devices = yield (0, discover_1.discover)();
242
+ for (const device of devices) {
243
+ console.log(`${device.host}:${device.port} ${device.capability} ${device.name} (${device.serial})`);
244
+ }
245
+ return;
246
+ }
247
+ const { uri } = argv;
248
+ if (!uri) {
249
+ console.error("Missing URI");
250
+ return;
251
+ }
252
+ console.log(`Connecting to device @ ${uri}`);
253
+ const device = new device_1.default(uri);
254
+ try {
255
+ yield info(device);
256
+ }
257
+ catch (e) {
258
+ console.error(e);
259
+ return;
260
+ }
261
+ if (argv._.includes("read")) {
262
+ return read(device, argv);
263
+ }
264
+ if (argv._.includes("write")) {
265
+ return write(device, argv);
266
+ }
267
+ });
268
+ main();
269
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Channel } from "@grpc/grpc-js";
2
+ import { synapse } from "./api/api";
3
+ import Config from "./config";
4
+ declare class Device {
5
+ uri: string;
6
+ rpc: any | null;
7
+ channel: Channel | null;
8
+ sockets: synapse.INodeSocket[];
9
+ constructor(uri: string);
10
+ configure(config: Config): Promise<boolean>;
11
+ info(): Promise<synapse.DeviceInfo>;
12
+ start(): Promise<boolean>;
13
+ stop(): Promise<boolean>;
14
+ _handleStatusResponse(status: synapse.Status): boolean;
15
+ }
16
+ export default Device;
17
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAI9B,cAAM,MAAM;IAKS,GAAG,EAAE,MAAM;IAJ9B,GAAG,EAAE,GAAG,GAAG,IAAI,CAAQ;IACvB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IAC/B,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAM;gBAEjB,GAAG,EAAE,MAAM;IAOxB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3C,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;IAYnC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBzB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB9B,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO;CASvD;AAED,eAAe,MAAM,CAAC"}
package/dist/device.js ADDED
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const grpc_js_1 = require("@grpc/grpc-js");
13
+ const api_1 = require("./api/api");
14
+ const client_1 = require("./utils/client");
15
+ const enum_1 = require("./utils/enum");
16
+ class Device {
17
+ constructor(uri) {
18
+ this.uri = uri;
19
+ this.rpc = null;
20
+ this.channel = null;
21
+ this.sockets = [];
22
+ this.rpc = (0, client_1.create)(uri, grpc_js_1.credentials.createInsecure());
23
+ if (!this.rpc) {
24
+ throw new Error(`Failed to create client for ${uri}`);
25
+ }
26
+ }
27
+ configure(config) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return new Promise((resolve, reject) => {
30
+ config.setDevice(this);
31
+ const proto = config.toProto();
32
+ this.rpc.configure(proto, (err, res) => {
33
+ if (err) {
34
+ reject(err);
35
+ }
36
+ else {
37
+ if (this._handleStatusResponse(res)) {
38
+ resolve(true);
39
+ }
40
+ else {
41
+ reject(`Error configuring device: (code: ${(0, enum_1.getName)(api_1.synapse.StatusCode, res.code)}) ${res.message}`);
42
+ }
43
+ }
44
+ });
45
+ });
46
+ });
47
+ }
48
+ info() {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ return new Promise((resolve, reject) => {
51
+ this.rpc.info({}, (err, res) => {
52
+ if (err) {
53
+ reject(err);
54
+ }
55
+ else {
56
+ resolve(res);
57
+ }
58
+ });
59
+ });
60
+ });
61
+ }
62
+ start() {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ return new Promise((resolve, reject) => {
65
+ this.rpc.start({}, (err, res) => {
66
+ if (err) {
67
+ reject(err);
68
+ }
69
+ else {
70
+ if (this._handleStatusResponse(res)) {
71
+ resolve(true);
72
+ }
73
+ else {
74
+ reject(`Error starting device: (code: ${(0, enum_1.getName)(api_1.synapse.StatusCode, res.code)}) ${res.message}`);
75
+ }
76
+ }
77
+ });
78
+ });
79
+ });
80
+ }
81
+ stop() {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ return new Promise((resolve, reject) => {
84
+ this.rpc.stop({}, (err, res) => {
85
+ if (err) {
86
+ reject(err);
87
+ }
88
+ else {
89
+ if (this._handleStatusResponse(res)) {
90
+ resolve(true);
91
+ }
92
+ else {
93
+ reject(`Error stopping device: (code: ${(0, enum_1.getName)(api_1.synapse.StatusCode, res.code)}) ${res.message}`);
94
+ }
95
+ }
96
+ });
97
+ });
98
+ });
99
+ }
100
+ _handleStatusResponse(status) {
101
+ const { code, sockets } = status;
102
+ if (code && code !== api_1.synapse.StatusCode.kOk) {
103
+ return false;
104
+ }
105
+ else {
106
+ this.sockets = sockets || [];
107
+ return true;
108
+ }
109
+ }
110
+ }
111
+ exports.default = Device;
112
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { default as Config } from "./config";
2
+ export { default as Device } from "./device";
3
+ export * from "./nodes";
4
+ export { synapse } from "./api/api";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.synapse = exports.Device = exports.Config = void 0;
21
+ var config_1 = require("./config");
22
+ Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return __importDefault(config_1).default; } });
23
+ var device_1 = require("./device");
24
+ Object.defineProperty(exports, "Device", { enumerable: true, get: function () { return __importDefault(device_1).default; } });
25
+ __exportStar(require("./nodes"), exports);
26
+ var api_1 = require("./api/api");
27
+ Object.defineProperty(exports, "synapse", { enumerable: true, get: function () { return api_1.synapse; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,0CAAwB;AACxB,iCAAoC;AAA3B,8FAAA,OAAO,OAAA"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { synapse } from "./api/api";
2
+ import Device from "./device";
3
+ declare class Node {
4
+ id?: number;
5
+ type: synapse.NodeType;
6
+ device: Device | null;
7
+ toProto(config?: synapse.INodeConfig): synapse.NodeConfig;
8
+ }
9
+ export default Node;
10
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,cAAM,IAAI;IACR,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAqC;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,OAAO,CAAC,MAAM,GAAE,OAAO,CAAC,WAAgB,GAAG,OAAO,CAAC,UAAU;CAO9D;AAED,eAAe,IAAI,CAAC"}