firestarter 1.3.2__tar.gz → 1.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {firestarter-1.3.2 → firestarter-1.3.3}/PKG-INFO +1 -1
- firestarter-1.3.3/firestarter/__init__.py +1 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/eprom_operations.py +86 -68
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/firmware.py +3 -2
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/hardware.py +22 -9
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/serial_comm.py +56 -38
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/PKG-INFO +1 -1
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter_test.sh +4 -4
- {firestarter-1.3.2 → firestarter-1.3.3}/write_test.sh +1 -1
- firestarter-1.3.2/firestarter/__init__.py +0 -1
- {firestarter-1.3.2 → firestarter-1.3.3}/.github/scripts/update_version.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/.github/workflows/publish.yml +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/.github/workflows/release.yml +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/.gitignore +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/.vscode/launch.json +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/LICENSE +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/MANIFEST.in +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/README.md +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/doc/package-details.md +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/doc/protocol-id.md +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/avr_tool.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/config.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/data/avrdude.conf +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/data/database.json +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/data/pin-maps.json +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/database.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/eprom_info.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/ic_layout.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/main.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter/utils.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/SOURCES.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/dependency_links.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/entry_points.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/requires.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/firestarter.egg-info/top_level.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/pyproject.toml +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/requirements.txt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/setup.cfg +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/test.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/things.md +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/tools/infoic.xml +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/tools/parse_db.py +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/tools/pin-layouts.odt +0 -0
- {firestarter-1.3.2 → firestarter-1.3.3}/tools/verified.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.3.3"
|
|
@@ -11,13 +11,13 @@ import os
|
|
|
11
11
|
import time
|
|
12
12
|
|
|
13
13
|
try:
|
|
14
|
-
from .serial_comm import find_programmer, wait_for_response
|
|
15
|
-
from .database import get_eprom
|
|
16
|
-
from .utils import extract_hex_to_decimal,
|
|
14
|
+
from .serial_comm import find_programmer, wait_for_response, consume_response
|
|
15
|
+
from .database import get_eprom, search_chip_id
|
|
16
|
+
from .utils import extract_hex_to_decimal, print_progress_bar
|
|
17
17
|
except ImportError:
|
|
18
|
-
from serial_comm import find_programmer, wait_for_response
|
|
19
|
-
from database import get_eprom
|
|
20
|
-
from utils import extract_hex_to_decimal,
|
|
18
|
+
from serial_comm import find_programmer, wait_for_response, consume_response
|
|
19
|
+
from database import get_eprom, search_chip_id
|
|
20
|
+
from utils import extract_hex_to_decimal, print_progress_bar
|
|
21
21
|
|
|
22
22
|
# Constants
|
|
23
23
|
BUFFER_SIZE = 512
|
|
@@ -48,7 +48,7 @@ def read(eprom_name, output_file=None, force=False):
|
|
|
48
48
|
eprom["force"] = True
|
|
49
49
|
|
|
50
50
|
if not output_file:
|
|
51
|
-
output_file = f"{eprom_name}.bin"
|
|
51
|
+
output_file = f"{eprom_name.upper()}.bin"
|
|
52
52
|
print(f"Reading EPROM {eprom_name}, saving to {output_file}")
|
|
53
53
|
|
|
54
54
|
ser = find_programmer(eprom)
|
|
@@ -78,24 +78,26 @@ def read(eprom_name, output_file=None, force=False):
|
|
|
78
78
|
prefix=f"Address: 0x{from_address:X} - 0x{to_address:X}",
|
|
79
79
|
suffix=f"- {time.time() - start_time:.2f}s",
|
|
80
80
|
)
|
|
81
|
+
|
|
81
82
|
ser.write("OK".encode("ascii"))
|
|
82
83
|
ser.flush()
|
|
83
84
|
elif resp == "OK":
|
|
84
85
|
break
|
|
85
86
|
elif resp == "ERROR":
|
|
86
|
-
print(f"\nError: {info}")
|
|
87
|
-
return 1
|
|
88
|
-
else:
|
|
89
|
-
print(f"\nUnexpected response: {info}")
|
|
87
|
+
# print(f"\nError: {info}")
|
|
90
88
|
return 1
|
|
89
|
+
# else:
|
|
90
|
+
# print(f"\nUnexpected response: {info}")
|
|
91
|
+
# return 1
|
|
91
92
|
|
|
92
93
|
print(f"\nRead complete in: {time.time() - start_time:.2f} seconds")
|
|
93
94
|
print(f"Data saved to {output_file}")
|
|
94
95
|
except Exception as e:
|
|
95
96
|
print(f"Error while reading: {e}")
|
|
96
97
|
finally:
|
|
98
|
+
consume_response(ser)
|
|
97
99
|
ser.close()
|
|
98
|
-
|
|
100
|
+
return 0
|
|
99
101
|
|
|
100
102
|
def write(eprom_name, input_file, address=None, ignore_blank_check=False, force=False):
|
|
101
103
|
"""
|
|
@@ -146,46 +148,42 @@ def write(eprom_name, input_file, address=None, ignore_blank_check=False, force=
|
|
|
146
148
|
while True:
|
|
147
149
|
data = file.read(BUFFER_SIZE)
|
|
148
150
|
if not data:
|
|
151
|
+
print("\nEnd of file reached")
|
|
149
152
|
ser.write(int(0).to_bytes(2, byteorder="big"))
|
|
150
153
|
ser.flush()
|
|
151
154
|
resp, info = wait_for_response(ser)
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
while resp != "OK":
|
|
156
|
+
if resp == "ERROR":
|
|
157
|
+
return 1
|
|
158
|
+
resp, info = wait_for_response(ser)
|
|
154
159
|
break
|
|
155
160
|
|
|
156
161
|
ser.write(len(data).to_bytes(2, byteorder="big"))
|
|
157
162
|
ser.flush()
|
|
158
163
|
resp, info = wait_for_response(ser)
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
while resp != "OK":
|
|
165
|
+
if resp == "ERROR":
|
|
166
|
+
return 1
|
|
167
|
+
resp, info = wait_for_response(ser)
|
|
168
|
+
|
|
162
169
|
nr_bytes = ser.write(data)
|
|
163
170
|
bytes_written += nr_bytes
|
|
164
171
|
ser.flush()
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if resp == "
|
|
169
|
-
# percent = int(bytes_written / file_size * 100)
|
|
170
|
-
# print_progress(
|
|
171
|
-
# percent,
|
|
172
|
-
# bytes_written - nr_bytes + write_address,
|
|
173
|
-
# bytes_written + write_address,
|
|
174
|
-
# )
|
|
175
|
-
from_address = bytes_written - nr_bytes + write_address
|
|
176
|
-
to_address = bytes_written + write_address
|
|
177
|
-
print_progress_bar(
|
|
178
|
-
bytes_written / BUFFER_SIZE,
|
|
179
|
-
total_iterations,
|
|
180
|
-
prefix=f"Address: 0x{from_address:X} - 0x{to_address:X}",
|
|
181
|
-
suffix=f"- {time.time() - start_time:.2f}s",
|
|
182
|
-
)
|
|
183
|
-
break
|
|
184
|
-
elif resp == "ERROR":
|
|
185
|
-
print(f"\nError: {info}")
|
|
172
|
+
# print(f"Bytes written: {bytes_written}")
|
|
173
|
+
resp, info = wait_for_response(ser)
|
|
174
|
+
while resp != "OK":
|
|
175
|
+
if resp == "ERROR":
|
|
186
176
|
return 1
|
|
187
|
-
|
|
188
|
-
|
|
177
|
+
resp, info = wait_for_response(ser)
|
|
178
|
+
|
|
179
|
+
from_address = bytes_written - nr_bytes + write_address
|
|
180
|
+
to_address = bytes_written + write_address
|
|
181
|
+
print_progress_bar(
|
|
182
|
+
bytes_written / BUFFER_SIZE,
|
|
183
|
+
total_iterations,
|
|
184
|
+
prefix=f"Address: 0x{from_address:X} - 0x{to_address:X}",
|
|
185
|
+
suffix=f"- {time.time() - start_time:.2f}s",
|
|
186
|
+
)
|
|
189
187
|
if bytes_written == mem_size:
|
|
190
188
|
break
|
|
191
189
|
|
|
@@ -194,6 +192,7 @@ def write(eprom_name, input_file, address=None, ignore_blank_check=False, force=
|
|
|
194
192
|
print(f"Error while writing: {e}")
|
|
195
193
|
return 1
|
|
196
194
|
finally:
|
|
195
|
+
consume_response(ser)
|
|
197
196
|
ser.close()
|
|
198
197
|
return 0
|
|
199
198
|
|
|
@@ -211,15 +210,21 @@ def erase(eprom_name):
|
|
|
211
210
|
return 1
|
|
212
211
|
|
|
213
212
|
eprom["state"] = STATE_ERASE
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
213
|
+
try:
|
|
214
|
+
ser = find_programmer(eprom)
|
|
215
|
+
if not ser:
|
|
216
|
+
return 1
|
|
217
|
+
|
|
218
|
+
resp, info = wait_for_response(ser)
|
|
219
|
+
if resp == "OK":
|
|
220
|
+
print(f"EPROM {eprom_name} erased successfully.")
|
|
221
|
+
return 0
|
|
222
|
+
elif resp == "ERROR":
|
|
223
|
+
print(f"Error erasing EPROM {eprom_name}")
|
|
224
|
+
return 1
|
|
225
|
+
finally:
|
|
226
|
+
consume_response(ser)
|
|
227
|
+
ser.close()
|
|
223
228
|
|
|
224
229
|
|
|
225
230
|
def check_chip_id(eprom_name):
|
|
@@ -238,17 +243,26 @@ def check_chip_id(eprom_name):
|
|
|
238
243
|
ser = find_programmer(eprom)
|
|
239
244
|
if not ser:
|
|
240
245
|
return 1
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
print(f"Chip ID check failed for {eprom_name}: {info}")
|
|
246
|
+
try:
|
|
247
|
+
resp, info = wait_for_response(ser)
|
|
248
|
+
if resp == "OK":
|
|
249
|
+
print(f"Chip ID check passed for {eprom_name}: {info}")
|
|
250
|
+
return 0
|
|
247
251
|
chip_id = extract_hex_to_decimal(info)
|
|
248
|
-
|
|
249
|
-
f"
|
|
250
|
-
|
|
251
|
-
|
|
252
|
+
if not chip_id:
|
|
253
|
+
print(f"Failed to extract chip ID.")
|
|
254
|
+
else:
|
|
255
|
+
eproms = search_chip_id(chip_id)
|
|
256
|
+
if not eproms:
|
|
257
|
+
print(f"Chip ID 0x{chip_id:x} not found in the database.")
|
|
258
|
+
else:
|
|
259
|
+
print(f"Chip ID 0x{chip_id:x} found in the database:")
|
|
260
|
+
for eprom in eproms:
|
|
261
|
+
print(eprom)
|
|
262
|
+
return 1
|
|
263
|
+
finally:
|
|
264
|
+
consume_response(ser)
|
|
265
|
+
ser.close()
|
|
252
266
|
|
|
253
267
|
def blank_check(eprom_name):
|
|
254
268
|
"""
|
|
@@ -263,12 +277,16 @@ def blank_check(eprom_name):
|
|
|
263
277
|
return 1
|
|
264
278
|
|
|
265
279
|
eprom["state"] = STATE_CHECK_BLANK
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
280
|
+
try:
|
|
281
|
+
ser = find_programmer(eprom)
|
|
282
|
+
if not ser:
|
|
283
|
+
return 1
|
|
284
|
+
|
|
285
|
+
resp, info = wait_for_response(ser)
|
|
286
|
+
if resp == "OK":
|
|
287
|
+
print(f"EPROM {eprom_name} is blank.")
|
|
288
|
+
elif resp == "ERROR":
|
|
289
|
+
print(f"Blank check failed for {eprom_name}")
|
|
290
|
+
finally:
|
|
291
|
+
consume_response(ser)
|
|
292
|
+
ser.close()
|
|
@@ -11,12 +11,12 @@ import os
|
|
|
11
11
|
import requests
|
|
12
12
|
|
|
13
13
|
try:
|
|
14
|
-
from .serial_comm import find_programmer, wait_for_response, find_comports
|
|
14
|
+
from .serial_comm import find_programmer, wait_for_response, find_comports, consume_response
|
|
15
15
|
from .config import get_config_value, set_config_value
|
|
16
16
|
from .avr_tool import Avrdude
|
|
17
17
|
from .utils import verbose
|
|
18
18
|
except ImportError:
|
|
19
|
-
from serial_comm import find_programmer, wait_for_response, find_comports
|
|
19
|
+
from serial_comm import find_programmer, wait_for_response, find_comports, consume_response
|
|
20
20
|
from config import get_config_value, set_config_value
|
|
21
21
|
from avr_tool import Avrdude
|
|
22
22
|
from utils import verbose
|
|
@@ -103,6 +103,7 @@ def firmware_check(port=None):
|
|
|
103
103
|
)
|
|
104
104
|
return False, ser.portstr, url
|
|
105
105
|
finally:
|
|
106
|
+
consume_response(ser)
|
|
106
107
|
ser.close()
|
|
107
108
|
|
|
108
109
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import time
|
|
2
|
+
|
|
2
3
|
try:
|
|
3
|
-
from .serial_comm import find_programmer, wait_for_response
|
|
4
|
+
from .serial_comm import find_programmer, wait_for_response, consume_response
|
|
4
5
|
except ImportError:
|
|
5
|
-
from serial_comm import find_programmer, wait_for_response
|
|
6
|
+
from serial_comm import find_programmer, wait_for_response, consume_response
|
|
6
7
|
|
|
7
8
|
STATE_READ_VPP = 11
|
|
8
9
|
STATE_READ_VPE = 12
|
|
@@ -32,6 +33,7 @@ def hardware():
|
|
|
32
33
|
print(f"Failed to read hardware revision. {resp}: {version}")
|
|
33
34
|
return 1
|
|
34
35
|
finally:
|
|
36
|
+
consume_response(ser)
|
|
35
37
|
ser.close()
|
|
36
38
|
return 0
|
|
37
39
|
|
|
@@ -53,15 +55,20 @@ def config(rev=None, r1=None, r2=None):
|
|
|
53
55
|
ser = find_programmer(data)
|
|
54
56
|
if not ser:
|
|
55
57
|
return 1
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
try:
|
|
59
|
+
# ser.write("OK".encode("ascii"))
|
|
60
|
+
r, version = wait_for_response(ser)
|
|
61
|
+
if r == "OK":
|
|
62
|
+
print(f"Config: {version}")
|
|
63
|
+
else:
|
|
64
|
+
# print(r)
|
|
65
|
+
return 1
|
|
66
|
+
finally:
|
|
67
|
+
consume_response(ser)
|
|
68
|
+
ser.close()
|
|
63
69
|
return 0
|
|
64
70
|
|
|
71
|
+
|
|
65
72
|
def read_vpp(timeout=None):
|
|
66
73
|
"""
|
|
67
74
|
Reads the VPP voltage from the programmer.
|
|
@@ -94,6 +101,7 @@ def read_voltage(state, timeout=None):
|
|
|
94
101
|
print(f"Error reading {type} voltage: {info}")
|
|
95
102
|
return 1
|
|
96
103
|
ser.write("OK".encode("ascii"))
|
|
104
|
+
ser.flush()
|
|
97
105
|
|
|
98
106
|
if timeout:
|
|
99
107
|
start = time.time()
|
|
@@ -104,5 +112,10 @@ def read_voltage(state, timeout=None):
|
|
|
104
112
|
print()
|
|
105
113
|
return 0
|
|
106
114
|
ser.write("OK".encode("ascii"))
|
|
115
|
+
ser.flush()
|
|
116
|
+
except Exception as e:
|
|
117
|
+
print(f"Error while reading {type} voltage: {e}")
|
|
107
118
|
finally:
|
|
119
|
+
consume_response(ser)
|
|
108
120
|
ser.close()
|
|
121
|
+
return 1
|
|
@@ -54,10 +54,8 @@ def check_port(port, data, baud_rate=BAUD_RATE):
|
|
|
54
54
|
res, msg = wait_for_response(ser)
|
|
55
55
|
while res != "OK":
|
|
56
56
|
if res == "ERROR":
|
|
57
|
-
raise Exception(msg)
|
|
58
|
-
if res == "TIMEOUT_ERROR":
|
|
59
57
|
return None
|
|
60
|
-
|
|
58
|
+
res, msg = wait_for_response(ser)
|
|
61
59
|
|
|
62
60
|
if verbose():
|
|
63
61
|
print(f"Programmer: {msg}")
|
|
@@ -143,6 +141,54 @@ def find_programmer(data, port=None):
|
|
|
143
141
|
return None
|
|
144
142
|
|
|
145
143
|
|
|
144
|
+
def read_response(ser):
|
|
145
|
+
while ser.in_waiting > 0:
|
|
146
|
+
byte_array = ser.readline()
|
|
147
|
+
res = read_filtered_bytes(byte_array)
|
|
148
|
+
type = None
|
|
149
|
+
msg = None
|
|
150
|
+
try:
|
|
151
|
+
if res:
|
|
152
|
+
if "OK:" in res:
|
|
153
|
+
msg = res.split("OK:")[-1].strip()
|
|
154
|
+
type = "OK"
|
|
155
|
+
return
|
|
156
|
+
elif "INFO:" in res:
|
|
157
|
+
msg = res.split("INFO:")[-1].strip()
|
|
158
|
+
type = "INFO"
|
|
159
|
+
return
|
|
160
|
+
elif "DEBUG:" in res:
|
|
161
|
+
msg = res.split("DEBUG:")[-1].strip()
|
|
162
|
+
type = "DEBUG"
|
|
163
|
+
return
|
|
164
|
+
elif "ERROR:" in res:
|
|
165
|
+
msg = res.split("ERROR:")[-1].strip()
|
|
166
|
+
type = "ERROR"
|
|
167
|
+
return
|
|
168
|
+
elif "WARN:" in res:
|
|
169
|
+
msg = res.split("WARN:")[-1].strip()
|
|
170
|
+
type = "WARN"
|
|
171
|
+
return
|
|
172
|
+
elif "DATA:" in res:
|
|
173
|
+
msg = res.split("DATA:")[-1].strip()
|
|
174
|
+
type = "DATA"
|
|
175
|
+
return
|
|
176
|
+
else:
|
|
177
|
+
return
|
|
178
|
+
finally:
|
|
179
|
+
write_feedback(type, msg)
|
|
180
|
+
# if type == "ERROR":
|
|
181
|
+
# raise Exception(msg)
|
|
182
|
+
return type, msg
|
|
183
|
+
return None, None
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def consume_response(ser):
|
|
187
|
+
time.sleep(0.1)
|
|
188
|
+
while read_response(ser)[0] != None:
|
|
189
|
+
time.sleep(0.3)
|
|
190
|
+
|
|
191
|
+
|
|
146
192
|
def wait_for_response(ser):
|
|
147
193
|
"""
|
|
148
194
|
Waits for a response from the serial connection.
|
|
@@ -155,41 +201,13 @@ def wait_for_response(ser):
|
|
|
155
201
|
"""
|
|
156
202
|
timeout = time.time() + 2 # Set timeout period
|
|
157
203
|
while time.time() < timeout:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
type = None
|
|
163
|
-
try:
|
|
164
|
-
if res:
|
|
165
|
-
if "OK:" in res:
|
|
166
|
-
msg = res.split("OK:")[-1].strip()
|
|
167
|
-
type = "OK"
|
|
168
|
-
return
|
|
169
|
-
elif "INFO:" in res:
|
|
170
|
-
msg = res.split("INFO:")[-1].strip()
|
|
171
|
-
write_feedback("INFO", msg)
|
|
172
|
-
# return "INFO", msg
|
|
173
|
-
elif "ERROR:" in res:
|
|
174
|
-
msg = res.split("ERROR:")[-1].strip()
|
|
175
|
-
type = "ERROR"
|
|
176
|
-
return
|
|
177
|
-
elif "WARN:" in res:
|
|
178
|
-
msg = res.split("WARN:")[-1].strip()
|
|
179
|
-
type = "WARN"
|
|
180
|
-
return
|
|
181
|
-
elif "DATA:" in res:
|
|
182
|
-
msg = res.split("DATA:")[-1].strip()
|
|
183
|
-
type = "DATA"
|
|
184
|
-
return
|
|
185
|
-
timeout = time.time() + 2 # Reset timeout
|
|
186
|
-
finally:
|
|
187
|
-
write_feedback(type, msg)
|
|
188
|
-
if type:
|
|
189
|
-
return type, msg
|
|
204
|
+
type, msg = read_response(ser)
|
|
205
|
+
if type and type != "INFO" and type != "DEBUG" and type != "WARN":
|
|
206
|
+
return type, msg
|
|
207
|
+
# time.sleep(0.1)
|
|
190
208
|
msg = f"Timeout, no response on {ser.portstr}"
|
|
191
|
-
write_feedback("
|
|
192
|
-
|
|
209
|
+
write_feedback("Error", msg)
|
|
210
|
+
raise Exception(msg)
|
|
193
211
|
|
|
194
212
|
|
|
195
213
|
def write_feedback(type, msg):
|
|
@@ -199,7 +217,7 @@ def write_feedback(type, msg):
|
|
|
199
217
|
Args:
|
|
200
218
|
msg (str): The feedback message.
|
|
201
219
|
"""
|
|
202
|
-
if msg and (verbose() or type == "ERROR" or type == "WARN"):
|
|
220
|
+
if msg and (verbose() or (type.upper() == "ERROR" or type == "WARN")):
|
|
203
221
|
print(f"{type}: {msg}")
|
|
204
222
|
|
|
205
223
|
|
|
@@ -12,7 +12,7 @@ if [ ! -d "$TEMP_DIR" ]; then
|
|
|
12
12
|
fi
|
|
13
13
|
|
|
14
14
|
# Trap to clean up the temporary files on exit or interrupt
|
|
15
|
-
trap "rm -rf $TEMP_DIR; echo 'Cleaned up temp files'; exit" EXIT
|
|
15
|
+
# trap "rm -rf $TEMP_DIR; echo 'Cleaned up temp files'; exit" EXIT
|
|
16
16
|
|
|
17
17
|
# Convert TARGET_NAME to uppercase
|
|
18
18
|
EPROM_NAME=$(echo "$EPROM_NAME" | tr '[:lower:]' '[:upper:]')
|
|
@@ -104,7 +104,7 @@ then
|
|
|
104
104
|
exit 1
|
|
105
105
|
fi
|
|
106
106
|
echo
|
|
107
|
-
sleep
|
|
107
|
+
sleep 1
|
|
108
108
|
echo "---------------------------------"
|
|
109
109
|
echo "VPP"
|
|
110
110
|
echo "---------------------------------"
|
|
@@ -115,7 +115,7 @@ then
|
|
|
115
115
|
exit 1
|
|
116
116
|
fi
|
|
117
117
|
echo
|
|
118
|
-
sleep
|
|
118
|
+
sleep 1
|
|
119
119
|
echo "---------------------------------"
|
|
120
120
|
echo "VPE"
|
|
121
121
|
echo "---------------------------------"
|
|
@@ -126,7 +126,7 @@ then
|
|
|
126
126
|
exit 1
|
|
127
127
|
fi
|
|
128
128
|
echo
|
|
129
|
-
sleep
|
|
129
|
+
sleep 1
|
|
130
130
|
|
|
131
131
|
# ------------------------------ FIRMWARE TESTS ------------------------------
|
|
132
132
|
|
|
@@ -15,7 +15,7 @@ fi
|
|
|
15
15
|
rm -f "$TEMP_DIR"/*
|
|
16
16
|
|
|
17
17
|
# Trap to clean up the temporary files on exit or interrupt
|
|
18
|
-
trap "rm -rf $TEMP_DIR; echo 'Cleaned up temp files'; exit" EXIT
|
|
18
|
+
# trap "rm -rf $TEMP_DIR; echo 'Cleaned up temp files'; exit" EXIT
|
|
19
19
|
|
|
20
20
|
# Convert TARGET_NAME to uppercase
|
|
21
21
|
EPROM_NAME=$(echo "$EPROM_NAME" | tr '[:lower:]' '[:upper:]')
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.3.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|