avrdude: Use a minimalistic embedded conf instead of an external file
This commit is contained in:
parent
fba4d109c8
commit
ffd7a3d933
12 changed files with 1717 additions and 14993 deletions
File diff suppressed because it is too large
Load diff
|
@ -72,12 +72,25 @@ if (MSVC)
|
||||||
windows/getopt.c
|
windows/getopt.c
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
add_library(avrdude STATIC ${AVRDUDE_SOURCES})
|
|
||||||
|
|
||||||
set(STANDALONE_SOURCES
|
add_executable(avrdude-conf-gen conf-generate.cpp)
|
||||||
main-standalone.c
|
|
||||||
|
# Config file embedding
|
||||||
|
add_custom_command(
|
||||||
|
DEPENDS avrdude-conf-gen ${CMAKE_CURRENT_SOURCE_DIR}/avrdude-slic3r.conf
|
||||||
|
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/avrdude-slic3r.conf.h
|
||||||
|
COMMAND $<TARGET_FILE:avrdude-conf-gen> avrdude-slic3r.conf avrdude_slic3r_conf > avrdude-slic3r.conf.h
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
add_executable(avrdude-slic3r ${STANDALONE_SOURCES})
|
|
||||||
|
add_custom_target(gen_conf_h
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/avrdude-slic3r.conf.h
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(avrdude STATIC ${AVRDUDE_SOURCES})
|
||||||
|
add_dependencies(avrdude gen_conf_h)
|
||||||
|
|
||||||
|
add_executable(avrdude-slic3r main-standalone.c)
|
||||||
target_link_libraries(avrdude-slic3r avrdude)
|
target_link_libraries(avrdude-slic3r avrdude)
|
||||||
set_target_properties(avrdude-slic3r PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
set_target_properties(avrdude-slic3r PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||||
|
|
||||||
|
|
424
src/avrdude/avrdude-slic3r.conf
Normal file
424
src/avrdude/avrdude-slic3r.conf
Normal file
|
@ -0,0 +1,424 @@
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a basic minimal config file embedded into the avrdude-slic3r binary
|
||||||
|
# so that it can work in a standalone manner.
|
||||||
|
#
|
||||||
|
# Only the bits useful for Prusa3D devices were copied over from avrdude.conf
|
||||||
|
# If needed, more configuration can still be loaded into avrdude-slic3r
|
||||||
|
# via the -C command-line option.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
programmer
|
||||||
|
id = "wiring";
|
||||||
|
desc = "Wiring";
|
||||||
|
type = "wiring";
|
||||||
|
connection_type = serial;
|
||||||
|
;
|
||||||
|
|
||||||
|
programmer
|
||||||
|
id = "arduino";
|
||||||
|
desc = "Arduino";
|
||||||
|
type = "arduino";
|
||||||
|
connection_type = serial;
|
||||||
|
;
|
||||||
|
|
||||||
|
programmer
|
||||||
|
id = "avr109";
|
||||||
|
desc = "Atmel AppNote AVR109 Boot Loader";
|
||||||
|
type = "butterfly";
|
||||||
|
connection_type = serial;
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------------------------------
|
||||||
|
# ATmega2560
|
||||||
|
#------------------------------------------------------------
|
||||||
|
|
||||||
|
part
|
||||||
|
id = "m2560";
|
||||||
|
desc = "ATmega2560";
|
||||||
|
signature = 0x1e 0x98 0x01;
|
||||||
|
has_jtag = yes;
|
||||||
|
stk500_devcode = 0xB2;
|
||||||
|
# avr910_devcode = 0x43;
|
||||||
|
chip_erase_delay = 9000;
|
||||||
|
pagel = 0xD7;
|
||||||
|
bs2 = 0xA0;
|
||||||
|
reset = dedicated;
|
||||||
|
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
|
||||||
|
"x x x x x x x x x x x x x x x x";
|
||||||
|
|
||||||
|
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x x x x x x x x x";
|
||||||
|
|
||||||
|
timeout = 200;
|
||||||
|
stabdelay = 100;
|
||||||
|
cmdexedelay = 25;
|
||||||
|
synchloops = 32;
|
||||||
|
bytedelay = 0;
|
||||||
|
pollindex = 3;
|
||||||
|
pollvalue = 0x53;
|
||||||
|
predelay = 1;
|
||||||
|
postdelay = 1;
|
||||||
|
pollmethod = 1;
|
||||||
|
|
||||||
|
pp_controlstack =
|
||||||
|
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
|
||||||
|
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
|
||||||
|
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
|
||||||
|
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
|
||||||
|
hventerstabdelay = 100;
|
||||||
|
progmodedelay = 0;
|
||||||
|
latchcycles = 5;
|
||||||
|
togglevtg = 1;
|
||||||
|
poweroffdelay = 15;
|
||||||
|
resetdelayms = 1;
|
||||||
|
resetdelayus = 0;
|
||||||
|
hvleavestabdelay = 15;
|
||||||
|
chiperasepulsewidth = 0;
|
||||||
|
chiperasepolltimeout = 10;
|
||||||
|
programfusepulsewidth = 0;
|
||||||
|
programfusepolltimeout = 5;
|
||||||
|
programlockpulsewidth = 0;
|
||||||
|
programlockpolltimeout = 5;
|
||||||
|
|
||||||
|
idr = 0x31;
|
||||||
|
spmcr = 0x57;
|
||||||
|
rampz = 0x3b;
|
||||||
|
allowfullpagebitstream = no;
|
||||||
|
|
||||||
|
ocdrev = 4;
|
||||||
|
|
||||||
|
memory "eeprom"
|
||||||
|
paged = no; /* leave this "no" */
|
||||||
|
page_size = 8; /* for parallel programming */
|
||||||
|
size = 4096;
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
readback_p1 = 0x00;
|
||||||
|
readback_p2 = 0x00;
|
||||||
|
read = " 1 0 1 0 0 0 0 0",
|
||||||
|
" x x x x a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
write = " 1 1 0 0 0 0 0 0",
|
||||||
|
" x x x x a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
loadpage_lo = " 1 1 0 0 0 0 0 1",
|
||||||
|
" 0 0 0 0 0 0 0 0",
|
||||||
|
" 0 0 0 0 0 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
writepage = " 1 1 0 0 0 0 1 0",
|
||||||
|
" 0 0 x x a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 0 0 0",
|
||||||
|
" x x x x x x x x";
|
||||||
|
|
||||||
|
mode = 0x41;
|
||||||
|
delay = 10;
|
||||||
|
blocksize = 8;
|
||||||
|
readsize = 256;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "flash"
|
||||||
|
paged = yes;
|
||||||
|
size = 262144;
|
||||||
|
page_size = 256;
|
||||||
|
num_pages = 1024;
|
||||||
|
min_write_delay = 4500;
|
||||||
|
max_write_delay = 4500;
|
||||||
|
readback_p1 = 0x00;
|
||||||
|
readback_p2 = 0x00;
|
||||||
|
read_lo = " 0 0 1 0 0 0 0 0",
|
||||||
|
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
read_hi = " 0 0 1 0 1 0 0 0",
|
||||||
|
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
loadpage_lo = " 0 1 0 0 0 0 0 0",
|
||||||
|
" x x x x x x x x",
|
||||||
|
" x a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
loadpage_hi = " 0 1 0 0 1 0 0 0",
|
||||||
|
" x x x x x x x x",
|
||||||
|
" x a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
writepage = " 0 1 0 0 1 1 0 0",
|
||||||
|
"a15 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 x x x x x x x",
|
||||||
|
" x x x x x x x x";
|
||||||
|
|
||||||
|
load_ext_addr = " 0 1 0 0 1 1 0 1",
|
||||||
|
" 0 0 0 0 0 0 0 0",
|
||||||
|
" 0 0 0 0 0 0 0 a16",
|
||||||
|
" 0 0 0 0 0 0 0 0";
|
||||||
|
|
||||||
|
mode = 0x41;
|
||||||
|
delay = 10;
|
||||||
|
blocksize = 256;
|
||||||
|
readsize = 256;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "lfuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
|
||||||
|
"x x x x x x x x i i i i i i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "hfuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
|
||||||
|
"x x x x x x x x i i i i i i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "efuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
|
||||||
|
"x x x x x x x x x x x x x i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "lock"
|
||||||
|
size = 1;
|
||||||
|
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x x x o o o o o o";
|
||||||
|
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
|
||||||
|
"x x x x x x x x 1 1 i i i i i i";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "calibration"
|
||||||
|
size = 1;
|
||||||
|
read = "0 0 1 1 1 0 0 0 x x x x x x x x",
|
||||||
|
"0 0 0 0 0 0 0 0 o o o o o o o o";
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "signature"
|
||||||
|
size = 3;
|
||||||
|
read = "0 0 1 1 0 0 0 0 x x x x x x x x",
|
||||||
|
"x x x x x x a1 a0 o o o o o o o o";
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------------------------------
|
||||||
|
# ATmega32u4
|
||||||
|
#------------------------------------------------------------
|
||||||
|
|
||||||
|
part
|
||||||
|
id = "m32u4";
|
||||||
|
desc = "ATmega32U4";
|
||||||
|
signature = 0x1e 0x95 0x87;
|
||||||
|
usbpid = 0x2ff4;
|
||||||
|
has_jtag = yes;
|
||||||
|
# stk500_devcode = 0xB2;
|
||||||
|
# avr910_devcode = 0x43;
|
||||||
|
chip_erase_delay = 9000;
|
||||||
|
pagel = 0xD7;
|
||||||
|
bs2 = 0xA0;
|
||||||
|
reset = dedicated;
|
||||||
|
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
|
||||||
|
"x x x x x x x x x x x x x x x x";
|
||||||
|
|
||||||
|
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x x x x x x x x x";
|
||||||
|
|
||||||
|
timeout = 200;
|
||||||
|
stabdelay = 100;
|
||||||
|
cmdexedelay = 25;
|
||||||
|
synchloops = 32;
|
||||||
|
bytedelay = 0;
|
||||||
|
pollindex = 3;
|
||||||
|
pollvalue = 0x53;
|
||||||
|
predelay = 1;
|
||||||
|
postdelay = 1;
|
||||||
|
pollmethod = 1;
|
||||||
|
|
||||||
|
pp_controlstack =
|
||||||
|
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
|
||||||
|
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
|
||||||
|
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
|
||||||
|
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
|
||||||
|
hventerstabdelay = 100;
|
||||||
|
progmodedelay = 0;
|
||||||
|
latchcycles = 5;
|
||||||
|
togglevtg = 1;
|
||||||
|
poweroffdelay = 15;
|
||||||
|
resetdelayms = 1;
|
||||||
|
resetdelayus = 0;
|
||||||
|
hvleavestabdelay = 15;
|
||||||
|
chiperasepulsewidth = 0;
|
||||||
|
chiperasepolltimeout = 10;
|
||||||
|
programfusepulsewidth = 0;
|
||||||
|
programfusepolltimeout = 5;
|
||||||
|
programlockpulsewidth = 0;
|
||||||
|
programlockpolltimeout = 5;
|
||||||
|
|
||||||
|
idr = 0x31;
|
||||||
|
spmcr = 0x57;
|
||||||
|
rampz = 0x3b;
|
||||||
|
allowfullpagebitstream = no;
|
||||||
|
|
||||||
|
ocdrev = 3;
|
||||||
|
|
||||||
|
memory "eeprom"
|
||||||
|
paged = no; /* leave this "no" */
|
||||||
|
page_size = 4; /* for parallel programming */
|
||||||
|
size = 1024;
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
readback_p1 = 0x00;
|
||||||
|
readback_p2 = 0x00;
|
||||||
|
read = " 1 0 1 0 0 0 0 0",
|
||||||
|
" x x x x x a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
write = " 1 1 0 0 0 0 0 0",
|
||||||
|
" x x x x x a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
loadpage_lo = " 1 1 0 0 0 0 0 1",
|
||||||
|
" 0 0 0 0 0 0 0 0",
|
||||||
|
" 0 0 0 0 0 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
writepage = " 1 1 0 0 0 0 1 0",
|
||||||
|
" 0 0 x x x a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 0 0 0",
|
||||||
|
" x x x x x x x x";
|
||||||
|
|
||||||
|
mode = 0x41;
|
||||||
|
delay = 20;
|
||||||
|
blocksize = 4;
|
||||||
|
readsize = 256;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "flash"
|
||||||
|
paged = yes;
|
||||||
|
size = 32768;
|
||||||
|
page_size = 128;
|
||||||
|
num_pages = 256;
|
||||||
|
min_write_delay = 4500;
|
||||||
|
max_write_delay = 4500;
|
||||||
|
readback_p1 = 0x00;
|
||||||
|
readback_p2 = 0x00;
|
||||||
|
read_lo = " 0 0 1 0 0 0 0 0",
|
||||||
|
" 0 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
read_hi = " 0 0 1 0 1 0 0 0",
|
||||||
|
" 0 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 a6 a5 a4 a3 a2 a1 a0",
|
||||||
|
" o o o o o o o o";
|
||||||
|
|
||||||
|
loadpage_lo = " 0 1 0 0 0 0 0 0",
|
||||||
|
" x x x x x x x x",
|
||||||
|
" x x a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
loadpage_hi = " 0 1 0 0 1 0 0 0",
|
||||||
|
" x x x x x x x x",
|
||||||
|
" x x a5 a4 a3 a2 a1 a0",
|
||||||
|
" i i i i i i i i";
|
||||||
|
|
||||||
|
writepage = " 0 1 0 0 1 1 0 0",
|
||||||
|
" a15 a14 a13 a12 a11 a10 a9 a8",
|
||||||
|
" a7 a6 x x x x x x",
|
||||||
|
" x x x x x x x x";
|
||||||
|
|
||||||
|
mode = 0x41;
|
||||||
|
delay = 6;
|
||||||
|
blocksize = 128;
|
||||||
|
readsize = 256;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "lfuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
|
||||||
|
"x x x x x x x x i i i i i i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "hfuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
|
||||||
|
"x x x x x x x x i i i i i i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "efuse"
|
||||||
|
size = 1;
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
|
||||||
|
"x x x x x x x x x x x x i i i i";
|
||||||
|
|
||||||
|
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
|
||||||
|
"x x x x x x x x o o o o o o o o";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "lock"
|
||||||
|
size = 1;
|
||||||
|
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
|
||||||
|
"x x x x x x x x x x o o o o o o";
|
||||||
|
|
||||||
|
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
|
||||||
|
"x x x x x x x x 1 1 i i i i i i";
|
||||||
|
min_write_delay = 9000;
|
||||||
|
max_write_delay = 9000;
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "calibration"
|
||||||
|
size = 1;
|
||||||
|
read = "0 0 1 1 1 0 0 0 x x x x x x x x",
|
||||||
|
"0 0 0 0 0 0 0 0 o o o o o o o o";
|
||||||
|
;
|
||||||
|
|
||||||
|
memory "signature"
|
||||||
|
size = 3;
|
||||||
|
read = "0 0 1 1 0 0 0 0 x x x x x x x x",
|
||||||
|
"x x x x x x a1 a0 o o o o o o o o";
|
||||||
|
;
|
||||||
|
;
|
||||||
|
|
||||||
|
|
1188
src/avrdude/avrdude-slic3r.conf.h
Normal file
1188
src/avrdude/avrdude-slic3r.conf.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -42,7 +42,6 @@ static void avrdude_oom_handler(const char *context, void *user_p)
|
||||||
|
|
||||||
struct AvrDude::priv
|
struct AvrDude::priv
|
||||||
{
|
{
|
||||||
std::string sys_config;
|
|
||||||
std::deque<std::vector<std::string>> args;
|
std::deque<std::vector<std::string>> args;
|
||||||
bool cancelled = false;
|
bool cancelled = false;
|
||||||
int exit_code = 0;
|
int exit_code = 0;
|
||||||
|
@ -54,8 +53,6 @@ struct AvrDude::priv
|
||||||
|
|
||||||
std::thread avrdude_thread;
|
std::thread avrdude_thread;
|
||||||
|
|
||||||
priv(std::string &&sys_config) : sys_config(sys_config) {}
|
|
||||||
|
|
||||||
void set_handlers();
|
void set_handlers();
|
||||||
void unset_handlers();
|
void unset_handlers();
|
||||||
int run_one(const std::vector<std::string> &args);
|
int run_one(const std::vector<std::string> &args);
|
||||||
|
@ -110,7 +107,7 @@ int AvrDude::priv::run_one(const std::vector<std::string> &args) {
|
||||||
|
|
||||||
message_fn(command_line.c_str(), command_line.size());
|
message_fn(command_line.c_str(), command_line.size());
|
||||||
|
|
||||||
const auto res = ::avrdude_main(static_cast<int>(c_args.size()), c_args.data(), sys_config.c_str());
|
const auto res = ::avrdude_main(static_cast<int>(c_args.size()), c_args.data());
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +127,7 @@ int AvrDude::priv::run() {
|
||||||
|
|
||||||
// Public
|
// Public
|
||||||
|
|
||||||
AvrDude::AvrDude(std::string sys_config) : p(new priv(std::move(sys_config))) {}
|
AvrDude::AvrDude() : p(new priv()) {}
|
||||||
|
|
||||||
AvrDude::AvrDude(AvrDude &&other) : p(std::move(other.p)) {}
|
AvrDude::AvrDude(AvrDude &&other) : p(std::move(other.p)) {}
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,7 @@ public:
|
||||||
typedef std::function<void(const char * /* task */, unsigned /* progress */)> ProgressFn;
|
typedef std::function<void(const char * /* task */, unsigned /* progress */)> ProgressFn;
|
||||||
typedef std::function<void()> CompleteFn;
|
typedef std::function<void()> CompleteFn;
|
||||||
|
|
||||||
// Main c-tor, sys_config is the location of avrdude's main configuration file
|
AvrDude();
|
||||||
AvrDude(std::string sys_config);
|
|
||||||
AvrDude(AvrDude &&);
|
AvrDude(AvrDude &&);
|
||||||
AvrDude(const AvrDude &) = delete;
|
AvrDude(const AvrDude &) = delete;
|
||||||
AvrDude &operator=(AvrDude &&) = delete;
|
AvrDude &operator=(AvrDude &&) = delete;
|
||||||
|
|
|
@ -55,7 +55,7 @@ void avrdude_cancel();
|
||||||
#define MSG_TRACE (4) /* displayed with -vvvv, show trace commuication */
|
#define MSG_TRACE (4) /* displayed with -vvvv, show trace commuication */
|
||||||
#define MSG_TRACE2 (5) /* displayed with -vvvvv */
|
#define MSG_TRACE2 (5) /* displayed with -vvvvv */
|
||||||
|
|
||||||
int avrdude_main(int argc, char * argv [], const char *sys_config);
|
int avrdude_main(int argc, char * argv []);
|
||||||
|
|
||||||
#if defined(WIN32NATIVE)
|
#if defined(WIN32NATIVE)
|
||||||
|
|
||||||
|
|
41
src/avrdude/conf-generate.cpp
Normal file
41
src/avrdude/conf-generate.cpp
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <ios>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char const *argv[])
|
||||||
|
{
|
||||||
|
if (argc != 3) {
|
||||||
|
std::cerr << "Usage: " << argv[0] << " <file> <symbol name>" << std::endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* filename = argv[1];
|
||||||
|
const char* symbol = argv[2];
|
||||||
|
|
||||||
|
size_t size = 0;
|
||||||
|
std::fstream file(filename);
|
||||||
|
if (!file.good()) {
|
||||||
|
std::cerr << "Cannot read file: " << filename << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "/* WARN: This file is auto-generated from `" << filename << "` */" << std::endl;
|
||||||
|
std::cout << "unsigned char " << symbol << "[] = {";
|
||||||
|
|
||||||
|
char c;
|
||||||
|
std::cout << std::hex;
|
||||||
|
std::cout.fill('0');
|
||||||
|
for (file.get(c); !file.eof(); size++, file.get(c)) {
|
||||||
|
if (size % 12 == 0) { std::cout << "\n "; }
|
||||||
|
std::cout << "0x" << std::setw(2) << (unsigned)c << ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "\n 0, 0\n};\n";
|
||||||
|
|
||||||
|
std::cout << std::dec;
|
||||||
|
std::cout << "size_t " << symbol << "_size = " << size << ";" << std::endl;
|
||||||
|
std::cout << "size_t " << symbol << "_size_yy = " << size + 2 << ";" << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
#include "config_gram.h"
|
#include "config_gram.h"
|
||||||
|
|
||||||
|
#include "avrdude-slic3r.conf.h" // Embedded config file
|
||||||
|
|
||||||
char default_programmer[MAX_STR_CONST];
|
char default_programmer[MAX_STR_CONST];
|
||||||
char default_parallel[PATH_MAX];
|
char default_parallel[PATH_MAX];
|
||||||
char default_serial[PATH_MAX];
|
char default_serial[PATH_MAX];
|
||||||
|
@ -347,3 +349,33 @@ int read_config(const char * file)
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct yy_buffer_state *YY_BUFFER_STATE;
|
||||||
|
extern YY_BUFFER_STATE yy_scan_bytes(char *base, size_t size);
|
||||||
|
extern void yy_delete_buffer(YY_BUFFER_STATE b);
|
||||||
|
|
||||||
|
int read_config_builtin()
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
|
lineno = 1;
|
||||||
|
infile = "(builtin)";
|
||||||
|
|
||||||
|
// Note: Can't use yy_scan_buffer, it's buggy (?), leads to fread from a null FILE*
|
||||||
|
// and so unfortunatelly we have to use the copying variant here
|
||||||
|
YY_BUFFER_STATE buffer = yy_scan_bytes(avrdude_slic3r_conf, avrdude_slic3r_conf_size);
|
||||||
|
if (buffer == NULL) {
|
||||||
|
avrdude_message(MSG_INFO, "%s: read_config_builtin: Failed to initialize parsing buffer\n", progname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = yyparse();
|
||||||
|
yy_delete_buffer(buffer);
|
||||||
|
|
||||||
|
#ifdef HAVE_YYLEX_DESTROY
|
||||||
|
/* reset lexer and free any allocated memory */
|
||||||
|
yylex_destroy();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
|
@ -941,6 +941,7 @@ int init_config(void);
|
||||||
void cleanup_config(void);
|
void cleanup_config(void);
|
||||||
|
|
||||||
int read_config(const char * file);
|
int read_config(const char * file);
|
||||||
|
int read_config_builtin();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -426,7 +426,7 @@ static int cleanup_main(int status)
|
||||||
/*
|
/*
|
||||||
* main routine
|
* main routine
|
||||||
*/
|
*/
|
||||||
int avrdude_main(int argc, char * argv [], const char *sys_config)
|
int avrdude_main(int argc, char * argv [])
|
||||||
{
|
{
|
||||||
int rc; /* general return code checking */
|
int rc; /* general return code checking */
|
||||||
int exitrc; /* exit code for main() */
|
int exitrc; /* exit code for main() */
|
||||||
|
@ -807,13 +807,16 @@ int avrdude_main(int argc, char * argv [], const char *sys_config)
|
||||||
"%sCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/\n"
|
"%sCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/\n"
|
||||||
"%sCopyright (c) 2007-2014 Joerg Wunsch\n\n",
|
"%sCopyright (c) 2007-2014 Joerg Wunsch\n\n",
|
||||||
progname, version, __DATE__, __TIME__, progbuf, progbuf);
|
progname, version, __DATE__, __TIME__, progbuf, progbuf);
|
||||||
avrdude_message(MSG_NOTICE, "%sSystem wide configuration file is \"%s\"\n",
|
// avrdude_message(MSG_NOTICE, "%sSystem wide configuration file is \"%s\"\n",
|
||||||
progbuf, sys_config);
|
// progbuf, sys_config);
|
||||||
|
|
||||||
rc = read_config(sys_config);
|
// rc = read_config(sys_config);
|
||||||
|
rc = read_config_builtin();
|
||||||
|
avrdude_message(MSG_NOTICE, "\n\nread_config_builtin: %d\n\n", rc);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
avrdude_message(MSG_INFO, "%s: error reading system wide configuration file \"%s\"\n",
|
// avrdude_message(MSG_INFO, "%s: error reading system wide configuration file \"%s\"\n",
|
||||||
progname, sys_config);
|
// progname, sys_config);
|
||||||
|
avrdude_message(MSG_INFO, "%s: error reading built-in configuration file\n", progname);
|
||||||
return cleanup_main(1);
|
return cleanup_main(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,6 @@ struct FirmwareDialog::priv
|
||||||
// This is a shared pointer holding the background AvrDude task
|
// This is a shared pointer holding the background AvrDude task
|
||||||
// also serves as a status indication (it is set _iff_ the background task is running, otherwise it is reset).
|
// also serves as a status indication (it is set _iff_ the background task is running, otherwise it is reset).
|
||||||
AvrDude::Ptr avrdude;
|
AvrDude::Ptr avrdude;
|
||||||
std::string avrdude_config;
|
|
||||||
unsigned progress_tasks_done;
|
unsigned progress_tasks_done;
|
||||||
unsigned progress_tasks_bar;
|
unsigned progress_tasks_bar;
|
||||||
bool user_cancelled;
|
bool user_cancelled;
|
||||||
|
@ -134,7 +133,6 @@ struct FirmwareDialog::priv
|
||||||
btn_flash_label_flashing(_(L("Cancel"))),
|
btn_flash_label_flashing(_(L("Cancel"))),
|
||||||
label_status_flashing(_(L("Flashing in progress. Please do not disconnect the printer!"))),
|
label_status_flashing(_(L("Flashing in progress. Please do not disconnect the printer!"))),
|
||||||
timer_pulse(q),
|
timer_pulse(q),
|
||||||
avrdude_config((fs::path(::Slic3r::resources_dir()) / "avrdude" / "avrdude.conf").string()),
|
|
||||||
progress_tasks_done(0),
|
progress_tasks_done(0),
|
||||||
progress_tasks_bar(0),
|
progress_tasks_bar(0),
|
||||||
user_cancelled(false),
|
user_cancelled(false),
|
||||||
|
@ -553,7 +551,7 @@ void FirmwareDialog::priv::perform_upload()
|
||||||
flashing_start(hex_file.device == HexFile::DEV_MK3 ? 2 : 1);
|
flashing_start(hex_file.device == HexFile::DEV_MK3 ? 2 : 1);
|
||||||
|
|
||||||
// Init the avrdude object
|
// Init the avrdude object
|
||||||
AvrDude avrdude(avrdude_config);
|
AvrDude avrdude;
|
||||||
|
|
||||||
// It is ok here to use the q-pointer to the FirmwareDialog
|
// It is ok here to use the q-pointer to the FirmwareDialog
|
||||||
// because the dialog ensures it doesn't exit before the background thread is done.
|
// because the dialog ensures it doesn't exit before the background thread is done.
|
||||||
|
|
Loading…
Reference in a new issue