mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-06 07:11:10 +00:00
* Ignore Clipper, libpng, mcut and Boost.Polygon Internals in clang-tidy Each only works through a wrapper or umbrella header: libslic3r/clipper.hpp or clipper_z.hpp configure Clipper before including it, png.h pulls in libpng's config headers, and Boost.Polygon's headers only compile through polygon.hpp or voronoi.hpp. * Ignore minilzo's Config Headers in clang-tidy lzoconf.h and lzodefs.h are internal to minilzo.h, which is what the code includes. * Add Missing Includes Across the Remaining Sources and Tests Covers src/slic3r/Utils, src/slic3r/plugin, src/slic3r/Config, src/libvgcode, src/dev-utils, src/OrcaSlicer.cpp and tests/, the directories left after src/slic3r/GUI and src/libslic3r. Generated with clang-tidy misc-include-cleaner. libvgcode's own headers are included by relative path as in the rest of that library, and Catch2 and pybind11 with angle brackets as elsewhere in the repo. * Make the GUI and Test Headers Compile on Their Own Each now includes, or forward-declares, what it uses instead of relying on what its includers happened to include first. Headers that only compile on one platform, or that nothing built includes, are left alone. * Keep Windows and nanosvg Setup Ahead of the Added Includes OrcaSlicer.cpp and several tests set _WIN32_WINNT, WIN32_LEAN_AND_MEAN or NOMINMAX before including Windows.h, and the profile validator defines NANOSVG_IMPLEMENTATION before any libslic3r header. The added includes had landed above those blocks, which broke the Windows build. * Add the GUI Includes the First Pass Missed Covers headers that only became editable once they compiled on their own, and wx symbols whose suggested header changed as the clang-tidy ignore list grew after the src/slic3r/GUI pass. * Keep the Added Test Includes Below the NOMINMAX Guard test_marchingsquares.cpp and test_texture_displacement.cpp had includes inside #ifndef NOMINMAX, which the tests inherit as defined on Windows from libslic3r, so those were skipped there. .clang-tidy also ignores the MSVC STL and UCRT internals, Boost.Multiprecision's fwd.hpp and CPython's Windows include directory, as in #16068.
118 lines
5.7 KiB
C++
118 lines
5.7 KiB
C++
#ifndef __BBL_PRINTER_AGENT_HPP__
|
|
#define __BBL_PRINTER_AGENT_HPP__
|
|
|
|
#include "IPrinterAgent.hpp"
|
|
#include "ICloudServiceAgent.hpp"
|
|
#include "bambu_networking.hpp"
|
|
#include <functional>
|
|
#include <string>
|
|
#include <memory>
|
|
#include <nlohmann/json.hpp>
|
|
#include <vector>
|
|
|
|
namespace Slic3r {
|
|
|
|
/**
|
|
* BBLPrinterAgent - BBL DLL wrapper implementation of IPrinterAgent.
|
|
*
|
|
* Delegates all printer operations to the proprietary BBL network DLL
|
|
* through function pointers obtained from BBLNetworkPlugin singleton.
|
|
*/
|
|
class BBLPrinterAgent : public IPrinterAgent {
|
|
public:
|
|
BBLPrinterAgent();
|
|
~BBLPrinterAgent() override;
|
|
|
|
// Cloud Agent Dependency (not used by BBL - tokens managed internally)
|
|
void set_cloud_agent(std::shared_ptr<ICloudServiceAgent> cloud) override;
|
|
|
|
// ========================================================================
|
|
// IPrinterAgent Interface Implementation
|
|
// ========================================================================
|
|
|
|
// Communication
|
|
int send_message(std::string dev_id, std::string json_str, int qos, int flag) override;
|
|
int command_ams_refresh_rfid(std::string dev_id, int ams_id, int slot_id, int sequence_id, bool lan_mode) override;
|
|
int command_ams_calibrate(std::string dev_id, int ams_id, int sequence_id, bool lan_mode) override;
|
|
int command_ams_select_tray(std::string dev_id, std::string tray_id, int sequence_id, bool lan_mode) override;
|
|
int command_axis_control(std::string dev_id, std::string axis, double unit, double input_val, int speed,
|
|
bool is_core_xy, bool supports_mqtt_axis_control, int sequence_id, bool lan_mode) override;
|
|
std::string default_lan_username() const override { return "bblp"; }
|
|
int connect_printer(const PrinterConnectionParams& params) override;
|
|
int disconnect_printer() override;
|
|
int send_message_to_printer(std::string dev_id, std::string json_str, int qos, int flag) override;
|
|
|
|
// Certificates
|
|
int check_cert() override;
|
|
void install_device_cert(std::string dev_id, bool lan_only) override;
|
|
|
|
// Discovery
|
|
bool start_discovery(bool start, bool sending) override;
|
|
|
|
// Binding
|
|
int ping_bind(std::string ping_code) override;
|
|
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
|
int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
|
int unbind(std::string dev_id) override;
|
|
int request_bind_ticket(std::string* ticket) override;
|
|
int get_hms_snapshot(std::string dev_id, std::string file_name, std::function<void(std::string, int)> callback) override;
|
|
int set_server_callback(OnServerErrFn fn) override;
|
|
|
|
// Machine Selection
|
|
std::string get_user_selected_machine() override;
|
|
int set_user_selected_machine(std::string dev_id) override;
|
|
|
|
// Subscriptions
|
|
int start_subscribe(std::string module) override;
|
|
int stop_subscribe(std::string module) override;
|
|
int add_subscribe(std::vector<std::string> dev_list) override;
|
|
int del_subscribe(std::vector<std::string> dev_list) override;
|
|
|
|
/**
|
|
* Get agent information.
|
|
*
|
|
* @return AgentInfo struct containing agent identification and descriptive information
|
|
*/
|
|
static AgentInfo get_agent_info_static();
|
|
AgentInfo get_agent_info() override { return get_agent_info_static(); }
|
|
|
|
// Print Job Operations
|
|
int start_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) override;
|
|
int start_local_print_with_record(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) override;
|
|
int start_send_gcode_to_sdcard(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) override;
|
|
int start_local_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn) override;
|
|
int start_sdcard_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn) override;
|
|
|
|
// Callbacks
|
|
int set_on_ssdp_msg_fn(OnMsgArrivedFn fn) override;
|
|
int set_on_printer_connected_fn(OnPrinterConnectedFn fn) override;
|
|
int set_on_subscribe_failure_fn(GetSubscribeFailureFn fn) override;
|
|
int set_on_message_fn(OnMessageFn fn) override;
|
|
int set_on_user_message_fn(OnMessageFn fn) override;
|
|
int set_on_local_connect_fn(OnLocalConnectedFn fn) override;
|
|
int set_on_local_message_fn(OnMessageFn fn) override;
|
|
int set_queue_on_main_fn(QueueOnMainFn fn) override;
|
|
FilamentSyncMode get_filament_sync_mode() const override;
|
|
|
|
// Bambu's own catalog ids. Orca content-addresses every system filament, Bambu's included;
|
|
// the printer, the AMS and Bambu's cloud know only Bambu's ids, so this agent translates at
|
|
// the boundary through resources/printers/bambu_filament_ids.json (generated by
|
|
// scripts/update_bambu_filament_ids.py). An id without a map row is returned as it is.
|
|
std::string to_orca_filament_id(const std::string& printer_filament_id) const override;
|
|
std::string from_orca_filament_id(const std::string& orca_filament_id) const override;
|
|
|
|
// Rewrite every string under "tray_info_idx", "filament_id" or "filamentId", at any depth,
|
|
// in a JSON document (an MQTT payload or PrintParams::ams_mapping_info). Text that does not
|
|
// parse, or contains none of the keys, is returned unchanged.
|
|
// Taken by value: most outbound traffic carries no filament id and is moved straight back out.
|
|
static std::string to_orca_payload(std::string json_text);
|
|
static std::string from_orca_payload(std::string json_text);
|
|
|
|
private:
|
|
int publish(const std::string& dev_id, const nlohmann::json& j, bool lan_mode);
|
|
};
|
|
|
|
} // namespace Slic3r
|
|
|
|
#endif // __BBL_PRINTER_AGENT_HPP__
|