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

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

Collaboration diagram for Slic3r::DevAms:

Classes

struct  DrySettings

Public Types

enum class  DryCtrlMode : int { Off = 0 , OnTime = 1 , OnHumidity = 2 }
enum class  DryStatus : char {
  Off = 0 , Checking = 1 , Drying = 2 , Cooling = 3 ,
  Stopping = 4 , Error = 5 , CannotStopHeatOutofControl = 6 , PrdTesting = 7
}
enum class  DrySubStatus { Off = 0 , Heating = 1 , Dehumidify = 2 }
enum class  DryFanStatus : char { Off = 0 , On = 1 }
enum class  CannotDryReason : int {
  TaskOccupied = 0 , InsufficientPower = 1 , AmsBusy = 2 , ConsumableAtAmsOutlet = 3 ,
  InitiatingAmsDrying = 4 , NotSupportedIn2dMode = 5 , DryingInProgress = 6 , Upgrading = 7 ,
  InsufficientPowerNeedPluginPower = 8 , FilamentAtAmsOutletManualUnload = 10
}
using AmsType = DevAmsType

Public Member Functions

 DevAms (const std::string &ams_id, int extruder_id, AmsType type)
 DevAms (const std::string &ams_id, int nozzle_id, int type)
 ~DevAms ()
std::string GetAmsId () const
wxString GetDisplayName () const
void SetAmsType (int type)
void SetAmsType (AmsType type)
AmsType GetAmsType () const
bool IsExist () const
bool IsAmsLiteMixed () const
int GetSlotCount () const
DevAmsTray * GetTray (const std::string &tray_id) const
const std::map< std::string, DevAmsTray * > & GetTrays () const
int GetExtruderId () const
const std::set< int > & GetBindedExtruderSet () const
std::optional< int > GetUniqueBindedExtruderId () const
std::optional< DevFilaSwitch::SwitchPos > GetSwitcherPos () const
float GetCurrentTemperature () const
bool SupportHumidity () const
int GetHumidityLevel () const
int GetHumidityPercent () const
bool SupportDrying () const
int GetLeftDryTime () const
bool IsSupportRemoteDry (const MachineObject *obj) const
std::optional< DryStatus > GetDryStatus () const
std::optional< DrySubStatus > GetDrySubStatus () const
std::optional< DryFanStatus > GetFan1Status () const
std::optional< DryFanStatus > GetFan2Status () const
std::optional< std::vector< CannotDryReason > > GetCannotDryReason () const
std::optional< DrySettings > GetDrySettings () const
bool AmsIsDrying ()

Static Public Attributes

static constexpr AmsType EXT_SPOOL = DevAmsType::EXT_SPOOL
static constexpr AmsType AMS = DevAmsType::AMS
static constexpr AmsType AMS_LITE = DevAmsType::AMS_LITE
static constexpr AmsType N3F = DevAmsType::N3F
static constexpr AmsType N3S = DevAmsType::N3S
static constexpr AmsType AMS_LITE_MIXED = DevAmsType::AMS_LITE_MIXED

Private Attributes

AmsType m_ams_type = AmsType::AMS
std::string m_ams_id
int m_ext_id
std::set< int > m_binded_extruder_set
std::optional< DevFilaSwitch::SwitchPos > m_binded_switcher_pos
bool m_exist = false
std::map< std::string, DevAmsTray * > m_trays
float m_current_temperature = INVALID_AMS_TEMPERATURE
int m_humidity_level = 5
int m_humidity_percent = -1
int m_left_dry_time = 0
std::optional< DryStatus > m_dry_status
std::optional< DrySubStatus > m_dry_sub_status
std::optional< DryFanStatus > m_dry_fan1_status
std::optional< DryFanStatus > m_dry_fan2_status
std::optional< std::vector< CannotDryReason > > m_dry_cannot_reasons
std::optional< DrySettings > m_dry_settings

Friends

class DevFilaSystemParser

Detailed Description

DevAms - Represents a single AMS (Automatic Material System) unit.

An AMS unit is a physical hardware component that holds multiple filament trays. Different printer models support different AMS variants with varying slot counts and capabilities.

Data Population:

Populated by DevFilaSystemParser from printer JSON messages received via NetworkAgent.

Key Properties:

  • m_ams_id: Unique identifier for this AMS unit (string, typically "0", "1", etc.)
  • m_ext_id: Which extruder this AMS is connected to (for multi-extruder setups)
  • m_trays: Map of tray IDs to DevAmsTray pointers containing filament data

AMS Type Variants:

  • AMS (type 1): Standard 4-slot AMS with humidity control
  • AMS_LITE (type 2): Simplified version
  • N3F/N3S (types 3,4): Newer variants with different humidity/drying support

Class Documentation

◆ Slic3r::DevAms::DrySettings

struct Slic3r::DevAms::DrySettings
Collaboration diagram for Slic3r::DevAms::DrySettings:
Class Members
string dry_filament
int dry_hour = -1
int dry_temp = -1

Member Typedef Documentation

◆ AmsType

Member Enumeration Documentation

◆ CannotDryReason

enum class Slic3r::DevAms::CannotDryReason : int
strong
Enumerator
TaskOccupied 
InsufficientPower 
AmsBusy 
ConsumableAtAmsOutlet 
InitiatingAmsDrying 
NotSupportedIn2dMode 
DryingInProgress 
Upgrading 
InsufficientPowerNeedPluginPower 
FilamentAtAmsOutletManualUnload 
185 {
186 TaskOccupied = 0,
187 InsufficientPower = 1,
188 AmsBusy = 2,
189 ConsumableAtAmsOutlet = 3,
190 InitiatingAmsDrying = 4,
191 NotSupportedIn2dMode = 5,
192 DryingInProgress = 6,
193 Upgrading = 7,
194 InsufficientPowerNeedPluginPower = 8,
195 FilamentAtAmsOutletManualUnload = 10,
196 };

◆ DryCtrlMode

enum class Slic3r::DevAms::DryCtrlMode : int
strong
Enumerator
Off 
OnTime 
OnHumidity 
153 {
154 Off = 0,
155 OnTime = 1,
156 OnHumidity = 2,
157 };

◆ DryFanStatus

enum class Slic3r::DevAms::DryFanStatus : char
strong
Enumerator
Off 
On 
179 {
180 Off = 0,
181 On = 1,
182 };

◆ DryStatus

enum class Slic3r::DevAms::DryStatus : char
strong
Enumerator
Off 
Checking 
Drying 
Cooling 
Stopping 
Error 
CannotStopHeatOutofControl 
PrdTesting 
160 {
161 Off = 0,
162 Checking = 1,
163 Drying = 2,
164 Cooling = 3,
165 Stopping = 4,
166 Error = 5,
167 CannotStopHeatOutofControl = 6,
168 PrdTesting = 7,
169 };
@ Error
Definition PrePrintChecker.hpp:17

◆ DrySubStatus

enum class Slic3r::DevAms::DrySubStatus
strong
Enumerator
Off 
Heating 
Dehumidify 
172 {
173 Off = 0,
174 Heating = 1,
175 Dehumidify = 2,
176 };

Constructor & Destructor Documentation

◆ DevAms() [1/2]

Slic3r::DevAms::DevAms ( const std::string & ams_id,
int extruder_id,
AmsType type )
136{
137 m_ams_id = ams_id;
138 m_ext_id = extruder_id;
139 m_ams_type = type;
140}
AmsType m_ams_type
Definition DevFilaSystem.h:270
std::string m_ams_id
Definition DevFilaSystem.h:271
int m_ext_id
Definition DevFilaSystem.h:272

References m_ams_id, m_ams_type, and m_ext_id.

◆ DevAms() [2/2]

Slic3r::DevAms::DevAms ( const std::string & ams_id,
int nozzle_id,
int type )
143{
144 m_ams_id = ams_id;
145 m_ext_id = nozzle_id;
146 m_ams_type = (AmsType)type;
147 assert(EXT_SPOOL < type && m_ams_type <= AMS_LITE_MIXED);
148}
static constexpr AmsType AMS_LITE_MIXED
Definition DevFilaSystem.h:148
static constexpr AmsType EXT_SPOOL
Definition DevFilaSystem.h:143
DevAmsType AmsType
Definition DevFilaSystem.h:142

References AMS_LITE_MIXED, EXT_SPOOL, m_ams_id, m_ams_type, and m_ext_id.

◆ ~DevAms()

Slic3r::DevAms::~DevAms ( )
151{
152 for (auto it = m_trays.begin(); it != m_trays.end(); it++)
153 {
154 if (it->second)
155 {
156 delete it->second;
157 it->second = nullptr;
158 }
159 }
160 m_trays.clear();
161}
std::map< std::string, DevAmsTray * > m_trays
Definition DevFilaSystem.h:282

References m_trays.

Member Function Documentation

◆ AmsIsDrying()

bool Slic3r::DevAms::AmsIsDrying ( )
238{
239 if (!GetDryStatus().has_value()) {
240 return false;
241 }
242
243 return GetDryStatus().value() == DevAms::DryStatus::Checking
247}
std::optional< DryStatus > GetDryStatus() const
Definition DevFilaSystem.h:260
@ Checking
Definition DevFilaSystem.h:162
@ CannotStopHeatOutofControl
Definition DevFilaSystem.h:167
@ Drying
Definition DevFilaSystem.h:163
@ Error
Definition DevFilaSystem.h:166

References CannotStopHeatOutofControl, Checking, Drying, Error, and GetDryStatus().

Referenced by Slic3r::GUI::SelectMachineDialog::is_selected_ams_drying().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAmsId()

std::string Slic3r::DevAms::GetAmsId ( ) const
inline
211{ return m_ams_id; }

References m_ams_id.

Referenced by GetDisplayName(), Slic3r::GUI::AMSDryCtrWin::is_ams_changed(), Slic3r::GUI::AMSinfo::parse_ams_info(), Slic3r::GUI::AMSDryCtrWin::update_ams_change(), Slic3r::GUI::AMSDryCtrWin::update_filament_list(), and Slic3r::GUI::AmsMapingPopup::update_mapping_items().

Here is the caller graph for this function:

◆ GetAmsType()

◆ GetBindedExtruderSet()

const std::set< int > & Slic3r::DevAms::GetBindedExtruderSet ( ) const
inline
236{ return m_binded_extruder_set; }
std::set< int > m_binded_extruder_set
Definition DevFilaSystem.h:277

References m_binded_extruder_set.

◆ GetCannotDryReason()

std::optional< std::vector< CannotDryReason > > Slic3r::DevAms::GetCannotDryReason ( ) const
inline
264{ return m_dry_cannot_reasons; }
std::optional< std::vector< CannotDryReason > > m_dry_cannot_reasons
Definition DevFilaSystem.h:295

References m_dry_cannot_reasons.

Referenced by Slic3r::GUI::AMSDryCtrWin::update_state().

Here is the caller graph for this function:

◆ GetCurrentTemperature()

float Slic3r::DevAms::GetCurrentTemperature ( ) const
inline
249{ return m_current_temperature; }
float m_current_temperature
Definition DevFilaSystem.h:285

References m_current_temperature.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info(), and Slic3r::GUI::AMSDryCtrWin::update_dryness_status().

Here is the caller graph for this function:

◆ GetDisplayName()

wxString Slic3r::DevAms::GetDisplayName ( ) const
171{
172 wxString ams_display_format;
173 // GetAmsType() maps AMS_LITE_MIXED -> AMS_LITE so N9 shows the AMS-Lite name.
174 auto iter = s_ams_display_formats.find(GetAmsType());
175 if (iter != s_ams_display_formats.end())
176 {
177 ams_display_format = iter->second;
178 }
179 else
180 {
181 assert(0 && __FUNCTION__);
182 ams_display_format = "AMS-%d";
183 }
184
185 int num_id;
186 try
187 {
188 num_id = std::stoi(GetAmsId());
189 }
190 catch (const std::exception& e)
191 {
192 assert(0 && __FUNCTION__);
193 BOOST_LOG_TRIVIAL(error) << "Invalid AMS ID: " << GetAmsId() << ", error: " << e.what();
194 num_id = 0;
195 }
196
197 int loc = (num_id > 127) ? (num_id - 127) : (num_id + 1);
198 return wxString::Format(ams_display_format, loc);
199}
AmsType GetAmsType() const
Definition DevFilaSystem.h:218
std::string GetAmsId() const
Definition DevFilaSystem.h:211
static std::unordered_map< int, wxString > s_ams_display_formats
Definition DevFilaSystem.cpp:163

References GetAmsId(), GetAmsType(), and Slic3r::s_ams_display_formats.

Referenced by Slic3r::GUI::AMSDryCtrWin::update_filament_guide_info().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetDrySettings()

std::optional< DrySettings > Slic3r::DevAms::GetDrySettings ( ) const
inline
265{ return m_dry_settings; };
std::optional< DrySettings > m_dry_settings
Definition DevFilaSystem.h:296

References m_dry_settings.

Referenced by Slic3r::GUI::AMSDryCtrWin::update_filament_list().

Here is the caller graph for this function:

◆ GetDryStatus()

std::optional< DryStatus > Slic3r::DevAms::GetDryStatus ( ) const
inline
260{ return m_dry_status; };
std::optional< DryStatus > m_dry_status
Definition DevFilaSystem.h:291

References m_dry_status.

Referenced by AmsIsDrying(), Slic3r::GUI::AMSDryCtrWin::check_values_changed(), Slic3r::GUI::AMSDryCtrWin::is_dry_ctr_err(), Slic3r::GUI::AMSDryCtrWin::is_dry_ctr_idle(), Slic3r::GUI::AMSDryCtrWin::is_dry_status_changed(), and Slic3r::GUI::AMSDryCtrWin::update().

Here is the caller graph for this function:

◆ GetDrySubStatus()

std::optional< DrySubStatus > Slic3r::DevAms::GetDrySubStatus ( ) const
inline
261{ return m_dry_sub_status; }
std::optional< DrySubStatus > m_dry_sub_status
Definition DevFilaSystem.h:292

References m_dry_sub_status.

Referenced by Slic3r::GUI::AMSDryCtrWin::check_values_changed(), Slic3r::GUI::AMSDryCtrWin::is_dry_ctr_err(), Slic3r::GUI::AMSDryCtrWin::is_dry_ctr_idle(), Slic3r::GUI::AMSDryCtrWin::is_dry_status_changed(), and Slic3r::GUI::AMSDryCtrWin::update().

Here is the caller graph for this function:

◆ GetExtruderId()

int Slic3r::DevAms::GetExtruderId ( ) const
inline
232{ return m_ext_id; }

References m_ext_id.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info().

Here is the caller graph for this function:

◆ GetFan1Status()

std::optional< DryFanStatus > Slic3r::DevAms::GetFan1Status ( ) const
inline
262{ return m_dry_fan1_status; }
std::optional< DryFanStatus > m_dry_fan1_status
Definition DevFilaSystem.h:293

References m_dry_fan1_status.

◆ GetFan2Status()

std::optional< DryFanStatus > Slic3r::DevAms::GetFan2Status ( ) const
inline
263{ return m_dry_fan2_status; }
std::optional< DryFanStatus > m_dry_fan2_status
Definition DevFilaSystem.h:294

References m_dry_fan2_status.

◆ GetHumidityLevel()

int Slic3r::DevAms::GetHumidityLevel ( ) const
inline
252{ return m_humidity_level; }
int m_humidity_level
Definition DevFilaSystem.h:286

References m_humidity_level.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info().

Here is the caller graph for this function:

◆ GetHumidityPercent()

int Slic3r::DevAms::GetHumidityPercent ( ) const
inline
253{ return m_humidity_percent; }
int m_humidity_percent
Definition DevFilaSystem.h:287

References m_humidity_percent.

Referenced by Slic3r::GUI::AMSDryCtrWin::check_values_changed(), Slic3r::GUI::AMSinfo::parse_ams_info(), Slic3r::GUI::AMSDryCtrWin::update(), and Slic3r::GUI::AMSDryCtrWin::update_dryness_status().

Here is the caller graph for this function:

◆ GetLeftDryTime()

int Slic3r::DevAms::GetLeftDryTime ( ) const
inline
256{ return m_left_dry_time; }
int m_left_dry_time
Definition DevFilaSystem.h:288

References m_left_dry_time.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info(), and Slic3r::GUI::AMSDryCtrWin::update_dryness_status().

Here is the caller graph for this function:

◆ GetSlotCount()

int Slic3r::DevAms::GetSlotCount ( ) const
202{
203 // GetAmsType() maps AMS_LITE_MIXED -> AMS_LITE, so N9 reports 4 slots like AMS-Lite.
204 auto ams_type = GetAmsType();
205 if (ams_type == AMS || ams_type == AMS_LITE || ams_type == N3F)
206 {
207 return 4;
208 }
209 else if (ams_type == N3S)
210 {
211 return 1;
212 }
213
214 return 1;
215}
static constexpr AmsType AMS
Definition DevFilaSystem.h:144
static constexpr AmsType N3F
Definition DevFilaSystem.h:146
static constexpr AmsType N3S
Definition DevFilaSystem.h:147

References AMS, AMS_LITE, GetAmsType(), N3F, and N3S.

Here is the call graph for this function:

◆ GetSwitcherPos()

std::optional< DevFilaSwitch::SwitchPos > Slic3r::DevAms::GetSwitcherPos ( ) const
inline
246{ return m_binded_switcher_pos; }
std::optional< DevFilaSwitch::SwitchPos > m_binded_switcher_pos
Definition DevFilaSystem.h:278

References m_binded_switcher_pos.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info().

Here is the caller graph for this function:

◆ GetTray()

DevAmsTray * Slic3r::DevAms::GetTray ( const std::string & tray_id) const
218{
219 auto it = m_trays.find(tray_id);
220 if (it != m_trays.end())
221 {
222 return it->second;
223 }
224
225 return nullptr;
226}

References m_trays.

◆ GetTrays()

◆ GetUniqueBindedExtruderId()

std::optional< int > Slic3r::DevAms::GetUniqueBindedExtruderId ( ) const
inline
241 {
242 return m_binded_extruder_set.size() == 1 ? std::optional<int>(*m_binded_extruder_set.begin()) : std::nullopt;
243 }

References m_binded_extruder_set.

◆ IsAmsLiteMixed()

bool Slic3r::DevAms::IsAmsLiteMixed ( ) const
inline
224{ return m_ams_type == AMS_LITE_MIXED; }

References AMS_LITE_MIXED, and m_ams_type.

◆ IsExist()

bool Slic3r::DevAms::IsExist ( ) const
inline
221{ return m_exist; }
bool m_exist
Definition DevFilaSystem.h:279

References m_exist.

◆ IsSupportRemoteDry()

bool Slic3r::DevAms::IsSupportRemoteDry ( const MachineObject * obj) const
229{
230 if (obj && obj->is_support_remote_dry) {
231 return SupportDrying();
232 }
233
234 return false;
235}
bool SupportDrying() const
Definition DevFilaSystem.h:255

References Slic3r::MachineObject::is_support_remote_dry, and SupportDrying().

Referenced by Slic3r::GUI::AMSDryCtrWin::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetAmsType() [1/2]

void Slic3r::DevAms::SetAmsType ( AmsType type)
inline
215{ m_ams_type = type; }

References m_ams_type.

◆ SetAmsType() [2/2]

void Slic3r::DevAms::SetAmsType ( int type)
inline
214{ m_ams_type = (AmsType)type; }

References m_ams_type.

Referenced by Slic3r::DevFilaSystemParser::ParseAgentFilament(), and Slic3r::DevFilaSystemParser::ParseV1_0().

Here is the caller graph for this function:

◆ SupportDrying()

bool Slic3r::DevAms::SupportDrying ( ) const
inline
@ N3F
Definition DevDefs.h:62
@ N3S
Definition DevDefs.h:63

References m_ams_type, Slic3r::N3F, and Slic3r::N3S.

Referenced by IsSupportRemoteDry().

Here is the caller graph for this function:

◆ SupportHumidity()

bool Slic3r::DevAms::SupportHumidity ( ) const
inline
251{ return (m_ams_type == AMS) || (m_ams_type == N3F) || (m_ams_type == N3S);}

References AMS, m_ams_type, N3F, and N3S.

Referenced by Slic3r::GUI::AMSinfo::parse_ams_info().

Here is the caller graph for this function:

◆ DevFilaSystemParser

friend class DevFilaSystemParser
friend

References DevFilaSystemParser.

Referenced by DevFilaSystemParser.

Member Data Documentation

◆ AMS

◆ AMS_LITE

◆ AMS_LITE_MIXED

◆ EXT_SPOOL

AmsType Slic3r::DevAms::EXT_SPOOL = DevAmsType::EXT_SPOOL
staticconstexpr

◆ m_ams_id

std::string Slic3r::DevAms::m_ams_id
private

Referenced by DevAms(), DevAms(), and GetAmsId().

◆ m_ams_type

AmsType Slic3r::DevAms::m_ams_type = AmsType::AMS
private

◆ m_binded_extruder_set

std::set<int> Slic3r::DevAms::m_binded_extruder_set
private

◆ m_binded_switcher_pos

std::optional<DevFilaSwitch::SwitchPos> Slic3r::DevAms::m_binded_switcher_pos
private

◆ m_current_temperature

◆ m_dry_cannot_reasons

std::optional<std::vector<CannotDryReason> > Slic3r::DevAms::m_dry_cannot_reasons
private

◆ m_dry_fan1_status

std::optional<DryFanStatus> Slic3r::DevAms::m_dry_fan1_status
private

◆ m_dry_fan2_status

std::optional<DryFanStatus> Slic3r::DevAms::m_dry_fan2_status
private

◆ m_dry_settings

std::optional<DrySettings> Slic3r::DevAms::m_dry_settings
private

◆ m_dry_status

std::optional<DryStatus> Slic3r::DevAms::m_dry_status
private

◆ m_dry_sub_status

std::optional<DrySubStatus> Slic3r::DevAms::m_dry_sub_status
private

◆ m_exist

bool Slic3r::DevAms::m_exist = false
private

◆ m_ext_id

int Slic3r::DevAms::m_ext_id
private

◆ m_humidity_level

int Slic3r::DevAms::m_humidity_level = 5
private

◆ m_humidity_percent

int Slic3r::DevAms::m_humidity_percent = -1
private

◆ m_left_dry_time

int Slic3r::DevAms::m_left_dry_time = 0
private

◆ m_trays

std::map<std::string, DevAmsTray*> Slic3r::DevAms::m_trays
private

◆ N3F

◆ N3S


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