NEW:Support parsing of bit parameters

Change-Id: I9b474a0e8b1bbfb5b1a4f2748f3f3f1e2afc6239
(cherry picked from commit 73c2ccd83b96490aee58f8cfe912e3ab66982094)
This commit is contained in:
tao wang 2024-09-28 23:37:35 +08:00 committed by Noisyfox
parent 8f08b587c6
commit 66e5cbd8e8
2 changed files with 23 additions and 1 deletions

View file

@ -3173,7 +3173,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (!key_field_only) {
if (jj.contains("flag3")) {
int flag3 = jj["flag3"].get<int>();
//is_support_filament_setting_inprinting = get_flag_bits(flag3, 3);
is_support_filament_setting_inprinting = get_flag_bits(flag3, 3);
}
}
if (!key_field_only) {
@ -5203,6 +5203,26 @@ void MachineObject::update_filament_list()
m_filament_list = filament_list;
}
int MachineObject::get_flag_bits(std::string str, int start, int count)
{
int decimal_value = std::stoi(str, nullptr, 16);
int mask = 0;
for (int i = 0; i < count; i++) { mask += 1 << (start + i); }
int flag = (decimal_value & (mask)) >> start;
return flag;
}
int MachineObject::get_flag_bits(int num, int start, int count)
{
int decimal_value = num;
int mask = 0;
for (int i = 0; i < count; i++) { mask += 1 << (start + i); }
int flag = (decimal_value & (mask)) >> start;
return flag;
}
void MachineObject::update_printer_preset_name(const std::string &nozzle_diameter_str)
{
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << "start update preset_name";

View file

@ -980,6 +980,8 @@ public:
std::string m_printer_preset_name;
std::map<std::string, std::pair<int, int>> m_filament_list; // filament_id, pair<min temp, max temp>
void update_filament_list();
int get_flag_bits(std::string str, int start, int count);
int get_flag_bits(int num, int start, int count);
void update_printer_preset_name(const std::string &nozzle_diameter_str);
};