OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::DevFan Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevFan.h>

Collaboration diagram for Slic3r::DevFan:

Public Types

enum  FanType {
  COOLING_FAN = 1 , BIG_COOLING_FAN = 2 , CHAMBER_FAN = 3 , EXHAUST_FAN ,
  FILTER_FAN
}

Public Member Functions

 DevFan (MachineObject *obj)
bool is_at_heating_mode () const
bool is_at_cooling_mode () const
void SetSupportCoolingFilter (bool enable)
AirDuctData GetAirDuctData ()
void converse_to_duct (bool is_suppt_part_fun, bool is_suppt_aux_fun, bool is_suppt_cham_fun)
int command_handle_response (const nlohmann::json &response)
int command_control_fan (int fan_type, int val)
int command_control_fan_new (int fan_id, int val)
int command_control_air_duct (int mode_id, int submode, const CommandCallBack &cb)
void ParseV1_0 (const nlohmann::json &print_json)
void ParseV2_0 (const nlohmann::json &print_json)
void ParseV3_0 (const nlohmann::json &print_json)
bool GetSupportAirduct ()
bool GetSupportAuxFanData ()
bool GetSupportChamberFan ()
int GetHeatBreakFanSpeed ()
int GetCoolingFanSpeed ()
int GetBigFan1Speed ()
int GetBigFan2Speed ()
uint32_t GetFanGear ()

Private Attributes

AirDuctData m_air_duct_data
bool is_support_aux_fan {false}
bool is_support_chamber_fan {false}
bool is_support_airduct {false}
int heatbreak_fan_speed = 0
int cooling_fan_speed = 0
int big_fan1_speed = 0
int big_fan2_speed = 0
uint32_t fan_gear = 0
std::map< std::string, CommandCallBack > m_callback_list
MachineObject * m_owner = nullptr

Detailed Description

Member Enumeration Documentation

◆ FanType

Enumerator
COOLING_FAN 
BIG_COOLING_FAN 
CHAMBER_FAN 
EXHAUST_FAN 
FILTER_FAN 
110 {//if have devPrinter , delete?
111 COOLING_FAN = 1,
112 BIG_COOLING_FAN = 2,
113 CHAMBER_FAN = 3,
116 };
@ CHAMBER_FAN
Definition DevFan.h:113
@ FILTER_FAN
Definition DevFan.h:115
@ EXHAUST_FAN
Definition DevFan.h:114
@ COOLING_FAN
Definition DevFan.h:111
@ BIG_COOLING_FAN
Definition DevFan.h:112

Constructor & Destructor Documentation

◆ DevFan()

Slic3r::DevFan::DevFan ( MachineObject * obj)
inline
107: m_owner(obj){};
MachineObject * m_owner
Definition DevFan.h:160

References m_owner.

Member Function Documentation

◆ command_control_air_duct()

int Slic3r::DevFan::command_control_air_duct ( int mode_id,
int submode,
const CommandCallBack & cb )
92{
93 BOOST_LOG_TRIVIAL(info) << "MachineObject::command_control_air_duct, set air duct, d = " << mode_id;
94 m_callback_list[std::to_string(m_owner->m_sequence_id)] = cb;
95 json j;
96 j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
97 j["print"]["command"] = "set_airduct";
98 j["print"]["modeId"] = mode_id;
99 j["print"]["submode"] = submode;
100
101 return m_owner->publish_json(j);
102}
std::map< std::string, CommandCallBack > m_callback_list
Definition DevFan.h:158
static int m_sequence_id
Definition DeviceManager.hpp:197
nlohmann::json json
Definition AssembleList.cpp:42

References m_callback_list, m_owner, and Slic3r::MachineObject::m_sequence_id.

◆ command_control_fan()

int Slic3r::DevFan::command_control_fan ( int fan_type,
int val )
54{
55 // Orca: strip analytics telemetry
56 std::string gcode = (boost::format("M106 P%1% S%2% \n") % (int) fan_type % (val)).str();
57 return m_owner->publish_gcode(gcode);
58}
@ gcode
Definition Time.hpp:14

References m_owner.

◆ command_control_fan_new()

int Slic3r::DevFan::command_control_fan_new ( int fan_id,
int val )
62{
63 BOOST_LOG_TRIVIAL(info) << "New protocol of fan setting(set speed), fan_id = " << fan_id;
64 json j;
65 j["print"]["command"] = "set_fan";
66 j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
67 j["print"]["fan_index"] = fan_id;
68
69 j["print"]["speed"] = val;
70 BOOST_LOG_TRIVIAL(info) << "MachineObject::command_control_fan_val, set the speed of fan, fan_id = " << fan_id;
71 return m_owner->publish_json(j);
72}

References m_owner, and Slic3r::MachineObject::m_sequence_id.

◆ command_handle_response()

int Slic3r::DevFan::command_handle_response ( const nlohmann::json & response)
76{
77 if (!response.contains("sequence_id")) {
78 BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ", error reponse.";
79 return -1;
80 }
81
82 std::string reply = response["sequence_id"].get<std::string>();
83 auto it = m_callback_list.find(reply);
84 if (it != m_callback_list.end()) {
85 if (it->second) it->second(response);
86 m_callback_list.erase(it);
87 }
88 return 0;
89}

References m_callback_list.

◆ converse_to_duct()

void Slic3r::DevFan::converse_to_duct ( bool is_suppt_part_fun,
bool is_suppt_aux_fun,
bool is_suppt_cham_fun )
13{
14 m_air_duct_data.modes.clear();
15 m_air_duct_data.parts.clear();
16 m_air_duct_data.curren_mode = -1; // def mode
17
18 if (is_suppt_part_fun) {
19 AirParts part_fan;
20 part_fan.type = int(AirDuctType::AIR_FAN_TYPE);
21 part_fan.id = int(AIR_FUN::FAN_COOLING_0_AIRDOOR);
22 part_fan.func = int(AIR_FUN::FAN_COOLING_0_AIRDOOR);
23 part_fan.state = 0;
24 part_fan.range_start = 0;
25 part_fan.range_end = 100;
26 m_air_duct_data.parts.push_back(part_fan);
27 }
28
29 if (is_suppt_aux_fun) {
30 AirParts aux_fan;
31 aux_fan.type = int(AirDuctType::AIR_FAN_TYPE);
32 aux_fan.id = int(AIR_FUN::FAN_REMOTE_COOLING_0_IDX);
33 aux_fan.func = int(AIR_FUN::FAN_REMOTE_COOLING_0_IDX);
34 aux_fan.state = 0;
35 aux_fan.range_start = 0;
36 aux_fan.range_end = 100;
37 m_air_duct_data.parts.push_back(aux_fan);
38 }
39
40 if (is_suppt_aux_fun) {
41 AirParts chamber_fan;
42 chamber_fan.type = int(AirDuctType::AIR_FAN_TYPE);
43 chamber_fan.id = int(AIR_FUN::FAN_CHAMBER_0_IDX);
44 chamber_fan.func = int(AIR_FUN::FAN_CHAMBER_0_IDX);
45 chamber_fan.state = 0;
46 chamber_fan.range_start = 0;
47 chamber_fan.range_end = 100;
48 m_air_duct_data.parts.push_back(chamber_fan);
49 }
50}
AirDuctData m_air_duct_data
Definition DevFan.h:146
@ AIR_FAN_TYPE
Definition DevFan.h:14
@ FAN_COOLING_0_AIRDOOR
Definition DevFan.h:19
@ FAN_REMOTE_COOLING_0_IDX
Definition DevFan.h:20
@ FAN_CHAMBER_0_IDX
Definition DevFan.h:21

References Slic3r::AIR_FAN_TYPE, Slic3r::FAN_CHAMBER_0_IDX, Slic3r::FAN_COOLING_0_AIRDOOR, Slic3r::FAN_REMOTE_COOLING_0_IDX, Slic3r::AirParts::func, Slic3r::AirParts::id, m_air_duct_data, Slic3r::AirParts::range_end, Slic3r::AirParts::range_start, Slic3r::AirParts::state, and Slic3r::AirParts::type.

◆ GetAirDuctData()

AirDuctData Slic3r::DevFan::GetAirDuctData ( )
inline
122{ return m_air_duct_data; };

References m_air_duct_data.

Referenced by Slic3r::GUI::FanControlPopupNew::update_fan_data(), and Slic3r::GUI::PrintOptionsDialog::update_purify_air_at_print_end().

Here is the caller graph for this function:

◆ GetBigFan1Speed()

int Slic3r::DevFan::GetBigFan1Speed ( )
inline
140{ return big_fan1_speed; }
int big_fan1_speed
Definition DevFan.h:154

References big_fan1_speed.

Referenced by Slic3r::GUI::FanControlPopupNew::update_fan_data().

Here is the caller graph for this function:

◆ GetBigFan2Speed()

int Slic3r::DevFan::GetBigFan2Speed ( )
inline
141{ return big_fan2_speed; }
int big_fan2_speed
Definition DevFan.h:155

References big_fan2_speed.

Referenced by Slic3r::GUI::FanControlPopupNew::update_fan_data().

Here is the caller graph for this function:

◆ GetCoolingFanSpeed()

int Slic3r::DevFan::GetCoolingFanSpeed ( )
inline
139{ return cooling_fan_speed; }
int cooling_fan_speed
Definition DevFan.h:153

References cooling_fan_speed.

Referenced by Slic3r::GUI::FanControlPopupNew::update_fan_data().

Here is the caller graph for this function:

◆ GetFanGear()

uint32_t Slic3r::DevFan::GetFanGear ( )
inline
142{ return fan_gear; }
uint32_t fan_gear
Definition DevFan.h:156

References fan_gear.

◆ GetHeatBreakFanSpeed()

int Slic3r::DevFan::GetHeatBreakFanSpeed ( )
inline
138{ return heatbreak_fan_speed; }
int heatbreak_fan_speed
Definition DevFan.h:152

References heatbreak_fan_speed.

◆ GetSupportAirduct()

bool Slic3r::DevFan::GetSupportAirduct ( )
inline
135{ return is_support_airduct; };
bool is_support_airduct
Definition DevFan.h:150

References is_support_airduct.

◆ GetSupportAuxFanData()

bool Slic3r::DevFan::GetSupportAuxFanData ( )
inline
136{ return is_support_aux_fan; };
bool is_support_aux_fan
Definition DevFan.h:148

References is_support_aux_fan.

◆ GetSupportChamberFan()

bool Slic3r::DevFan::GetSupportChamberFan ( )
inline
137{ return is_support_aux_fan; };

References is_support_aux_fan.

◆ is_at_cooling_mode()

bool Slic3r::DevFan::is_at_cooling_mode ( ) const
inline
119{ return m_air_duct_data.curren_mode == AIR_DUCT_COOLING_FILT; };
@ AIR_DUCT_COOLING_FILT
Definition DevFan.h:34

References Slic3r::AIR_DUCT_COOLING_FILT, and m_air_duct_data.

◆ is_at_heating_mode()

bool Slic3r::DevFan::is_at_heating_mode ( ) const
inline
118{ return m_air_duct_data.curren_mode == AIR_DUCT_HEATING_INTERNAL_FILT; };
@ AIR_DUCT_HEATING_INTERNAL_FILT
Definition DevFan.h:35

References Slic3r::AIR_DUCT_HEATING_INTERNAL_FILT, and m_air_duct_data.

◆ ParseV1_0()

void Slic3r::DevFan::ParseV1_0 ( const nlohmann::json & print_json)
105{
106 if (print_json.contains("fan_gear")) {
107 fan_gear = print_json["fan_gear"].get<std::uint32_t>();
108 big_fan2_speed = (int) ((fan_gear & 0x00FF0000) >> 16);
109 big_fan1_speed = (int) ((fan_gear & 0x0000FF00) >> 8);
110 cooling_fan_speed = (int) ((fan_gear & 0x000000FF) >> 0);
111 } else {
112 if (print_json.contains("cooling_fan_speed")) {
113 cooling_fan_speed = stoi(print_json["cooling_fan_speed"].get<std::string>());
114 cooling_fan_speed = round(floor(cooling_fan_speed / float(1.5)) * float(25.5));
115 } else {
117 }
118 if (print_json.contains("big_fan1_speed")) {
119 big_fan1_speed = stoi(print_json["big_fan1_speed"].get<std::string>());
120 big_fan1_speed = round(floor(big_fan1_speed / float(1.5)) * float(25.5));
121 } else {
122 big_fan1_speed = 0;
123 }
124 if (print_json.contains("big_fan2_speed")) {
125 big_fan2_speed = stoi(print_json["big_fan2_speed"].get<std::string>());
126 big_fan2_speed = round(floor(big_fan2_speed / float(1.5)) * float(25.5));
127 } else {
128 big_fan2_speed = 0;
129 }
130 }
131
132 if (print_json.contains("heatbreak_fan_speed")) { heatbreak_fan_speed = stoi(print_json["heatbreak_fan_speed"].get<std::string>()); }
133
134
135
136}

References big_fan1_speed, big_fan2_speed, cooling_fan_speed, fan_gear, and heatbreak_fan_speed.

◆ ParseV2_0()

void Slic3r::DevFan::ParseV2_0 ( const nlohmann::json & print_json)
138 {
139
140 if (print_json.contains("support_aux_fan")) {
141 if (print_json["support_aux_fan"].is_boolean())
142 is_support_aux_fan = print_json["support_aux_fan"].get<bool>();
143 }
144
145 if (print_json.contains("support_chamber_fan")) {
146 if (print_json["support_chamber_fan"].is_boolean())
147 is_support_chamber_fan = print_json["support_chamber_fan"].get<bool>();
148 }
149}
bool is_support_chamber_fan
Definition DevFan.h:149

References is_support_aux_fan, and is_support_chamber_fan.

◆ ParseV3_0()

void Slic3r::DevFan::ParseV3_0 ( const nlohmann::json & print_json)
155{
156 if (device.contains("airduct")) {
157 is_support_airduct = true;
158 m_air_duct_data.curren_mode = -1;
159 m_air_duct_data.modes.clear();
160 m_air_duct_data.parts.clear();
161
162 const json &airduct = device["airduct"];
163 if (airduct.contains("modeCur")) { m_air_duct_data.curren_mode = airduct["modeCur"].get<int>(); }
164 if (airduct.contains("subMode")) { m_air_duct_data.m_sub_mode = airduct["subMode"].get<int>(); }
165 if (airduct.contains("modeList") && airduct["modeList"].is_array()) {
166 auto list = airduct["modeList"].get<std::vector<json>>();
167
168 for (int i = 0; i < list.size(); ++i) {
169 // only show 2 mode for o
170 if (m_owner->is_series_o() && i >= 2) { break; }
171
172 json mode_json = list[i];
173 AirMode mode;
174 if (mode_json.contains("modeId")) mode.id = mode_json["modeId"].get<int>();
175 if (mode_json.contains("ctrl")) {
176 for (auto it_mode_ctrl = mode_json["ctrl"].begin(); it_mode_ctrl != mode_json["ctrl"].end(); it_mode_ctrl++) {
177 mode.ctrl.push_back((*it_mode_ctrl).get<int>() >> 4);
178 }
179 }
180
181 if (mode_json.contains("off")) {
182 for (auto it_mode_off = mode_json["off"].begin(); it_mode_off != mode_json["off"].end(); *it_mode_off++) {
183 mode.off.push_back((*it_mode_off).get<int>() >> 4);
184 }
185 }
186
187 if (AIR_DUCT(mode.id) == AIR_DUCT::AIR_DUCT_EXHAUST) { continue; }
188 m_air_duct_data.modes[mode.id] = mode;
189 }
190 }
191
192 if (airduct.contains("parts") && airduct["parts"].is_array()) {
193 for (auto it_part = airduct["parts"].begin(); it_part != airduct["parts"].end(); it_part++) {
194 int state = (*it_part)["state"].get<int>();
195 int range = (*it_part)["range"].get<int>();
196
197 AirParts part;
198 part.type = m_owner->get_flag_bits((*it_part)["id"].get<int>(), 0, 4);
199 part.id = m_owner->get_flag_bits((*it_part)["id"].get<int>(), 4, 8);
200 part.func = (*it_part)["func"].get<int>();
201 part.state = m_owner->get_flag_bits(state, 0, 8);
202 part.range_start = m_owner->get_flag_bits(range, 0, 16);
203 part.range_end = m_owner->get_flag_bits(range, 16, 16);
204
205 m_air_duct_data.parts.push_back(part);
206 }
207 }
208 }
209
210}
T * begin(Slic3r::Mat< N, M, T > &mat)
Definition Point.hpp:838
auto range(Cont &&cont)
Definition libslic3r.h:405
AIR_DUCT
Definition DevFan.h:32
@ AIR_DUCT_EXHAUST
Definition DevFan.h:36

References Slic3r::AIR_DUCT_EXHAUST, Slic3r::AirMode::ctrl, Slic3r::AirMode::id, is_support_airduct, m_air_duct_data, m_owner, Slic3r::AirMode::off, Slic3r::range(), and Slic3r::AirParts::type.

Here is the call graph for this function:

◆ SetSupportCoolingFilter()

void Slic3r::DevFan::SetSupportCoolingFilter ( bool enable)
inline
121{ m_air_duct_data.m_support_cooling_filter = enable; }

References m_air_duct_data.

Member Data Documentation

◆ big_fan1_speed

int Slic3r::DevFan::big_fan1_speed = 0
private

Referenced by GetBigFan1Speed(), and ParseV1_0().

◆ big_fan2_speed

int Slic3r::DevFan::big_fan2_speed = 0
private

Referenced by GetBigFan2Speed(), and ParseV1_0().

◆ cooling_fan_speed

int Slic3r::DevFan::cooling_fan_speed = 0
private

Referenced by GetCoolingFanSpeed(), and ParseV1_0().

◆ fan_gear

uint32_t Slic3r::DevFan::fan_gear = 0
private

Referenced by GetFanGear(), and ParseV1_0().

◆ heatbreak_fan_speed

int Slic3r::DevFan::heatbreak_fan_speed = 0
private

Referenced by GetHeatBreakFanSpeed(), and ParseV1_0().

◆ is_support_airduct

bool Slic3r::DevFan::is_support_airduct {false}
private
150{false};

Referenced by GetSupportAirduct(), and ParseV3_0().

◆ is_support_aux_fan

bool Slic3r::DevFan::is_support_aux_fan {false}
private
148{false};

Referenced by GetSupportAuxFanData(), GetSupportChamberFan(), and ParseV2_0().

◆ is_support_chamber_fan

bool Slic3r::DevFan::is_support_chamber_fan {false}
private
149{false};

Referenced by ParseV2_0().

◆ m_air_duct_data

◆ m_callback_list

std::map<std::string, CommandCallBack> Slic3r::DevFan::m_callback_list
private

◆ m_owner


The documentation for this class was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevFan.h
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevFan.cpp