Add upload_project_file/send_gcode_line, real Marlin serial, Bambu protocol auto-detect
- GenericPrinter grows upload_project_file, send_gcode_line, and a generic upload_gcode<P> driver that streams a whole gcode file line by line through any vendor's send_gcode_line. - PrusaSerialPrinter's connect/send_gcode_line are real (not stubs): a held-open MarlinSerialConnection (src/printer/marlin_serial.rs) writes each line and waits for Marlin's "ok" before sending the next. Config changed from com_port: i16 to port: String + baud_rate: u32 to hold a real device path. - Bambu: BambuGenericPrinter + BambuV1Printer/BambuV2Printer collapsed into one BambuPrinter, since which MQTT/BambuMQTT version (v3.1.1/v1 vs v5/v2) a printer speaks is discovered at connect() time (or forced), not something config should pick a type for - the same physical printer can change after a firmware update. printers.toml gets a new "bambu" vendor (auto-detect, the default) alongside bambu_v1/bambu_v2 (force a specific one). - Bambu's gcode_line request is now built for real via continuum-schema-instance against continuum-schemas' JSON Schema, picking the v1 or v2 schema directory based on the detected protocol version, instead of a hand-written serde struct. - Added rumqttc as a dependency (not wired up yet - the real MQTT v5-then-v3.1.1 fallback connect and the publish/receive plumbing are still stubs).
This commit is contained in:
@@ -29,6 +29,15 @@ impl GenericPrinter for KlipperPrinter {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn publish(&mut self, payload: String) -> Result<(), PrinterError> {
|
||||
// TODO: add publishing via HTTP
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn receive(&mut self, payload: String) -> Result<(), PrinterError> {
|
||||
// TODO: add HTTP response handling
|
||||
Ok(())
|
||||
}
|
||||
/// OVERRIDE: Moonraker's own **hypothetical** native API, not gcode injection - no
|
||||
/// percent-to-PWM conversion needed since it already takes a
|
||||
/// percentage directly. Real version:
|
||||
@@ -37,4 +46,20 @@ impl GenericPrinter for KlipperPrinter {
|
||||
println!("[{}] Moonraker: SET_FAN_SPEED SPEED={:.2}", self.base.name, percent as f32 / 100.0);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// OVERRIDE: real version is a multipart `POST /server/files/upload`
|
||||
/// with `data` as the file part - Moonraker stores it on the printer's
|
||||
/// virtual SD card, same upload-then-start model as Bambu/PrusaLink.
|
||||
async fn upload_project_file(&mut self, file_name: String, data: Vec<u8>) -> Result<(), PrinterError> {
|
||||
println!("[{}] POST /server/files/upload {file_name} ({} bytes)", self.base.name, data.len());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// OVERRIDE: Moonraker's gcode-script endpoint, one line per call - same
|
||||
/// idea as `set_fan_speed`'s `SET_FAN_SPEED` call above, just with an
|
||||
/// arbitrary line instead of a hardcoded one.
|
||||
async fn send_gcode_line(&mut self, gcode_line: String) -> Result<(), PrinterError> {
|
||||
println!("[{}] POST /printer/gcode/script?script={gcode_line}", self.base.name);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user