Commit Graph

996 Commits

Author SHA1 Message Date
Robert Pelnar
bd1e410228 New ML support - W25X20CL external spi flash support 2018-06-08 00:20:28 +02:00
PavelSindler
877f8f2a61
Merge pull request #795 from 3d-gussner/MK3_fix5
Fix warning: This is kind of important
2018-06-07 22:22:54 +02:00
PavelSindler
a15f0138de show estimated time to end of the print if available in gcode: initial version 2018-06-07 20:50:30 +02:00
PavelSindler
42cfcb2601
Merge pull request #794 from stahlfabrik/M860-enhanced
Improved M860 - now wait for cooling of PINDA, too
2018-06-06 12:01:06 +02:00
Marek Bel
eb1d17c3c6 Compile without c++11. 2018-06-05 21:55:54 +02:00
XPila
1290326210
Merge pull request #790 from PavelSindler/power_panic_flow_rate
power panic: extruder_multipliers added
2018-06-05 20:58:15 +02:00
XPila
6a8425f62d
Merge pull request #809 from mkbel/Use_Timer
Use timer
2018-06-05 20:54:41 +02:00
XPila
7f7f1e4560
Merge pull request #808 from zavorka/MK3
Eliminated the -Wliteral-suffix warnings from ultralcd.cpp
2018-06-05 20:53:03 +02:00
PavelSindler
d49c4508a7 removing some debug code 2018-06-05 20:39:42 +02:00
PavelSindler
264daaf715 typo fixed 2018-06-05 20:33:05 +02:00
PavelSindler
aacaf67eaa Crash detection/filament sensor: restore print from stored line number in case that we are printing over USB, retraction fix; debug: cmd queue on LCD 2018-06-05 20:28:41 +02:00
Marek Bel
01af8a806b Merge branch 'MK3' into Use_Timer 2018-06-05 19:03:11 +02:00
Marek Bel
f819392d10 Do not create static object in function. Saves 8B RAM and 16B flash, because there is no need to guard constructor against concurrent calls. 2018-06-05 18:38:25 +02:00
Marek Bel
7cc8b743c2 Add .gitignore. Setup doxyfile. Create project documentation main page. Document property of static object constructors on gcc-avr. 2018-06-05 18:30:02 +02:00
Marek Bel
75f048ac4b Add default doxyfile. 2018-06-05 18:23:48 +02:00
Marek Bel
5f033d5a1a Do not create static object in global function. Saves 8B RAM and 14B flash, because there is no need to guard constructor against concurrent calls. 2018-06-05 17:47:18 +02:00
Roman Beránek
e25b869b5e
Eliminated the -Wliteral-suffix warnings from ultralcd.cpp 2018-06-05 13:49:58 +02:00
PavelSindler
746ac17e4e debugging 2018-06-04 16:40:56 +02:00
Robert Pelnar
47c68c884c New ML support - fixed duplicate strings 2018-06-01 14:35:03 +02:00
Robert Pelnar
53d9d8bd8a New ML support - lang codes
+script tunning
2018-06-01 10:47:47 +02:00
3d-gussner
5004433b20 Fix warning: This is kind of important
Again another fix from https://github.com/prusa3d/Prusa-Firmware/pull/138 made by @Thess for the MK2 branch which i think is quite important.

Ardunio IDE 1.8.5 result with Compiler warnings set to "More" or "All"
```
sketch\Marlin_main.cpp:3265:44: warning: the address of 'retracted' will always evaluate as 'true' [-Waddress]

               if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover

                                            ^

sketch\Marlin_main.cpp:3265:82: warning: the address of 'retracted' will always evaluate as 'true' [-Waddress]

               if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover

                                                                                  ^

sketch\Marlin_main.cpp:3268:28: warning: the address of 'retracted' will always evaluate as 'true' [-Waddress]

                   retract(!retracted);

                            ^

sketch\Marlin_main.cpp:3870:15: warning: statement has no effect [-Wunused-value]
```

I don't know if that helps making small pull requests as they are easier to review or it would make sense to combine few more.

Prusa should really review this pull [request](https://github.com/prusa3d/Prusa-Firmware/pull/138) again for the MK3 branch, as it was one that made warnings disapear in the MK2 branch and made finding new flaws in the code much much easier.
2018-06-01 10:17:03 +02:00
Robert Pelnar
5a2b056d47 Merge remote-tracking branch 'upstream/MK3' into MK3-new_lang 2018-06-01 00:43:16 +02:00
Christoph Stahl
7c4fce7876 whitespace correction 2018-05-31 18:55:14 +02:00
Christoph Stahl
73708ec883 Improved M860 - now wait for cooling of PINDA, too
The M860 - wait for PINDA temperature - gcode has been improved. Until now it could only wait until the PINDA has been warmed up to a set temperature. Now it also can wait until the PINDA has cooled down to a set temperature. The calling syntax has not been changed at all. The logic now looks if the bed or hotend have a target temperature different from 0. If so, the code waits until PINDA has warmed up. Otherwise it waits until PINDA has cooled down.

Applications:
- Possibility to start a Print at exactly the right PINDA temperature. (Do not start the heater until PINDA is cooled down)
- Much easier manual temperature calibration (automating the wait for cool down in between calibration runs)
- Possibility for temp calibration verification on one heat bed by printing multiple objects with different PINDA temperatures one after the other
2018-05-31 16:41:59 +02:00
XPila
957b3cfac5
Merge pull request #783 from 3d-gussner/MK3_fix1
Fixed redefined warning
2018-05-31 14:21:41 +02:00
XPila
d70d38bb0c
Merge pull request #784 from 3d-gussner/MK3_fix2
Fixed unused variable c as in pull request #138
2018-05-31 14:15:17 +02:00
XPila
80c641ae5d
Merge pull request #789 from 3d-gussner/MK3_fix4
Fixed warning: invalid suffix on literal; C++11 requires a space betw…
2018-05-31 14:09:49 +02:00
tarikku
731fef3d32 Fix remaining forgotten comments 2018-05-30 23:15:01 +02:00
Robert Pelnar
77f3160531 language.h - debug output conditional translation 2018-05-30 20:15:43 +02:00
Robert Pelnar
37e575f4bc New ML support - debug output, bootloader
bootapp - automaticaly erase flash when necessary
+test code
2018-05-30 19:29:52 +02:00
PavelSindler
9104b0601a power panic: extruder_multipliers added 2018-05-30 18:59:33 +02:00
3d-gussner
eeca0f683b Fixed warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] 2018-05-30 16:06:22 +02:00
PavelSindler
3bf47d7f83 "run xyz cal first" message 2018-05-30 15:29:59 +02:00
PavelSindler
dcb77e8c7e Merge remote-tracking branch 'upstream/MK3' into temp_cal_coordinates_fix 2018-05-30 15:22:20 +02:00
PavelSindler
987f8969c0 Merge remote-tracking branch 'upstream/MK3' into temp_cal_coordinates_fix 2018-05-30 15:20:40 +02:00
PavelSindler
72a382b34d fix in macro definition 2018-05-30 15:07:24 +02:00
PavelSindler
2561ab9c7d
Merge pull request #786 from XPila/MK3-new_lang
Mk3 new lang
2018-05-30 14:54:47 +02:00
Robert Pelnar
3e29312b41 fixed compilation (c++11) 2018-05-30 14:53:14 +02:00
3d-gussner
d8706be8de Fixed forgotten comment 2018-05-30 13:39:24 +02:00
3d-gussner
dce2d45499 Fixed forgotten comment 2018-05-30 13:35:48 +02:00
3d-gussner
2f9b63275f Fixed unused variable c as in pull request #138 2018-05-30 13:26:31 +02:00
3d-gussner
167bc61ef9 Fixed redefined warning 2018-05-30 12:57:51 +02:00
Robert Pelnar
4746c77195 New ML support - bootloader support and update proces test 2018-05-29 21:03:47 +02:00
Robert Pelnar
0ddb31d4eb Removed hexfile 2018-05-29 17:28:33 +02:00
Robert Pelnar
b47a29b388 New ML support - fixed invalid characters, added some cz translations 2018-05-29 15:56:00 +02:00
PavelSindler
d307868a90 merge with upstream 2018-05-28 20:38:55 +02:00
PavelSindler
26724c4a48 removed message 2018-05-28 20:31:57 +02:00
PavelSindler
7e79ce8e53 MK3: crash detection for Z axis is active during auto home and mesh bed leveling (normal mode is forced for Z movents); temp cal coordintes corrections; temp cal: xy movents always in safe Z distance from heatbed, Z-axis homing improved 2018-05-28 20:26:15 +02:00
Robert Pelnar
b3f4e1f6e4 New ML support - language menu 2018-05-28 19:41:16 +02:00
Robert Pelnar
baa66a0887 New ML support - secondary language name, language selection 2018-05-28 17:14:55 +02:00
Robert Pelnar
3bf2552b6c fixed #761 from hzapper (#elif instead of #else if) 2018-05-28 13:41:36 +02:00
XPila
28a767b460
Merge pull request #760 from PavelSindler/safety_timer_fixes
Safety timer not active during filament runout procedure
2018-05-28 13:28:24 +02:00
PavelSindler
58ae70c4e1
Merge branch 'MK3' into MK3-new_lang 2018-05-28 13:22:14 +02:00
Robert Pelnar
15207e4d5e Linearity correction fix - (eeprom storage changed to byte instead of word)
+enabled for XYZ axes
2018-05-28 01:47:08 +02:00
Robert Pelnar
def9ab56f6 New ML support - language.c - fixed return origial string for zero length translation 2018-05-27 16:24:21 +02:00
Robert Pelnar
55157640c5 New ML support - czech version is working!!!
postbuild.sh, make_lang.sh - fixed (id and offset calculation)
language.c, language.h - fixed (==||==)
config.h - reserved space for _SEC_LANG changed
Marlin_main.cpp - debug output + hardcoded lang_select(1) //means cz
2018-05-27 15:14:04 +02:00
PavelSindler
2ffb95c72a bugfix: use absolute coordinates for steel sheet removal position, because there is no homing at the beginning of calibration in case that position is already known 2018-05-24 20:28:00 +02:00
PavelSindler
64f7272ea7 M27: returns print saved (fixes setting temperatures to zero during crash detection) 2018-05-24 18:49:35 +02:00
Robert Pelnar
2cf20c8c99 New ML support - migration - fix_source_1.sh script (replace 'MSG_xx' with '_T(MSG_xx)')
+ output + fixed source
2018-05-23 16:37:08 +02:00
Robert Pelnar
da3432e237 New ML support - changed _SEC_LANG reserved space to 10kb, added debug code 2018-05-23 16:11:12 +02:00
Robert Pelnar
f00a9ce636 New ML support - language.c, language.h - code fixed, Marlin_main.cpp - debug output 2018-05-23 15:46:08 +02:00
Robert Pelnar
d979c3dffc New ML support - messages.c - some strings fixed 2018-05-23 14:18:37 +02:00
PavelSindler
0091b41fb5
Merge pull request #744 from PavelSindler/M860_fix
M860 fix: send busy messages
2018-05-23 13:15:46 +02:00
Robert Pelnar
7e3f675469 New ML support - migration - fixed some messages
all variants verified according to lang_en.txt (release only)
config.h updated (enabled ML support)
2018-05-22 20:30:55 +02:00
PavelSindler
8c9b670c76
Merge pull request #746 from MRprusa3d/MK3
menu returns corrections
2018-05-22 16:08:08 +02:00
PavelSindler
137e1c5027 whitespace 2018-05-22 13:33:31 +02:00
PavelSindler
d63a17c696 Safety timer not active during filament runout detection 2018-05-22 13:31:21 +02:00
Robert Pelnar
bd587faab9 New ML support - migration - replaced source, removed original ML support files (backup) 2018-05-22 03:20:03 +02:00
Robert Pelnar
8573b65b05 _MIN_ENDSTOP_INVERTING redefinition in variant files (constant -> define) 2018-05-21 23:28:28 +02:00
XPila
a184d2b824
Merge pull request #756 from XPila/MK3-new_lang
Mk3 new lang
2018-05-20 13:26:28 +02:00
Robert Pelnar
a528f8837c Merge remote-tracking branch 'upstream/MK3' into MK3-new_lang 2018-05-20 13:24:52 +02:00
Robert Pelnar
5b015907aa New localization - macro declarations fixed 2018-05-20 13:15:46 +02:00
Robert Pelnar
9b7eeaecaa version changed 2018-05-18 14:42:35 +02:00
Marek Bel
503d5551e6 Fix build of MK2. Global variable distance_from_min was removed, do not update it.
Expression
float y = vec_x[1] * pgm_read_float(bed_ref_points_4+mesh_point*2) + vec_y[1] * pgm_read_float(bed_ref_points_4+mesh_point*2+1) + cntr[1];
is identical with expression in count_xyz_details().
2018-05-16 18:40:36 +02:00
PavelSindler
3eb21b65ed wizard fix: don't reset calibration status when repeating first layer cal. 2018-05-15 23:19:23 +02:00
MRprusa3d
83aa710da6 menu returns corrections
Settings::FilamentSensor & FilamentAutoload

removing Calibration::ShowEndStops @ MK3
2018-05-15 20:23:22 +02:00
PavelSindler
c59e9bd6be M860 fix: send busy messages 2018-05-15 18:27:25 +02:00
PavelSindler
553779a65d
Merge pull request #723 from mkbel/refactor_bed_geometry
Refactor bed geometry
2018-05-14 17:18:03 +02:00
Marek Bel
b71a29ad96 Use ShortTimer instead of long_press_timer global variable. 2018-05-11 17:05:12 +02:00
Marek Bel
02ecd08786 Convert Time class to template, instantiate LongTimer for longer and ShortTimer for shorter periods. 2018-05-11 16:31:42 +02:00
Marek Bel
07a7ce1acf Remove unused lcd_ping_allert(). 2018-05-11 15:09:27 +02:00
Marek Bel
e8730c2899 Merge branch 'MK3' into read_xyz_cal
# Conflicts:
#	Firmware/ultralcd.cpp
2018-05-10 18:31:31 +02:00
Marek Bel
329ea199ec Show measured bed offset from expected position even if not homed. Remove redundant lcd_quick_feedback() calls. 2018-05-10 18:24:49 +02:00
PavelSindler
dd89226537
Merge pull request #722 from MRprusa3d/MK3
build instructions update
2018-05-10 14:44:55 +02:00
PavelSindler
2bfc7475a8 version changed 2018-05-09 18:58:24 +02:00
Marek Bel
2a5a7ab9d2 Add bed calibration points macro definitions to MK25 variants.
Homing and full print area printing tested on MK25.
2018-05-09 17:09:57 +02:00
Robert Pelnar
59f3f9d8ec New localization - includes fixed 2018-05-09 16:55:41 +02:00
MRprusa3d
80efafd7b9 menu returns corrections
Statistics

Calibration::ShowEndStops

Support::ExtruderInfo
Support::BeltStatus
Support::Temperatures
Support::Voltages
2018-05-09 00:27:32 +02:00
Marek Bel
f00bde09a4 Re-factor bed calibration point coordinates to match bed CAD data. Tested successfully on MK3 (auto home position not calibrated and calibrated printer and print area position of calibrated printer). MK25 not tested. 2018-05-08 21:54:11 +02:00
PavelSindler
737cb9608c
Merge pull request #716 from mkbel/calibrate_Z_via_live_adjust
Set calibration status to calibrated also by using live adjust Z.
2018-05-04 16:40:34 +02:00
Marek Bel
c359d11858 Do not disable bed heating, when the print is paused.
Also remove duplicate handleSafetyTimer() call.
2018-05-04 15:21:22 +02:00
Marek Bel
1d7b3ea2de Set calibration status to calibrated also by using live adjust Z.
This fixes problem, that if the first layer calibration is never done, live adjusting Z during printing is not applied after printer reset. Also repeatedly using live adjust Z on uncalibrated printer leads to steadily decreasing meaningless stored live adjust Z value.
2018-05-03 22:03:38 +02:00
PavelSindler
777beac66a
Merge pull request #713 from PavelSindler/fan_error_fix
fan error synchronization with planner
2018-05-03 16:01:00 +02:00
PavelSindler
cd3851e175
Merge pull request #715 from MRprusa3d/MK3
Mk3
2018-05-03 14:54:43 +02:00
MRprusa3d
8a92d9b6a3 MaR::180501b 2018-05-02 23:49:21 +02:00
MRprusa3d
d02333918f MaR::180501 2018-05-02 22:13:47 +02:00
Marek Bel
72364648dd Hot fix: Can not move X and Y axis in stealth mode, when the printer is not homed.
Disable endstops in move axis menu.
2018-05-02 20:50:47 +02:00
PavelSindler
d86d1beeaa fan error synchronization with planner 2018-05-02 16:16:48 +02:00
XPila
3d595cc523
Merge pull request #712 from XPila/MK3-V3_2
Mk3 v3 2
2018-05-02 13:43:07 +02:00
Robert Pelnar
964d019dd1 MK3 - extruder current = 30 2018-05-02 13:42:05 +02:00
PavelSindler
420d1079af terminate temperature calibration in case that Z probing function returns false 2018-04-30 17:51:44 +02:00
PavelSindler
b691225d0b
Merge pull request #701 from XPila/MK3-V3_2
Decreased stallguard sensitivity for Z axis because meshbedleveling f…
2018-04-30 16:58:18 +02:00
Robert Pelnar
1fc3f9816c Merge remote-tracking branch 'upstream/MK3' into MK3-V3_2 2018-04-30 16:29:02 +02:00
Robert Pelnar
47868145e6 Decreased stallguard sensitivity for Z axis because meshbedleveling failed on some printers (PFW298). 2018-04-30 16:28:26 +02:00
PavelSindler
e2b3553aee
Merge pull request #689 from PavelSindler/MK3_for_merging
version change
2018-04-27 20:01:37 +02:00
PavelSindler
e1b95ed2a7 version change 2018-04-27 19:59:22 +02:00
PavelSindler
12dda6a6ca
Merge pull request #688 from PavelSindler/MK3_for_merging
MK3 variants file change
2018-04-27 18:41:49 +02:00
PavelSindler
068ee08454 MK3 variants file change 2018-04-27 18:41:00 +02:00
PavelSindler
2a57325bd5
Merge pull request #685 from mkbel/add_safety_timer_notice
Show full screen blocking notification message after heater turned off
2018-04-27 17:24:33 +02:00
PavelSindler
2b42db8ace
Merge pull request #687 from PavelSindler/MK3_for_merging
M861: steps value for 35C
2018-04-27 17:24:18 +02:00
PavelSindler
265d4761a3 M861: steps value for 35C 2018-04-27 17:07:10 +02:00
Robert Pelnar
e69134eb1c Rambo 1.0 support (MK25, MK2) 2018-04-27 17:04:55 +02:00
Marek Bel
eced66f0f6 Show full screen blocking notification message after heater turning off by safety timer. 2018-04-27 16:23:20 +02:00
PavelSindler
6fb0fa1458 variants for MK3: temporary change 2018-04-27 15:19:28 +02:00
PavelSindler
99be28d335 variants file: force selftest enabled again 2018-04-27 14:59:56 +02:00
PavelSindler
986f9fd3a6 selftest correction 2018-04-27 14:49:37 +02:00
PavelSindler
acd308e3d4 safety timer prolonged to 30 minutes 2018-04-27 14:03:09 +02:00
PavelSindler
ce855f30e2
Merge pull request #678 from PavelSindler/calibrate_autohome
MK3 selftest: move Z axis higher before calibrating autohome
2018-04-27 13:35:45 +02:00
PavelSindler
9e0e152279
Merge pull request #674 from mkbel/hot_fix_print_area_crop
Hot fix print area crop on MK3.
2018-04-27 13:35:31 +02:00
PavelSindler
254804cc8d MK3 selftest: move Z axis higher before calibrating autohome 2018-04-27 09:23:56 +02:00
Marek Bel
75075bed31 Hot fix print area crop on MK3. Move print area -2mm in Y axis (Y_PROBE_OFFSET_FROM_EXTRUDER to 3). Do not limit print area for skewed axis (increase Y_MAX_POS to 212.5). Preserve Z homing point for uncalibrated printer (DEFAULT_Y_OFFSET to 2.f). 2018-04-26 22:01:28 +02:00
XPila
aeca8cbf69
Merge pull request #671 from PavelSindler/temp_comp_unsigned
M861 update: unsigned values
2018-04-26 21:07:45 +02:00
PavelSindler
84d5771845
Merge pull request #670 from XPila/MK3-V3_2
XYZcal - findpointcenter starting Z coordinate down by 50um
2018-04-26 19:56:50 +02:00
PavelSindler
e7cf68e038 whitespace 2018-04-26 19:27:07 +02:00
PavelSindler
2dd0d84845 M861: usteps and z_shift variables correction 2018-04-26 19:14:28 +02:00
PavelSindler
9c3e0aab36 M861 update: use signed values 2018-04-26 18:55:08 +02:00
Robert Pelnar
d50dd9a6e9 XYZcal - findpointcenter starting Z coordinate down by 50um 2018-04-26 18:41:56 +02:00
Marek Bel
ab68221976 Always show XYZ cal. details menu. 2018-04-26 16:36:03 +02:00
Marek Bel
1a80fc28e8 Add zero point offset information support menu.
Note: XYZ menu is shown only if not printing and printer must me homed to show non-zero value.
2018-04-26 16:36:03 +02:00
Marek Bel
b6888470cf Save 42 bytes of flash by removing duplicate string "--------------------". 2018-04-26 16:36:02 +02:00
Marek Bel
c1dd269a92 Fix missing degree symbol after returning to status screen. Those lcd_set_custom_characters* calls were redundant. 2018-04-26 16:36:02 +02:00
Marek Bel
d6aa149cfa Conserve 58 bytes of flash by returning by reference. 2018-04-26 16:36:02 +02:00
Marek Bel
ae08788c99 Split lcd_service_mode_show_result screens to separate functions. Make them non blocking. Remove global array distance_from_min, pass it as function return value. Make Support submenus returning to Support menu. 2018-04-26 16:36:02 +02:00
PavelSindler
2657d3febd MK25: SILENT_MODE_NORMAL changed to SILENT_MODE_POWER 2018-04-26 15:12:45 +02:00
PavelSindler
14cf4abb64
Merge pull request #668 from XPila/MK3-V3_2
Timer in autoloadmenu - dirty hack (unable to compile under 4.8.1)
2018-04-26 14:53:49 +02:00
PavelSindler
84a53370d3 temporary change in MK3 variants file: disable forced selftest 2018-04-26 14:50:16 +02:00
Robert Pelnar
f64d266c89 Timer in autoloadmenu - dirty hack (unable to compile under 4.8.1) 2018-04-26 14:50:01 +02:00
PavelSindler
4681361883 correction in M27 message 2018-04-26 11:50:48 +02:00
PavelSindler
9a6cc8a035
Merge pull request #664 from MRprusa3d/MK3
Mk3
2018-04-25 22:20:45 +02:00
PavelSindler
cf0c83a6c1 M27 fix 2018-04-25 21:23:38 +02:00
MRprusa3d
7e462b3224
Merge branch 'MK3' into MK3 2018-04-25 19:15:36 +00:00
MRprusa3d
2f49574822
Add files via upload 2018-04-25 18:48:15 +00:00
MRprusa3d
0b6644915a
Add files via upload 2018-04-25 18:47:19 +00:00
PavelSindler
d85a8077a8 M115 update 2018-04-25 20:39:10 +02:00
PavelSindler
e7ad81e159
Merge pull request #660 from mkbel/fix_z_home_point
Update documentation of mesh_bed_calibration.cpp.
2018-04-25 17:27:22 +02:00
PavelSindler
d2736fdacf
Merge pull request #662 from mkbel/fix_return_autoload
Return from Autoload filament and Load filament menu item to parent m…
2018-04-25 17:26:56 +02:00
Marek Bel
f207145752 Return from Autoload filament and Load filament menu item to parent menu.
Exception is Load filament, when temperature is sufficient to load filament, in such case, load filament is started and GUI returns to status screen.
2018-04-25 16:51:35 +02:00
Robert Pelnar
0271ab3643 Meshbedleveling, calibration Z
check crash Z (MK3)
 check deviation of Z-probe (>50um == error, all printers)
kill with message "debris on nozzle..."
2018-04-25 16:19:16 +02:00
Robert Pelnar
5f12289339 CalibrationZ/MK3 - check crash Z after homeaxis (kill with message "debris on nozzle...") 2018-04-25 14:43:32 +02:00
Marek Bel
3abfeb831f Update documentation of mesh_bed_calibration.cpp. 2018-04-25 12:21:20 +02:00