mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Compare commits
7 Commits
v2.1.0
...
experiment
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9d6789a21 | ||
|
|
5df709e083 | ||
|
|
664862100f | ||
|
|
3f5e02e8f7 | ||
|
|
bbb65725fa | ||
|
|
04a3b78b21 | ||
|
|
5c0ee08135 |
3
CYD-Klipper/.vscode/settings.json
vendored
3
CYD-Klipper/.vscode/settings.json
vendored
@@ -48,7 +48,8 @@
|
|||||||
"stdexcept": "cpp",
|
"stdexcept": "cpp",
|
||||||
"streambuf": "cpp",
|
"streambuf": "cpp",
|
||||||
"cinttypes": "cpp",
|
"cinttypes": "cpp",
|
||||||
"typeinfo": "cpp"
|
"typeinfo": "cpp",
|
||||||
|
"lv_group.h": "c"
|
||||||
},
|
},
|
||||||
"cmake.configureOnOpen": false
|
"cmake.configureOnOpen": false
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,8 @@ void KlipperPrinter::parse_state(JsonDocument &in)
|
|||||||
const char *state = status["webhooks"]["state"];
|
const char *state = status["webhooks"]["state"];
|
||||||
const char *message = status["webhooks"]["state_message"];
|
const char *message = status["webhooks"]["state_message"];
|
||||||
|
|
||||||
|
if (state != NULL)
|
||||||
|
{
|
||||||
if (strcmp(state, "ready") == 0 && printer_data.state == PrinterStateError)
|
if (strcmp(state, "ready") == 0 && printer_data.state == PrinterStateError)
|
||||||
{
|
{
|
||||||
printer_data.state = PrinterStateIdle;
|
printer_data.state = PrinterStateIdle;
|
||||||
@@ -26,6 +28,7 @@ void KlipperPrinter::parse_state(JsonDocument &in)
|
|||||||
{
|
{
|
||||||
printer_data.state = PrinterStateError;
|
printer_data.state = PrinterStateError;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (message != NULL && (printer_data.state_message == NULL || strcmp(printer_data.state_message, message)))
|
if (message != NULL && (printer_data.state_message == NULL || strcmp(printer_data.state_message, message)))
|
||||||
{
|
{
|
||||||
@@ -56,6 +59,12 @@ void KlipperPrinter::parse_state(JsonDocument &in)
|
|||||||
{
|
{
|
||||||
const char *homed_axis = status["toolhead"]["homed_axes"];
|
const char *homed_axis = status["toolhead"]["homed_axes"];
|
||||||
printer_data.homed_axis = strcmp(homed_axis, "xyz") == 0;
|
printer_data.homed_axis = strcmp(homed_axis, "xyz") == 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
printer_data.position_min[i] = status["toolhead"]["axis_minimum"][i];
|
||||||
|
printer_data.position_max[i] = status["toolhead"]["axis_maximum"][i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status.containsKey("gcode_move"))
|
if (status.containsKey("gcode_move"))
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ typedef struct _PrinterData {
|
|||||||
float temperatures[10];
|
float temperatures[10];
|
||||||
float target_temperatures[10];
|
float target_temperatures[10];
|
||||||
float position[3];
|
float position[3];
|
||||||
|
float position_min[3];
|
||||||
|
float position_max[3];
|
||||||
float elapsed_time_s;
|
float elapsed_time_s;
|
||||||
float printed_time_s;
|
float printed_time_s;
|
||||||
float remaining_time_s;
|
float remaining_time_s;
|
||||||
|
|||||||
@@ -344,18 +344,24 @@ static void root_panel_state_update(lv_event_t * e){
|
|||||||
if (last_homing_state == get_current_printer_data()->homed_axis)
|
if (last_homing_state == get_current_printer_data()->homed_axis)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
PrinterType printer_type = get_current_printer()->printer_config->printer_type;
|
||||||
|
bool is_klipper = printer_type == PrinterTypeKlipper || printer_type == PrinterTypeKlipperSerial;
|
||||||
|
|
||||||
lv_obj_t * panel = lv_event_get_target(e);
|
lv_obj_t * panel = lv_event_get_target(e);
|
||||||
last_homing_state = get_current_printer_data()->homed_axis;
|
last_homing_state = get_current_printer_data()->homed_axis;
|
||||||
|
|
||||||
lv_obj_clean(panel);
|
lv_obj_clean(panel);
|
||||||
|
|
||||||
if (get_current_printer_data()->homed_axis)
|
if (get_current_printer_data()->homed_axis && is_klipper)
|
||||||
|
move_panel_slider_init(panel);
|
||||||
|
else if (get_current_printer_data()->homed_axis)
|
||||||
root_panel_steppers_locked(panel);
|
root_panel_steppers_locked(panel);
|
||||||
else
|
else
|
||||||
root_panel_steppers_unlocked(panel);
|
root_panel_steppers_unlocked(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void move_panel_init(lv_obj_t* panel){
|
void move_panel_init(lv_obj_t* panel)
|
||||||
|
{
|
||||||
if (get_current_printer_data()->state == PrinterState::PrinterStatePrinting){
|
if (get_current_printer_data()->state == PrinterState::PrinterStatePrinting){
|
||||||
stats_panel_init(panel);
|
stats_panel_init(panel);
|
||||||
return;
|
return;
|
||||||
|
|||||||
257
CYD-Klipper/src/ui/panels/move_panel_slider.cpp
Normal file
257
CYD-Klipper/src/ui/panels/move_panel_slider.cpp
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
#include "panel.h"
|
||||||
|
#include "lvgl.h"
|
||||||
|
#include "../../core/data_setup.h"
|
||||||
|
#include "../nav_buttons.h"
|
||||||
|
#include "../ui_utils.h"
|
||||||
|
#include "../../core/printer_integration.hpp"
|
||||||
|
#include "../../core/current_printer.h"
|
||||||
|
|
||||||
|
static void line_custom_set(const char * axis, const char *text)
|
||||||
|
{
|
||||||
|
float pos = atof(text);
|
||||||
|
|
||||||
|
if (pos < 0 || pos > 500)
|
||||||
|
return;
|
||||||
|
|
||||||
|
current_printer_move_printer(axis, pos, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x_line_custom_callback(lv_event_t * e)
|
||||||
|
{
|
||||||
|
const char * text = lv_textarea_get_text(lv_event_get_target(e));
|
||||||
|
line_custom_set("X", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void y_line_custom_callback(lv_event_t * e)
|
||||||
|
{
|
||||||
|
const char * text = lv_textarea_get_text(lv_event_get_target(e));
|
||||||
|
line_custom_set("Y", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void z_line_custom_callback(lv_event_t * e)
|
||||||
|
{
|
||||||
|
const char * text = lv_textarea_get_text(lv_event_get_target(e));
|
||||||
|
line_custom_set("Z", text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x_line_custom(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_create_keyboard_text_entry(x_line_custom_callback, "Set X position", LV_KEYBOARD_MODE_NUMBER, LV_PCT(75), 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void y_line_custom(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_create_keyboard_text_entry(y_line_custom_callback, "Set Y position", LV_KEYBOARD_MODE_NUMBER, LV_PCT(75), 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void z_line_custom(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_create_keyboard_text_entry(z_line_custom_callback, "Set Z position", LV_KEYBOARD_MODE_NUMBER, LV_PCT(75), 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pos_update(lv_event_t * e, const char* target_template, float target)
|
||||||
|
{
|
||||||
|
lv_obj_t* obj = lv_event_get_target(e);
|
||||||
|
lv_obj_t* slider = (lv_obj_t*)lv_event_get_user_data(e);
|
||||||
|
|
||||||
|
if (lv_slider_is_dragged(slider))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lv_obj_check_type(obj, &lv_label_class))
|
||||||
|
{
|
||||||
|
char pos_buff[12];
|
||||||
|
sprintf(pos_buff, target_template, target);
|
||||||
|
lv_label_set_text(obj, pos_buff);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lv_slider_set_value(obj, target, LV_ANIM_ON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x_pos_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
pos_update(e, "%.1f " LV_SYMBOL_EDIT, get_current_printer_data()->position[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void y_pos_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
pos_update(e, "%.1f", get_current_printer_data()->position[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void z_pos_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
pos_update(e, "%.2f", get_current_printer_data()->position[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void x_slider_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
current_printer_move_printer("X", lv_slider_get_value(lv_event_get_target(e)), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void y_slider_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
current_printer_move_printer("Y", lv_slider_get_value(lv_event_get_target(e)), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void z_slider_update(lv_event_t * e)
|
||||||
|
{
|
||||||
|
current_printer_move_printer("Z", lv_slider_get_value(lv_event_get_target(e)), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void home_button_click(lv_event_t * e)
|
||||||
|
{
|
||||||
|
current_printer_execute_feature(PrinterFeatures::PrinterFeatureHome);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disable_steppers_button_click(lv_event_t * e)
|
||||||
|
{
|
||||||
|
current_printer_execute_feature(PrinterFeatures::PrinterFeatureDisableSteppers);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void set_label_slider_position(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_obj_t* slider = lv_event_get_target(e);
|
||||||
|
lv_obj_t* label = (lv_obj_t*)lv_event_get_user_data(e);
|
||||||
|
|
||||||
|
if (lv_slider_is_dragged(slider))
|
||||||
|
{
|
||||||
|
lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void switch_to_params_panel_button_click(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_obj_t * panel = lv_event_get_target(e);
|
||||||
|
nav_buttons_setup(PANEL_STATS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void make_vertical_slider(
|
||||||
|
lv_obj_t* parent,
|
||||||
|
const char* axis,
|
||||||
|
lv_event_cb_t position_change,
|
||||||
|
lv_event_cb_t on_slider_change,
|
||||||
|
lv_event_cb_t on_edit,
|
||||||
|
float min,
|
||||||
|
float max)
|
||||||
|
{
|
||||||
|
lv_obj_t* root = lv_create_empty_panel(parent);
|
||||||
|
lv_layout_flex_column(root);
|
||||||
|
lv_obj_set_size(root, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 1.5, LV_PCT(100));
|
||||||
|
lv_obj_set_style_pad_column(root, 10, 0);
|
||||||
|
lv_obj_clear_flag(root, LV_OBJ_FLAG_SCROLLABLE);
|
||||||
|
|
||||||
|
lv_obj_t* sub_root = lv_create_empty_panel(root);
|
||||||
|
lv_layout_flex_column(sub_root);
|
||||||
|
lv_obj_set_height(sub_root, LV_SIZE_CONTENT);
|
||||||
|
lv_obj_add_flag(sub_root, LV_OBJ_FLAG_CLICKABLE);
|
||||||
|
lv_obj_add_event_cb(sub_root, on_edit, LV_EVENT_CLICKED, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* top_label = lv_label_create(sub_root);
|
||||||
|
lv_msg_subsribe_obj(DATA_PRINTER_DATA, top_label, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* one_below_label = lv_label_create(sub_root);
|
||||||
|
lv_label_set_text(one_below_label, LV_SYMBOL_EDIT);
|
||||||
|
|
||||||
|
lv_obj_t* two_below_label = lv_label_create(sub_root);
|
||||||
|
lv_label_set_text_fmt(two_below_label, "%s+", axis);
|
||||||
|
|
||||||
|
lv_obj_t* slider = lv_slider_create(root);
|
||||||
|
lv_obj_set_flex_grow(slider, 1);
|
||||||
|
lv_obj_set_width(slider, CYD_SCREEN_MIN_BUTTON_WIDTH_PX / 2);
|
||||||
|
lv_slider_set_range(slider, min, max);
|
||||||
|
lv_obj_add_event_cb(slider, on_slider_change, LV_EVENT_RELEASED, NULL);
|
||||||
|
lv_obj_add_event_cb(slider, position_change, LV_EVENT_MSG_RECEIVED, slider);
|
||||||
|
lv_obj_add_event_cb(slider, set_label_slider_position, LV_EVENT_VALUE_CHANGED, top_label);
|
||||||
|
lv_msg_subsribe_obj(DATA_PRINTER_DATA, slider, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* last_label = lv_label_create(root);
|
||||||
|
lv_label_set_text_fmt(last_label, "%s-", axis);
|
||||||
|
lv_obj_add_event_cb(top_label, position_change, LV_EVENT_MSG_RECEIVED, slider);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: Make vertical button row with +1, +0.1, -0.1, -1, maybe with MAX - 30 */
|
||||||
|
|
||||||
|
static void make_horizontal_slider(
|
||||||
|
lv_obj_t* parent,
|
||||||
|
const char* axis,
|
||||||
|
lv_event_cb_t position_change,
|
||||||
|
lv_event_cb_t on_slider_change,
|
||||||
|
lv_event_cb_t on_edit,
|
||||||
|
float min,
|
||||||
|
float max)
|
||||||
|
{
|
||||||
|
lv_obj_t* root = lv_create_empty_panel(parent);
|
||||||
|
lv_layout_flex_column(root);
|
||||||
|
lv_obj_set_size(root, LV_PCT(100), LV_SIZE_CONTENT);
|
||||||
|
|
||||||
|
lv_obj_t* upper = lv_create_empty_panel(root);
|
||||||
|
lv_layout_flex_row(upper, LV_FLEX_ALIGN_SPACE_BETWEEN);
|
||||||
|
lv_obj_set_size(upper, LV_PCT(100), LV_SIZE_CONTENT);
|
||||||
|
lv_obj_add_flag(upper, LV_OBJ_FLAG_CLICKABLE);
|
||||||
|
lv_obj_add_event_cb(upper, on_edit, LV_EVENT_CLICKED, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* left_label = lv_label_create(upper);
|
||||||
|
lv_label_set_text_fmt(left_label, "%s-", axis);
|
||||||
|
|
||||||
|
lv_obj_t* position_label = lv_label_create(upper);
|
||||||
|
lv_msg_subsribe_obj(DATA_PRINTER_DATA, position_label, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* right_label = lv_label_create(upper);
|
||||||
|
lv_label_set_text_fmt(right_label, "%s+", axis);
|
||||||
|
|
||||||
|
lv_obj_t* slider = lv_slider_create(root);
|
||||||
|
lv_obj_set_size(slider, LV_PCT(100), CYD_SCREEN_MIN_BUTTON_HEIGHT_PX / 2);
|
||||||
|
lv_slider_set_range(slider, min, max);
|
||||||
|
lv_obj_add_event_cb(slider, on_slider_change, LV_EVENT_RELEASED, NULL);
|
||||||
|
lv_obj_add_event_cb(slider, position_change, LV_EVENT_MSG_RECEIVED, slider);
|
||||||
|
lv_obj_add_event_cb(slider, set_label_slider_position, LV_EVENT_VALUE_CHANGED, position_label);
|
||||||
|
lv_msg_subsribe_obj(DATA_PRINTER_DATA, slider, NULL);
|
||||||
|
|
||||||
|
lv_obj_set_style_pad_bottom(root, 10, 0);
|
||||||
|
lv_obj_set_style_pad_bottom(upper, 10, 0);
|
||||||
|
lv_obj_set_style_pad_column(upper, 10, 0);
|
||||||
|
|
||||||
|
lv_obj_add_event_cb(position_label, position_change, LV_EVENT_MSG_RECEIVED, slider);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void create_button(lv_obj_t* parent, lv_event_cb_t on_click, const char* text)
|
||||||
|
{
|
||||||
|
lv_obj_t* btn = lv_btn_create(parent);
|
||||||
|
lv_obj_set_width(btn, LV_PCT(100));
|
||||||
|
lv_obj_set_flex_grow(btn, 1);
|
||||||
|
lv_obj_add_event_cb(btn, on_click, LV_EVENT_CLICKED, NULL);
|
||||||
|
|
||||||
|
lv_obj_t* label = lv_label_create(btn);
|
||||||
|
lv_obj_center(label);
|
||||||
|
lv_label_set_text(label, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void move_panel_slider_init(lv_obj_t* panel)
|
||||||
|
{
|
||||||
|
lv_obj_t * sub_panel = lv_create_empty_panel(panel);
|
||||||
|
lv_obj_set_size(sub_panel, LV_PCT(100), LV_PCT(100));
|
||||||
|
|
||||||
|
lv_layout_flex_row(sub_panel);
|
||||||
|
|
||||||
|
lv_obj_t* left = lv_create_empty_panel(sub_panel);
|
||||||
|
lv_layout_flex_column(left);
|
||||||
|
lv_obj_set_flex_grow(left, 1);
|
||||||
|
lv_obj_set_height(left, LV_PCT(100));
|
||||||
|
|
||||||
|
float* position_min = get_current_printer_data()->position_min;
|
||||||
|
float* position_max = get_current_printer_data()->position_max;
|
||||||
|
|
||||||
|
make_horizontal_slider(left, "X", x_pos_update, x_slider_update, x_line_custom, position_min[0], position_max[0]);
|
||||||
|
make_vertical_slider(sub_panel, "Y", y_pos_update, y_slider_update, y_line_custom, position_min[1], position_max[1]);
|
||||||
|
make_vertical_slider(sub_panel, "Z", z_pos_update, z_slider_update, z_line_custom, position_min[2], position_max[2]);
|
||||||
|
|
||||||
|
create_button(left, home_button_click, LV_SYMBOL_HOME " Home XYZ");
|
||||||
|
create_button(left, disable_steppers_button_click, LV_SYMBOL_EYE_CLOSE " Free Motors");
|
||||||
|
create_button(left, switch_to_params_panel_button_click, LV_SYMBOL_SETTINGS " Parameters");
|
||||||
|
|
||||||
|
lv_obj_set_style_pad_right(left, 10, 0);
|
||||||
|
lv_obj_set_style_pad_all(sub_panel, 10, 0);
|
||||||
|
}
|
||||||
@@ -12,5 +12,6 @@ void stats_panel_init(lv_obj_t* panel);
|
|||||||
void printer_panel_init(lv_obj_t* panel);
|
void printer_panel_init(lv_obj_t* panel);
|
||||||
void error_panel_init(lv_obj_t* panel);
|
void error_panel_init(lv_obj_t* panel);
|
||||||
void connecting_panel_init(lv_obj_t* panel);
|
void connecting_panel_init(lv_obj_t* panel);
|
||||||
|
void move_panel_slider_init(lv_obj_t* panel);
|
||||||
|
|
||||||
void settings_section_device(lv_obj_t* panel);
|
void settings_section_device(lv_obj_t* panel);
|
||||||
@@ -101,6 +101,7 @@
|
|||||||
<option value="esp32-8048S043C-SD">ESP32-8048S043 (4.3" 800x480 Capacitive)</option>
|
<option value="esp32-8048S043C-SD">ESP32-8048S043 (4.3" 800x480 Capacitive)</option>
|
||||||
<option value="esp32-8048S043C-SD-alt">ESP32-8048S043 Alt (4.3" 800x480 Capacitive)</option>
|
<option value="esp32-8048S043C-SD-alt">ESP32-8048S043 Alt (4.3" 800x480 Capacitive)</option>
|
||||||
<option value="esp32-CROWPANEL-28R">ESP32-CROWPANEL-28R (2.8" Resistive)</option>
|
<option value="esp32-CROWPANEL-28R">ESP32-CROWPANEL-28R (2.8" Resistive)</option>
|
||||||
|
<option value="esp32-CROWPANEL-35C">ESP32-CROWPANEL-35C (3.5" Capacitive)</option>
|
||||||
</select>
|
</select>
|
||||||
<span id="install-btn"></span>
|
<span id="install-btn"></span>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
10
ci.py
10
ci.py
@@ -34,19 +34,19 @@ def get_manifest(base_path : str, device_name : str):
|
|||||||
"parts": [
|
"parts": [
|
||||||
{
|
{
|
||||||
"path": f"{base_path}/bootloader.bin",
|
"path": f"{base_path}/bootloader.bin",
|
||||||
"offset": 4096
|
"offset": 0 if device_name in ESP_S3_CHIPS else 0x1000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": f"{base_path}/partitions.bin",
|
"path": f"{base_path}/partitions.bin",
|
||||||
"offset": 32768
|
"offset": 0x8000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": f"{base_path}/boot_app0.bin",
|
"path": f"{base_path}/boot_app0.bin",
|
||||||
"offset": 57344
|
"offset": 0xe000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": f"{base_path}/firmware.bin",
|
"path": f"{base_path}/firmware.bin",
|
||||||
"offset": 65536
|
"offset": 0x10000
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ for port in CYD_PORTS:
|
|||||||
shutil.copy(os.path.join(os.path.expanduser("~"), ".platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin"), f"{port_path}/boot_app0.bin")
|
shutil.copy(os.path.join(os.path.expanduser("~"), ".platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin"), f"{port_path}/boot_app0.bin")
|
||||||
os.chdir(port_path)
|
os.chdir(port_path)
|
||||||
if (port in ESP_S3_CHIPS):
|
if (port in ESP_S3_CHIPS):
|
||||||
subprocess.run(["python3", "-m", "esptool", "--chip", "esp32s3", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "qio", "--flash_freq", "80m", "--flash_size", "16MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
|
subprocess.run(["python3", "-m", "esptool", "--chip", "esp32s3", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "80m", "--flash_size", "16MB", "0x0000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
|
||||||
else:
|
else:
|
||||||
subprocess.run(["python3", "-m", "esptool", "--chip", "esp32", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "40m", "--flash_size", "4MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
|
subprocess.run(["python3", "-m", "esptool", "--chip", "esp32", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "40m", "--flash_size", "4MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user