update flasher
This commit is contained in:
@@ -29,7 +29,8 @@ socketio = SocketIO(app, cors_allowed_origins="*")
|
||||
flash_status = {
|
||||
'running': False,
|
||||
'output': [],
|
||||
'success': None
|
||||
'success': None,
|
||||
'progress': 0
|
||||
}
|
||||
|
||||
# Client connection tracking
|
||||
@@ -96,7 +97,7 @@ def flash_firmware():
|
||||
zip_file.extractall(temp_dir)
|
||||
|
||||
# Start flash in background thread
|
||||
flash_status = {'running': True, 'output': [], 'success': None}
|
||||
flash_status = {'running': True, 'output': [], 'success': None, 'progress': 0}
|
||||
thread = threading.Thread(
|
||||
target=flash_worker,
|
||||
args=(temp_dir, port, chip, baud, flash_mode, flash_freq, flash_size)
|
||||
@@ -169,6 +170,7 @@ def shutdown_server():
|
||||
def flash_worker(temp_dir, port, chip, baud, flash_mode, flash_freq, flash_size):
|
||||
"""Background worker for flashing firmware"""
|
||||
global flash_status
|
||||
import re
|
||||
|
||||
try:
|
||||
# Define file paths
|
||||
@@ -217,9 +219,24 @@ def flash_worker(temp_dir, port, chip, baud, flash_mode, flash_freq, flash_size)
|
||||
universal_newlines=True
|
||||
)
|
||||
|
||||
# Regex to parse progress lines
|
||||
# Example: "Writing at 0x0011325c... (85 %)"
|
||||
# or "Writing at 0x0011325c [========================> ] 85.3% 622592/730050 bytes..."
|
||||
progress_pattern = re.compile(r'(\d+(?:\.\d+)?)\s*%')
|
||||
|
||||
# Stream output
|
||||
for line in process.stdout:
|
||||
flash_status['output'].append(line.rstrip())
|
||||
line_stripped = line.rstrip()
|
||||
flash_status['output'].append(line_stripped)
|
||||
|
||||
# Try to extract progress percentage
|
||||
match = progress_pattern.search(line_stripped)
|
||||
if match:
|
||||
try:
|
||||
percent = float(match.group(1))
|
||||
flash_status['progress'] = percent
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
process.wait()
|
||||
|
||||
@@ -227,6 +244,7 @@ def flash_worker(temp_dir, port, chip, baud, flash_mode, flash_freq, flash_size)
|
||||
flash_status['output'].append("")
|
||||
flash_status['output'].append("✓ Flash completed successfully!")
|
||||
flash_status['success'] = True
|
||||
flash_status['progress'] = 100
|
||||
else:
|
||||
flash_status['output'].append("")
|
||||
flash_status['output'].append(f"✗ Flash failed with return code {process.returncode}")
|
||||
|
||||
Reference in New Issue
Block a user