|
1 | | -import type {LynxModule} from "./index"; |
| 1 | +import type {LynxModule, MotorLynxModule} from "./index"; |
2 | 2 | import {create} from "xmlbuilder2"; |
3 | 3 | import type {XMLBuilder} from "xmlbuilder2/lib/interfaces"; |
4 | 4 |
|
5 | 5 | export interface CodeBuilder { |
6 | | - build(controlHub: LynxModule, expansionHub: LynxModule): string; |
| 6 | + build(controlHub: MotorLynxModule, expansionHub: MotorLynxModule, servoHub: LynxModule): string; |
7 | 7 | } |
8 | 8 |
|
9 | 9 | class XmlBuilder implements CodeBuilder { |
10 | | - build(controlHub: LynxModule, expansionHub: LynxModule): string { |
| 10 | + build(controlHub: MotorLynxModule, expansionHub: MotorLynxModule, servoHub: LynxModule): string { |
11 | 11 | const doc = create({version: '1.0', standalone: true, encoding: "UTF-8"}) |
12 | 12 | .ele("Robot", {type: "FirstInspires-FTC"}) |
13 | 13 | .ele("LynxUsbDevice", {name: "Control Hub Portal", serialNumber: "(embedded)", parentModuleAddress: 173}) |
14 | 14 | const controlHubBuilder = doc.ele("LynxModule", {name: "Control Hub", port: 173}); |
15 | | - XmlBuilder.buildLynxModule(controlHubBuilder, controlHub); |
| 15 | + XmlBuilder.buildMotorLynxModule(controlHubBuilder, controlHub); |
16 | 16 | const expansionHubBuilder = doc.ele("LynxModule", {name: "Expansion Hub 0", port: 0}); |
17 | | - XmlBuilder.buildLynxModule(expansionHubBuilder, expansionHub); |
| 17 | + XmlBuilder.buildMotorLynxModule(expansionHubBuilder, expansionHub); |
| 18 | + const servoHubBuilder = doc.ele("LynxModule", {name: "Servo Hub 1", port: 1}); |
| 19 | + XmlBuilder.buildLynxModule(servoHubBuilder, servoHub); |
| 20 | + |
18 | 21 | return doc.end({prettyPrint: true}); |
19 | 22 | } |
20 | 23 |
|
21 | 24 | private static buildLynxModule(doc: XMLBuilder, module: LynxModule) { |
| 25 | + for (const servo of module.servos) { |
| 26 | + doc.ele(servo.type.type, {name: servo.name, port: servo.port}); |
| 27 | + } |
| 28 | + } |
| 29 | + |
| 30 | + private static buildMotorLynxModule(doc: XMLBuilder, module: MotorLynxModule) { |
22 | 31 | for (const motor of module.motors) { |
23 | 32 | doc.ele(motor.type.type, {name: motor.name, port: motor.port}); |
24 | 33 | } |
|
0 commit comments